问题描述
我使用来自alpine的简单dockerfile并安装了openssh和rsync。 将ssh用户chroot到其主目录,rsync和bash可执行文件以及chown,chmod等。并将其库复制到用户目录,以便可以通过ssh执行rsync。
当我将rsync与-p选项一起使用时(包括在-a中):
rsync -a -e 'ssh -p 2222' /home/user/Pictures/ localhost:/backups/071120
rsync:无法在“ / backups / 071120 /。 2019-12-26 13-47-24.png.NKoiaj“:没有此类文件或目录(2)The
文件已复制,但显然权限设置不正确。
我尝试使用ssh更改权限,并且一切都按预期方式工作,因此它不应成为文件夹权限问题。 然后,我尝试使用ubuntu基本映像,它可以按预期工作,因此高山基本映像中有些东西会阻止rsync更改权限。
有什么想法吗?
解决方法
在基于高山的图像上使用 rsync 遇到类似的问题。
解决方案应该是通过在以下行中指定否来禁用chroot
文件上的rsyncd.conf
设置:
use chroot = no
根据文档(https://download.samba.org/pub/rsync/rsyncd.conf.html),将该选项设置为 yes 可能会使按名称保存用户和组变得复杂
使用chroot
如果“ use chroot”为true,则rsync守护进程将chroot更改为 与客户端开始文件传输之前的“路径”。这有 防止可能实施的额外保护的优势 安全漏洞,但缺点是需要超级用户 特权,无法遵循以下两种情况的符号链接: 新根路径的绝对值或绝对值之外,以及使 按名称保留用户和组(请参见下文)。