有一个问题,即rsync不能按预期设置UID和GID,我的直觉是rsync
应该root
在目标计算机上运行它。
我root
不能通过SSH 登录,因为出于安全目的已将其禁用。目标计算机上的用户可以使用sudo
。
是否有可能使用rsync
与sudo
?
有一个问题,即rsync不能按预期设置UID和GID,我的直觉是rsync
应该root
在目标计算机上运行它。
我root
不能通过SSH 登录,因为出于安全目的已将其禁用。目标计算机上的用户可以使用sudo
。
是否有可能使用rsync
与sudo
?
Answers:
在目标机器上
rsync
:which rsync
/etc/sudoers
文件:(sudo visudo
另请参见:我必须使用visudo吗?)<username> ALL=NOPASSWD:<path to rsync>
,其中username是rsync将用于登录的用户的登录名。该用户必须能够使用sudo
然后,在源计算机上,指定sudo rsync
应使用:
rsync ... --rsync-path="sudo rsync" ...
NOPASSWD
在目标计算机上不使用它的情况下,将导致出现消息
sudo:不存在tty且未指定askpass程序
-e="ssh -i $PRIVATE_KEY_PATH" --rsync-path="sudo rsync"
/etc/sudoers
位于文件末尾(或在可能影响同一用户的任何组规则之后)为我解决了问题。
<username> ALL=NOPASSWD:<path to rsync> <args>
但是我不知道当这样远程调用时args是什么。有任何想法吗?
您可以让远程sudo通过X-windows询问您的密码。这是一种方法:
ssh-askpass
已安装在远程主机上(当然,并且您正在使用X-windows)/etc/sudo.conf
:# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
将以下选项添加到rsync: -e "ssh -X" --rsync-path="sudo -A rsync"
ssh -X
会将您的X-windows信息和端口转发到您的远程会话sudo -A
将使sudo使用ssh-askpass询问您的密码