UNSHARE(1) Comenzi utilizator UNSHARE(1) NUME unshare - ruleaza programul in spaii de nume noi REZUMAT unshare [opiuni] [program [argumente]] DESCRIERE Comanda unshare creeaza noi spaii de nume (aa cum se specifica in opiunile liniei de comanda descrise mai jos) i apoi executa programul specificat. Daca nu se indica programul, atunci se executa "${SHELL}" (implicit: /bin/sh). In mod implicit, un nou spaiu de nume persista doar atat timp cat are procese membre. Un nou spaiu de nume poate fi facut persistent chiar i atunci cand nu are procese membre prin montarea ,,bind" a fiierelor /proc/pid/ns/tip la o ruta din sistemul de fiiere. Un spaiu de nume care a fost facut persistent in acest mod poate fi introdus ulterior cu nsenter(1) chiar i dupa ce programul se termina (cu excepia spaiilor de nume PID, unde este necesar un proces de init care ruleaza permanent). Odata ce un spaiu de nume persistent nu mai este necesar, acesta poate fi scos din persistena prin utilizarea umount(8) pentru a elimina montarea ,,bind". Pentru mai multe detalii, consultai seciunea EXEMPLE. Deoarece unshare, util-linux versiunea 2.36 utilizeaza fiierele /proc/[pid]/spaiu-nume/pid_pt_proces-copil i /proc/[pid]/spaiu-nume/timp_pt_proces-copil pentru spaiile de nume persistente PID i TIME. Aceasta modificare necesita nucleul Linux 4.17 sau o versiune mai noua. Urmatoarele tipuri de spaii de nume pot fi create cu unshare: mount namespace Montarea i demontarea sistemelor de fiiere nu va afecta restul sistemului, cu excepia sistemelor de fiiere care sunt marcate in mod explicit ca fiind partajate (cu mount --make-shared; consultai /proc/self/mountinfo sau findmnt -o+PROPAGATION pentru indicatoarele shared). Pentru mai multe detalii, consultai mount_namespaces(7). unshare, incepand cu util-linux versiunea 2.27, stabilete automat propagarea la private intr-un nou spaiu de nume de montare pentru a se asigura ca noul spaiu de nume este intr-adevar nepartajat. Este posibil sa dezactivai aceasta caracteristica cu opiunea --propagation unchanged. Reinei ca private este valoarea implicita a nucleului. UTS namespace Stabilirea numelui de gazda sau a numelui de domeniu nu va afecta restul sistemului. Pentru mai multe detalii, consultai uts_namespaces(7). IPC namespace Procesul va avea un spaiu de nume independent pentru cozile de mesaje POSIX, precum i pentru cozile de mesaje System V, seturile de semafoare i segmentele de memorie partajata. Pentru mai multe detalii, consultai ipc_namespaces(7). network namespace Procesul va avea stive IPv4 i IPv6 independente, tabele de direcionare IP, reguli de paravan de protecie, arborii de directoare /proc/net i /sys/class/net, socluri etc. Pentru mai multe detalii, consultai network_namespaces(7). PID namespace Procesele-copii vor avea un set de corespondene PID-proces distincte de cele ale parintelui lor. Pentru mai multe detalii, a se vedea pid_namespaces(7). cgroup namespace Procesul va avea o vizualizare virtualizata a /proc/self/cgroup, iar noile montari cgroup vor fi inradacinate la radacina spaiului de nume cgroup. Pentru mai multe detalii, consultai cgroup_namespaces(7). user namespace Procesul va avea un set distinct de UID-uri, GID-uri i capacitai. Pentru mai multe detalii, a se vedea user_namespaces(7). time namespace Procesul poate avea o viziune distincta asupra CLOCK_MONOTONIC i/sau CLOCK_BOOTTIME, care poate fi modificata cu ajutorul /proc/self/timens_offsets. Pentru mai multe detalii, a se vedea time_namespaces(7). OPIUNI -i, --ipc[=fiier] Creeaza un nou spaiu de nume IPC. Daca se specifica fiierul, atunci spaiul de nume devine persistent prin crearea unei montari de legatura la fiierul. -m, --mount[=filier] Creeaza un nou spaiu de nume de montare. Daca se specifica fiier, spaiul de nume devine persistent prin crearea unei montari de legatura la fiier. Reinei ca fiier trebuie sa fie localizat pe o montare al carei tip de propagare nu este shared (in caz contrar, se produce o eroare). Utilizai comanda findmnt -o+PROPAGATION atunci cand nu suntei sigur de configuraia curenta. Consultai i exemplele de mai jos. -n, --net[=fiier] Creeaza un nou spaiu de nume de reea. Daca se specifica fiierul, atunci spaiul de nume devine persistent prin crearea unei montari de legatura la fiierul. -p, --pid[=fiier] Creeaza un nou spaiu de nume PID. Daca se specifica fiierul, atunci spaiul de nume devine persistent prin crearea unei montari de legatura la fiierul. (Crearea unui spaiu de nume PID persistent va eua daca nu este specificata i opiunea --fork). A se vedea, de asemenea, opiunile --fork i --mount-proc. -u, --uts[=fiier] Creeaza un nou spaiu de nume UTS. Daca se specifica fiierul, atunci spaiul de nume devine persistent prin crearea unei montari de legatura la fiierul. -U, --user[=fiier] Creeaza un nou spaiu de nume de utilizator. Daca se specifica fiierul, atunci spaiul de nume devine persistent prin crearea unei montari de legatura la fiierul. -C, --cgroup[=fiier] Creeaza un nou spaiu de nume cgroup. Daca se specifica fiierul, atunci spaiul de nume devine persistent prin crearea unei montari de legatura la fiierul. -T, --time[=fiier] Creeaza un nou spaiu de nume de timp. Daca este specificat fiier, spaiul de nume este facut persistent prin crearea unei montari de legatura la fiier. Opiunile --monotonic i --boottime pot fi utilizate pentru a specifica poziia corespunzatoare in spaiul de nume de timp. -f, --fork Bifurca programul specificat ca un proces-copil al unshare, in loc sa il ruleze direct. Acest lucru este util atunci cand se creeaza un nou spaiu de nume PID. Reinei ca, atunci cand unshare ateapta procesul-copil, ignora SIGINT i SIGTERM i nu transmite niciun semnal catre procesul-copil. Este necesar sa se trimita semnale catre procesul-copil. --forward-signals Redirecioneaza semnalele SIGTERM i SIGINT primite de procesul-parinte unshare catre procesul-copil. Cand aceasta opiune nu este specificata, unshare ignora aceste semnale in timp ce ateapta incheierea procesului-copil (comportamentul implicit incepand cu util-linux 2.36). Acest lucru permite procesului-parinte sa ramana activ in timp ce procesul-copil gestioneaza semnalele. Aceasta opiune este utila atunci cand procesul-parinte unshare va primi semnale SIGTERM sau SIGINT (de exemplu, in timpul repornirii sistemului sau din partea unui gestionar de procese) i dorii ca procesul-copil sa fie notificat cu privire la cererile de inchidere ordonata, astfel incat sa poata efectua operaii de curaare. Daca procesul-copil dispune de rutine de gestionare a semnalelor (cum ar fi rutine de gestionare a semnalelor de tip shell-trap), activarea acestei opiuni le permite sa se execute. Aceasta opiune implica --fork. --keep-caps In cazul in care se ofera opiunea --user, se asigura ca capacitaile acordate in spaiul de nume al utilizatorului sunt pastrate in procesul-copil. --kill-child[=nume-semnal] Cand unshare se termina, se trimite nume-semnal la procesul-copil bifurcat. In combinaie cu --pid, acest lucru permite o eliminare uoara i fiabila a intregului arbore de procese de sub unshare. Daca nu este specificat, nume-semnal va fi SIGKILL. Aceasta opiune implica --fork. --mount-proc[=punct-montare] Chiar inainte de a rula programul, monteaza sistemul de fiiere proc la punct-montare (valoarea implicita este /proc). Acest lucru este util atunci cand se creeaza un nou spaiu de nume PID. De asemenea, implica crearea unui nou spaiu de nume de montare, deoarece, in caz contrar, montarea /proc ar incurca programele existente pe sistem. Noul sistem de fiiere proc este montat in mod explicit ca fiind privat (cu MS_PRIVATE|MS_REC). --mount-binfmt[=punct-montare] Chiar inainte de a rula programul, monteaza sistemul de fiiere proc la punct-montare (valoarea implicita este /proc/sys/fs/binfmt_misc). Aceasta implica, de asemenea, crearea unui nou spaiu de nume de montare, deoarece montarea binfmt_misc ar afecta programele existente pe sistem. Noul sistem de fiiere binfmt_misc este montat explicit ca privat (cu MS_PRIVATE|MS_REC). --map-user uid||nume Ruleaza programul numai dupa ce ID-ul de utilizator efectiv curent a fost asociat cu uid. Daca aceasta opiune este specificata de mai multe ori, ultima apariie are prioritate. Aceasta opiune implica --user. --map-usersuid-interior:uid-exterior:cantitate|auto|subids|all Ruleaza programul numai dupa ce blocul de ID-uri de utilizator cu dimensiunea cantitate care incepe la uid-exterior a fost cartografiat in blocul de ID-uri de utilizator care incepe la uid-interior. Aceasta cartografiere este creata cu newuidmap(1) daca unshare a fost rulat fara privilegii.. In cazul in care intervalul de ID-uri de utilizator se suprapune cu cartografierea specificata de --map-user, atunci o ,,gaura" va fi eliminata din cartografiere. Acest lucru poate avea ca rezultat faptul ca cel mai mare ID de utilizator din cartografiere nu este cartografiat. Utilizai --map-users de mai multe ori pentru a cartografia mai mult de un bloc de ID-uri de utilizator. Valoarea speciala auto va cartografia primul bloc de ID-uri de utilizator deinut de utilizatorul efectiv din /etc/subuid intr-un bloc care incepe cu ID-ul de utilizator 0. Valoarea speciala subids va cartografia identitatea aceluiai bloc. Valoarea speciala all va crea o harta pasata catre comanda pentru fiecare ID de utilizator disponibil in spaiul de nume parinte. Aceasta opiune implica --user. Inainte de util-linux versiunea 2.39, aceasta opiune atepta un argument separat prin virgule de forma uid-exterior,uid-interior,cantitate, dar acest format este acum depreciat pentru coerena cu ordinea folosita in /proc/[pid]/uid_map i opiunea de montare X-mount.idmap. --map-group gid|nume Ruleaza programul numai dupa ce ID-ul de grup efectiv curent a fost asociat cu gid. Daca aceasta opiune este specificata de mai multe ori, ultima apariie are prioritate. Aceasta opiune implica --setgroups=deny i --user. --map-groups gid-interior:gid:exterior:cantitate|auto|subids|all Ruleaza programul numai dupa ce blocul de ID-uri de grup cu dimensiunea cantitate care incepe la gid-exterior a fost cartografiat in blocul de ID-uri de grup care incepe la gid-interior. Aceasta cartografiere este creata cu newgidmap(1) daca unshare a fost rulat fara privilegii. In cazul in care intervalul de ID-uri de grup se suprapune cu cartografierea specificata de --map-group, atunci o ,,gaura" va fi eliminata din cartografiere. Acest lucru poate avea ca rezultat faptul ca cel mai mare ID de grup din cartografiere nu este cartografiat. Utilizai --map-groups de mai multe ori pentru a cartografia mai mult de un bloc de ID-uri de grup. Valoarea speciala auto va cartografia primul bloc de ID-uri de utilizator deinut de utilizatorul efectiv din /etc/subgid intr-un bloc care incepe cu ID-ul de grup 0. Valoarea speciala subids va cartografia identitatea aceluiai bloc. Valoarea speciala all va crea o harta pasata catre comanda pentru fiecare ID de grup disponibil in spaiul de nume parinte. Aceasta opiune implica --user. Inainte de util-linux versiunea 2.39, aceasta opiune atepta un argument separat prin virgule de forma gid-exterior,gid-interior,cantitate, dar acest format este acum depreciat pentru coerena cu ordinea folosita in /proc/[pid]/gid_map i opiunea de montare X-mount.idmap. --map-auto Cartografiaza (asociaza) primul bloc de ID-uri de utilizator deinut de utilizatorul efectiv din /etc/subuid intr-un bloc care incepe cu ID-ul de utilizator 0. In acelai mod, se cartografiaza, de asemenea, primul bloc de ID-uri de grup deinute de grupul efectiv din /etc/subgid intr-un bloc care incepe cu ID-ul de grup 0. Aceasta opiune este menita sa gestioneze cazul obinuit in care primul bloc de ID-uri de utilizator i de grup subordonate poate cartografia intregul spaiu de ID-uri de utilizator i de grup. Aceasta opiune este echivalenta cu specificarea --map-users=auto i --map-groups=auto. --map-subids Identifica cartografia primului bloc de ID-uri de utilizator deinute de utilizatorul efectiv din /etc/subuid. In acelai mod, identifica de asemenea cartografia primului bloc de ID-uri de grup deinute de grupul efectiv din /etc/subgid. Aceasta opiune este echivalenta cu specificarea --map-users=subids i --map-groups=subids. -r, --map-root-user Ruleaza programul numai dupa ce ID-urile de utilizator i de grup efective actuale au fost puse in corespondena cu UID i GID de superutilizator in spaiul de nume de utilizator nou creat. Acest lucru face posibila obinerea in mod convenabil a capacitailor necesare pentru a gestiona diverse aspecte ale spaiilor de nume nou create (cum ar fi configurarea interfeelor in spaiul de nume de reea sau montarea sistemelor de fiiere in spaiul de nume de montare), chiar i atunci cand se executa fara privilegii. Fiind o simpla caracteristica de comoditate, nu accepta cazuri de utilizare mai sofisticate, cum ar fi cartografierea (asocierea) mai multor intervale de UID i GID. Aceasta opiune implica --setgroups=deny i --user. Aceasta opiune este echivalenta cu --map-user=0 --map-group=0. -c, --map-current-user Ruleaza programul numai dupa ce ID-urile de utilizator i de grup efective actuale au fost asociate cu aceleai UID i GID in spaiul de nume de utilizator nou creat. Aceasta opiune implica --setgroups=deny i --user. Aceasta opiune este echivalenta cu --map-user=$(id -ru) --map-group=$(id -rg). --owner uid:gid Stabilete utilizatorul i grupul proprietar la crearea unui spaiu de nume de utilizator. Acestea determina care utilizator din spaiul de nume parinte deine dreptul CAP_SYS_ADMIN in noul spaiu de nume copil i poate utiliza comanda setns(2) in cadrul acestuia. Aceasta opiune permite unui utilizator privilegiat sa creeze un spaiu de nume in numele unui utilizator neprivilegiat, folosindu-i privilegiile pentru a asocia ID-uri i/sau a monta spaiul de nume in sistemul de fiiere. Aceasta implica opiunea --user. --propagation private|shared|slave|unchanged Activeaza in mod recurent fanionul de propagare a montarii in noul spaiu de nume de montare. In mod implicit, propagarea este stabilita la private. Este posibil sa se dezactiveze aceasta caracteristica cu ajutorul argumentului unchanged. Opiunea este ignorata in mod silenios atunci cand spaiul de nume de montare (--mount) nu este solicitat. --setgroups allow|deny Permite sau refuza apelul de sistem setgroups(2) intr-un spaiu de nume de utilizator. Pentru a putea apela setgroups(2), procesul care face apelul trebuie sa aiba cel puin CAP_SETGID. Dar, incepand cu Linux 3.19, se aplica o restricie suplimentara: nucleul ofera permisiunea de a apela setgroups(2) numai dupa ce harta GID (/proc/pid*/gid_map*) a fost stabilita. Harta GID poate fi scrisa de root atunci cand setgroups(2) este activata (adica allow, valoarea implicita), iar harta GID devine inscriptibila de catre procesele neprivilegiate atunci cand setgroups(2) este dezactivata permanent (cu deny). -R, --root dir ruleaza comanda cu directorul radacina stabilit la dir. -w, --wd dir schimba directorul de lucru in dir. -S, --setuid uid Stabilete ID-ul utilizatorului care va fi utilizat in spaiul de nume introdus. -G, --setgid gid Stabilete ID-ul grupului care va fi utilizat in spaiul de nume introdus i renuna la grupurile suplimentare. -l, --load-interp configurarea Incarca definiia binfmt_misc in spaiul de nume (implica --mount-binfmt). Argumentul configurarea este :name:type:offset:magic:mask:interpreter:flags. Pentru mai multe detalii despre inregistrarea noilor tipuri binare, consultai . Pentru a gestiona fanionul F din flags cu parametrul --root, binfmt_misc este montat de doua ori, o data inainte de chroot pentru a incarca interpretul din sistemul de fiiere al apelantului i o data dupa pentru a-l face disponibil din spaiul utilizator al chrootului. --monotonic decalaj Stabilete decalajul CLOCK_MONOTONIC care va fi utilizat in spaiul de nume al timpului introdus. Aceasta opiune necesita ne-partajarea unui spaiu de nume de timp cu --time. --boottime decalaj Stabilete decalajul CLOCK_BOOTTIME care va fi utilizat in spaiul de nume al timpului introdus. Aceasta opiune necesita ne-partajarea unui spaiu de nume de timp cu --time. -h, --help Afieaza acest mesaj de ajutor i iese. -V, --version Afieaza versiunea i iese. NOTE Sistemele de fiiere proc i sysfs care se monteaza ca root intr-un spaiu de nume de utilizator trebuie sa fie restricionate astfel incat un utilizator mai puin privilegiat sa nu poata avea acces la fiiere sensibile pe care un utilizator mai privilegiat nu le-a facut disponibile. Pe scurt, regula pentru proc i sysfs este sa fie cat mai aproape de o montare ,,bind". EXEMPLE Urmatoarea comanda creeaza un spaiu de nume PID, folosind --fork pentru a se asigura ca execuia comenzii este realizata intr-un proces-copil care (fiind primul proces din spaiul de nume) are PID 1. Opiunea --mount-proc asigura crearea simultana a unui nou spaiu de nume de montare i montarea unui nou sistem de fiiere proc(5) care conine informaii corespunzatoare noului spaiu de nume PID. Cand comanda readlink(1) se termina, noile spaii de nume sunt automat demontate. # unshare --fork --pid --mount-proc readlink /proc/self 1 In calitate de utilizator neprivilegiat, creai un nou spaiu de nume de utilizator in care acreditarile utilizatorului sunt puse in corespondena cu ID-urile radacina din interiorul spaiului de nume: $ id -u; id -g 1000 1000 $ unshare --user --map-root-user \ sh -c 'whoami; cat /proc/self/uid_map /proc/self/gid_map' root 0 1000 1 0 1000 1 In calitate de utilizator neprivilegiat, creai un spaiu de nume de utilizator in care primele 65536 ID-uri sunt toate alocate, iar acreditarile utilizatorului sunt alocate ID-urilor radacina din interiorul spaiului de nume. Corespondena este determinata de ID-urile subordonate atribuite in subuid(5) i subgid(5). Demonstrai aceasta corespondena prin crearea unui fiier cu ID-ul de utilizator 1 i ID-ul de grup 1. Din motive de concizie, sunt prezentate doar corespondenele ID-ului utilizatorului: $ 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 Prima dintre urmatoarele comenzi creeaza un nou spaiu de nume UTS persistent i modifica numele de gazda aa cum este vazut in acel spaiu de nume. Apoi se intra in spaiul de nume cu nsenter(1) pentru a afia numele de gazda modificat; acest pas demonstreaza ca spaiul de nume UTS continua sa existe chiar daca spaiul de nume nu mai are procese membre dupa terminarea comenzii unshare. Spaiul de nume este apoi distrus prin eliminarea montarii ,,bind". # touch /root/uts-ns # unshare --uts=/root/uts-ns hostname FOO # nsenter --uts=/root/uts-ns hostname FOO # umount /root/uts-ns Urmatoarele comenzi stabilesc un spaiu de nume de montare persistenta la care se face referire prin montarea ,,bind" /root/namespaces/mnt. Pentru a se asigura de succesul crearii acestei montari ,,bind", directorul parinte (/root/namespaces) este transformat intr-o montare ,,bind" al carei tip de propagare nu este shared. # mount --bind /root/namespaces /root/namespaces # mount --make-private /root/namespaces # touch /root/namespaces/mnt # unshare --mount=/root/namespaces/mnt Urmatoarele comenzi demonstreaza utilizarea opiunii --kill-child atunci cand se creeaza un spaiu de nume PID, pentru a se asigura ca atunci cand unshare este omorat, toate procesele din cadrul spaiului de nume PID sunt omorate. # set +m # Nu afieaza mesajele de stare a lucrarii # unshare --pid --fork --mount-proc --kill-child -- \ bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' & [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 'comm' $! # Afieaza ca munca de fond este nepartajata unshare(1) unshare # kill $! # Omoara unshare(1) # pidof sleep Comanda pidof(1) nu afieaza niciun rezultat, deoarece procesele sleep au fost omorate. Mai exact, atunci cand procesul sleep care are PID 1 in spaiul de nume (adica procesul de init al spaiului de nume) a fost omorat, aceasta aciune a dus la omorarea tuturor celorlalte procese din spaiul de nume. In schimb, o serie similara de comenzi in care nu se utilizeaza opiunea --kill-child arata ca, atunci cand unshare se termina, procesele din spaiul de nume cu PID nu sunt omorate: # unshare --pid --fork --mount-proc -- \ bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' & [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 Urmatorul exemplu demonstreaza crearea unui spaiu de nume de timp in care ceasul boottime (ora de pornire) este fixat la un punct din trecut, cu caiva ani in urma: # uptime -p # Afieaza timpul de funcionare in spaiul de nume al timpului iniial up 21 hours, 30 minutes # unshare --time --fork --boottime 300000000 uptime -p up 9 years, 28 weeks, 1 day, 2 hours, 50 minutes Urmatorul exemplu executa un chroot in directorul /chroot/powerpc/jessie i instaleaza interpretul /bin/qemu-ppc-static pentru a executa binarele powerpc. $ unshare --map-root-user --fork --pid --load-interp=":qemu-ppc:M::\\x7fELF\x01\\x02\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x14:\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff:/bin/qemu-ppc-static:OCF" --root=/chroot/powerpc/jessie /bin/bash -l Parametrul load-interp poate fi citit dupa cum urmeaza qemu-ppc este numele noului fiier creat sub /proc/sys/fs/binfmt_misc pentru a inregistra interpretul M definete interpretul pentru un anumit tip de numar magic \\x7fELF\x01\\x02\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x1 este numarul magic pentru recunoaterea fiierului de interpretat (in acest caz, antetul ELF pentru PPC32) \\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff masca care se aplica numarului magic /bin/qemu-ppc-static interpretul care urmeaza sa fie utilizat cu fiierul OCF fiierul este deschis de nucleu cu acreditarile i jetoanele de securitate ale fiierului insui i este incarcat imediat ce il inregistram. AUTORI Mikhail Gusarov , Karel Zak CONSULTAI I newuidmap(1), newgidmap(1), nsenter(1), lsns(8), clone(2), unshare(2), namespaces(7), mount(8) RAPORTAREA ERORILOR Pentru rapoarte de eroare, folosii sistemul de urmarire al erorilor . DISPONIBILITATE Comanda unshare face parte din pachetul util-linux care poate fi descarcat de la Linux Kernel Archive . util-linux 2.42.3 2026-09-02 UNSHARE(1)