.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2013, 2016, 2017 by Michael Kerrisk .\" and Copyright (c) 2012 by Eric W. Biederman .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH namespaces 7 "31 października 2023 r." "Linux man\-pages 6.06" .SH NAZWA namespaces \- przegląd linuksowych przestrzeni nazw .SH OPIS Przestrzeń nazw opakowuje globalny zasób systemowy w warstwie abstrakcji tak, że dla procesów w niej występujących, wygląda to jakby miały własne, izolowane wystąpienie tego zasobu. Zmiany globalnego zasobu są widoczne dla innych członków tej przestrzeni nazw, ale są niewidoczne dla innych procesów. Jednym z zastosowań przestrzeni nazw są kontenery. .P .\" Niniejsza strona podręcznika zawiera odsyłacze do informacji o różnych typach przestrzeni nazw, opisuje powiązane pliki \fI/proc\fP i podsumowuje API służące do pracy z przestrzeniami nazw. .SS "Typy przestrzeni nazw" Poniższa tabela ukazuje dostępne w Linuksie typy przestrzeni nazw. Druga kolumna tabeli zawiera wartości znaczników używanych do określenia typu przestrzeni nazw w różnych API. Trzecia kolumna identyfikuje stronę podręcznika systemowego ze szczegółowym opisem danego typu przestrzeni nazw. Ostatnia kolumna podsumowuje zasoby, które są izolowane danym typem przestrzeni nazw. .TS lB lB lB lB l1 lB1 l1 l. Prz. nazw Znacznik Podręcznik Izoluje Cgroup CLONE_NEWCGROUP \fBcgroup_namespaces\fP(7) T{ Główny katalog cgroup T} IPC CLONE_NEWIPC \fBipc_namespaces\fP(7) T{ IPC Systemu V, kolejki komunikatów POSIX T} Sieci CLONE_NEWNET \fBnetwork_namespaces\fP(7) T{ Urządzenia sieciowe, stosy, porty itp. T} Montowania CLONE_NEWNS \fBmount_namespaces\fP(7) Punkty montowania PID CLONE_NEWPID \fBpid_namespaces\fP(7) Identyfikatory procesów Czasu CLONE_NEWTIME \fBtime_namespaces\fP(7) T{ Zegary rozruchu i monotoniczne T} Użytkownika CLONE_NEWUSER \fBuser_namespaces\fP(7) T{ ID użytkownika i grupy T} UTS CLONE_NEWUTS \fButs_namespaces\fP(7) T{ Nazwę stacji i nazwę domeny NIS T} .TE .\" .\" ==================== The namespaces API ==================== .\" .SS "API przestrzeni nazw" Oprócz różnych plików \fI/proc\fP opisanych poniżej, API przestrzeni nazw obejmuje następujące wywołania systemowe: .TP \fBclone\fP(2) Wywołanie systemowe \fBclone\fP(2) tworzy nowy proces. Jeśli argument \fIflags\fP wywołania określa jeden lub więcej ze znaczników \fBCLONE_NEW*\fP wypisanych wyżej, to dla każdego znacznika tworzona jest nowa przestrzeń nazw, a proces potomny staje się ich członkiem (to wywołanie implementuje również wiele funkcji niezwiązanych z przestrzeniami nazw). .TP \fBsetns\fP(2) Wywołanie systemowe \fBsetns\fP(2) pozwala na dołączenie procesu wywołującego do istniejącej przestrzeni nazw. Podaje się ją za pomocą deskryptora pliku, odnoszącego się do jednego z plików \fI/proc/\fPpid\fI/ns\fP opisanych poniżej. .TP \fBunshare\fP(2) Wywołanie systemowe \fBunshare\fP(2) przenosi proces wywołujący do nowej przestrzeni nazw. Jeśli argument \fIflags\fP wywołania określa jeden lub więcej ze znaczników \fBCLONE_NEW*\fP wypisanych wyżej, to dla każdego znacznika tworzona jest nowa przestrzeń nazw, a proces wywołujący staje się ich członkiem (to wywołanie implementuje również wiele funkcji niezwiązanych z przestrzeniami nazw). .TP \fBioctl\fP(2) Różne operacje \fBioctl\fP(2) służą do pozyskiwania informacji o przestrzeniach nazw. Są opisane w podręczniku systemowym \fBioctl_ns\fP(2). .P .\" .\" ==================== The /proc/[pid]/ns/ directory ==================== .\" Utworzenie nowej przestrzeni nazw za pomocą \fBclone\fP(2) i \fBunshare\fP(2), w większości sytuacji wymaga przywileju (ang. capability) \fBCAP_SYS_ADMIN\fP, ponieważ w nowej przestrzeni nazw, twórca ma prawo zmiany globalnych zasobów widocznych dla innych procesów, które są w niej później tworzone albo do niej dołączają. Wyjątkiem są przestrzenie nazw użytkownika: od Linuksa 3.8 nie są wymagane przywileje do utworzenia przestrzeni nazw użytkownika. .SS "Katalog \fI/proc/\fPpid\fI/ns/\fP" .\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f Każdy proces posiada podkatalog \fI/proc/\fPpid\fI/ns/\fP zawierający po jednym wpisie dla każdej przestrzeni nazw, obsługującej zmienianie przez \fBsetns\fP(2): .P .in +4n .EX $ \fBls \-l /proc/$$/ns | awk \[aq]{print $1, $9, $10, $11}\[aq]\fP total 0 lrwxrwxrwx. cgroup \-> cgroup:[4026531835] lrwxrwxrwx. ipc \-> ipc:[4026531839] lrwxrwxrwx. mnt \-> mnt:[4026531840] lrwxrwxrwx. net \-> net:[4026531969] lrwxrwxrwx. pid \-> pid:[4026531836] lrwxrwxrwx. pid_for_children \-> pid:[4026531834] lrwxrwxrwx. time \-> time:[4026531834] lrwxrwxrwx. time_for_children \-> time:[4026531834] lrwxrwxrwx. user \-> user:[4026531837] lrwxrwxrwx. uts \-> uts:[4026531838] .EE .in .P Zamontowanie przez podpięcie (ang. bind; zob. \fBmount\fP(2)) jednego z plików w tym katalogu, w inne miejsce systemu plików, utrzymuje istnienie odpowiadającej przestrzeni nazw procesu, określonego przez \fIpid\fP, nawet gdy zakończą się wszystkie procesy istniejące obecnie w tej przestrzeni. .P Otwarcie jednego z plików w tym katalogu (lub pliku zamontowanego przed podpięcie do jednego z tych plików), zwraca deskryptor pliku odpowiadającej przestrzeni nazw procesu, określonego przez \fIpid\fP. Tak długo, jak ten deskryptor pliku pozostaje otwarty, przestrzeń nazw będzie istniała, nawet gdy zakończą się wszystkie procesy istniejące obecnie w tej przestrzeni. Deskryptor pliku można przekazać do \fBsetns\fP(2). .P .\" commit bf056bfa80596a5d14b26b17276a56a0dcb080e5 .\" Eric Biederman: "I reserve the right for st_dev to be significant .\" when comparing namespaces." .\" https://lore.kernel.org/lkml/87poky5ca9.fsf@xmission.com/ .\" Re: Documenting the ioctl interfaces to discover relationships... .\" Date: Mon, 12 Dec 2016 11:30:38 +1300 W Linuksie 3.7 i wcześniejszych, pliki te były widoczne jako dowiązania zwykłe (stałe). Od Linuksa 3.8 są widoczne jako dowiązania symboliczne. Jeśli występują dwa procesy w tej samej przestrzeni nazw, to identyfikatory urządzeń i numery i\-węzłów ich dowiązań symbolicznych \fI/proc/\fPpid\fI/ns/\fPxxx będą takie same; aplikacje mogą to sprawdzić za pomocą pól \fIstat.st_dev\fP i \fIstat.st_ino\fP zwracanych przez \fBstat\fP(2). Zawartością dowiązania symbolicznego jest łańcuch zawierający typ przestrzeni nazw i numer i\-węzła, jak w poniższym przykładzie: .P .in +4n .EX $ \fBreadlink /proc/$$/ns/uts\fP uts:[4026531838] .EE .in .P W tym podkatalogu występują następujące dowiązania symboliczne .TP \fI/proc/\fPpid\fI/ns/cgroup\fP (od Linuksa 4.6) Plik stanowi uchwyt do przestrzeni nazw cgroup procesu. .TP \fI/proc/\fPpid\fI/ns/ipc\fP (od Linuksa 3.0) Plik stanowi uchwyt do przestrzeni nazw IPC procesu. .TP \fI/proc/\fPpid\fI/ns/mnt\fP (since Linux 3.8) .\" commit 8823c079ba7136dc1948d6f6dcb5f8022bde438e Plik stanowi uchwyt do przestrzeni nazw montowania procesu. .TP \fI/proc/\fPpid\fI/ns/net\fP (od Linuksa 3.0) Plik stanowi uchwyt do przestrzeni nazw sieci procesu. .TP \fI/proc/\fPpid\fI/ns/pid\fP (od Linuksa 3.8) .\" commit 57e8391d327609cbf12d843259c968b9e5c1838f Plik stanowi uchwyt do przestrzeni nazw PID procesu. Uchwyt ten jest stały w trakcie istnienia procesu (tj. członkowstwo w przestrzeni nazw PID nigdy się nie zmienia). .TP \fI/proc/\fPpid\fI/ns/pid_for_children\fP (od Linuksa 4.12) .\" commit eaa0d190bfe1ed891b814a52712dcd852554cb08 Plik stanowi uchwyt do przestrzeni nazw PID procesu potomnego utworzonego przez ten proces. Może ulec zmianie jako wynik wywołań do \fBunshare\fP(2) i \fBsetns\fP(2) (zob. \fBpid_namespaces\fP(7)), tak więc plik może się różnić od \fI/proc/\fPpid\fI/ns/pid\fP. To dowiązanie symboliczne zyskuje wartość dopiero po utworzeniu pierwszego procesu potomnego w tej przestrzeni nazw (wcześniej, \fBreadlink\fP(2) odnoszące się do dowiązania symbolicznego, zwróci pusty bufor). .TP \fI/proc/\fPpid\fI/ns/time\fP (od Linuksa 5.6) Plik stanowi uchwyt do przestrzeni nazw czasu procesu. .TP \fI/proc/\fPpid\fI/ns/time_for_children\fP (od Linuksa 5.6) Plik stanowi uchwyt do przestrzeni nazw czasu procesu potomnego utworzonego przez ten proces. Może ulec zmianie jako wynik wywołań do \fBunshare\fP(2) i \fBsetns\fP(2) (zob. \fBtime_namespaces\fP(7)), tak więc plik może się różnić od \fI/proc/\fPpid\fI/ns/pid\fP. .TP \fI/proc/\fPpid\fI/ns/user\fP (od Linuksa 3.8) .\" commit cde1975bc242f3e1072bde623ef378e547b73f91 Plik stanowi uchwyt do przestrzeni nazw użytkownika procesu. .TP \fI/proc/\fPpid\fI/ns/uts\fP (od Linuksa 3.0) Plik stanowi uchwyt do przestrzeni nazw UTS procesu .P .\" .\" ==================== The /proc/sys/user directory ==================== .\" Uprawnieniem do rozwiązywania lub odczytywania (\fBreadlink\fP(2)) tych dowiązań symbolicznych zarządza sprawdzenie \fBPTRACE_MODE_READ_FSCREDS\fP trybu dostępu ptrace; zob. \fBptrace\fP(2). .SS "Katalog \fI/proc/sys/user\fP" Pliki w katalogu \fI/proc/sys/user\fP (obecnego od Linuksa 4.9) ujawniają limity liczby przestrzeni nazw poszczególnych typów, jakie można utworzyć. Występują następujące pliki: .TP \fImax_cgroup_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw cgroup na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_ipc_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw ipc na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_mnt_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw montowania na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_net_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw sieci na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_pid_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw PID na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_time_namespaces\fP (od Linuksa 5.7) .\" commit eeec26d5da8248ea4e240b8795bb4364213d3247 Wartość w pliku określa limit liczby przestrzeni nazw czasu na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_user_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw użytkownika na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .TP \fImax_uts_namespaces\fP Wartość w pliku określa limit liczby przestrzeni nazw uts na jednego użytkownika, jakie można utworzyć w przestrzeni nazw użytkownika. .P W odniesieniu do tych plików, proszę zauważyć co następuje: .IP \[bu] 3 Wartości w plikach są modyfikowalne przez procesy uprzywilejowane. .IP \[bu] Wartości ujawnione w plikach są limitami dla przestrzeni nazw użytkownika, w której występuje otwierający proces. .IP \[bu] Limity odnoszą się do jednego użytkownika. Każdy użytkownik w tej samej przestrzeni nazw użytkownika może utworzyć do określonej limitem liczby przestrzeni nazw. .IP \[bu] Limity stosują się do wszystkich użytkowników, w tym tego o UID 0. .IP \[bu] Limity stosuje się nienaruszając innych limitów występujących na przestrzeń nazw (takich jak limity przestrzeni nazw PID i użytkownika). .IP \[bu] Po wyczerpaniu limitów, \fBclone\fP(2) i \fBunshare\fP(2) zawiodą z błędem \fBENOSPC\fP. .IP \[bu] W przypadku pierwotnej przestrzeni nazw użytkownika, domyślną wartością w każdym z plików jest połowa limitu liczby wątków możliwych do utworzenia (\fI/proc/sys/kernel/threads\-max\fP). We wszystkich potomnych przestrzeniach nazw użytkownika, domyślną wartością w każdym z plików jest \fBMAXINT\fP. .IP \[bu] Gdy tworzona jest przestrzeń nazw, obiekt liczony jest również wobec przestrzeni nazw rodzica. Precyzyjniej: .RS .IP \[bu] 3 Każda przestrzeń użytkownika ma UID twórcy. .IP \[bu] Gdy tworzona jest przestrzeń nazw, jest liczona wobec UID\-ów twórcy w każdej z przestrzeni nazw użytkownika rodzica, a jądro upewnia się, że odpowiedni limit przestrzeni nazw dla UID\-u twórcy, w przestrzeni nazw rodzica, nie jest przekroczony. .IP \[bu] Wyżej wymieniony punkt zapewnia, że utworzenie nowej przestrzeni nazw użytkownika, nie może służyć jako sposób ominięcia limitów, obowiązujących dla bieżącej przestrzeni nazw użytkownika. .RE .\" .SS "Istnienie przestrzeni nazw" Jeśli nie występują inne czynniki, przestrzeń nazw jest automatycznie likwidowana, gdy ostatni proces w przestrzeni nazw kończy się lub opuszcza przestrzeń nazw. Jednak istnieje również szereg innych czynników, które mogą utworzyć przestrzeń nazw, nawet gdy nie ma ona procesów członkowskich. Są to m.in.: .IP \[bu] 3 Istnieje montowanie przez podpięcie lub otwarty deskryptor pliku do odpowiadającego pliku \fI/proc/\fPpid\fI/ns/*\fP. .IP \[bu] Przestrzeń nazw jest hierarchiczna (tzn. jest to przestrzeń nazw PID lub użytkownika) i posiada potomną przestrzeń nazw. .IP \[bu] Jest to przestrzeń nazw użytkownika, posiadająca jedną lub więcej przestrzeni nazw, niebędącymi przestrzeniami nazw użytkownika. .IP \[bu] Jest to przestrzeń nazw PID i występuje proces odnoszący się do tej przestrzeni nazw, za pomocą dowiązania symbolicznego \fI/proc/\fPpid\fI/ns/pid_for_children\fP. .IP \[bu] Jest to przestrzeń nazw czasu i występuje proces odnoszący się do tej przestrzeni nazw, za pomocą dowiązania symbolicznego \fI/proc/\fPpid\fI/ns/time_for_children\fP. .IP \[bu] Jest to przestrzeń nazw IPC i występuje odpowiednie montowanie systemu plików \fImqueue\fP (zob. \fBmq_overview\fP(7)), odnoszące się do tej przestrzeni nazw. .IP \[bu] Jest to przestrzeń nazw PID i występuje odpowiednie montowanie systemu plików \fBproc\fP(5), odnoszące się do tej przestrzeni nazw. .SH PRZYKŁADY Zob. \fBclone\fP(2) i \fBuser_namespaces\fP(7). .SH "ZOBACZ TAKŻE" \fBnsenter\fP(1), \fBreadlink\fP(1), \fBunshare\fP(1), \fBclone\fP(2), \fBioctl_ns\fP(2), \fBsetns\fP(2), \fBunshare\fP(2), \fBproc\fP(5), \fBcapabilities\fP(7), \fBcgroup_namespaces\fP(7), \fBcgroups\fP(7), \fBcredentials\fP(7), \fBipc_namespaces\fP(7), \fBnetwork_namespaces\fP(7), \fBpid_namespaces\fP(7), \fBuser_namespaces\fP(7), \fButs_namespaces\fP(7), \fBlsns\fP(8), \fBswitch_root\fP(8) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .