Ubuntu下WordPress主题/插件更新与FTP代码修改权限冲突求助
这是个非常典型的WordPress权限两难问题,我自己维护站点的时候也踩过这个坑,给你几个靠谱的解决方案,能兼顾后台更新和FTP修改代码的需求:
核心原因先搞懂
WordPress后台更新主题/插件需要Web服务器进程(也就是www-data用户)拥有wp-content目录的读写权限;而你通过FTP修改代码时,是用ubuntu用户操作的,自然需要这个用户对目录有读写权限。单纯把所有权全给某一方,必然顾此失彼。
解决方案1:用户组共享权限(最常用)
这是我最推荐的方案,平衡了权限安全和操作便利性:
- 第一步,把你的
ubuntu用户添加到www-data组,这样你就能继承组的权限:
(注意:添加后需要重新登录SSH/FTP才会生效)sudo usermod -aG www-data ubuntu - 第二步,设置
wp-content目录的所有者为ubuntu,组为www-data:sudo chown -R ubuntu:www-data /var/www/mywordpress/wp-content/ - 第三步,调整目录和文件的权限,让用户和组都有足够权限:
# 给目录设置775权限(用户/组可读可写可执行,其他只读) sudo find /var/www/mywordpress/wp-content/ -type d -exec chmod 775 {} \; # 给文件设置664权限(用户/组可读可写,其他只读) sudo find /var/www/mywordpress/wp-content/ -type f -exec chmod 664 {} \;
这样设置后,ubuntu用户能通过FTP修改文件,www-data也能完成后台更新,完美兼顾。
解决方案2:用ACL细化权限(更灵活)
如果用户组的方式满足不了你的需求(比如还有其他用户需要访问目录),ACL(访问控制列表)是更精细的选择:
- 先安装ACL工具(Ubuntu默认可能没装):
sudo apt install acl - 给
www-data用户添加wp-content目录的递归读写执行权限:sudo setfacl -R -m u:www-data:rwx /var/www/mywordpress/wp-content/ - 保留
ubuntu用户的所有权:sudo chown -R ubuntu:ubuntu /var/www/mywordpress/wp-content/ - (可选)设置默认ACL,让新创建的文件/目录自动继承权限:
sudo setfacl -R -d -m u:www-data:rwx /var/www/mywordpress/wp-content/
ACL能让多个用户/组同时拥有不同权限,比传统的用户组权限更灵活。
解决方案3:临时切换权限(适合偶尔更新)
如果你的站点更新频率很低,不想改永久权限,可以每次更新前临时切换:
- 更新主题/插件前,把权限切给
www-data:sudo chown -R www-data:www-data /var/www/mywordpress/wp-content/ - 更新完成后,切回
ubuntu用户以便FTP修改:sudo chown -R ubuntu:ubuntu /var/www/mywordpress/wp-content/
这个方法比较繁琐,但胜在简单,适合偶尔操作的场景。
注意事项
- 绝对不要设置
777权限!这会让任何用户都能修改你的文件,极度不安全。 - 如果用SFTP代替FTP,确保你的SFTP服务器配置正确,
ubuntu用户能访问到/var/www/mywordpress/wp-content目录。 - 可以尝试在WordPress后台「设置→媒体」或者「设置→文件编辑」里,选择「直接文件系统编辑」,有时候能绕过FTP权限问题,但前提是你的基础权限设置正确。
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

