Scroll to navigation

NSENTER(1) Polecenia użytkownika NSENTER(1)

NAZWA

nsenter - uruchamia program w innej przestrzeni nazw

SKŁADNIA

nsenter [opcje] [program [argumenty]]

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.

UWAGI

Opcja --user-parent wymaga Linuksa 4.9 lub nowszego, starsze jądra zwrócą błąd: nieprawidłowe ioctl dla urządzenia.

Określanie przestrzeni nazw za pomocą id-prz-n wymaga Linuksa 6.19. Jeśli nazwa pliku przestrzeni nazw zaczyna się dwukropkiem, dla odróżnienia należy ją poprzedzić ./ .

AUTORZY

Eric Biederman <biederm@xmission.com>, Karel Zak <kzak@redhat.com>

ZOBACZ TAKŻE

unshare(1), lsns(8), clone(2), setns(2), namespaces(7) getino(1)

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w systemie śledzenia błędów <https://github.com/util-linux/util-linux/issues>.

DOSTĘPNOŚĆ

Polecenie nsenter jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux <https://www.kernel.org/pub/linux/utils/util-linux/>.

2026-09-02 util-linux 2.42.3