Provided by: manpages-sv_4.23.1-1_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

       The new mount namespace received a copy of  the  initial  mount  namespace's  mounts.  These  new  mounts
       maintain  the  same  propagation  types,  but  have unique mount IDs. (The --propagation unchanged option
       prevents unshare(1)  from marking all mounts as private when creating a new  mount  namespace,  which  it
       does by default.)

       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.
                  dmesg(1) may have more information after failed mount system call.

       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
       The  following table shows the effect that applying a new propagation type (i.e., mount --make-xxxx)  has
       on the existing propagation type of a mount. The rows correspond to existing propagation types,  and  the
       columns  are  the  new propagation settings. For reasons of space, "private" is abbreviated as "priv" and
       "unbindable" as "unbind".
                   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).

STANDARDER

       Linux.

HISTORIK

       Linux 2.4.19.

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 /

       To prevent this, one can use the --propagation unchanged option to 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  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.

Linux man-pages 6.8                                2 maj 2024                                mount_namespaces(7)