Mount Namespace
Podstawowe informacje
Mount namespace to funkcja jądra Linux, która zapewnia izolację punktów montowania systemu plików widocznych dla grupy procesów. Każdy mount namespace ma swój własny zestaw punktów montowania systemu plików, a zmiany w punktach montowania w jednym namespace nie wpływają na inne namespace. Oznacza to, że procesy działające w różnych mount namespaces mogą mieć różne widoki hierarchii systemu plików.
Mount namespaces są szczególnie przydatne w konteneryzacji, gdzie każdy kontener powinien mieć swój własny system plików i konfigurację, izolowaną od innych kontenerów i systemu gospodarza.
Jak to działa:
Gdy nowy mount namespace jest tworzony, jest inicjowany kopią punktów montowania z jego nadrzędnego namespace. Oznacza to, że w momencie utworzenia nowy namespace dzieli ten sam widok systemu plików co jego nadrzędny. Jednak wszelkie późniejsze zmiany w punktach montowania w obrębie namespace nie wpłyną na nadrzędny ani inne namespaces.
Gdy proces modyfikuje punkt montowania w swoim namespace, na przykład montując lub odmontowując system plików, zmiana jest lokalna dla tego namespace i nie wpływa na inne namespaces. Umożliwia to każdemu namespace posiadanie własnej niezależnej hierarchii systemu plików.
Procesy mogą przechodzić między namespaces za pomocą wywołania systemowego
setns()
, lub tworzyć nowe namespaces za pomocą wywołań systemowychunshare()
lubclone()
z flagąCLONE_NEWNS
. Gdy proces przechodzi do nowego namespace lub go tworzy, zacznie używać punktów montowania związanych z tym namespace.Deskryptory plików i inody są współdzielone między namespaces, co oznacza, że jeśli proces w jednym namespace ma otwarty deskryptor pliku wskazujący na plik, może przekazać ten deskryptor pliku do procesu w innym namespace, a oba procesy będą miały dostęp do tego samego pliku. Jednak ścieżka pliku może nie być taka sama w obu namespaces z powodu różnic w punktach montowania.
Laboratorium:
Utwórz różne namespaces
CLI
Mountując nową instancję systemu plików /proc
, używając parametru --mount-proc
, zapewniasz, że nowa przestrzeń montowania ma dokładny i izolowany widok informacji o procesach specyficznych dla tej przestrzeni.
Docker
Sprawdź, w jakiej przestrzeni nazw znajduje się twój proces
Znajdź wszystkie przestrzenie montowania
Wejście do przestrzeni nazw montowania
Również, możesz wejść do innej przestrzeni procesów tylko jeśli jesteś root. I nie możesz wejść do innej przestrzeni bez deskryptora wskazującego na nią (jak /proc/self/ns/mnt
).
Ponieważ nowe montaże są dostępne tylko w obrębie przestrzeni, możliwe jest, że przestrzeń zawiera wrażliwe informacje, które mogą być dostępne tylko z niej.
Zamontuj coś
Odniesienia
Last updated