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

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

我在 Debian 上运行带有 nginx 和 php-fpm 的共享托管服务器。

一切运行正常,php-fpm 为每个以独立用户身份运行的用户提供了单独的池,并且每个用户都有自己的袜子。

但是,Nginx 作为 www-data 运行,因为我不想为每个用户设置单独的 nginx 进程。

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

让 nginx 访问用户文件而不让其他用户访问的最佳方法是什么。以 root 身份运行 nginx 不是一种选择。但 AppArmor 会有所帮助吗?

答案1

我更喜欢使用 ACL 来实现这一点。例如:

setfacl -R -m user:www-data:rx,d:user:www-data:rx /home

授予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}

相关内容