PHP /修改文件权限问题


PHP/CHMOD Questions

我在一个基于PHP的网站上工作。在管理中有一个部分,检查表单字段,并根据该字段查找服务器上的文件夹。该文件夹将位于子目录中。如果不存在,则需要创建。之后,无论以前是否存在,PHP都会将文件写入文件夹。

这些文件夹将保存图像和PDF文件,这些文件将在主站点上查看和/或下载。

下面是一个示例目录结构:merchants/east/user123在上述情况下,肯定会存在merchants和east, user123也可能存在或被创建。

考虑到这些信息,我的问题是关于文件夹权限。

  • 为了获得最佳安全性,文件夹应该设置为什么?
  • 我应该在操作期间更广泛地打开它们,然后在我做了更安全的事情后chmod它们(在PHP中)吗?
  • 上层文件夹应该设置为什么?

对于文件来说,770是一个安全的选择。将其设置为该值将禁止任何公共访问。我会用PHP实现某种文档传递系统。PHP将能够访问非公共文件,然后将它们发送给用户。

上层文件夹可以设置为相同。

正如其他人所说,您可以轻松地将它们修改为600而不会出现任何问题。这是更安全的处理方法(防止系统上的其他用户访问文件)。它还省略了"execute",无论如何,它都不需要读取文件。我个人的做法是,除非有明确的理由,否则会保留多余的内容。

上层文件夹需要具有apache用户的读、写和执行权限。,顶层文件夹可以由apache拥有,并具有755等权限,允许web服务器读取,写入和列出文件。

如果您特别担心web服务器上的其他本地用户或服务无法看到此目录中的文件,则可以考虑将权限设置为750或700。

对于文件权限:644或600,按照惯例它们不需要执行权限。

一个不错的折衷方案可能是使用750的目录和640的文件与所有者设置为apache,并更改组(chgrp),以便该文件的组允许访问用户,你通常编辑网站文件。

我想不出php脚本增加和减少权限有什么显著的好处。

我认为你应该考虑@chunk关于将上传的文件完全保存在公共html目录中,并通过文件传递脚本将它们返回的评论。否则,您将需要对文件的内容进行仔细的验证,并为该特定目录收紧apache配置—可能使用一些mime类型检查来确保文件确实是docs和pdf。