2014-05-22 64 views
2

我的用於存儲文件的Apache目錄是/ var/www。爲什麼需要755權限/ var/www /?爲什麼不是chown後700?

如果我跑,

sudo chown -R www-data:www-data /var/www 

這使得WWW的數據www文件夾的所有者。由於所有靜態/動態文件都將由Apache用戶提供,爲什麼我現在需要爲此文件夾提供755個權限?它應該只提供700個權限,對吧?由於擁有700個權限,所有者(www-data)具有該文件夾的完全權限。

因此,我的問題,爲什麼我需要運行:的

sudo chmod -R 755 /var/www 

代替

sudo chmod -R 700 /var/www 

編輯:我沒有遇到任何錯誤。我只是問這個問題的知識。我被建議許多人在/ var/www /文件夾中放置755權限。只是想知道爲什麼我不能使用700.

+0

首先檢查「www-data」是否確實是您的Apache用戶。運行以下命令:echo $(ps axho user,comm | grep -E「httpd | apache」| uniq | grep -v「root」| awk'END {if($ 1)print $ 1}') –

+0

是的, www-data' –

+0

然後這很奇怪。請將「700」值重新放在文件夾中,當您嘗試查看您的網站時,您可以使用error_log文件中的確切錯誤輸出更新您的問題。 –

回答

2

最好的佈局取決於幾個因素。主要是這是一個安全問題。這裏有幾件事要考慮:

1)你想讓你的web服務器能夠寫文件到你的DocumentRoot?大多數情況下,答案是否定的,例外是上傳目錄等。在這種情況下,您需要類似755的東西,其中所有者/組是而不是 Apache正在運行的用戶。

2)您是否有本地用戶帳戶(如開發人員)應該能夠訪問內容?如果是的話,你可能需要像755這樣的root:開發者權限,Apache以「www-data」或「apache」的形式運行,而不在組中(受到上述#1的限制)。

3)那些開發者是否需要能夠編輯內容(執行代碼推送)?在這種情況下,或許775根:開發者更好。

700的主要問題是它要求所有者成爲Apache運行的用戶,並且擁有完全的權限才能修改DocumentRoot中的任何文件。這通常被認爲是安全弱點,因爲一般來說,Web服務器不應該修改DocumentRoot中的文件,而應該修改相當特殊的異常。

一個常見的情況是攻擊者利用它來欺騙你的網絡應用程序,將惡意的PHP腳本文件上傳到DocumentRoot中,然後訪問該頁面。其中一個對策是禁止Apache通過這種文件系統權限寫入DocumentRoot。

+0

感謝您的答案。雖然我有疑問。 「在這種情況下,你需要類似755的東西,其中所有者/組不是Apache運行的用戶。」在文件上傳的情況下,哪個用戶將嘗試進行文件上傳?它不應該是www-data嗎? –

+0

正確 - 這是Apache需要擁有目錄的情況。我意識到我措辭不佳。 「在這種情況下」是指上述情況,其中上載*不涉及。上傳,作爲例外,將需要別的東西。 – jakem

+0

感謝您的澄清。 :) –

相關問題