2026年11月12日

2026年11月12日

WordPress 文件权限推荐值|目录 755、文件 644、wp-config.php 的设置与所有者确认

本文是日语原文的本地化版本。 阅读日语原文

WordPress 的文件权限,基本做法是目录设为 755、文件设为 644。包含数据库连接信息的 wp-config.php,则要进一步缩小可读取的人员范围。不要只看数字,还要一并确认文件的所有者是谁、PHP 以哪个用户运行,这样既能防止信息泄露,也能避免“无法更新”。本文的推荐值,是 2026 年 11 月对照 WordPress 官方的“加固 WordPress”(Hardening WordPress)确认过的内容。

权限数字的读法

权限由“所有者、用户组、其他人”三组构成,用读取(4)、写入(2)、执行(1)的总和表示。

数值 表示 含义
755 rwxr-xr-x 所有者可以读写和进入目录,其他人只能读取和进入目录(适用于目录)
644 rw-r--r-- 所有者可以读写,其他人只能读取(适用于文件)
640 rw-r----- 所有者可以读写,用户组可以读取,其他人什么都做不了
600 rw------- 只有所有者可以读写
440 / 400 r--r----- / r-------- 任何人都不能写入,只有所有者(和用户组)可以读取

目录的“执行(x)”是进入该目录的权限。如果去掉目录的 x,目录里的文件就无法读取。

WordPress 的推荐值

对象 推荐值 补充
目录 755(在共享环境中不想让别人看到时用 750) 即使是官方的自动更新,目录也会统一为 755
文件 644(同上情况下用 640) 即使是官方的自动更新,文件也会统一为 644
wp-config.php 缩小范围,只让自己和 Web 服务器能读取 官方的说明是“一般为 400 或 440”。如果 PHP 以与文件所有者相同的用户运行,600 或 400 也能正常工作
.htaccess 644 如果要在保存固定链接设置时让 WordPress 改写它,PHP 的运行用户必须有写入权限
wp-content/uploads 目录 755、文件 644 所有者要设置为 PHP 运行用户可以写入的用户

没有必要设为 777(任何人都可以写入)。在共享服务器上,同一台服务器的其他用户可能会改写你的文件。

有些租用的虚拟主机会自行规定推荐值(因为每家服务器运行 PHP 的方式不同)。如果你所用服务器的手册中写有数值,请优先采用。

关于所有者的思路

按官方的说明,文件由你自己的用户账号所有,并让自己可以写入。只有 WordPress 需要写入的文件(uploads,以及使用主题文件编辑器时的主题等),才需要调整所有者或用户组,使 Web 服务器(PHP)的运行用户可以写入。

如果像 chown -R www-data:www-data 那样,把整体都变成 Web 服务器用户的所有物,PHP 就能改写所有文件。一旦插件的漏洞被利用,损害容易扩大,所以请先确认现状再决定。

在更新插件或核心时被要求输入“连接信息(FTP 的主机名、用户名、密码)”,多数情况下就是因为这种所有者不一致。只有当 PHP 创建的文件的所有者与 WordPress 文件的所有者相同时,WordPress 才会选择直接改写文件的方式;不同时,就会要求通过 FTP 更新。不要把权限放宽到 777,而是把所有者调整一致来解决。

确认当前的设置

通过 SSH 进入 WordPress 的目录,用下面的命令确认权限值和所有者。路径请按自己的环境调整。

cd /var/www/html

# wp-config.php 的权限值、所有者、用户组
stat -c '%a %U:%G %n' wp-config.php

# 查找其他用户可以写入的文件和目录
find . -perm -o=w ! -type l

# 查找 uploads 中的 PHP 文件(通常不应存在)
find wp-content/uploads -type f -name '*.php'

通过 Web 访问时 PHP 的运行用户,请在服务器的设置(PHP-FPM 池的 user 等)或虚拟主机的手册中确认。它不一定与 SSH 登录的用户相同。

如果 uploads 中有不认识的 PHP 文件,就要怀疑被篡改,在删除之前先记录下文件的时间和内容。

