允許 apache 訪問主目錄但不允許其他使用者訪問?
我建立了一個自動管理專用伺服器的網站。它做各種各樣的事情,比如創建使用者和 apache 設置以指向他們的主目錄。
主目錄託管遊戲二進製文件,主文件夾可以從 Web 訪問,但只能訪問非必要的資源文件(.wav .mdl .spr 等),這就是 apache 的配置方式。因此,要使其正常工作,我需要對所有文件具有執行和讀取權限。
問題是在一個使用者的主文件夾中執行的二進製文件可以訪問其他使用者的主文件夾,讀取和寫入其中的文件。
如何使除他之外的其他任何人都無法通過 apache 訪問使用者的主目錄?這是文件夾樹的樣子:
http://i.imgur.com/LVFMle2.png(沒有代表直接顯示圖像)
在每個使用者的主目錄上設置一個 ACL,Apache 需要訪問該目錄。這可以讓您避免與組的愚蠢技巧,這實際上會導致比他們解決的問題更多的問題。
例如:
setfacl -R -m u:httpd:rx,d:u:httpd:rx /home/username
將允許
httpd
使用者讀取該目錄中的所有內容,包括子目錄和任何新創建的文件。
我建議讓每個使用者的主目錄歸使用者和使用者組所有,只有使用者和組可以進入目錄(770),然後讓 Apache 成為每個使用者組的成員。
此外,請務必實施某種形式的符號連結攻擊保護(有關某些選項,請參閱https://documentation.cpanel.net/display/EA/Symlink+Race+Condition+Protection - 此連結不僅適用於 cPanel)。
如果您不介意速度受到影響(另請參閱其首頁上的“怪癖和警告”),一種可以使事情保持簡單且不需要符號連結攻擊保護的方法是使用 MPM ITK。在這種情況下,Apache 作為每個單獨的網站使用者執行。
您還可以查看多站點託管 - 錯過了保護站點彼此安全的重要漏洞?討論多站點託管安全性和其他一些方法。
免責聲明:我不能保證上述任何建議都是 100% 安全的,因此使用風險自負 =)。