2011-10-13 52 views
0

如果服务器上的PHP脚本无法创建目录,通常是因为PHP以apache/nobody身份运行?那么你能从这里说服务器配置错误吗? (或者只是使用标准配置)chmod 777 - 这是一个服务器问题的要求?

出于安全考虑,如果php以用户身份运行,并且如果是,那么这个问题(需要777)是否仍会发生?我不这么认为,但我想我会问...

回答

2

所以你可以这样说,服务器配置错误?

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

为了安全起见,如果php作为用户运行会更好?

你是谁的意思是的用户?如果它是根,请参阅上文。如果它是具有root权限的用户,请参阅上文。

这个问题(需要777)还会发生吗?

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

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

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

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

AssignUserId user group 

<VirtualHost>标签内。

但是请注意,正如我之前所说的那样,一个坏脚本和错误的权限,Very Bad Things(TM)可能会发生。

+0

问题是,如果用户拥有PHP,用户无法通过FTP删除该目录。有没有办法解决这个问题? – Wesley

+0

当然。将两个用户添加到一个组中,并授予组写入权限。 – Dennis

2

IMO你永远不应该有一个777目录。在没有用户的网络服务器上,这并不重要,但它从来没有必要,应该避免。

debian上的PHP以与apache(www-data)相同的用户和组运行。所以你只需要配置你的文件访问控制,以允许用户做你喜欢的。你永远不应该需要777

其他发行版有类似的配置,但您可以随时修改您的apache2.conf的php.ini文件得到任何你想要的结果。