PID Namespace
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
PID(プロセス識別子)名前空間は、Linuxカーネルの機能であり、プロセスの隔離を提供します。これにより、一群のプロセスが他の名前空間のPIDとは別の一意のPIDのセットを持つことができます。これは、プロセスの隔離がセキュリティとリソース管理に不可欠なコンテナ化に特に役立ちます。
新しいPID名前空間が作成されると、その名前空間内の最初のプロセスにはPID 1が割り当てられます。このプロセスは新しい名前空間の「init」プロセスとなり、その名前空間内の他のプロセスを管理する責任を負います。名前空間内で作成される各後続プロセスは、その名前空間内で一意のPIDを持ち、これらのPIDは他の名前空間のPIDとは独立しています。
PID名前空間内のプロセスの視点から見ると、同じ名前空間内の他のプロセスのみを見ることができます。他の名前空間のプロセスには気づかず、従来のプロセス管理ツール(例:kill
、wait
など)を使用して相互作用することはできません。これにより、プロセスが互いに干渉するのを防ぐための隔離レベルが提供されます。
新しいプロセスが作成されると(例:clone()
システムコールを使用して)、そのプロセスは新しいまたは既存のPID名前空間に割り当てられます。新しい名前空間が作成されると、そのプロセスはその名前空間の「init」プロセスになります。
カーネルは、新しい名前空間内のPIDと親名前空間内の対応するPIDとのマッピングを維持します(つまり、新しい名前空間が作成された親名前空間)。このマッピングは、カーネルが必要に応じてPIDを変換できるようにします。たとえば、異なる名前空間のプロセス間で信号を送信する際などです。
PID名前空間内のプロセスは、同じ名前空間内の他のプロセスのみを見ることができ、相互作用できます。彼らは他の名前空間のプロセスに気づかず、彼らのPIDはその名前空間内で一意です。
PID名前空間が破棄されると(例:名前空間の「init」プロセスが終了すると)、その名前空間内のすべてのプロセスが終了します。これにより、名前空間に関連するすべてのリソースが適切にクリーンアップされます。
新しいインスタンスの/proc
ファイルシステムをマウントすることで、--mount-proc
パラメータを使用すると、新しいマウント名前空間がその名前空間に特有のプロセス情報の正確で孤立したビューを持つことが保証されます。
初期(デフォルト)PID名前空間からのrootユーザーは、すべてのプロセスを見ることができ、新しいPID名前空間内のプロセスも含まれます。これが、すべてのPID名前空間を見ることができる理由です。
PID名前空間からデフォルト名前空間に入ると、すべてのプロセスを見ることができます。そして、そのPID nsのプロセスはPID ns上の新しいbashを見ることができます。
また、あなたがrootでない限り、他のプロセスのPID名前空間に入ることはできません。そして、それにポイントするディスクリプタなしで他の名前空間に 入ることはできません(例えば、/proc/self/ns/pid
のように)。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)