Provided by: manpages-de_2.16-1_all bug

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>.