目录的最佳和适当的权限设置

我有兴趣了解目录的正确但安全意识的设置。 这是我的场景:

  1. 我有一个FTP服务器的用户名,称为“用户”。
  2. 为了scheme的目的,PHP在我的服务器上作为“nobody”运行。
  3. 我有一个名为“sample”的文档根目录。
  4. “sample”目录是在0755(drwxr-xr-x)chmod'd
  5. “样品”由“用户”拥有,并且该被设置为“用户”

以上都是非常直接和标准的。

所以我想要一个脚本能够创build(mkdir)和删除(rmdir)目录下的“示例”。 然而,我不想明显地暴露我的服务器通过打开权限(我可以轻松地chmod示例到0777,并使其世界可写)。

什么是权限,所有者设置和/或组设置的最佳组合,以允许我的脚本创build和删除“样本”下的目录,同时保留“用户”继续FTP到目录的能力?

谢谢。

最好的方式是以用户“user”的身份运行脚本。 如果您使用的是Apache,可以使用suEXEC模块完成: http : //httpd.apache.org/docs/2.2/suexec.html 。

要使用PHP,您必须将PHP作为CGI运行。 通常,这意味着禁用mod_php,但最终有一种方法可以在不同的扩展名(例如.cgi或.phpcgi)之间切换mod_php和php-cgi。 还没有尝试过,所以这只是一个想法。

在这样的情况下,我使用PHP的FTP客户端支持来做实际的文件工作。 所以基本上我让PHP正常上传到它可以写入的目录。 然后从那里我使用FTP本地移动文件到适当的位置(validation文件后)。 如果你没有把FTP暴露给外部世界,这是最好的。

这可能已经是你做的,但是,这是一个想法。 如果只能通过FTP访问样本的内容,那么您可以将该目录移到Web服务器的文档根目录之外,并将其与owner = user和group = nobody计划一起使用。 PHP脚本将能够写入,用户将能够使用FTP,外部世界将无法通过Web服务器获取样本。