我在磁盘上有一个由share
拥有且gid为1001
的目录。我想将该目录作为设备添加到其中一个lxc容器上,并让该组继续使用。
我尝试过使用raw.idmap 'gid 1001 1001'
但是如果添加它,lxc容器将无法启动。
由于
答案 0 :(得分:2)
制作地图需要三个部分。
您正在尝试将host-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开始的gids,这会生成相对于主机gids为100000的隐藏偏移量的容器(或者行中的第一个数字)。如果您在容器内的已安装目录中创建文件,则从主机可见的gid将是该偏移+容器gid。
要允许lxd使用gid 1001,因此允许它将主机gid 1001映射到容器gid 1001(或任何容器gid),您需要将权限添加到/etc/subgid
文件。您可以通过在文件末尾添加这样的行来完成此操作:
lxd:1001:1
root:1001:1
如果你有许多不同的gids,你希望主机在你使用raw.idmap选项时允许lxd映射,你可以将它们指定为"
lxd:start-id-to-expose:count-of-ids-to-expose
root:start-id-to-expose:count-of-ids-to-expose
在文件中的其他行上列出了非连续范围 确保在需要添加新行时始终添加lxd和root行,因为lxd文档说它们必须在大多数情况下保持同步。
答案 1 :(得分:1)
您告诉该行的是将ID为1001的主机用户映射到ID为1001的容器用户,这意味着您应确保容器内有id为1001的用户或将其映射到另一个用户(容器的第一个用户通常具有id 1000)。