2010-03-10 111 views
0

有没有人曾经使用PHP(经过验证和成功)通过Web浏览器来查找目录?CHMOD在apache服务器上使用PHP的linux目录

我的障碍是: (一)PHP脚本运行从一个以上的浏览器 (二)目录我想CHMOD由FTP用户拥有和“没有人”没有写权限,“没有人”它

所以,当我尝试CHMOD 0666在/ usr/WWW/dirOwnedbyFTPuser/dirIamTryingToCHMOD/我得到许可被拒绝

如果你曾经编写并成功运行一个脚本来做到这一点,你可以共享snipit代码与我?谢谢......在这个好几个月。

+0

有解决方案,但这不好让php管理系统权限。你需要做什么这样的事情? – Benoit 2010-03-10 13:55:30

+0

我需要动态地使用PHP创建一个目录。 – 2010-03-10 17:48:15

回答

1

是的,它可以通过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权限的用户称为人的想法!

希望这有助于!

+0

感谢Addsy。我不想做任何服务器端的调整,所以更新sudoers文件不是我想要的路径(http://stackoverflow.com/questions/2230391/php-shell-exec-and-sudo-must -BE-的setuid根)。 – 2010-03-10 17:50:41

1

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

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

0

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

+0

是的Chris ...谢谢!我已经走上了这条道路,并且已经成功地编写了它的脚本。现在我的困境是改变一个目录的组名。我已经尝试过ftp_site($ ftpStream,'chgrp nobody'。$目录),但是我无法完成它的工作。 有没有人有任何成功通过ftp_connect()更改目录组? 谢谢。 – 2010-03-10 16:33:34