我正在开发一个基于PHP的网站。在管理员中有一个部分检查表单字段,并根据该字段查找服务器上的文件夹。该文件夹将位于子目录中。如果它不存在则需要创建。之后,以前存在或不存在,PHP会将文件写入该文件夹。
这些文件夹将保存将在主站点上查看和/或下载的图像和PDF文件。
以下是一个示例目录结构:商家/ east / user123 在上述商家中,东方肯定存在,用户123可能存在或以其他方式被创建。
鉴于该信息我的问题是关于文件夹权限。
答案 0 :(得分:1)
770
对于文件来说是一个安全的赌注。将其设置为不允许任何公共访问。我会在PHP中实现某种文档传递系统。 PHP将能够访问非公共文件,然后将它们发送给用户。
上级文件夹可以设置为相同。
<强>更新强>
正如其他人所说,你可以轻松地将它们chmod到600
而没有任何问题。这是更安全的处理方式(防止系统上的其他用户访问文件)。它也省略了“执行”,无论如何都不需要文件读取。除非有明确的理由不这样做,否则我个人的做法是留下额外的内容。
答案 1 :(得分:1)
上级文件夹需要具有apache用户的读,写和执行权限。顶级文件夹可以由apache拥有,并具有755等权限,允许web服务器读取,写入和列出文件。
如果您特别担心Web服务器上的其他本地用户或服务看不到此目录中的文件,您可能会考虑权限750或700.
对于文件权限:传统上为644或600,它们不需要执行权限。
一个很好的折衷方案可能是将750用于目录,将640用于拥有者设置为apache的文件,并更改组(chgrp),以便该文件组允许访问您通常使用的编辑网站文件的用户。
我想不出php脚本增加然后减少权限的任何显着优势。
我认为你应该考虑@chunk关于完全保留上传文件属于公共html目录的评论,并通过文件传递脚本提供回来。否则,您需要仔细验证文件的内容并加强该特定目录的apache配置 - 可能使用一些mimetype检查以确保文件确实是docs和pdf。