LXD / LXC gid映射

时间:2017-01-31 23:43:39

标签: ubuntu lxc lxd

我在磁盘上有一个由share拥有且gid为1001的目录。我想将该目录作为设备添加到其中一个lxc容器上,并让该组继续使用。

我尝试过使用raw.idmap 'gid 1001 1001'但是如果添加它,lxc容器将无法启动。

由于

2 个答案:

答案 0 :(得分:2)

制作地图需要三个部分。

  1. raw.idmap设置(您已经完成)
  2. 容器有一个映射到
  3. 的现有gid
  4. 影子文件允许id映射
  5. 您正在尝试将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)。