Apache-2.2
為什麼 Apache 可以訪問我的大部分文件系統?
我最近發現,只要我提供完整路徑,我的 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
,沒有啟用。我檢查了所有Directory
和Location
部分,似乎沒有一個允許訪問/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