Scroll to navigation

NSENTER(1) Comenzi utilizator NSENTER(1)

NUME

nsenter - rulează programul în diferite spații de nume

REZUMAT

nsenter [opțiuni] [program [argumente]]

DESCRIERE

Comanda nsenter execută programul în spațiul (spațiile) de nume care sunt specificate în opțiunile liniei de comandă (descrise mai jos). Dacă program nu este indicat, se execută «${SHELL}» (implicit: /bin/sh).

Spațiile de nume care pot fi introduse sunt:

mount namespace

Montarea și demontarea sistemelor de fișiere nu va afecta restul sistemului, cu excepția sistemelor de fișiere care sunt marcate în mod explicit ca fiind partajate (cu mount --make-shared; a se vedea /proc/self/mountinfo pentru fanionul shared). Pentru mai multe detalii, consultați mount_namespaces(7) și discuția despre fanionul CLONE_NEWNS din clone(2).

UTS namespace

Stabilirea numelui de gazdă sau a numelui de domeniu nu va afecta restul sistemului. Pentru mai multe detalii, consultați uts_namespaces(7).

IPC namespace

Procesul va avea un spațiu de nume independent pentru cozile de mesaje POSIX, precum și pentru cozile de mesaje System V, seturile de semafoare și segmentele de memorie partajată. Pentru mai multe detalii, consultați ipc_namespaces(7).

network namespace

Procesul va avea stive IPv4 și IPv6 independente, tabele de direcționare IP, reguli de paravan de protecție, arborii de directoare /proc/net și /sys/class/net, socluri etc. Pentru mai multe detalii, consultați network_namespaces(7).

PID namespace

Procesele-copil vor avea un set de corespondențe între PID și proces separat de procesul nsenter. nsenter va crea implicit o bifurcație în cazul în care se schimbă spațiul de nume PID, astfel încât noul program și procesele-copil ale acestuia să împartă același spațiu de nume PID și să fie vizibili unul pentru celălalt. Dacă se utilizează --no-fork, noul program va fi executat fără a se ramifica. Pentru mai multe detalii, a se vedea pid_namespaces(7).

user namespace

Procesul va avea un set distinct de UID-uri, GID-uri și capacități. Pentru mai multe detalii, a se vedea user_namespaces(7).

cgroup namespace

Procesul va avea o vizualizare virtualizată a /proc/self/cgroup, iar noile montări cgroup vor fi înrădăcinate la rădăcina spațiului de nume cgroup. Pentru mai multe detalii, consultați cgroup_namespaces(7).

time namespace

Procesul poate avea o viziune distinctă asupra CLOCK_MONOTONIC și/sau CLOCK_BOOTTIME, care poate fi modificată cu ajutorul /proc/self/timens_offsets. Pentru mai multe detalii, a se vedea time_namespaces(7).

Dacă doriți să creați un nou spațiu de nume, utilizați comanda unshare(1). Odată creat, puteți rula un program în acesta folosind comanda nsenter.

OPȚIUNI

