Nginx
在共享主機上使用 nginx + php-fpm 設置權限的最佳方法?
我在 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 伺服器可寫,您可以通過將權限的兩個實例更改
rx
為rwx
. 例如:setfacl -R -m user:www-data:rwx,d:user:www-data:rwx /home/user/public_html/wp-content/{cache,uploads}