gpt4 book ai didi

macos - 以 root 身份运行 rsync : Operations Not Permitted

转载 作者:行者123 更新时间:2023-11-29 08:59:31 26 4
gpt4 key购买 nike

世界!

我有一个可以运行 rsync 的备份脚本对于每个用户,并将存档他们的 /User/user文件夹到我们的共享驱动器上。 rsync 遇到一个有趣的问题:当以当前用户身份从 shell 以“sudo”身份执行脚本时,我无法保留其他用户的权限。它会出错并说:rsync: chown <path> - operations not permitted(1)

我必须 chown在执行命令之前每个用户的文件夹都是 root 吗?正在使用和有问题的命令:

/usr/bin/rsync -av --human-readable --progress /Users/$name/ --exclude=".*" --exclude="Public" /Backup/$name\ -\ $(date +%m-%d-%y)  --exclude=".*/"

谢谢!

最佳答案

这是因为目标位于已安装的网络卷上。您正在以 root 身份运行 rsync ,但这只允许您更改本地(客户端)计算机上的所有权——就文件服务器而言,您是任何经过身份验证的用户,即不是 root(除非您使用的是 NFS,在这种情况下它会更复杂)。由于您作为普通用户通过服务器的身份验证,您在服务器上创建的所有文件都将归该普通用户所有,您无权更改它。

我看到两种可能的解决方案:

  • 不要尝试在服务器上设置所有权。使用 rsync -rltgoDv ... 而不是 rsync -av ...-a等同于-rlptgoD;离开 -p 意味着它不会尝试设置目标文件的所有权,它只会将它们全部存储为当前(已向服务器验证)用户。

  • 如果您确实需要保留所有权(并且您的本地帐户与服务器上的帐户相同),请通过 SSH 运行 rsync 而不是文件共享,然后以 root 身份通过 SSH 连接到服务器。像 rsync -av ... root@server:/Backup/$name\-\$(date +%m-%d-%y) ...

    请注意,允许 root SSH 进入服务器通常不是一个好主意。如果你想这样做,我会创建一个 SSH 公钥/私钥对(带有加密的私钥),使用它进行身份验证,并将服务器配置为拒绝基于密码的 SSH 身份验证(至少对于 root 用户) .

关于macos - 以 root 身份运行 rsync : Operations Not Permitted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30671292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com