权限如何运作?

权限如何运作?

第一次使用 CloudLinux 时,我偶然发现了一些奇怪的事情(至少对我来说)。我是一个长期的 Ubuntu 用户,但我仍然认为自己是新手。

我多次在 Ubuntu 服务器上安装了带有 PHP-FPM 的 Nginx。我通常的方法是设置一个用户并www在用户的主目录中创建一个目录。我会将 PHP-FPM 池配置用户和组设置为新创建的用户,并将 Nginx VirtualHost 指向用户主目录,并将文档根目录指向该www文件夹的某个位置。

对于我来说,这个在 Ubuntu 上运行良好很长一段时间了。

上周,尝试在 CloudLinux(据我所知,它是某种 CentOS 发行版)上进行相同的设置。

结果完全不同。使用 Nginx 执行 PHP 文件时我没有遇到任何问题,但我发现 Nginx 无法提供静态文件(或其他文件,PHP-FPM 无法处理)。快速进行一些调试后,很明显用户nginx没有足够的权限读取该/home/user/www文件夹。对我来说,快速修复方法是将 移动到www/var/www/sitename更新 Nginx 中的文档根目录,然后我就可以继续了。

这让我开始思考实际的区别是什么。当这种方法在其他发行版上不起作用时,我在 Ubuntu 上的方法是否合理(即安全)?

为什么 Nginx 用户可以毫无问题地在 Ubuntu 上读取我的用户主目录的内容,但在 CloudLinux 上却不行?

答案1

如果您希望~user/www某些进程可以读取,请确保具有~user/www-permissions x(对于从根目录到目标目录的所有目录)。这x仅允许进入目录,而不允许读取目录。

因此,要读取目标目录,还需添加r权限(w-permission 允许创建/删除文件)。如果和进程的组~user/www无法轻松匹配,您可能希望使用 ACL(访问控制列表)。有关详细信息,请参阅getfaclsetfacl命令。

请注意,这是针对包含目录的;不要忘记也为实际文件设置权限。

相关内容