sno*_*gon 6 bash shell rsync permissions macos
由于错误的目标参数导致 rsync 删除错误文件的严重事故后,我想限制 rsync(或运行它的 bash 脚本)只能删除/修改某个目录下的文件。我想到了:
在仅具有该目录权限的用户下创建并运行 rsync/script。这里的问题是:如何动态使用/创建这样的用户?(这是构建脚本的一部分,应该为其他用户“运行”)。
验证提供给 rsync 的目标路径是否在某个目录下。方向好像是在使用test命令,但是我想不通怎么正确使用,也不是那么安全,因为path参数的测试还是会与实际运行的path参数不同步,所以我认为(1)更健壮。
小智 5
使用 pubkey auth 时,您可以借助authorized_keys 文件和 rrsync(rsync 的一部分)强制执行此类行为。它通常位于 rsync 文档目录中,例如在 Debian 盒子上:/usr/share/doc/rsync/scripts/rrsync.gz
在目标机器上,您需要:
/usr/bin”或“ ~/bin”~/.ssh/authorized_keys在“ ”中设置授权密钥
command="/usr/bin/rrsync /foo/bar/baz" ssh-rsa AAAA[...]
当与 rootdir 设置进行 rsync 时,不要忘记修改目标路径以相对于给定的 rootdir。
如果您可以在目标上启动 rsync 守护程序,则可以预定义允许访问哪些目录(称为模块)。只需编辑 /etc/rsyncd.conf 并添加如下内容:
[mydirectory]
path = /tmp
Run Code Online (Sandbox Code Playgroud)
现在您可以使用别名(模块)名称而不是原始目录路径使用 rsync 协议进行传输:
rsync --delete /origin/dir rsync://$DEST_HOST/mydirectory
Run Code Online (Sandbox Code Playgroud)
/mydirectory将被转换为/tmp,如果你拼错mydirectory ,你会得到一个错误而不是弄乱文件。
这可能是最简单的示例,但您还可以配置身份验证和许多其他参数。您可以在这里找到更多信息:
http://linux.die.net/man/5/rsyncd.conf
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |