在 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
检查
检查你的文件/wordpress用户权限,确保你的wordpress用户是ubuntu
(你可以用ls -l
检查),并确保你的文件放在用户主页目录:/home/ftplatinopeeyush
(或任何主目录,它可由 ftplatinopeeyush
用户写入)
转到/etc/nginx/nginx.conf
检查参数user
,请确保用户是www-data
示例:
user www-data; # < this
worker_processes auto;
# ... next config
- 然后去
/etc/php/7.3/fpm/pool.d/website-name.conf
并检查有关配置:
listen.owner = www-data
listen.group = www-data
- (fpm) 用户和组(wordpress 文件拥有的用户)
user=ftplatinopeeyush
group=ftplatinopeeyush
案例
- fpm :
listen.owner
& listen.group
应该与 nginx 匹配: user
- fpm:
user
& group
应该与 wordpress / root 用户匹配。
- 权限:wordpress文件放在用户可写的目录下
解决
开始之前,请确保您有超级管理员权限(root用户)
- 检查您的用户主目录:
- 命令
cat /etc/passwd | grep ftplatinopeeyush
- 输出(其中
/home/ftplatinopeeyush
是主目录)
NameOfUser:x:1234:1234:NameOfUser:/home/ftplatinopeeyush:
将您的 wordpress(文档根目录)放到您的主目录中。 (例如:/home/ftplatinopeeyush/pathtowordpress
)
修复所有者
chown -R ftplatinopeeyush:ftplatinopeeyush /home/ftplatinopeeyush/pathtowordpress
- 设置权限(644为文件,755为目录)
- 设置文件权限
find /home/ftplatinopeeyush/pathtowordpress -type f -exec chmod 644 {} \;
- 设置目录权限
find /home/ftplatinopeeyush/pathtowordpress -type d -exec chmod 755 {} \;
- 将您的 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
& group
是 ftplatinopeeyush
和变量 listen.owner
& listen.group
是 www-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
- 打开站点虚拟主机设置
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;
}
- 重新加载 php & nginx 服务。
systemctl reload nginx.service
systemctl reload php7.3-fpm.service
- 完成
您基本上已经做了正确的事情:创建了一个单独的 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。
我在文件/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
检查
检查你的文件/wordpress用户权限,确保你的wordpress用户是
ubuntu
(你可以用ls -l
检查),并确保你的文件放在用户主页目录:/home/ftplatinopeeyush
(或任何主目录,它可由ftplatinopeeyush
用户写入)转到
/etc/nginx/nginx.conf
检查参数user
,请确保用户是www-data
示例:
user www-data; # < this
worker_processes auto;
# ... next config
- 然后去
/etc/php/7.3/fpm/pool.d/website-name.conf
并检查有关配置:
listen.owner = www-data
listen.group = www-data
- (fpm) 用户和组(wordpress 文件拥有的用户)
user=ftplatinopeeyush
group=ftplatinopeeyush
案例
- fpm :
listen.owner
&listen.group
应该与 nginx 匹配:user
- fpm:
user
&group
应该与 wordpress / root 用户匹配。 - 权限:wordpress文件放在用户可写的目录下
解决
开始之前,请确保您有超级管理员权限(root用户)
- 检查您的用户主目录:
- 命令
cat /etc/passwd | grep ftplatinopeeyush
- 输出(其中
/home/ftplatinopeeyush
是主目录)
NameOfUser:x:1234:1234:NameOfUser:/home/ftplatinopeeyush:
将您的 wordpress(文档根目录)放到您的主目录中。 (例如:
/home/ftplatinopeeyush/pathtowordpress
)修复所有者
chown -R ftplatinopeeyush:ftplatinopeeyush /home/ftplatinopeeyush/pathtowordpress
- 设置权限(644为文件,755为目录)
- 设置文件权限
find /home/ftplatinopeeyush/pathtowordpress -type f -exec chmod 644 {} \;
- 设置目录权限
find /home/ftplatinopeeyush/pathtowordpress -type d -exec chmod 755 {} \;
- 将您的 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
& group
是 ftplatinopeeyush
和变量 listen.owner
& listen.group
是 www-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
- 打开站点虚拟主机设置
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;
}
- 重新加载 php & nginx 服务。
systemctl reload nginx.service
systemctl reload php7.3-fpm.service
- 完成
您基本上已经做了正确的事情:创建了一个单独的 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。