如何检查当前操作系统内核是否支持Linux用户名空间

经过一番阅读后,我发现Linux版本> = 3.8的Linux用户名空间通常是支持的。 但是,在给定的操作系统上可能会禁用用户命名空间,从而使内核版本的检查不可靠。 有没有一种可靠的方法来检查我目前使用的操作系统是否支持用户命名空间并且可以使用?

有两个地方可以检查你的内核是否支持用户命名空间:

  1. /boot/config-* 。 (找出你实际使用的是哪一个uname -a
  2. /proc/config.gz

在这两个文件中查找CONFIG_USER_NS 。 如果它读取CONFIG_USER_NS=y那么你是黄金。 如果没有,那么你即将编译一个新的内核。

假如你正在运行bash(你可以通过运行echo $0来检查,预期的结果是-bash )。 然后你可以运行下面的一个班轮:

 if [[ `sudo cat /boot/config-$(uname -a | awk '{print $3}') |grep '^CONFIG_USER_NS'` == "CONFIG_USER_NS=y" ]]; then echo "You have support for User Namespaces"; else echo "Sorry, you don't have support for User Namespaces"; fi 

你可以检查你的当前进程' /proc/[pid]/ns/目录是否有一个名为user的文件:

 ls /proc/self/ns