'\" t
.\"     Title: unshare
.\"    Author: [see the "AUTHOR(S)" section]
.\" Generator: Asciidoctor 2.0.26
.\"      Date: 2026-09-02
.\"    Manual: Polecenia użytkownika
.\"    Source: util-linux 2.42.3
.\"  Language: English
.\"
.TH "UNSHARE" "1" "2026-09-02" "util\-linux 2.42.3" "Polecenia użytkownika"
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.ss \n[.ss] 0
.nh
.ad l
.de URL
\fI\\$2\fP <\\$1>\\$3
..
.als MTO URL
.if \n[.g] \{\
.  mso www.tmac
.  am URL
.    ad l
.  .
.  am MTO
.    ad l
.  .
.  LINKSTYLE blue R < >
.\}
.SH "NAZWA"
unshare \- uruchamia program w nowych przestrzeniach nazw
.SH "SKŁADNIA"
.sp
\fBunshare\fP [opcje] [\fIprogram\fP [\fIargumenty\fP]]
.SH "OPIS"
.sp
Polecenie \fBunshare\fP tworzy nowe przestrzenie nazw (podane opcjami wiersza poleceń opisanymi poniżej) i wykonuje podany \fIprogram\fP. Jeśli nie poda się \fIprogramu\fP, uruchamia powłokę "${SHELL}" (domyślnie: \fI/bin/sh\fP).
.sp
Domyślnie, przestrzenie nazw istnieją tylko tak długo, jak występujące w nich procesy. Można jednak utworzyć nową przestrzeń nazw jako trwałą, nawet gdy nie występują w niej procesy, poprzez zamontowanie przez podpięcie plików /proc/\fIpid\fP/ns/\fItyp\fP do ścieżki systemu plików. W przestrzeń nazw, którą utrwalono w ten sposób, można później wejść za pomocą \fBnsenter\fP(1) nawet po zakończeniu \fIprogramu\fP (z wyjątkiem przestrzeni nazw PID, gdzie wymagany jest trwale działający proces init). Gdy trwała przestrzeń nazw nie jest już dłużej potrzebna, można zdjąć przymiot trwałości, usuwając montowanie przez podpięcie, programem \fBumount\fP(8). Więcej szczegółów w rozdziale \fBPRZYKŁADY\fP.
.sp
Polecenie \fBunshare\fP od wersji 2.36 util\-linux korzysta z plików \fI/proc/[pid]/ns/pid_for_children\fP oraz \fI/proc/[pid]/ns/time_for_children\fP do przestrzeni nazw PID i czasu. Zmiana ta wymaga Linuksa 4.17 lub nowszego.
.sp
Za pomocą \fBunshare\fP można utworzyć następujące typy przestrzeni nazw:
.sp
\fBprzestrzeń nazw montowań\fP
.RS 4
Montowanie i odmontowywanie systemów plików nie będzie miało wpływu na resztę systemu, z wyjątkiem systemów plików bezpośrednio oznaczonych jako współdzielone (za pomocą \fBmount \-\-make\-shared\fP; zob. \fI/proc/self/mountinfo\fP lub \fBfindmnt \-o+PROPAGATION\fP i znaczniki \fBshared\fP). Więcej szczegółów w podręczniku systemowym \fBmount_namespaces\fP(7).
.sp
Od wersji 2.27 util\-linux, \fBunshare\fP automatycznie ustawia propagację na \fBprivate\fP w nowych przestrzeniach nazw montowań aby zapewnić, że nowa przestrzeń nazw faktycznie nie jest dzielona. Można wyłączyć tę funkcję opcją \fB\-\-propagation unchanged\fP. Proszę zauważyć, że \fBprivate\fP jest domyślnym wyborem jądra.
.RE
.sp
\fBprzestrzeń nazw UTS\fP
.RS 4
Ustawianie nazwy stacji (hostname) lub domeny (domainname) nie będzie miało wpływu na resztę systemu. Więcej szczegółów w podręczniku systemowym \fButs_namespaces\fP(7).
.RE
.sp
\fBprzestrzeń nazw IPC\fP
.RS 4
Proces będzie miał niezależną przestrzeń nazw do celu: kolejek komunikatów POSIX oraz kolejek komunikatów Systemu V, zestawów semaforów oraz segmentów pamięci dzielonej. Więcej szczegółów w podręczniku \fBipc_namespaces\fP(7).
.RE
.sp
\fBprzestrzeń nazw sieci\fP
.RS 4
Proces będzie miał niezależne stosy IPv4 i IPv6, tablice trasowania IP, reguły zapory sieciowej, drzewa katalogów \fI/proc/net\fP i \fI/sys/class/net\fP, gniazd itp. Więcej szczegółów w podręczniku \fBnetwork_namespaces\fP(7).
.RE
.sp
\fBprzestrzeń nazw PID\fP
.RS 4
Potomkowie będą mieli oddzielny zbiór przypisań od PID\-u do procesu, od swych rodziców. Więcej szczegółów w podręczniku systemowym \fBpid_namespaces\fP(7).
.RE
.sp
\fBprzestrzeń nazw grup kontrolnych cgroup\fP
.RS 4
Proces będzie miał zwirtualizowany widok \fI/proc/self/cgroup\fP, a nowe montowania cgroup będą zakorzenione w korzeniu przestrzeni nazw cgroup. Więcej szczegółów w podręczniku systemowym \fBcgroup_namespaces\fP(7).
.RE
.sp
\fBprzestrzeń nazw użytkownika\fP
.RS 4
Proces będzie miał odrębny zbiór identyfikatorów użytkownika, grup oraz przywilejów. Więcej szczegółów w podręczniku systemowym \fBuser_namespaces\fP(7).
.RE
.sp
\fBprzestrzeń nazw czasu\fP
.RS 4
Proces będzie miał oddzielny widok \fBCLOCK_MONOTONIC\fP i/lub \fBCLOCK_BOOTTIME\fP, które można zmienić za pomocą pliku \fI/proc/self/timens_offsets\fP. Więcej szczegółów w podręczniku systemowym \fBtime_namespaces\fP(7).
.RE
.SH "OPCJE"
.sp
\fB\-i\fP, \fB\-\-ipc\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw IPC. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP.
.RE
.sp
\fB\-m\fP, \fB\-\-mount\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw montowań. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP. Proszę zauważyć, że \fIplik\fP musi być umieszczony w montowaniu, którego typem propagacji nie jest \fBshared\fP (albo wystąpi błąd). Proszę zastosować polecenie \fBfindmnt \-o+PROPAGATION\fP, gdy nie jest się pewnym aktualnego ustawienia. Zob. też przykłady poniżej.
.RE
.sp
\fB\-n\fP, \fB\-\-net\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw sieci. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP.
.RE
.sp
\fB\-p\fP, \fB\-\-pid\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw PID. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP (utworzenie trwałej przestrzeni nazw PID zawiedzie, jeśli nie poda się równocześnie opcji \fB\-\-fork\fP).
.sp
Zob. też opcje \fB\-\-fork\fP i \fB\-\-mount\-proc\fP.
.RE
.sp
\fB\-u\fP, \fB\-\-uts\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw UTS. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP.
.RE
.sp
\fB\-U\fP, \fB\-\-user\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw użytkownika. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP.
.RE
.sp
\fB\-C\fP, \fB\-\-cgroup\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw grup kontrolnych cgroup. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP.
.RE
.sp
\fB\-T\fP, \fB\-\-time\fP[\fB=\fP\fIplik\fP]
.RS 4
Tworzy nową przestrzeń nazw czasu. Jeśli poda się \fIplik\fP, to przestrzeń nazw stanie się trwała, poprzez utworzenie montowania przez podpięcie pod \fIplikiem\fP. Opcjami \fB\-\-monotonic\fP i \fB\-\-boottime\fP można podać odpowiednie przesunięcie w przestrzeni nazw czasu.
.RE
.sp
\fB\-f\fP, \fB\-\-fork\fP
.RS 4
Rozgałęzia podany \fIprogram\fP jako proces potomny programu \fBunshare\fP, zamiast uruchamiać go bezpośrednio. Przydatne przy tworzeniu nowej przestrzeni nazw PID. Proszę zauważyć, że gdy \fBunshare\fP oczekuje na proces potomny, ignoruje sygnały \fBSIGINT\fP i \fBSIGTERM\fP oraz nie przekazuje żadnych sygnałów potomkowi. Konieczne jest wysyłanie sygnałów do procesu potomnego.
.RE
.sp
\fB\-\-forward\-signals\fP
.RS 4
Przekazuje sygnały \fBSIGTERM\fP i \fBSIGINT\fP otrzymane przez proces macierzysty \fBunshare\fP do jego procesów potomnych. Gdy nie poda się tej opcji, \fBunshare\fP ignoruje te sygnały przy oczekiwaniu na zakończenie procesu potomnego (domyślne zachowanie od util\-linux 2.36). Pozwala to na utrzymanie istnienia rodzica podczas obsługi sygnałów przez proces potomny.
.sp
Opcja przydatna, gdy proces macierzysty \fBunshare\fP otrzyma sygnały \fBSIGTERM\fP lub \fBSIGINT\fP (np. przy przeładowaniu systemu albo od menedżera procesów), a chce się uzyskać poinformowanie procesu potomnego o żądaniu poprawnego wyjścia, dzięki czemu może on przeprowadzić konieczne operacje czyszczące. Jeśli dany proces potomny ma procedury obsługi sygnałów (takie jak obsługa pułapek powłoki), włączenie tej opcji pozwala na ich wykonanie.
.sp
Opcja ta wymusza \fB\-\-fork\fP.
.RE
.sp
\fB\-\-keep\-caps\fP
.RS 4
Gdy poda się opcję \fB\-\-user\fP zapewnia, że przywileje nadane w przestrzeni nazw użytkownika są zachowywane w procesie potomnym.
.RE
.sp
\fB\-\-kill\-child\fP[\fB=\fP\fInazwa\-sygnału\fP]
.RS 4
Gdy \fBunshare\fP kończy się, wyśle \fInazwę\-sygnału\fP do rozgałęzionego procesu potomnego. Przy łącznym stosowaniu z \fB\-\-pid\fP można uzyskać łatwe i niezawodne zabijanie całego drzewa procesów \fBunshare\fP. Jeśli nie poda się \fInazwy\-sygnału\fP, domyślnie będzie to \fBSIGKILL\fP. Opcja wymusza \fB\-\-fork\fP.
.RE
.sp
\fB\-\-mount\-proc\fP[\fB=\fP\fIpunkt\-montowania\fP]
.RS 4
Tuż przed uruchomieniem programu, montuje system plików proc w \fIpunkcie\-montowania\fP (domyślnie w \fI/proc\fP). Przydatne przy tworzeniu nowej przestrzeni nazw PID. Wymusza także utworzenie nowej przestrzeni nazw montowań, ponieważ montowanie \fI/proc\fP spowodowałoby problemy dla istniejących programów w systemie. Nowy system plików proc jest jawnie montowany jako prywatny (z \fBMS_PRIVATE\fP|\fBMS_REC\fP).
.RE
.sp
\fB\-\-mount\-binfmt\fP[\fB=\fP\fIpunkt\-montowania\fP]
.RS 4
Tuż przed uruchomieniem programu, montuje system plików binfmt_misc w \fIpunkcie\-montowania\fP (domyślnie w \fI/proc/sys/fs/binfmt_misc\fP). Wymusza także utworzenie nowej przestrzeni nazw montowań, ponieważ montowanie binfmt_misc spowodowałoby problemy dla istniejących programów w systemie. Nowy system plików binfmt_misc jest jawnie montowany jako prywatny (z \fBMS_PRIVATE\fP|\fBMS_REC\fP).
.RE
.sp
\fB\-\-map\-user\fP \fIuid\fP|\fInazwa\fP
.RS 4
Uruchamia program jedynie po przypisaniu bieżącego efektywnego identyfikatora użytkownika do \fIuid\fP. Jeśli poda się tę opcję wielokrotnie, pierwszeństwo ma ostatnie wystąpienie. Opcja wymusza \fB\-\-user\fP.
.RE
.sp
\fB\-\-map\-users\fP \fIwewnętrzny\-uid\fP\fB:\fP\fIzewnętrzny\-uid\fP\fB:\fP\fIliczba\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP
.RS 4
Uruchamia program jedynie po przypisaniu bloków identyfikatorów użytkownika o rozmiarze \fIliczba\fP zaczynających się od \fIzewnętrznego\-uid\fP do bloków identyfikatorów użytkownika zaczynających się od \fIwewnętrznego\-uid\fP. Przypisanie jest tworzone za pomocą \fBnewuidmap\fP(1) jeśli \fBunshare\fP uruchomiono jako nieuprzywilejowany. Jeśli zakres identyfikatorów użytkowników nachodzi na przypisania podane w \fB\-\-map\-user\fP, to "dziura" zostanie usunięta z przypisania. Może to poskutkować tym, że najwyższy identyfikator użytkownika nie zostanie przypisany. Można przypisać kilka bloków identyfikatorów użytkownika, podając opcję \fB\-\-map\-users\fP wielokrotnie. Specjalna wartość \fBauto\fP przypisze pierwszy blok identyfikatorów użytkownika będący własnością efektywnego użytkownika z \fI/etc/subuid\fP do bloku zaczynającego się od identyfikatora użytkownika 0. Specjalna wartość \fBsubids\fP utworzy równoważne przypisania tego samego bloku. Specjalna wartość \fBall\fP utworzy przypisanie przejściowe (pass\-through) dla każdego dostępnego identyfikatora użytkownika w macierzystej przestrzeni nazw. Opcja wymusza również opcję \fB\-\-user\fP.
.sp
Przed wersją 2.39 util\-linux, opcja ta oczekiwała argumentu używającego przecinka jako separatora, w postaci \fIzewnętrzny\-uid\fP\fB,\fP\fIwewnętrzny\-uid\fP\fB,\fP\fIliczba\fP, jednak format ten jest obecnie przestarzały, aby zachować spójność z kolejnością stosowaną w \fI/proc/[pid]/uid_map\fP i opcji montowania \fIX\-mount.idmap\fP.
.RE
.sp
\fB\-\-map\-group\fP \fIgid\fP|\fInazwa\fP
.RS 4
Uruchamia program jedynie po przypisaniu bieżącego efektywnego identyfikatora grupy do \fIgid\fP. Jeśli poda się tę opcję wielokrotnie, pierwszeństwo ma ostatnie wystąpienie. Opcja wymusza \fB\-\-setgroups=deny\fP i \fB\-\-user\fP.
.RE
.sp
\fB\-\-map\-groups\fP \fIwewnętrzny\-gid\fP\fB:\fP\fIzewnętrzny\-gid\fP\fB:\fP\fIliczba\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP
.RS 4
Uruchamia program jedynie po przypisaniu bloków identyfikatorów grup o rozmiarze \fIliczba\fP zaczynających się od \fIzewnętrznego\-gid\fP do bloków identyfikatorów grup zaczynających się od \fIwewnętrznego\-gid\fP. Przypisanie jest tworzone za pomocą \fBnewgidmap\fP(1) jeśli \fBunshare\fP uruchomiono jako nieuprzywilejowany. Jeśli zakres identyfikatorów grup nachodzi na przypisania podane w \fB\-\-map\-group\fP, to "dziura" zostanie usunięta z przypisania. Może to poskutkować tym, że najwyższy identyfikator grupy nie zostanie przypisany. Można przypisać kilka bloków identyfikatorów grup, podając opcję \fB\-\-map\-groups\fP wielokrotnie. Specjalna wartość \fBauto\fP przypisze pierwszy blok identyfikatorów grup będący własnością efektywnej grupy z \fI/etc/subgid\fP do bloku zaczynającego się od identyfikatora grupy 0. Specjalna wartość \fBsubids\fP utworzy równoważne przypisania tego samego bloku. Specjalna wartość \fBall\fP utworzy przypisanie przejściowe (pass\-through) dla każdego dostępnego identyfikatora grupy w macierzystej przestrzeni nazw. Opcja wymusza również opcję \fB\-\-user\fP.
.sp
Przed wersją 2.39 util\-linux, opcja ta oczekiwała argumentu używającego przecinka jako separatora, w postaci \fIzewnętrzny\-gid\fP\fB,\fP\fIwewnętrzny\-gid\fP\fB,\fP\fIliczba\fP, jednak format ten jest obecnie przestarzały, aby zachować spójność z kolejnością stosowaną w \fI/proc/[pid]/gid_map\fP i opcji montowania \fIX\-mount.idmap\fP.
.RE
.sp
\fB\-\-map\-auto\fP
.RS 4
Przypisuje pierwszy blok identyfikatorów użytkownika będący własnością efektywnego użytkownika z \fI/etc/subuid\fP do bloku zaczynającego się od identyfikatora użytkownika 0. W ten sam sposób, przypisze również pierwszy blok identyfikatorów grup będących własnością efektywnej grupy z \fI/etc/subgid\fP do bloku zaczynającego się od identyfikatora grupy 0. Opcja ta służy obsłużeniu częstego przypadku, gdy pierwszy blok podległych identyfikatorów użytkownika i grupy może zająć całą przestrzeń identyfikatorów użytkownika i grupy. Opcja odpowiada jednoczesnemu podaniu \fB\-\-map\-users=auto\fP oraz \fB\-\-map\-groups=auto\fP.
.RE
.sp
\fB\-\-map\-subids\fP
.RS 4
Utworzy równoważne przypisania pierwszego bloku identyfikatorów użytkownika będących własnością efektywnego użytkownika z \fI/etc/subuid\fP. W ten sam sposób, utworzy również równoważne przypisania pierwszego bloku identyfikatorów grupy będących własnością efektywnej grupy z \fI/etc/subgid\fP. Opcja odpowiada jednoczesnemu podaniu \fB\-\-map\-users=subids\fP i \fB\-\-map\-groups=subids\fP.
.RE
.sp
\fB\-r\fP, \fB\-\-map\-root\-user\fP
.RS 4
Uruchamia program dopiero po przypisaniu aktualnych efektywnych identyfikatorów użytkownika i grupy do UID\-u i GID\-u superużytkownika w nowo utworzonej przestrzeni nazw użytkownika. W ten sposób można wygodnie pozyskać uprawnienia potrzebne do zarządzania różnymi aspektami nowo utworzonych przestrzeni nazw (np. konfiguracji interfejsów w przestrzeni nazw sieci lub montowania systemów plików w przestrzeni nazw montowań) nawet, gdy działa się jako użytkownik nieuprzywilejowany. Jako że jest to funkcja powstała tylko dla wygody, nie obsługuje bardziej złożonych przypadków, takich jak przypisania zakresów UID\-ów i GID\-ów. Opcja wymusza \fB\-\-setgroups=deny\fP i \fB\-\-user\fP. Odpowiada podaniu \fB\-\-map\-user=0 \-\-map\-group=0\fP.
.RE
.sp
\fB\-c\fP, \fB\-\-map\-current\-user\fP
.RS 4
Uruchamia program dopiero po przypisaniu aktualnych efektywnych identyfikatorów użytkownika i grupy do tych samym UID\-ów i GID\-ów w nowo utworzonej przestrzeni nazw użytkownika. Opcja wymusza \fB\-\-setgroups=deny\fP i \fB\-\-user\fP. Odpowiada podaniu \fB\-\-map\-user=$(id \-ru) \-\-map\-group=$(id \-rg)\fP.
.RE
.sp
\fB\-\-owner\fP \fIuid\fP\fB:\fP\fIgid\fP
.RS 4
Ustawia użytkownika i grupę właściciela przy tworzeniu nowej przestrzeni nazw użytkownika. Określają one, który użytkownik z macierzystej przestrzeni nazw ma przywilej CAP_SYS_ADMIN w nowo tworzonej potomnej przestrzeni nazw i może wykonać do niej \fBsetns\fP(2). Opcja pozwala użytkownikowi uprzywilejowanemu na utworzenie przestrzeni nazw w imieniu użytkownika nieuprzywilejowanego, korzystając ze swoich przywilejów do przypisania identyfikatorów i/lub zamontowania przez podpięcie tej przestrzeni nazw w systemie plików. Wymusza \fB\-\-user\fP.
.RE
.sp
\fB\-\-propagation\fP \fBprivate\fP|\fBshared\fP|\fBslave\fP|\fBunchanged\fP
.RS 4
Rekurencyjnie ustawia flagę propagacji montowania w nowej przestrzeni nazw montowań. Domyślnie propagacja jest ustawiana na \fIprivate\fP. Można wyłączyć tę funkcję argumentem \fBunchanged\fP. Opcja jest po cichu ignorowana, gdy nie żąda się przestrzeni nazw montowań (\fB\-\-mount\fP).
.RE
.sp
\fB\-\-setgroups\fP \fBallow\fP|\fBdeny\fP
.RS 4
Dozwala (allow) lub zabrania (deny) stosowania wywołania systemowego \fBsetgroups\fP(2) w przestrzeni nazw użytkownika.
.sp
Aby móc wywołać \fBsetgroups\fP(2), proces wywołujący musi mieć co najmniej przywilej \fBCAP_SETGID\fP. Jednak od Linuksa 3.19 stosują się dodatkowe ograniczenia: jądro nadaje uprawnienie do wywołania \fBsetgroups\fP(2) jedynie po ustawieniu przypisania GID (\fB/proc/\fP\fIpid\fP*/gid_map*). Przypisanie GID jest do zapisu przez roota gdy włączono \fBsetgroups\fP(2) (tj. \fBallow\fP, wartość domyślna), natomiast przypisanie GID staje się do zapisu przez procesy nieuprzywilejowane, gdy \fBsetgroups\fP(2) jest na stałe wyłączone (poprzez \fBdeny\fP).
.RE
.sp
\fB\-R\fP, \fB\-\-root\fP \fIkatalog\fP
.RS 4
uruchamia polecenie z katalogiem głównym ustawionym na \fIkatalog\fP.
.RE
.sp
\fB\-w\fP, \fB\-\-wd\fP \fIkatalog\fP
.RS 4
zmienia katalog roboczy na \fIkatalog\fP.
.RE
.sp
\fB\-S\fP, \fB\-\-setuid\fP \fIid\-użytkownika\fP
.RS 4
Ustawia identyfikator użytkownika, który będzie stosowany po przejściu w przestrzeń nazw.
.RE
.sp
\fB\-G\fP, \fB\-\-setgid\fP \fIid\-grupy\fP
.RS 4
Ustawia identyfikator grupy, który będzie stosowany po przejściu w przestrzeń nazw oraz porzuca grupy dodatkowe.
.RE
.sp
\fB\-l\fP, \fB\-\-load\-interp\fP \fIłańcuch\fP
.RS 4
Ładuje definicję binfmt_misc do przestrzeni nazw (wymusza \fB\-\-mount\-binfmt\fP). Argument \fIłańcuch\fP ma postać \f(CR:nazwa:typ:przesunięcie:magia:maska:interpretujący:flagi\fP. Więcej szczegółów o rejestrowaniu nowego typu pliku wykonywalnego znajduje się w \c
.URL "https://www.kernel.org/doc/Documentation/admin\-guide/binfmt\-misc.rst" "" "."
Do zarządzania flagą F w \f(CRflags\fP z parametrem \fB\-\-root\fP, binfmt_misc jest montowane dwukrotnie, pierwszy raz przez wykonaniem chroot do załadowania interpretującego z systemu plików wywołującego, a następnie później, aby był dostępny z przestrzeni użytkownika chroot.
.RE
.sp
\fB\-\-monotonic\fP \fIprzesunięcie\fP
.RS 4
Ustawia przesunięcie zegara \fBCLOCK_MONOTONIC\fP, które będzie stosowane po przejściu w przestrzeń nazw. Opcja wymaga oddzielenia przestrzeni nazw czasu za pomocą opcji \fB\-\-time\fP.
.RE
.sp
\fB\-\-boottime\fP \fIprzesunięcie\fP
.RS 4
Ustawia przesunięcie zegara \fBCLOCK_BOOTTIME\fP, które będzie stosowane po przejściu w przestrzeń nazw. Opcja wymaga oddzielenia przestrzeni nazw czasu za pomocą opcji \fB\-\-time\fP.
.RE
.sp
\fB\-h\fP, \fB\-\-help\fP
.RS 4
Wyświetla ten tekst i wychodzi.
.RE
.sp
\fB\-V\fP, \fB\-\-version\fP
.RS 4
Wyświetla wersję i wychodzi.
.RE
.SH "UWAGI"
.sp
Montowanie systemów plików proc i sysfs jako root, w przestrzeni nazw użytkownika, musi być ograniczone, aby mniej uprzywilejowany użytkownik nie był w stanie uzyskać dostępu do wrażliwych plików, które bardziej uprzywilejowany użytkownik uczynił niedostępnymi. W skrócie, zasady wobec proc i sysfs są maksymalnie zbliżone do montowania przez podpięcie.
.SH "PRZYKŁADY"
.sp
Poniższe polecenie tworzy przestrzeń nazw PID, korzystając z \fB\-\-fork\fP aby zapewnić, że wykonywane polecenie odbywa się w procesie potomnym, który (jako pierwszy proces w przestrzeni nazw) ma PID 1. Opcja \fB\-\-mount\-proc\fP powoduje, że równocześnie tworzy nową przestrzeń nazw montowań i montuje nowy system plików \fBproc\fP(5), zawierający informacje odnoszące się do nowej przestrzeni nazw PID. Gdy polecenie \fBreadlink\fP(1) zakończy się, nowe przestrzenie nazw są automatycznie usuwane.
.sp
.if n .RS 4
.nf
.fam C
# unshare \-\-fork \-\-pid \-\-mount\-proc readlink /proc/self
1
.fam
.fi
.if n .RE
.sp
Jako użytkownik nieuprzywilejowany, tworzy nową przestrzeń nazw użytkownika, gdzie poświadczenia użytkownika są przypisywane do identyfikatorów roota wewnątrz przestrzeni nazw:
.sp
.if n .RS 4
.nf
.fam C
$ id \-u; id \-g
1000
1000
$ unshare \-\-user \-\-map\-root\-user \(rs
        sh \-c \*(Aqwhoami; cat /proc/self/uid_map /proc/self/gid_map\*(Aq
root
         0\&       1000\&          1
         0\&       1000\&          1
.fam
.fi
.if n .RE
.sp
Jako użytkownik nieuprzywilejowany, tworzy przestrzeń nazw użytkownika, gdzie przypisane jest pierwszych 65536 identyfikatorów, a poświadczenia użytkownika są przypisywane do identyfikatorów roota wewnątrz przestrzeni nazw. Przypisanie odbywa się na podstawie podległych identyfikatorów przypisanych w \fBsubuid\fP(5) i \fBsubgid\fP(5). Następnie demonstrujemy przypisanie tworząc plik z identyfikatorem użytkownika 1 i identyfikatorem grupy 1. Ze względu na zwięzłość, pokazywane są tylko przypisania identyfikatora użytkownika:
.sp
.if n .RS 4
.nf
.fam C
$ id \-u
1000
$ cat /etc/subuid
1000:100000:65536
$ unshare \-\-user \-\-map\-auto \-\-map\-root\-user
# id \-u
0
# cat /proc/self/uid_map
         0\&       1000\&          1
         1\&     100000\&      65535
# touch plik; chown 1:1 plik
# ls \-ln \-\-time\-style=+ plik
\-rw\-r\-\-r\-\- 1 1 1 0\&  plik
# exit
$ ls \-ln \-\-time\-style=+ plik
\-rw\-r\-\-r\-\- 1 100000 100000 0\&  plik
.fam
.fi
.if n .RE
.sp
Pierwsze z poniższych poleceń tworzy nową, trwałą przestrzeń nazw UTS i modyfikuje nazwę stacji (hostname) widoczną w tej przestrzeni nazw. Następnie wchodzimy w przestrzeń nazw za pomocą \fBnsenter\fP(1), aby wyświetlić zmodyfikowaną nazwę stacji; krok ten pokazuje, że przestrzeń nazw UTS wciąż istnieje nawet pomimo tego, że po zakończeniu polecenia \fBunshare\fP, nie posiada już żadnych procesów. Następnie przestrzeń nazw jest niszczona poprzez usunięcie montowania przez podpięcie.
.sp
.if n .RS 4
.nf
.fam C
# touch /root/uts\-ns
# unshare \-\-uts=/root/uts\-ns hostname FOO
# nsenter \-\-uts=/root/uts\-ns hostname
FOO
# umount /root/uts\-ns
.fam
.fi
.if n .RE
.sp
Poniższe polecenia tworzą trwałą przestrzeń nazw montowań, do której odnosi się montowania przez podpięcie \fI/root/namespaces/mnt\fP. Aby zapewnić, że utworzenie tego montowania przez podpięcie powiedzie się, katalog nadrzędny (\fI/root/namespaces\fP) tworzony jest jako montowania przez podpięcie, którego typem nie jest \fBshared\fP.
.sp
.if n .RS 4
.nf
.fam C
# mount \-\-bind /root/namespaces /root/namespaces
# mount \-\-make\-private /root/namespaces
# touch /root/namespaces/mnt
# unshare \-\-mount=/root/namespaces/mnt
.fam
.fi
.if n .RE
.sp
Poniższe polecenia demonstrują korzystanie z opcji \fB\-\-kill\-child\fP przy tworzeniu przestrzeni nazw PID, aby zapewnić, że gdy \fBunshare\fP jest zabijany, zabijane są też wszystkie procesy wewnątrz przestrzeni nazw PID.
.sp
.if n .RS 4
.nf
.fam C
# set +m\&                # Nie wypisuje komunikatów ze stanem zadań

# unshare \-\-pid \-\-fork \-\-mount\-proc \-\-kill\-child \-\- \(rs
       bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq &
[1] 53456
#\&     PID TTY\&      STAT\&   TIME COMMAND
      1 pts/3\&    S+\&     0:00 sleep 999
      3 pts/3\&    S+\&     0:00 sleep 555
      5 pts/3\&    R+\&     0:00 ps a

# ps h \-o \*(Aqcomm\*(Aq $!\&     # Pokazujemy, że zadaniem w tle jest unshare(1)
unshare
# kill $!\&               # Zabijamy unshare(1)
# pidof sleep
.fam
.fi
.if n .RE
.sp
Polecenie \fBpidof\fP(1) nic nie wypisało, ponieważ procesy \fBsleep\fP zostały zabite. Mówiąc dokładniej, gdy proces \fBsleep\fP posiadający PID 1 w przestrzeni nazw (tj. będący procesem init przestrzeni nazw) został zabity, spowodowało to zabicie wszystkich pozostałych procesów w tej przestrzeni nazw. Inaczej będzie, gdy wydamy podobną serię poleceń nie korzystając z opcji \fB\-\-kill\-child\fP; wówczas po zakończeniu \fBunshare\fP procesy w przestrzeni nazw PID nie są zabijane
.RS 4
.RE
.sp
.if n .RS 4
.nf
.fam C
# unshare \-\-pid \-\-fork \-\-mount\-proc \-\- \(rs
       bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq &
[1] 53479
#\&     PID TTY\&      STAT\&   TIME COMMAND
      1 pts/3\&    S+\&     0:00 sleep 999
      3 pts/3\&    S+\&     0:00 sleep 555
      5 pts/3\&    R+\&     0:00 ps a

# kill $!
# pidof sleep
53482 53480
.fam
.fi
.if n .RE
.sp
Poniższy przykład pokazuje utworzenie przestrzeni nazw czasu, w której zegar liczący czas od rozruchu jest ustawiany na kilka lat wstecz:
.sp
.if n .RS 4
.nf
.fam C
# uptime \-p\&             # Pokazujemy czas dział. w pierw. prz. nazw czasu
up 21 hours, 30 minutes
# unshare \-\-time \-\-fork \-\-boottime 300000000 uptime \-p
up 9 years, 28 weeks, 1 day, 2 hours, 50 minutes
.fam
.fi
.if n .RE
.sp
Poniższy przykład wykonuje chroot do katalogu \fI/chroot/powerpc/jessie\fP i instaluje program interpretujący \fI/bin/qemu\-ppc\-static\fP do wykonywania plików binarnych powerpc.
.sp
.if n .RS 4
.nf
.fam C
$\&  unshare \-\-map\-root\-user \-\-fork \-\-pid \-\-load\-interp=":qemu\-ppc:M::\(rs\(rsx7fELF\(rsx01\(rs\(rsx02\(rs\(rsx01\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx02\(rs\(rsx00\(rs\(rsx14:\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsx00\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxfe\(rs\(rsxff\(rs\(rsxff:/bin/qemu\-ppc\-static:OCF" \-\-root=/chroot/powerpc/jessie /bin/bash \-l
.fam
.fi
.if n .RE
.sp
Parametr \f(CRload\-interp\fP można rozszyfrować następująco
.RS 4
.sp
\f(CRqemu\-ppc\fP
.RS 4
jest nazwą nowego pliku tworzonego w katalogu \f(CR/proc/sys/fs/binfmt_misc\fP, do zarejestrowania programu interpretującego
.RE
.sp
\f(CRM\fP
.RS 4
definiuje program interpretujący dla danego typu liczby magicznej
.RE
.sp
\f(CR\(rs\(rsx7fELF\(rsx01\(rs\(rsx02\(rs\(rsx01\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx00\(rs\(rsx02\(rs\(rsx00\(rs\(rsx1\fP
.RS 4
jest liczbą magiczną do rozpoznawania pliku do zinterpretowania (w tym przypadku, jest to nagłówek ELF PPC32)
.RE
.sp
\f(CR\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsx00\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxff\(rs\(rsxfe\(rs\(rsxff\(rs\(rsxff\fP
.RS 4
jest maską do stosowania liczby magicznej
.RE
.sp
\f(CR/bin/qemu\-ppc\-static\fP
.RS 4
program interpretujący stosowany z danym plikiem
.RE
.sp
\f(CROCF\fP
.RS 4
plik jest otwierany przez jądro z poświadczeniami i tokenami bezpieczeństwa samego pliku i ładowany tuż po jego zarejestrowaniu.
.RE
.RE
.SH "AUTORZY"
.sp
.MTO "dottedmag\(atdottedmag.net" "Mikhail Gusarov" ","
.MTO "kzak\(atredhat.com" "Karel Zak" ""
.SH "ZOBACZ TAKŻE"
.sp
\fBnewuidmap\fP(1), \fBnewgidmap\fP(1), \fBnsenter\fP(1), \fBlsns\fP(8), \fBclone\fP(2), \fBunshare\fP(2), \fBnamespaces\fP(7), \fBmount\fP(8)
.SH "ZGŁASZANIE BŁĘDÓW"
.sp
Problemy należy zgłaszać w \c
.URL "https://github.com/util\-linux/util\-linux/issues" "systemie śledzenia błędów" "."
.SH "DOSTĘPNOŚĆ"
.sp
Polecenie \fBunshare\fP jest częścią pakietu util\-linux, który można pobrać ze strony \c
.URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Archiwum jądra Linux" "."
