IPC Namespace
Podstawowe informacje
Przestrzeń nazw IPC (Inter-Process Communication) to funkcja jądra Linux, która zapewnia izolację obiektów IPC System V, takich jak kolejki komunikatów, segmenty pamięci współdzielonej i semafory. Ta izolacja zapewnia, że procesy w różnych przestrzeniach nazw IPC nie mogą bezpośrednio uzyskiwać dostępu ani modyfikować obiektów IPC innych procesów, zapewniając dodatkową warstwę bezpieczeństwa i prywatności między grupami procesów.
Jak to działa:
Po utworzeniu nowej przestrzeni nazw IPC, zaczyna ona działać z całkowicie izolowanym zestawem obiektów IPC System V. Oznacza to, że procesy działające w nowej przestrzeni nazw IPC domyślnie nie mogą uzyskać dostępu ani ingerować w obiekty IPC w innych przestrzeniach nazw ani w systemie gospodarza.
Obiekty IPC utworzone w ramach przestrzeni nazw są widoczne i dostępne tylko dla procesów w tej przestrzeni nazw. Każdy obiekt IPC jest identyfikowany przez unikalny klucz w ramach swojej przestrzeni nazw. Chociaż klucz może być identyczny w różnych przestrzeniach nazw, same obiekty są izolowane i nie można uzyskać do nich dostępu między przestrzeniami nazw.
Procesy mogą przenosić się między przestrzeniami nazw za pomocą wywołania systemowego
setns()
lub tworzyć nowe przestrzenie nazw za pomocą wywołań systemowychunshare()
lubclone()
z flagąCLONE_NEWIPC
. Gdy proces przenosi się do nowej przestrzeni nazw lub tworzy ją, zaczyna korzystać z obiektów IPC powiązanych z tą przestrzenią nazw.
Laboratorium:
Utwórz różne przestrzenie nazw
CLI
Montując nową instancję systemu plików /proc
przy użyciu parametru --mount-proc
, zapewniasz, że nowa przestrzeń montowania ma dokładny i izolowany widok informacji o procesach specyficznych dla tej przestrzeni.
Docker
Sprawdź, w jakim przestrzeni nazw znajduje się Twój proces
Aby sprawdzić, w jakiej przestrzeni nazw znajduje się Twój proces, wykonaj poniższą komendę:
Gdzie $$
oznacza identyfikator bieżącego procesu.
Znajdź wszystkie przestrzenie nazw IPC
```bash nsenter -i TARGET_PID --pid /bin/bash ``` ### Tworzenie obiektu IPC
Aby utworzyć obiekt IPC, możemy użyć polecenia ipcmk
. Polecenie to tworzy nowy obiekt IPC i zwraca jego identyfikator. Na przykład, aby utworzyć nowy semafor, możemy użyć następującego polecenia:
Polecenie to utworzy nowy semafor i zwróci jego identyfikator. Możemy również użyć innych opcji, takich jak -M
dla pamięci współdzielonej lub -Q
dla kolejki komunikatów, aby utworzyć inne rodzaje obiektów IPC.
Usuwanie IPC object
Aby usunąć obiekt IPC, możemy użyć polecenia ipcrm
. Polecenie to usuwa obiekt IPC na podstawie jego identyfikatora. Na przykład, aby usunąć semafor o identyfikatorze 12345, możemy użyć następującego polecenia:
Polecenie to usunie semafor o identyfikatorze 12345. Możemy również użyć innych opcji, takich jak -m
dla pamięci współdzielonej lub -q
dla kolejki komunikatów, aby usunąć inne rodzaje obiektów IPC.
Podsumowanie
Tworzenie i usuwanie obiektów IPC jest możliwe tylko w przestrzeni nazw procesu, a nie w przestrzeni nazw IPC. Aby wejść do innej przestrzeni nazw procesu, musimy być rootem i musimy mieć deskryptor wskazujący na tę przestrzeń nazw.
Odwołania
Last updated