.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2013, 2016, 2017 by Michael Kerrisk .\" and Copyright (c) 2012 by Eric W. Biederman .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH "ESPACES DE NOMS" 7 "1 novembre 2020" Linux "Manuel du programmeur Linux" .SH NOM espaces de noms – Présentation des espaces de noms sous Linux .SH DESCRIPTION Un espace de noms transforme une ressource globale du système en une abstraction qui la présente aux processus dans cet espace de noms comme une instance indépendante de la ressource globale. Seuls les processus qui appartiennent à l'espace de noms peuvent voir les changements apportés à la ressource globale. Les espaces de noms sont notamment utilisés mettre en œuvre les conteneurs. .PP .\" Cette page présente les différents espaces de noms, leurs fichiers \fI/proc\fP respectifs, et récapitule les API qui permettent de travailler avec ces espaces de noms. .SS "Types d’espaces de noms" La table suivante présente les types d’espace de noms disponibles dans Linux. La seconde colonne présente la valeur de l’indicateur utilisé pour indiquer le type d’espace de noms dans les diverses API. La troisième colonne indique la page de manuel qui fournit des détails sur le type d’espace de noms. La dernière colonne est un résumé des ressources qui sont isolées par le type d’espace de noms. .TS lB lB lB lB l1 lB1 l1 l. Espaces de noms Indicateur Page Isolation Cgroup CLONE_NEWCGROUP \fBcgroup_namespaces\fP(7) Répertoire racine cgroup IPC CLONE_NEWIPC \fBipc_namespaces\fP(7) T{ IPC System V, .br files de messages POSIX T} Réseau CLONE_NEWNET \fBnetwork_namespaces\fP(7) T{ Périphériques réseau, .br piles, ports, etc. T} Montage CLONE_NEWNS \fBmount_namespaces\fP(7) Points de montage PID CLONE_NEWPID \fBpid_namespaces\fP(7) Identifiants de processus (PID) Temps CLONE_NEWTIME \fBtime_namespaces\fP(7) T{ Horloges de .br démarrage et monotones T} Utilisateur CLONE_NEWUSER \fBuser_namespaces\fP(7) ID utilisateur et groupe UTS CLONE_NEWUTS \fButs_namespaces\fP(7) T{ Nom de domaine .br NIS et nom d'hôte T} .TE .\" .\" ==================== The namespaces API ==================== .\" .SS "API des espaces de noms" En plus des divers fichiers \fI/proc\fP décrits plus bas, l'API des espaces de noms comprend les appels systèmes suivants\ : .TP \fBclone\fP(2) L'appel système \fBclone\fP(2) crée un nouveau processus. Si lors de l'appel, l'argument \fIflags\fP précise un ou plusieurs des indicateurs \fBCLONE_NEW*\fP décrits ci\-dessous, un nouvel espace de noms sera créé pour chaque indicateur et le processus enfant sera membre de ces espaces de noms. Cet appel système implémente également plusieurs fonctionnalités sans lien avec les espaces de noms. .TP \fBsetns\fP(2) L'appel système \fBsetns\fP(2) permet à un processus appelant de rejoindre un espace de noms existant. Cet espace de noms est précisé au moyen d'un descripteur de fichier qui renvoie vers l'un des fichiers \fI/proc/[pid]/ns\fP décrits ci\-dessous. .TP \fBunshare\fP(2) L'appel système \fBunshare\fP(2) déplace le processus appelant dans un nouvel espace de noms. Si lors de l'appel, son argument \fIflags\fP précise un ou plusieurs des indicateurs \fBCLONE_NEW*\fP décrits ci\-dessous, un nouvel espace de noms sera créé pour chaque indicateur et le processus appelant sera membre de ces espaces de noms. Cet appel système implémente également plusieurs fonctionnalités sans lien avec les espaces de noms. .TP \fBioctl\fP(2) Diverses opérations \fBioctl\fP(2) peuvent être utilisées pour connaître des informations à propos des espaces de noms. Ces opérations sont décrites dans \fBioctl_ns\fP(2). .PP .\" .\" ==================== The /proc/[pid]/ns/ directory ==================== .\" Dans la plupart des cas, la création de nouveaux espaces de noms en utilisant \fBclone\fP(2) ou \fBunshare\fP(2) nécessite de disposer de la capacité \fBCAP_SYS_ADMIN\fP, puisque, dans le nouvel espace de noms, le créateur aura le pouvoir de changer les ressources globales qui sont visibles aux autres processus qui y sont créés ultérieurement ou de joindre l’espace de noms. Les espaces de noms utilisateur forment une exception\ : à partir de Linux\ 3.8, la création d'un espace de noms utilisateur ne nécessite pas de privilège particulier. .SS "Le répertoire /proc/[pid]/ns/" .\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f Chaque processus a un sous\-répertoire \fI/proc/[pid]/ns/\fP contenant une entrée pour chaque espace de noms qui prend en charge sa manipulation par \fBsetns\fP(2)\ : .PP .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 .PP Lier le montage (consulter \fBmount\fP(2)) d'un des fichiers de ce répertoire dans un autre emplacement du système de fichiers maintient l'espace de noms du processus désigné par \fIpid\fP en fonctionnement, même si tous les processus de l'espace de noms sont terminés. .PP L'ouverture d'un des fichiers de ce répertoire (ou d'un fichier qui est un montage bind de l'un de ces fichiers) renvoie un gestionnaire de fichier pour l'espace de noms correspondant au processus désigné par \fIpid\fP. Tant que ce descripteur de fichier est ouvert, l'espace de noms reste opérationnel, même si tous les processus de l'espace de noms sont terminés. Le descripteur de fichier peut être transmis au moyen de \fBsetns\fP(2). .PP .\" 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 Jusqu’à la version\ 3.7 de Linux (incluse), ces fichiers apparaissaient comme des liens physiques. À partir de Linux\ 3.8, ils apparaissent comme des liens symboliques. Si deux processus sont dans le même espace de noms, alors ils auront les mêmes identifiants de périphérique et leurs numéros d’inœud pour leurs liens symboliques \fI/proc/[pid]/ns/xxx\fP seront les mêmes. Une application peut consulter cette information grâce aux champs \fIstat.st_dev\fP et \fIstat.st_ino\fP renvoyés par \fBstat\fP(2). Le contenu de ce lien symbolique est une chaîne de caractères contenant le type de l'espace de noms et le numéro d'inœud, comme dans l'exemple suivant\ : .PP .in +4n .EX $ \fBreadlink /proc/$$/ns/uts\fP uts:[4026531838] .EE .in .PP Les liens symboliques dans ce sous\-répertoire sont les suivants\ : .TP \fI/proc/[pid]/ns/cgroup\fP (depuis Linux 4.6) Ce fichier est un descripteur pour l'espace de noms cgroup du processus. .TP \fI/proc/[pid]/ns/ipc\fP (depuis Linux 3.0) Ce fichier est un descripteur pour l'espace de noms IPC du processus. .TP \fI/proc/[pid]/ns/mnt\fP (depuis Linux 3.8) .\" commit 8823c079ba7136dc1948d6f6dcb5f8022bde438e Ce fichier est un descripteur pour l'espace de noms montage du processus. .TP \fI/proc/[pid]/ns/net\fP (depuis Linux 3.0) Ce fichier est un descripteur pour l'espace de noms réseau du processus. .TP \fI/proc/[pid]/ns/pid\fP (depuis Linux 3.8) .\" commit 57e8391d327609cbf12d843259c968b9e5c1838f Ce fichier est un descripteur pour l'espace de noms PID du processus. Ce descripteur est permanent pour toute la durée de vie du processus (c’est\-à\-dire que l’appartenance de l’espace de noms PID ne change jamais). .TP \fI/proc/[pid]/ns/pid_for_children\fP (depuis Linux 4.12) .\" commit eaa0d190bfe1ed891b814a52712dcd852554cb08 Ce fichier est un descripteur pour l’espace de noms PID des processus enfant créés par ce processus. Cela peut changer comme conséquence des appels à \fBunshare\fP(2) et \fBsetns\fP(2) (consultez \fBpid_namespaces\fP(7)), aussi le fichier peut différer de \fI/proc/[pid]/ns/pid\fP. Le lien symbolique obtient une valeur seulement après que le premier processus enfant soit créé dans cet espace de noms. Auparavant, \fBreadlink\fP(2) sur le lien symbolique renvoyait un tampon vide. .TP \fI/proc/[pid]/ns/time\fP (depuis Linux 5.6) Ce fichier est un descripteur pour l'espace de noms temps du processus. .TP \fI/proc/[pid]/ns/time_for_children\fP (depuis Linux 5.6) Ce fichier est un descripteur pour l’espace de noms temps des processus enfant créés par ce processus. Cela peut changer comme conséquence des appels à \fBunshare\fP(2) et \fBsetns\fP(2) (consultez \fBtime_namespaces\fP(7)), aussi le fichier peut différer de \fI/proc/[pid]/ns/time\fP. .TP \fI/proc/[pid]/ns/user\fP (depuis Linux 3.8) .\" commit cde1975bc242f3e1072bde623ef378e547b73f91 Ce fichier est un descripteur pour l'espace de noms utilisateur du processus. .TP \fI/proc/[pid]/ns/uts\fP (depuis Linux 3.0) Ce fichier est un descripteur pour l'espace de noms UTS du processus. .PP .\" .\" ==================== The /proc/sys/user directory ==================== .\" La permission de déréférencer ou lire (\fBreadlink\fP(2)) ces liens symboliques est contrôlée par une vérification \fBPTRACE_MODE_READ_FSCREDS\fP du mode d’accès ptrace. Consultez \fBptrace\fP(2). .SS "Répertoire /proc/sys/user" Les fichiers dans le répertoire \fI/proc/sys/user\fP (qui existe depuis Linux\ 4.9) expose les limites du nombre d’espaces de noms des divers types pouvant être créés. Ces fichiers sont les suivants\ : .TP \fImax_cgroup_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms cgroup pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_ipc_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms IPC pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_mnt_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms montage pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_net_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms réseau pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_pid_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms PID pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_time_namespaces\fP (depuis Linux 5.7) .\" commit eeec26d5da8248ea4e240b8795bb4364213d3247 Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms temps pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_user_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms utilisateur pouvant être créés dans l’espace de noms utilisateur. .TP \fImax_uts_namespaces\fP Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms UTS pouvant être créés dans l’espace de noms utilisateur. .PP Remarquez les points suivants concernant ces fichiers\ : .IP * 3 Les valeurs dans ces fichiers sont modifiables par les processus privilégiés. .IP * Les valeurs indiquées par ces fichiers sont les limites pour l’espace de noms utilisateur dans lequel le processus ouvert réside. .IP * Les limites sont pour chaque utilisateur. Chaque utilisateur dans le même espace de noms peut créer des espaces de noms jusqu’à la limite définie. .IP * Les limites s’appliquent à tous les utilisateurs, incluant l’UID\ 0. .IP * Ces limites s’appliquent en plus de n’importe quelles autres limites par espace de noms (tels que les espaces de noms PID ou utilisateur) qui peuvent être imposées. .IP * En cas de dépassement de ces limites, \fBclone\fP(2) et \fBunshare\fP(2) échouent avec l’erreur \fBENOSPC\fP. .IP * Pour l’espace de noms utilisateur de départ, la valeur par défaut dans chacun de ces fichiers est la moitié de la limite du nombre de threads pouvant être créés (\fI/proc/sys/kernel/threads\-max\fP). Dans tous les espaces de noms de la descendance, la valeur par défaut dans chaque fichier est \fBMAXINT\fP. .IP * Quand un espace de noms est créé, l’objet est aussi comptabilisé dans les espaces de noms ancêtre. Plus précisément\ : .RS .IP + 3 Chaque espace de noms utilisateur à un UID créateur. .IP + Quand un espace de noms est créé, il est comptabilisé dans les UID créateurs dans chacun des espaces de noms ancêtre et le noyau assure que la limite de l’espace de noms correspondant pour l’UID créateur dans l’espace de noms ancêtre ne soit pas dépassée. .IP + Le point ci\-dessus assure que la création d’un nouvel espace de noms utilisateur ne peut pas être utilisée pour se soustraire aux limites en vigueur dans l’espace de noms utilisateur actuel. .RE .\" .SS "Durée de vie des espaces de noms" En l’absence d’autres facteurs, un espace de noms est automatiquement détruit quand le dernier processus de l’espace de noms se termine ou le quitte. Cependant, il existe un certain nombre d’autres facteurs qui peuvent obliger l’existence de l’espace de noms même s’il n’a plus de processus membre, dont les facteurs suivants\ : .IP * 3 Un descripteur de fichier ouvert ou un montage bind existe pour le fichier correspondant \fI/proc/[pid]/ns/*\fP. .IP * L’espace de noms est hiérarchique (c’est\-à\-dire un espace de noms PID ou utilisateur) et possède un espace de noms enfant. .IP * C’est un espace de noms utilisateur qui possède un ou plusieurs espaces de noms non utilisateur. .IP * C’est un espace de noms PID et il existe un processus qui se réfère à lui à l’aide d’un lien symbolique \fI/proc/[pid]/ns/pid_for_children\fP. .IP * C’est un espace de noms temps et il existe un processus qui se réfère à lui à l’aide d’un lien symbolique \fI/proc/[pid]/ns/temps_for_children\fP. .IP * C’est un espace de noms IPC et un montage correspondant d’un système de fichiers \fImqueue\fP (file d'attente de message —\ consultez \fBmq_overview\fP(7)) se réfère à cet espace de noms. .IP * C’est un espace de noms PID et un montage correspondant d’un système de fichiers \fBproc\fP(5) se réfère à cet espace de noms. .SH EXEMPLES Consultez \fBclone\fP(2) et \fBuser_namespaces\fP(7). .SH "VOIR AUSSI" \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), \fBpam_namespace\fP(8), \fBswitch_root\fP(8) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Cédric Boutillier , Frédéric Hantrais et Jean-Paul Guillonneau . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .