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

我想build立一个简单的networking应用程序,它pipe理服务器上的一些目录。 我想给人们使用chown和chmod的选项。

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

我想到的另一件事是,创build一个单独的脚本,其中setuid根..

谢谢!

那么,从头开始,这听起来像是一个危险的想法,我宁愿坐下来思考正在努力实现的整个战略。

当然,危险的是远程用户可修改或上传的可执行脚本的特权升级。 Web应用中的完整chown / chmod相当于在页面上粘贴根密码。

究竟是什么需要发生?

如果chown需要出于某种原因而不是root(我们希望),那么这个功能应该被包装起来。 我会采取用户请求和排队他们,然后有一个单独的进程(可能是壳,php,perl,任何东西)作为root运行检查此队列,检查请求是否符合允许的参数,并进行更改。

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

shell_exec("sudo chmod 777 dirname"); 

确保你的sudo配置是严格的,以确保突破将是不可能的。

也许你应该看看PHP命令:chmod,chown,chgrp和fileperms

CHMOD

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