namespaces(7) Miscellaneous Information Manual namespaces(7) NAMN namespaces -- oversikt over Linux namnrymder BESKRIVNING En namnrymd slar in en global systemresurs i en abstraktion som gor att det ser ut for processer inuti namnrymden som att de har sin egen isolerade instans av den globala resursen. Andringar av den globala resursen ar synlig for andra processer som ar medlemmar i namnrymden, men ar osynliga for andra processer. En anvandning av namnrymder ar att implementera behallare. Denna sida ger pekare till information om de olika namnrymdstyperna, beskriver de tillhorande filerna i /proc och sammanfattar API:erna for att arbeta med namnrymder. Namnrymdstyper Foljande tabell visar namnrymdstyperna som ar tillgangliga i Linux. Den andra kolumnen i tabellen visar flaggvardet som anvands for att ange namnrymdstypen i de olika API:erna. Den tredje kolumnen identifierar manualsidan som ger detaljer om namnrymdstypen. Den sista kolumnen ar 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 meddelandekoer Natverk CLONE_NEWNET network_namespaces(7) Natverksenheter, 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 Anvandare CLONE_NEWUSER user_namespaces(7) Anvandar- och grupp-ID:n UTS CLONE_NEWUTS uts_namespaces(7) Vardnamn och NIS-domannamn Namnrymds-API:erna Forutom olika filer i /proc som beskrivs nedan inkluderar namnrymds-API:erna foljande 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, da skapas nya namnrymder for varje flagga, och barnprocessen gors till en medlem av dessa namnrymder. (Detta systemanrop implementerar aven ett antal funktioner som ar orelaterade till namnrymder.) setns(2) Systemanropet setns(2) later den anropande processen ga med i en befintlig namnrymd. Namnrymden att ga med i anges via en filbeskrivare som refererar till en av filerna /proc/pid/ns som beskrivs nedan. unshare(2) Systemanropet unshare(2) forflyttar den anropande processen till en ny namnrymd. Om argumentet flaggor till anropet anger en eller flera av flaggorna CLONE_NEW* som listas ovan, da skapas nya namnrymder for varje flagga, och den anropande processen gors till en medlem av dessa namnrymder. (Detta systemanrop implementerar aven ett antal funktioner som ar orelaterade till namnrymder.) ioctl(2) Olika atgarder med ioctl(2) kan anvandas for att upptacka information om namnrymder. Dessa atgarder beskrivs i ioctl_ns(2). Att skapa nya namnrymder med clone(2) och unshare(2) kraver i de flesta fall formagan CAP_SYS_ADMIN eftersom skaparen, i den nya namnrymden, kommer ha formagan att andra globala resurser som ar synliga for andra processer som skapas i eller gar med i namnrymden. Anvandarnamnrymder ar undantaget: fran Linux 3.8 kravs inga privilegier for att skapa en anvandarnamnrymd. Katalogen /proc/pid/ns/ Varje process har en underkatalog /proc/pid/ns/ som innehaller en post for varje namnrymd som stodjer 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 nagon annanstans i filsystemet haller den motsvarande namnrymden for processen som anges av pid vid liv aven om alla processer som for narvarande finns i namnrymden avslutar. Att oppna en av filerna i denna katalog (eller en fil som ar bindmonterad till en av dessa filer) returnerar ett filhandtag for den motsvarande namnrymden for processen som anges av pid. Sa lange denna filbeskrivare ar fortsatt oppen kommer namnrymden fortsatta vara vid liv, aven om alla processer i namnrymden avslutar. Filbeskrivaren kan skickas till setns(2). I Linux 3.7 och tidigare var dessa filer synliga som harda lankar. Fran Linux 3.8 dyker de upp som symboliska lankar. Om tva processer finns i samma namnrymd, da kommer enhets-ID:n och inodsnummer for deras symboliska lankar /proc/pid/ns/xxx vara desamma; ett program kan kontrollera detta med falten stat.st_dev och stat.st_ino som returneras av stat(2). Innehallet for denna symboliska lank ar en strang som innehaller namnrymdstypen och inodsnumret som i foljande exempel: $ readlink /proc/$$/ns/uts uts:[4026531838] De symboliska lankarna i denna underkatalog ar enligt foljande: /proc/pid/ns/cgroup (fran Linux 4.6) Denna fil ar ett handtag till cgroup-namnrymden for processen. /proc/pid/ns/ipc (fran Linux 3.0) Denna fil ar ett handtag till IPC-namnrymden for processen. /proc/pid/ns/mnt (fran Linux 3.8) Denna fil ar ett handtag till monteringsnamnrymden for processen. /proc/pid/ns/net (fran Linux 3.0) Denna fil ar ett handtag till natverksnamnrymden for processen. /proc/pid/ns/pid (fran Linux 3.8) Denna fil ar ett handtag till PID-namnrymden for processen. Detta handtag ar permanent under livstiden for processen (d.v.s., en process PID-namnrymdsmedlemskap andras aldrig). /proc/pid/ns/pid_for_children (fran Linux 4.12) Denna fil ar ett handtag till PID-namnrymden for barnprocesser som skapas av denna process. Detta kan andras som ett resultat av anrop av unshare(2) och setns(2) (se pid_namespaces(7)), sa filen kan skilja fran /proc/pid/ns/pid. Den symboliska lanken far ett varde endast efter att den forsta barnprocessen skapas i namnrymden. (Fore dess kommer readlink(2) av den symboliska lanken returnera en tom buffert.) /proc/pid/ns/time (fran Linux 5.6) Denna fil ar ett handtag till tidsnamnrymden for processen. /proc/pid/ns/time_for_children (fran Linux 5.6) Denna fil ar ett handtag till tidsnamnrymden for barnprocesser som skapas av denna process. Detta kan andras som ett resultat av anrop av unshare(2) och setns(2) (se time_namespaces(7)), sa filen kan skilja fran /proc/pid/ns/time. /proc/pid/ns/user (fran Linux 3.8) Denna fil ar ett handtag till anvandarnamnrymden for processen. /proc/pid/ns/uts (fran Linux 3.0) Denna fil ar ett handtag till UTS-namnrymden for processen. Rattigheter att dereferera eller lasa (readlink(2)) dessa symboliska lankar styrs av en kontroll av atkomstlaget 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 granser pa antalet namnrymder av olika typer som kan skapas. Filerna ar som foljer: max_cgroup_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet cgroup-namnrymder som kan skapas i anvandarnamnrymden. max_ipc_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet ipc-namnrymder som kan skapas i anvandarnamnrymden. max_mnt_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet monteringsnamnrymder som kan skapas i anvandarnamnrymden. max_net_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet natverksnamnrymder som kan skapas i anvandarnamnrymden. max_pid_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet PID-namnrymder som kan skapas i anvandarnamnrymden. max_time_namespaces (fran Linux 5.7) Vardet i denna fil definierar en grans per anvandare pa antalet tidsnamnrymder som kan skapas i anvandarnamnrymden. max_user_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet anvandarnamnrymder som kan skapas i anvandarnamnrymden. max_uts_namespaces Vardet i denna fil definierar en grans per anvandare pa antalet uts-namnrymder som kan skapas i anvandarnamnrymden. Observera foljande detaljer om dessa filer: o Vardena i dessa filer kan andras av privilegierade processer. o Vardena som visas av dessa filer ar granserna for anvandarnamnrymden i vilken processen som oppnar den finns. o Granserna ar per anvandare. Varje anvandare i samma anvandarnamnrymd kan skapa namnrymder upp till den definierade gransen. o Granserna galler alla anvandare, inklusive AID 0. o Dessa granser galler utover andra granser per anvandare (sasom de for PID- och anvandarnamnrymder) som kan uppratthallas. o Nar man nar dessa granser misslyckas clone(2) och unshare(2) med felet ENOSPC. o For den initiala anvandarnamnrymden ar standardvardet i var och en av dessa filer halften av gransen pa antalet tradar som kan skapas (/proc/sys/kernel/threads-max). I alla nedstigande anvandarnamnrymder ar standardvardet i varje fil MAXINT. o Nar en namnrymd skapas medraknas objektet aven mot foraldranamnrymder. Mer precist: o Varje anvandarnamnrymd har ett skapar-AID. o Nar en namnrymd skapas raknas den mot skapar-AID:n i var och en av foraldranamnrymderna, och karnan sakerstaller att motsvarande namnrymdsgrans for skapar-AID:t i foraldranamnrymden inte overskrids. o Ovannamnda punkt sakerstaller att skapandet av en ny anvandarnamnrymd inte kan anvandas som ett satt att undvika granserna som galler i den aktuella anvandarnamnrymden. Namnrymders livslangd I avsaknad av nagra andra faktorer rivs en namnrymd automatiskt ner nar den sista processen i namnrymden avslutar eller lamnar namnrymden. Dock finns det ett antal andra faktorer som kan fasta en namnrymd sa att den finns kvar aven om den inte har nagra medlemsprocesser. Dessa faktorer inkluderar de foljande: o En oppen filbeskrivare eller bindmontering finns for den motsvarande filen /proc/pid/ns/*. o Namnrymden ar hierarkisk (d.v.s., en PID- eller anvandarnamnrymd) och har en barnnamnrymd. o Det ar en anvandarnamnrymd som ager en eller flera icke-anvandar-namnrymder. o Det ar en PID-namnrymd, och det finns en process som refererar till namnrymden via en symbolisk lank /proc/pid/ns/pid_for_children. o Det ar en tidsnamnrymd, och det finns en process som refererar till namnrymden via en symbolisk lank /proc/pid/ns/time_for_children. o Det ar en IPC-namnrymd, och en motsvarande montering av ett mqueue-filsystem (se mq_overview(7)) refererar till denna namnrymd. o Det ar 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 AVEN nsenter(1), readlink(1), unshare(1), clone(2), ioctl_ns(2), setns(2), unshare(2), proc(5), capabilities(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) OVERSATTNING Den svenska oversattningen av denna manualsida skapades av Goran Uddeborg Denna oversattning ar fri dokumentation; las GNU General Public License Version 3 eller senare for upphovsrattsvillkor. Vi tar INGET ANSVAR. Om du hittar fel i oversattningen av denna manualsida, skicka ett mail till . Linux man-pages 6.06 31 oktober 2023 namespaces(7)