我有这个问题与不同的networking托pipe,特定的上传脚本只能上传到一个文件夹,只有当它有777权限(这是有风险的)。 在testing服务器上(在不同的主机上),755运行良好。
在另外一个networking托pipe中,由PHP文件函数生成的日志文件不能被写入一段时间,但其他文件却神秘地不受影响(例如,整个星期的日志文件是655,并且它们运行良好,文件不起作用,除非设置为777)。
我更像一个应用程序开发人员,而不是服务器后端专家,所以这些行为让我困惑不已。 他们为什么发生? 可以做什么?
一些主机以低特权模式运行apache。 您必须明确地向世界写入访问Apache需要写入的目录。 另外,apache进程必须能够读取所有文件,因此同一系统上的其他用户可以读取系统上的文件/目录。 授予顶级目录只需要执行权限来遍历它们,阻止你能够列出这些目录中的文件。 远程shell不能修改世界上可写的文件。
有些主机在setuid模式下运行php,这意味着php作为你的userid运行。 虽然这为系统上的其他用户提供了更高的安全性,但是现在它使webroot中的每个文件都能够通过任何php进程进行修改。 远程shell将能够修改您的networking空间中的所有文件。
一个人是否比另一个人更安全是你需要做出的决定。 在低特权模式下运行apache可以防止webscripts破坏你的站点,但是让系统上的其他用户可以读取可能包含你的mysql用户名/密码/主机名的wordpressconfiguration文件的文件。
你用不同的用户运行你的服务器吗? 你的文件的所有权是怎样的?