2014-05-05 68 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