为什么通过“sudo rsync”将文件传输到另一台计算机需要目标计算机的 root 密码?

为什么通过“sudo rsync”将文件传输到另一台计算机需要目标计算机的 root 密码?

我正在尝试将目录传输到另一台计算机

$ rsync -a --delete --stats -h wget 'olive:/tmp'

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 5 (reg: 4, dir: 1)
Number of deleted files: 0
Number of regular files transferred: 4
Total file size: 12.94K bytes
Total transferred file size: 12.94K bytes
Literal data: 12.94K bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 13.31K
Total bytes received: 103

sent 13.31K bytes  received 103 bytes  5.36K bytes/sec
total size is 12.94K  speedup is 0.96

如果源目录包含一些需要本地 root 权限的文件,我会添加sudo.这是对的吗?

但为什么它一直询问我另一台计算机的 root 密码?我提供了目标 root 的密码,但它一直要求输入密码。

$ sudo rsync -a --delete --stats -h wget 'olive:/tmp'
root@olive's password: 
Permission denied, please try again.
root@olive's password: 

如果我想复制需要本地root权限的源文件怎么办?

我尝试了建议的重复项,但没有成功

$ sudo rsync -e 'ssh -i /home/t/.ssh/id_rsa' -a --delete --stats -h wget 'olive:/tmp'
root@olive's password: 
Permission denied, please try again.
root@olive's password: 

谢谢。

答案1

从您的上一个示例来看,您的非 root 用户名似乎是t

当您使用ssh,scprsync且未指定远程用户名时,工具将假定远程用户名与本地用户名相同。所以第一个示例中的命令:

rsync -a --delete --stats -h wget 'olive:/tmp'

可以更明确地写为:

rsync -a --delete --stats -h wget 't@olive:/tmp'

当您为命令添加前缀 时sudo,它会更改用户名,命令行的其余部分将作为执行(为root,除非sudo -u <username>使用)。

所以,你的第二个例子:

sudo rsync -a --delete --stats -h wget 'olive:/tmp'

现在相当于:

sudo rsync -a --delete --stats -h wget 'root@olive:/tmp'

因为该rsync命令是以 root 身份运行的,并且由于未定义远程用户名,所以它假设您也想在远程端使用 root 帐户执行 rsync 操作。


修复:使用rsyncwith时sudo,请明确您要使用的远程用户名:

sudo rsync -a --delete --stats -h wget 't@olive:/tmp'

或者如果这不起作用(即您的sudo配置always_set_home已启用该选项,因此它会更改$HOME使用它执行的命令的环境变量以匹配将运行该命令的用户),然后尝试第三个示例的这种形式:

sudo rsync -e 'ssh -i /home/t/.ssh/id_rsa' -a --delete --stats -h wget 't@olive:/tmp'

在这种形式中,rsync命令在本地执行,但以用户身份root登录- 这似乎根据您的第一个示例设置了 SSH 密钥。olivet

不,用户名不a 的两端相同rsync(或scp- 省略远程用户名只是用户名常见情况的简写相同。

答案2

这取决于您运行 rsync 命令的帐户。如果您以 root 身份运行,那么它期望您在目标系统上拥有 root 权限

相关内容