有網友說我前面的日誌寫得太簡單了,好吧,這篇我稍微詳細一點。其實很為難:詳細點吧,都不願意看,簡單點吧,都說看不懂!
在homezz.com後面的幾個的伺服器的資料轉移過程中,發現很多homezz.com使用者轉移到新的伺服器上的時候,都出現了這樣那樣的錯誤,歸根結底,就是檔案夾使用權限設定錯誤。舊的主機放得太開,對安全效能控制不嚴格,所以檔案許可權太大沒有做限制,新伺服器的安全機制更加嚴格,因此太大的許可權伺服器將會拒絕執行。下面開始講一講linux下的檔案許可權。
Linux的檔案許可權是linux能有如此安全效能的最大的保障之一,有朋友可能會知道,很多攻擊windows的方法都是通過漏洞擷取到建立使用者的許可權從而達到控制電腦的目的,在linux下,Root帳戶有最大的許可權,可以幹任何事情,其他使用者只能擁有自己的檔案的所有許可權和該改群組成員賦予的檔案的許可權,下面開始對檔案許可權的一個說明。
讀許可權R。簡單的說就是開啟檔案查看內容的許可權,在web伺服器中,若檔案沒有開啟許可權,則web伺服器則視為該檔案不存在,發送404 file not found錯誤,用數字4表示。
寫入權限W。一個檔案若沒有寫的許可權,那麼該檔案則無法更改,檔案夾若沒有寫入權限,則該檔案夾下無法建立新檔案,用數字2表示。
執行許可權X。程式檔案若要執行,必須有執行許可權,否則無法執行。開啟一個檔案夾也是執行,所以檔案夾若沒有執行許可權,則無法被開啟。用數字1表示。
誰擁有這個許可權 |
檔案所有者 |
組內使用者 |
公用使用者 |
可讀=4 |
0 |
0 |
0 |
可寫=2 |
0 |
0 |
0 |
可執行=1 |
0 |
0 |
0 |
實際許可權,縱向相加 |
0 |
0 |
0 |
公用使用者為所有者和組內使用者之外的使用者,比如訪問web時候,linux可能用公用的使用者去讀取檔案,這裡不妨理解成是訪客所能操作的那個使用者。
下面舉例(再次提醒,檔案夾和檔案不一樣):
檔案所有使用者可寫: 666 (3類使用者均可讀寫)
誰擁有這個許可權 |
檔案所有者 |
組內使用者 |
公用使用者 |
可讀=4 |
4 |
4 |
4 |
可寫=2 |
2 |
2 |
2 |
可執行=1 |
0 |
0 |
0 |
實際許可權,縱向相加 |
6 |
6 |
6 |
接上面的,假設我們吧檔案夾設定成0666會怎麼樣,結果很明顯,因為該檔案夾沒有執行許可權,無法被開啟,所以設定成0666則無法被訪問到。
檔案夾只可檔案所有者有全部許可權,組內使用者、公用使用者可讀和執行(755)。一般web根目錄檔案夾都要這樣設定,才安全。再次提示:檔案夾沒有執行許可權,則該使用者無法開啟。正常的伺服器,若根目錄許可權也為0777,則會出現500錯誤
誰擁有這個許可權 |
檔案所有者 |
組內使用者 |
公用使用者 |
可讀=4 |
4 |
5 |
4 |
可寫=2 |
2 |
0 |
0 |
可執行=1 |
1 |
1 |
1 |
實際許可權,縱向相加 |
7 |
5 |
5 |
如果php需要在某檔案夾下建立檔案,請把該檔案的許可權全部設定:即可都可寫和可執行777
誰擁有這個許可權 |
檔案所有者 |
組內使用者 |
公用使用者 |
可讀=4 |
4 |
4 |
4 |
可寫=2 |
2 |
2 |
2 |
可執行=1 |
1 |
1 |
1 |
實際許可權,縱向相加 |
7 |
7 |
7 |
為了安全起見,正常的php檔案應該設定成:所有者可讀可寫,組使用者可讀,公用使用者可讀 644
誰擁有這個許可權 |
檔案所有者 |
組內使用者 |
公用使用者 |
可讀=4 |
4 |
4 |
4 |
可寫=2 |
2 |
0 |
0 |
可執行=1 |
0 |
0 |
0 |
實際許可權,縱向相加 |
6 |
4 |
4 |
其他許可權,請大家自行思考。
對於那些建議把所有檔案和檔案夾都設定成 777的人,我只能說你要麼在誤導別人,要麼在殘害新手!