IPC Namespace
基本情報
IPC(Inter-Process Communication)名前空間は、Linuxカーネルの機能であり、メッセージキュー、共有メモリセグメント、セマフォなどのSystem V IPCオブジェクトを隔離する機能を提供します。この隔離により、異なるIPC名前空間内のプロセスはお互いのIPCオブジェクトに直接アクセスしたり変更したりすることができません。これにより、プロセスグループ間にセキュリティとプライバシーの追加のレイヤーが提供されます。
動作方法:
新しいIPC名前空間が作成されると、完全に隔離されたSystem V IPCオブジェクトのセットで開始されます。これは、新しいIPC名前空間で実行されるプロセスが、デフォルトで他の名前空間やホストシステムのIPCオブジェクトにアクセスしたり干渉したりすることができないことを意味します。
名前空間内で作成されたIPCオブジェクトは、その名前空間内のプロセスだけが見え、アクセスできます。各IPCオブジェクトは、その名前空間内で一意のキーで識別されます。キーは異なる名前空間で同一である場合がありますが、オブジェクト自体は隔離され、名前空間を超えてアクセスすることはできません。
プロセスは、
setns()
システムコールを使用して名前空間間を移動したり、unshare()
またはclone()
システムコールをCLONE_NEWIPC
フラグとともに使用して新しい名前空間を作成したりすることができます。プロセスが新しい名前空間に移動したり、新しい名前空間を作成したりすると、その名前空間に関連付けられたIPCオブジェクトを使用し始めます。
Lab:
異なる名前空間を作成する
CLI
マウントオプション--mount-proc
を使用して新しい/proc
ファイルシステムのインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報に正確で隔離されたビューを持つことが保証されます。
Docker
あなたのプロセスがどの名前空間にあるかを確認します
すべてのIPC名前空間を見つける
```bash nsenter -i TARGET_PID --pid /bin/bash ``` ### IPCオブジェクトの作成
別のプロセスの名前空間に入ることは、ルート権限でのみ可能です。また、他の名前空間に入るには、それを指すディスクリプタ(例:/proc/self/ns/net
)がないとできません。
参考文献
Last updated