Provided by: manpages-de_4.15.0-9_all bug

BEZEICHNUNG

       mount_namespaces - Überblick über Linux-Einhänge-Namensräume

BESCHREIBUNG

       Für einen Überblick über Namensräume, siehe namespaces(7).

       Einhängenamensräume   ermöglichen   es,   die   Listen   der   von   Prozessen   in  jeder
       Namensrauminstanz gesehenen  Einhängungen  voneinander  zu  isolieren.  Daher  wird  jeder
       Prozess     in     jeder     der     Einhänge-Namensrauminstanzen     eine    individuelle
       Einzelverzeichnis-Hierarchie sehen.

       Die von den Dateien /proc/[PID]/mounts, /proc/[PID]/mountinfo  und  /proc/[PID]/mountstats
       (alle    In    proc(5)    beschrieben)    bereitgestellten   Ansichten   entsprechen   den
       Einhängenamensräumen, in denen  sich  der  Prozess  mit  der  PID  [PID]  befindet.  (Alle
       Prozesse, die sich in dem gleichen Einhängenamensraum befinden, werden die gleiche Ansicht
       auf diese Dateien sehen.)

       Ein neuer Einhängenamensraum wird entweder mittels clone(2) oder  mittels  unshare(2)  mit
       dem  Schalter  CLONE_NEWNS erstellt. Wenn ein neuer Einhängenamensraum erstellt wird, wird
       seine Einhängeliste wie folgt initialisiert:

       *  Falls der Namensraum  mittels  clone(2)  erstellt  wurde,  ist  die  Einhängeliste  des
          Nachfolgenamensraums eine Kopie der Einhängeliste des Namensraums des Elternprozesses.

       *  Falls der Namensraum mittels unshare(2) erstellt wurde, ist die Einhängeliste des neuen
          Namensraums eine Kopie der Einhängeliste in dem vorherigen Namensraum  des  aufrufenden
          Prozesses.

       Nachfolgende  Änderungen  an  der  Einhängeliste  (mount(2)  und  umount(2))  in jedem der
       Namensräume wird (standardmäßig)  die  Einhängeliste,  die  in  den  anderen  Namensräumen
       gesehen  wird,  nicht betreffen (lesen Sie allerdings auch die nachfolgende Diskussion von
       gemeinsamen Unterbäumen).

