unshare

UNSHARE(1)               Dienstprogramme für Benutzer              UNSHARE(1)



BEZEICHNUNG
       unshare - Programme ausführen, wobei einige Namensräume von dem
       Elternprozess getrennt sind

ÃBERSICHT
       unshare [Optionen] [Programm [Argumente]]

BESCHREIBUNG
       Trennt die angegebenen Namensräume von dem Elternprozess und führt
       dann das angegebene Programm aus. Falls Programm nicht angegeben ist,
       dann wird »${SHELL}« ausgeführt (Vorgabe: /bin/sh).

       Die Namensräume können wahlweise beständig gemacht werden, indem
       /proc/PID/ns/Typ-Dateien mit »bind« in einen Dateisystempfad
       eingebunden und mit nsenter(1) betreten werden, sogar, wenn das
       Programm beendet wird (auÃer PID-Namensräume, bei denen ein dauerhaft
       laufender Init-Prozess benötigt wird). Sobald ein beständiger
       Namensraum nicht länger benötigt wird, kann die Beständigkeit mit
       umount(8) aufgehoben werden. Weitere Einzelheiten finden Sie im
       Abschnitt BEISPIELE.

       Die Namensräume, die getrennt werden sollen, werden über Optionen
       angegeben. Trennbare Namensräume sind:

       Einhänge-Namensraum
              Ein- und Aushängen von Dateisystemen betrifft den Rest des
              Systems nicht, auÃer für Dateisysteme, die explizit als
              Mehrfacheinhängungen markiert sind (mit mount --make-shared;
              siehe /proc/self/mountinfo oder findmnt -o+PROPAGATION für die
              shared-Schalter). Für weitere Details siehe mount_namespaces(7)
              und die Diskussion des Schalters CLONE_NEWNS in clone(2).

              Seit Util-Linux Version 2.27 setzt unshare die Ausbreitung in
              einem neuen Einhängenamensraum auf private, um sicherzustellen,
              dass der neue Namensraum wirklich getrennt ist. Diese
              Funktionalität 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. Für weitere Details siehe namespaces(7) und
              die Diskussion des Schalters CLONE_NEWUTS in clone(2).

       IPC-Namensraum
              Der Prozess wird einen unabhängigen Namensraum für
              POSIX-Nachrichtenwarteschlangen sowie System-V-‐
              Nachrichtenwarteschlangen, Semaphore-Gruppen und gemeinsame
              Speichersegmente haben. Für weitere Details siehe namespaces(7)
              und die Diskussion des Schalters CLONE_NEWIPC in clone(2).

       Netz-Namensraum
              Der Prozess wird über unabhängige IPv4- und IPv6-Stapel,
              IP-Routing-Tabellen, Firewall-Regeln, die Verzeichnisbäume
              /proc/net und /sys/class/net usw. verfügen. Für weitere
              Details siehe namespaces(7) und die Diskussion des Schalters
              CLONE_NEWNET in clone(2).

       PID-Namensraum
              Kindprozesse werden eine eigene Gruppe von Abbildungen der PIDs
              zu Prozessen haben. Für weitere Details siehe pid_namespaces(7)
              und die Diskussion des Schalters CLONE_NEWPID in clone(2).

       Cgroup-Namensraum
              Der Prozess wird über einen virtualisierten Blick auf /proc
              /self/cgroup verfügen und neue Cgroup-Einhängungen werden ihre
              Wurzel in der Wurzel der Cgroup-Namensraum-Wurzel haben. Für
              weitere Details siehe cgroup_namespaces(7) und die Diskussion
              des Schalters CLONE_NEWCGROUP in clone(2).

       Benutzer-Namensraum
              Der Prozess wird über eine eindeutige Gruppe an UIDs, GIDS und
              Capabilities verfügen. Für weitere Details siehe
              user_namespaces(7) und die Diskussion des Schalters
              CLONE_NEWUSER in clone(2).

