該段落出處:
來自開源中國社區—-關於linux下php權限問題
http://www.oschina.net/question/782079_141232
要設置安全的權限系統,你要先弄清楚以下幾個問題:
1. 網站的文件所有者帳號是什麼?
2. apache/php-fpm以什麼帳號身份運行?
3. 網站哪些目錄需要有寫入權限(如日誌生成、附件上傳等)
針對這個問題,建議的設置如下:
1. 網站所有者,可設置爲ftp, www帳號
2. nginx/php-fpm/apache,建議以nobody帳號運行,反正不能使用網站文件所有者帳號。
3. 需要可寫權限的目錄,手工設置權限爲777即可
4. php生成的日誌、附件文件的所有者會是nobody, 這時www,ftp帳號卻無法修改、刪除這些文件。
那麼在php生成文件時,可調用chmod($filename, 0777)。即解鈐還需系鈐人。
這樣,php腳本只能向指定的目錄中寫入文件,一方面規範了程序代碼的行爲,另一方面,也一定程度上提高了網站的安裝性。
權限配置:http://jingyan.baidu.com/article/9158e0008855e2a2541228e1.html
網站目錄文件權限的設置對網站的安全至關重要,下面簡單介紹網站目錄文件權限的基本設定。
我們假設http服務器運行的用戶和用戶組是www,網站用戶爲centos,網站根目錄是/home/centos/web。
我們首先設定網站目錄和文件的所有者和所有組爲centos,www,如下命令:
chown -R centos:www /home/centos/web
設置網站目錄權限爲750,750是centos用戶對目錄擁有讀寫執行的權限,這樣centos用戶可以在任何目錄
下創建文件,用戶組有有讀執行權限,這樣才能進入目錄,其它用戶沒有任何權限。
find -type d -exec chmod 750 {} \;
設置網站文件權限爲640,640指只有centos用戶對網站文件有更改的權限,http服務器只有讀取文件的權限,
無法更改文件,其它用戶無任何權限。
find -not -type d -exec chmod 640 {} \;
針對個別目錄設置可寫權限。比如網站的一些緩存目錄就需要給http服務有寫入權限。例如discuz x2的/data/目錄
就必須要寫入權限。
find data -type d -exec chmod 770 {} \;