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 用户的主要内容,如果未能解决你的问题,请参考以下文章

解决sudo用户找不到环境变量的问题

linux 笔记sudo

gsutil rsync 尝试在将源迁移到新存储后重新上传所有内容

Linux rsync

rsync

rsync 服务端和客户端 简单配置