批量修正权限

在 WordPress 的目录中执行。执行前请先备份。

cd /var/www/html

# 将目录统一为 755,文件统一为 644
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +

# 收紧 wp-config.php(PHP 以文件所有者身份运行的环境示例)
chmod 600 wp-config.php

wp-config.php 的值,请按环境选择如下。

  • PHP 以与文件所有者相同的用户运行(许多共享虚拟主机、按用户划分的 PHP-FPM):600 或 400
  • 所有者是自己的账号,Web 服务器以用户组的身份读取:设为 640 或 440,并把用户组设为 Web 服务器的用户组
# 示例:所有者为自己,用户组设为 Web 服务器(www-data),权限 640
sudo chgrp www-data wp-config.php
chmod 640 wp-config.php

设置之后,请打开站点和后台,确认能够正常显示并登录。如果出现空白页面或错误,说明 PHP 读不到 wp-config.php。请先把值改回 644,再重新检查所有者和用户组。

设为 400 或 440 后,会向 wp-config.php 写入内容的插件(例如写入缓存设置的插件)会失败。只有在设置这类插件时,才临时允许写入。

防止 wp-config.php 被通过 Web 读取

PHP 正常运行时,即使在浏览器中访问 wp-config.php,也不会显示其内容。为了防止 PHP 停止运行等情况下显示源代码,也要在 Web 服务器一侧拒绝访问。在 Apache 2.4 中,把下面的内容写入放置 WordPress 的目录中的 .htaccess(旧的 Order Deny,Allow / Deny from all 是 Apache 2.2 的写法)。

<Files "wp-config.php">
    Require all denied
</Files>

详细步骤在“拒绝访问 wp-config.php 的设置”中有说明。

.htaccess 本身,Apache 的标准配置(httpd.conf 中的 <Files ".ht*">)已经拒绝了访问。

按官方的说明,也可以把 wp-config.php 移到放置 WordPress 的目录的上一级。如果同一目录下没有 wp-config.php,WordPress 会去找上一级目录。不过官方也提到,有人认为效果不大,而且做法不当反而会有危险。要移动的话,请确认上一级目录不是公开目录。

不让 uploads 执行 PHP

uploads 是 WordPress 会写入的目录,因此是攻击时容易被放置文件的地方。如果让这里不能执行 PHP,即使被放进了文件也无法运行。

在 Apache 2.4 中,创建 wp-content/uploads/.htaccess 并写入下面的内容。

<FilesMatch "\.(php|phtml|phar)$">
    Require all denied
</FilesMatch>

要在 .htaccess 中使用 Require,服务器端的 AllowOverride 必须允许。如果不允许,会出现 500 错误,或者设置被忽略。写好之后,打开像 https://example.com/wp-content/uploads/test.php 这样不存在的 PHP 的 URL,确认返回 403(如果仍是 404,说明设置没有生效)。

在 Nginx 中,在 server 块内,把下面的内容放在处理 PHP 的 location ~ \.php$ 之前。因为正则表达式的 location 会从上到下依次匹配,使用最先匹配到的那个。

location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
    deny all;
}

修改设置之后,先用 nginx -t 检查语法,再重新加载。

另外,WordPress 的媒体上传,默认不接受允许的类型(图片、PDF 等)以外的文件。通常无法在后台把 PHP 文件当作媒体上传。

注意事项

  • 更改权限之前,先备份文件和数据库。
  • 用 FTP 软件更改权限时,有些服务器不支持批量更改。数量多的时候,用 SSH 的 find 更快,也能防止遗漏。
  • 更新时被要求输入 FTP 连接信息时,不要放宽权限,而是确认所有者。也请参考“WordPress 权限错误的修复方法”。
  • 定期执行上面的确认命令(其他用户可写入的文件、uploads 中的 PHP),可以更早发现设置的偏差和篡改。

关于 WordPress 有疑问?本站运营方位于日本,仅以日语回复。 联系我们(日语)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