在远程 rsync 服务器上强制执行 sudo

a c*_*der 0 permissions sudo rsync

我正在设置rsync将文件从 ServerA 传输到 ServerB,并且需要保留时间戳和权限。他们在这里的关键是文件由与执行文件传输的帐户不同的帐户拥有。

rsync 使用以下示例传输文件:

rsync -a /colorschemes/ acoder@bu.my.box.net:/colorschemes/ --delete
Run Code Online (Sandbox Code Playgroud)

-a标志产生以下类型的错误:

rsync: failed to set times on "/colorschemes/946/ex": Operation not permitted (1)
rsync: failed to set permissions on "/colorschemes/946/ex/blue.pdf": Operation not permitted (1)
Run Code Online (Sandbox Code Playgroud)

在远程系统上,当尝试手动设置文件权限时,acoder 帐户有类似的错误:

[acoder@bu ~]$ chown apache:codingteam /colorschemes/946
chown: changing ownership of ‘/colorschemes/946’: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

不过,这可以正常工作:

[acoder@bu ~]$ sudo chown apache:codingteam /colorschemes/946
Run Code Online (Sandbox Code Playgroud)

有没有办法让远程 rsync 使用 sudo?

Wis*_*lah 5

对于在远程机器中使用sudowith rsync,您可以使用with调用它,--rsync-path="sudo rsync"但要注意require TTY,您可以通过Defaults requirettysudoers文件中删除来跳过它。

如果您想更改不属于您的任何内容的权限,则必须使用sudo如果您不是root

或者是有不同的方式,如设置一个setuidchmodchown那么任何一个可以运行chmodchown作为一个root,但是这将是可怕的