.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (c) 2013, 2016, 2017 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" and Copyright (c) 2012 by Eric W. Biederman <ebiederm@xmission.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH namespaces 7 "20 lipca 2023 r." "Linux man\-pages 6.05.01" 
.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.
.PP
.\"
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).
.PP
.\"
.\" ==================== 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):
.PP
.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
.PP
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.
.PP
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).
.PP
.\" 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:
.PP
.in +4n
.EX
$ \fBreadlink /proc/$$/ns/uts\fP
uts:[4026531838]
.EE
.in
.PP
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
.PP
.\"
.\" ==================== 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.
.PP
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 <michal.kulach@gmail.com>
.
.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 .
