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

NAMN

       namespaces — översikt över Linux namnrymder

BESKRIVNING

       En  namnrymd  slår  in en global systemresurs i en abstraktion som gör att det ser ut för processer inuti
       namnrymden som att de har sin egen isolerade instans av den globala resursen. Ändringar  av  den  globala
       resursen  är  synlig  för  andra  processer  som  är  medlemmar  i  namnrymden, men är osynliga för andra
       processer. En användning av namnrymder är att implementera behållare.

       Denna sida ger pekare till information om de olika namnrymdstyperna, beskriver de tillhörande  filerna  i
       /proc och sammanfattar API:erna för att arbeta med namnrymder.

   Namnrymdstyper
       Följande  tabell  visar namnrymdstyperna som är tillgängliga i Linux. Den andra kolumnen i tabellen visar
       flaggvärdet som används för att ange namnrymdstypen i de olika API:erna. Den tredje kolumnen identifierar
       manualsidan som ger detaljer om namnrymdstypen. Den sista kolumnen är en sammanfattning  av  de  resurser
       som isoleras av namnrymdstypen.
       Namnrymd  Flagga          Sida                  Isolerar
       Cgroup    CLONE_NEWCGROUP cgroup_namespaces(7)  Cgroup-rotkatalog
       IPC       CLONE_NEWIPC    ipc_namespaces(7)     System V IPC, POSIX
                                                       meddelandeköer
       Nätverk   CLONE_NEWNET    network_namespaces(7) Nätverksenheter,
                                                       stackar, portar, etc.
       Montering CLONE_NEWNS     mount_namespaces(7)   Monteringspunkter
       PID       CLONE_NEWPID    pid_namespaces(7)     Process-ID:n
       Tid       CLONE_NEWTIME   time_namespaces(7)    Uppstarts- och
                                                       monotona klockor
       Användare CLONE_NEWUSER   user_namespaces(7)    Användar- och
                                                       grupp-ID:n
       UTS       CLONE_NEWUTS    uts_namespaces(7)     Värdnamn och
                                                       NIS-domännamn

   Namnrymds-API:erna
       Förutom olika filer i /proc som beskrivs nedan inkluderar namnrymds-API:erna följande systemanrop:

       clone(2)
              Systemanropet  clone(2)  skapar  en  ny process. Om argumentet flaggor till anropet anger en eller
              flera av flaggorna CLONE_NEW* som listas ovan, då skapas nya  namnrymder  för  varje  flagga,  och
              barnprocessen  görs  till en medlem av dessa namnrymder. (Detta systemanrop implementerar även ett
              antal funktioner som är orelaterade till namnrymder.)

       setns(2)
              Systemanropet setns(2) låter den anropande processen gå med i en  befintlig  namnrymd.  Namnrymden
              att gå med i anges via en filbeskrivare som refererar till en av filerna /proc/pid/ns som beskrivs
              nedan.

       unshare(2)
              Systemanropet  unshare(2)  förflyttar  den  anropande processen till en ny namnrymd. Om argumentet
              flaggor till anropet anger en eller flera av flaggorna CLONE_NEW* som listas ovan, då  skapas  nya
              namnrymder  för varje flagga, och den anropande processen görs till en medlem av dessa namnrymder.
              (Detta systemanrop implementerar även ett antal funktioner som är orelaterade till namnrymder.)

       ioctl(2)
              Olika åtgärder med ioctl(2) kan användas för att upptäcka information om namnrymder. Dessa  åtgär‐
              der beskrivs i ioctl_ns(2).

       Att  skapa  nya namnrymder med clone(2) och unshare(2) kräver i de flesta fall förmågan CAP_SYS_ADMIN ef‐
       tersom skaparen, i den nya namnrymden, kommer ha förmågan att ändra globala resurser som är  synliga  för
       andra processer som skapas i eller går med i namnrymden. Användarnamnrymder är undantaget: från Linux 3.8
       krävs inga privilegier för att skapa en användarnamnrymd.

   Katalogen /proc/[pid]/ns/
       Varje process har en underkatalog /proc/pid/ns/ som innehåller en post för varje namnrymd som stödjer att
       hanteras av setns(2):

           $ ls -l /proc/$$/ns | awk '{print $1, $9, $10, $11}'
           total 0
           lrwxrwxrwx. cgroup -> cgroup:[4026531835]
           lrwxrwxrwx. ipc -> ipc:[4026531839]
           lrwxrwxrwx. mnt -> mnt:[4026531840]
           lrwxrwxrwx. net -> net:[4026531969]
           lrwxrwxrwx. pid -> pid:[4026531836]
           lrwxrwxrwx. pid_for_children -> pid:[4026531834]
           lrwxrwxrwx. time -> time:[4026531834]
           lrwxrwxrwx. time_for_children -> time:[4026531834]
           lrwxrwxrwx. user -> user:[4026531837]
           lrwxrwxrwx. uts -> uts:[4026531838]

       Bindmontering  (se  mount(2)) av en av filerna i denna katalog till någon annanstans i filsystemet håller
       den motsvarande namnrymden för processen som anges av pid vid liv även om alla processer som  för  närva‐
       rande finns i namnrymden avslutar.

       Att  öppna en av filerna i denna katalog (eller en fil som är bindmonterad till en av dessa filer) retur‐
       nerar ett filhandtag för den motsvarande namnrymden för processen som anges av pid. Så länge denna filbe‐
       skrivare är fortsatt öppen kommer namnrymden fortsätta vara vid liv, även om alla processer i  namnrymden
       avslutar. Filbeskrivaren kan skickas till setns(2).

       I Linux 3.7 och tidigare var dessa filer synliga som hårda länkar. Från Linux 3.8 dyker de upp som symbo‐
       liska  länkar.  Om  två processer finns i samma namnrymd, då kommer enhets-ID:n och inodsnummer för deras
       symboliska länkar /proc/pid/ns/xxx vara desamma; ett program kan kontrollera detta med fälten stat.st_dev
       och stat.st_ino som returneras av stat(2). Innehållet för denna symboliska länk är en sträng som innehål‐
       ler namnrymdstypen och inodsnumret som i följande exempel:

           $ readlink /proc/$$/ns/uts
           uts:[4026531838]

       De symboliska länkarna i denna underkatalog är enligt följande:

       /proc/pid/ns/cgroup (från Linux 4.6)
              Denna fil är ett handtag till cgroup-namnrymden för processen.

       /proc/pid/ns/ipc (från Linux 3.0)
              Denna fil är ett handtag till IPC-namnrymden för processen.

       /proc/pid/ns/mnt (från Linux 3.8)
              Denna fil är ett handtag till monteringsnamnrymden för processen.

       /proc/pid/ns/net (från Linux 3.0)
              Denna fil är ett handtag till nätverksnamnrymden för processen.

       /proc/pid/ns/pid (från Linux 3.8)
              Denna fil är ett handtag till PID-namnrymden för processen. Detta handtag är permanent under livs‐
              tiden för processen (d.v.s., en process PID-namnrymdsmedlemskap ändras aldrig).

       /proc/pid/ns/pid_for_children (från Linux 4.12)
              Denna fil är ett handtag till PID-namnrymden för barnprocesser som skapas av denna process.  Detta
              kan  ändras  som ett resultat av anrop av unshare(2) och setns(2) (se pid_namespaces(7)), så filen
              kan skilja från /proc/pid/ns/pid. Den symboliska länken får ett värde endast efter att den  första
              barnprocessen skapas i namnrymden. (Före dess kommer readlink(2) av den symboliska länken returne‐
              ra en tom buffert.)

       /proc/pid/ns/time (från Linux 5.6)
              Denna fil är ett handtag till tidsnamnrymden för processen.

       /proc/pid/ns/time_for_children (från Linux 5.6)
              Denna  fil är ett handtag till tidsnamnrymden för barnprocesser som skapas av denna process. Detta
              kan ändras som ett resultat av anrop av unshare(2) och setns(2) (se time_namespaces(7)), så  filen
              kan skilja från /proc/pid/ns/time.

       /proc/pid/ns/user (från Linux 3.8)
              Denna fil är ett handtag till användarnamnrymden för processen.

       /proc/pid/ns/uts (från Linux 3.0)
              Denna fil är ett handtag till UTS-namnrymden för processen.

       Rättigheter  att  dereferera eller läsa (readlink(2)) dessa symboliska länkar styrs av en kontroll av åt‐
       komstläget ptrace PTRACE_MODE_READ_FSCREDS; se ptrace(2).

   Katalogen /proc/sys/user
       Filerna i katalogen /proc/sys/user (som finns sedan Linux 4.9) visar gränser  på  antalet  namnrymder  av
       olika typer som kan skapas. Filerna är som följer:

       max_cgroup_namespaces
              Värdet i denna fil definierar en gräns per användare på antalet cgroup-namnrymder som kan skapas i
              användarnamnrymden.

       max_ipc_namespaces
              Värdet  i  denna  fil definierar en gräns per användare på antalet ipc-namnrymder som kan skapas i
              användarnamnrymden.

       max_mnt_namespaces
              Värdet i denna fil definierar en gräns per användare på antalet monteringsnamnrymder som kan  ska‐
              pas i användarnamnrymden.

       max_net_namespaces
              Värdet  i denna fil definierar en gräns per användare på antalet nätverksnamnrymder som kan skapas
              i användarnamnrymden.

       max_pid_namespaces
              Värdet i denna fil definierar en gräns per användare på antalet PID-namnrymder som  kan  skapas  i
              användarnamnrymden.

       max_time_namespaces (från Linux 5.7)
              Värdet  i  denna  fil definierar en gräns per användare på antalet tidsnamnrymder som kan skapas i
              användarnamnrymden.

       max_user_namespaces
              Värdet i denna fil definierar en gräns per användare på antalet användarnamnrymder som kan  skapas
              i användarnamnrymden.

       max_uts_namespaces
              Värdet  i  denna  fil definierar en gräns per användare på antalet uts-namnrymder som kan skapas i
              användarnamnrymden.

       Observera följande detaljer om dessa filer:

       •  Värdena i dessa filer kan ändras av privilegierade processer.

       •  Värdena som visas av dessa filer är gränserna för användarnamnrymden i vilken processen som öppnar den
          finns.

       •  Gränserna är per användare. Varje användare i samma användarnamnrymd kan skapa namnrymder upp till den
          definierade gränsen.

       •  Gränserna gäller alla användare, inklusive AID 0.

       •  Dessa gränser gäller utöver andra gränser per användare (såsom de för PID- och användarnamnrymder) som
          kan upprätthållas.

       •  När man når dessa grånser misslyckas clone(2) och unshare(2) med felet ENOSPC.

       •  För den initiala användarnamnrymden är standardvärdet i var och en av dessa filer hälften  av  gränsen
          på antalet trådar som kan skapas (/proc/sys/kernel/threads-max). I alla nedstigande användarnamnrymder
          är standardvärdet i varje fil MAXINT.

       •  När en namnrymd skapas medräknas objektet även mot föräldranamnrymder. Mer precist:

          •  Varje användarnamnrymd har ett skapar-AID.

          •  När en namnrymd skapas räknas den mot skapar-AID:n i var och en av föräldranamnrymderna, och kärnan
             säkerställer att motsvarande namnrymdsgräns för skapar-AID:t i föräldranamnrymden inte överskrids.

          •  Ovannämnda  punkt  säkerställer  att  skapandet av en ny användarnamnrymd inte kan användas som ett
             sätt att undvika gränserna som gäller i den aktuella användarnamnrymden.

   Namnrymders livslängd
       I avsaknad av några andra faktorer rivs en namnrymd automatiskt ner när den sista processen i  namnrymden
       avslutar  eller  lämnar  namnrymden. Dock finns det ett antal andra faktorer som kan fästa en namnrymd så
       att den finns kvar även om den inte har några medlemsprocesser. Dessa faktorer inkluderar de följande:

       •  En öppen filbeskrivare eller bindmontering finns för den motsvarande filen /proc/pid/ns/*.

       •  Namnrymden är hierarkisk (d.v.s., en PID- eller användarnamnrymd) och har en barnnamnrymd.

       •  Det är en användarnamnrymd som äger en eller flera icke-användar-namnrymder.

       •  Det är en PID-namnrymd, och det finns en process som refererar till namnrymden via en  symbolisk  länk
          /proc/pid/ns/pid_for_children.

       •  Det  är  en tidsnamnrymd, och det finns en process som refererar till namnrymden via en symbolisk länk
          /proc/pid/ns/time_for_children.

       •  Det är en IPC-namnrymd, och en motsvarande montering av ett mqueue-filsystem (se mq_overview(7)) refe‐
          rerar till denna namnrymd.

       •  Det är en PID-namnrymd, och en motsvarande montering av ett  proc(5)-filsystem  refererar  till  denna
          namnrymd.

EXEMPEL

       Se clone(2) och user_namespaces(7).

SE ÄVEN

       nsenter(1),  readlink(1),  unshare(1),  clone(2), ioctl_ns(2), setns(2), unshare(2), proc(5), capabiliti‐
       es(7),  cgroup_namespaces(7),  cgroups(7),  credentials(7),   ipc_namespaces(7),   network_namespaces(7),
       pid_namespaces(7), user_namespaces(7), uts_namespaces(7), lsns(8), switch_root(8)

Ö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 upp‐
       hovsrä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.03                             5 februari 2023                                   namespaces(7)