# WordPress 文件权限设置指南与操作技巧(实用改进版)
作者:WenM(原文审阅与改进)
更新:2025-03-21
本指南基于通行安全实践审阅与改进原文内容,修正批量命令格式、细化 `wp-config.php` 权限策略,并补充上传目录与所有权设置的实操建议。
---
## 总体原则
- **最小权限原则**:仅给予运行所需的最低权限,拒绝 777。
- **文件与目录分治**:文件与目录使用不同权限(文件 644、目录 755)。
- **敏感文件更严格**:如 `wp-config.php`、`.env`、密钥文件尽量限制访问。
- **必要写入目录例外**:仅对必须写入目录(如 `wp-content/uploads/`)开放写权限。
---
## 常规权限建议
- **文件(PHP、CSS、JS、媒体)**:`644`
- 含义:所有者可读写;组与其他用户只读。
- **目录(含 WordPress 核心与主题插件目录)**:`755`
- 含义:所有者可读写执行;组与其他用户读与执行(执行表示可进入目录)。
- **wp-config.php**:
- 推荐在单机常规环境(Web 与 owner 同用户):
- `chmod 400 wp-config.php` 或 `chmod 440 wp-config.php`
- 若 Web 进程与所有者不同用户,但同组:
- `chown root:www-data wp-config.php && chmod 640 wp-config.php`
- 若需更宽松(部分共享主机/特定 PHP 处理):
- `chmod 600 wp-config.php`
- 核心原则:确保 PHP 进程能读;其他用户不应可写或可读。
---
## 分步批量设置(安全版本)
在网站根目录(例如 `/var/www/html`)执行:
1. **设置所有权为 Web 用户**(以 Debian/Ubuntu 的 `www-data` 为例)
```bash
sudo chown -R www-data:www-data /var/www/html
- 如果希望代码所有者与 Web 用户分离,可设置为
root:www-data 或你的开发用户与 www-data 组组合。
- 仅当你明确需要由 PHP 写入某些目录时,才将这些目录的所有者设为
www-data。
- 目录设为 755bash
find /var/www/html -type d -exec chmod 755 {} +
- 文件设为 644(排除
.user.ini 示例)bashfind /var/www/html -type f -not -name '.user.ini' -exec chmod 644 {} +
- 注意
-type f 与 .user.ini 的准确写法。
- 如需排除更多敏感文件(例如
.env、私钥文件),可继续追加 -not -name 条件或单独处理为 600。
- wp-config.php 更严格bash
sudo chown root:www-data /var/www/html/wp-config.php sudo chmod 640 /var/www/html/wp-config.php
- 若 Web 与 owner 同用户,可用
400/440。
- 若使用 CLI 更新需要读写(不推荐),临时提升后再恢复。
- 仅必要写入目录设置写权限
- 上传目录:bash
sudo chown -R www-data:www-data /var/www/html/wp-content/uploads sudo chmod -R 755 /var/www/html/wp-content/uploads
- 如果站点有插件需要创建/写入子目录或缓存文件,确保这些目录的所有权/权限允许写入。
- 在某些环境,可用
775 并保证 Web 用户与维护用户在同组,从而便于协作。
- 可选:主题/插件缓存目录(按需)
- 例如某些缓存插件目录:bash
sudo chown -R www-data:www-data /var/www/html/wp-content/cache sudo chmod -R 755 /var/www/html/wp-content/cache
- 不要对全站启用写权限,严格限定范围。
特殊环境注意事项
- 共享主机:用户组可能共享,需更严格(避免组可写)。尽量使用
640 或 600 给敏感文件。
- SELinux/AppArmor:权限正确但仍无法读写时,检查安全上下文策略。
- 版本控制目录:将
.git/ 等目录禁止 Web 访问(通过 Web 服务器规则),并限制权限为仅所有者可读写。
- 执行位的误用:不要让普通文件变为可执行(避免把文件统一设 755)。
- 定期审计:使用安全插件或脚本定期扫描异常权限;升级/部署后重新审计。
常见误区与修正示例
- 误区:
chmod -R 755 *(把所有对象设为可执行)
- 修正:分别对目录与文件处理(
find -type d 755 / find -type f 644)。
- 误区:
find . - type f ...(命令有空格错误)
- 误区:只改权限不改所有权
- 修正:确保
chown 正确指向 Web 用户/组,避免实际写入失败或权限过宽。
最后核查清单
- 所有目录为
755,所有文件为 644(除敏感文件)。
wp-config.php 为 400/440/640/600(根据 Web 用户与组关系选择)。
- 仅
wp-content/uploads/ 等必须写入目录可写(755/775 + 合理所有权)。
- 无
777;无普通文件的执行(x)位。
- Web 用户/组设置正确(
chown 已按需完成)。
- 敏感文件(如
.env、密钥)额外加固(建议 600)。
评论(没有评论)