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

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

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

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

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

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

操作前确认两件事

  1. 确认 Web 运行用户。Nginx 通常是 nginxwww,Apache 是 www-dataapache,宝塔面板默认是 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--
如果个别目录需要上传功能(如 uploadscache),可单独给写权限:

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. 如果某个子目录需要写入,单独进入该目录,把权限改为 755775,不要整个站点设 777

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

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

验证权限是否生效

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

  1. 浏览器访问网站首页,确认不再出现 403 Forbidden500 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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意