chmod 777 - 这是服务器问题的要求吗?

时间:2011-10-13 13:55:03

标签: security permissions chmod 777

如果服务器上的PHP脚本无法创建目录,这通常是因为PHP是以apache / nobody运行的吗?那么你能否说服务器配置错误? (或仅使用标准配置)

出于安全考虑,如果php作为用户运行会更好,如果是,那么这个问题(需要777)是否还会发生?我不这么认为,但我想我会问......

2 个答案:

答案 0 :(得分:2)

IMO你永远不应该拥有777目录。在没有用户的网络服务器上这并不重要,但它永远不是必需的,无论如何都应该避免。

debian上的PHP作为与apache相同的用户和组运行(www-data)。因此,您只需配置文件访问控制以允许该用户执行您喜欢的操作。你永远不需要777.

其他发行版具有类似的配置,但您始终可以编辑 apache2.conf php.ini 文件以获得所需的任何结果。

答案 1 :(得分:2)

那么你能否说服务器配置错误?

不。这就是它应该是的样子。由apache执行的php脚本以用户www-data运行(在Ubuntu上)。 www-data几乎没有整个服务器的写权限。这就是它应该是的样子。如果您编写一个稍微不安全的PHP脚本(例如易受code injection影响)并且它以root身份运行,则恶意访问者可能会清除整个硬盘驱动器。

出于安全考虑,如果php以用户身份运行会更好吗?

用户是什么意思?如果它是root,请参见上文。如果是具有root权限的用户,请参阅上文。

这个问题(需要777)是否仍会发生?

问题是您正在使用需要在外部目录上完全读取,写入和执行权限的代码。

如果它是一个只供您的脚本使用的目录,www-data应该拥有它。问题解决了。

如果您使用的PHP脚本必须能够访问敏感系统区域,您可能需要重新考虑这样做的方式。 php脚本应该执行的许多任务可以由脚本调度,稍后由cron作业执行。

最后但并非最不重要的是,如果你绝对必须,你可以像任何你想要的用户一样运行php。只需安装模块mpm_itk_module并添加

即可
    AssignUserId user group

<VirtualHost>标记内。

但请注意 - 正如我之前所说 - 使用错误的脚本和错误的权限,可能会发生非常糟糕的事情(TM)。