一些用户和 subuid/subgid 映射

一些用户和 subuid/subgid 映射

我无法理解用户 ID 映射即映射sub{uid,gid}映射的东西。

以下是我所拥有的:

# lxc launch images:ubuntu/22.04 c1
# lxc config device add c1 home disk source=/home/user3/ path=/home/user3
# lxc config device add c1 shared disk source=/mnt/shared path=/mnt/shared

然后我向容器中添加了一个用户和组:

# lxc exec c1 bash
# groupadd -g 1003 user3
# groupadd -g 1004 shared
# useradd -u 1003 -g 1003 -G shared user3
  • 用户在主机上user3具有 uid ,并且属于该组(以及其自身)1003shared
  • 该集团shared的宗旨是1004

这是我的sub{uid,gid}

sudo tee /etc/sub{uid,gid} <<EOF
root:1000:65536
user0:100000:65536
user1:100001:65536
user2:100002:65536
user3:100003:65536
EOF

sudo tee -a /etc/subgid <<EOF
shared:100004:1
EOF

我想将user3的 uid1003和 gid映射1003到容器中。我还想将主机上的映射到容器中shared1004

  1. 我的/etc/sub{uid,gid}對話對嗎?
  2. 我需要什么raw.idmap命令?
  3. 我想创建一个c2具有user0-3映射主目录的容器。

我试过:

# printf 'both 1003 1003\ngid 1004 1\n' | lxc config set c1 raw.lxc -

开始,但出现错误:

错误 conf - ../src/lxc/conf.c:lxc_map_ids:3672 - newuidmap 无法写入映射“newuidmap:uid 范围 [1001-1002) -> [100003-100004) 不允许”:newuidmap 22185 0 1000 1001 1001 10000

错误启动 - ../src/lxc/start.c:lxc_spawn:1791 - 无法设置 id 映射。

答案1

所以我找到了解决这个问题的方法。

我需要:

cat /etc/subuid
root:1000:1
root:1001:1
root:1002:1
root:1003:1
root:100000:65536
lxd:100000:65536
$ cat /etc/subgid
root:1000:1
root:1001:1
root:1002:1
root:1003:1
root:1004:1
root:100000:65536
lxd:100000:65536

之所以必须如此,root是因为 LXD 以主机的 root 用户身份启动 LXC 容器。容器本身仍然没有特权(因为容器内的 root 不是主机上的 root)。

此外,还需要添加一个条目/etc/lxc/default.conf

lxc.idmap = u 0 100000 1000
lxc.idmap = g 0 100000 1000
lxc.idmap = u 1000 1000 1
lxc.idmap = g 1000 1000 1
lxc.idmap = u 1001 101001 0
lxc.idmap = g 1001 101001 0
lxc.idmap = u 1001 1001 1
lxc.idmap = g 1001 1001 1
lxc.idmap = u 1002 101002 0
lxc.idmap = g 1002 101002 0
lxc.idmap = u 1002 1002 1
lxc.idmap = g 1002 1002 1
lxc.idmap = u 1003 101003 0
lxc.idmap = g 1003 101003 0
lxc.idmap = u 1003 1003 1
lxc.idmap = g 1003 1003 1
lxc.idmap = u 1004 101004 64532
lxc.idmap = g 1004 1004 1
lxc.idmap = g 1005 101005 64532

为了生成这个我发现proxmox-lxc-idmapper它帮助我生成正确的lxc.idmap

但请注意,该工具并非没有错误,因此您应该仔细检查输出,以确保它确实是您想要的。

答案2

您的 subuid 定义重叠,这是不允许的。

user0:100000:65536

这意味着 user0 可以100000到达165535。这也意味着下一个用户必须从 开始165536

user1:165536:65536

接下来得到

user2:231072:65536

等等。

相关内容