我使用rsync镜像故障转移服务器上的一些文件夹。 但是,我们的一些文件(如缩略图或全文索引)是由我们的应用程序在networking用户(名为'nobody')下生成的,默认为限制性权限。
另外,我正在通过ssh进行这项工作,在那里根访问被禁用,如果可能的话,我想保持这种状态。
有没有任何合理的方式,我可以告诉rsync作为sudo运行? 或者我应该考虑更改文件权限?
你可以:
使用#2,你可以通过ssh使用rsync到root用户,并且仍然是安全的(参见smitdconfig(5)中的PermitRootLogin no-password),或者甚至可以把两者结合起来创build一个只能被使用的非特权用户与特定的rsync命令行。
编辑:通过SSH发送auth数据获取根(例如ssh作为用户,sudo用户密码)不是比直接执行ssh到根用户(通过公共密钥或通过一个好的密码),恕我直言。
您可以通过--rsync-path指定要作为远程rsync命令运行的内容 – 例如:
rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst
你也可以使用rsync守护进程 。 但要小心,我在那里描述的方式,可以让运行rsync守护程序的机器上的任何人访问模块名称。
我没有深入研究它,但我无法以这种方式创build一个安全的公钥(并因此设置了无密码)。 但是,可能有。