有没有人曾经使用PHP(经过验证和成功)通过Web浏览器对目录进行CHMOD?
我的障碍是: (a)PHP脚本在浏览器中以“nobody”运行 (b)我想要CHMOD的目录上面的目录由ftp用户拥有,而“nobody”没有写入权限
所以,当我尝试 chmod 0666 / usr / www / dirOwnedbyFTPuser / dirIamTryingToCHMOD / 时,我获得了Permission denied
如果您曾编写并成功运行脚本来执行此操作,您可以与我共享代码片段吗?谢谢......已经好几个月了。
答案 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用户身份登录并执行此操作。