PID名前空間を入力しようとしていますが、PID 1を持つプロセスを使用して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 1はどうですか?
答え1
これはセキュリティ機能です。PIDネームスペースのマニュアルページ。
プロセスは自由に子PID名前空間に入ることができますが(たとえば、CLONE_NEWPIDでsetns(2)を使用するなど)、他の方向に移動することはできません。つまり、プロセスは親名前空間(親、祖父母など)に入ることはできません。 PID名前空間の変更は一方向の操作です。