我有兴趣了解目录的正确但又安全意识强的设置。以下是我的场景:
- 我有一个名为“用户”的用于通过 FTP 访问我的服务器的用户名。
- 出于此场景的目的,PHP 在我的服务器上以“无人”身份运行。
- 我在文档根目录下有一个名为“sample”的目录。
- “sample”目录在 0755 (drwxr-xr-x) 被 chmod 。
- “Sample” 归“user”所有,且所属组设置为“user”
以上内容都非常简单且标准。
因此,我希望有一个脚本能够在“sample”下创建 (mkdir) 和删除 (rmdir) 目录。但是,我不希望通过开放权限而过度暴露我的服务器(我可以轻松地将 sample 的权限 chmod 设置为 0777,并使其对所有人可写)。
权限、所有者设置和/或组设置的最佳组合是什么,以允许我的脚本创建和删除“sample”下的目录,同时保留“用户”继续通过 FTP 进入目录的能力?
谢谢。
答案1
最好的方法是以用户“user”的身份运行脚本。如果您使用的是 Apache,则可以使用 suEXEC 模块来完成此操作:http://httpd.apache.org/docs/2.2/suexec.html。
要使用 PHP,您必须将 PHP 作为 CGI 运行。通常,这意味着禁用 mod_php,但最终有一种方法可以在 mod_php 和 php-cgi 之间切换,并使用不同的扩展名(例如 .cgi 或 .phpcgi)。还没有尝试过,所以这只是一个想法。
答案2
在这种情况下,我使用 PHP 的 FTP 客户端支持来完成实际的文件工作。所以基本上我让 PHP 正常上传到它可以写入的目录。然后从那里我使用本地 FTP 将文件移动到适当的位置(在验证文件之后)。如果您没有将 FTP 暴露给外界,这种方法效果最好。
答案3
这可能已经是您正在做的事情了,但这里有一个想法。如果只能通过 FTP 访问 sample 的内容,那么您可以将该目录移出 Web 服务器的文档根目录,并使用 0775 和所有者 = 用户和组 = 无人计划。php 脚本将能够写入,用户将能够使用 FTP,而外界将无法通过 Web 服务器访问 sample。