在共享主机上使用 nginx + php-fpm 设置权限的最佳方法?

dBi*_*dBi 4 permissions debian nginx php-fpm apparmor

我正在 Debian 上使用 nginx 和 php-fpm 运行共享托管服务器。

一切正常,php-fpm 为作为单独用户运行的每个用户提供了单独的池,并且他们每个人都有自己的袜子。

然而,Nginx 作为 www-data 运行,因为我不想为每个用户拥有单独的 nginx 进程。

这意味着为了让 nginx 能够访问用户数据,/home 的权限必须是 drwxr-x--x。问题是,所有用户都可以访问其他用户的文件。

在不授予其他用户访问权限的情况下,让 nginx 访问用户文件的最佳方法是什么。以 root 身份运行 nginx 不是一种选择。但是 AppArmor 会有帮助吗?

Mic*_*ton 5

我更喜欢为此使用 ACL。例如:

setfacl -R -m user:www-data:rx,d:user:www-data:rx /home
Run Code Online (Sandbox Code Playgroud)

授予www-data用户读取文件和遍历目录下的权限/home,并将相同的 ACL 应用于以后创建的任何新文件或目录。

一旦应用,用户主目录不再必须是全局可执行的,(例如chmod o= /home/$USER)因此用户不能再读取彼此的文件,但 nginx 可以。

请注意,如果某些目录需要由 Web 服务器写入,您可以通过将两个权限实例更改rxrwx. 例如:

setfacl -R -m user:www-data:rwx,d:user:www-data:rwx /home/user/public_html/wp-content/{cache,uploads}
Run Code Online (Sandbox Code Playgroud)