我想构建一个简单的Web应用程序,它管理服务器上的某个目录。我想让人们选择使用chown和chmod。
给PHP这个权限最安全的方法是什么?最快的事情就是以root身份运行Apache和PHP,但这似乎不是一个明智的想法。
我想到的另一件事是创建一个具有setuid root的单独脚本。
谢谢!
答案 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)