Linux 网站目录的文件权限应该怎么设置?

网站目录推荐权限:目录 755、文件 644、属主为 Web 服务器用户(如 www-data);上传目录禁执行、配置文件 600/640。绝对不要 777。本文给出完整设置命令与安全要点。

最佳实践
网络请求路由与访问控制示意

**推荐基线:目录 755、文件 644、属主设为 Web 服务器运行用户。**下面是完整做法和例外场景。

标准设置

# 属主改为 Web 服务器用户(Apache/Nginx 在 Debian/Ubuntu 上通常是 www-data)
sudo chown -R www-data:www-data /var/www/html

# 所有目录 755(rwxr-xr-x)
sudo find /var/www/html -type d -exec chmod 755 {} \;

# 所有文件 644(rw-r--r--)
sudo find /var/www/html -type f -exec chmod 644 {} \;

755 让 Web 服务器能读取和执行(目录的 x 位是"可进入"),644 让文件可读不可被其他用户改写。

例外场景

上传目录:权限同样是 755/644,但必须加一层防护——禁止执行其中的脚本(Nginx 配置里对 uploads 路径禁用 PHP 解析等),防止用户上传 webshell 被执行。

含敏感信息的配置文件(数据库密码、API 密钥):

chmod 600 wp-config.php        # 仅属主可读写
# 或 640,允许同组读
chmod 640 config.php

需要 Web 服务器写入的目录(缓存、日志、会话):属主给 www-data 并保持 755 即可——不需要给"其他人"写权限。

红线:永远不要 777

chmod 777 意味着系统上任何进程都能改写你的网站文件,是服务器入侵后篡改页面的经典帮凶。遇到"权限不够"的正确解法是调整属主/属组,不是放开权限。

排障思路

网站 403 且日志报 Permission denied 时按序检查:路径上每一级父目录的 x 位 → 文件读权限 → SELinux 上下文(RHEL/CentOS 上 restorecon -Rv /var/www)。

排查多台 Web 主机时,可在观测云集中查询已采集的 Nginx 错误日志,按主机、时间及 Permission denied 筛选。把错误中的具体路径与上面的逐级权限检查对应起来,再重试请求,确认修改后错误不再出现。

常见问题(FAQ)

Q:部署用户和 www-data 都要写怎么办?
把两者放进同一属组,目录设 2775(setgid 位让新文件继承属组):chmod -R 2775 /var/www/html,并配合 umask 002。

Q:SELinux 开着时 chmod 对了还是 403?
检查文件上下文:ls -Z。Web 内容需要 httpd_sys_content_t,用 restorecon -Rv 修复。

Q:WordPress 之类需要自动更新怎么办?
让站点目录属主为 Web 服务器用户(www-data 可写),而不是放开给所有人。自动更新失败通常是属主问题,不是权限位问题。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台