Provided by: manpages-sv_4.21.0-2_all bug

NAMN

       mount_namespaces — översikt över Linux monteringsnamnrymder

BESKRIVNING

       För en översikt över namnrymder, se namespaces(7).

       Monteringsnamnrymder  ger  isolering  av  listan över monteringar som ses av processerna i
       varje  namnrymdsinstans.  Alltså,  processerna  i   var   och   en   av   instanserna   av
       monteringsnamnrymder kommer se distinkta enkatalogershierarkier.

       Vyerna  som  ges av filerna /proc/pid/mounts, /proc/pid/mountinfo och /proc/pid/mountstats
       (som alla beskrivs i proc(5)) motsvarar monteringsnamnrymden i vilken  processen  med  PID
       pid  bor.  (Alla processerna som bor i samma monteringsnamnrymd kommer se samma vy i dessa
       filer.)

       En ny monteringsnamnrymd skapas genom att använda antingen clone(2) eller  unshare(2)  med
       flaggan  CLONE_NEWNS.  När  en ny monteringsnamnrymd skapas initieras dess monteringslista
       enligt följande:

       •  Om namnrymden skapas med clone(2) är monteringslistan för barnets namnrymd en kopia  av
          monteringslistan i föräldraprocessens monteringsnamnrymd.

       •  Om namnrymden skapas med unshare(2) är monteringslistan för den nya namnrymden en kopia
          av monteringslistan i anroparens tidigare monteringsnamnrymd.

       Senare   ändringar   av   monteringslistan   (mount(2)    och    umount(2))    i    endera
       monteringsnamnrymden kommer inte (som standard) att påverka monteringslistan som ses i den
       andra namnrymden (men se följande diskussion om delade underträd).

