我在磁盘上有一个目录,该目录的share
gid 为1001
. 我想将该目录添加为其中一个 lxc 容器上的设备,并让该组结转。
我尝试过使用raw.idmap 'gid 1001 1001'
,但如果添加这个,lxc 容器将不会启动。
谢谢
使映射工作需要三个部分。
您正在尝试将主机 gid 1001 ( share
) 映射到容器 gid。在这种情况下,您选择了 container-gid 也将是 1001。
你已经完成了上面的#1,你已经设置了映射。
完成 #2 只需要您在容器内创建一个 gid 为 1001 的组。理论上,这实际上可以是新组的任何 gid,您只需修改 raw.idmap 命令以设置目标 gid 以匹配容器中定义的 gid。
对于上面的#3,您需要检查/etc/subgid
以确保您被允许将 host-gid 1001 映射到 container-gid 1001。
当您查看时,/etc/subgid
您应该看到一些类似于以下内容的行,尽管每个行的第一个数字行可能不同:
lxd:100000:65536
root:100000:65536
这是默认配置,表示 lxd 可以使用范围从 100000 开始的 gid,这会生成相对于主机 gid 为 100000(或该行中的第一个数字是什么)具有隐藏偏移量的容器。如果您在容器内的挂载目录中创建文件,则从主机可见的 gid 将是该偏移量 + 容器 gid。
要允许 lxd 使用 gid 1001,并因此允许它将主机 gid 1001 映射到容器 gid 1001(或任何容器 gid),您需要将权限添加到您的/etc/subgid
文件。您可以通过在文件末尾添加这样的行来执行此操作:
lxd:1001:1
root:1001:1
如果您希望主机允许 lxd 在使用 raw.idmap 选项时映射多个不同的 gid,则可以将它们指定为“
lxd:start-id-to-expose:count-of-ids-to-expose
root:start-id-to-expose:count-of-ids-to-expose
在文件的附加行中列出了不连续的范围。
确保在需要添加新行时始终添加 lxd 和 root 行,因为 lxd 文档说它们必须在大多数用途中保持同步。
您用该行告诉的是将具有 id 1001 的主机用户映射到具有 id 1001 的容器用户,这意味着您应该确保容器内有一个具有 id 1001 的用户或将其映射到不同的用户(容器的第一个用户通常具有 id 1000)。