.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2013, 2016, 2017 by Michael Kerrisk .\" and Copyright (c) 2012 by Eric W. Biederman .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH namespaces 7 "2 maj 2024" "Linux man\-pages 6.8" .SH NAMN namespaces — översikt över Linux namnrymder .SH 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. .P .\" Denna sida ger pekare till information om de olika namnrymdstyperna, beskriver de tillhörande filerna i \fI/proc\fP och sammanfattar API:erna för att arbeta med namnrymder. .SS 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. .TS lB lB lB lB l1 lB1 l1 l. Namnrymd Flagga Sida Isolerar Cgroup CLONE_NEWCGROUP \fBcgroup_namespaces\fP(7) T{ Cgroup\-rotkatalog T} IPC CLONE_NEWIPC \fBipc_namespaces\fP(7) T{ System V IPC, POSIX meddelandeköer T} Nätverk CLONE_NEWNET \fBnetwork_namespaces\fP(7) T{ Nätverksenheter, stackar, portar, etc. T} Montering CLONE_NEWNS \fBmount_namespaces\fP(7) Monteringspunkter PID CLONE_NEWPID \fBpid_namespaces\fP(7) Process\-ID:n Tid CLONE_NEWTIME \fBtime_namespaces\fP(7) T{ Uppstarts\- och monotona klockor T} Användare CLONE_NEWUSER \fBuser_namespaces\fP(7) T{ Användar\- och grupp\-ID:n T} UTS CLONE_NEWUTS \fButs_namespaces\fP(7) T{ Värdnamn och NIS\-domännamn T} .TE .\" .\" ==================== The namespaces API ==================== .\" .SS Namnrymds\-API:erna Förutom olika filer i \fI/proc\fP som beskrivs nedan inkluderar namnrymds\-API:erna följande systemanrop: .TP \fBclone\fP(2) Systemanropet \fBclone\fP(2) skapar en ny process. Om argumentet \fIflaggor\fP till anropet anger en eller flera av flaggorna \fBCLONE_NEW*\fP 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.) .TP \fBsetns\fP(2) Systemanropet \fBsetns\fP(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 \fI/proc/\fPpid\fI/ns\fP som beskrivs nedan. .TP \fBunshare\fP(2) Systemanropet \fBunshare\fP(2) förflyttar den anropande processen till en ny namnrymd. Om argumentet \fIflaggor\fP till anropet anger en eller flera av flaggorna \fBCLONE_NEW*\fP 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.) .TP \fBioctl\fP(2) Olika åtgärder med \fBioctl\fP(2) kan användas för att upptäcka information om namnrymder. Dessa åtgärder beskrivs i \fBioctl_ns\fP(2). .P .\" .\" ==================== The /proc/[pid]/ns/ directory ==================== .\" Att skapa nya namnrymder med \fBclone\fP(2) och \fBunshare\fP(2) kräver i de flesta fall förmågan \fBCAP_SYS_ADMIN\fP eftersom 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. .SS "Katalogen \fI/proc/\fPpid\fI/ns/\fP" .\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f Varje process har en underkatalog \fI/proc/\fPpid\fI/ns/\fP som innehåller en post för varje namnrymd som stödjer att hanteras av \fBsetns\fP(2): .P .in +4n .EX $ \fBls \-l /proc/$$/ns | awk \[aq]{print $1, $9, $10, $11}\[aq]\fP 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] .EE .in .P Bindmontering (se \fBmount\fP(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 \fIpid\fP vid liv även om alla processer som för närvarande finns i namnrymden avslutar. .P Att öppna en av filerna i denna katalog (eller en fil som är bindmonterad till en av dessa filer) returnerar ett filhandtag för den motsvarande namnrymden för processen som anges av \fIpid\fP. Så länge denna filbeskrivare är fortsatt öppen kommer namnrymden fortsätta vara vid liv, även om alla processer i namnrymden avslutar. Filbeskrivaren kan skickas till \fBsetns\fP(2). .P .\" commit bf056bfa80596a5d14b26b17276a56a0dcb080e5 .\" Eric Biederman: "I reserve the right for st_dev to be significant .\" when comparing namespaces." .\" https://lore.kernel.org/lkml/87poky5ca9.fsf@xmission.com/ .\" Re: Documenting the ioctl interfaces to discover relationships... .\" Date: Mon, 12 Dec 2016 11:30:38 +1300 I Linux 3.7 och tidigare var dessa filer synliga som hårda länkar. Från Linux 3.8 dyker de upp som symboliska länkar. Om två processer finns i samma namnrymd, då kommer enhets\-ID:n och inodsnummer för deras symboliska länkar \fI/proc/\fPpid\fI/ns/\fPxxx vara desamma; ett program kan kontrollera detta med fälten \fIstat.st_dev\fP och \fIstat.st_ino\fP som returneras av \fBstat\fP(2). Innehållet för denna symboliska länk är en sträng som innehåller namnrymdstypen och inodsnumret som i följande exempel: .P .in +4n .EX $ \fBreadlink /proc/$$/ns/uts\fP uts:[4026531838] .EE .in .P De symboliska länkarna i denna underkatalog är enligt följande: .TP \fI/proc/\fPpid\fI/ns/cgroup\fP (från Linux 4.6) Denna fil är ett handtag till cgroup\-namnrymden för processen. .TP \fI/proc/\fPpid\fI/ns/ipc\fP (från Linux 3.0) Denna fil är ett handtag till IPC\-namnrymden för processen. .TP \fI/proc/\fPpid\fI/ns/mnt\fP (från Linux 3.8) .\" commit 8823c079ba7136dc1948d6f6dcb5f8022bde438e Denna fil är ett handtag till monteringsnamnrymden för processen. .TP \fI/proc/\fPpid\fI/ns/net\fP (från Linux 3.0) Denna fil är ett handtag till nätverksnamnrymden för processen. .TP \fI/proc/\fPpid\fI/ns/pid\fP (från Linux 3.8) .\" commit 57e8391d327609cbf12d843259c968b9e5c1838f Denna fil är ett handtag till PID\-namnrymden för processen. Detta handtag är permanent under livstiden för processen (d.v.s., en process PID\-namnrymdsmedlemskap ändras aldrig). .TP \fI/proc/\fPpid\fI/ns/pid_for_children\fP (från Linux 4.12) .\" commit eaa0d190bfe1ed891b814a52712dcd852554cb08 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 \fBunshare\fP(2) och \fBsetns\fP(2) (se \fBpid_namespaces\fP(7)), så filen kan skilja från \fI/proc/\fPpid\fI/ns/pid\fP. Den symboliska länken får ett värde endast efter att den första barnprocessen skapas i namnrymden. (Före dess kommer \fBreadlink\fP(2) av den symboliska länken returnera en tom buffert.) .TP \fI/proc/\fPpid\fI/ns/time\fP (från Linux 5.6) Denna fil är ett handtag till tidsnamnrymden för processen. .TP \fI/proc/\fPpid\fI/ns/time_for_children\fP (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 \fBunshare\fP(2) och \fBsetns\fP(2) (se \fBtime_namespaces\fP(7)), så filen kan skilja från \fI/proc/\fPpid\fI/ns/time\fP. .TP \fI/proc/\fPpid\fI/ns/user\fP (från Linux 3.8) .\" commit cde1975bc242f3e1072bde623ef378e547b73f91 Denna fil är ett handtag till användarnamnrymden för processen. .TP \fI/proc/\fPpid\fI/ns/uts\fP (från Linux 3.0) Denna fil är ett handtag till UTS\-namnrymden för processen. .P .\" .\" ==================== The /proc/sys/user directory ==================== .\" Rättigheter att dereferera eller läsa (\fBreadlink\fP(2)) dessa symboliska länkar styrs av en kontroll av åtkomstläget ptrace \fBPTRACE_MODE_READ_FSCREDS\fP; se \fBptrace\fP(2). .SS "Katalogen \fI/proc/sys/user\fP" Filerna i katalogen \fI/proc/sys/user\fP (som finns sedan Linux 4.9) visar gränser på antalet namnrymder av olika typer som kan skapas. Filerna är som följer: .TP \fImax_cgroup_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet cgroup\-namnrymder som kan skapas i användarnamnrymden. .TP \fImax_ipc_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet ipc\-namnrymder som kan skapas i användarnamnrymden. .TP \fImax_mnt_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet monteringsnamnrymder som kan skapas i användarnamnrymden. .TP \fImax_net_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet nätverksnamnrymder som kan skapas i användarnamnrymden. .TP \fImax_pid_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet PID\-namnrymder som kan skapas i användarnamnrymden. .TP \fImax_time_namespaces\fP (från Linux 5.7) .\" commit eeec26d5da8248ea4e240b8795bb4364213d3247 Värdet i denna fil definierar en gräns per användare på antalet tidsnamnrymder som kan skapas i användarnamnrymden. .TP \fImax_user_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet användarnamnrymder som kan skapas i användarnamnrymden. .TP \fImax_uts_namespaces\fP Värdet i denna fil definierar en gräns per användare på antalet uts\-namnrymder som kan skapas i användarnamnrymden. .P Observera följande detaljer om dessa filer: .IP \[bu] 3 Värdena i dessa filer kan ändras av privilegierade processer. .IP \[bu] Värdena som visas av dessa filer är gränserna för användarnamnrymden i vilken processen som öppnar den finns. .IP \[bu] Gränserna är per användare. Varje användare i samma användarnamnrymd kan skapa namnrymder upp till den definierade gränsen. .IP \[bu] Gränserna gäller alla användare, inklusive AID 0. .IP \[bu] 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. .IP \[bu] När man når dessa grånser misslyckas \fBclone\fP(2) och \fBunshare\fP(2) med felet \fBENOSPC\fP. .IP \[bu] 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 (\fI/proc/sys/kernel/threads\-max\fP). I alla nedstigande användarnamnrymder är standardvärdet i varje fil \fBMAXINT\fP. .IP \[bu] När en namnrymd skapas medräknas objektet även mot föräldranamnrymder. Mer precist: .RS .IP \[bu] 3 Varje användarnamnrymd har ett skapar\-AID. .IP \[bu] 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. .IP \[bu] 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. .RE .\" .SS "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: .IP \[bu] 3 En öppen filbeskrivare eller bindmontering finns för den motsvarande filen \fI/proc/\fPpid\fI/ns/*\fP. .IP \[bu] Namnrymden är hierarkisk (d.v.s., en PID\- eller användarnamnrymd) och har en barnnamnrymd. .IP \[bu] Det är en användarnamnrymd som äger en eller flera icke\-användar\-namnrymder. .IP \[bu] Det är en PID\-namnrymd, och det finns en process som refererar till namnrymden via en symbolisk länk \fI/proc/\fPpid\fI/ns/pid_for_children\fP. .IP \[bu] Det är en tidsnamnrymd, och det finns en process som refererar till namnrymden via en symbolisk länk \fI/proc/\fPpid\fI/ns/time_for_children\fP. .IP \[bu] Det är en IPC\-namnrymd, och en motsvarande montering av ett \fImqueue\fP\-filsystem (se \fBmq_overview\fP(7)) refererar till denna namnrymd. .IP \[bu] Det är en PID\-namnrymd, och en motsvarande montering av ett \fBproc\fP(5)\-filsystem refererar till denna namnrymd. .SH EXEMPEL Se \fBclone\fP(2) och \fBuser_namespaces\fP(7). .SH "SE ÄVEN" \fBnsenter\fP(1), \fBreadlink\fP(1), \fBunshare\fP(1), \fBclone\fP(2), \fBioctl_ns\fP(2), \fBsetns\fP(2), \fBunshare\fP(2), \fBproc\fP(5), \fBcapabilities\fP(7), \fBcgroup_namespaces\fP(7), \fBcgroups\fP(7), \fBcredentials\fP(7), \fBipc_namespaces\fP(7), \fBnetwork_namespaces\fP(7), \fBpid_namespaces\fP(7), \fBuser_namespaces\fP(7), \fButs_namespaces\fP(7), \fBlsns\fP(8), \fBswitch_root\fP(8) .PP .SH ÖVERSÄTTNING Den svenska översättningen av denna manualsida skapades av Göran Uddeborg . .PP Denna översättning är fri dokumentation; läs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE eller senare för upphovsrättsvillkor. Vi tar INGET ANSVAR. .PP Om du hittar fel i översättningen av denna manualsida, skicka ett mail till .MT Tp-sv@listor.tp-sv.se .ME .