共享主機:如何防止使用者看到其他人的文件,但仍然可以透過 Apache/PHP 寫入他們的文件

共享主機:如何防止使用者看到其他人的文件,但仍然可以透過 Apache/PHP 寫入他們的文件

我讀過了我的網站檔案/資料夾在 Linux 網路伺服器上應具有哪些權限?這是一個相關的問題。比方說:

  • /var/www/bobweb/屬於bob:bob

  • /var/www/eveweb/屬於eve:eve

每個網站都有一個 Apache VirtualHost,連結到bobweb.comeveweb.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,則整個問題空間都會發生變化。

相關內容