Diverse dintre opțiunile de mai jos care se referă la spațiile de nume acceptă un argument opțional fișier. Acesta ar trebui să fie unul dintre fișierele /proc/[pid]/ns/* descrise în namespaces(7) sau numele de rută al unei montări de legătură care a fost creată pe unul dintre aceste fișiere.

-a, --all

Introduce toate spațiile de nume ale procesului țintă prin rutele implicite ale spațiilor de nume /proc/[pid]/ns/*. Rutele implicite către spațiile de nume ale procesului țintă pot fi suprascrise de opțiuni specifice spațiului de nume (de exemplu, --all --mount=path).

Spațiul de nume de utilizator va fi ignorat dacă este același cu spațiul de nume de utilizator curent al utilizatorului care efectuează apelul.. Aceasta împiedică un apelant care a renunțat la capacități să le recupereze prin intermediul unui apel la setns(2). Consultați pagina de manual pentru mai multe detalii.

-t, --target PID[:nod-i]

Specifică un proces țintă de la care se obțin contexte. Rutele către contextele specificate de PID sunt:

/proc/pid/ns/mnt

spațiul de nume de montare

/proc/pid/ns/uts

spațiul de nume UTS

/proc/pid/ns/ipc

spațiul de nume IPC

/proc/pid/ns/net

spațiul de nume de rețea

/proc/pid/ns/pid

spațiul de nume PID

/proc/pid/ns/user

spațiul de nume de utilizator

/proc/pid/ns/cgroup

spațiul de nume cgroup

/proc/pid/ns/time

spațiul de nume de timp

/proc/pid/root

directorul rădăcină

/proc/pid/cwd

respectiv directorul de lucru

Opțional, un proces poate fi identificat folosind formatul PID:nod-i. nod-i identifică descriptorul de fișier unic al procesului. Pentru a afla numărul de nod-i al unui proces, puteți folosi instrumentul getino(1).

-m, --mount[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume de montare. Dacă nu se specifică niciun fișier, introduce spațiul de nume de montare al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, se introduce spațiul de nume de montare specificat de fișier sau id-spațiu-nume.

-u, --uts[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume UTS. Dacă nu se specifică niciun fișier, introduce spațiul de nume UTS al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, se introduce spațiul de nume UTS specificat de fișier sau id-spațiu-nume.

-i, --ipc[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume IPC. Dacă nu se specifică niciun fișier, introduce spațiul de nume IPC al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, se introduce spațiul de nume IPC specificat de fișier sau id-spațiu-nume.

-n, --net[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume de rețea. Dacă nu se specifică niciun fișier, introduce spațiul de nume de rețea al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, se introduce spațiul de nume de rețea specificat de fișier sau id-spațiu-nume.

-N, --net-socket fd

Introduce spațiul de nume de rețea al soclului procesului țintă. Necesită specificarea procesului --target. Acceptată începând cu Linux 5.6.

-p, --pid[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume PID. Dacă nu se specifică niciun fișier, introduce spațiul de nume PID al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, introduce spațiul de nume PID specificat de fișier sau id-spațiu-nume.

-U, --user[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume de utilizator. Dacă nu este specificat niciun fișier, introduce spațiul de nume de utilizator al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, se introduce spațiul de nume de utilizator specificat de fișier sau id-spațiu-nume. A se vedea, de asemenea, opțiunile --setuid și --setgid.

--user-parent

Introduce spațiul de nume al utilizatorului părinte. Spațiul de nume de utilizator părinte va fi preluat de la orice alt spațiu de nume activat. Dacă este combinată cu opțiunea --user, spațiul de nume al utilizatorului părinte va fi preluat din spațiul de nume al utilizatorului și îl va înlocui.

-C, --cgroup[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume cgroup. Dacă nu se specifică niciun fișier, introduce spațiul de nume cgroup al procesului țintă. Dacă este specificat fișier sau :id-spațiu-nume, se introduce spațiul de nume al cgroup specificat de fișier sau id-spațiu-nume.

-T, --time[=fișier|=:id-spațiu-nume]

Introduce spațiul de nume de timp. Dacă nu se specifică niciun fișier, introduce spațiul de nume de timp al procesului țintă. Dacă se specifică fișier sau :id-spațiu-nume, se introduce spațiul de nume de timp specificat de fișier sau id-spațiu-nume.

-G, --setgid gid

Stabilește ID-ul grupului care va fi utilizat în spațiul de nume introdus și se renunță la grupurile suplimentare. nsenter stabilește întotdeauna GID pentru spațiile de nume de utilizator, valoarea implicită este 0. Dacă se specifică argumentul „follow”, se utilizează GID-ul procesului țintă.

-S, --setuid uid

Stabilește ID-ul utilizatorului care va fi utilizat în spațiul de nume introdus. nsenter stabilește întotdeauna UID pentru spațiile de nume de utilizator, valoarea implicită este 0. Dacă se specifică argumentul „follow”, se utilizează UID-ul procesului țintă.

--keep-caps

În cazul în care se oferă opțiunea --user, se asigură că capacitățile acordate în spațiul de nume al utilizatorului sunt păstrate în procesul-copil.

--preserve-credentials

Nu modifică UID și GID atunci când intră în spațiul de nume de utilizator. Valoarea implicită este de a renunța la grupurile suplimentare și de a stabili GID și UID la 0.

-r, --root[=director]

Stabilește directorul rădăcină. Dacă nu se specifică niciun director, stabilește directorul rădăcină la directorul rădăcină al procesului țintă. Dacă este specificat directorul, stabilește directorul rădăcină la directorul specificat. directorul specificat este deschis înainte de trecerea la spațiile de nume solicitate.

-w, --wd[=director]

Stabilește directorul de lucru. Dacă nu se specifică niciun director, se stabilește directorul de lucru la directorul de lucru al procesului țintă. Dacă se specifică directorul, se stabilește directorul de lucru la directorul specificat. directorul specificat este deschis înainte de trecerea la spațiile de nume solicitate, ceea ce înseamnă că directorul specificat funcționează ca un „tunel” către spațiul de nume curent. A se vedea, de asemenea, --wdns.

-W, --wdns[=director]

Stabilește directorul de lucru. directorul este deschis după trecerea la spațiile de nume solicitate și după apelarea chroot(2). Opțiunile --wd și --wdns se exclud reciproc.

-e, --env

Transferă variabilele de mediu de la procesul țintă la noul proces care se creează. Dacă această opțiune nu este furnizată, variabilele de mediu vor rămâne aceleași ca în spațiul de nume curent.

-F, --no-fork

Nu creează o bifurcație înainte de a executa programul specificat. În mod implicit, atunci când se intră într-un spațiu de nume PID, nsenter apelează fork înainte de a apela exec, astfel încât toate procesele-copil să fie, de asemenea, în spațiul de nume PID nou intrat.

-Z, --follow-context

Stabilește contextul de securitate SELinux utilizat pentru executarea unui nou proces în funcție de procesul deja în desfășurare specificat prin --target PID; (util-linux trebuie să fie compilat cu suport SELinux, altfel opțiunea nu este disponibilă).

-c, --join-cgroup

Adaugă procesul inițiat în cgroup-ul procesului țintă.

-h, --help

Afișează acest mesaj de ajutor și iese.

-V, --version

Afișează versiunea și iese.

NOTE

Opțiunea --user-parent necesită Linux 4.9 sau o versiune mai recentă, nucleele mai vechi vor genera un ioctl necorespunzător pentru erori de dispozitiv.

Specificarea spațiilor de nume prin id-spațiu-nume necesită Linux 6.19 sau o versiune ulterioară. Dacă numele unui fișier de spațiu de nume începe cu două puncte, adăugați ./ la început pentru a elimina ambiguitatea.

AUTORI

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

CONSULTAȚI ȘI

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

RAPORTAREA ERORILOR

Pentru rapoarte de eroare, folosiți sistemul de urmărire al erorilor <https://github.com/util-linux/util-linux/issues>.

DISPONIBILITATE

Comanda nsenter face parte din pachetul util-linux care poate fi descărcat de la Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.

2026-06-17 util-linux 2.42.2