OPTIONEN
       -i, --ipc[=Datei]
              Trennen des IPC-Namensraums. Falls Datei angegeben ist, wird ein
              beständiger Namensraum mit einer »bind«-Einhängung erstellt.

       -m, --mount[=Datei]
              Hebt die Freigabe des eingehängten Namensraums auf. Falls Datei
              angegeben ist, wird ein beständiger Namensraum durch ein
              Einhängen mit »bind« erstellt. Beachten Sie, dass Datei auf
              einem Dateisystem liegen muss, bei dem der Ausbreitungsschalter
              auf private gesetzt ist. Verwenden Sie den Befehl findmnt
              -o+PROPAGATION, wenn Sie sich bezüglich der derzeitigen
              Einstellung nicht sicher sind. Lesen Sie auch die nachfolgenden
              Beispiele.

       -n, --net[=Datei]
              Trennen des Netz-Namensraums. Falls Datei angegeben ist, wird
              ein beständiger Namensraum mit einer »bind«-Einhängung
              erstellt.

       -p, --pid[=Datei]
              Trennen des PID-Namensraums. Falls Datei angegeben ist, wird ein
              beständiger Namensraum mit einer »bind«-Einhängung erstellt.
              Siehe auch die Optionen --fork und --mount-proc.

       -u, --uts[=Datei]
              Trennen des UTS-Namensraums. Falls Datei angegeben ist, wird ein
              beständiger Namensraum mit einer »bind«-Einhängung erstellt.

       -U, --user[=Datei]
              Trennen des Benutzer-Namensraums. Falls Datei angegeben ist,
              wird ein beständiger Namensraum mit einer »bind«-Einhängung
              erstellt.

       -C, --cgroup[=Datei]
              Trennen des Cgroup-Namensraums. Falls Datei angegeben ist, wird
              ein beständiger Namensraum mit einer »bind«-Einhängung
              erstellt.

       -f, --fork
              Verzweigt das angegebene Programm als Kindprozess von unshare,
              anstatt es direkt auszuführen. Dies ist nützlich, wenn eine
              neuer PID-Namensraum erstellt wird.

       --kill-child[=Signame]
              Wenn sich unshare beendet, soll Signame an den mit Fork
              erstellten Kindprozess gesandt werden. Kombiniert mit --pid
              erlaubt dies ein leichtes und zuverlässiges Töten eines
              gesamten Prozessbaums unterhalb von unshare. Falls nicht
              angegeben, ist Signame standardmäÃig SIGKILL. Diese Option
              impliziert --fork.

       --mount-proc[=Einhängepunkt]
              Direkt vor Ausführung des Programms wird das proc-Dateisystem
              unter Einhängepunkt (Vorgabe ist /proc) eingehängt. Das ist
              bei der Erstellung eines neuen PID-Namensraums nützlich. Dies
              impliziert auch die Erstellung eines neuen Einhängenamensraums,
              da die /proc-Einhängung ansonsten bestehende Programme auf dem
              System durcheinanderbringen würde. Das neue proc-Dateisystem
              wird explizit als privat eingehängt (mit MS_PRIVATE|MS_REC).

       -r, --map-root-user
              Führt 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 ermöglicht es,
              bequem die benötigten Capabilities zu erlangen, um verschiedene
              Aspekte in dem neu erstellten Namensraum zu verwalten (wie die
              Konfiguration von Schnittstellen im Netz-Namensraum oder das
              Einhängen von Dateisystemen in dem Einhängenamensraum), selbst
              bei unprivilegierter Ausführung. Als reine
              Bequemlichkeitsfunktionalität unterstützt es keine
              fortgeschritteneren Anwendungsfälle, wie das Abbilden von
              mehreren Bereichen von UIDs und GIDs. Diese Option impliziert
              --setgroups=deny.

       --propagation private|shared|slave|unchanged
              Setzt den Einhängeausbreitungsschalter in dem neuen
              Einhängenamensraum rekursiv. Die Vorgabe ist, die Ausbreitung
              auf private zu setzen. Es ist möglich, diese Funktionalität
              mit dem Argument unchanged zu deaktivieren. Diese Option wird
              ohne Rückmeldung ignoriert, wenn der Einhängenamensraum
              (--mount) nicht angefordert wird.

       --setgroups allow|deny
              Erlaubt oder verweigert den Systemaufruf setgroups(2) in
              Benutzer-Namensräumen.

              Um setgroups(2) aufrufen zu können, muss der aufrufende Prozess
              mindestens über CAP_SETGID verfügen. Seit Linux 3.19 gilt eine
              weitere Einschränkung: 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
              führt den Befehl aus, wobei das Wurzelverzeichnis auf das
              angegebene Verzeichnis gesetzt wird.

       -w,--wd=Verzeichnis
              ändert das Arbeitsverzeichnis auf das angegebene Verzeichnis.

       -S,--setuid Benutzerkennung
              legt die Benutzerkennung fest, die in dem betretenen Namensraum
              verwendet wird.

       -G,--setgid Gruppenkennung
              legt die Gruppenkennung fest, die en dem betretenen Namensraum
              verwendet wird und entfernt zusätzliche Gruppen.

       -V, --version
              zeigt Versionsinformationen an und beendet das Programm.

       -h, --help
              zeigt einen Hilfetext an und beendet das Programm.

