You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Nginx环境下WordPress更新与SFTP文件编辑的权限配置问询

解决WordPress权限冲突:同时支持SFTP编辑和后台更新

这个问题我碰到过好多次了,其实核心是要让Web服务器用户(www-data)和你的SFTP用户(example)共享对WordPress文件的读写权限,之前的尝试没成功大概率是漏掉了关键的权限配置步骤,比如设置目录的setgid位。下面是一步步的具体命令,你照着来就能搞定:

  • 第一步:把SFTP用户加入Web服务器用户组
    把你的example用户追加到www-data组里,这样它就拥有了www-data组的权限:

    usermod -aG www-data example
    

    注意这里用-aG是追加组,不会覆盖example用户原来的主组,执行完后最好重新登录一下SFTP,让组权限生效。

  • 第二步:设置WordPress目录的所有者和组
    把整个WordPress目录的所有者设为你的SFTP用户example,组设为www-data,这样两边都能基于所有者/组权限访问:

    chown -R example:www-data /path/to/your/wordpress
    

    记得把/path/to/your/wordpress替换成你实际的WordPress安装路径,比如/var/www/html

  • 第三步:配置目录权限
    目录需要执行权限才能进入,同时让所有者和组都有读写权限:

    find /path/to/your/wordpress -type d -exec chmod 775 {} \;
    
  • 第四步:配置文件权限
    文件不需要执行权限,给所有者和组读写权限,其他用户只读即可:

    find /path/to/your/wordpress -type f -exec chmod 664 {} \;
    
  • 第五步:设置目录的setgid位(关键!)
    这个步骤很容易被忽略,设置后新创建的文件会自动继承目录的组(也就是www-data),而不是创建者的主组。这样WordPress后台更新生成的新文件,组权限依然是www-data,不会出现后续权限冲突:

    find /path/to/your/wordpress -type d -exec chmod g+s {} \;
    

做完这些配置后,你试试用SFTP编辑文件,再去WordPress后台更新核心或安装插件,应该就都能正常操作了。如果还有个别目录(比如wp-content/uploads)有问题,重复上面的chown和chmod命令单独处理一下就行。

内容的提问来源于stack exchange,提问作者Mangat Singh Chauhan

火山引擎 最新活动