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)
Namespace PID (Process IDentifier) to funkcja w jądrze Linux, która zapewnia izolację procesów, umożliwiając grupie procesów posiadanie własnego zestawu unikalnych PID-ów, oddzielnych od PID-ów w innych namespace'ach. Jest to szczególnie przydatne w konteneryzacji, gdzie izolacja procesów jest niezbędna dla bezpieczeństwa i zarządzania zasobami.
Gdy tworzony jest nowy namespace PID, pierwszy proces w tym namespace otrzymuje PID 1. Ten proces staje się procesem "init" nowego namespace i jest odpowiedzialny za zarządzanie innymi procesami w tym namespace. Każdy kolejny proces utworzony w namespace będzie miał unikalny PID w tym namespace, a te PID-y będą niezależne od PID-ów w innych namespace'ach.
Z perspektywy procesu w namespace PID, może on widzieć tylko inne procesy w tym samym namespace. Nie jest świadomy procesów w innych namespace'ach i nie może z nimi interagować za pomocą tradycyjnych narzędzi do zarządzania procesami (np. kill
, wait
itp.). Zapewnia to poziom izolacji, który pomaga zapobiegać zakłóceniom między procesami.
Gdy tworzony jest nowy proces (np. za pomocą wywołania systemowego clone()
), proces może być przypisany do nowego lub istniejącego namespace PID. Jeśli tworzony jest nowy namespace, proces staje się procesem "init" tego namespace.
Jądro utrzymuje mapowanie między PID-ami w nowym namespace a odpowiadającymi PID-ami w namespace nadrzędnym (tj. namespace, z którego utworzono nowy namespace). To mapowanie umożliwia jądru tłumaczenie PID-ów w razie potrzeby, na przykład podczas wysyłania sygnałów między procesami w różnych namespace'ach.
Procesy w namespace PID mogą widzieć i interagować tylko z innymi procesami w tym samym namespace. Nie są świadome procesów w innych namespace'ach, a ich PID-y są unikalne w ich namespace.
Gdy namespace PID jest niszczony (np. gdy proces "init" namespace kończy działanie), wszystkie procesy w tym namespace są kończone. Zapewnia to, że wszystkie zasoby związane z namespace są odpowiednio sprzątane.
Montaż nowej instancji systemu plików /proc
, jeśli użyjesz parametru --mount-proc
, zapewnia, że nowa przestrzeń nazw montowania ma dokładny i izolowany widok informacji o procesach specyficznych dla tej przestrzeni nazw.
Zauważ, że użytkownik root z początkowej (domyślnej) przestrzeni nazw PID może widzieć wszystkie procesy, nawet te w nowych przestrzeniach nazw PID, dlatego możemy zobaczyć wszystkie przestrzenie nazw PID.
Kiedy wejdziesz do przestrzeni nazw PID z domyślnej przestrzeni nazw, nadal będziesz mógł zobaczyć wszystkie procesy. A proces z tej przestrzeni nazw PID będzie mógł zobaczyć nowego basha w przestrzeni nazw PID.
Również możesz wejść do innej przestrzeni nazw PID procesu tylko jeśli jesteś rootem. I nie możesz wejść do innej przestrzeni nazw bez deskryptora wskazującego na nią (jak /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)