
我讀過了我的網站檔案/資料夾在 Linux 網路伺服器上應具有哪些權限?這是一個相關的問題。比方說:
/var/www/bobweb/
屬於bob:bob
/var/www/eveweb/
屬於eve:eve
每個網站都有一個 Apache VirtualHost,連結到bobweb.com和eveweb.com。
每個網站都需要Apache可寫(兩個網站上都有一個圖片上傳器),所以我經常讀到:
“就這樣吧
chgrp -R www-data /var/www/bobweb/
,對夏娃來說也是如此,僅此而已!”
這給出:
drwxrwx--- 3 bob www-data 4096 Jan 9 17:45 bobweb
drwxrwx--- 5 eve www-data 4096 Feb 26 2019 eveweb
這確實阻止了 Bob 從 shell/SSH 存取 Eve 的文件,反之亦然。
但看來 Eve 可以寫一個 PHP 腳本(由 執行www-data
)來讀取(甚至修改)/var/www/bobweb/wp-config.php
(從而竊取 Bob 的資料庫密碼!)。
問題:如何修改使用者+群組所有權和權限以防止Bob讀取Eve的文件,反之亦然,但仍允許Apache+PHP在這些網站上寫入資料?
(典型的共享託管情況)
答案1
僅靠檔案權限無法完全完成此操作 - 您應該查看正在運行的應用程式來建立監獄。對於 PHP,您可以使用“open_basedir“基於每個虛擬主機。
您還需要在您的 FTP 伺服器中使用類似的東西(您沒有告知您正在使用哪個伺服器,但許多/大多數都有適當的指令)。
當然,如果您允許 cgis,則整個問題空間都會發生變化。