详解Linux Namespace之User

2019-01-16 21:22:18王冬梅

User namespace 与其它 namespace 的关系

Linux 下的每个 namespace,都有一个 user namespace 与之关联,这个 user namespace 就是创建相应 namespace 时进程所属的 user namespace,相当于每个 namespace 都有一个 owner(user namespace),这样保证对任何 namespace 的操作都受到 user namespace 权限的控制。这也是为什么在子 user namespace 中设置 hostname 失败的原因,因为要修改的 uts namespace 属于的父 user namespace,而新 user namespace 的进程没有老 user namespace 的任何 capabilities。

以 uts namespace 为例,在 uts_namespace 的结构体中有一个指向 user namespace 的指针,指向它所属的 user namespace(笔者查看的 v4.13内核,uts_namespace 结构体的定义在 /include/linux/utsname.h 文件中):

其它 namespace 的定义也是类似的。

总结

相对其它的 namespace 而言,user namespace 稍显复杂。这是由其功能决定的,涉及到权限管理的内容时,事情往往会变得不那么直观。笔者在本文中也只是介绍了 user namespace 的基本概念,更多丰富有趣的内容还有待大家自行发掘。

参考:

user namespace man page
Namespaces in operation, part 5: User namespaces
Namespaces in operation, part 6: more on user namespaces
Linux capabilities

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。

您可能感兴趣的文章:

Docker基础知识之Linux namespace图文详解