WordPress文件权限配置教程是为WordPress网站设置正确的文件与目录读写权限,以保障网站正常运行并降低安全风险的操作方法。
权限基础
在Linux服务器中,每个文件或目录都有三类权限:读、写、执行,数字权限由三个数字组成,分别代表文件所有者、所属用户组和其他用户。

r表示读取,数值为4w表示写入,数值为2x表示执行,数值为1
755 表示所有者拥有读、写、执行权限,所属用户组和其他用户拥有读和执行权限。644 表示所有者拥有读写权限,所属用户组和其他用户只有读取权限。
目录必须具有执行权限才能进入,文件通常不需要执行权限,除非是可执行脚本,WordPress主要使用PHP文件,PHP文件本身不需要直接执行,因此文件权限一般设置为 644,目录权限一般设置为 755。
WordPress推荐权限配置
| 项目 | 推荐权限 |
|---|---|
| WordPress根目录 | 755 |
| 所有子目录 | 755 |
| 所有普通文件 | 644 |
wp-config.php | 600 或 640 |
.htaccess | 644 |
wp-content/uploads | 755 或 775 |
wp-content/cache | 755 或 775 |
根目录和子目录设置为 755,允许所有者读写执行,组和其他用户读执行,普通文件设置为 644,允许所有者读写,组和其他用户只读。wp-config.php 包含数据库密码等敏感信息,建议设置为 600,仅允许所有者读写,如果服务器需要Web服务用户读取该文件,可以设置为 640,并确保文件所有者正确。
wp-content/uploads 目录用于存放媒体上传文件,如果PHP进程不是文件所有者,需要对应写权限,可设置为 775。wp-content/cache 目录用于缓存插件写入缓存数据,同样可设置为 775。.htaccess 文件由WordPress自动生成,设置为 644 即可。
使用SSH命令行配置权限
通过SSH连接服务器后,可以使用 chmod 和 chown 命令批量设置权限。
进入WordPress安装目录,
cd/var/www/html
批量设置目录权限为 755:
find.-typed-execchmod755{}\;批量设置文件权限为 644:
find.-typef-execchmod644{}\;单独设置 wp-config.php 权限为 600:
chmod600wp-config.php
单独设置 wp-content/uploads 目录权限为 775:
chmod775wp-content/uploads
如果使用Nginx或Apache与PHP-FPM,通常需要将WordPress文件所有者设置为Web服务用户,www-data:
chown-Rwww-data:www-data/var/www/html
然后可以进一步收紧部分文件权限,对于使用FastCGI或PHP-FPM的环境,文件所有者与PHP进程用户一致时,wp-config.php 设置为 600 较为安全,如果PHP进程用户与文件所有者不同,则需要根据实际情况调整。
批量设置目录和文件权限后,建议重新检查关键文件权限是否正确,使用以下命令查看:
ls-l
使用FTP客户端配置权限
使用FileZilla、WinSCP等FTP客户端连接服务器后,可以手动修改权限。
在FileZilla中,右键点击目标文件或目录,选择“文件权限”,输入数字权限值,755 或 644,点击确定,修改目录权限时,可以选择“递归到子目录”来批量应用权限,如果不勾选递归,仅修改当前目录本身。
使用FTP客户端修改权限时,注意不要使用纯FTP协议传输敏感信息,尽量使用FTPS或SFTP,部分FTP客户端不支持 600 权限显示,但可以正常设置。
使用cPanel或宝塔面板配置权限
如果使用cPanel主机,登录cPanel后进入“文件管理器”,找到WordPress安装目录,右键点击文件或目录,选择“Change Permissions”或“更改权限”,勾选对应的读、写、执行复选框,或直接输入数字权限。
宝塔面板用户可以进入“文件”,找到对应目录或文件,右键点击“权限”,输入权限数字并保存,宝塔面板还可以批量选择多个文件进行权限设置。
使用面板配置权限时,建议优先修改目录权限为 755,文件权限为 644,然后单独设置 wp-config.php 为 600,不要将所有文件和目录设置为 777,否则会导致严重安全漏洞。
特殊目录和文件权限处理
wp-config.php
wp-config.php 是最重要的配置文件,包含数据库连接信息、盐密钥等敏感内容,建议设置为 600,仅允许文件所有者读写,如果网站无法读取配置导致500错误,可以调整为 640,并确认文件所有者与Web服务用户的关系。
.htaccess
WordPress使用 .htaccess 管理固定链接和部分安全规则,该文件权限设置为 644 即可,如果权限过紧,可能导致WordPress无法写入固定链接规则,设置完成后,可以在后台“设置-固定链接”中保存一次,WordPress会自动生成或更新 .htaccess。
wp-content/uploads
上传目录需要允许PHP进程写入文件,如果所有者为Web服务用户,755 即可,如果所有者不是Web服务用户,则需要设置为 775,或者将目录所有者改为Web服务用户,上传目录下不应存放可执行的PHP文件,可以通过 .htaccess 禁止PHP执行,增加安全性。
wp-content/cache
缓存目录需要写权限,供缓存插件写入缓存文件,如果使用W3 Total Cache、WP Super Cache等插件,建议将 wp-content/cache 设置为 775,并确保目录所有者正确,部分缓存插件会创建子目录,需保持子目录同样可写。
wp-content/plugins 和 wp-content/themes
录本身只需要读取权限,设置为 755 即可,插件和主题文件设置为 644,如果需要在后台在线编辑插件或主题文件,部分环境会要求文件可写,但不建议开放此权限,应通过SSH或FTP进行文件修改。
目录所有权和用户组配置
文件权限与文件所有者、用户组密不可分,即使权限数字正确,如果所有者错误,网站仍然可能无法读写。
使用以下命令查看文件所有者:
ls-l
输出示例:
-rw-r--r--1www-datawww-data405Feb2110:00index.php drwxr-xr-x5www-datawww-data4096Feb2110:00wp-admin
这里所有者是 www-data,用户组是 www-data,如果文件所有者是 root 或FTP用户,而PHP进程以 www-data 运行,则PHP可能无法写入缓存或上传目录。
可以通过以下命令批量修改所有者:
chown-Rwww-data:www-data/var/www/html
对于使用suPHP、suEXEC或PHP-FPM按用户运行的环境,文件所有者应为对应的FTP用户或站点用户,而不是统一的 www-data,此时如果将所有文件所有者改为 www-data,反而可能导致网站无法运行,需要根据主机面板说明确定正确的所有者。
安全权限加固
禁止目录列表
如果目录没有 index.php 或 index.html,服务器可能列出目录内容,暴露文件结构,可以通过在WordPress根目录和各子目录放置空 index.php 或空 index.html 文件防止目录列表,也可以在服务器配置或 .htaccess 中添加:
Options-Indexes
禁止上传目录执行PHP
在 wp-content/uploads 目录放置 .htaccess 文件,添加以下规则:
<FilesMatch"\.(?i:php|php5|php7|phtml)$"> Requirealldenied </FilesMatch>
如果使用Apache 2.2或更早版本,使用:
<FilesMatch"\.(?i:php|php5|php7|phtml)$"> Orderallow,deny Denyfromall </FilesMatch>
这样可以防止攻破者上传PHP木码后执行。
保护 wp-config.php
在 .htaccess 中添加规则防止直接访问:
<Fileswp-config.php> Requirealldenied </Files>
部分服务器配置下,此规则可能无效,更可靠的方式是设置文件权限为 600,并确保所有者正确。
限制敏感文件权限
以下文件或目录建议收紧权限:
wp-config.php:600xmlrpc.php:如不使用可删除或禁止访问wp-admin:目录权限保持755,不要在目录内放置无保护脚本
常见权限错误及修复方法
网站出现500错误
检查文件和目录权限是否过紧,文件应为 644,目录应为 755,如果文件被设置为 600 或目录被设置为 700,PHP进程无法读取,可能出现500错误,使用SSH批量恢复即可。
后台上传图片失败
检查 wp-content/uploads 目录权限,如果权限为 755 但所有者不是PHP进程用户,改为 775,或执行 chown 将目录所有者改为Web服务用户,同时检查 wp-content 目录权限是否为 755。
更新插件或主题要求输入FTP账号
这通常是因为WordPress文件所有者与PHP进程用户不一致,WordPress无法直接写入文件,解决方法是将WordPress文件所有者改为PHP进程用户,
chown-Rwww-data:www-data/var/www/html
也可以配置WordPress使用直接文件写入,但调整所有者是更根本的解决方案。
上传媒体文件提示无法创建目录
检查 wp-content 目录权限是否为 755 且所有者为PHP进程用户。wp-content 目录权限为 755 但所有者不是PHP进程用户,将无法创建 uploads 子目录,需要修改所有权或权限。
无法保存固定链接设置
检查 .htaccess 文件权限是否为 644,并确保WordPress根目录可写,如果根目录权限为 755,所有者不是PHP进程用户,WordPress可能无法写入 .htaccess,可以手动创建 .htaccess 文件并设置正确的固定链接规则。
插件安装后无法创建缓存目录
检查 wp-content/cache 目录是否存在且权限为 775,如果不存在,手动创建并设置权限,某些缓存插件还需要在 wp-content 下创建其他目录,应保持 wp-content 目录对所有者为可写,或至少对Web服务用户可写。
权限检查清单
完成权限配置后,可以按照以下清单逐项检查:
WordPress根目录:
755所有子目录:
755所有普通文件:
644wp-config.php:600或640.htaccess:644wp-content/uploads:755或775wp-content/cache:755或775文件所有者和用户组与PHP进程用户一致
不存在任何
777权限的目录或文件上传目录已禁止执行PHP
目录列表已禁止
使用以下命令可以快速检查是否存在 777 权限:
find/var/www/html-typed-perm777 find/var/www/html-typef-perm777
如果命令输出为空,说明没有 777 权限,如果存在,需要立即修改为更安全的权限。
十一、不同服务器环境的权限差异
Apache + mod_php
在Apache使用 mod_php 的环境中,PHP进程通常以 www-data 或 apache 用户运行,文件所有者应为该用户,目录权限 755,文件权限 644,上传目录 755 即可。
Nginx + PHP-FPM
在Nginx与PHP-FPM环境中,PHP进程通常以独立用户运行,www-data,文件所有者也应为 www-data,如果使用按站点隔离的PHP-FPM池,文件所有者可能为站点用户,需要根据PHP-FPM池配置调整。
共享主机
共享主机通常使用面板管理权限,FTP用户与PHP进程用户通常是同一用户或存在映射关系,此时目录权限 755,文件权限 644,上传目录 755 或 775 即可,不要随意在共享主机上使用 chown 命令,可能没有权限或破坏主机配置。
OpenLiteSpeed
OpenLiteSpeed使用与Apache类似的权限模型,PHP进程用户取决于LSPHP配置,推荐使用与文件所有者相同的用户运行PHP进程,权限设置与Nginx环境类似。
十二、使用脚本批量修复权限
可以创建一个Shell脚本,快速修复WordPress权限,例如创建 fix-wp-permissions.sh:
#!/bin/bash
WP_DIR="/var/www/html"
find"$WP_DIR"-typed-execchmod755{}\;
find"$WP_DIR"-typef-execchmod644{}\;
chmod600"$WP_DIR/wp-config.php"
chmod775"$WP_DIR/wp-content/uploads"
chmod775"$WP_DIR/wp-content/cache"
chown-Rwww-data:www-data"$WP_DIR"保存后执行:
bashfix-wp-permissions.sh
将 WP_DIR 替换为实际WordPress安装路径,将 www-data 替换为正确的Web服务用户,脚本执行后,网站权限会恢复到安全状态。
十三、权限配置常见误区
所有文件设置为 666 或所有目录设置为 777
部分用户在网站无法写入时,直接将所有文件和目录设置为最大权限,这样做虽然暂时解决了写入问题,但严重降低安全性,任何用户都可以修改网站文件,攻破者可以植入恶意代码。
wp-config.php 设置为 644
wp-config.php 包含数据库密码,设置为 644 后,服务器上的其他用户可能读取到数据库凭据,应使用 600 或 640。
目录设置为 644
目录权限如果设置为 644,所有者没有执行权限,无法进入目录,网站将无法读取该目录下的文件,目录必须至少为 755 或 750。
忽略文件所有者
即使权限数字正确,如果所有者错误,网站依然无法正常工作,权限配置必须结合所有者检查。
修改权限后未检查网站是否正常
每次修改权限后,应访问网站前台和后台,测试核心功能,包括页面加载、登录、上传媒体、安装插件、保存设置等,如果发现问题,及时根据错误信息调整权限。