Ubuntu 16.04下PHP私有社交网络脚本的Apache安全权限配置咨询
嘿,咱们来聊聊你这个PHP社交网络的权限配置问题——这可是生产环境里不能马虎的安全细节!
你的权限配置是否安全?
把文件设为640、文件夹750,所有者设为www-data,整体是非常安全的生产环境级配置,理由如下:
- 文件
640:只有所有者(www-data,也就是Apache运行时的用户)能读写,所属组仅能读取,其他系统用户完全无权访问。这能有效防止服务器上的其他用户(如果有的话)读取你的敏感配置文件(比如存数据库密码的config.php)。 - 文件夹
750:所有者具备读写执行权限(能进入、修改文件夹内容),组用户仅能执行(进入文件夹),其他用户无任何权限。既保证了Apache能正常访问到脚本文件,又把无关用户的访问权限锁死了。 - 所有者设为
www-data:完美匹配Apache的运行身份,避免出现PHP脚本无法写入必要目录(比如缓存、上传文件夹)的权限问题。
不过有个小细节可以优化:对于config.php这类核心敏感文件,建议把权限再收紧到600——只让www-data自己能读写,连组用户的读取权限都去掉,进一步降低泄露风险。
关于教程配置的差异
你提到的那种教程配置,通常是把文件所有者设为开发者自己的账户,组设为www-data,权限设为文件644、文件夹755。这种思路的核心是方便开发者操作:你不用每次修改文件都加sudo,直接就能编辑。
但这种配置的安全性稍弱:644意味着服务器上的所有系统用户都能读取你的文件,如果服务器上存在其他非信任用户,就有敏感信息泄露的风险。而你的配置是安全优先的方案,更适合生产环境,唯一的小缺点是你自己修改文件时需要用sudo操作。
快速配置命令
如果你确定要采用安全优先的配置,可以执行以下几条命令:
- 递归设置整个应用目录的所有者和组为
www-data:
sudo chown -R www-data:www-data /var/www/myscript
- 递归把所有文件夹权限设为
750:
sudo find /var/www/myscript -type d -exec chmod 750 {} \;
- 递归把所有文件权限设为
640:
sudo find /var/www/myscript -type f -exec chmod 640 {} \;
- (可选)单独收紧敏感配置文件的权限:
sudo chmod 600 /var/www/myscript/config.php
额外安全小贴士
- 记得在Apache配置里禁用目录索引(比如加
Options -Indexes),防止用户直接浏览你的文件夹结构。 - 定期清理服务器上的无用系统用户,减少潜在的攻击面。
- 如果你的应用有上传、缓存这类需要PHP写入的目录,保持所有者为
www-data、权限750就足够了,别随便开777这种危险权限。
内容的提问来源于stack exchange,提问作者Phatair




