'\" t .\" Title: unshare .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-05-18 .\" Manual: Användarkommandon .\" Source: util-linux 2.42.1 .\" Language: English .\" .TH "UNSHARE" "1" "2026-05-18" "util\-linux 2.42.1" "Användarkommandon" .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 "NAMN" unshare \- kör program i nya namnområden .SH "SYNOPSIS" .sp \fBunshare\fP [flaggor] [\fIprogram\fP [\fIargument\fP]] .SH "BESKRIVNING" .sp Kommandot \fBunshare\fP skapar nya namnrymder (som anges med kommandoradsflaggor som beskrivs nedan) och kör sedan det angivna \fIprogrammet\fP. Om \fIprogram\fP inte anges körs "${SHELL}" (standard: \fI/bin/sh\fP). .sp Som standard finns ett nytt namnområde bara kvar så länge det har medlemsprocesser. Ett nytt namnområde kan göras beständigt även när det inte har några medlemsprocesser genom att binda montering av /proc/\fIpid\fP/ns/\fItyp\fP\-filer till en filsystemssökväg. Ett namnområde som har gjorts beständigt på det här sättet kan därefter beträdas med \fBnsenter\fP(1) även efter att \fIprogrammet\fP har avslutats (utom PID\-namnområden där en permanent init\-process krävs). När en persistent namnrymd inte längre behövs kan den avpersisteras genom att använda \fBumount\fP(8) för att ta bort bind mount. Se avsnittet \fBEXEMPEL\fP för mer information. .sp \fBunshare\fP eftersom util\-linux version 2.36 använder \fI/proc/[pid]/ns/pid_for_children\fP och \fI/proc/[pid]/ns/time_for_children\fP\-filer för beständiga PID\- och TIME\-namnområden. Denna ändring kräver Linux\-kärnan 4.17 eller nyare. .sp Följande typer av namnrymder kan skapas med \fBunshare\fP: .sp \fBmontera namnrymd\fP .RS 4 Montering och avmontering av filsystem påverkar inte resten av systemet, utom för filsystem som uttryckligen markeras som delade (med \fBmount \-\-make\-shared\fP; se \fI/proc/self/mountinfo\fP eller \fBfindmnt \-o+PROPAGATION\fP för flaggorna \fBshared\fP). För ytterligare information, se \fBmount_namespaces\fP(7). .sp \fBunshare\fP sedan util\-linux version 2.27 ställer automatiskt in propagering till \fBprivate\fP i ett nytt mount\-namnområde för att säkerställa att det nya namnområdet verkligen är unshared. Det är möjligt att inaktivera den här funktionen med flaggan \fB\-\-propagation oförändrad\fP. Observera att \fBprivate\fP är kärnans standardinställning. .RE .sp \fBUTS namnrymd\fP .RS 4 Inställning av värdnamn eller domännamn påverkar inte resten av systemet. För ytterligare information, se \fButs_namespaces\fP(7). .RE .sp \fBIPC\-namnområde\fP .RS 4 Processen kommer att ha en oberoende namnrymd för POSIX\-meddelandeköer samt System V\-meddelandeköer, semaforuppsättningar och delade minnessegment. För ytterligare information, se \fBipc_namespaces\fP(7). .RE .sp \fBnätverkets namnrymd\fP .RS 4 Processen kommer att ha oberoende IPv4\- och IPv6\-stackar, IP\-routingtabeller, brandväggsregler, katalogträden \fI/proc/net\fP och \fI/sys/class/net\fP, uttag, etc. För ytterligare information, se \fBnetwork_namespaces\fP(7). .RE .sp \fBPID namnområde\fP .RS 4 Barn kommer att ha en annan uppsättning PID\-till\-process\-mappningar än sin förälder. För ytterligare information, se \fBpid_namespaces\fP(7). .RE .sp \fBcgroup namnområde\fP .RS 4 Processen kommer att ha en virtualiserad vy av \fI/proc/self/cgroup\fP, och nya cgroup\-monteringar kommer att ha sin rot i namnrymden cgroup root. För ytterligare information, se \fBcgroup_namespaces\fP(7). .RE .sp \fBanvändarens namnområde\fP .RS 4 Processen kommer att ha en distinkt uppsättning UID:er, GID:er och kapaciteter. För ytterligare information, se \fBuser_namespaces\fP(7). .RE .sp \fBtid namnrymd\fP .RS 4 Processen kan ha en egen syn på \fBCLOCK_MONOTONIC\fP och/eller \fBCLOCK_BOOTTIME\fP som kan ändras med \fI/proc/self/timens_offsets\fP. För ytterligare information, se \fBtime_namespaces\fP(7). .RE .SH "FLAGGOR" .sp \fB\-i\fP, \fB\-\-ipc\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt IPC\-namnområde. Om \fIfil\fP anges görs namnrymden beständig genom att skapa en bind mount på \fIfil\fP. .RE .sp \fB\-m\fP, \fB\-\-mount\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt mount\-namnområde. Om \fIfil\fP anges görs namnområdet beständigt genom att ett bind\-mount skapas på \fIfil\fP. Observera att \fIfil\fP måste finnas på en mount vars propagationstyp inte är \fBshared\fP (annars uppstår ett fel). Använd kommandot \fBfindmnt \-o+PROPAGATION\fP om du inte är säker på den aktuella inställningen. Se även exemplen nedan. .RE .sp \fB\-n\fP, \fB\-\-net\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt nätverksnamnområde. Om \fIfil\fP anges görs namnrymden beständig genom att skapa en bind mount på \fIfil\fP. .RE .sp \fB\-p\fP, \fB\-\-pid\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt PID\-namnområde. Om \fIfil\fP anges görs namnrymden beständig genom att skapa en bind mount på \fIfil\fP. (Skapandet av ett beständigt PID\-namnområde misslyckas om flaggan \fB\-\-fork\fP inte också anges) .sp Se även flaggorna \fB\-\-fork\fP och \fB\-\-mount\-proc\fP. .RE .sp \fB\-u\fP, \fB\-\-uts\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt UTS\-namnområde. Om \fIfil\fP anges görs namnrymden beständig genom att skapa en bind mount på \fIfil\fP. .RE .sp \fB\-U\fP, \fB\-\-user\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt användarnamnområde. Om \fIfil\fP anges görs namnområdet beständigt genom att skapa en bind mount på \fIfil\fP. .RE .sp \fB\-C\fP, \fB\-\-cgroup\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt cgroup\-namnområde. Om \fIfil\fP anges görs namnområdet beständigt genom att skapa en bind mount på \fIfil\fP. .RE .sp \fB\-T\fP, \fB\-\-time\fP[\fB=\fP\fIfil\fP] .RS 4 Skapa ett nytt tidsnamnområde. Om \fIfil\fP anges görs namnrymden beständig genom att skapa en bind mount på \fIfil\fP. Flaggorna \fB\-\-monotonic\fP och \fB\-\-boottime\fP kan användas för att ange motsvarande förskjutning i tidsnamnrymden. .RE .sp \fB\-f\fP, \fB\-\-fork\fP .RS 4 Fork det angivna \fIprogrammet\fP som en underordnad process till \fBunshare\fP i stället för att köra det direkt. Detta är användbart när du skapar ett nytt PID\-namnområde. Observera att när \fBunshare\fP väntar på barnprocessen ignorerar den \fBSIGINT\fP och \fBSIGTERM\fP och vidarebefordrar inga signaler till barnprocessen. Det är nödvändigt att skicka signaler till den underordnade processen. .RE .sp \fB\-\-forward\-signals\fP .RS 4 Forward \fBSIGTERM\fP and \fBSIGINT\fP signals received by the parent \fBunshare\fP process to the child process. When this option is not specified, \fBunshare\fP 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. .sp This option is useful when the parent \fBunshare\fP process will receive \fBSIGTERM\fP or \fBSIGINT\fP 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. .sp This option implies \fB\-\-fork\fP. .RE .sp \fB\-\-keep\-caps\fP .RS 4 När flaggan \fB\-\-user\fP anges ska du se till att de möjligheter som ges i användarnamnområdet bevaras i barnprocessen. .RE .sp \fB\-\-kill\-child\fP[\fB=\fP\fIsigname\fP] .RS 4 När \fBunshare\fP avslutas ska \fIsigname\fP skickas till den förgrenade barnprocessen. Kombinerat med \fB\-\-pid\fP möjliggör detta en enkel och tillförlitlig dödande av hela processträdet under \fBunshare\fP. Om \fIsigname\fP inte anges är standardvärdet \fBSIGKILL\fP. Denna flagga implicerar \fB\-\-fork\fP. .RE .sp \fB\-\-mount\-proc\fP[\fB=\fP\fImonteringspunkt\fP] .RS 4 Precis innan du kör programmet ska du montera proc\-filsystemet på \fImonteringspunkt\fP (standard är \fI/proc\fP). Detta är användbart när du skapar ett nytt PID\-namnområde. Det innebär också att man skapar ett nytt mount\-namnområde eftersom \fI/proc\fP\-monteringen annars skulle störa befintliga program på systemet. Det nya proc\-filsystemet är uttryckligen monterat som privat (med \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-mount\-binfmt\fP[\fB=\fP\fImonteringspunkt\fP] .RS 4 Just before running the program, mount the binfmt_misc filesystem at \fImountpoint\fP (default is \fI/proc/sys/fs/binfmt_misc\fP). 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 \fBMS_PRIVATE\fP|\fBMS_REC\fP). .RE .sp \fB\-\-map\-user\fP \fIuid\fP|\fInamn\fP .RS 4 Kör programmet först efter att det aktuella effektiva användar\-ID:t har mappats till \fIuid\fP. Om denna flagga anges flera gånger har den sista förekomsten företräde. Denna flagga implicerar \fB\-\-user\fP. .RE .sp \fB\-\-map\-users\fP \fIinneruid\fP\fB:\fP\fIouteruid\fP\fB:\fP\fIcount\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP .RS 4 Kör programmet först efter att blocket med användar\-ID:n av storleken \fIcount\fP som börjar på \fIouteruid\fP har mappats till blocket med användar\-ID:n som börjar på \fIinneruid\fP. Denna mappning skapas med \fBnewuidmap\fP(1) om \fBunshare\fP kördes utan privilegier. Om intervallet med användar\-ID:n överlappar med den mappning som anges av \fB\-\-map\-user\fP, kommer ett "hål" att tas bort från mappningen. Detta kan resultera i att det högsta användar\-ID:t i mappningen inte mappas. Använd \fB\-\-map\-users\fP flera gånger för att mappa mer än ett block med användar\-ID:n. Specialvärdet \fBauto\fP mappar det första blocket med användar\-ID som ägs av den faktiska användaren från \fI/etc/subuid\fP till ett block som börjar med användar\-ID 0. Det särskilda värdet \fBsubids\fP identitetsmappar samma block. Specialvärdet \fBall\fP skapar en pass\-through\-mappning för varje användar\-ID som finns i det överordnade namnområdet. Denna flagga implicerar \fB\-\-user\fP. .sp Före util\-linux version 2.39 förväntade sig den här flaggan ett kommaseparerat argument av formen \fIouteruid\fP\fB,\fP\fIinneruid\fP\fB,\fP\fIcount\fP men det formatet är nu borttaget för att överensstämma med den ordning som används i \fI/proc/[pid]/uid_map\fP och monteringsflaggan \fIX\-mount.idmap\fP. .RE .sp \fB\-\-map\-group\fP \fIgid\fP|\fInamn\fP .RS 4 Kör programmet först efter att det aktuella effektiva grupp\-ID:t har mappats till \fIgid\fP. Om den här flaggan anges flera gånger har den sista förekomsten företräde. Den här flaggan förutsätter \fB\-\-setgroups=deny\fP och \fB\-\-user\fP. .RE .sp \fB\-\-map\-groups\fP \fIinnergid\fP\fB:\fP\fIoutergid\fP\fB:\fP\fIcount\fP|\fBauto\fP|\fBsubids\fP|\fBall\fP .RS 4 Kör programmet först efter att blocket med grupp\-ID:n av storleken \fIcount\fP som börjar på \fIoutergid\fP har mappats till blocket med grupp\-ID:n som börjar på \fIinnergid\fP. Denna mappning skapas med \fBnewgidmap\fP(1) om \fBunshare\fP kördes utan privilegier. Om intervallet med grupp\-ID:n överlappar med den mappning som anges av \fB\-\-map\-group\fP, kommer ett "hål" att tas bort från mappningen. Detta kan resultera i att det högsta grupp\-ID:t i mappningen inte mappas. Använd \fB\-\-map\-groups\fP flera gånger för att mappa mer än ett block med grupp\-ID:n. Specialvärdet \fBauto\fP mappar det första blocket med användar\-ID som ägs av den faktiska användaren från \fI/etc/subgid\fP till ett block som börjar med grupp\-ID 0. Specialvärdet \fBsubids\fP identitetsmappar samma block. Specialvärdet \fBall\fP skapar en pass\-through\-mappning för varje grupp\-ID som är tillgängligt i den överordnade namnrymden. Denna flagga förutsätter \fB\-\-user\fP. .sp Före util\-linux version 2.39 förväntade sig den här flaggan ett kommaseparerat argument av formen \fIoutergid\fP\fB,\fP\fIinnergid\fP\fB,\fP\fIcount\fP men det formatet är nu borttaget för att överensstämma med den ordning som används i \fI/proc/[pid]/gid_map\fP och monteringsflaggan \fIX\-mount.idmap\fP. .RE .sp \fB\-\-map\-auto\fP .RS 4 Mappa det första blocket med användar\-ID som ägs av den faktiska användaren från \fI/etc/subuid\fP till ett block som börjar på användar\-ID 0. På samma sätt mappar du även det första blocket med grupp\-ID:n som ägs av den effektiva gruppen från \fI/etc/subgid\fP till ett block som börjar på grupp\-ID 0. Den här flaggan är avsett att hantera det vanliga fallet där det första blocket med underordnade användar\- och grupp\-ID:n kan mappa hela användar\- och grupp\-ID\-utrymmet. Den här flaggan är likvärdigt med att ange \fB\-\-map\-users=auto\fP och \fB\-\-map\-groups=auto\fP. .RE .sp \fB\-\-map\-subids\fP .RS 4 Identitetsmappa det första blocket med användar\-ID:n som ägs av den faktiska användaren från \fI/etc/subuid\fP. På samma sätt identitetskartläggs även det första blocket med grupp\-ID:n som ägs av den faktiska gruppen från \fI/etc/subgid\fP. Denna flagga är likvärdigt med att ange \fB\-\-map\-users=subids\fP och \fB\-\-map\-groups=subids\fP. .RE .sp \fB\-r\fP, \fB\-\-map\-root\-user\fP .RS 4 Kör programmet först efter att de aktuella effektiva användar\- och grupp\-ID:n har mappats till superanvändarens UID och GID i den nyskapade användarnamnrymden. Detta gör det möjligt att på ett bekvämt sätt få de funktioner som behövs för att hantera olika aspekter av de nyskapade namnrymderna (t.ex. konfigurera gränssnitt i nätverksnamnrymden eller montera filsystem i mount\-namnrymden) även när programmet körs utan privilegier. Det är en ren bekvämlighetsfunktion och stöder inte mer sofistikerade användningsfall, t.ex. mappning av flera UID\- och GID\-intervall. Den här flaggan förutsätter \fB\-\-setgroups=deny\fP och \fB\-\-user\fP. Den här flaggan är likvärdigt med \fB\-\-map\-user=0 \-\-map\-group=0\fP. .RE .sp \fB\-c\fP, \fB\-\-map\-current\-user\fP .RS 4 Kör programmet först efter att de aktuella effektiva användar\- och grupp\-ID:n har mappats till samma UID och GID i det nyskapade användarnamnområdet. Den här flaggan förutsätter \fB\-\-setgroups=deny\fP och \fB\-\-user\fP. Den här flaggan motsvarar \fB\-\-map\-user=$(id \-ru) \-\-map\-group=$(id \-rg)\fP. .RE .sp \fB\-\-owner\fP \fIuid\fP\fB:\fP\fIgid\fP .RS 4 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 \fBsetns\fP(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 \fB\-\-user\fP. .RE .sp \fB\-\-propagation\fP \fBprivate\fP|\fBshared\fP|\fBslave\fP|\fBunchanged\fP .RS 4 Ställer rekursivt in flaggan för mount\-propagering i det nya mount\-namnområdet. Standardinställningen är att sätta spridningen till \fIprivate\fP. Det är möjligt att inaktivera den här funktionen med argumentet \fBunchanged\fP. Flaggan ignoreras i tysthet när namnområdet för montering (\fB\-\-mount\fP) inte begärs. .RE .sp \fB\-\-setgroups\fP \fBallow\fP|\fBdeny\fP .RS 4 Tillåt eller neka systemanropet \fBsetgroups\fP(2) i ett användarnamnområde. .sp För att kunna anropa \fBsetgroups\fP(2) måste den anropande processen åtminstone ha \fBCAP_SETGID\fP. Men sedan Linux 3.19 gäller ytterligare en begränsning: kärnan ger tillstånd att anropa \fBsetgroups\fP(2) först efter att GID\-kartan (\fB/proc/\fP\fIpid\fP*/gid_map*) har ställts in. GID\-kartan är skrivbar av root när \fBsetgroups\fP(2) är aktiverad (dvs. \fBallow\fP, standard), och GID\-kartan blir skrivbar av oprivilegierade processer när \fBsetgroups\fP(2) är permanent inaktiverad (med \fBdeny\fP). .RE .sp \fB\-R\fP, \fB\-\-root\fP \fIdir\fP .RS 4 kör kommandot med rotkatalogen inställd på \fIdir\fP. .RE .sp \fB\-w\fP, \fB\-\-wd\fP \fIdir\fP .RS 4 ändra arbetskatalog till \fIdir\fP. .RE .sp \fB\-S\fP, \fB\-\-setuid\fP \fIuid\fP .RS 4 Ange det användar\-ID som ska användas i den angivna namnrymden. .RE .sp \fB\-G\fP, \fB\-\-setgid\fP \fIgid\fP .RS 4 Ange det grupp\-ID som ska användas i den angivna namnrymden och släpp tilläggsgrupper. .RE .sp \fB\-l\fP, \fB\-\-load\-interp\fP \fIsträng\fP .RS 4 Ladda binfmt_misc\-definitionen i namnrymden (innebär \fB\-\-mount\-binfmt\fP). Argumentet \fIsträng\fP är \f(CR:namn:typ:offset:magic:mask:tolk:flaggor\fP. För mer information om registrering av nya binära typer, se \c .URL "https://www.kernel.org/doc/Documentation/admin\-guide/binfmt\-misc.rst" "" "." För att hantera F\-flaggan i \f(CRflags\fP med parametern \fB\-\-root\fP monteras binfmt_misc två gånger, en gång före chroot för att ladda tolken från det anropande filsystemet och en gång efter för att göra den tillgänglig från chroot\-användarutrymmet. .RE .sp \fB\-\-monotonic\fP \fIoffset\fP .RS 4 Ställ in den offset för \fBCLOCK_MONOTONIC\fP som ska användas i den angivna tidsnamnrymden. Denna flagga kräver att en tidsnamnrymd inte delas med \fB\-\-time\fP. .RE .sp \fB\-\-boottime\fP \fIoffset\fP .RS 4 Ställ in den offset för \fBCLOCK_BOOTTIME\fP som ska användas i den angivna tidsnamnrymden. Denna flagga kräver att en tidsnamnrymd inte delas med \fB\-\-time\fP. .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 Visa hjälptext och avsluta. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 Visa version och avsluta. .RE .SH "ANTECKNINGAR" .sp Filsystemen proc och sysfs som monteras som root i ett användarnamnområde måste begränsas så att en mindre privilegierad användare inte kan få mer tillgång till känsliga filer som en mer privilegierad användare gjorde otillgängliga. Kort sagt är regeln för proc och sysfs så nära en bind mount som möjligt. .SH "EXEMPEL" .sp Följande kommando skapar ett PID\-namnområde och använder \fB\-\-fork\fP för att se till att kommandot utförs i en underordnad process som (eftersom den är den första processen i namnområdet) har PID 1. Flaggan \fB\-\-mount\-proc\fP säkerställer att en ny mount\-namnrymd samtidigt skapas och att ett nytt \fBproc\fP(5)\-filsystem monteras som innehåller information som motsvarar den nya PID\-namnrymden. När kommandot \fBreadlink\fP(1) avslutas rivs de nya namnrymderna automatiskt. .sp .if n .RS 4 .nf .fam C # unshare \-\-fork \-\-pid \-\-mount\-proc readlink /proc/self 1 .fam .fi .if n .RE .sp Skapa en ny användarnamnrymd som en icke\-privilegierad användare där användarens autentiseringsuppgifter mappas till rot\-ID:n i namnrymden: .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 Som en icke\-privilegierad användare skapar du ett användarnamnområde där de första 65536 ID:n mappas och användarens autentiseringsuppgifter mappas till rot\-ID:n i namnområdet. Mappningen bestäms av de underordnade ID:n som tilldelats i \fBsubuid\fP(5) och \fBsubgid\fP(5). Demonstrera denna mappning genom att skapa en fil med användar\-ID 1 och grupp\-ID 1. I korthet visas endast mappningarna av användar\-ID: .sp .if n .RS 4 .nf .fam C $ 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 .fam .fi .if n .RE .sp Det första av följande kommandon skapar ett nytt beständigt UTS\-namnområde och ändrar värdnamnet så som det visas i det namnområdet. Namnrymden öppnas sedan med \fBnsenter\fP(1) för att visa det modifierade värdnamnet; detta steg visar att UTS\-namnrymden fortsätter att existera även om namnrymden inte hade några medlemsprocesser efter att kommandot \fBunshare\fP avslutades. Namnrymden förstörs sedan genom att bind mount tas bort. .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 Följande kommandon upprättar ett beständigt namnområde för montering som refereras av bindningsmonteringen \fI/root/namespaces/mnt\fP. För att säkerställa att skapandet av denna bind\-mount lyckas görs den överordnade katalogen (\fI/root/namespaces\fP) till en bind\-mount vars spridningstyp inte är \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 Följande kommandon visar hur du använder flaggan \fB\-\-kill\-child\fP när du skapar en PID\-namnrymd, för att säkerställa att alla processer inom PID\-namnrymden dödas när \fBunshare\fP dödas. .sp .if n .RS 4 .nf .fam C # set +m # Skriv inte ut statusmeddelanden för jobb # unshare \-\-pid \-\-fork \-\-mount\-proc \-\-kill\-child \-\- \(rs bash \-\-norc \-c \*(Aq(sleep 555 &) && (ps a &) && sleep 999\*(Aq & [1] 53456 # PID TTY STAT TID KOMMANDO 1 pts/3 S+ 0:00 sömn 999 3 pts/3 S+ 0:00 sömn 555 5 pts/3 R+ 0:00 ps a # ps h \-o \*(Aqcomm\*(Aq $!\& # Visa att bakgrundsjobbet är unshare(1) unshare # kill $!\& # Kill unshare(1) # pidof sömn .fam .fi .if n .RE .sp Kommandot \fBpidof\fP(1) ger ingen utdata, eftersom \fBsleep\fP\-processerna har dödats. Närmare bestämt, när \fBsleep\fP\-processen som har PID 1 i namnrymden (dvs. namnrymdens init\-process) dödades, ledde detta till att alla andra processer i namnrymden dödades. Däremot visar en liknande serie kommandon där flaggan \fB\-\-kill\-child\fP inte används att processerna i PID\-namnområdet inte dödas när \fBunshare\fP avslutas: .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 TID KOMMANDO 1 pts/3 S+ 0:00 sömn 999 3 pts/3 S+ 0:00 sömn 555 5 pts/3 R+ 0:00 ps a # kill $! # pidof sömn 53482 53480 .fam .fi .if n .RE .sp Följande exempel visar hur man skapar ett tidsnamnområde där klockan boottime är inställd på en tidpunkt flera år bakåt i tiden: .sp .if n .RS 4 .nf .fam C # uptime \-p # Visa upptid i det ursprungliga tidsnamnrymden upp 21 timmar, 30 minuter # unshare \-\-time \-\-fork \-\-boottime 300000000 uptime \-p upp 9 år, 28 veckor, 1 dag, 2 timmar, 50 minuter .fam .fi .if n .RE .sp The following example executes a chroot into the directory \fI/chroot/powerpc/jessie\fP and installs the interpreter \fI/bin/qemu\-ppc\-static\fP to execute the powerpc binaries. .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 Parametern \f(CRload\-interp\fP kan läsas på följande sätt .RS 4 .sp \f(CRqemu\-ppc\fP .RS 4 är namnet på den nya fil som skapas under \f(CR/proc/sys/fs/binfmt_misc\fP för att registrera tolken .RE .sp \f(CRM\fP .RS 4 definierar tolken för en viss typ av magiskt tal .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 är det magiska talet för att känna igen filen som ska tolkas (i det här fallet ELF\-headern för 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 den mask som ska tillämpas på det magiska numret .RE .sp \f(CR/bin/qemu\-ppc\-static\fP .RS 4 den tolk som ska användas med filen .RE .sp \f(CROCF\fP .RS 4 filen öppnas av kärnan med legitimation och säkerhetstoken för själva filen och laddas så snart vi registrerar den. .RE .RE .SH "UPPHOVSPERSONER" .sp .MTO "dottedmag\(atdottedmag.net" "Mikhail Gusarov" "," .MTO "kzak\(atredhat.com" "Karel Zak" "" .SH "SE ÄVEN" .sp \fBnewuidmap\fP(1), \fBnewgidmap\fP(1), \fBnsenter\fP(1), \fBlsns\fP(8), \fBclone\fP(2), \fBunshare\fP(2), \fBnamespaces\fP(7), \fBmount\fP(8) .SH "FELRAPPORTERING" .sp För felrapporter, använd \c .URL "https://github.com/util\-linux/util\-linux/issues" "felhanteraren" "." .SH "TILLGÄNGLIGHET" .sp Kommandot \fBunshare\fP ingår i paketet util\-linux som kan hämtas från \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Linux Kernel Archive" "."