Man page - cgroup_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 sv ro deManual
cgroup_namespaces
NOMDESCRIPTION
STANDARDS
NOTES
VOIR AUSSI
TRADUCTION
NOM
cgroup_namespaces â Aperçu des espaces de noms cgroup de Linux
DESCRIPTION
Pour une présentation générale des espaces de noms, consultez namespaces (7).
Les espaces de noms cgroup virtualisent la vue des cgroups de processus (consulter cgroups (7)) telle quâaperçue Ă lâaide de /proc/ pid /cgroup et /proc/ pid /mountinfo .
Chaque espace de noms cgroup a son propre ensemble de rĂ©pertoires racines de cgroup. Ces rĂ©pertoires racines sont les points de base pour les emplacements relatifs affichĂ©s dans les enregistrements correspondants dans le fichier /proc/ pid /cgroup . Quand un processus crĂ©e un nouvel espace de noms cgroup en utilisant clone (2) ou unshare (2) avec le drapeau CLONE_NEWCGROUP , ses rĂ©pertoires de cgroups actuels deviennent les rĂ©pertoires racines de cgroup dans le nouvel espace de noms (cela sâapplique pour les hiĂ©rarchies cgroups version 1 et la hiĂ©rarchie unifiĂ©e cgroups version 2).
Lors de la lecture des appartenances Ă un cgroup dâun processus « cible » Ă partir de /proc/ pid /cgroup , le chemin affichĂ© dans le troisiĂšme champ de chaque enregistrement sera relatif au rĂ©pertoire racine du processus lisant pour la hiĂ©rarchie correspondante de cgroup. Si le rĂ©pertoire de cgroup du processus cible rĂ©side en dehors du rĂ©pertoire racine de lâespace de noms cgroup du processus lisant, alors le chemin affiche les entrĂ©es ../ pour chaque niveau ancĂȘtre dans la hiĂ©rarchie de cgroup.
La session dâinterprĂ©teur suivante montre les effets de la crĂ©ation dâun nouvel espace de noms cgroup.
Dâabord, (en tant que superutilisateur) dans un interprĂ©teur dans lâespace de noms cgroup initial, nous crĂ©ons un cgroup enfant dans la hiĂ©rarchie freezer et plaçons un processus dans ce cgroup que nous utiliserons comme partie de la dĂ©monstration suivante :
#
mkdir -p
/sys/fs/cgroup/freezer/sub2
#
sleep 10000 &
# CrĂ©ation dâun
processus qui vit pendant un certain temps
[1] 20124
#
echo 20124 >
/sys/fs/cgroup/freezer/sub2/cgroup.procs
Puis crĂ©ons un nouveau cgroup enfant dans la hiĂ©rarchie freezer et intĂ©grons lâinterprĂ©teur dans ce cgroup :
#
mkdir -p
/sys/fs/cgroup/freezer/sub
#
echo $$
# Affichage du PID de
lâinterprĂ©teur
30655
#
echo 30655 >
/sys/fs/cgroup/freezer/sub/cgroup.procs
#
cat /proc/self/cgroup | grep freezer
7:freezer:/sub
Ensuite, nous utilisons unshare (1) pour créer un processus exécutant un nouvel interpréteur dans les nouveaux espaces de noms cgroup et montage :
# PS1="sh2# " unshare -Cm bash
Ă partir du nouvel interprĂ©teur dĂ©marrĂ© par unshare (1), nous inspectons alors les fichiers /proc/ pid /cgroup de, respectivement, le nouvel interprĂ©teur, un processus qui est dans lâespace de noms cgroup initial ( init , avec PID 1) et le processus dans le cgroup frĂšre ( sub2 ) :
sh2#
cat
/proc/self/cgroup | grep freezer
7:freezer:/
sh2#
cat /proc/1/cgroup | grep freezer
7:freezer:/..
sh2#
cat /proc/20124/cgroup | grep freezer
7:freezer:/../sub2
Dans la sortie de la premiĂšre commande, nous voyons que lâappartenance au cgroup freezer du nouvel interprĂ©teur (qui est dans le mĂȘme cgroup que lâinterprĂ©teur initial) est affichĂ©e comme dĂ©finie relativement au rĂ©pertoire racine du cgroup freezer qui a Ă©tĂ© Ă©tabli quand le nouvel espace de noms cgroup a Ă©tĂ© créé (en absolu, le nouvel interprĂ©teur est dans la hiĂ©rarchie du cgroup freezer /sub , et le rĂ©pertoire racine de la hiĂ©rarchie du cgroup freezer dans le nouvel espace de noms cgroup est aussi /sub . Par consĂ©quent, lâappartenance Ă un cgroup du nouvel interprĂ©teur est affichĂ©e sous forme « / »).
Cependant, quand nous regardons dans /proc/self/mountinfo , nous constatons lâanomalie suivante :
sh2#
cat
/proc/self/mountinfo | grep freezer
155 145 0:32 /.. /sys/fs/cgroup/freezer ...
Le quatriĂšme champ de cette ligne ( /.. ) devrait montrer le rĂ©pertoire dans le systĂšme de fichiers de cgroup qui forme la racine de ce montage. Ătant donnĂ© que suivant la dĂ©finition des espaces de noms cgroup, le rĂ©pertoire actuel du cgroup freezer du processus devient le rĂ©pertoire racine du cgroup freezer, nous devrions voir « / » dans ce champ. Le problĂšme ici est que nous voyons une entrĂ©e de montage pour le systĂšme de fichiers cgroup, correspondant Ă lâespace de noms cgroup initial (dont le systĂšme de fichiers cgroup a en fait sa racine dans le rĂ©pertoire parent de sub ). Pour corriger ce problĂšme, nous devons remonter le systĂšme de fichiers du cgroup freezer Ă partir du nouvel interprĂ©teur (câest-Ă -dire rĂ©aliser le montage Ă partir dâun processus qui est dans le nouvel espace de noms cgroup) ; aprĂšs quoi, nous verrons les rĂ©sultats attendus :
sh2#
mount
--make-rslave /
# Ne pas propager les
évÚnements de
# montage aux autres espaces de noms
sh2#
umount /sys/fs/cgroup/freezer
sh2#
mount -t cgroup -o freezer freezer
/sys/fs/cgroup/freezer
sh2#
cat /proc/self/mountinfo | grep freezer
155 145 0:32 / /sys/fs/cgroup/freezer rw,relatime ...
STANDARDS
Linux.
NOTES
Lâutilisation des espaces de noms cgroup requiert un noyau configurĂ© avec lâoption CONFIG_CGROUPS .
La virtualisation offerte par les espaces de noms cgroup poursuit plusieurs buts :
|
- |
elle prĂ©vient une fuite dâinformations par laquelle des chemins de rĂ©pertoire de cgroup en dehors dâun conteneur seraient visibles par les processus dans le conteneur. De telles fuites pourraient, par exemple, rĂ©vĂ©ler des informations Ă propos du cadriciel utilisĂ© pour mettre en conteneur les applications ; |
||
|
- |
elle facilite des tĂąches telles que la migration de conteneur. La virtualisation offerte par les espaces de noms cgroup permet aux conteneurs dâĂȘtre protĂ©gĂ©s de la connaissance des noms de chemin de cgroups ancĂȘtres. Sans cette protection, tous les noms de chemin de cgroup (affichĂ©s dans /proc/self/cgroups ) devraient ĂȘtre rĂ©pliquĂ©s sur le systĂšme cible lors de la migration dâun conteneur. Ces noms de chemin devraient aussi ĂȘtre uniques, de façon Ă ne pas entrer en conflit avec dâautres noms de chemin dans le systĂšme cible ; |
||
|
- |
elle permet un meilleur confinement des processus mis en conteneur parce quâil est possible de monter le systĂšme de fichiers de cgroup du conteneur de telle façon que les processus du conteneur puissent accĂ©der aux rĂ©pertoires du cgroup ancĂȘtre. ConsidĂ©rons, par exemple, le scĂ©nario suivant : |
-
|
nous avons un rĂ©pertoire de cgroup, /cg/1 dont le propriĂ©taire est lâutilisateur dâID 9000, |
|||
|
- |
nous avons un processus, X , dont le propriĂ©taire est aussi lâutilisateur dâID 9000, qui est mis dans lâespace de noms sous le cgroup /cg/1/2 (câest-Ă -dire X a Ă©tĂ© placĂ© dans un nouvel espace de noms cgroup Ă lâaide de clone (2) ou unshare (2) avec le drapeau CLONE_NEWCGROUP ). |
Si le cgroup nâest pas mis dans un espace de noms, comme le rĂ©pertoire de cgroup /cg/1 a pour propriĂ©taire lâUID 9000 (qui peut lâĂ©diter) et le processus X a aussi pour propriĂ©taire lâutilisateur dâID 9000, le processus X pourrait modifier le contenu des fichiers de cgroup (câest-Ă -dire modifier les rĂ©glages de cgroup), non seulement dans /cg/1/2 , mais aussi dans le rĂ©pertoire ancĂȘtre de cgroup /cg/1 . La mise en espace de noms du processus X sous le rĂ©pertoire de cgroup /cg/1/2 , en combinaison avec les opĂ©rations adaptĂ©es de montage pour le systĂšme de fichiers de cgroup (comme montrĂ© ci-dessus), empĂȘche le processus de modifier les fichiers dans /cg/1 , puisquâil ne peut mĂȘme pas voir le contenu de ce rĂ©pertoire (ou des rĂ©pertoires ancĂȘtres de cgroup supprimĂ©s ultĂ©rieurement). CombinĂ© avec une application correcte des limites de hiĂ©rarchie, cela empĂȘche le processus X de sortir des limites imposĂ©es par les cgroups ancĂȘtres.
VOIR AUSSI
unshare (1), clone (2), setns (2), unshare (2), proc (5), cgroups (7), credentials (7), namespaces (7), user_namespaces (7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .