允许PHP更改文件和目录的所有权和权限
问题描述:
我想构建一个简单的Web应用程序,它管理服务器上的某个目录。我想给人们使用chown和chmod的选项。允许PHP更改文件和目录的所有权和权限
给PHP这个权限最安全的方法是什么?最快的事情就是以root身份运行Apache和PHP,但这似乎并不是一个聪明的主意。
我想,是创造具有setuid root的一个单独的脚本的另一件事..
谢谢!
答
那么,这听起来像是一个危险的想法开始,我宁愿坐下来思考什么是试图实现的整个策略。
当然,危险是远程用户可修改或上载的可执行脚本的权限升级。 Web应用中的完整chown/chmod相当于在页面上粘贴root密码。
什么是需要发生的事情?
如果chown需要出于某种原因而不是根(我们希望),那么应该封装这个功能。我会接受用户的请求并将它们排队,然后有一个单独的进程(可以是shell,php,perl,任何东西)以cron的身份运行检查此队列,检查请求是否符合允许的参数并进行更改。
答
一种方法是在你的机器上设置sudo(假设它是一个Linux机器)。 Sudo允许您运行提升的命令,并受sudoers.conf文件中规定的限制所控制。使用严格的规则将其用途限制在您的Web服务正在运行的用户的特定目录中(如www-data),然后从您的PHP脚本调用类似tis的命令shell:
shell_exec("sudo chmod 777 dirname");
请确保您的sudo配置非常紧密,以确保突破几乎不可能。
CHOWN需要根。 chmod需要root权限,或者作为文件的所有者(或者可以在组中更改组权限/其他权限,但不能确定这个权限)。 – 2009-07-06 03:47:26
是的..因此,我想使用一个单独的setuid根脚本.. – Evert 2009-07-06 20:56:30