A.J*_*sin 6 php apache fastcgi mod-fastcgi
在Apache mod_fastcgi上创建每用户php5-fpm池时,以下哪种方法是向PHP池授予Web服务器权限的最安全方式和有效方式?
将组设置为www-data:
listen.owner = username
listen.group = www-data
listen.mode = 0660
user = username
group = www-data
Run Code Online (Sandbox Code Playgroud)
虽然这个由PHP创建的文件将所有权设置为用户名:www-data,而通过SCP上传的文件将具有用户名:username.
加入www-data补充组username:
listen.owner = username
listen.group = username
listen.mode = 0660
user = username
group = username
Run Code Online (Sandbox Code Playgroud)
-
usermod -aG username www-data
Run Code Online (Sandbox Code Playgroud)
哪些选项是安全的?您也可以分享更好的方法.
我检查了以下指南:
但它们都是在发现并修复了#67060号错误之前编写的.
小智 1
我在 LEMP(Nginx + PHP-FPM)上使用以下设置。对于 Apache 这也应该适用。
PHP-FPM 运行多个池nobody:user1,nobody:user2...
Nginx 运行为nginx:nginx
用户是每个, .. 组nginx的成员:user1user2
# usermod -a -G user5 nginx
Run Code Online (Sandbox Code Playgroud)
文件权限:
root:root drwx--x--x /home
user1:user1 drwx--x--- /home/user1 (1)
user1:user1 rwxr-x--- /home/user1/site.com/config.php (2)
user1:user1 drwxrwx--- /home/user1/site.com/uploads (3)
nobody:user1 rw-rw---- /home/user1/site.com/uploads/avatar.gif (4)
Run Code Online (Sandbox Code Playgroud)
(1) 用户的 home 目录没有 的x权限other,因此运行为 的 php-fpm 池nobody:user2将无权访问/home/user1,反之亦然。
(2) php脚本没有wfor group,因此无法在htdocs中创建文件。
(3) 在uploadsdir 上,我们应该手动启用 group 的写访问权限user1,以使 php 脚本能够将文件放在那里。不要忘记禁用 php 处理程序uploads,在 nginx 中这是由
server {
....
location ^~ /uploads/ { }
Run Code Online (Sandbox Code Playgroud)
但对于 Apache 你应该检查一下。
(4)如果我们希望以后能够通过 ftp 或 ssh(以 身份登录)编辑这些文件,则上传的文件还应该包含wfor 。PHP 代码也可以通过 ftp 进行编辑,因为它的.groupuser1user1:user1user1owner
Nginx 将有权read访问所有用户并write访问所有用户的上传,因为用户是每个, , ... 组nginx的成员。您不应该忘记将其添加到所有后续组中。您还可以修改脚本以自动执行此操作。user1user2useradd