高山docker映像中chrooted ssh中的Rsync导致无法设置权限

问题描述

我使用来自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更改为 与客户端开始文件传输之前的“路径”。这有 防止可能实施的额外保护的优势 安全漏洞,但缺点是需要超级用户 特权,无法遵循以下两种情况的符号链接: 新根路径的绝对值或绝对值之外,以及使 按名称保留用户和组(请参见下文)。