Linux
重新進入 PID 1 命名空間
我正在嘗試輸入具有 PID 1 的程序的 PID 名稱空間是從使用
CLONE_NEWPID
. 我不斷收到Invalid argument
錯誤。換句話說,我複製了一個帶有
clone()
和CLONE_NEWPID
標誌的子程序。在子程序中之後,我打開/proc/1/ns/pid
讀取並嘗試setns()
使用上面打開的描述符執行。setns()
失敗Invalid argument
。完整程式碼:https ://gist.github.com/k-popov/ef87076785d8264ac66f
這是阻止進入 PID 1 的命名空間或父命名空間的某種(安全性?)機制。我知道使用者命名空間有一個,但是 PID 一個呢?
這是一項安全功能,在PID 名稱空間手冊頁中進行了描述。
雖然程序可以自由地下降到子 PID 名稱空間(例如,使用帶有 CLONE_NEWPID 的 setns(2)),但它們可能不會朝另一個方向移動。也就是說,程序可能不會進入任何祖先命名空間(父、祖父等)。更改 PID 命名空間是一種單向操作。