Linux unshare命名的一些例子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i042416/article/details/85050556

首先使用man查看unshare帮助:

clipboard1

run program with some namespaces unshared from parent

看下这几个参数的功能。

–fork:
执行unshare的进程fork一个新的子进程,在子进程里执行unshare传入的参数

clipboard2

–pid:

不从父进程继承pid命名空间。也就是说,在子进程内执行ps,无法看到父进程原有的进程。

clipboard3

–mount-proc: 这个先不解释。

clipboard4

执行命令:
sudo unshare --fork --pid --mount-proc bash

注意到share提示符从vagrant变成了root。

clipboard5

此时在生成的子进程里,whoami返回root。

clipboard6

从父进程的命令ps -ejf不能看出这个父子进程关系:

clipboard7

因为子进程已经隔离了pid namespace,所以子进程的ps 无法看到父进程里能看到的那些进程列表。

clipboard8

最后来看–mount-proc:

这个选项能确保创建了 PID 和 Mount namespace 后,自动挂载 /proc 文件系统,无需我们手动执行 mount -t proc proc /proc 命令。

父进程10945对应的/proc/10945:

clipboard9

子进程的/proc文件夹下面,看不到父进程pid对应的文件夹:

clipboard10

这个unshare也是Linux容器工作的基础之一。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/85050556