为什么 LXC 需要重启?

为什么 LXC 需要重启?

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 启动您的终端。

相关内容