【问题标题】:Linux permissions/owner for nginx's root folder with PHP-FPM带有 PHP-FPM 的 nginx 根文件夹的 Linux 权限/所有者
【发布时间】:2015-08-23 15:07:08
【问题描述】:

我的 nginx 的根文件夹 /usr/share/nginx/html 归 root:root 所有,但我需要使用我的用户 mark 添加/编辑/删除文件。另外,我正在使用带有 fastcgi (php-fpm) 的 PHP,我需要将文件上传到特定目录 /usr/share/nginx/html/userfiles。我目前的配置如下:

sudo groupadd webdev;
sudo usermod -a -G webdev mark;
sudo chown root:webdev /usr/share/nginx/html;
sudo chmod 2775 /usr/share/nginx/html -R;
sudo chgrp -R www-data /usr/share/nginx/html/userfiles;

我发现了一些关于上传文件的问题(它们是在/usr/share/nginx/html/userfiles 中正确创建的,但我的用户mark 无法打开/编辑/删除这些文件)。我该如何解决?有什么更好的配置建议吗?

【问题讨论】:

  • sudo groupadd webupload && sudo usermod -a -G webupload www-data && sudo usermod -a -G webupload mark && sudo chgrp -R webupload /usr/share/nginx/html/userfiles; ?
  • @Siguza 谢谢你,但由于权限被拒绝,它不起作用,正如我在 php 日志文件中看到的那样......

标签: php linux nginx


【解决方案1】:

您可以通过拥有一个公共组来共享对文件的访问权限,但文件和目录 您创建的必须属于该组,并且可以读/写该组。

我假设由 PHP 创建的文件将在组 www-data 中,但可能没有组写入权限,除非您更改 /etc/init/php-fpm.conf 中的 umask。添加一行:

umask 0002

如果您的 id 在其组中包含 www-data,您将能够编辑该文件。

如果你创建一个文件,它不会在组 www-data 中,但可能是你的 自己的群组mark。因此,如果您希望 PHP 即 www-data 能够编辑它 将您需要的文件,对称地发送到usermod -a -G mark www-data,并确保在创建时 读取/写入组的文件(umask 2 和检查或 chmod g+w)。

确保目录 userfiles 对 www-data 组是 rwx,或者 chmod g+rwx 它。

【讨论】:

  • 谢谢,对于我的配置提高安全性或其他方面您还有什么建议吗?
  • 上传文件时,请务必从提供的文件名中删除除字母数字以外的所有字符。永远不要让它们可执行。检查您对最大上传文件大小的限制,由 php 强加。
猜你喜欢
  • 1970-01-01
  • 2014-08-11
  • 2015-08-15
  • 2018-09-01
  • 2015-04-08
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多