nginx php-fpm文件和最小文件夹权限,以实现最高安全性多用户/应用

时间:2017-08-18 14:17:42

标签: php nginx permissions pydio

我在CentOS 7上设置了一个nginx服务器nginx / 1.10.2。 我已经配置nginx使用php-fpm PHP 5.4.16(fpm-fcgi)(内置:2016年11月6日00:30:57)。

我使用在/etc/php-fpm.d/piwik.conf中配置的新池:

[piwik]
user = piwik
group = piwik
listen = /var/run/php5-fpm-piwik.sock
listen.owner = nginx
listen.group = nginx
;listen.mode = 0660
;php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = off
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /

nginx.conf的重要部分:

location ~ ^/piwik/(.*)$ {
    root /usr/share/nginx/html;
    try_files $uri =404;
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php5-fpm-piwik.sock;
    # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # fastcgi_param PATH_INFO $fastcgi_script_name;
    # include fastcgi_params;
    include fastcgi.conf;
    # fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_index info1.php;
}

当我请求http://localhost/piwik/info1.php时,它向我显示 _SERVER [" USER"] piwik

所以现在我只在向文件夹设置正确权限时遇到问题 的/ usr /共享/ nginx的/ HTML / piwik。

正如我所读到的那样,用户需要在整个路径上获得x权限才能遍历到正确的文件夹中。 文件夹和文件必须是可读的,对于piwik,某些文件夹必须是可写的。 因为CentOS 7默认启用SELinux,所以我必须执行以下命令才能获得写访问权限: chcon -R -t httpd_sys_content_rw_t / usr / share / nginx / html / piwik / tmp / systemctl重启php-fpm

我已将用户和群组更改为piwik。 但是当我设置以下权限时  chmod 700 -R / usr / share / nginx / html / piwik / 我无法访问这些文件。我得到许可拒绝错误。 我发现我需要权利701:

drwx-----x. 13 piwik piwik     4096 18. Aug 09:49 .
drwxr-xr-x.  5 root  root      4096 16. Aug 04:27 ..
-rwx-----x.  1 piwik piwik      932  8. Jun 2015  bower.json
-rwx-----x.  1 piwik piwik    38272 11. Apr 2016  CHANGELOG.md
...
...

请帮助我理解为什么我必须为其他用户启用可执行位。

好的,为了提供静态文件,甚至必须设置775?

谢谢。

祝你好运

编辑:

问题不在于动态php文件的服务。它是静态文件的服务,因为nginx在一个特定用户下运行。

我找到了这个链接: https://serverfault.com/questions/370820/user-per-virtual-host-in-nginx

有用的评论是: 在设置vhost时,为文档根提供一组www-data和perms 0710 (因为这需要root配置nginx,让自动化也设置必要的权限不是问题)。 然后docroot的内容只需要o + x代表目录,o + r代表文件。

所以我认为这是一个很好的设置: nginx以用户nginx身份运行 分隔不同的用户(应用程序)设置以下权限(以root身份运行):

ls -la /usr/share/nginx/
drwx--x--x.  6 nginx nginx 4096 18. Aug 19:18 html

groupadd pydio
useradd -g pydio pydio

mkdir /usr/share/nginx/html/pydio/
chown pydio:pydio -R /usr/share/nginx/html/pydio/                       
find /usr/share/nginx/html/pydio/ -type d -exec chmod 701 {} \;
find /usr/share/nginx/html/pydio/ -type f -exec chmod 704 {} \; 
chmod 710 /usr/share/nginx/html/pydio/  

请有人检查吗?

0 个答案:

没有答案