次の2つの異なる名前空間に2つのプロセスを作成するとします。このLWN記事。
- 最初は、nsの内側のUID 0をnsの外側のUID 1000にマップします。
- 2 番目は、ns 内の UID 200 を ns 外の UID 1000 にマップします。
私はそれを視覚化するために次の図を思いつきました。
質問1:この数字は正しいですか?
Q2:ps
「User Namespace 2」で実行されているbashプロセスでコマンドを実行すると、UID 200で実行される「User Namespace 1」のbashプロセスが表示されるのはなぜですか?これがどのように機能するかについていくつかのアイデアがありますが、どこにも書かれているものが見つからず、この回避策の正確な手順を知りたいです。
ベストアンサー1
図1に記載されている内容がわからないので、正しいかどうかわかりません。ただし、質問2を説明できます。これが質問1にも答えになることを願っています。
「マッピング」とは、1対1の関係があることを意味します。ルートネームスペースの外部1000をネームスペース1の内部0にマップすると、これは2つの方法で機能します。つまり、内部0は外部1000です。名前空間2の場合も同様です。ここで、外部(ルート)1000は内部200です(内部200は外部1000です)。
したがって、ネームスペース1からuid = 0でプロセスを開始すると、外部(ルートネームスペース)のuidは1000です。名前空間2の内部を見ると、外部1000が内部200であることを覚えておいてください。それでは200ですね。
この情報は以下にあります。ユーザーネームスペースのマンページ、特にユーザーとグループのマッピングセクション効果がある