0

有没有人使用过 PHP(经过验证且成功)通过 Web 浏览器 CHMOD 目录?

我的障碍是:(a) PHP 脚本作为“nobody”从浏览器运行 (b) 我想要的目录上方的目录 CHMOD 归 ftp 用户所有,并且“nobody”没有写入权限

所以当我尝试chmod 0666 /usr/www/dirOwnedbyFTPuser/dirIamTryingToCHMOD/我得到 Permission denied

如果您曾经编写并成功运行过一个脚本来执行此操作,您能与我分享代码片段吗?谢谢...已经在这几个月了。

4

3 回答 3

1

是的,您可以通过网络浏览器从 php 进行 chmod。(是的,我们都知道这可能是个坏主意)..

但是 - 你只能对 php 脚本有权使用的文件进行 chmod 修改!如果您的网络服务器以无人身份运行 PHP,那么您可以对“无人”拥有的任何文件进行 chmod...

于 2010-03-10T13:52:51.703 回答
1

是的,可以通过 php 做到这一点。但是,通常的 linux 权限规则适用,因此当您正在寻找不属于 apache 用户(nobody)并且 apache 用户没有写入权限的 chmod 脚本时,一种方法是授予 apache 使用 sudo 的权限

请注意 - 这可能是一个巨大的安全漏洞!!!

您可以通过编辑 sudoers 文件来授予 apache 使用 sudo 的权限。建议您不要直接编辑此文件,因为错误可能会让您完全搞砸,所以在我的(Ubuntu)系统上输入

sudo visudo

然后你需要为你的“nobody”用户添加一行。您可以将 sudo 权限限制为特定脚本或文件夹,因此我建议编写一个 shell 脚本来更改权限,然后将其放在远离任何其他脚本的文件夹中。这样 apache 在您的系统上没有完整的 root 权限(这是一个非常可怕的想法)。您还可以在 shell 脚本中放置一些代码来限制可以更改的文件。

您还需要允许 apache 在没有密码的情况下执行 sudo,因为您无法通过 php 输入密码。因此,您要添加的行类似于

nobody ALL=(ALL)NOPASSWD:/path/to/my/script

然后在 php 中你只需在命令前加上 sudo

passthru ("sudo /path/to/my/script ...");

(您可以使用其他一些函数来代替 passthru(),这只是我想到的第一个函数)

正如我之前所说,这可能非常危险,虽然上述方法可行,但我之前只在我自己的私有系统上使用过它,从未在公共生产服务器上使用过。我相信很多人都会对此的安全性发表评论,所以我很想知道这种方法可能存在哪些其他潜在的陷阱和安全漏洞。我知道可以使用 SuExec 完成类似的事情,但我对它不太熟悉,所以如果有人对这种方法有任何 SuExec 的优点或缺点,我很想听听他们的意见。

最后一点:我会将apache用户从nobody更改为'apache'或'www'之类的东西-可能只是很傻,但我不喜欢将root权限授予名为nobody的用户的想法!!!

希望这可以帮助!

于 2010-03-10T14:23:28.447 回答
0

http://www.php.net/ftp 您可以让 php 以 ftp 用户身份登录并执行此操作。

于 2010-03-10T16:10:25.447 回答