PHP/CHMOD问题

PHP/CHMOD问题,php,chmod,Php,Chmod,我在一个基于PHP的网站上工作。在管理中,有一个部分检查表单字段,并根据该字段在服务器上查找文件夹。此文件夹将位于子目录中。如果它不存在,则需要创建它。之后,无论以前是否存在,PHP都会将文件写入该文件夹 这些文件夹将保存将在主站点上查看和/或下载的图像和PDF文件 下面是一个目录结构示例:merchants/east/user123 在上述情况下,商家和east肯定会存在,user123可能存在或以其他方式创建 根据这些信息,我的问题是关于文件夹权限的 文件夹应设置为什么以获得最佳安全性 我

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

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

下面是一个目录结构示例:merchants/east/user123 在上述情况下,商家和east肯定会存在,user123可能存在或以其他方式创建

根据这些信息,我的问题是关于文件夹权限的

  • 文件夹应设置为什么以获得最佳安全性
  • 我是否应该在操作过程中更广泛地打开它们,然后在完成更安全的操作后(在PHP中)对它们进行chmod
  • 上层文件夹应设置为什么

770
将是这些文件的安全赌注。将其设置为该值将禁止任何公共访问。我将用PHP实现某种文档交付系统。PHP将能够访问非公共文件,然后将它们发送给用户

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

更新


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

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

如果您特别担心web服务器上的其他本地用户或服务无法看到此目录中的文件,您可能会考虑使用750或700权限

对于文件权限:644或600,因为通常它们不需要执行权限

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

我想不出php脚本在增加然后减少权限方面有什么显著的优势


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

如果仅通过php脚本进行访问,为什么不将其设置为700?还是750?