CHMOD是一个在apache服务器上使用PHP的linux目录

时间:2010-03-10 13:10:48

标签: php chmod

有没有人曾经使用PHP(经过验证和成功)通过Web浏览器对目录进行CHMOD?

我的障碍是: (a)PHP脚本在浏览器中以“nobody”运行 (b)我想要CHMOD的目录上面的目录由ftp用户拥有,而“nobody”没有写入权限

所以,当我尝试 chmod 0666 / usr / www / dirOwnedbyFTPuser / dirIamTryingToCHMOD / 时,我获得了Permission denied

如果您曾编写并成功运行脚本来执行此操作,您可以与我共享代码片段吗?谢谢......已经好几个月了。

3 个答案:

答案 0 :(得分:1)

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

但是 - 你只能chmod php脚本有权使用的文件!如果您的Web服务器将PHP作为nobody运行,那么您可以chmod“nobody”所拥有的任何文件......

答案 1 :(得分:1)

是的,可以通过php完成此操作。通常的linux权限规则适用,因此当你正在寻找不是由apache用户(nobody)拥有的chmod脚本而apache用户没有写权限时,一种方法是给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用户授予root权限的想法!!! / p>

希望这有帮助!

答案 2 :(得分:0)

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