'\" t .\" Title: unshare .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.23 .\" Date: 2025-03-29 .\" Manual: Comenzi utilizator .\" Source: util-linux 2.41 .\" Language: English .\" .TH "UNSHARE" "1" "2025-03-29" "util\-linux 2.41" "Comenzi utilizator" .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 "NUME" unshare \- rulează programul în spații de nume noi .SH "REZUMAT" .sp \fBunshare\fP [opțiuni] [\fIprogram\fP [\fIargumente\fP]] .SH "DESCRIERE" .sp Comanda \fBunshare\fP creează noi spații de nume (așa cum se specifică în opțiunile liniei de comandă descrise mai jos) și apoi execută \fIprogramul\fP specificat. Dacă nu se indică \fIprogramul\fP, atunci se execută "${SHELL}" (implicit: \fI/bin/sh\fP). .sp În mod implicit, un nou spațiu de nume persistă doar atât timp cât are procese membre. Un nou spațiu de nume poate fi făcut persistent chiar și atunci când nu are procese membre prin montarea „bind” a fișierelor /proc/\fIpid\fP/ns/\fItip\fP la o rută din sistemul de fișiere. Un spațiu de nume care a fost făcut persistent în acest mod poate fi introdus ulterior cu \fBnsenter\fP(1) chiar și după ce \fIprogramul\fP se termină (cu excepția spațiilor de nume PID, unde este necesar un proces de init care rulează permanent). Odată ce un spațiu de nume persistent nu mai este necesar, acesta poate fi scos din persistență prin utilizarea \fBumount\fP(8) pentru a elimina montarea „bind”. Pentru mai multe detalii, consultați secțiunea \fBEXEMPLE\fP. .sp Deoarece \fBunshare\fP, util\-linux versiunea 2.36 utilizează fișierele \fI/proc/[pid]/spațiu\-nume/pid_pt_proces\-copil\fP și \fI/proc/[pid]/spațiu\-nume/timp_pt_proces\-copil\fP pentru spațiile de nume persistente PID și TIME. Această modificare necesită nucleul Linux 4.17 sau o versiune mai nouă. .sp Următoarele tipuri de spații de nume pot fi create cu \fBunshare\fP: .sp \fBmount namespace\fP .RS 4 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 \fBmount \-\-make\-shared\fP; consultați \fI/proc/self/mountinfo\fP sau \fBfindmnt \-o+PROPAGATION\fP pentru indicatoarele \fBshared\fP). Pentru mai multe detalii, consultați \fBmount_namespaces\fP(7). .sp \fBunshare\fP, începând cu util\-linux versiunea 2.27, stabilește automat propagarea la \fBprivate\fP într\-un nou spațiu de nume de montare pentru a se asigura că noul spațiu de nume este într\-adevăr nepartajat. Este posibil să dezactivați această caracteristică cu opțiunea \fB\-\-propagation unchanged\fP. Rețineți că \fBprivate\fP este valoarea implicită a nucleului. .RE .sp \fBUTS namespace\fP .RS 4 Stabilirea numelui de gazdă sau a numelui de domeniu nu va afecta restul sistemului. Pentru mai multe detalii, consultați \fButs_namespaces\fP(7). .RE .sp \fBIPC namespace\fP .RS 4 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 \fBipc_namespaces\fP(7). .RE .sp \fBnetwork namespace\fP .RS 4 Procesul va avea stive IPv4 și IPv6 independente, tabele de direcționare IP, reguli de paravan de protecție, arborii de directoare \fI/proc/net\fP și \fI/sys/class/net\fP, socluri etc. Pentru mai multe detalii, consultați \fBnetwork_namespaces\fP(7). .RE .sp \fBPID namespace\fP .RS 4 Procesele\-copii vor avea un set de corespondențe PID\-proces distincte de cele ale părintelui lor. Pentru mai multe detalii, a se vedea \fBpid_namespaces\fP(7). .RE .sp \fBcgroup namespace\fP .RS 4 Procesul va avea o vizualizare virtualizată a \fI/proc/self/cgroup\fP, 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 \fBcgroup_namespaces\fP(7). .RE .sp \fBuser namespace\fP .RS 4 Procesul va avea un set distinct de UID\-uri, GID\-uri și capacități. Pentru mai multe detalii, a se vedea \fBuser_namespaces\fP(7). .RE .sp \fBtime namespace\fP .RS 4 Procesul poate avea o viziune distinctă asupra \fBCLOCK_MONOTONIC\fP și/sau \fBCLOCK_BOOTTIME\fP, care poate fi modificată cu ajutorul \fI/proc/self/timens_offsets\fP. Pentru mai multe detalii, a se vedea \fBtime_namespaces\fP(7). .RE .SH "OPȚIUNI" .sp \fB\-i\fP, \fB\-\-ipc\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume IPC. Dacă se specifică \fIfișierul\fP, atunci spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișierul\fP. .RE .sp \fB\-m\fP, \fB\-\-mount\fP[\fB=\fP\fIfilșier\fP] .RS 4 Creează un nou spațiu de nume de montare. Dacă se specifică \fIfișier\fP, spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișier\fP. Rețineți că \fIfișier\fP trebuie să fie localizat pe o montare al cărei tip de propagare nu este \fBshared\fP (în caz contrar, se produce o eroare). Utilizați comanda \fBfindmnt \-o+PROPAGATION\fP atunci când nu sunteți sigur de configurația curentă. Consultați și exemplele de mai jos. .RE .sp \fB\-n\fP, \fB\-\-net\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume de rețea. Dacă se specifică \fIfișierul\fP, atunci spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișierul\fP. .RE .sp \fB\-p\fP, \fB\-\-pid\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume PID. Dacă se specifică \fIfișierul\fP, atunci spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișierul\fP. (Crearea unui spațiu de nume PID persistent va eșua dacă nu este specificată și opțiunea \fB\-\-fork\fP). .sp A se vedea, de asemenea, opțiunile \fB\-\-fork\fP și \fB\-\-mount\-proc\fP. .RE .sp \fB\-u\fP, \fB\-\-uts\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume UTS. Dacă se specifică \fIfișierul\fP, atunci spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișierul\fP. .RE .sp \fB\-U\fP, \fB\-\-user\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume de utilizator. Dacă se specifică \fIfișierul\fP, atunci spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișierul\fP. .RE .sp \fB\-C\fP, \fB\-\-cgroup\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume cgroup. Dacă se specifică \fIfișierul\fP, atunci spațiul de nume devine persistent prin crearea unei montări de legătură la \fIfișierul\fP. .RE .sp \fB\-T\fP, \fB\-\-time\fP[\fB=\fP\fIfișier\fP] .RS 4 Creează un nou spațiu de nume de timp. Dacă este specificat \fIfișier\fP, spațiul de nume este făcut persistent prin crearea unei montări de legătură la \fIfișier\fP. Opțiunile \fB\-\-monotonic\fP și \fB\-\-boottime\fP pot fi utilizate pentru a specifica poziția corespunzătoare în spațiul de nume de timp. .RE .sp \fB\-f\fP, \fB\-\-fork\fP .RS 4 Bifurcă \fIprogramul\fP specificat ca un proces\-copil al \fBunshare\fP, în loc să îl ruleze direct. Acest lucru este util atunci când se creează un nou spațiu de nume PID. Rețineți că, atunci când \fBunshare\fP așteaptă procesul\-copil, ignoră \fBSIGINT\fP și \fBSIGTERM\fP și nu transmite niciun semnal către procesul\-copil. Este necesar să se trimită semnale către procesul\-copil. .RE .sp \fB\-\-keep\-caps\fP .RS 4 În cazul în care se oferă opțiunea \fB\-\-user\fP, se asigură că capacitățile acordate în spațiul de nume al utilizatorului sunt păstrate în procesul\-copil. .RE .sp \fB\-\-kill\-child\fP[\fB=\fP\fInume\-semnal\fP] .RS 4 Când \fBunshare\fP se termină, se trimite \fInume\-semnal\fP la procesul\-copil bifurcat. În combinație cu \fB\-\-pid\fP, acest lucru permite o eliminare ușoară și fiabilă a întregului arbore de procese de sub \fBunshare\fP. Dacă nu este specificat, \fInume\-semnal\fP va fi \fBSIGKILL\fP. Această opțiune implică \fB\-\-fork\fP. .RE .sp \fB\-\-mount\-proc\fP[\fB=\fP\fIpunct\-montare\fP] .RS 4 Chiar înainte de a rula programul, montează sistemul de fișiere proc la \fIpunct\-montare\fP (valoarea implicită este \fI/proc\fP). Acest lucru este util atunci când se creează un nou spațiu de nume PID. De asemenea, implică crearea unui nou spațiu de nume de montare, deoarece, în caz contrar, montarea \fI/proc\fP ar încurca programele existente pe sistem. Noul sistem de fișiere proc este montat în mod explicit ca fiind privat (cu \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-mount\-binfmt\fP[\fB=\fP\fIpunct\-montare\fP] .RS 4 Chiar înainte de a rula programul, montează sistemul de fișiere proc la \fIpunct\-montare\fP (valoarea implicită este /proc/sys/fs/binfmt_misc). Aceasta implică, de asemenea, crearea unui nou spațiu de nume de montare, deoarece montarea binfmt_misc ar afecta programele existente pe sistem. Noul sistem de fișiere binfmt_misc este montat explicit ca privat (cu \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-map\-user\fP \fIuid\fP|\fI|nume\fP .RS 4 Rulează programul numai după ce ID\-ul de utilizator efectiv curent a fost asociat cu \fIuid\fP. Dacă această opțiune este specificată de mai multe ori, ultima apariție are prioritate. Această opțiune implică \fB\-\-user\fP. .RE .sp \fB\-\-map\-users\fP\fIuid\-interior\fP\fB:\fP\fIuid\-exterior\fP\fB:\fP\fIcantitate\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP .RS 4 Rulează programul numai după ce blocul de ID\-uri de utilizator cu dimensiunea \fIcantitate\fP care începe la \fIuid\-exterior\fP a fost cartografiat în blocul de ID\-uri de utilizator care începe la \fIuid\-interior\fP. Această cartografiere este creată cu \fBnewuidmap\fP(1) dacă \fBunshare\fP a fost rulat fără privilegii.. În cazul în care intervalul de ID\-uri de utilizator se suprapune cu cartografierea specificată de \fB\-\-map\-user\fP, atunci o „gaură” va fi eliminată din cartografiere. Acest lucru poate avea ca rezultat faptul că cel mai mare ID de utilizator din cartografiere nu este cartografiat. Utilizați \fB\-\-map\-users\fP de mai multe ori pentru a cartografia mai mult de un bloc de ID\-uri de utilizator. Valoarea specială \fBauto\fP va cartografia primul bloc de ID\-uri de utilizator deținut de utilizatorul efectiv din \fI/etc/subuid\fP într\-un bloc care începe cu ID\-ul de utilizator 0. Valoarea specială \fBsubids\fP va cartografia identitatea aceluiași bloc. Valoarea specială \fBall\fP va crea o hartă pasată către comandă pentru fiecare ID de utilizator disponibil în spațiul de nume părinte. Această opțiune implică \fB\-\-user\fP. .sp Înainte de util\-linux versiunea 2.39, această opțiune aștepta un argument separat prin virgule de forma \fIuid\-exterior\fP\fB,\fP\fIuid\-interior\fP\fB,\fP\fIcantitate\fP, dar acest format este acum depreciat pentru coerență cu ordinea folosită în \fI/proc/[pid]/uid_map\fP și opțiunea de montare \fIX\-mount.idmap\fP. .RE .sp \fB\-\-map\-group\fP \fIgid\fP|\fInume\fP .RS 4 Rulează programul numai după ce ID\-ul de grup efectiv curent a fost asociat cu \fIgid\fP. Dacă această opțiune este specificată de mai multe ori, ultima apariție are prioritate. Această opțiune implică \fB\-\-setgroups=deny\fP și \fB\-\-user\fP. .RE .sp \fB\-\-map\-groups\fP \fIgid\-interior:gid\fP\fB:\fP\fIexterior\fP\fB:\fP\fIcantitate\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP .RS 4 Rulează programul numai după ce blocul de ID\-uri de grup cu dimensiunea \fIcantitate\fP care începe la \fIgid\-exterior\fP a fost cartografiat în blocul de ID\-uri de grup care începe la \fIgid\-interior\fP. Această cartografiere este creată cu \fBnewgidmap\fP(1) dacă \fBunshare\fP a fost rulat fără privilegii. În cazul în care intervalul de ID\-uri de grup se suprapune cu cartografierea specificată de \fB\-\-map\-group\fP, atunci o „gaură” va fi eliminată din cartografiere. Acest lucru poate avea ca rezultat faptul că cel mai mare ID de grup din cartografiere nu este cartografiat. Utilizați \fB\-\-map\-groups\fP de mai multe ori pentru a cartografia mai mult de un bloc de ID\-uri de grup. Valoarea specială \fBauto\fP va cartografia primul bloc de ID\-uri de utilizator deținut de utilizatorul efectiv din \fI/etc/subgid\fP într\-un bloc care începe cu ID\-ul de grup 0. Valoarea specială \fBsubids\fP va cartografia identitatea aceluiași bloc. Valoarea specială \fBall\fP va crea o hartă pasată către comandă pentru fiecare ID de grup disponibil în spațiul de nume părinte. Această opțiune implică \fB\-\-user\fP. .sp Înainte de util\-linux versiunea 2.39, această opțiune aștepta un argument separat prin virgule de forma \fIgid\-exterior\fP\fB,\fP\fIgid\-interior\fP\fB,\fP\fIcantitate\fP, dar acest format este acum depreciat pentru coerență cu ordinea folosită în \fI/proc/[pid]/gid_map\fP și opțiunea de montare \fIX\-mount.idmap\fP. .RE .sp \fB\-\-map\-auto\fP .RS 4 Cartografiază (asociază) primul bloc de ID\-uri de utilizator deținut de utilizatorul efectiv din \fI/etc/subuid\fP într\-un bloc care începe cu ID\-ul de utilizator 0. În același mod, se cartografiază, de asemenea, primul bloc de ID\-uri de grup deținute de grupul efectiv din \fI/etc/subgid\fP într\-un bloc care începe cu ID\-ul de grup 0. Această opțiune este menită să gestioneze cazul obișnuit în care primul bloc de ID\-uri de utilizator și de grup subordonate poate cartografia întregul spațiu de ID\-uri de utilizator și de grup. Această opțiune este echivalentă cu specificarea \fB\-\-map\-users=auto\fP și \fB\-\-map\-groups=auto\fP. .RE .sp \fB\-\-map\-subids\fP .RS 4 Identifică cartografia primului bloc de ID\-uri de utilizator deținute de utilizatorul efectiv din \fI/etc/subuid\fP. În același mod, identifică de asemenea cartografia primului bloc de ID\-uri de grup deținute de grupul efectiv din \fI/etc/subgid\fP. Această opțiune este echivalentă cu specificarea \fB\-\-map\-users=subids\fP și \fB\-\-map\-groups=subids\fP. .RE .sp \fB\-r\fP, \fB\-\-map\-root\-user\fP .RS 4 Rulează programul numai după ce ID\-urile de utilizator și de grup efective actuale au fost puse în corespondență cu UID și GID de superutilizator în spațiul de nume de utilizator nou creat. Acest lucru face posibilă obținerea în mod convenabil a capacităților necesare pentru a gestiona diverse aspecte ale spațiilor de nume nou create (cum ar fi configurarea interfețelor în spațiul de nume de rețea sau montarea sistemelor de fișiere în spațiul de nume de montare), chiar și atunci când se execută fără privilegii. Fiind o simplă caracteristică de comoditate, nu acceptă cazuri de utilizare mai sofisticate, cum ar fi cartografierea (asocierea) mai multor intervale de UID și GID. Această opțiune implică \fB\-\-setgroups=deny\fP și \fB\-\-user\fP. Această opțiune este echivalentă cu \fB\-\-map\-user=0 \-\-map\-group=0\fP. .RE .sp \fB\-c\fP, \fB\-\-map\-current\-user\fP .RS 4 Rulează programul numai după ce ID\-urile de utilizator și de grup efective actuale au fost asociate cu aceleași UID și GID în spațiul de nume de utilizator nou creat. Această opțiune implică \fB\-\-setgroups=deny\fP și \fB\-\-user\fP. Această opțiune este echivalentă cu \fB\-\-map\-user=$(id \-ru) \-\-map\-group=$(id \-rg)\fP. .RE .sp \fB\-\-propagation\fP \fBprivate\fP|\fBshared\fP|\fBslave\fP|\fBunchanged\fP .RS 4 Activează în mod recurent fanionul de propagare a montării în noul spațiu de nume de montare. În mod implicit, propagarea este stabilită la \fIprivate\fP. Este posibil să se dezactiveze această caracteristică cu ajutorul argumentului \fBunchanged\fP. Opțiunea este ignorată în mod silențios atunci când spațiul de nume de montare (\fB\-\-mount\fP) nu este solicitat. .RE .sp \fB\-\-setgroups\fP \fBallow\fP|\fBdeny\fP .RS 4 Permite sau refuză apelul de sistem \fBsetgroups\fP(2) într\-un spațiu de nume de utilizator. .sp Pentru a putea apela \fBsetgroups\fP(2), procesul care face apelul trebuie să aibă cel puțin \fBCAP_SETGID\fP. Dar, începând cu Linux 3.19, se aplică o restricție suplimentară: nucleul oferă permisiunea de a apela \fBsetgroups\fP(2) numai după ce harta GID (\fB/proc/\fP\fIpid\fP*/gid_map*) a fost stabilită. Harta GID poate fi scrisă de root atunci când \fBsetgroups\fP(2) este activată (adică \fBallow\fP, valoarea implicită), iar harta GID devine inscriptibilă de către procesele neprivilegiate atunci când \fBsetgroups\fP(2) este dezactivată permanent (cu \fBdeny\fP). .RE .sp \fB\-R\fP, \fB\-\-root\fP \fIdir\fP .RS 4 rulează comanda cu directorul rădăcină stabilit la \fIdir\fP. .RE .sp \fB\-w\fP, \fB\-\-wd\fP \fIdir\fP .RS 4 schimbă directorul de lucru în \fIdir\fP. .RE .sp \fB\-S\fP, \fB\-\-setuid\fP \fIuid\fP .RS 4 Stabilește ID\-ul utilizatorului care va fi utilizat în spațiul de nume introdus. .RE .sp \fB\-G\fP, \fB\-\-setgid\fP \fIgid\fP .RS 4 Stabilește ID\-ul grupului care va fi utilizat în spațiul de nume introdus și renunță la grupurile suplimentare. .RE .sp \fB\-l\fP, \fB\-\-load\-interp\fP \fIconfigurarea\fP .RS 4 Încarcă definiția binfmt_misc în spațiul de nume (implică \fB\-\-mount\-binfmt\fP). Argumentul \fIconfigurarea\fP este \f(CR:name:type:offset:magic:mask:interpreter:flags\fP. Pentru mai multe detalii despre înregistrarea noilor tipuri binare, consultați \c .URL "https://www.kernel.org/doc/Documentation/admin\-guide/binfmt\-misc.rst" "" "." Pentru a gestiona fanionul F din \f(CRflags\fP cu parametrul \fB\-\-root\fP, binfmt_misc este montat de două ori, o dată înainte de chroot pentru a încărca interpretul din sistemul de fișiere al apelantului și o dată după pentru a\-l face disponibil din spațiul utilizator al chrootului. .RE .sp \fB\-\-monotonic\fP \fIdecalaj\fP .RS 4 Stabilește decalajul \fBCLOCK_MONOTONIC\fP care va fi utilizat în spațiul de nume al timpului introdus. Această opțiune necesită ne\-partajarea unui spațiu de nume de timp cu \fB\-\-time\fP. .RE .sp \fB\-\-boottime\fP \fIdecalaj\fP .RS 4 Stabilește decalajul \fBCLOCK_BOOTTIME\fP care va fi utilizat în spațiul de nume al timpului introdus. Această opțiune necesită ne\-partajarea unui spațiu de nume de timp cu \fB\-\-time\fP. .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 Afișează acest mesaj de ajutor și iese. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 Afișează versiunea și iese. .RE .SH "NOTE" .sp Sistemele de fișiere proc și sysfs care se montează ca root într\-un spațiu de nume de utilizator trebuie să fie restricționate astfel încât un utilizator mai puțin privilegiat să nu poată avea acces la fișiere sensibile pe care un utilizator mai privilegiat nu le\-a făcut disponibile. Pe scurt, regula pentru proc și sysfs este să fie cât mai aproape de o montare „bind”. .SH "EXEMPLE" .sp Următoarea comandă creează un spațiu de nume PID, folosind \fB\-\-fork\fP pentru a se asigura că execuția comenzii este realizată într\-un proces\-copil care (fiind primul proces din spațiul de nume) are PID 1. Opțiunea \fB\-\-mount\-proc\fP asigură crearea simultană a unui nou spațiu de nume de montare și montarea unui nou sistem de fișiere \fBproc\fP(5) care conține informații corespunzătoare noului spațiu de nume PID. Când comanda \fBreadlink\fP(1) se termină, noile spații de nume sunt automat demontate. .sp .if n .RS 4 .nf .fam C # unshare \-\-fork \-\-pid \-\-mount\-proc readlink /proc/self 1 .fam .fi .if n .RE .sp În calitate de utilizator neprivilegiat, creați un nou spațiu de nume de utilizator în care acreditările utilizatorului sunt puse în corespondență cu ID\-urile rădăcină din interiorul spațiului de nume: .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 În calitate de utilizator neprivilegiat, creați un spațiu de nume de utilizator în care primele 65536 ID\-uri sunt toate alocate, iar acreditările utilizatorului sunt alocate ID\-urilor rădăcină din interiorul spațiului de nume. Corespondența este determinată de ID\-urile subordonate atribuite în \fBsubuid\fP(5) și \fBsubgid\fP(5). Demonstrați această corespondență prin crearea unui fișier cu ID\-ul de utilizator 1 și ID\-ul de grup 1. Din motive de concizie, sunt prezentate doar corespondențele ID\-ului utilizatorului: .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 file; chown 1:1 file # ls \-ln \-\-time\-style=+ file \-rw\-r\-\-r\-\- 1 1 1 0\& file # exit $ ls \-ln \-\-time\-style=+ file \-rw\-r\-\-r\-\- 1 100000 100000 0\& file .fam .fi .if n .RE .sp Prima dintre următoarele comenzi creează un nou spațiu de nume UTS persistent și modifică numele de gazdă așa cum este văzut în acel spațiu de nume. Apoi se intră în spațiul de nume cu \fBnsenter\fP(1) pentru a afișa numele de gazdă modificat; acest pas demonstrează că spațiul de nume UTS continuă să existe chiar dacă spațiul de nume nu mai are procese membre după terminarea comenzii \fBunshare\fP. Spațiul de nume este apoi distrus prin eliminarea montării „bind”. .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 Următoarele comenzi stabilesc un spațiu de nume de montare persistentă la care se face referire prin montarea „bind” \fI/root/namespaces/mnt\fP. Pentru a se asigura de succesul creării acestei montări „bind”, directorul părinte (\fI/root/namespaces\fP) este transformat într\-o montare „bind” al cărei tip de propagare nu este \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 Următoarele comenzi demonstrează utilizarea opțiunii \fB\-\-kill\-child\fP atunci când se creează un spațiu de nume PID, pentru a se asigura că atunci când \fBunshare\fP este omorât, toate procesele din cadrul spațiului de nume PID sunt omorâte. .sp .if n .RS 4 .nf .fam C # set +m\& # Nu afișează mesajele de stare a lucrării # 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 $!\& # Afișează că munca de fond este nepartajată unshare(1) unshare # kill $!\& # Omoară unshare(1) # pidof sleep .fam .fi .if n .RE .sp Comanda \fBpidof\fP(1) nu afișează niciun rezultat, deoarece procesele \fBsleep\fP au fost omorâte. Mai exact, atunci când procesul \fBsleep\fP care are PID 1 în spațiul de nume (adică procesul de init al spațiului de nume) a fost omorât, această acțiune a dus la omorârea tuturor celorlalte procese din spațiul de nume. În schimb, o serie similară de comenzi în care nu se utilizează opțiunea \fB\-\-kill\-child\fP arată că, atunci când \fBunshare\fP se termină, procesele din spațiul de nume cu PID nu sunt omorâte: .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 Următorul exemplu demonstrează crearea unui spațiu de nume de timp în care ceasul boottime (ora de pornire) este fixat la un punct din trecut, cu câțiva ani în urmă: .sp .if n .RS 4 .nf .fam C # uptime \-p\& # Afișează timpul de funcționare în spațiul de nume al timpului inițial 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 Următorul exemplu execută un chroot în directorul /chroot/powerpc/jessie și instalează interpretul /bin/qemu\-ppc\-static pentru a executa binarele 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 Parametrul \f(CRload\-interp\fP poate fi citit după cum urmează .RS 4 .sp \f(CRqemu\-ppc\fP .RS 4 este numele noului fișier creat sub \f(CR/proc/sys/fs/binfmt_misc\fP pentru a înregistra interpretul .RE .sp \f(CRM\fP .RS 4 definește interpretul pentru un anumit tip de număr magic .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 este numărul magic pentru recunoașterea fișierului de interpretat (în acest caz, antetul ELF pentru 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 masca care se aplică numărului magic .RE .sp \f(CR/bin/qemu\-ppc\-static\fP .RS 4 interpretul care urmează să fie utilizat cu fișierul .RE .sp \f(CROCF\fP .RS 4 fișierul este deschis de nucleu cu acreditările și jetoanele de securitate ale fișierului însuși și este încărcat imediat ce îl înregistrăm. .RE .RE .SH "AUTORI" .sp .MTO "dottedmag\(atdottedmag.net" "Mikhail Gusarov" "," .MTO "kzak\(atredhat.com" "Karel Zak" "" .SH "CONSULTAȚI ȘI" .sp \fBnewuidmap\fP(1), \fBnewgidmap\fP(1), \fBclone\fP(2), \fBunshare\fP(2), \fBnamespaces\fP(7), \fBmount\fP(8) .SH "RAPORTAREA ERORILOR" .sp Pentru rapoarte de eroare, folosiți \c .URL "https://github.com/util\-linux/util\-linux/issues" "sistemul de urmărire al erorilor" "." .SH "DISPONIBILITATE" .sp Comanda \fBunshare\fP face parte din pachetul util\-linux care poate fi descărcat de la \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Linux Kernel Archive" "."