systemd-nspawn:绑定文件夹的文件系统权限

systemd-nspawn:绑定文件夹的文件系统权限

我拥有的:

一台 Gentoo 主机和一个 Ubuntu 容器。

我想要的是:

从主机挂载/home到容器并正常使用它。

我在做什么:

使用标志启动容器-U --bind=/home

我得到什么:

在容器中,我有我的/home目录,但它已被挂载为无人:无组所有者:

scratch:5:0:/home/vkirsano> ll /home 
total 24
drwxr-xr-x  3 nobody nogroup  4096 Sep 19 17:39 krokoziabla
drwx------  2 nobody nogroup 16384 Oct 20  2016 lost+found
drwxr-xr-x 56 nobody nogroup  4096 Sep 20 22:15 vkirsano

因此,实际上我只能只读访问该/home目录的内容,这不是我想要的。比如说,我在容器中创建了vkirsano与主机中具有相同 UID:GID 的用户,因此我希望 systemd-nspawn 在绑定目录时仅保留有关文件所有权的原始信息。

我在问什么

安装文件夹的通常做法(如果有的话)是什么,例如/home保持它们在容器中正常工作的能力?

答案1

AFAIK,-U主要与 rw 不兼容--bind。来自文档:

请注意,当此选项与--private-users 结合使用时,生成的挂载点将归nobody 用户所有。这是因为挂载及其文件和目录继续由相关主机用户和组拥有,而这些用户和组在容器中不存在,因此显示在通配符 UID 65534(nobody)下。如果创建了此类绑定安装,建议使用 --bind-ro= 将其设置为只读。

我使用 nspawn 制作基于 Ubuntu 的容器,以便在我的 Arch Linux 主机上构建 Yocto。当Arch的内核启用时CONFIG_USER_NS=y,我需要PrivateUsers=off在我的/etc/systemd/nspawn/foo.nspawn文件中进行设置。 (此外,我在主机和容器中添加了具有相同 UID 的用户,因此我可以Bind=在容器和主机中以相同的方式访问它。)

相关内容