网站目录权限设置原则,最小权限最佳实践

网站目录权限设置的核心原则是最小权限:只给程序运行和用户访问所必需的最低权限,不多给一分。
对绝大多数 PHP、静态站点来说,目录用 755,文件用 644,所有者和用户组指向 Web 运行用户(如 www 或 nginx)即可。
下面按零基础可执行的方式,讲清准备、操作、避坑和验证。

先搞懂权限数字和适用场景

Linux 权限用三位数字表示:第一位是所有者,第二位是用户组,第三位是其他人。7 代表读+写+执行,5 代表读+执行,4 代表只读。
所以:

  • 目录 755:所有者可读写执行,其他人只能读和执行(进入目录)。
  • 文件 644:所有者可读写,其他人只读。
  • 不要给目录 777:这意味着任何人都能写入和删除文件,是常见的入侵入口。

适用场景:新装网站、迁移后打不开、上传图片失败、后台提示无写入权限。
只要涉及网站根目录,都按这套原则处理。

操作前确认两件事

  1. 确认 Web 运行用户。Nginx 通常是 nginx 或 www,Apache 是 www-data 或 apache,宝塔面板默认是 www。用命令查看:
ps aux | grep nginx
ps aux | grep apache

输出第一列就是运行用户。
如果同时装了 Nginx 和 PHP-FPM,以 PHP-FPM 的运行用户为准,因为 PHP 需要写文件。

  1. 确认网站根目录路径。常见为 /www/wwwroot/你的域名 或 /var/www/html。不确定时,在宝塔面板“网站”列表点击“根目录”即可看到。

用命令行批量修正权限

假设网站目录是 /www/wwwroot/example.com,Web 用户是 www。
依次执行:

# 1. 把目录和文件所有者改为 Web 用户
chown -R www:www /www/wwwroot/example.com

# 2. 所有目录设为 755
find /www/wwwroot/example.com -type d -exec chmod 755 {} \;

# 3. 所有文件设为 644
find /www/wwwroot/example.com -type f -exec chmod 644 {} \;

执行后,用 ls -l 抽查几个文件和目录,例如:

ls -ld /www/wwwroot/example.com
ls -l /www/wwwroot/example.com/index.php

目录应显示 drwxr-xr-x,文件应显示 -rw-r--r--。
如果个别目录需要上传功能(如 uploads、cache),可单独给写权限:

chmod -R 775 /www/wwwroot/example.com/uploads
chown -R www:www /www/wwwroot/example.com/uploads

注意:775 只给用户组写权限,比 777 安全,但仍应尽量缩小范围。

宝塔面板用户的操作路径

不习惯命令行的,可以在宝塔面板完成:

  1. 进入“网站” → 找到对应站点 → 点击“根目录”右侧的“权限”。
  2. 所有者选择 www,用户组选择 www。
  3. 权限勾选:目录 755,文件 644。宝塔面板通常有“应用到子目录”选项,勾选后确认。
  4. 如果某个子目录需要写入,单独进入该目录,把权限改为 755 或 775,不要整个站点设 777。

避坑:这些做法会埋下安全隐患

  • 不要用 chmod -R 777。网上很多“一键解决权限问题”的教程会让你执行这条命令,它等于把服务器大门敞开。
  • 不要把所有者改成 root。Web 进程以 www 运行时,如果文件属于 root,程序无法写入缓存或上传目录,可能报 500 或无法保存。
  • 不要给所有文件加执行权限。chmod +x 只应给需要执行的脚本,普通 PHP 文件不需要。
  • 迁移网站后忘记改所有者。从其他服务器打包过来的文件,所有者可能是旧用户名,需要用 chown 重新指定。
  • 宝塔面板的“防跨站攻击”开关。开启后,PHP 会限制在网站目录内运行,一般建议保持开启,不要为了省事关掉。

验证权限是否生效

完成设置后,按以下顺序检查:

  1. 浏览器访问网站首页,确认不再出现 403 Forbidden 或 500 Internal Server Error。
  2. 登录网站后台,尝试上传一张图片或保存一篇文章,确认写入正常。
  3. 在命令行查看错误日志,确认没有权限相关报错:
tail -f /www/wwwlogs/example.com.error.log
  1. 用 namei -l /www/wwwroot/example.com/uploads 查看从根目录到目标目录每一级的权限,确保路径上每一层都可进入。

如果仍然报错,
优先检查 SELinux 是否开启(CentOS 常见),
可用 getenforce 查看,
若为 Enforcing,
需要根据情况调整策略或设为 Permissive 测试,
但生产环境不建议直接关闭。

几个高频疑问

为什么目录是 755 而不是 644?
因为目录需要“执行”权限才能进入和遍历,没有执行权限就无法访问里面的文件。

上传目录用 755 还是 775?
如果 Web 用户和文件所有者相同,755 就够;如果 PHP 以不同用户运行,需要 775 并确保用户组正确。

修改权限后网站打不开了怎么办?
先检查所有者是否改错,再检查目录是否有执行权限。用 ls -l 逐级排查,通常能快速定位。

Windows 服务器需要这样设置吗?
Windows 用 NTFS 权限,逻辑类似:给 IIS 或 PHP 运行账户“读取和执行”“写入”权限,不要给 Everyone 完全控制。

权限设置不是一次性的工作,新增目录或迁移后都要复查。
坚持最小权限原则,网站目录权限设置原则就真正落地了。

分享到:
上一篇
CSRF跨站请求伪造,CMS后台安全防护
下一篇
网站禁止目录浏览,Nginx/Apache配置
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意