4

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

授予 PHP 此权限的最安全方法是什么?最快的方法是以 root 身份运行 Apache 和 PHP,但这似乎不是一个聪明的主意。

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

谢谢!

4

3 回答 3

6

好吧,一开始这听起来确实是一个危险的想法,我更愿意坐下来仔细考虑要实现的目标的整个战略。

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

究竟需要发生什么?

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

于 2009-07-06T03:53:43.997 回答
0

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

shell_exec("sudo chmod 777 dirname");

请确保您的 sudo 配置很紧凑,以确保突破几乎是不可能的。

于 2009-07-06T03:59:54.577 回答
0

也许你应该看看 php 命令:chmod、chown、chgrp 和 fileperms

修改

chmod("/somedir/somefile", 0600);
于 2009-07-06T04:52:20.337 回答