允许PHP更改文件和目录所有权和权限

时间:2009-07-06 03:26:42

标签: php linux apache root

我想构建一个简单的Web应用程序,它管理服务器上的某个目录。我想让人们选择使用chown和chmod。

给PHP这个权限最安全的方法是什么?最快的事情就是以root身份运行Apache和PHP,但这似乎不是一个明智的想法。

我想到的另一件事是创建一个具有setuid root的单独脚本。

谢谢!

3 个答案:

答案 0 :(得分:6)

嗯,从一开始听起来肯定是一个危险的想法,我宁愿坐下来思考一下想要实现的目标。

当然,危险在于远程用户可以修改或上传的可执行脚本的权限提升。 Web应用程序中的完全chown / chmod相当于只粘贴页面上的root密码。

究竟需要发生什么?

如果chown需要由于某种原因而不是root(我们希望)发生,那么应该包装功能。我会接受用户请求并将它们排队,然后通过cron检查此队列,以root身份运行单独的进程(可以是shell,php,perl,any),检查请求是否符合允许的参数,并进行更改。

答案 1 :(得分:0)

一种方法是在你的机器上设置sudo(假设它是一个Linux盒子)。 Sudo允许您运行提升的命令,受sudoers.conf文件中规定的限制的约束。使用严格的规则将其使用限制在运行Web服务的用户的特定目录中的所需命令(如www-data),然后从PHP脚本中调用命令shell,如tis:

shell_exec("sudo chmod 777 dirname");

确保你的sudo配置很紧,以确保几乎不可能发生爆发。

答案 2 :(得分:0)

也许你应该看一下php命令:chmod,chown,chgrp和fileperms

chmod

chmod("/somedir/somefile", 0600);