CentOS 7 启用 user namespaces(用户命名空间)

在 CentOS 内核 3.8 或更高版本中,添加了 user namespaces (户名命名空间)功能。但是,该功能默认情况下是禁用的,原因是 Red Hat 希望该功能在社区中孵化更长时间,以确保该功能的稳定性和安全性。目前越来越多的软件开始涉及该功能,例如 Docker 等。

配置 CentOS 7 系统启用 user namespaces :

注意:以下操作均在 root 用户下完成,或者你的超级用户。

查看系统内核版本:

  1. [root@node03 ~]# uname -r
  2. 3.10.0-1062.el7.x86_64

临时配置,重启会失效,可用作临时验证:

  1. # 查看系统 user namespaces 最大为 0
  2. [root@node03 ~]# cat /proc/sys/user/max_user_namespaces
  3. 0
  4. # 临时开启 user namespace ,向文件内写入一个整数。
  5. [root@node03 ~]# echo 10000 > /proc/sys/user/max_user_namespaces

永久配置,设置 CentOS 7 的 kernel 开启 user namespace ,默认情况下是禁用的。并且,写入/etc/sysctl.conf配置user.max_user_namespaces=10000,最后重启系统。

  1. # kernel 设置
  2. [root@node03 ~]# grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
  3. # 写入配置文件
  4. [root@node03 ~]# echo "user.max_user_namespaces=10000" >> /etc/sysctl.conf
  5. # 重启
  6. [root@node03 ~]# reboot

如需关闭 user namespace ,使用如下命令:

  1. grubby --remove-args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"

参考资料