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

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

DOSTĘPNOŚĆ

Polecenie nsenter jest częścią pakietu util-linux, który można pobrać ze strony