Man page - namespaces(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pl sv ja ru deManual
namespaces
NAMNBESKRIVNING
Namnrymdstyper
Namnrymds-API:erna
Katalogen /proc/pid/ns/
Katalogen /proc/sys/user
Namnrymders livslÀngd
EXEMPEL
SE ĂVEN
ĂVERSĂTTNING
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. |
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Àrder beskrivs i ioctl_nsfs (2).
Att skapa nya namnrymder med clone (2) och unshare (2) krÀver i de flesta fall förmÄgan CAP_SYS_ADMIN 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.
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Àrvarande finns i namnrymden avslutar.
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 pid . 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 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 symboliska 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Äller 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 livstiden 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 returnera 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 ÄtkomstlÀ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 skapas 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)) refererar 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_nsfs (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)
Ă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 .