2014-05-05 67 views
3

我正在測試我的php表單並將所有請求記錄到一個單獨的文件中。目的是找出表單是否被用於垃圾郵件並希望將其清除。f77有777權限是否危險?

使用fwrite()記錄請求時,使用777權限是危險還是不必要?什麼是替代方案?

+0

執行是不必要的(最後一位) – armadadrive

回答

5

您只需要運行該應用程序的用戶的權限即可寫入該文件。管理員能夠讀取文件有時也很方便。除此之外,沒有人需要訪問。因此,0640是這種文件最合理的權限。

特別是,沒有人需要執行該文件,這是使用0777設置的位之一。執行位僅用於目錄。 (和可執行程序,但是這不是在這裏打球。)

0640 = user/owner read/write, group read only, other no access 
0777 = user/owner read/write/execute, group read/write/execute, other read/write/execute 

umask是獲得許可權非常有用。您可以使用umask來設置權限模板,而不是創建具有明確權限的文件。由於目錄需要可執行權限,並且文件不需要,因此umask將爲不同類型的文件更明確地屏蔽權限,而不是明確設置它們。例如,在您的情況下:

umask(027); // Owner permissions unchanged, Group permissions mask 2, drop all other permissions 
fopen('foo', 'w', 0777); // Creates file with *0640* permissions, because of mask 
mkdir('bar', 0777); // Creates dir with *0750* permissions, because of mask 
+0

當我將640權限應用到文件夾時,我不再能夠查看窗體... – user3216933

+0

@ user3216933文件應該是0640,目錄應該是0750.前導零表示該數字是八進制數 - 如果您離開前導零,這是一個完全不同的值。請看我的更新並使用'umask'。 – kojiro

+0

我製作了所有文件0640和目錄0750.但是現在我得到了一個「禁止」的錯誤,而不再是404. – user3216933

0

777權限設置默認由父目錄或php設置。 您可以通過chmod("/somedir/somefile", 0640); Check manual

改變它,是的,這是雄心勃勃的,可能是危險的對通過形式創建的文件的可執行權限。

祝你好運!

+0

默認情況下設置的'0777'權限旨在與['umask'](http://www.php.net/manual/en/function.umask.php)一起使用,以實現合理的權限。 (還要注意前導零對於解釋爲八進制的值很重要。) – kojiro