DELADE UNDERTRÄD

       Efter  implementationen  av  monteringsnamnrymder  var  klar  visade  erfarenheterna   att
       isoleringen  som  de  gav  var, i några fall, för stor. Till exempel, för att göra en nyss
       laddad optisk disk tillgänglig i alla monteringsnamnrymder krävdes en  monteringsåtgärd  i
       varje namnrymd. För detta användningsfall, och andra, introducerades funktionen med delade
       underträd i Linux 2.6.15. Denna funktion tillåter automatisk,  kontrollerad  spridning  av
       händelserna mount(2) och umount(2) mellan namnrymder (eller, mer exakt, mellan monteringar
       som är medlemmar av en partnergrupp som sprider händelser till varandra).

       Varje montering markeras (via mount(2)) som att ha en av följande spridningstyper:

       MS_SHARED
              Denna montering delar händelser  med  medlemmar  av  en  partnergrupp.  Händelserna
              mount(2)  och  umount(2) omedelbart under denna montering kommer spridas till andra
              monteringar som är medlemmar av partnergruppen. Spridning  betyder  här  att  samma
              mount(2) eller umount(2) automatiskt kommer ske under alla de andra monteringarna i
              partnergruppen. Omvänt kommer händelserna mount(2) och  umount(2)  som  sker  under
              partnermonteringar att spridas till denna montering.

       MS_PRIVATE
              Denna  montering  är  privat; den har inte någon partnergrupp. Händelserna mount(2)
              och umount(2) sprids inte in i eller ut från denna montering.

       MS_SLAVE
              Händelserna mount(2) och umount(2) sprids  in  i  denna  montering  från  en  delad
              (huvud)partnergrupp.  Händelserna  mount(2)  och  umount(2)  under  denna montering
              sprids inte till någon partner.

              Observera att en montering kan vara slav till en annan partnergrupp  och  på  samma
              gång  dela händelserna mount(2) och umount(2) med en partnergrupp som den är medlem
              i. (Mer exakt, en partnergrupp kan vara slav till en annan partnergrupp.)

       MS_UNBINDABLE
              Detta  är  som  en  privat  montering,  och  dessutom  kan  denna  montering   inte
              bindmonteras. Försök att bindmontera denna montering (mount(2) med flaggan MS_BIND)
              kommer att misslyckas.

              När en rekursiv bindningsmontering (mount(2)  med  flaggorna  MS_BIND  och  MS_REC)
              utförs  på  ett  katalogunderträd ansas automatiskt eventuella bindningsmonteringar
              inuti underträdet (d.v.s., replikeras inte) när det underträdet replikeras för  att
              skapa ett målunderträd.

       För en diskussion om spridningstypen tilldelad till en ny montering, se NOTERINGAR.

       Spridningstypen  är en inställning per monteringspunkt; några monteringar kan markeras som
       delade (med varje delad montering en medlem av en distinkt partnergrupp), medan  andra  är
       privata (eller slavar eller obindbara).

       Observera  att  en  monterings  spridningstyp  avgör  huruvida  mount(2)  och umount(2) av
       monteringar omedelbart under monteringen sprids.  Alltså,  spridningstypen  påverkar  inte
       spridningen  av händelser för barnbarn och mer avlägsna avkommemonteringar. Vad som händer
       om monteringen själv avmonteras avgörs av spridningstypen som gäller  för  föräldern  till
       monteringen.

       Medlemmar läggs till i en partnergrupp när en montering markeras som delad och antingen:

       (a)  monteringen replikeras när en ny monteringsnamnrymd skapas; eller

       (b)  en ny bindmontering skapas från monteringen.

       I  båda  dessa  fall  går  den  nya  monteringen  med  i partnergruppen som den befintliga
       monteringen är medlem i.

       En ny partnergrupp skapas också när en barnmontering skapas under en  befintlig  montering
       som  är  markerad  som delad. I detta fall markeras även barnmonteringen som delad och den
       resulterande partnergruppen består av alla monteringar som replikeras under  partner  till
       föräldramonteringarna.

       En   montering  upphör  att  vara  medlem  i  en  partnergrupp  när  antingen  monteringen
       uttryckligen  avmonteras,  eller  när  monteringen  implicit   avmonteras   för   att   en
       monteringsnamnrymd tas bort (för att den inte har några fler medlemsprocesser).

       Spridningstypen  för  monteringen  i  en  monteringsnamnrymd kan upptäckas via de ”valfria
       fälten” som visas i /proc/pid/mountinfo. (Se proc(5) för detaljer om denna fil.)  Följande
       taggar kan förekomma i de valfria fälten för en post i den filen:

       shared:X
              Denna  montering  delas i partnergruppen X. Varje partnergrupp har ett unikt ID som
              automatiskt genereras av kärnan, och alla monteringar i samma  partnergrupp  kommer
              visa samma ID. (Dessa ID:n tilldelas med början från värdet 1, och kan återanvändas
              när en partnergrupp upphör att ha några medlemmar.)

       master:X
              Denna montering är en slav till den delade partnergruppen X.

       propagate_from:X (från Linux 2.6.26)
              Denna montering är en slav och tar emot spridningar från den delade  partnergruppen
              X.  Denna  tagg  kommer alltid förekomma tillsammans med en tagg master:X. Här är X
              den närmaste dominanta partnergruppen under processens  rotkatalog.  Om  X  är  det
              omedelbara  huvudet  av  monteringen,  eller  om  det  inte  finns  någon  dominant
              partnergrupp under samma rot,  då  finns  bara  fältet  master:X  och  inte  fältet
              propagate_from:X. För fler detaljer, se nedan.

       unbindable
              Detta är en obindbar montering.

       Om ingen av ovanstående flaggor finns, då är detta en privat montering.

   Exempel  MS_SHARED och MS_PRIVATE
       Anta  att  vi  i en terminal i den initiala monteringsnamnrymden markerar en montering som
       delad och en annan som privat, och sedan betraktar monteringarna i /proc/self/mountinfo:

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

       Av utdata från /proc/self/mountinfo ser vi att /mntD är en delad montering i  partnergrupp
       1,  och  att  /mntP  inte  har några valfria taggar, vilket indikerar att det är en privat
       montering. De första två fälten i varje post i denna fil  är  det  unika  ID:t  för  denna
       montering,  och  monterings-ID för föräldramonteringen. Vi kan vidare inspektera denna fil
       för att se att föräldramonteringen till /mntD och /mntP  är  rotkatalogen,  /,  vilken  är
       monterad privat:

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

       I  en  andra  terminal  skapar  vi  en ny monteringsnamnrymd där vi kör ett andra skal och
       inspekterar monteringarna:

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

       Den  nya  monteringsnamnrymden  fick  en  kopia  av  den  initiala   monteringsnamnrymdens
       monteringar.   Dessa  nya  monteringar  behåller  samma  spridningstyper,  men  har  unika
       monterings-ID:n. (Flaggan --propagation unchanged förhindrar att unshare(1) markerar  alla
       monteringar  som  privata  när  den  skapar  en  ny monteringsnamnrymd, vilket den gör som
       standard.)

       I den andra terminalen skapar vi sedan undermonteringar under vardera av /mntD  och  /mntP
       och inspekterar uppsättningen:

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

       Från  ovanstående  kan man se att /mntD/a skapades som delad (ärvde denna inställning från
       sin föräldramontering) och /mntP/b skapades som en privat montering.

       Om vi återgår till den första terminalen och inspekterar uppsättningen ser vi att den  nya
       monteringen   som   skapades   under   den   delade  monteringen  /mntD  spreds  till  sin
       partnermontering (i den  initiala  monteringsnamnrymden),  men  den  nya  monteringen  som
       skapades under den privata monteringen /mntP spreds inte:

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

   Exempel  MS_SLAVE
       Att  skapa  en  montering  som slav låter den ta emot händelser mount(2) och umount(2) som
       sprids från den delade huvudpartnergruppen, samtidigt som den förhindras från  att  sprida
       händelser  till  huvudet.  Detta  är  användbart  om  vi  vill  (exempelvis)  ta  emot  en
       monteringshändelse när en optisk skiva monteras i den  delade  huvudpartnergruppen  (i  en
       annan  monteringsnamnrymd),  men  vill  förhindra  händelser  mount(2) och umount(2) under
       slavmonteringen från att ha sidoeffekter i andra namnrymder.

       Vi kan demonstrera effekten av slavförhållandet genom att först  markera  två  monteringar
       som delade i den initiala monteringsnamnrymden:

           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

       I en andra terminal skapar vi en ny monteringsnamnrymd och inspekterar monteringarna:

           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

       I den nya monteringsnamnrymden markerar vi sedan en av monteringarna som en slav:

           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

       Från   ovanstående  utdata  ser  vi  att  /mntY  nu  är  en  slavmontering  som  tar  emot
       spridningshändelser från den delade partnergruppen med ID:t 2.

       Fortfarande i den nya namnrymden skapar vi undermonteringar under var och en av /mntX  och
       /mntY:

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

       När  vi  granskar  tillstånden hos monteringarna i den nya monteringsnamnrymden ser vi att
       /mntX/a skapades som  en  ny  delad  montering  (ärvde  inställningen  "shared"  från  sin
       föräldramontering) och /mntY/b skapades som en privat montering:

           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

       Tillbaka  i  den  första  terminalen  (i  den  initiala  monteringsnamnrymden)  ser vi att
       monteringen /mntX/a spreds till partnern (den delade /mntX), men att  monteringen  /mntY/b
       inte spreds:

           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

       Nu skapar vi en ny montering under /mntY i det första skalet:

           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

       När  vi  undersöker monteringarna i den andra monteringsnamnrymden ser vi att i detta fall
       har den nya monteringen spritts till slavmonteringen, och  att  monteringen  själv  är  en
       slavmontering (till partnergrupp 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

   Exempel  MS_UNBINDABLE
       Ett  av  de  primära  syftena  med  obindbara  monteringar är att undvika problemet med en
       ”monteringsexplosion” när man upprepat utför bindmonteringar av ett underträd på en  högre
       nivå till en lägre nivås montering. Problemet illustreras av följande skalsession.

       Anta att vi har ett system med följande monteringar:

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

       Anta  vidare  att vi önskar bindningsmontera rotkatalogen rekursivt under flera användares
       hemkataloger. Vi gör detta för den första användaren och granskar monteringarna:

           # 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

       När vi upprepar denna åtgärd för den andra användaren börjar vi se explosionsproblemet:

           # 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

       Under /home/henry har vi inte bara rekursivt lagt till monteringarna /mntX och /mntY, utan
       även  de  rekursiva  monteringarna  av  dessa kataloger under /home/cecilia som skapades i
       förestående steg. Vid upprepning av steget för en tredje användare blir det uppenbart  att
       explosionen är exponentiell till sin natur:

           # 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

       Problemet  med  monteringexplosionen i ovanstående scenario kan lösas genom att göra varje
       ny montering obindbar. Effekten  av  att  göra  detta  är  att  rekursiva  monteringar  av
       rotkatalogen  inte  kommer replikera de obindbara monteringarna. Vi gör en sådan montering
       för den första användaren:

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

       Före vi går vidare visar vi att obindbara monteringar verkligen är obindbara:

           # mkdir /mntZ
           # mount --bind /home/cecilia /mntZ
           mount: /mntZ: fel filsystemstyp, felaktig flagga,
                  felaktigt superblock på /home/cecilia,
                  teckentabell eller hjälpprogram saknas, eller annat fel.

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

       Nu skapar vi obindbara rekursiva bindmonteringar för de andra två användarna:

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

       Vid granskning av listan av monteringar ser vi att det inte har varit någon  explosion  av
       monteringar  eftersom  de obindbara monteringarna inte replikerades under varje användares
       katalog:

           # 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

   Spridningstypsövergångar
       Följande  tabell  visar   effekten   tillämpning   av   en   ny   spridningstyp   (d.v.s.,
       mount  --make-xxxx)  har  på  den  befintliga  spridningstypen  hos  en montering. Raderna
       motsvarar   de   befintliga    spridningstyperna,    och    kolumnerna    är    den    nya
       spridningsinställningen.  Av utrymmesskäl förkortas ”privat” som ”priv” och ”obindbar” som
       ”obind”.

                   make-shared  make-slave     make-priv  make-unbind
       ───────────┬─────────────────────────────────────────────────────
       delad      │delad        slav/priv [1]  priv       obind
       slav       │slav+delad   slav [2]       priv       obind
       slav+delad │slav+delad   slav           priv       obind
       privat     │delad        priv [2]       priv       obind
       obindbar   │delad        obind [2]      priv       obind

       Observera följande detaljer om tabellen:

       [1] Om en delad montering är den enda monteringen i sin partnergrupp görs den  automatiskt
           privat om den görs till en slav.

       [2] Att göra en odelad montering till slav har ingen effekt på monteringen.

   Bindsemantik (MS_BIND)
       Anta att följande kommando utförs:

           mount --bind A/a B/b

       Här  är  A  källmonteringen,  B  är  målmonteringen,  a  är  en  underkatalogsökväg  under
       monteringspunkten  A  och  b  är  en   underkatalogsökväg   under   monteringspunkten   B.
       Spridningstypen  för  den  resulterande  monteringen,  B/b, beror på spridningstyperna för
       monteringarna A och B, och sammanfattas i följande tabell.

                             källa(A)
                      delad  privat    slav        obind
       ──────────────┬────────────────────────────────────────
       mål(B)  delad │delad  delad     slav+delad  otillåten
               odelad│delad  privat    slav        otillåten

       Observera att en rekursiv bindning av ett underträd  följer  samma  semantik  som  vid  en
       bindningsåtgärd på varje montering i underträdet. (Obindbara monteringar ansas automatiskt
       från målmonteringspunkten.)

       För vidare detaljer, se Documentation/filesystems/sharedsubtree.rst i kärnans källträd.

   Flyttsemantik (MS_MOVE)
       Anta att följande kommando utförs:

           mount --move A B/b

       Här är A källmonteringen, B  är  målmonteringen  och  b  är  en  underkatalogsökväg  under
       monteringspunkten  B.  Spridningstypen  för  den  resulterande  monteringen, B/b, beror på
       spridningstyperna för monteringarna A och B, och sammanfattas i följande tabell.

                             källa(A)
                      delad  privat    slav        obind
       ──────────────┬────────────────────────────────────────
       mål(B)  delad │delad  delad     slav+delad  otillåten
               odelad│delad  privat    slav        obindbar

       Observera: att flytta en montering som bor under en delad montering är inte tillåtet.

       För vidare detaljer, se Documentation/filesystems/sharedsubtree.rst i kärnans källträd.

   Monteringssemantik
       Anta att vi använder följande kommando för att skapa en montering:

           mount enhet B/b

       Här är B  målmonteringen  och  b  är  en  underkatalogsökväg  under  monteringspunkten  B.
       Spridningstypen  för  den  resulterande  monteringen,  B/b, följer samma regler som för en
       bindmontering där spridningstypen för källmonteringen alltid anses vara privat.

   Avmonteringssemantik
       Anta att vi använder följande kommando för att riva ner en montering:

           umount A

       Här är A en montering på B/b, där B är föräldramonteringen och b är en  underkatalogsökväg
       under  monteringspunkten B. Om B är delad, då avmonteras alla senast monterade monteringar
       vid  b  på  monteringar  som  tar  emot  spridningar  från  monteringen  B  och  inte  har
       undermonteringar under sig.

   Taggen propagate_from i /proc/ pid /mountinfo
       Taggen  propagate_from:X visas i de valfria fälten av en post i /proc/pid/mountinfo i fall
       då en process inte kan se en slavs omedelbara huvud (d.v.s., sökvägen för huvudet kan inte
       nås  från  filsystemets  rotkatalog)  och  därför  inte kan avgöra spridningskedjan mellan
       monteringarna den kan se.

       I följande exempel skapar vi först en tvålänks huvud-slav-kedja mellan monteringarna /mnt,
       /tmp/etc   och   /mnt/tmp/etc.   Sedan   används   kommandot   chroot(1)   för   att  göra
       monteringspunkten /tmp/etc onåbar  från  rotkatalogen,  vilket  skapar  en  situation  där
       huvudet för /mnt/tmp/etc inte är nåbart från den (nya) rotkatalogen för processen.

       Först bindmonterar vi rotkatalogen på /mnt och sedan bindmonterar vi /proc/mnt/proc så
       att efter en senare chroot(1) filsystemet proc(5) fortsätter  att  vara  synligt  på  rätt
       plats i den chroot:ade miljön.

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

       Därefter  ser  vi till att monteringen /mnt är en delad montering i den nya partnergruppen
       (utan någon partner):

           # mount --make-private /mnt  # Isolera från eventuell tidigare partnergrupp
           # 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

       Därefter bindmonterar vi /mnt/etc/tmp/etc:

           # 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

       Från början är dessa två monteringar i samma partnergrupp, men sedan gör vi /tmp/etc  till
       en  slav  till  /mnt/etc,  och  därefter gör vi även /tmp/etc delad, så att den kan sprida
       händelser till nästa slav i kedjan:

           # 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

       Därefter bindmonterar vi /tmp/etc/mnt/tmp/etc.  Återigen  är  de  två  monteringarna
       initialt i samma partnergrupp, men vi gör sedan /mnt/tmp/etc till en slav till /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

       Från  det  ovanstående  ser vi att /mnt är huvud till slaven /tmp/etc, vilken i sin tur är
       huvud till slaven /mnt/tmp/etc.

       Därefter gör vi chroot(1) till katalogen /mnt, vilket medför att monteringen  med  ID  267
       blir onåbar från den (nya) rotkatalogen:

           # chroot /mnt

       När  vi  sedan undersöker tillståndet för monteringarna inuti den chroot:ade miljön ser vi
       följande:

           # 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

       Ovan ser vi att monteringen med ID  273  är  en  slav  vars  huvud  är  partnergrupp  105.
       Monteringspunkten  för  det  huvudet  är  onåbar, och därför visas en tagg propagate_from,
       vilket indikerar att den närmaste dominanta partnergruppen (d.v.s.,  den  närmaste  nåbara
       monteringen i slavkedjan) är partnergruppen med ID 102 (vilket motsvarar monteringspunkten
       /mnt före chroot(1) gjordes).

VERSIONER

       Monteringsnamnrymder förekom först i Linux 2.4.19.

STANDARDER

       Namnrymder är en Linux-specifik funktion.

NOTERINGAR

       Spridningstypen  som  tilldelas   en   ny   montering   beror   på   spridningstypen   hos
       föräldramonteringen.   Om   monteringen   har   en  förälder  (d.v.s.,  det  är  en  annan
       monteringspunkt  än  roten)  och  spridningstypen  hos  föräldern  är  MS_SHARED,  då   är
       spridningstypen för den nya monteringen också MS_SHARED. Annars är spridningstypen för den
       nya monteringen MS_PRIVATE.

       Oaktat det faktum att  standardsspridningstypen  för  nya  monteringar  i  många  fall  är
       MS_PRIVATE  så  är  MS_SHARED  typiskt  mer  användbart. Av detta skäl monterar systemd(1)
       automatiskt om alla monteringar som MS_SHARED vid systemstart. På de flesta moderna system
       är alltså standardspridningstypen i praktiken MS_SHARED.

       Eftersom  att  när  man  använder  unshare(1) för att skapa en ny monteringsnamnrymd så är
       målet vanligtvis att ge fullständig  isolering  av  monteringarna  i  den  nya  namnrymden
       återställer unshare(1) (sedan util-linux
        2.27)  i  sin  tur  stegen  som  utfördes  av systemd(1), genom att göra alla monteringar
       privata i den nya namnrymden. Det vill säga, unshare(1) utför motsvarande följande  i  den
       nya monteringsnamnrymden:

           mount --make-rprivate /

       För att förhindra detta kan man använda flaggan --propagation unchanged till unshare(1).

       Ett  program  som skapar en ny monteringsnamnrymd direkt med clone(2) eller unshare(2) kan
       vilja förhindra spridning av monteringshändelser till andra monteringsnamnrymder  (så  som
       unshare(1) gör). Detta kan göras genom att ändra spridningstypen för monteringar i den nya
       namnrymden till antingen MS_SLAVE eller MS_PRIVATE med ett anrop som det följande:

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

       För  en  diskussion  om  spridningstyper  när  monteringar  flyttas  (MS_MOVE)   och   när
       bindmonteringar skapas (MS_BIND), se Documentation/filesystems/sharedsubtree.rst.

   Begränsningar för monteringsnamnrymder
       Observera följande punkter med avseende på monteringsnamnrymder:

       [1] Varje monteringsnamnrymd har en användarnamnrymd som ägare. Som förklaras ovan, när en
           ny monteringsnamnrymd skapas  är  dess  monteringslista  initierad  som  en  kopia  av
           monteringslistan  från  en  annan  monteringsnamnrymd.  Om  den nya namnrymden och den
           namnrymd som monteringslistan kopierades ifrån ägs  av  olika  användarnamnrymder,  då
           betraktas den nya monteringsnamnrymden som mindre privilegierad.

       [2] När  en  mindre  privilegierad  monteringsnamnrymd skapas reduceras delade monteringar
           till  slavmonteringar.  Detta  säkerställer  att  avbildningar  som  utförs  i  mindre
           privilegierade  monteringsnamnrymder  inte  kommer  spridas  till  mer  privilegierade
           monteringsnamnrymder.

       [3] Monteringar som kommer som en enda enhet från en mer privilegierad  monteringsnamnrymd
           låses  ihop  och  kan  inte  separeras  i  en mindre privilegierad monteringsnamnrymd.
           (Åtgärden   unshare(2)   CLONE_NEWNS   för   med   sig   alla    monteringarna    från
           originalmonteringsnamnrymden  som  en enda enhet, och rekursiva monteringar som sprids
           mellan monteringsnamnrymder sprids som en enda enhet.)

           I detta sammanhang betyder ”kan inte separeras” att monteringarna låses så att de inte
           kan avmonteras individuellt. Betrakta följande exempel:

               $ sudo sh
               # mount --bind /dev/null /etc/shadow
               # cat /etc/shadow       # Ger ingen utdata

           De  ovanstående  stegen, utförda i en mer privilegierad monteringsnamnrymd, har skapat
           en  bindmontering  som  döljer  innehållet  av  skugglösenordsfilen,  /etc/shadow.  Av
           säkerhetsskäl  skall  det inte vara möjligt att göra umount(2) av den monteringen i en
           mindre privilegierad monteringsnamnrymd, eftersom  det  skulle  avslöja  innehållet  i
           /etc/shadow.

           Anta  att vi nu skapar en ny monteringsnamnrymd som ägs av en ny användarnamnrymd. Den
           nya monteringsnamnrymden kommer ärva kopior av alla monteringarna från den  föregående
           monteringsnamnrymden.  Dock  kommer  dessa  monteringar  vara  låsta  eftersom den nya
           monteringsnamnrymden är mindre privilegierad. Som en konsekvens misslyckas ett  försök
           att göra umount(2) av monteringen så som visas av följande steg:

               # unshare --user --map-root-user --mount \
                              strace -o /tmp/log \
                              umount /etc/shadow
               umount: /etc/shadow: inte monterad.
               # grep '^umount' /tmp/log
               umount2("/etc/shadow", 0)     = -1 EINVAL (Ogiltigt argument)

           Felmeddelandet  från  mount(8) är lite förvirrande, men utdata från strace(1) avslöjar
           att det underliggande systemanropet umount2(2) misslyckades med felet  EINVAL,  vilket
           är det fel som kärnan returnerar för att indikera att monteringen är låst.

           Observera  dock  att  det  är  möjligt  att  stacka  upp (och ta bort från stacken) en
           montering ovanpå en  av  de  ärvda  låsta  monteringarna  i  en  mindre  privilegierad
           monteringsnamnrymd:

               # echo 'aaaaa' > /tmp/a    # Fil att montera på /etc/shadow
               # unshare --user --map-root-user --mount \
                   sh -c 'mount --bind /tmp/a /etc/shadow; cat /etc/shadow'
               aaaaa
               # umount /etc/shadow

           Det sista kommandot umount(8) ovan, vilket utförs i den initiala monteringsnamnrymden,
           gör att den ursprungliga filen /etc/shadow återigen är synlig i den namnrymden.

       [4] Som en uppföljning av punkt [3], observera att det är möjligt att  göra  umount(2)  av
           ett helt underträd av monteringar som spreds som en enhet in i en mindre privilegierad
           monteringsnamnrymd, såsom illustreras i följande exempel.

           Först skapar vi nya användar- och  monteringsnamnrymder  med  unshare(1).  I  den  nya
           monteringsnamnrymden sätts spridningstypen för alla monteringar till privat. Vi skapar
           sedan en delad bindmontering på /mnt, och en liten hierarki  av  monteringar  nedanför
           den monteringen.

               $ PS1='nr1# ' sudo unshare --user --map-root-user \
                                      --mount --propagation private bash
               nr1# echo $$        # Vi behöver PID:en för detta skal senare
               778501
               nr1# mount --make-shared --bind /mnt /mnt
               nr1# mkdir /mnt/x
               nr1# mount --make-private -t tmpfs none /mnt/x
               nr1# mkdir /mnt/x/y
               nr1# mount --make-private -t tmpfs none /mnt/x/y
               nr1# 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

           Fortfarande   i   samma   skalsession   skapar  vi  sedan  ett  andra  skal  i  en  ny
           användarnamnrymd och en ny (mindre privilegierad) monteringsnamnrymd och  kontrollerar
           tillståndet hos den spridda monteringen med rot på /mnt.

               nr1# PS1='nr2# ' unshare --user --map-root-user \
                                      --mount --propagation unchanged bash
               nr2# 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

           Att  notera  i  ovanstående  utdata  är  att  spridningstypen för monteringen /mnt har
           reducerats  till  slav,  så  som  förklarades  i  punkt   [2].   Detta   betyder   att
           undermonteringshändelser  kommer  spridas  från  huvudets  /mnt i ”nr1”, men spridning
           kommer inte ske i den omvända riktningen.

           Från ett separat terminalfönster  använder  vi  sedan  nsenter(1)  för  att  gå  in  i
           monterings-  och  användarnamnrymderna som motsvarar ”nr1”. I det terminalfönstret kan
           vi rekursivt bindmontera /mnt/x på platsen /mnt/ppp.

               $ PS1='nr3# ' sudo nsenter -t 778501 --user --mount
               nr3# mount --rbind --make-private /mnt/x /mnt/ppp
               nr3# 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

           Eftersom spridningstypen hos föräldramonteringen, /mnt, var delad spred den  rekursiva
           bindmonteringen  ett  litet  underträd  av monteringar under slavmonteringen /mnt in i
           ”nr2”, vilket kan verifieras genom att köra följande kommando i den skalsessionen:

               nr2# 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

           Fastän det inte är möjligt att göra umount(2) av en del  av  det  spridda  underträdet
           (/mnt/ppp/y)  i  ”nr2” är det möjligt att göra umount(2) av hela underträdet som visas
           med följande kommandon:

               nr2# umount /mnt/ppp/y
               umount: /mnt/ppp/y: inte monterad.
               nr2# umount -l /mnt/ppp | sed 's/ - .*//'      # Lyckas …
               nr2# 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] Flagginställningarna  av  MS_RDONLY,  MS_NOSUID,   MS_NOEXEC   och   ”atime-flaggorna”
           (MS_NOATIME,  MS_NODIRATIME,  MS_RELATIME) till mount(2) blir låsta när de sprids från
           en mer privilegierad till en mindre privilegierad  monteringsnamnrymd,  och  kan  inte
           ändras i den mindre privilegierade monteringsnamnrymden.

           Denna   punkt   illustreras  i  följande  exempel  där  vi,  i  en  mer  privilegierad
           monteringsnamnrymd, skapar  en  bindmontering  som  markeras  som  endast  läsbar.  Av
           säkerhetsskäl  skall  det  inte vara möjligt att göra monteringen skrivbar i en mindre
           privlegierad monteringsnamnrymd, och kärnan hindrar mycket riktigt detta.

               $ 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: åtkomst nekas.

       [6] En fil eller katalog  som  är  en  monteringspunkt  i  en  namnrymd  som  inte  är  en
           monteringspunkt  i  en  annan namnrymd går att byta namn på, ta bort länken till eller
           tas bort (rmdir(2)) i monteringsnamnrymden i vilken den  inte  är  en  monteringspunkt
           (under  de  vanliga  rättighetskontrollerna).  Som en konsekvens tas monteringspunkten
           bort i monteringsnamnrymden där den var en monteringspunkt.

           Tidigare (före Linux 3.18) resulterade försök att ta bort länken till,  byta  namn  på
           eller   ta  bort  en  fil  eller  katalog  som  var  en  monteringspunkt  i  en  annan
           monteringsnamnrymd  i  felet  EBUSY.  Det  beteendet   hade   tekniska   problem   att
           vidmakthållas  (t.ex.,  för NFS) och möjliggjorde tjänstevägransattacker (DoS) mot mer
           privilegierade användare (d.v.s., förhindra enskilda filer från att  uppdateras  genom
           att bindmontera ovanpå dem).

EXEMPEL

       Se pivot_root(2).

SE ÄVEN

       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.rst i kärnans källkodsträd.

ÖVERSÄTTNING

       Den   svenska   översättningen   av   denna   manualsida   skapades   av   Göran  Uddeborg
       <goeran@uddeborg.se>

       Denna översättning är  fri  dokumentation;  läs  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  eller  senare för upphovsrättsvillkor. Vi tar
       INGET ANSVAR.

       Om du hittar fel  i  översättningen  av  denna  manualsida,  skicka  ett  mail  till  ⟨Tp-
       sv@listor.tp-sv.se⟩.