rsync 内容作为 sudo 用户
Posted
技术标签:
【中文标题】rsync 内容作为 sudo 用户【英文标题】:rsync content as sudo user 【发布时间】:2018-08-06 06:51:46 【问题描述】:我有一个经销商网络服务器,我正在迁移到一台新机器上。源服务器所有者提供了一个用户(我们称之为用户 A),该用户对其他用户具有 sudo 访问权限,但对 root 没有访问权限。我的用户没有对我需要提取的文件的直接文件访问权限,但我可以 sudo 到正确的用户(在我们的示例中为用户 B)并获取正确的内容。
我设置了一个从我的用户到目标机器的 ssh 密钥,但这显然不会传递给其他用户。当 sudo 作为单个内容用户时,我可以传递目标服务器的密码,但是对于要移动的数据量和要 sudo 的用户数量,这是相当乏味的。
所以,我的问题是,有没有一种方法可以访问属于用户 B 的内容,我有 sudo 访问权限但不能直接访问,但验证我的 rsync ssh 连接并以用户 A 身份运行完整的 rsync 命令,我的linux用户?
【问题讨论】:
【参考方案1】:你能 ssh 到远程服务器吗?如果是:登录远程服务器并运行:
sudo -u user_with_sudo \
rsync -irltc --stats --info=progress2 /remote/server/files/ \
yourlogin@your.local.server.com:/home/user/download_dir/
【讨论】:
【参考方案2】:您可以使用--rsync-path
选项指定用于在远程端运行rsync
的命令,该命令可以是带有选项的sudo
。例如:
rsync -a --rsync-path "sudo -u userB rsync" userA@host:/path/to/stuff/ /local/stuff/
当然,您需要确保您的 sudoers 文件设置为提供对 rsync 命令的 NOPASSWD 访问权限。
【讨论】:
对于NOPASSWD
访问在sudoers 文件中添加行<username> ALL=NOPASSWD:<path to rsync>
以上是关于rsync 内容作为 sudo 用户的主要内容,如果未能解决你的问题,请参考以下文章