GEMEINSAME UNTERBÄUME

       Nachdem  die  Implementierung  von  Einhängenamensräumen  abgeschlossen  war,  zeigte  die
       Erfahrung,  dass  die  bereitgestellte  Isolierung  in  einigen  Fällen  zu  weit ging. Um
       beispielsweise eine frisch geladene optische  Platte  in  allen  Einhängenamensräumen  zur
       Verfügung  zu  stellen,  war  in  jedem der Namensräume eine Einhängeaktion notwendig. Für
       diesen und andere Anwendungsfälle wurde die Funktionalität gemeinsamer Unterbäume in Linux
       2.6.15   eingeführt.   Diese   Funktionalität   erlaubt  die  automatische,  kontrollierte
       Weiterleitung von Einhänge- und Aushänge-Ereignissen zwischen Namensräumen (oder  genauer,
       zwischen  Einhängungen,  die  Mitglied  einer  Gemeinschaftsgruppe  sind,  die  Ereignisse
       aneinander weiterleiten).

       Jede  Einhängung  wird  (mittels  mount(2))  markiert,  dass  sie   eine   der   folgenden
       Weiterleitungstypen hat:

       MS_SHARED
              Diese   Einhängung   nutzt   Ereignisse  mit  Mitgliedern  der  Gemeinschaftsgruppe
              gemeinsam. Einhänge- und  Aushängeereignisse  direkt  unterhalb  dieser  Einhängung
              werden  zu  den anderen Einhängungen, die Mitglied dieser Gemeinschaftsgruppe sind,
              weitergeleitet. Weiterleitung bedeutet hier, dass die gleiche Ein- oder  Aushängung
              unter  allen  diesen  Einhängungen  in der Gemeinschaftsgruppe automatisch erfolgen
              wird. Entsprechend werden Ein- und Aushängungen, die unter anderen Einhängungen der
              Gruppe stattfinden, zu dieser Einhängung weitergeleitet.

       MS_PRIVATE
              Diese  Einhängung  ist  privat;  sie  ist  in keiner Gemeinschaftsgruppe. Ein- oder
              Aushängeereignisse werden nicht aus dieser Einhängung heraus  oder  in  sie  hinein
              weitergeleitet.

       MS_SLAVE
              Ein-  und  Aushängeereignisse  werden  in diese Einhängung von einer übergeordneten
              (Master-)  Gemeinschaftsgruppe  weitergeleitet.  Ein-  und  Aushängungen  unterhalb
              dieser Einhängung werden nicht zu anderen Mitgliedern der Gruppe weitergeleitet.

              Beachten   Sie,   dass   eine   Einhängung   eine   Abhängige   von  einer  anderen
              Gemeinschaftsgruppe sein kann  und  gleichzeitig  ein  Mitglied  in  einer  zweiten
              Gemeinschaftsgruppe  sein  kann, an die und von der sie Ein- und Aushängeereignisse
              sendet bzw. empfängt. (Genauer gesagt kann eine Gemeinschaftsgruppe eine  Abhängige
              einer anderen Gemeinschaftsgruppe sein).

       MS_UNBINDABLE
              Dies ist wie eine private Einhängung und zusätzlich kann diese Einhängung nicht mit
              der Option bind erfolgen. Wird versucht,  diese  Einhängung  mit  der  Option  bind
              einzuhängen (mount(2) mit dem Schalter MS_BIND), dann schlägt dies fehl.

              Wenn  eine  rekursive  Einhängung  mit  der Option bind (mount(2) mit den Schaltern
              MS_BIND  und  MS_REC)  auf  einem   Verzeichnisunterbaum   erfolgt,   werden   alle
              Einhängungen mit der Option bind innerhalb des Unterbaums automatisch abgeschnitten
              (d.h. nicht repliziert), wenn der Unterbaum repliziert wird, um den  Ziel-Unterbaum
              zu erstellen.

       Bitte  lesen Sie die HINWEISE für eine Diskussion der Weiterleitungstypen, die einer neuen
       Einhängung zugeordnet sind.

       Der  Weiterleitungstyp  ist  eine  einhängungsbezogene  Einstellung:  einige  Einhängungen
       könnten  als  gemeinsam gekennzeichnet sein (wobei jede gemeinsame Einhängung ein Mitglied
       einer unterschiedlichen Gemeinschaftsgruppe ist), während  andere  privat  (oder  abhängig
       oder nicht-bind-fähig) sind.

       Beachten   Sie,  dass  der  Weiterleitungstyp  einer  Einhängung  bestimmt,  ob  Ein-  und
       Aushängungen direkt  unter  der  Einhängung  weitergeleitet  werden.  Daher  betrifft  der
       Einhängungstyp   nicht  die  Weiterleitung  von  Ereignissen  für  weiter  unten  liegende
       Einhängungen. Was passiert, wenn die Einhängung selbst ausgehängt  wird,  wird  durch  den
       Weiterleitungstyp bestimmt, der für die übergeordnete Einhängung wirksam ist.

       Mitglieder  werden  zu  einer  Gemeinschaftsgruppe  hinzugefügt,  wenn eine Einhängung als
       gemeinsam markiert ist und entweder:

       *  die Einhängung während der Erstellung eines neuen Einhängenamensraumes repliziert wird;
          oder

       *  eine neue Einhängung mit der Option bind von dieser Einhängung erstellt wird.

       In  beiden  Fällen  tritt  die  neue  Einhängung  der Gemeinschaftsgruppe bei, bei der die
       bestehende Einhängung bereits Mitglied ist.

       Eine neue Gemeinschaftsgruppe wird auch erstellt, wenn eine nachfolgende Einhängung  unter
       einer  bestehenden  Einhängung,  die  als gemeinsam markiert ist, erstellt wird. In diesem
       Fall  wird  die  nachfolgende  Einhängung  als  gemeinsam  markiert  und  die  entstehende
       Gemeinschaftsgruppe  besteht  aus  allen  Einhängungen,  die  unterhalb der Mitglieder der
       übergeordneten Einhängung repliziert werden.

       Eine Einhängung hört auf, Mitglied einer Gemeinschaftsgruppe zu sein, wenn die  Einhängung
       entweder  explizit  ausgehängt  wird oder wenn die Einhängung implizit ausgehängt wird, da
       der Einhängenamensraum entfernt wird (da er keinen Mitgliedsprozess mehr hat).

       Der Weiterleitungstyp der  Einhängungen  in  einem  Einhängenamensraum  kann  mittels  der
       »optionalen  Felder«  in  /proc/[PID]/mountinfo  offengelegt  werden.  (Siehe  proc(5) für
       Details zu dieser Datei.) Die folgenden Markierungen können in den optionalen Feldern  für
       einen Datensatz in dieser Datei auftauchen:

       shared:X
              Diese  Einhängung  wird  in  der  Gemeinschaftsgruppe  X  gemeinsam  benutzt.  Jede
              Gemeinschaftsgruppe hat eine eindeutige Kennung, die durch den  Kernel  automatisch
              erstellt  wird.  Alle  Einhängungen  in der gleichen Gemeinschaftsgruppe werden die
              gleiche Kennung zeigen. (Diese Kennungen werden beginnend mit dem Wert 1 zugewiesen
              und  können  wiederbenutzt  werden,  wenn eine Gemeinschaftsgruppe keine Mitglieder
              mehr hat.)

       master:X
              Diese Einhängung ist eine Abhängige der gemeinsamen Gemeinschaftsgruppe X.

       propagate_from:X (seit Linux 2.6.26)
              Diese  Einhängung  ist  eine  Abhängige  und  empfängt  Weiterleitungen   von   der
              gemeinsamen  Gemeinschaftsgruppe  X. Diese Markierung wird immer zusammen mit einer
              Markierung  master:X  auftauchen.  Hier  ist   X   die   naheliegendste   dominante
              Gemeinschaftsgruppe  unter dem Wurzelverzeichnis des Prozesses. Falls X der direkte
              Master der  Einhängung  ist  oder  falls  es  keine  dominante  Gemeinschaftsgruppe
              unterhalb  der  gleichen  Wurzel gibt, dann ist nur das Feld master:X und nicht das
              Feld propagate_from:X vorhanden. Weitere Details folgen weiter unten.

       unbindable
              Dies ist eine nicht-bind-fähige Einhängung.

       Falls keine der obigen Markierungen vorhanden ist, dann ist dies eine private Einhängung.

   Beispiel für MS_SHARED und MS_PRIVATE
       Nehmen wir an, dass wir im Terminal des anfänglichen Einhängenamensraums  eine  Einhängung
       als  gemeinsam  und  eine  andere  als  privat markieren, und uns dann die Einhängungen in
       /proc/self/mountinfo anschauen:

           sh1# mount --make-shared /mntS
           sh1# mount --make-private /mntP
           sh1# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           77 61 8:17 / /mntS rw,relatime shared:1
           83 61 8:15 / /mntP rw,relatime

       In der Ausgabe in /proc/self/mountinfo  können  wir  sehen,  dass  /mntS  eine  gemeinsame
       Einhängung  in  der Gemeinschaftsgruppe 1 ist und dass /mntP keine optionalen Markierungen
       hat und damit anzeigt, dass es eine private EInhängung ist.  Die  ersten  zwei  Felder  in
       jedem  Datensatz  in dieser Datei sind die eindeutige Kennung für diese Einhängung und die
       Einhängungskennung der Elterneinhängung. Wir können diese Datei weiter untersuchen, um  zu
       sehen,  dass  die  Elterneinhängung  von  /mntS und /mntP das Wurzelverzeichnis / ist, das
       privat eingehängt wurde:

           sh1# cat /proc/self/mountinfo | awk '$1 == 61' | sed 's/ - .*//'
           61 0 8:2 / / rw,relatime

       In einem zweiten Terminal erstellen wir einen neuen Einhängenamensraum, in  dem  wir  eine
       zweite Shell ausführen und die Einhängungen untersuchen:

           $ PS1='sh2# ' sudo unshare -m --propagation unchanged sh
           sh2# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           222 145 8:17 / /mntS rw,relatime shared:1
           225 145 8:15 / /mntP rw,relatime

       Der   neue  Einhängenamensraum  erhielt  eine  Kopie  der  Einhängungen  des  anfänglichen
       Einhängenamensraumes. Diese neuen Einhängungen behalten die  gleichen  Weiterleitungstypen
       bei,   haben   aber  eindeutige  Einhängekennungen.  (Die  Option  --propagation unchanged
       verhindert, dass  unshare(1)  alle  Einhängungen  als  privat  markiert,  wenn  ein  neuer
       Einhängenamensraum erstellt wird, wie er es sonst standardmäßig machen würde.)

       In  dem zweiten Terminal erstellen wir jetzt Untereinhängungen unter sowohl /mntS als auch
       /mntP und untersuchen das Ergebnis:

           sh2# mkdir /mntS/a
           sh2# mount /dev/sdb6 /mntS/a
           sh2# mkdir /mntP/b
           sh2# mount /dev/sdb7 /mntP/b
           sh2# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           222 145 8:17 / /mntS rw,relatime shared:1
           225 145 8:15 / /mntP rw,relatime
           178 222 8:22 / /mntS/a rw,relatime shared:2
           230 225 8:23 / /mntP/b rw,relatime

       In obiger Ausgabe kann  erkannt  werden,  dass  /mntS/a  als  gemeinsame  Einhängung  (die
       Einstellung  wurde von der Elterneinhängung übernommen) und /mntP/b als private Einhängung
       erstellt wurde.

       Wird zum ersten Terminal zurückgekehrt und das Ergebnis untersucht, können wir sehen, dass
       die neue Einhängung, die unterhalb der gemeinsamen Einhängung /mntS erstellt wurde, an die
       Einhängungen  in  seiner  Gemeinschaftsgruppe  weitergeleitet   wurde   (im   anfänglichen
       Einhängenamensraum), aber die Einhängung, die unter der privaten Einhängung /mntP erstellt
       wurde, nicht weitergeleitet wurde:

           sh1# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           77 61 8:17 / /mntS rw,relatime shared:1
           83 61 8:15 / /mntP rw,relatime
           179 77 8:22 / /mntS/a rw,relatime shared:2

   MS_SLAVE-Beispiel
       Wird  eine  Einhängung  eine  Abhängige,  ist  es  möglich,   weitergeleitete   Ein-   und
       Aushängeereignisse  von  einer  gemeinsamen  Master-Gemeinschaftsgruppe  zu  erhalten  und
       zugleich sie daran zu hindern,  Ereignisse  zu  diesem  Master  weiterzuleiten.  Dies  ist
       nützlich,  wenn  Sie  (beispielsweise)  ein  Einhängeereignis  erhalten möchten, wenn eine
       optische Platte in der gemeinsamen Gemeinschaftsgruppe des  Masters  eingehängt  wird  (in
       einem   anderen   Einhängenamensraum),   aber   Sie  verhindern  möchten,  dass  Ein-  und
       Aushängeereignisse unter der  Einhängung  der  Abhängigen  zu  Seiteneffekten  in  anderen
       Namensräumen führen.

       Wir zeigen die Auswirkung der Abhängigen, indem wir zuerst zwei Einhängungen als gemeinsam
       im anfänglichen Namensraum markieren:

           sh1# mount --make-shared /mntX
           sh1# mount --make-shared /mntY
           sh1# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           132 83 8:23 / /mntX rw,relatime shared:1
           133 83 8:22 / /mntY rw,relatime shared:2

       Auf einem zweiten Terminal erstellen wir einen neuen  Einhängenamensraum  und  untersuchen
       die Einhängungen:

           sh2# unshare -m --propagation unchanged sh
           sh2# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           168 167 8:23 / /mntX rw,relatime shared:1
           169 167 8:22 / /mntY rw,relatime shared:2

       In dem neuen Einhängenamensraum können wir eine Einhängung als Abhängige markieren:

           sh2# mount --make-slave /mntY
           sh2# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           168 167 8:23 / /mntX rw,relatime shared:1
           169 167 8:22 / /mntY rw,relatime master:2

       Aus  der  obigen  Ausgabe  kann gesehen werden, dass /mntY jetzt eine abhängige Einhängung
       ist, die Weiterleitungsereignisse von der gemeinsamen Gemeinschaftsgruppe mit der  Kennung
       2 erhält.

       Im  neuen  Namensraum wird jetzt fortgefahren und Untereinhängungen unter sowohl /mntX als
       auch /mntY erstellt:

           sh2# mkdir /mntX/a
           sh2# mount /dev/sda3 /mntX/a
           sh2# mkdir /mntY/b
           sh2# mount /dev/sda5 /mntY/b

       Wenn wir den Zustand der Einhängungen in den neuen Einhängenamensräumen untersuchen, sehen
       wir,  dass /mntX/a als eine neue gemeinsame Einhängung erstellt wurde (die die Einstellung
       »shared« ihrer Elterneinhängung geerbt hat) und dass /mntY/b als eine  private  Einhängung
       erstellt wurde:

           sh2# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           168 167 8:23 / /mntX rw,relatime shared:1
           169 167 8:22 / /mntY rw,relatime master:2
           173 168 8:3 / /mntX/a rw,relatime shared:3
           175 169 8:5 / /mntY/b rw,relatime

       Zurück  im  ersten  Terminal  (im  anfänglichen  Einhängenamensraum)  sehen  wir, dass die
       Einhängung /mntX/a zu dem  Mitglied  der  Gemeinschaftsgruppe  weitergeleitet  wurde  (der
       gemeinsame /mntX), aber dass die Einhängung /mntY/b nicht weitergeleitet wurde:

           sh1# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           132 83 8:23 / /mntX rw,relatime shared:1
           133 83 8:22 / /mntY rw,relatime shared:2
           174 132 8:3 / /mntX/a rw,relatime shared:3

       Jetzt erstellen wir eine neue Einhängung unter /mntY in der ersten Shell:

           sh1# mkdir /mntY/c
           sh1# mount /dev/sda1 /mntY/c
           sh1# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           132 83 8:23 / /mntX rw,relatime shared:1
           133 83 8:22 / /mntY rw,relatime shared:2
           174 132 8:3 / /mntX/a rw,relatime shared:3
           178 133 8:1 / /mntY/c rw,relatime shared:4

       Wenn  wir  die Einhängungen in dem zweiten Einhängenamensraum untersuchen, sehen wir, dass
       in diesem Fall die Einhängung zu der abhängigen Einhängung weitergeleitet wurde  und  dass
       die neue Einhängung selbst eine Abhängige ist (von der Gemeinschaftsgruppe 4):

           sh2# cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           168 167 8:23 / /mntX rw,relatime shared:1
           169 167 8:22 / /mntY rw,relatime master:2
           173 168 8:3 / /mntX/a rw,relatime shared:3
           175 169 8:5 / /mntY/b rw,relatime
           179 169 8:1 / /mntY/c rw,relatime master:4

   MS_UNBINDABLE-Beispiel
       Einer  der  Hauptzwecke der nicht-bindfähigen Einhängungen ist die Vermeidung des Problems
       der »Einhängeexplosionen«, bei der wiederholt durchgeführte Einhängungen  mit  der  Option
       bind  eines  Unterbaums  auf einer höheren Ebene in einer Einhängung auf niedrigeren Ebene
       ausgeführt werden. Das Problem wird in der nachfolgenden Shell-Sitzung dargestellt.

       Nehmen wir an, wir haben ein System mit folgenden Einhängungen:

           # mount | awk '{print $1, $2, $3}'
           /dev/sda1 on /
           /dev/sdb6 on /mntX
           /dev/sdb7 on /mntY

       Nehmen  wir  weiterhin  an,  dass   wir   das   Wurzelverzeichnis   rekursiv   unter   den
       Home-Verzeichnissen  verschiedener  Benutzer  mit  der  Option bind einhängen möchten. Wir
       machen dies für den ersten Benutzer und untersuchen die Einhängungen:

           # mount --rbind / /home/cecilia/
           # mount | awk '{print $1, $2, $3}'
           /dev/sda1 on /
           /dev/sdb6 on /mntX
           /dev/sdb7 on /mntY
           /dev/sda1 on /home/cecilia
           /dev/sdb6 on /home/cecilia/mntX
           /dev/sdb7 on /home/cecilia/mntY

       Wenn  wir  diese  Aktion  für  den  zweiten  Benutzer  wiederholen,  beginnen   wir,   das
       Explosionsproblem zu sehen:

           # mount --rbind / /home/henry
           # mount | awk '{print $1, $2, $3}'
           /dev/sda1 on /
           /dev/sdb6 on /mntX
           /dev/sdb7 on /mntY
           /dev/sda1 on /home/cecilia
           /dev/sdb6 on /home/cecilia/mntX
           /dev/sdb7 on /home/cecilia/mntY
           /dev/sda1 on /home/henry
           /dev/sdb6 on /home/henry/mntX
           /dev/sdb7 on /home/henry/mntY
           /dev/sda1 on /home/henry/home/cecilia
           /dev/sdb6 on /home/henry/home/cecilia/mntX
           /dev/sdb7 on /home/henry/home/cecilia/mntY

       Unter  /home/henry  haben  wir  nicht  nur  die  Einhängungen  /mntX  und  /mntY  rekursiv
       hinzugefügt,  sondern  auch  die  rekursiven  Einhängungen  dieser   Verzeichnisse   unter
       /home/cecilia,  die  im  vorherigen  Schritt  erstellt wurden. Bei der Wiederholung dieses
       Schrittes für einen dritten Benutzer  wird  es  offensichtlich,  dass  die  Explosion  von
       exponentieller Natur ist:

           # mount --rbind / /home/otto
           # mount | awk '{print $1, $2, $3}'
           /dev/sda1 on /
           /dev/sdb6 on /mntX
           /dev/sdb7 on /mntY
           /dev/sda1 on /home/cecilia
           /dev/sdb6 on /home/cecilia/mntX
           /dev/sdb7 on /home/cecilia/mntY
           /dev/sda1 on /home/henry
           /dev/sdb6 on /home/henry/mntX
           /dev/sdb7 on /home/henry/mntY
           /dev/sda1 on /home/henry/home/cecilia
           /dev/sdb6 on /home/henry/home/cecilia/mntX
           /dev/sdb7 on /home/henry/home/cecilia/mntY
           /dev/sda1 on /home/otto
           /dev/sdb6 on /home/otto/mntX
           /dev/sdb7 on /home/otto/mntY
           /dev/sda1 on /home/otto/home/cecilia
           /dev/sdb6 on /home/otto/home/cecilia/mntX
           /dev/sdb7 on /home/otto/home/cecilia/mntY
           /dev/sda1 on /home/otto/home/henry
           /dev/sdb6 on /home/otto/home/henry/mntX
           /dev/sdb7 on /home/otto/home/henry/mntY
           /dev/sda1 on /home/otto/home/henry/home/cecilia
           /dev/sdb6 on /home/otto/home/henry/home/cecilia/mntX
           /dev/sdb7 on /home/otto/home/henry/home/cecilia/mntY

       Das  Einhänge-Explosionsproblem  im  obigen Szenario kann vermieden werden, indem jede der
       neuen Einhängungen nicht-bindfähig  gemacht  wird.  Die  Auswirkung  ist,  dass  rekursive
       Einhängungen  des  Wurzelverzeichnisses  sich  nicht  bei  nicht-bindfähigen  Einhängungen
       replizieren werden. Wir machen eine solche Einhängung für den ersten Benutzer:

           # mount --rbind --make-unbindable / /home/cecilia

       Bevor wir fortfahren, zeigen wir, dass die nicht-bindfähigen Einhängungen in der Tat nicht
       bindfähig sind:

           # mkdir /mntZ
           # mount --bind /home/cecilia /mntZ
           mount: wrong fs type, bad option, bad superblock on /home/cecilia,
                  missing codepage or helper program, or other error

                  In some cases useful info is found in syslog - try
                  dmesg | tail or so.

       Jetzt  erstellen  wir  nicht bindfähige rekursive Einhängungen mit der Option bind für die
       anderen zwei Benutzer:

           # mount --rbind --make-unbindable / /home/henry
           # mount --rbind --make-unbindable / /home/otto

       Bei der Untersuchung der Liste der Einhängungen sehen wir, dass  es  keine  Explosion  der
       Einhängungen gab, da die nicht bindfähigen Einhängungen nicht unter den Verzeichnissen der
       jeweiligen Benutzer repliziert wurden:

           # mount | awk '{print $1, $2, $3}'
           /dev/sda1 on /
           /dev/sdb6 on /mntX
           /dev/sdb7 on /mntY
           /dev/sda1 on /home/cecilia
           /dev/sdb6 on /home/cecilia/mntX
           /dev/sdb7 on /home/cecilia/mntY
           /dev/sda1 on /home/henry
           /dev/sdb6 on /home/henry/mntX
           /dev/sdb7 on /home/henry/mntY
           /dev/sda1 on /home/otto
           /dev/sdb6 on /home/otto/mntX
           /dev/sdb7 on /home/otto/mntY

   Weiterleitungstyp-Übergänge
       Die  nachfolgende  Tabelle  zeigt  die  Auswirkung,  die   die   Anwendung   eines   neuen
       Weiterleitungstyps  (d.h.  mount  --make-xxxx)  auf  bestehende  Weiterleitungstypen einer
       Einhängung hat. Die Zeilen entsprechen den bestehenden Weiterleitungstypen und die Spalten
       sind  die  neuen  Weiterleitungseinstellungen. Aus Platzgründen ist »private« (privat) mit
       »priv« und »unbindable« (nicht bindfähig) mit »unbind« abgekürzt.

                     make-shared   make-slave      make-priv  make-unbind
       ─────────────┬───────────────────────────────────────────────────────
       shared       │shared        slave/priv [1]  priv       unbind
       slave        │slave+shared  slave [2]       priv       unbind
       slave+shared │slave+shared  slave           priv       unbind
       private      │shared        priv [2]        priv       unbind
       unbindable   │shared        unbind [2]      priv       unbind

       Beachten Sie die folgenden Details zu der Tabelle:

       [1] Falls eine gemeinsame Einhängung die einzige in ihrer  Gemeinschaftsgruppe  ist,  wird
           sie als abhängige auch automatisch privat.

       [2] Abhängig  machen  einer  nicht  gemeinsamen  Einhängung  hat  keine Auswirkung auf die
           Einhängung.

   Semantik von Bind (MS_BIND)
       Nehmen wir an, dass der folgende Befehl ausgeführt wird:

           mount --bind A/a B/b

       Hier ist A die Quelleinhängung, B die Zieleinhängung, a ist ein Unterverzeichnispfad unter
       dem  Einhängungspunkt  A  und b ist ein Unterverzeichnispfad unter dem Einhängungspunkt B.
       Der Weiterleitungstyp der resultierenden Einhängung B/b hängt von den  Weiterleitungstypen
       der Einhängungen A und B ab und wird in der folgenden Tabelle zusammengefasst.

                                        Quelle(A)
                                shared  private    slave         unbind
       ────────────────────────┬───────────────────────────────────────────
       Ziel(B)  shared         │shared  shared     slave+shared  ungültig
                nicht gemeinsam│shared  private    slave         ungültig

       Beachten  Sie,  dass  ein  rekursives  Bind eines Unterbaums der gleichen Semantik wie der
       Bind-Aktion auf jede Einhängung im Unterbaum folgt. (Nicht-Bind-fähige Einhängungen werden
       automatisch am Zieleinhängepunkt abgeschnitten.)

       Für    weitere    Details   siehe   Documentation/filesystems/sharedsubtree.txt   in   dem
       Kernelquellbaum.

   Semantik von Move (MS_MOVE)
       Nehmen wir an, dass der folgende Befehl ausgeführt wird:

           mount --move A B/b

       Hier ist A die Quelleinhängung, B die Zieleinhängung und b  ist  der  Unterverzeichnispfad
       unter dem Einhängepunkt B. Der Weiterleitungstyp der entstehenden Einhängung B/b hängt von
       den Weiterleitungstypen der Einhängungen A und B ab und wird in der nachfolgenden  Tabelle
       zusammengefasst.

                                        Quelle(A)
                                shared  private    slave         unbind
       ────────────────────────┬─────────────────────────────────────────────
       Ziel(B)  shared         │shared  shared     slave+shared  ungültig
                nicht gemeinsam│shared  private    slave         unbindable

       Hinweis:  Das  Verschieben  einer  Einhängung, die sich unter einer gemeinsamen Einhängung
       befindet, ist ungültig.

       Für   weitere   Details   siehe   Documentation/filesystems/sharedsubtree.txt    in    dem
       Kernelquellbaum.

   Einhänge-Semantik
       Angenommen, wir verwenden folgenden Befehl, um eine Einhängung zu erstellen:

           mount Gerät B/b

       Hier  ist  B  die Zieleinhängung und b der Unterverzeichnispfad unter dem Einhängepunkt B.
       Der Weiterleitungstyp der entstehenden Einhängung B/b folgt den gleichen  Regeln  wie  für
       eine  Einhängung  mit  der  Option bind, bei der der Weiterleitungstyp der Quelleinhängung
       immer als privat betrachtet wird.

   Aushänge-Semantik
       Angenommen, wir verwenden folgenden Befehl, um eine Einhängung aufzulösen:

           umount A

       Hier  ist  A  eine  Einhängung  auf  B/b,  wobei  B  die  Elterneinhängung   und   b   ein
       Unterverzeichnispfad  unterhalb  des  Einhängepunkts  B  ist.  Falls B gemeinsam ist, dann
       werden alle kürzlich eingehängten Einhängungen ausgehängt, die sich bei  b  befinden,  die
       Weiterleitungen von der Einhängung B erhalten und keine Untereinhängungen haben.

   Die /proc/[PID]/mountinfo-Markierung propagate_from
       Die   Markierung   propagate_from:X   wird  in  den  optionalen  Feldern  des  Datensatzes
       /proc/[PID]/mountinfo gezeigt, falls es einen Prozess gibt,  der  den  Master  der  direkt
       Abhängigen   nicht   sehen   kann   (d.h.   der   Pfadname   vom   Master   ist   von  dem
       Dateisystemwurzelverzeichnis aus nicht erreichbar) und so  nicht  die  Weiterleitungskette
       zwischen Einhängungen, die er sehen kann, bestimmen kann.

       In  dem  folgenden  Beispiel  erstellen  wir  zuerst eine Kette aus zwei Gliedern zwischen
       Master und Abhängiger, zwischen den Einhängungen /mnt,  /tmp/etc  und  /mnt/tmp/etc.  Dann
       wird  der  Befehl  chroot(1) verwandt, um den Einhängepunkt /tmp/etc vom Wurzelverzeichnis
       unerreichbar zu bekommen und damit eine Situation zu erstellen, bei  der  der  Master  von
       /mnt/tmp/etc nicht vom (neuen) Wurzelverzeichnis des Prozesses aus erreichbar ist.

       Zuerst  machen  wir  eine Einhängung mit der Option bind des Wurzelverzeichnisses auf /mnt
       und dann eine Einhängung mit der Option bind von /proc bei /mnt/proc, so dass  nach  einem
       späteren  chroot(1) das Dateisystem proc(5) an dem korrekten Ort in der Umgebung innerhalb
       des Chroots sichtbar bleibt.

           # mkdir -p /mnt/proc
           # mount --bind / /mnt
           # mount --bind /proc /mnt/proc

       Als nächstes stellen wir sicher, dass die Einhängung /mnt eine  gemeinsame  Einhängung  in
       der neuen Gemeinschaftsgruppe (ohne weitere Mitglieder) ist:

           # mount --make-private /mnt  # Von jeder vorherigen Gemeinschaftsgruppe isolieren
           # mount --make-shared /mnt
           # cat /proc/self/mountinfo | grep '/mnt' | sed 's/ - .*//'
           239 61 8:2 / /mnt … shared:102
           248 239 0:4 / /mnt/proc … shared:5

       Als nächstes hängen wir /mnt/etc auf /tmp/etc mit der Option bind ein:

           # mkdir -p /tmp/etc
           # mount --bind /mnt/etc /tmp/etc
           # cat /proc/self/mountinfo | egrep '/mnt|/tmp/' | sed 's/ - .*//'
           239 61 8:2 / /mnt … shared:102
           248 239 0:4 / /mnt/proc … shared:5
           267 40 8:2 /etc /tmp/etc … shared:102

       Anfänglich  sind  diese  zwei  Einhängungen in der gleichen Gemeinschaftsgruppe, aber dann
       machen wir /tmp/etc eine Abhängige  von  /mnt/etc,  und  dann  machen  wir  /tmp/etc  auch
       gemeinsam, so dass es Ereignisse an die nächste Abhängige in der Kette weiterleiten kann:

           # mount --make-slave /tmp/etc
           # mount --make-shared /tmp/etc
           # cat /proc/self/mountinfo | egrep '/mnt|/tmp/' | sed 's/ - .*//'
           239 61 8:2 / /mnt … shared:102
           248 239 0:4 / /mnt/proc … shared:5
           267 40 8:2 /etc /tmp/etc … shared:105 master:102

       Dann  hängen  wir  /tmp/etc auf /mnt/tmp/etc mit der Option bind ein. Wieder sind die zwei
       Einhängungen anfänglich in der gleichen Gemeinschaftsgruppe, aber wir machen  /mnt/tmp/etc
       eine Abhängige von /tmp/etc:

           # mkdir -p /mnt/tmp/etc
           # mount --bind /tmp/etc /mnt/tmp/etc
           # mount --make-slave /mnt/tmp/etc
           # cat /proc/self/mountinfo | egrep '/mnt|/tmp/' | sed 's/ - .*//'
           239 61 8:2 / /mnt … shared:102
           248 239 0:4 / /mnt/proc … shared:5
           267 40 8:2 /etc /tmp/etc … shared:105 master:102
           273 239 8:2 /etc /mnt/tmp/etc … master:105

       In  vorhergehender  Ausgabe können wir sehen, dass /mnt der Master der Abhängigen /tmp/etc
       ist, die wiederum der Master der Abhängigen /mnt/tmp/etc ist.

       Dann wechseln wir mit chroot(1) zu dem Verzeichnis /mnt, wodurch die  Einhängung  mit  der
       Kennung 267 vom (neuen) Wurzelverzeichnis aus nicht mehr erreichbar ist:

           # chroot /mnt

       Wenn wir den Zustand der Einhängungen innerhalb der Chroot-Umgebung untersuchen, sehen wir
       folgendes:

           # cat /proc/self/mountinfo | sed 's/ - .*//'
           239 61 8:2 / / … shared:102
           248 239 0:4 / /proc … shared:5
           273 239 8:2 /etc /tmp/etc … master:105 propagate_from:102

       Oben sehen wir, dass die Einhängung mit der Kennung 273 eine Abhängige ist,  deren  Master
       die  Gemeinschaftsgruppe  105 ist. Der Einhängepunkt für diesen Master kann nicht erreicht
       werden, und daher wird eine Markierung propagate_from  angezeigt,  die  darauf  aufmerksam
       macht,   dass   die   nahest-liegende  dominante  Gemeinschaftsgruppe  (d.h.  der  nächste
       erreichbare Einhängepunkt in  der  Abhängigkeitskette)  die  Gemeinschaftsgruppe  mit  der
       Kennung  102  ist (die dem Einhängepunkt /mnt entspricht, bevor der chroot(1) durchgeführt
       wurde.)

