UNSHARE(1) Dienstprogramme fur Benutzer UNSHARE(1) BEZEICHNUNG unshare - Programm in neuen Namensraumen ausfuhren UBERSICHT unshare [Optionen] [Programm [Argumente]] BESCHREIBUNG Der Befehl unshare erzeugt neue Namensraume (wie in den nachfolgend beschriebenen Befehlszeilenoptionen angegeben) und fuhrt dann das angegebene Programm aus. Falls kein Programm angegeben ist, dann wird >>${SHELL}<< ausgefuhrt (Vorgabe: /bin/sh). In der Voreinstellung ist ein neuer Namensraum nur so lange bestandig, wie er Mitgliedprozesse hat. Ein neuer Namensraum kann bestandig gemacht werden, selbst wenn es keine Mitgliedprozesse gibt, indem /proc/PID/ns/Typ-Dateien mit >>bind<< in einen Dateisystempfad eingebunden werden. Ein Namensraum, der auf diese Weise bestandig gemacht wurde, kann anschliessend mit nsenter(1) betreten werden, sogar, wenn das Programm beendet wird (ausser PID-Namensraume, bei denen ein dauerhaft laufender Init-Prozess benotigt wird). Sobald ein bestandiger Namensraum nicht langer benotigt wird, kann die Bestandigkeit mit umount(8) aufgehoben werden, um die Bind-Einhangung aufzuheben. Weitere Einzelheiten finden Sie im Abschnitt BEISPIELE. unshare verwendet seit Util-linux Version 2.36 die Dateien /proc/[PID]/ns/pid_for_children und /proc/[PID]/ns/time_for_children fur dauerhafte PID- und ZEIT-Namensraume. Diese Anderung erfordert einen Linux-Kernel der Version 4.17 oder neuer. Die folgenden Namensraumtypen konnen mit unshare erzeugt werden: Einhange-Namensraum Ein- und Aushangen von Dateisystemen betrifft den Rest des Systems nicht, ausser fur Dateisysteme, die explizit als Mehrfacheinhangungen markiert sind (mit mount --make-shared; siehe /proc/self/mountinfo oder findmnt -o+PROPAGATION fur die shared-Schalter). Fur weitere Details siehe mount_namespaces(7). Seit Util-Linux Version 2.27 setzt unshare die Ausbreitung in einem neuen Einhangenamensraum auf private, um sicherzustellen, dass der neue Namensraum wirklich getrennt ist. Diese Funktionalitat kann mit der Option --propagation unchanged deaktiviert werden. Beachten Sie, dass private die Vorgabe des Kernels ist. UTS-Namensraum Setzen des Rechner- oder Domain-Namens wird den Rest des Systems nicht betreffen. Fur weitere Details siehe uts_namespaces(7). IPC-Namensraum Der Prozess erhalt einen unabhangigen Namensraum fur POSIX-Meldungswarteschlangen sowie System-V-Meldungswarteschlangen, Semaphor-Gruppen und gemeinsam genutzte Speichersegmente. Fur weitere Details siehe ipc_namespaces(7). Netzwerk-Namensraum Der Prozess erhalt unabhangige IPv4- und IPv6-Stapel, IP-Routing-Tabellen, Firewall-Regeln, die Verzeichnisbaume /proc/net und /sys/class/net, Sockets usw. Fur weitere Details siehe network_namespaces(7). PID-Namensraum Kindprozesse werden eine eigene Gruppe von Abbildungen der PIDs zu Prozessen haben. Fur weitere Details siehe pid_namespaces(7). Cgroup-Namensraum Der Prozess wird uber einen virtualisierten Blick auf /proc/self/cgroup verfugen und neue Cgroup-Einhangungen werden ihre Wurzel in der Wurzel der Cgroup-Namensraum-Wurzel haben. Fur weitere Details siehe cgroup_namespaces(7). Benutzer-Namensraum Der Prozess wird uber eine eindeutige Gruppe an UIDs, GIDS und Capabilities verfugen. Fur weitere Details siehe user_namespaces(7). Zeit-Namensraum Der Prozess kann eine abweichende Sicht auf CLOCK_MONOTONIC und/oder CLOCK_BOOTTIME haben, was mittels /proc/self/timens_offsets geandert werden kann. Fur weitere Details, siehe time_namespaces(7). OPTIONEN -i, --ipc[=Datei] Erzeugen eines neuen IPC-Namensraums. Falls eine Datei angegeben ist, wird der Namensraum bestandig gemacht, indem eine >>bind<<-Einhangung auf der Datei erstellt wird. -m, --mount[=Datei] erstellt einen neuen Einhange-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. Beachten Sie, dass die Datei auf einem Dateisystem liegen muss, dessen Ausbreitungstyp nicht auf shared gesetzt ist (anderenfalls wurde ein Fehler auftreten). Verwenden Sie den Befehl findmnt -o+PROPAGATION, wenn Sie sich bezuglich der derzeitigen Einstellung nicht sicher sind. Lesen Sie auch die nachfolgenden Beispiele. -n, --net[=Datei] erstellt einen neuen Netz-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. -p, --pid[=Datei] erstellt einen neuen PID-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. (Die Erstellung eines bestandigen PID-Namensraums wird fehlschlagen, wenn nicht auch die Option --fork angegeben ist.) Siehe auch die Optionen --fork und --mount-proc. -u, --uts[=Datei] erstellt einen neuen UTS-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. -U, --user[=Datei] erstellt einen neuen Benutzer-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. -C, --cgroup[=Datei] erstellt einen neuen Cgroup-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. -T, --time[=Datei] erstellt einen neuen Zeit-Namensraum. Falls eine Datei angegeben ist, wird der Namensraum durch Erzeugen einer >>bind<<-Einhangung in Datei bestandig gemacht. Mit den Optionen --monotonic und --boottime konnen Sie den korrespondierenden Versatz im Zeit-Namensraum angeben. -f, --fork Forkt das angegebene Programm als Kindprozess von unshare, anstatt es direkt auszufuhren. Dies ist nutzlich, wenn Sie einen neuen PID-Namensraum erstellen. Beachten Sie: Wenn unshare auf einen Kindprozess wartet, dann ignoriert es SIGINT und SIGTERM und leitet keine Signale an den Kindprozess weiter. Es ist daher notig, Signale an den Kindprozess zu senden. --forward-signals leitet die vom unshare-Elternprozess empfangenen SIGTERM- und SIGINT-Signale an den Kindprozess weiter. Wenn diese Option nicht angegeben ist, ignoriert unshare diese Signale, wahrend es auf das Beenden des Kindprozesses wartet (Standardverhalten seit util-linux 2.36). Dadurch bleibt der Elternprozess aktiv, wahrend der Kindprozess die Signale verarbeitet. Diese Option ist nutzlich, wenn der unshare-Elternprozess SIGTERM- oder SIGINT-Signale empfangt (zum Beispiel beim Systemneustart oder von einem Prozessmanager) und der Kindprozess uber ordnungsgemasse Beendigungsanforderungen benachrichtigt werden soll, um Aufraumarbeiten durchfuhren zu konnen. Wenn Ihr Kindprozess Signalbehandlungsroutinen (zum Beispiel Shell-Trap-Handler) hat, ermoglicht die Aktivierung dieser Option deren Ausfuhrung. Diese Option impliziert --fork. --keep-caps stellt bei ubergebener Option --user sicher, dass die im Benutzernamensraum gewahrten Capabilities im Kindprozess erhalten bleiben. --kill-child[=Signalname] Wenn sich unshare beendet, soll der angegebene Signalname an den mit Fork erstellten Kindprozess gesendet werden. Kombiniert mit --pid erlaubt dies ein leichtes und zuverlassiges Toten eines gesamten Prozessbaums unterhalb von unshare. Falls nicht angegeben, ist der Signalname standardmassig SIGKILL. Diese Option impliziert --fork. --mount-proc[=Einhangepunkt] Direkt vor Ausfuhrung des Programms wird das proc-Dateisystem unter Einhangepunkt (Vorgabe ist /proc) eingehangt. Das ist bei der Erstellung eines neuen PID-Namensraums nutzlich. Dies impliziert auch die Erstellung eines neuen Einhangenamensraums, da die /proc-Einhangung ansonsten bestehende Programme auf dem System durcheinanderbringen wurde. Das neue proc-Dateisystem wird explizit als privat eingehangt (mit MS_PRIVATE|MS_REC). --mount-binfmt[=Einhangepunkt] Direkt vor Ausfuhrung des Programms wird das binfmt_misc-Dateisystem unter Einhangepunkt (Vorgabe ist /proc/sys/fs/binfmt_misc) eingehangt. Dies impliziert auch die Erstellung eines neuen Einhangenamensraums, da die binfmt_misc-Einhangung ansonsten bestehende Programme auf dem System durcheinanderbringen wurde. Das neue binfmt_misc-Dateisystem wird explizit als privat eingehangt (mit MS_PRIVATE|MS_REC). --map-user= UID|Name fuhrt das Programm erst aus, nachdem die aktuelle effektive Benutzerkennung auf UID gesetzt wurde. Falls diese Option mehrfach angegeben wird, hat die zuletzt angegebene Option Vorrang. Diese Option impliziert --user. --map-users= innere_UID:aussere_UID:Anzahl|auto|subids|all fuhrt das Programm nur aus, nachdem der Block der Benutzer-IDs der Grosse Anzahl beginnend bei der ausseren_UID auf den Block der Benutzer-IDs beginnend bei der inneren_UID abgebildet wurde. Diese Abbildung geschieht mittels newuidmap(1), falls unshare ohne Administratorrechte ausgefuhrt wurde. Falls die Bereiche der Benutzer-IDs mit der durch --map-user angegebenen Abbildung uberlappen, wird ein >>Loch<< aus der Abbildung entfernt. Dadurch kann es passieren, dass die hochste Benutzer-ID der Abbildung nicht abgebildet wird. Wenn Sie --map-users mehrfach angeben, konnen Sie so mehr als einen Block an Benutzer-IDs zuweisen. Der spezielle Wert auto bildet den ersten Block der Benutzer-IDs, der dem effektiven Benutzer aus /etc/subuid gehort, auf einen Block ab, der bei der Benutzer-ID 0 beginnt. Der spezielle Wert subids ordnet denselben Block einer Identitat zu. Der spezielle Wert all erzeugt eine Durchreichung der Zuweisung fur jede Benutzer-ID. Diese Option impliziert --user. Vor der Version 2.39 von util-linux erwartete diese Option ein durch Kommata getrenntes Argument der Form aussere_UID,innere_UID,Anzahl, aber dieses Format ist als veraltet anzusehen, um die Kompatibilitat mit der in /proc/[PID]/uid_map und in der Einhangeoption X-mount.idmap verwendeten Anordnung zu gewahrleisten. --map-group= GID|Name fuhrt das Programm erst aus, nachdem die aktuelle effektive Gruppenkennung auf GID gesetzt wurde. Falls diese Option mehrfach angegeben wird, hat die zuletzt angegebene Option Vorrang. Diese Option impliziert --setgroups=deny und --user. --map-groups= innere_GID:aussere_GID:Anzahl|auto|subids|all fuhrt das Programm erst aus, nachdem der Block von Gruppen-IDs der angegebenen Anzahl, beginnend bei der ausseren-GID, dem Block von Gruppen-IDs, beginnend bei inneren-GID, zugeordnet wurde. Diese Zuordnung wird mit newgidmap(1) erstellt, wenn unshare ohne Berechtigung ausgefuhrt wurde. Uberschneidet sich der Bereich der Gruppen-IDs mit der durch --map-group angegebenen Zuordnung, wird eine Lucke in der Zuordnung geschlossen. Dies kann dazu fuhren, dass die hochste Gruppen-ID der Zuordnung nicht zugeordnet wird. Verwenden Sie --map-groups mehrmals, um mehr als einen Block von Gruppen-IDs zuzuordnen. Der spezielle Wert auto ordnet den ersten Block von Benutzer-IDs,die dem tatsachlichen Benutzer gehoren, aus /etc/subgid einem Block zu, der bei der Gruppen-ID 0 beginnt. Der spezielle Wert subids ordnet denselben Block einer Identitat zu. DerSonderwert all erstellt eine Pass-Through-Map fur jede im ubergeordneten Namensraum verfugbare Gruppen-ID. Diese Option impliziert --user. Vor der Version 2.39 von util-linux erwartete diese Option ein durch Kommata getrenntes Argument der Form aussere_GID,innere_GID,Anzahl, aber dieses Format ist als veraltet anzusehen, um die Kompatibilitat mit der in /proc/[PID]/gid_map und in der Einhangeoption X-mount.idmap verwendeten Anordnung zu gewahrleisten. --map-auto bildet den ersten Block der Benutzerkennungen, die dem effektiven Benutzer aus /etc/subuid gehoren, auf einen Block beginnend mit der Benutzerkennung 0 ab. Auf die gleiche Weise wird auch der erste Block der Gruppenkennungen, die der effektiven Gruppe aus /etc/subgid gehoren, auf einen Block beginnend mit der Gruppenkennung 0 abgebildet. Diese Option ist fur den haufig vorkommenden Fall gedacht, in dem der erste Block untergeordneter Benutzer- und Gruppenkennungen den gesamten Benutzer- und Gruppenkennungsraum abbilden kann. Diese Option ist gleichbedeutend mit der gleichzeitigen Angabe von --map-users=auto und --map-groups=auto. --map-subids ordnet den ersten Block der Benutzer-IDs des effektiven Benutzers aus /etc/subuid zu. Auf die gleiche Weise wird auch der erste Block der Gruppen-IDs der effektiven Gruppe aus /etc/subgid zugeordnet. Diese Option entspricht der Angabe von --map-users=subids und --map-groups=subids. -r, --map-root-user Fuhrt das Programm erst aus, wenn die effektive Benutzer- und Gruppenkennungen auf die UID und GID des Systemverwalters in dem neu erstellten Namensraum abgebildet wurde. Dies ermoglicht es, bequem die benotigten Capabilities zu erlangen, um verschiedene Aspekte in dem neu erstellten Namensraum zu verwalten (wie die Konfiguration von Schnittstellen im Netzwerk-Namensraum oder das Einhangen von Dateisystemen in dem Einhangenamensraum), selbst bei unprivilegierter Ausfuhrung. Als reine Bequemlichkeitsfunktionalitat unterstutzt es keine fortgeschritteneren Anwendungsfalle, wie das Abbilden von mehreren Bereichen von UIDs und GIDs. Diese Option impliziert --setgroups=deny und --user. Diese Option ist aquivalent zu --map-user=0 --map-group=0. -c, --map-current-user fuhrt das Programm erst aus, nachdem die aktuellen effektiven Benutzer- und Gruppenkennungen im neu erzeugten Benutzernamensraum auf die gleichen Benutzer- und Gruppenkennungen gesetzt wurden. Diese Option impliziert --setgroups=deny und --user. Diese Option ist aquivalent zu --map-user=$(id -ru) --map-group=$(id -rg). --owner UID:GID legt beim Erstellen eines Benutzer-Namensraums den Eigentumerbenutzer und die Eigentumergruppe fest. Diese bestimmen, welcher Benutzer im Eltern-Namensraum die Berechtigung CAP_SYS_ADMIN im neuen Kind-Namensraum besitzt und setns(2) darauf zugreifen kann. Diese Option ermoglicht es einem privilegierten Benutzer, im Namen eines nicht privilegierten Benutzers einen Namensraum zu erstellen und dabei dessen Berechtigungen zu nutzen, um IDs zuzuordnen und/oder den Namensraum in das Dateisystem einzubinden. Dies impliziert --user. --propagation private|shared|slave|unchanged Setzt den Einhangeausbreitungsschalter in dem neuen Einhangenamensraum rekursiv. Die Vorgabe ist, die Ausbreitung auf private zu setzen. Es ist moglich, diese Funktionalitat mit dem Argument unchanged zu deaktivieren. Diese Option wird ohne Ruckmeldung ignoriert, wenn der Einhangenamensraum (--mount) nicht angefordert wird. --setgroups allow|deny Erlaubt oder verweigert den Systemaufruf setgroups(2) in Benutzer-Namensraumen. Um setgroups(2) aufrufen zu konnen, muss der aufrufende Prozess mindestens uber CAP_SETGID verfugen. Seit Linux 3.19 gilt eine weitere Einschrankung: Der Kernel erteilt die Berechtigung, setgroups(2) aufzurufen, nur nachdem die GID-Abbildung (/proc/pid*/gid_map*) eingerichtet wurde. Die GID-Abbildung ist durch Root beschreibbar, wenn setgroups(2) aktiviert ist (d.h. allow, die Vorgabe) und die GID-Abbildung wird durch unprivilegierte Prozesse beschreibbar, wenn setgroups(2) permanent deaktiviert ist (mit deny). -R, --root Verzeichnis fuhrt den Befehl aus, wobei das Wurzelverzeichnis auf das angegebene Verzeichnis gesetzt wird. -w, --wd Verzeichnis andert das Arbeitsverzeichnis auf das angegebene Verzeichnis. -S, --setuid UID legt die Benutzerkennung fest, die in dem betretenen Namensraum verwendet wird. -G, --setgid GID legt die Gruppenkennung fest, die en dem betretenen Namensraum verwendet wird und entfernt zusatzliche Gruppen. -l, --load-interp Zeichenkette ladt die binfmt_misc-Definition im Namensraum (impliziert --mount-binfmt). Das Argument Zeichenkette ist :Name:Typ:Versatz:Magic:Maske:Interpreter:Schalter.Weitere Informationen zur Registrierung neuer Binartypen finden Sie unter . Um den F-Schalter in Schalter mit dem Parameter --root zu verwalten, wird binfmt_misc zweimal eingehangt: einmal vor dem Chroot, um den Interpreter aus dem aufrufenden Dateisystem zu laden, und einmal danach, um ihn im Chroot-Benutzerbereich verfugbar zu machen. --monotonic Versatz legt den Versatz von CLOCK_MONOTONIC fest, der im betretenen Zeit-Namensraum verwendet wird. Diese Option erfordert die Trennung eines Zeit-Namensraums mit --time. --boottime Versatz legt den Versatz von CLOCK_BOOTTIME fest, der im betretenen Zeit-Namensraum verwendet wird. Diese Option erfordert die Trennung eines Zeit-Namensraums mit --time. -h, --help zeigt einen Hilfetext an und beendet das Programm. -V, --version zeigt Versionsinformationen an und beendet das Programm. ANMERKUNGEN Die proc- und sysfs-Dateisystemeinhangungen als Root in einem Benutzernamensraum mussen eingeschrankt werden, so dass ein weniger privilegierter Benutzer nicht mehr Zugriffe auf sensible Dateien haben kann, als ein hoher privilegierter Benutzer unverfugbar gemacht hat. Kurz gesagt, die Regeln fur proc und sysfs sind so ahnlich zu einer Bind-Einhangung wie moglich. BEISPIELE Der folgende Befehl erzeugt einen PID-Namensraum, wobei --fork verwendet wird, um sicherzustellen, dass der aufgerufene Befehl in einem Kind-Namensraum ausgefuhrt wird (welcher der erste Prozess im Namensraum ist), der die PID 1 hat. Die Option --mount-proc sorgt dafur, dass gleichzeitig auch ein neuer Einhangenamensraum erzeugt und ein neues proc(5)-Dateisystem eingehangt wird, das Informationen zum neuen PID-Namensraum enthalt. Wenn der Befehl readlink(1) beendet wird, werden die neuen Namensraume automatisch zerstort. # unshare --fork --pid --mount-proc readlink /proc/self 1 Mit den Rechten eines unprivilegierten Benutzers einen neuen Benutzernamensraum erstellen, in welchem die Anmeldedaten des Benutzers auf die Root-Kennungen innerhalb des Namensraums abgebildet werden: $ 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 Als unprivilegierter Benutzer einen Benutzer-Namensraum erstellen, in dem die ersten 65536 IDs alle abgebildet sind und die Anmeldedaten der Benutzer auf die Root-IDs innerhalb dieses Namensraums abgebildet sind. Die Abbildung wird durch die in subuid(5) und subgid(5) zugewiesenen Subordinaten-IDs bestimmt. Diese Abbildung durch Erstellung einer Datei mit der Benutzer-ID 1 und der Gruppen-ID 1 demonstrieren. Der Kurze halber werden nur die Abbildungen der Benutzer-IDs angezeigt: $ 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 Der erste der folgenden Befehle erzeugt einen neuen dauerhaften UTS-Namenraum und andert den Rechnernamen so, wie er im Namensraum gesehen wird. Der Namensraum wird dann mit nsenter(1) betreten, um den geanderten Rechnernamen anzuzeigen; dieser Schritt demonstriert, dass der UTS-Namensraum weiter existiert, obwohl der Namensraum nach dem Beenden des unshare-Prozesses keine eigenen Mitgliedprozesse mehr hat. Der Namensraum wird dann durch Entfernen der Bind-Einhangung zerstort. # touch /root/uts-ns # unshare --uts=/root/uts-ns hostname FOO # nsenter --uts=/root/uts-ns hostname FOO # umount /root/uts-ns Die folgenden Befehle etablieren einen dauerhaften Einhangenamensraum, der von der >>bind<<-Einhangung /root/namespaces/mnt angegeben wird. Um sicherzustellen, dass die Erzeugung dieser Bind-Einhangung erfolgreich ist, wird das Elternverzeichnis (/root/namespaces) zu einer Bind-Einhangung, deren Ausbreitungstyp nicht shared ist. # mount --bind /root/namespaces /root/namespaces # mount --make-private /root/namespaces # touch /root/namespaces/mnt # unshare --mount=/root/namespaces/mnt Die folgenden Befehle demonstrieren die Verwendung der Option --kill-child beim Erzeugen eines PID-Namensraums, um sicherzustellen, dass beim Toten von unshare alle Prozesse innerhalb des PID-Namensraums getotet werden. # set +m # Keine Meldungen zum Auftragsstatus ausgeben # 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' $! # Zeigen, dass der Hintergrund-Job unshare(1) ist unshare # kill $! # unshare(1) toten # pidof sleep Der Befehl pidof(1) gibt nichts aus, da die sleep-Prozesse getotet wurden. Genauer gesagt: Wenn der sleep-Prozess, der in dem Namensraum die Prozesskennung 1 hat (also der Init-Prozess dieses Namensraums) getotet wurde, dann werden daraufhin alle anderen Prozesse in diesem Namensraum getotet. Im Gegensatz dazu zeigt eine ahnliche Reihe von Befehlen, bei denen die Option --kill-child nicht verwendet wird, dass die Prozesse in diesem PID-Namensraum beim Beenden von unshare nicht getotet werden: # 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 Der folgende Befehl demonstriert die Erzeugung eines Zeit-Namensraums, in dem die Bootzeit-Uhr auf einen Zeitpunkt gesetzt ist, der einige Jahre in der Vergangenheit liegt: # uptime -p # Betriebszeit im ursprunglichen Zeit-Namensraum anzeigen up 21 hours, 30 minutes # unshare --time --fork --boottime 300000000 uptime -p up 9 years, 28 weeks, 1 day, 2 hours, 50 minutes Das folgende Beispiel fuhrt einen Chroot in das Verzeichnis /chroot/powerpc/jessie aus und installiert den Interpreter /bin/qemu-ppc-static, um die PowerPC-Binardateien auszufuhren. $ 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 Der Parameter load-interp kann wie folgt gelesen werden qemu-ppc ist der Name der neuen, unterhalb von /proc/sys/fs/binfmt_misc angelegten Datei, um den Interpreter zu registrieren M definiert den Interpreter fur einen gegebenen Typ einer magischen Zahl \\x7fELF\x01\\x02\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x1 ist die magische Zahl zur Erkennung der zu interpretierenden Datei (in diesem Fal der ELF-Header fur PPC32) \\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff ist die auf die magische Zahl anzuwendende Maske /bin/qemu-ppc-static ist der mit der Datei zu verwendende Interpreter OCF Die Datei wird vom Kernel mit den Anmeldeinformationen und Sicherheitstoken der Datei selbst geoffnet und geladen, sobald wir sie registrieren. AUTOREN Mikhail Gusarov , Karel Zak SIEHE AUCH newuidmap(1), newgidmap(1), nsenter(1), lsns(8), clone(2), unshare(2), namespaces(7), mount(8) FEHLER MELDEN Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem . VERFUGBARKEIT Der Befehl unshare ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.42.1 2026-05-18 UNSHARE(1)