我无法理解用户 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 ,并且属于该组(以及其自身)1003
shared
- 该集团
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
到容器中。我还想将主机上的映射到容器中shared
。1004
- 我的
/etc/sub{uid,gid}
對話對嗎? - 我需要什么
raw.idmap
命令? - 我想创建一个
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
等等。