6.2.2. 用户命名空间
非特权容器允许用户在没有任何 root 权限的情况下创建和管理容器。 支持此功能的功能称为用户命名空间。 用户命名空间是分层的,父命名空间中的特权任务能够将其 id 映射到子命名空间。 默认情况下,主机上的每个任务都在初始用户命名空间中运行,其中完整范围的 id 映射到完整范围。 这可以通过查看 /proc/self/uid_map 和 /proc/self/gid_map 看出,当从初始用户命名空间读取时,它们都将显示“0 0 4294967295”。 从 Ubuntu 14.04 开始,当创建新用户时,默认情况下会为他们提供一系列用户 ID。 分配的 id 列表可以在文件中看到 /etc/subuid 和 /etc/subgid 有关更多信息,请参阅它们各自的联机帮助页。 Subuids 和 subgids 按照惯例从 id 100000 开始,以避免与系统用户发生冲突。
如果用户是在较早版本上创建的,则可以使用以下命令为其授予一系列 id usermod命令, 如下:
sudo usermod -v 100000-200000 -w 100000-200000 user1
节目单 新用户界面 和 新地图 是 setuid-root 程序 映射表 包,lxc 在内部使用它们将 subuids 和 subgids 从主机映射到非特权容器。 它们确保用户只映射由主机配置授权的 ID。