OPIS¶
Polecenie nsenter uruchamia program w
przestrzeni(ach) nazw podanych w opcjach wiersza poleceń (opisanych
poniżej). Jeśli nie poda się programu,
uruchamiana jest powłoka "${SHELL}" (domyślnie:
/bin/sh).
Można przejść w następujące
przestrzenie nazw:
przestrzeń nazw montowań
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ą
mount --make-shared;
zob.
/proc/self/mountinfo i znacznik
shared). Więcej
szczegółów w podręczniku systemowym
mount_namespaces(7) oraz opisie znacznika
CLONE_NEWNS w
podręczniku
clone(2).
przestrzeń nazw UTS
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
uts_namespaces(7).
przestrzeń nazw IPC
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
ipc_namespaces(7).
przestrzeń nazw sieci
Proces będzie miał niezależne stosy
IPv4 i IPv6, tablice trasowania IP, reguły zapory sieciowej, drzewa
katalogów
/proc/net i
/sys/class/net, gniazd itp.
Więcej szczegółów w podręczniku
network_namespaces(7).
przestrzeń nazw PID
Potomkowie będą mieć zbiór
przypisań od PID-u do procesu odrębny od procesu
nsenter.
nsenter domyślnie będzie się
rozgałęział przy zmianie przestrzeni nazw PID, zatem nowy
program i jego potomkowie będą dzielić tę
samą przestrzeń nazw i będą wzajemnie widoczni.
Jeśli poda się
--no-fork, wykonywany (exec) jest nowy
program, bez rozgałęzienia. Więcej
szczegółów w podręczniku systemowym
pid_namespaces(7).
przestrzeń nazw użytkownika
Proces będzie miał odrębny
zbiór identyfikatorów użytkownika, grup oraz
przywilejów. Więcej szczegółów w
podręczniku systemowym
user_namespaces(7).
przestrzeń nazw grup kontrolnych cgroup
Proces będzie miał zwirtualizowany widok
/proc/self/cgroup, a nowe montowania cgroup będą
zakorzenione w korzeniu przestrzeni nazw cgroup. Więcej
szczegółów w podręczniku systemowym
cgroup_namespaces(7).
przestrzeń nazw czasu
Proces będzie miał oddzielny widok
CLOCK_MONOTONIC i/lub
CLOCK_BOOTTIME, które można
zmienić za pomocą pliku
/proc/self/timens_offsets.
Więcej szczegółów w podręczniku systemowym
time_namespaces(7).
Do utworzenia nowej przestrzeni nazw służy
unshare(1). Następnie można uruchomić program w
tej przestrzeni za pomocą nsenter.
OPCJE¶
Część z poniższych opcji,
odnoszących się do przestrzeni nazw przyjmuje opcjonalny
argument plik. Powinien być to jeden z plików
/proc/[pid]/ns/* opisanych w podręczniku systemowym
namespaces(7) lub ścieżka do montowania
korzystającego z podpięcia utworzonego na jednym z tych
plików.
-a, --all
Przechodzi do wszystkich przestrzeni procesu docelowego
za pomocą domyślnych ścieżek przestrzeni nazw
/proc/<pid>/ns/*. Domyślne ścieżki do
przestrzeni nazw procesu docelowego można przesłonić
opcjami konkretnej przestrzeni nazw (np.
--all
--mount=ścieżka).
Przestrzeń nazw użytkownika zostanie zignorowana,
jeśli jest taka sama, jak obecna przestrzeń nazw
użytkownika wywołującego. W ten sposób unika
się możliwości odzyskania przywilejów poprzez
wywołanie do setns(2) przez wywołującego o
obniżonych przywilejach. Więcej
szczegółów w tym podręczniku systemowym.
-t, --target
PID[:i-węzeł]
Określa proces docelowy, z którego
pozyskany będzie kontekst. Ścieżkami do kontekstu
określonego przez
PID są:
/proc/pid/ns/mnt
przestrzeń nazw montowań
/proc/pid/ns/uts
przestrzeń nazw UTS
/proc/pid/ns/ipc
przestrzeń nazw IPC
/proc/pid/ns/net
przestrzeń nazw sieci
/proc/pid/ns/pid
przestrzeń nazw PID
/proc/pid/ns/user
przestrzeń nazw użytkownika
/proc/pid/ns/cgroup
przestrzeń nazw grup kontrolnych cgroup
/proc/pid/ns/time
przestrzeń nazw czasu
/proc/pid/root
katalog główny
/proc/pid/cwd
katalog roboczy
Opcjonalnie, proces można zaadresować za
pomocą formatu PID:i-węzeł.
I-węzeł identyfikuje unikalny deskryptor pliku procesu.
Numer i-węzła procesu można pobrać
narzędziem getino(1).
-m,
--mount[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw montowań. Jeśli
nie poda się argumentu, wchodzi w przestrzeń nazw
montowań procesu docelowego. Jeśli poda się plik
lub :id-prz-n, wchodzi w przestrzeń nazw montowań
określoną plikiem lub id-prz-n.
-u,
--uts[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw UTS. Jeśli nie poda
się argumentu, wchodzi w przestrzeń nazw UTS procesu docelowego.
Jeśli poda się plik lub :id-prz-n, wchodzi
w przestrzeń nazw UTS określoną plikiem lub
id-prz-n.
-i,
--ipc[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw IPC. Jeśli nie poda
się argumentu, wchodzi w przestrzeń nazw IPC procesu docelowego.
Jeśli poda się plik lub :id-prz-n, wchodzi
w przestrzeń nazw IPC określoną plikiem lub
id-prz-n.
-n,
--net[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw sieci. Jeśli nie poda
się argumentu, wchodzi w przestrzeń nazw sieci procesu
docelowego. Jeśli poda się plik lub
:id-prz-n, wchodzi w przestrzeń nazw sieci
określoną plikiem lub id-prz-n.
-N, --net-socket deskr-pl
Wchodzi do przestrzeni nazw sieci gniazda procesu
docelowego. Wymaga podania procesu opcją --target.
Obsługiwane od Linuksa 5.6.
-p,
--pid[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw PID. Jeśli nie poda
się argumentu, wchodzi w przestrzeń nazw PID procesu docelowego.
Jeśli poda się plik lub :id-prz-n, wchodzi
w przestrzeń nazw PID określoną plikiem lub
id-prz-n.
-U,
--user[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw użytkownika.
Jeśli nie poda się argumentu, wchodzi w przestrzeń nazw
użytkownika procesu docelowego. Jeśli poda się
plik lub :id-prz-n, wchodzi w przestrzeń nazw
użytkownika określoną plikiem lub
id-prz-n.
--user-parent
Wchodzi do nadrzędnej przestrzeni nazw
użytkownika. Nadrzędna przestrzeń nazw użytkownika
będzie pozyskana z dowolnej innej włączonej przestrzeni
nazw. Przy łącznym stosowaniu z opcją --user,
pobierze nadrzędną przestrzeń nazw użytkownika z
przestrzeni użytkownika i zastąpi ją.
-C,
--cgroup[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw grup kontrolnych cgroup.
Jeśli nie poda się argumentu, wchodzi w przestrzeń nazw
cgroup procesu docelowego. Jeśli poda się plik lub
:id-prz-n, wchodzi w przestrzeń nazw cgroup
określoną plikiem lub id-prz-n.
-T,
--time[=plik|=:id-prz-n]
Wchodzi do przestrzeni nazw czasu. Jeśli nie poda
się argumentu, wchodzi w przestrzeń nazw czasu procesu
docelowego. Jeśli poda się plik lub
:id-prz-n, wchodzi w przestrzeń nazw czasu
określoną plikiem lub id-prz-n.
-G, --setgid id-grupy
Ustawia identyfikator grupy stosowany po wejściu w
przestrzeń nazw oraz porzuca grupy dodatkowe. nsenter zawsze
ustawia identyfikator grupy w przypadku przestrzeni nazw użytkownika,
domyślnym jest 0. Jeśli poda się argument
"follow", to stosowany jest identyfikator grupy procesu
docelowego.
-S, --setuid id-użytkownika
Ustawia identyfikator użytkownika stosowany po
wejściu w przestrzeń nazw. nsenter zawsze ustawia
identyfikator użytkownika w przypadku przestrzeni nazw
użytkownika, domyślnym jest 0. Jeśli poda się
argument "follow", to stosowany jest identyfikator
użytkownika procesu docelowego.
--keep-caps
Gdy poda się opcję --user zapewnia,
że przywileje nadane w przestrzeni nazw użytkownika są
zachowywane w procesie potomnym.
--preserve-credentials
Nie modyfikuje identyfikatorów użytkownika
i grupy przy wchodzeniu do przestrzeni nazw użytkownika.
Domyślnie grupy dodatkowe są porzucane, a identyfikatory
użytkownika i grupy ustawiane na 0.
-r, --root[=katalog]
Ustawia katalog główny. Jeśli nie
poda się katalogu, ustawia katalog główny na katalog
główny procesu docelowego. Jeśli poda się katalog,
ustawia katalog główny na podany katalog. Podany katalog
jest otwierany przed przełączeniem się na
żądane przestrzenie nazw.
-w, --wd[=katalog]
Ustawia katalog roboczy. Jeśli nie poda się
katalogu, ustawia katalog roboczy na katalog roboczy procesu docelowego.
Jeśli poda się katalog, ustawia katalog roboczy na podany
katalog. Podany katalog jest otwierany przed
przełączeniem się na żądane przestrzenie
nazw, co oznacza że podany katalog roboczy działa jako
"tunel" do bieżącej przestrzeni użytkownika.
Zob. też --wdns.
-W, --wdns[=katalog]
Ustawia katalog roboczy. Podany
katalog jest
otwierany po przełączeniu na żądane przestrzenie
nazw i po wywołaniu
chroot(2). Opcje
--wd i
--wdns
wzajemnie się wykluczają.
-e, --env
Przekazuje zmienne środowiskowe z procesu
docelowego do nowo tworzonego procesu. Jeśli nie poda się tej
opcji, zmienne środowiskowe pozostaną takie same, jak w
bieżącej przestrzeni nazw.
-F, --no-fork
Nie rozgałęzia się przed wykonaniem
podanego programu. Domyślnie, przy wchodzeniu do przestrzeni nazw PID,
nsenter wywołuje fork przed wywołaniem
exec, dzięki czemu potomkowie będą umieszczeni
również w tej przestrzeni nazw PID.
-Z, --follow-context
Ustawia kontekst bezpieczeństwa SELinux stosowany
do wykonywania nowego procesu, na podstawie procesu już
działającego, określonego opcją --target za
pomocą PID (wymaga skompilowania util-linux z obsługą
SELinux, w innym przypadku opcja będzie niedostępna).
-c, --join-cgroup
Dodaje inicjowany proces do grupy kontrolnej cgroup
procesu docelowego.
-h, --help
Wyświetla ten tekst i wychodzi.
-V, --version
Wyświetla wersję i wychodzi.