ANMERKUNGEN
       Die proc- und sysfs-Dateisystemeinhängungen als Root in einem
       Benutzernamensraum müssen eingeschränkt werden, so dass ein weniger
       privilegierter Benutzer nicht mehr Zugriffe auf sensitive Dateien haben
       kann, als ein höher privilegierter Benutzer unverfügbar gemacht hat.
       Kurz gesagt, die Regeln für proc und sysfs ist so ähnlich zu einer
       Bind-Einhängung wie möglich.

BEISPIELE
       # unshare --fork --pid --mount-proc readlink /proc/self
       1
              Etabliert einen PID-Namensraum und stellt sicher, dass er PID 1
              gegen eine darin frisch eingehängte Procfs-Instanz ist.

       $ unshare --map-root-user --user sh -c whoami
       root
              Etabliert einen user-Namensraum als unprivilegierten Benutzer
              mit einem Benutzer »root« darin.

       # touch /root/uts-ns
       # unshare --uts=/root/uts-ns Rechnername FOO
       # nsenter --uts=/root/uts-ns Rechnername
       FOO
       # umount /root/uts-ns
              Etabliert einen dauerhaften UTS-Namensraum und verändert den
              Rechnernamen. Der Namensraum wird mit nsenter betreten. Der
              Namensraum wird durch Aushängen der »bind«-Referenz
              zerstört.

       # mount --bind /root/namespaces /root/namespaces
       # mount --make-private /root/namespaces
       # touch /root/namespaces/mnt
       # unshare --mount=/root/namespaces/mnt
              Etabliert einen dauerhaften Einhängenamensraum, der von der
              »bind«-Einhängung /root/namespaces/mnt angegeben wird. Dieses
              Beispiel zeigt eine portierbare Lösung, weil es sicherstellt,
              dass die »bind«-Einhängung auf einem mehrfacheingehängtem
              Dateisystem erstellt wird.

       # unshare -pf --kill-child -- bash -c (sleep 999 &) && sleep 1000 &
       # pid=$!
       # kill $pid
              Zuverlässiges Töten von Unterprozessen des Programms. Wenn
              unshare getötet wird, wird auch alles unterhalb davon getötet.
              Ohne dies wären die Kindprozesse von Programm verwaist und
              bekämen PID 1 als neuen Elternprozess.


SIEHE AUCH
       clone(2), unshare(2), namespaces(7), mount(8)

AUTOREN
       Mikhail Gusarov ⟨dottedmag@dottedmag.net⟩
       Karel Zak ⟨kzak@redhat.com⟩

VERFÃGBARKEIT
       Der Befehl unshare ist Teil des Pakets util-linux und kann von
       https://www.kernel.org/pub/linux/utils/util-linux/ heruntergeladen
       werden.


ÃBERSETZUNG
       Die deutsche Ãbersetzung dieser Handbuchseite wurde von Chris Leick
       <c.leick@vollbio.de>, Dr. Tobias Quathamer <toddy@debian.org>, Helge
       Kreutzmann <debian@helgefjell.de> und Mario Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Ãbersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Ãbersetzung dieser Handbuchseite finden,
       schicken Sie bitte eine E-Mail an <debian-l10n-
       german@lists.debian.org>.



util-linux                       Februar 2016                       UNSHARE(1)