在 fpm/pool.d/website-name.conf NGINX 上更改用户有多大损害

How much damage is changing the user on fpm/pool.d/website-name.conf NGINX

我在文件/etc/php/7.3/fpm/pool.d/website-name.conf

下更改了用户
user = ftplatinopeeyush
group = ftplatinopeeyush

该文件仅更改了那些参数。下面这行我没碰。

listen = /var/run/user-name.sock

为什么我要更改这个参数?

我创建了一个 FTP 用户并将网络文件的所有权更改为该用户,这样我就可以将文件上传到服务器,但是 wordpress 说这些文件不可写。

现在更改池上的用户后。d/website-name.conf 文件我可以通过 filezilla 上传文件(使用 FTP 用户),也可以通过 wordpress 仪表板上传插件。

似乎一切正常,但这会影响我网站或 Nginx 服务器上的其他内容吗?

如何创建一个 FTP 用户,允许我将文件上传到我的服务器而不会在将来出现文件权限问题?

顺便说一下,它看起来像是关于用户权限(不属于 fpm 用户),请查看 nginx 的配置文件 & php-fpm(当前示例我们使用 nginx)并且用户是 ftplatinopeeyush

检查

  1. 检查你的文件/wordpress用户权限,确保你的wordpress用户是ubuntu(你可以用ls -l检查),并确保你的文件放在用户主页目录:/home/ftplatinopeeyush(或任何主目录,它可由 ftplatinopeeyush 用户写入)

  2. 转到/etc/nginx/nginx.conf 检查参数user,请确保用户是www-data

示例:

user www-data; # < this

worker_processes auto;
# ... next config
  1. 然后去/etc/php/7.3/fpm/pool.d/website-name.conf 并检查有关配置:
listen.owner = www-data
listen.group = www-data
  1. (fpm) 用户和组(wordpress 文件拥有的用户)
user=ftplatinopeeyush
group=ftplatinopeeyush

案例

  1. fpm : listen.owner & listen.group 应该与 nginx 匹配: user
  2. fpm: user & group 应该与 wordpress / root 用户匹配。
  3. 权限:wordpress文件放在用户可写的目录下

解决

开始之前,请确保您有超级管理员权限(root用户)

  1. 检查您的用户主目录:
  • 命令
cat /etc/passwd | grep ftplatinopeeyush
  • 输出(其中 /home/ftplatinopeeyush 是主目录)

NameOfUser:x:1234:1234:NameOfUser:/home/ftplatinopeeyush:

  1. 将您的 wordpress(文档根目录)放到您的主目录中。 (例如:/home/ftplatinopeeyush/pathtowordpress

  2. 修复所有者

chown -R ftplatinopeeyush:ftplatinopeeyush /home/ftplatinopeeyush/pathtowordpress
  1. 设置权限(644为文件,755为目录)
  • 设置文件权限
find /home/ftplatinopeeyush/pathtowordpress -type f -exec chmod 644 {} \;
  • 设置目录权限
find /home/ftplatinopeeyush/pathtowordpress -type d -exec chmod 755 {} \;
  1. 将您的 nginx 用户更改为 www-data
nano /etc/nginx/nginx.conf

将变量 user 更改为 www-data 6.更改/etc/php/7.3/fpm/pool.d/website-name.conf

的配置
nano /etc/php/7.3/fpm/pool.d/website-name.conf

确保变量 user & groupftplatinopeeyush 和变量 listen.owner & listen.groupwww-data

或示例配置:

[ftplatinopeeyush@7.3]

; Owner
listen.owner = www-data
listen.group = www-data
listen.backlog = 1500


; User & group
user = ftplatinopeeyush
group = ftplatinopeeyush

; Listener this will placed on /run/php/ftplatinopeeyush@7.3.sock
listen=/run/php/$pool.sock

; Process Manager
pm = ondemand
; set max children
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

pm.process_idle_timeout = 10s


; FLAGS
;php_flag[display_errors] = off
;php_admin_value[memory_limit] = 128M
  1. 打开站点虚拟主机设置
nano /path/to/virtualhost-of-wordpress.conf
  • root 变量指向 /home/ftplatinopeeyush/pathtowordpress
  • 找到fastcgi_pass(php位置块)
location ~ \.php$ {
    # split path request
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # include default configuration nginx fastcgi_params
    include fastcgi_params;
    # environment php file name
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;

    # try below to handle all 404 not found with script
    try_files $fastcgi_script_name =404;

    # listen for cgi param port / load balancer upstream
    # port for cgi params has followed of fast cgi config
    fastcgi_pass unix:/run/php/ftplatinopeeyush@7.3.sock;
    # handle error
    fastcgi_intercept_errors off;
    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
}
  1. 重新加载 php & nginx 服务。
systemctl reload nginx.service
systemctl reload php7.3-fpm.service
  1. 完成

您基本上已经做了正确的事情:创建了一个单独的 Linux 用户和该用户的 运行 PHP-FPM 池。然后,您使用同一用户管理 SFTP 中的网站文件。

如果您按照 "NGINX and PHP-FPM. What my permissions should be?" 进行操作,则需要执行一个额外的步骤。也就是说,确保您的 NGINX 网络用户是您的 PHP 用户组的成员:

usermod -a -G ftplatinopeeyush www-data

这样做的目的是,NGINX 可以读取您网站上的任何文件,这些文件的组权限设置为可读。例如。所有目录上的 chmod 0750 和所有文件上的 0640 将允许 NGINX 读取您的所有网站文件。

此外,您将能够轻松地控制哪些文件是敏感的并且不应由 NGINX 提供,只需删除组的读取权限即可,例如通过在 wp-config.php 或类似的敏感文件上设置 chmod 0600。