Apache 可以設定為僅提供世界可讀的檔案嗎?

Apache 可以設定為僅提供世界可讀的檔案嗎?

我正在運行一個實驗性的 Apache Web 伺服器,只是為了好玩。該伺服器背後的部分想法是它應該異常地向公眾開放;例如,根檔案系統應該開放供任何人瀏覽。 (事實上,這裡是:http://sylvester.s.zbasu.net/rootfs/)因此,安全性將退居二線。

也就是說,有些東西 Apache 應該能夠訪問,但公眾不應該訪問。我遇到的範例是 Django 網站。該檔案settings.py必須可由 Apache 讀取,否則 Django 將無法運作。但settings.py不能被公眾讀取,因為它包含密鑰。因此該文件應歸 擁有www-data,但 Apache 仍應拒絕為其提供服務。

一個可能的解決方案(感謝ellipsis753Freenode)是建立一個特殊指令(可能在一個.htaccess檔案中),告訴 Apache 不要提供該檔案。然而,我認為如果一個檔案不能被所有使用者讀取,它可能也不應該由 Apache 提供服務。

我可以告訴 Apache,如果一個檔案不是世界可讀的,那麼就不應該提供該檔案嗎?

答案1

如果您在 FastCGI 或 mod_wsgi 的守護進程模式下執行 Django 應用程序,那麼您可以以與 Apache 運行時不同的使用者身份運行它。然後,您可以完全刪除 Apache 和 World 讀取您不想提供服務的任何檔案的權限。

例如,請注意您的密碼文件/etc/shadow已經無法訪問,因為 Apache 沒有它的權限,而且它不是世界可讀的。web-apps例如,如果您創建一個新用戶,並將其添加WSGIDaemonProcess myapp user=web-apps ...到 Apache 配置中,那麼您可以讓該用戶擁有 Django 應用程序web-apps,但其配置文件不是世界可讀的,就像shadow現有文件一樣。

相關內容