通过堡垒机Rsync至EFS目录:SSH用户以www-data身份读写权限问题
解决EFS挂载目录下非www-data用户写入及rsync同步问题
针对你遇到的场景——ECS上的WordPress容器挂载EFS到/var/www/html/wp-content,堡垒机EC2挂载同一份EFS后,ubuntu用户无法直接写入、rsync同步失败的问题,给你几个可行的解决思路:
方法1:用rsync的--chown参数直接同步并修改文件归属
这是最适配同步需求的方案,rsync支持在同步完成后自动修改目标文件的属主属组,不用切换用户就能完成同步,且同步后的文件权限完全符合WordPress容器的要求:
rsync -av --chown=www-data:www-data /本地插件目录/ ubuntu@堡垒机IP:/mnt/efs/wp-content/plugins/
- 逻辑:同步过程直接把文件属主属组改成
www-data,既绕过当前ubuntu用户的写入限制,又保证WordPress容器能正常读写这些文件。 - 注意:确保堡垒机上的rsync版本支持
--chown参数(主流Linux发行版均支持)。
方法2:配置sudo免密执行rsync(以www-data身份)
如果不想修改同步参数,可以给ubuntu用户配置免密权限,让它能直接以www-data身份执行rsync,省去每次输入sudo密码的麻烦:
- 编辑sudoers文件:
sudo visudo
- 添加以下内容(路径需和堡垒机上rsync实际路径一致):
ubuntu ALL=(www-data) NOPASSWD: /usr/bin/rsync
- 保存退出后,直接用以下命令同步:
sudo -u www-data rsync -av /本地插件目录/ /mnt/efs/wp-content/plugins/
方法3:调整EFS目录的ACL与组权限(适合长期频繁写入场景)
如果需要堡垒机用户频繁操作EFS目录,可通过调整组权限和setgid位实现无sudo写入:
- 确认ubuntu用户已加入
www-data组(加入后需重新登录SSH会话生效):
sudo usermod -aG www-data ubuntu # 重新登录后验证: groups ubuntu
- 给EFS的wp-content目录设置setgid位,确保新创建的文件自动继承目录的组归属:
sudo chmod g+s /mnt/efs/wp-content/
- 给
www-data组添加写入权限(仅针对需要修改的子目录,比如plugins、themes):
sudo chmod g+w /mnt/efs/wp-content/plugins/ /mnt/efs/wp-content/themes/
- 逻辑:setgid位让新文件的组归属和目录保持一致,加上组写入权限后,ubuntu用户作为
www-data组成员就能直接写入,同时WordPress容器的www-data用户也能正常操作,不会破坏原有权限体系。
内容的提问来源于stack exchange,提问作者Petra Barus
相关产品推荐
相关产品推荐

