UNSHARE(1) Anvandarkommandon UNSHARE(1) NAMN unshare - kor program i nya namnomraden SYNOPSIS unshare [flaggor] [program [argument]] BESKRIVNING Kommandot unshare skapar nya namnrymder (som anges med kommandoradsflaggor som beskrivs nedan) och kor sedan det angivna programmet. Om program inte anges kors "${SHELL}" (standard: /bin/sh). Som standard finns ett nytt namnomrade bara kvar sa lange det har medlemsprocesser. Ett nytt namnomrade kan goras bestandigt aven nar det inte har nagra medlemsprocesser genom att binda montering av /proc/pid/ns/typ-filer till en filsystemssokvag. Ett namnomrade som har gjorts bestandigt pa det har sattet kan darefter betradas med nsenter(1) aven efter att programmet har avslutats (utom PID-namnomraden dar en permanent init-process kravs). Nar en persistent namnrymd inte langre behovs kan den avpersisteras genom att anvanda umount(8) for att ta bort bind mount. Se avsnittet EXEMPEL for mer information. unshare eftersom util-linux version 2.36 anvander /proc/[pid]/ns/pid_for_children och /proc/[pid]/ns/time_for_children-filer for bestandiga PID- och TIME-namnomraden. Denna andring kraver Linux-karnan 4.17 eller nyare. Foljande typer av namnrymder kan skapas med unshare: montera namnrymd Montering och avmontering av filsystem paverkar inte resten av systemet, utom for filsystem som uttryckligen markeras som delade (med mount --make-shared; se /proc/self/mountinfo eller findmnt -o+PROPAGATION for flaggorna shared). For ytterligare information, se mount_namespaces(7). unshare sedan util-linux version 2.27 staller automatiskt in propagering till private i ett nytt mount-namnomrade for att sakerstalla att det nya namnomradet verkligen ar unshared. Det ar mojligt att inaktivera den har funktionen med flaggan --propagation oforandrad. Observera att private ar karnans standardinstallning. UTS namnrymd Installning av vardnamn eller domannamn paverkar inte resten av systemet. For ytterligare information, se uts_namespaces(7). IPC-namnomrade Processen kommer att ha en oberoende namnrymd for POSIX-meddelandekoer samt System V-meddelandekoer, semaforuppsattningar och delade minnessegment. For ytterligare information, se ipc_namespaces(7). natverkets namnrymd Processen kommer att ha oberoende IPv4- och IPv6-stackar, IP-routingtabeller, brandvaggsregler, katalogtraden /proc/net och /sys/class/net, uttag, etc. For ytterligare information, se network_namespaces(7). PID namnomrade Barn kommer att ha en annan uppsattning PID-till-process-mappningar an sin foralder. For ytterligare information, se pid_namespaces(7). cgroup namnomrade Processen kommer att ha en virtualiserad vy av /proc/self/cgroup, och nya cgroup-monteringar kommer att ha sin rot i namnrymden cgroup root. For ytterligare information, se cgroup_namespaces(7). anvandarens namnomrade Processen kommer att ha en distinkt uppsattning UID:er, GID:er och kapaciteter. For ytterligare information, se user_namespaces(7). tid namnrymd Processen kan ha en egen syn pa CLOCK_MONOTONIC och/eller CLOCK_BOOTTIME som kan andras med /proc/self/timens_offsets. For ytterligare information, se time_namespaces(7). FLAGGOR -i, --ipc[=fil] Skapa ett nytt IPC-namnomrade. Om fil anges gors namnrymden bestandig genom att skapa en bind mount pa fil. -m, --mount[=fil] Skapa ett nytt mount-namnomrade. Om fil anges gors namnomradet bestandigt genom att ett bind-mount skapas pa fil. Observera att fil maste finnas pa en mount vars propagationstyp inte ar shared (annars uppstar ett fel). Anvand kommandot findmnt -o+PROPAGATION om du inte ar saker pa den aktuella installningen. Se aven exemplen nedan. -n, --net[=fil] Skapa ett nytt natverksnamnomrade. Om fil anges gors namnrymden bestandig genom att skapa en bind mount pa fil. -p, --pid[=fil] Skapa ett nytt PID-namnomrade. Om fil anges gors namnrymden bestandig genom att skapa en bind mount pa fil. (Skapandet av ett bestandigt PID-namnomrade misslyckas om flaggan --fork inte ocksa anges) Se aven flaggorna --fork och --mount-proc. -u, --uts[=fil] Skapa ett nytt UTS-namnomrade. Om fil anges gors namnrymden bestandig genom att skapa en bind mount pa fil. -U, --user[=fil] Skapa ett nytt anvandarnamnomrade. Om fil anges gors namnomradet bestandigt genom att skapa en bind mount pa fil. -C, --cgroup[=fil] Skapa ett nytt cgroup-namnomrade. Om fil anges gors namnomradet bestandigt genom att skapa en bind mount pa fil. -T, --time[=fil] Skapa ett nytt tidsnamnomrade. Om fil anges gors namnrymden bestandig genom att skapa en bind mount pa fil. Flaggorna --monotonic och --boottime kan anvandas for att ange motsvarande forskjutning i tidsnamnrymden. -f, --fork Fork det angivna programmet som en underordnad process till unshare i stallet for att kora det direkt. Detta ar anvandbart nar du skapar ett nytt PID-namnomrade. Observera att nar unshare vantar pa barnprocessen ignorerar den SIGINT och SIGTERM och vidarebefordrar inga signaler till barnprocessen. Det ar nodvandigt att skicka signaler till den underordnade processen. --forward-signals Forward SIGTERM and SIGINT signals received by the parent unshare process to the child process. When this option is not specified, unshare ignores these signals while waiting for the child process to exit (the default behavior since util-linux 2.36). This allows the parent to remain alive while the child process handles the signals. This option is useful when the parent unshare process will receive SIGTERM or SIGINT signals (for example, during system reboot or from a process manager), and you want the child process to be notified of graceful shutdown requests so it can perform cleanup operations. If your child process has signal handlers (such as shell trap handlers), enabling this option allows them to execute. This option implies --fork. --keep-caps Nar flaggan --user anges ska du se till att de mojligheter som ges i anvandarnamnomradet bevaras i barnprocessen. --kill-child[=signame] Nar unshare avslutas ska signame skickas till den forgrenade barnprocessen. Kombinerat med --pid mojliggor detta en enkel och tillforlitlig dodande av hela processtradet under unshare. Om signame inte anges ar standardvardet SIGKILL. Denna flagga implicerar --fork. --mount-proc[=monteringspunkt] Precis innan du kor programmet ska du montera proc-filsystemet pa monteringspunkt (standard ar /proc). Detta ar anvandbart nar du skapar ett nytt PID-namnomrade. Det innebar ocksa att man skapar ett nytt mount-namnomrade eftersom /proc-monteringen annars skulle stora befintliga program pa systemet. Det nya proc-filsystemet ar uttryckligen monterat som privat (med MS_PRIVATE|MS_REC). --mount-binfmt[=monteringspunkt] Just before running the program, mount the binfmt_misc filesystem at mountpoint (default is /proc/sys/fs/binfmt_misc). It also implies creating a new mount namespace since the binfmt_misc mount would otherwise mess up existing programs on the system. The new binfmt_misc filesystem is explicitly mounted as private (with MS_PRIVATE|MS_REC). --map-user uid|namn Kor programmet forst efter att det aktuella effektiva anvandar-ID:t har mappats till uid. Om denna flagga anges flera ganger har den sista forekomsten foretrade. Denna flagga implicerar --user. --map-users inneruid:outeruid:count|auto|subids|all Kor programmet forst efter att blocket med anvandar-ID:n av storleken count som borjar pa outeruid har mappats till blocket med anvandar-ID:n som borjar pa inneruid. Denna mappning skapas med newuidmap(1) om unshare kordes utan privilegier. Om intervallet med anvandar-ID:n overlappar med den mappning som anges av --map-user, kommer ett "hal" att tas bort fran mappningen. Detta kan resultera i att det hogsta anvandar-ID:t i mappningen inte mappas. Anvand --map-users flera ganger for att mappa mer an ett block med anvandar-ID:n. Specialvardet auto mappar det forsta blocket med anvandar-ID som ags av den faktiska anvandaren fran /etc/subuid till ett block som borjar med anvandar-ID 0. Det sarskilda vardet subids identitetsmappar samma block. Specialvardet all skapar en pass-through-mappning for varje anvandar-ID som finns i det overordnade namnomradet. Denna flagga implicerar --user. Fore util-linux version 2.39 forvantade sig den har flaggan ett kommaseparerat argument av formen outeruid,inneruid,count men det formatet ar nu borttaget for att overensstamma med den ordning som anvands i /proc/[pid]/uid_map och monteringsflaggan X-mount.idmap. --map-group gid|namn Kor programmet forst efter att det aktuella effektiva grupp-ID:t har mappats till gid. Om den har flaggan anges flera ganger har den sista forekomsten foretrade. Den har flaggan forutsatter --setgroups=deny och --user. --map-groups innergid:outergid:count|auto|subids|all Kor programmet forst efter att blocket med grupp-ID:n av storleken count som borjar pa outergid har mappats till blocket med grupp-ID:n som borjar pa innergid. Denna mappning skapas med newgidmap(1) om unshare kordes utan privilegier. Om intervallet med grupp-ID:n overlappar med den mappning som anges av --map-group, kommer ett "hal" att tas bort fran mappningen. Detta kan resultera i att det hogsta grupp-ID:t i mappningen inte mappas. Anvand --map-groups flera ganger for att mappa mer an ett block med grupp-ID:n. Specialvardet auto mappar det forsta blocket med anvandar-ID som ags av den faktiska anvandaren fran /etc/subgid till ett block som borjar med grupp-ID 0. Specialvardet subids identitetsmappar samma block. Specialvardet all skapar en pass-through-mappning for varje grupp-ID som ar tillgangligt i den overordnade namnrymden. Denna flagga forutsatter --user. Fore util-linux version 2.39 forvantade sig den har flaggan ett kommaseparerat argument av formen outergid,innergid,count men det formatet ar nu borttaget for att overensstamma med den ordning som anvands i /proc/[pid]/gid_map och monteringsflaggan X-mount.idmap. --map-auto Mappa det forsta blocket med anvandar-ID som ags av den faktiska anvandaren fran /etc/subuid till ett block som borjar pa anvandar-ID 0. Pa samma satt mappar du aven det forsta blocket med grupp-ID:n som ags av den effektiva gruppen fran /etc/subgid till ett block som borjar pa grupp-ID 0. Den har flaggan ar avsett att hantera det vanliga fallet dar det forsta blocket med underordnade anvandar- och grupp-ID:n kan mappa hela anvandar- och grupp-ID-utrymmet. Den har flaggan ar likvardigt med att ange --map-users=auto och --map-groups=auto. --map-subids Identitetsmappa det forsta blocket med anvandar-ID:n som ags av den faktiska anvandaren fran /etc/subuid. Pa samma satt identitetskartlaggs aven det forsta blocket med grupp-ID:n som ags av den faktiska gruppen fran /etc/subgid. Denna flagga ar likvardigt med att ange --map-users=subids och --map-groups=subids. -r, --map-root-user Kor programmet forst efter att de aktuella effektiva anvandar- och grupp-ID:n har mappats till superanvandarens UID och GID i den nyskapade anvandarnamnrymden. Detta gor det mojligt att pa ett bekvamt satt fa de funktioner som behovs for att hantera olika aspekter av de nyskapade namnrymderna (t.ex. konfigurera granssnitt i natverksnamnrymden eller montera filsystem i mount-namnrymden) aven nar programmet kors utan privilegier. Det ar en ren bekvamlighetsfunktion och stoder inte mer sofistikerade anvandningsfall, t.ex. mappning av flera UID- och GID-intervall. Den har flaggan forutsatter --setgroups=deny och --user. Den har flaggan ar likvardigt med --map-user=0 --map-group=0. -c, --map-current-user Kor programmet forst efter att de aktuella effektiva anvandar- och grupp-ID:n har mappats till samma UID och GID i det nyskapade anvandarnamnomradet. Den har flaggan forutsatter --setgroups=deny och --user. Den har flaggan motsvarar --map-user=$(id -ru) --map-group=$(id -rg). --owner uid:gid Set the owner user and group when creating a user namespace. These determine which user in the parent namespace has CAP_SYS_ADMIN in the new child namespace and can setns(2) into it. This option allows a privileged user to create a namespace on behalf of an unprivileged one, using its privileges to map ids and/or bind mount the namespace into the filesystem. It implies --user. --propagation private|shared|slave|unchanged Staller rekursivt in flaggan for mount-propagering i det nya mount-namnomradet. Standardinstallningen ar att satta spridningen till private. Det ar mojligt att inaktivera den har funktionen med argumentet unchanged. Flaggan ignoreras i tysthet nar namnomradet for montering (--mount) inte begars. --setgroups allow|deny Tillat eller neka systemanropet setgroups(2) i ett anvandarnamnomrade. For att kunna anropa setgroups(2) maste den anropande processen atminstone ha CAP_SETGID. Men sedan Linux 3.19 galler ytterligare en begransning: karnan ger tillstand att anropa setgroups(2) forst efter att GID-kartan (/proc/pid*/gid_map*) har stallts in. GID-kartan ar skrivbar av root nar setgroups(2) ar aktiverad (dvs. allow, standard), och GID-kartan blir skrivbar av oprivilegierade processer nar setgroups(2) ar permanent inaktiverad (med deny). -R, --root dir kor kommandot med rotkatalogen installd pa dir. -w, --wd dir andra arbetskatalog till dir. -S, --setuid uid Ange det anvandar-ID som ska anvandas i den angivna namnrymden. -G, --setgid gid Ange det grupp-ID som ska anvandas i den angivna namnrymden och slapp tillaggsgrupper. -l, --load-interp strang Ladda binfmt_misc-definitionen i namnrymden (innebar --mount-binfmt). Argumentet strang ar :namn:typ:offset:magic:mask:tolk:flaggor. For mer information om registrering av nya binara typer, se . For att hantera F-flaggan i flags med parametern --root monteras binfmt_misc tva ganger, en gang fore chroot for att ladda tolken fran det anropande filsystemet och en gang efter for att gora den tillganglig fran chroot-anvandarutrymmet. --monotonic offset Stall in den offset for CLOCK_MONOTONIC som ska anvandas i den angivna tidsnamnrymden. Denna flagga kraver att en tidsnamnrymd inte delas med --time. --boottime offset Stall in den offset for CLOCK_BOOTTIME som ska anvandas i den angivna tidsnamnrymden. Denna flagga kraver att en tidsnamnrymd inte delas med --time. -h, --help Visa hjalptext och avsluta. -V, --version Visa version och avsluta. ANTECKNINGAR Filsystemen proc och sysfs som monteras som root i ett anvandarnamnomrade maste begransas sa att en mindre privilegierad anvandare inte kan fa mer tillgang till kansliga filer som en mer privilegierad anvandare gjorde otillgangliga. Kort sagt ar regeln for proc och sysfs sa nara en bind mount som mojligt. EXEMPEL Foljande kommando skapar ett PID-namnomrade och anvander --fork for att se till att kommandot utfors i en underordnad process som (eftersom den ar den forsta processen i namnomradet) har PID 1. Flaggan --mount-proc sakerstaller att en ny mount-namnrymd samtidigt skapas och att ett nytt proc(5)-filsystem monteras som innehaller information som motsvarar den nya PID-namnrymden. Nar kommandot readlink(1) avslutas rivs de nya namnrymderna automatiskt. # unshare --fork --pid --mount-proc readlink /proc/self 1 Skapa en ny anvandarnamnrymd som en icke-privilegierad anvandare dar anvandarens autentiseringsuppgifter mappas till rot-ID:n i namnrymden: $ 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 Som en icke-privilegierad anvandare skapar du ett anvandarnamnomrade dar de forsta 65536 ID:n mappas och anvandarens autentiseringsuppgifter mappas till rot-ID:n i namnomradet. Mappningen bestams av de underordnade ID:n som tilldelats i subuid(5) och subgid(5). Demonstrera denna mappning genom att skapa en fil med anvandar-ID 1 och grupp-ID 1. I korthet visas endast mappningarna av anvandar-ID: $ id -u 1000 $ katt /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 fil; chown 1:1 fil # ls -ln --time-style=+ file -rw-r--r-- 1 1 1 0 fil # exit $ ls -ln --time-style=+ fil -rw-r--r-- 1 100000 100000 0 fil Det forsta av foljande kommandon skapar ett nytt bestandigt UTS-namnomrade och andrar vardnamnet sa som det visas i det namnomradet. Namnrymden oppnas sedan med nsenter(1) for att visa det modifierade vardnamnet; detta steg visar att UTS-namnrymden fortsatter att existera aven om namnrymden inte hade nagra medlemsprocesser efter att kommandot unshare avslutades. Namnrymden forstors sedan genom att bind mount tas bort. # touch /root/uts-ns # unshare --uts=/root/uts-ns hostname FOO # nsenter --uts=/root/uts-ns hostname FOO # umount /root/uts-ns Foljande kommandon upprattar ett bestandigt namnomrade for montering som refereras av bindningsmonteringen /root/namespaces/mnt. For att sakerstalla att skapandet av denna bind-mount lyckas gors den overordnade katalogen (/root/namespaces) till en bind-mount vars spridningstyp inte ar shared. # mount --bind /root/namespaces /root/namespaces # mount --make-private /root/namespaces # touch /root/namespaces/mnt # unshare --mount=/root/namespaces/mnt Foljande kommandon visar hur du anvander flaggan --kill-child nar du skapar en PID-namnrymd, for att sakerstalla att alla processer inom PID-namnrymden dodas nar unshare dodas. # set +m # Skriv inte ut statusmeddelanden for jobb # unshare --pid --fork --mount-proc --kill-child -- \ bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' & [1] 53456 # PID TTY STAT TID KOMMANDO 1 pts/3 S+ 0:00 somn 999 3 pts/3 S+ 0:00 somn 555 5 pts/3 R+ 0:00 ps a # ps h -o 'comm' $! # Visa att bakgrundsjobbet ar unshare(1) unshare # kill $! # Kill unshare(1) # pidof somn Kommandot pidof(1) ger ingen utdata, eftersom sleep-processerna har dodats. Narmare bestamt, nar sleep-processen som har PID 1 i namnrymden (dvs. namnrymdens init-process) dodades, ledde detta till att alla andra processer i namnrymden dodades. Daremot visar en liknande serie kommandon dar flaggan --kill-child inte anvands att processerna i PID-namnomradet inte dodas nar unshare avslutas: # unshare --pid --fork --mount-proc -- \ bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' & [1] 53479 # PID TTY STAT TID KOMMANDO 1 pts/3 S+ 0:00 somn 999 3 pts/3 S+ 0:00 somn 555 5 pts/3 R+ 0:00 ps a # kill $! # pidof somn 53482 53480 Foljande exempel visar hur man skapar ett tidsnamnomrade dar klockan boottime ar installd pa en tidpunkt flera ar bakat i tiden: # uptime -p # Visa upptid i det ursprungliga tidsnamnrymden upp 21 timmar, 30 minuter # unshare --time --fork --boottime 300000000 uptime -p upp 9 ar, 28 veckor, 1 dag, 2 timmar, 50 minuter The following example executes a chroot into the directory /chroot/powerpc/jessie and installs the interpreter /bin/qemu-ppc-static to execute the powerpc binaries. $ 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 Parametern load-interp kan lasas pa foljande satt qemu-ppc ar namnet pa den nya fil som skapas under /proc/sys/fs/binfmt_misc for att registrera tolken M definierar tolken for en viss typ av magiskt tal \\x7fELF\x01\\x02\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x1 ar det magiska talet for att kanna igen filen som ska tolkas (i det har fallet ELF-headern for PPC32) \\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff den mask som ska tillampas pa det magiska numret /bin/qemu-ppc-static den tolk som ska anvandas med filen OCF filen oppnas av karnan med legitimation och sakerhetstoken for sjalva filen och laddas sa snart vi registrerar den. UPPHOVSPERSONER Mikhail Gusarov , Karel Zak SE AVEN newuidmap(1), newgidmap(1), nsenter(1), lsns(8), clone(2), unshare(2), namespaces(7), mount(8) FELRAPPORTERING For felrapporter, anvand felhanteraren . TILLGANGLIGHET Kommandot unshare ingar i paketet util-linux som kan hamtas fran Linux Kernel Archive . util-linux 2.42.1 2026-05-18 UNSHARE(1)