Apache-2.2

為什麼 Apache 可以訪問我的大部分文件系統?

  • April 30, 2015

我最近發現,只要我提供完整路徑,我的 Web 伺服器就會為我的文件系統上它具有讀取權限的任何文件提供服務。換句話說,像

http://www.example.com/Users/john/Desktop/Costa%20Rica/DSC_0058.jpg

將很高興由 Web 伺服器提供服務。儘管每個設置DocumentRoot指向 only /Library/WebServer/Documents

為什麼 Apache 服務於整個文件系統?可以關閉嗎?

我仍然不知道是什麼原因造成的。

我發現它只是從/Users/john文件系統的其餘部分而不是從文件系統的其餘部分提供文件(除了伺服器的正確文件根目錄),所以我認為它與一些聰明的 OS X 文件共享某些東西有關。

我檢查了mod_userdir,沒有啟用。我檢查了所有DirectoryLocation部分,似乎沒有一個允許訪問/Users/john. 配置中沒有具體提及john,我也找不到任何匹配的正則表達式。它似乎與文件副檔名無關(“提供所有圖像”或其他東西是有道理的,但也不是這樣。)


所以我在幾個小時後最終做的是在<Location /Users>我的全域httpd.conf中添加一個部分,我禁用了每個人的訪問權限,如下所示:

<Location "/Users">
       Order Deny,Allow
       Deny from all
</Location>

(這正是我的<Directory />部分的樣子,為了記錄。)

這不是最好的解決方案,但它似乎拒絕訪問不應提供的文件。


因為這對我有用,所以我會接受它作為答案。感謝Safado給我的幫助,如果以後有其他人過來有什麼線索,請貼出來!這台伺服器很可能至少會再服務一段時間,如果有的話,我很樂意嘗試更合適的解決方案。


編輯:顯然有人Users -> /Users在文件根目錄中放置了一個符號連結(我之前已經排除了這一點,因為它不提供除 之外的任何使用者目錄john)。我猜可能出於某種原因www-data,執行 Apache 的使用者具有讀取文件系統權限,/Users/john但沒有讀取其中的其他目錄/Users,但無論哪種方式,刪除符號連結都解決了我的問題。

嘗試查找一個<Directory />部分並確保該標籤中的任何設置都是限制性的。

還要檢查 mod_userdir 是否已啟用和配置。尋找類似的標籤UserDir

引用自:https://serverfault.com/questions/686473