天天看點

Linux unshare命名的一些例子

首先使用man檢視unshare幫助:

Linux unshare命名的一些例子

run program with some namespaces unshared from parent

看下這幾個參數的功能。

–fork:

執行unshare的程序fork一個新的子程序,在子程序裡執行unshare傳入的參數

Linux unshare命名的一些例子

–pid:

不從父程序繼承pid命名空間。也就是說,在子程序内執行ps,無法看到父程序原有的程序。

Linux unshare命名的一些例子

–mount-proc: 這個先不解釋。

Linux unshare命名的一些例子

執行指令:

sudo unshare --fork --pid --mount-proc bash

注意到share提示符從vagrant變成了root。

Linux unshare命名的一些例子

此時在生成的子程序裡,whoami傳回root。

Linux unshare命名的一些例子

從父程序的指令ps -ejf不能看出這個父子程序關系:

Linux unshare命名的一些例子

因為子程序已經隔離了pid namespace,是以子程序的ps 無法看到父程序裡能看到的那些程序清單。

Linux unshare命名的一些例子

最後來看–mount-proc:

這個選項能確定建立了 PID 和 Mount namespace 後,自動挂載 /proc 檔案系統,無需我們手動執行 mount -t proc proc /proc 指令。

父程序10945對應的/proc/10945:

Linux unshare命名的一些例子

子程序的/proc檔案夾下面,看不到父程序pid對應的檔案夾:

Linux unshare命名的一些例子

這個unshare也是

Linux

容器工作的基礎之一。

繼續閱讀