是的,它可以通过php来做到这一点。通常的Linux权限规则适用,但是,如果你正在寻找不属于apache用户的chmod脚本(nobody),并且apache用户没有写权限,那么一种方法是授予apache许可使用sudo
被警告 - 这可能是一个巨大的安全漏洞!
您可以通过编辑sudoers文件给apache许可使用sudo。建议您不要直接编辑这个文件作为错误可以让你我(的Ubuntu)系统上完全拧所以我键入
sudo visudo
然后你需要添加一行为贵“无人”的用户。您可以将sudo权限限制为特定的脚本或文件夹,因此我建议您编写一个shell脚本来更改权限,然后将其放置在远离任何其他脚本的文件夹中。这样apache在你的系统上没有完全的root权限(这是一个非常可怕的想法)。您还可以在shell脚本中放置一些代码来限制哪些文件可以更改。
您还需要允许apache在没有密码的情况下sudo,因为您无法通过php输入密码。所以,你想补充的线是一样的东西
nobody ALL=(ALL)NOPASSWD:/path/to/my/script
然后在PHP你只是使用sudo前缀命令
passthru ("sudo /path/to/my/script ...");
(还有你可以用它代替中继()一些其他的功能,是只是浮现在脑海)
正如我之前所说的第一,这是潜在的非常危险的,虽然上面会的工作,我只用我自己的私有系统之前,从来没有一个公共产品服务器上。我相信很多人会对这个方法的安全性发表评论,所以我很想知道这种方法可能存在哪些潜在的缺陷和安全漏洞。我知道使用SuExec也可以做类似的事情,但我不太了解它,所以如果有人对SuExec有任何优点或缺点,我会很乐意听到他们的意见。
最后说明一点:我的apache用户从任何人更改为类似“阿帕奇”或“WWW” - 可能只是不懂事,但我不喜欢给root权限的用户称为人的想法!
希望这有助于!
有解决方案,但这不好让php管理系统权限。你需要做什么这样的事情? – Benoit 2010-03-10 13:55:30
我需要动态地使用PHP创建一个目录。 – 2010-03-10 17:48:15