LXC 文档说:
在创建第一个容器之前,您可能应该注销并再次登录,甚至重新启动机器以确保您的用户被放置在正确的 cgroup 中。
有人可以解释为什么需要运行如下命令吗:
lxc-usernsexec -m b:0:100000:1 -- bash
/etc/subgid
我在和中有正确的映射/etc/subuid
。但是这个命令只是说在我重新启动之前权限被拒绝。这是什么意思正确的 cgroups代表?
编辑
安装 LXC 之前:
jml@somehost:~$ cat /proc/self/cgroup
2:name=systemd:/user/1002.user/123.session
安装 LXC 并重启后:
jml@somehost:~$ cat /proc/self/cgroup
11:hugetlb:/user/1002.user/5.session
10:perf_event:/user/1002.user/5.session
9:blkio:/user/1002.user/5.session
8:freezer:/user/1002.user/5.session
7:devices:/user/1002.user/5.session
6:memory:/user/1002.user/5.session
5:cpuacct:/user/1002.user/5.session
4:cpu:/user/1002.user/5.session
3:cpuset:/user/1002.user/5.session
2:name=systemd:/user/1002.user/5.session
请注意,我所属的组没有区别。我注意到的唯一变化是那些cgroups
。现在这些cgroups
会影响在命名空间中映射用户的能力吗?
答案1
组 ID (GID) 继承自父进程。登录后,您将获得一个终端,该终端使用一组 GID 启动,并且您启动的每个进程都获得相同的 GID。出于安全原因,您无法自行更改 GID,并且任何更改只有在您注销并登录后才会生效,因此进程login
将使用新的 GID 启动您的终端。