VERSIONEN

       Einhängenamensräume erschienen erstmalig in Linux 2.4.19.

KONFORM ZU

       Namensräume sind eine Linux-spezifische Funktionalität.

ANMERKUNGEN

       Der einer neuen Einhängung zugewiesene Weiterleitungstyp hängt vom  Weiterleitungstyp  der
       Elterneinhängung   ab.   Falls   die   Einhängung  eine  Elterneinhängung  hat  (d.h.  der
       Einhängungspunkt ist nicht die Wurzel)  und  der  Weiterleitungstyp  der  Elterneinhängung
       MS_SHARED  ist,  dann  ist  der  Weiterleitungstyp  der  neuen  Einhängung auch MS_SHARED.
       Andernfalls ist der Einhängungstyp der neuen Einhängung MS_PRIVATE.

       Unbenommen der Tatsache, dass der  Standard-Weiterleitungstyp  für  neue  Einhängungen  in
       vielen  Fällen  MS_PRIVATE  ist,  ist MS_SHARED normalerweise nützlicher. Aus diesem Grund
       hängt systemd(1) beim Systemstart alle Einhängungen neu mit MS_SHARED ein. Daher  ist  auf
       modernen Systemen der Standard-Weiterleitungstyp in der Praxis MS_SHARED.

       Da  bei  der Verwendung von unshare(1) typischerweise das Ziel darin besteht, vollständige
       Isolierung der Einhängungen in dem neuen Namensraum zu erreichen, kehrt  unshare(1)  (seit
       util-linux  Version  2.27) den durch systemd(1) durchgeführten Schritt um, indem es in dem
       neuen Namensraum alle Einhängungen zu privaten macht. Das bedeutet, unshare(1)  führt  das
       Äquivalent des folgenden Befehls im neuen Namensraum aus:

           mount --make-rprivate /

       Um  dies  zu  verhindern,  können  Sie  die  Option --propagation unchanged für unshare(1)
       verwenden.

       Eine Anwendung, die einen neuen Einhängenamensraum direkt  mit  clone(2)  oder  unshare(2)
       erzeugt,  könnte  den  Wunsch  haben,  die Weiterleitung von Einhängeereignissen in andere
       Einhängenamensräume zu verhindern (wie dies durch unshare(1)  erfolgt).  Dies  kann  durch
       Änderung  des  Einhängetyps von Einhängungen in dem neuen Namensraum auf entweder MS_SLAVE
       oder MS_PRIVATE erfolgen, indem ein Aufruf folgender Art erfolgt:

           mount(NULL, "/", MS_SLAVE | MS_REC, NULL);

       Für eine Diskussion von Weiterleitungstypen beim Verschieben  von  Einhängungen  (MS_MOVE)
       und   der   Erstellung   von   Einhängungen   mit   der   Option   bind   (MS_BIND)  siehe
       Documentation/filesystems/sharedsubtree.txt.

   Beschränkungen für Einhängenamensräume
       Beachten Sie die folgenden Punkte in Hinblick auf Einhängenamensräume:

       [1] Jeder Einhängenamensraum hat einen Eigentümer-Benutzernamensraum. Wie oben beschrieben
           wird beim Erstellen eines neuen Einhängenamensraumes seine Einhängeliste als Kopie der
           Einhängeliste  eines  anderen  Einhängenamensraums  initialisiert.  Falls   der   neue
           Namensraum  und der Namensraum, von dem die Einhängeliste kopiert wurde, verschiedenen
           Benutzernamensräumen gehören,  dann  wird  der  neue  Einhängenamensraum  als  weniger
           privilegiert betrachtet.

       [2] Beim  Erstellen  eines  weniger  privilegierten  Einhängenamensraums werden gemeinsame
           Einhängungen  zu  abhängigen  Einhängungen  reduziert.  Dies   stellt   sicher,   dass
           Abbildungen,  die  in  weniger  privilegierten  Namensräumen  erfolgen,  nicht in mehr
           privilegierte Namensräume weitergeleitet werden.

       [3] Einhängungen,   die   als   gemeinsame   Einheit   von   einem   mehr   privilegierten
           Einhängenamensraum  kommen,  werden  zusammengeklemmt  und  können  in  einem  weniger
           privilegierten Namensraum nicht getrennt werden. (Die  Aktion  unshare(2)  CLONE_NEWNS
           bringt  alle  Einhängungen  von  dem  ursprünglichen Einhängenamensraum als gemeinsame
           Einheit  herüber  und  rekursive  Einhängungen,  die   zwischen   Einhängenamensräumen
           weiterleiten, werden als gemeinsame Einheit weitergeleitet.)

           In  diesem  Kontext  bedeutet  »können  nicht  getrennt werden«, dass die Einhängungen
           zusammengeklemmt sind, so dass sie nicht einzeln ausgehängt werden können.  Betrachten
           Sie folgendes Beispiel:

               $ sudo sh
               # mount --bind /dev/null /etc/shadow
               # cat /etc/shadow       # Ergibt keine Ausgabe

           Die  obigen  Schritte,  die in einem mehr privilegierten Einhängenamensraum ausgeführt
           werden, haben eine Einhängung mit der  Option  bind  erstellt,  die  die  Inhalte  der
           Schatten-Passwortdatei  /etc/shadow  verdeckt.  Aus Sicherheitsgründen sollte es nicht
           möglich sein, diese Einhängungen in einem  weniger  privilegierten  Einhängenamensraum
           auszuhängen, da dies den Inhalt von /etc/shadow offenlegen würde.

           Nehmen   wir  an,  dass  wir  einen  Einhängenamensraum  erstellen,  der  einem  neuen
           Benutzernamensraum gehört. Der neue Einhängenamensraum wird Kopien aller  Einhängungen
           von  dem  vorherigen  Einhängenamensraum  erben.  Allerdings werden diese Einhängungen
           zusammengeklemmt werden, da der  neue  Einhängenamensraum  weniger  privilegiert  ist.
           Konsequenterweise wird ein Versuch, die Einhängung auszuhängen, fehlschlagen, wie dies
           im folgenden Schritt zu sehen ist:

               # unshare --user --map-root-user --mount \
                              strace -o /tmp/log \
                              umount /mnt/dir
               umount: /etc/shadow: nicht eingehängt.
               # grep '^umount' /tmp/log
               umount2("/etc/shadow", 0)     = -1 EINVAL (Invalid argument)

           Die Fehlermeldung von mount(8) irritiert etwas, aber die Ausgabe von strace(1) verrät,
           dass  der  zugrundeliegende  Systemaufruf umount2(2) mit dem Fehler EINVAL fehlschlug.
           Der Kernel liefert diesen Fehler, um anzuzeigen, dass die Einhängung geklemmt ist.

           Beachten Sie  allerdings,  dass  eine  Einhängung  oben  auf  eine  geerbte  geklemmte
           Einhängung in einem weniger privilegierten Einhängenamensraum aufgesetzt oder von dort
           wieder entfernt werden kann:

               # echo 'aaaaa' > /tmp/a    # Datei, die auf /etc/shadow eingehängt werden soll
               # unshare --user --map-root-user --mount \
                   sh -c 'mount --bind /tmp/a /etc/shadow; cat /etc/shadow'
               aaaaa
               # umount /etc/shadow

           Der abschließende  Befehl  umount(8)  oben,  der  im  anfänglichen  Einhängenamensraum
           durchgeführt  wird,  macht  die  ursprüngliche  Datei  /etc/shadow  wieder  in  diesem
           Namensraum sichtbar.

       [4] Beachten Sie anschließend  an  Schritt  [3],  dass  es  möglich  ist,  einen  gesamten
           Unterbaum   von   Einhängungen,  der  als  Einheit  in  einen  weniger  privilegierten
           Einhängenamensraum  weitergeleitet  wurde,  auszuhängen.  Das  wird  im  nachfolgenden
           Beispiel dargestellt.

           Zuerst  erstellen wir mittels unshare(1) einen neuen Benutzer- und Einhängenamensraum.
           In dem neuen Einhängenamensraum wird  der  Weiterleitungstyp  aller  Einhängungen  auf
           privat  gesetzt. Wir erstellen dann eine gemeinsame Einhängung mit der Option bind von
           /mnt und eine kleine Hierarchie von Einhängungen unterhalb dieser Einhängung.

               $ PS1='ns1# ' sudo unshare --user --map-root-user \
                                      --mount --propagation private bash
               ns1# echo $$        # Wir benötigen die PID dieser Shell später
               778501
               ns1# mount --make-shared --bind /mnt /mnt
               ns1# mkdir /mnt/x
               ns1# mount --make-private -t tmpfs none /mnt/x
               ns1# mkdir /mnt/x/y
               ns1# mount --make-private -t tmpfs none /mnt/x/y
               ns1# grep /mnt /proc/self/mountinfo | sed 's/ - .*//'
               986 83 8:5 /mnt /mnt rw,relatime shared:344
               989 986 0:56 / /mnt/x rw,relatime
               990 989 0:57 / /mnt/x/y rw,relatime

           In der gleichen Shell-Sitzung fahren wir fort und erstellen eine zweite Shell in einem
           neuen  Benutzernamensraum  und  einen  (weniger privilegierten) Einhängenamensraum und
           prüfen den Zustand der weitergeleiteten Einhängungen, deren Wurzel bei /mnt liegt.

               ns1# PS1='ns2# ' unshare --user --map-root-user \
                                      --mount --propagation unchanged bash
               ns2# grep /mnt /proc/self/mountinfo | sed 's/ - .*//'
               1239 1204 8:5 /mnt /mnt rw,relatime master:344
               1240 1239 0:56 / /mnt/x rw,relatime
               1241 1240 0:57 / /mnt/x/y rw,relatime

           Bemerkenswert in der obigen Ausgabe ist, dass  der  Weiterleitungstyp  der  Einhängung
           /mnt  zu einer Abhängigen reduziert wurde, wie in Schritt [2] erläutert. Das bedeutet,
           dass Untereinhängungsereignisse  vom  Master  in  »ns1«  weitergeleitet  werden,  aber
           Weiterleitungen nicht in die umgekehrte Richtung erfolgen werden.

           In  einem  anderen  Terminalfenster  verwenden wir nsenter(1), um den Einhängungs- und
           Benutzernamensraum zu betreten, der »ns1« entspricht. In diesem Terminalfenster hängen
           wir mit der Option bind rekursiv /mnt/x am Ort /mnt/ppp ein.

               $ PS1='ns3# ' sudo nsenter -t 778501 --user --mount
               ns3# mount --rbind --make-private /mnt/x /mnt/ppp
               ns3# grep /mnt /proc/self/mountinfo | sed 's/ - .*//'
               986 83 8:5 /mnt /mnt rw,relatime shared:344
               989 986 0:56 / /mnt/x rw,relatime
               990 989 0:57 / /mnt/x/y rw,relatime
               1242 986 0:56 / /mnt/ppp rw,relatime
               1243 1242 0:57 / /mnt/ppp/y rw,relatime shared:518

           Da  der  Weiterleitungstyp  der  Elterneinhängung  /mnt  gemeinsam  war,  leitete  die
           rekursive Einhängung mit der Option bind  einen  kleinen  Unterbaum  von  Einhängungen
           unter  der abhängigen Einhängung /mnt nach »ns2« weiter. Dies kann durch Ausführen der
           folgenden Befehle in dieser Shell-Sitzung bestätigt werden:

               ns2# grep /mnt /proc/self/mountinfo | sed 's/ - .*//'
               1239 1204 8:5 /mnt /mnt rw,relatime master:344
               1240 1239 0:56 / /mnt/x rw,relatime
               1241 1240 0:57 / /mnt/x/y rw,relatime
               1244 1239 0:56 / /mnt/ppp rw,relatime
               1245 1244 0:57 / /mnt/ppp/y rw,relatime master:518

           Es ist zwar nicht möglich, einen Teil des weitergeleiteten Unterbaums (/mnt/ppp/y)  in
           »ns2«  auszuhängen, aber es ist möglich, den gesamten Unterbaum auszuhängen. Dies wird
           durch die folgenden Befehle gezeigt:

               ns2# umount /mnt/ppp/y
               umount: /mnt/ppp/y: nicht eingehängt.
               ns2# umount -l /mnt/ppp | sed 's/ - .*//'      # Erfolgreich…
               ns2# grep /mnt /proc/self/mountinfo
               1239 1204 8:5 /mnt /mnt rw,relatime master:344
               1240 1239 0:56 / /mnt/x rw,relatime
               1241 1240 0:57 / /mnt/x/y rw,relatime

       [5] Die   Schalter   MS_RDONLY,   MS_NOSUID,    MS_NOEXEC    von    mount(2)    und    die
           »atime«-Schalter-Einstellungen   (MS_NOATIME,   MS_NODIRATIME,   MS_RELATIME)   werden
           geklemmt, wenn sie von einem  mehr  privilegierten  in  einen  weniger  privilegierten
           Einhängenamensraum  weitergeleitet  werden  und  dürfen  in dem weniger privilegierten
           Namensraum nicht geändert werden.

           Dieser Punkt wird im nachfolgenden Beispiel verdeutlicht. Hier erstellen wir in  einem
           mehr  privilegierten  Einhängenamensraum  eine Einhängung mit der Option bind, die als
           nur-lesbar markiert ist. Aus Sicherheitsgründen sollte  es  nicht  möglich  sein,  die
           Einhängung in einem weniger privilegierten Einhängenamensraum schreibbar zu machen und
           tatsächlich verhindert der Kernel das:

               $ sudo mkdir /mnt/dir
               $ sudo mount --bind -o ro /some/path /mnt/dir
               $ sudo unshare --user --map-root-user --mount \
                              mount -o remount,rw /mnt/dir
               mount: /mnt/dir: Zugriff verweigert.

       [6] Eine Datei oder ein Verzeichnis, das ein Einhängepunkt in einem  Namensraum  ist,  der
           kein  Einhängepunkt  in einem anderen Namensraum ist, kann umbenannt, mit der Funktion
           »unlink« gelöscht oder in dem Einhängenamensraum, in dem er  kein  Einhängepunkt  ist,
           gelöscht   (rmdir(2))  werden  (abhängig  von  den  normalen  Berechtigungsprüfungen).
           Konsequenterweise wird der Einhängepunkt in dem  Einhängenamensraum,  in  dem  er  ein
           Einhängepunkt war, entfernt.

           Früher  (vor  Linux 3.18) führte der Versuch, eine Datei oder ein Verzeichnis, das ein
           Einhängepunkt in einem anderen Namensraum war, mit »unlink« zu  löschen,  umzubenennen
           oder  zu entfernen zu dem Fehler EBUSY. Dieses Verhalten hatte technische Probleme bei
           der Durchsetzung (z.B. für NFS)  und  ermöglichte  Diensteverweigerungsangriffe  gegen
           mehr  privilegierte  Benutzer  (d.h. Verhinderung der Aktualisierung einzelner Dateien
           durch Einhängungen mit der Option bind darüber).

BEISPIELE

       Siehe pivot_root(2).

SIEHE AUCH

       unshare(1), clone(2),  mount(2),  mount_setattr(2),  pivot_root(2),  setns(2),  umount(2),
       unshare(2),    proc(5),    namespaces(7),    user_namespaces(7),   findmnt(8),   mount(8),
       pam_namespace(8), pivot_root(8), umount(8)

       Documentation/filesystems/sharedsubtree.txt im Kernelquellbaum.

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  5.13  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung   dieser   Handbuchseite   wurde   von    Helge    Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die GNU General Public License
       Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.