Nginx

在共享主機上使用 nginx + php-fpm 設置權限的最佳方法?

  • July 5, 2015

我在 Debian 上使用 nginx 和 php-fpm 執行共享託管伺服器。

一切正常,php-fpm 為作為單獨使用者執行的每個使用者提供單獨的池,並且每個使用者都有自己的襪子。

然而,Nginx 作為 www-data 執行,因為我不想為每個使用者使用單獨的 nginx 程序。

這意味著為了讓 nginx 能夠訪問使用者數據,/home 的權限必須是 drwxr-x–x。問題是,所有使用者都可以訪問其他使用者文件。

在不授予其他使用者訪問權限的情況下,讓 nginx 訪問使用者文件的最佳方法是什麼。以 root 身份執行 nginx 不是一種選擇。但是 AppArmor 會有幫助嗎?

我更喜歡為此使用 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}

引用自:https://serverfault.com/questions/484818