.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2013 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 pid_namespaces 7 "30 mars 2023" "Pages du manuel de Linux 6.05.01" .SH NOM pid_namespaces \- Présentation des espaces de noms d'identifiants de processus (ou PID) sous Linux .SH DESCRIPTION Pour une présentation générale des espaces de noms, consultez \fBnamespaces\fP(7). .PP Les espaces de noms PID isolent les espaces de numéros d'identifiants de processus, ce qui signifie que des processus de différents espaces de noms PID peuvent avoir le même PID. Les espaces de noms PID permettent aux conteneurs de fournir des possibilités telles que la suspension et la reprise de l’ensemble des processus d’un conteneur et la migration du conteneur vers un nouvel hôte tout en permettant aux processus du conteneur de conserver leurs PID. .PP Dans un nouvel espace de noms PID, la numérotation commence à\ 1 comme pour un système autonome et les appels à \fBfork\fP(2), \fBvfork\fP(2) ou \fBclone\fP(2) génèrent des identifiants de processus uniques dans l'espace de noms PID. .PP .\" .\" ============================================================ .\" Le noyau doit avoir été configuré avec l'option \fBCONFIG_PID_NS\fP pour permettre l'utilisation des espaces noms PID. .SS "Le processus d'initialisation (init) de l'espace de noms" Le premier processus créé dans un nouvel espace de noms (c'est\-à\-dire le processus créé par \fBclone\fP(2) avec l'attribut \fBCLONE_NEWPID\fP ou le premier processus enfant créé après un appel à \fBunshare\fP(2) avec l'attribut \fBCLONE_NEWPID\fP) a pour PID\ 1. Il est le processus «\ init\ » pour l'espace de noms (consultez \fBinit\fP(1)). Ce processus devient le parent pour n’importe quel processus enfant qui devient orphelin parce qu’un processus résidant dans cet espace de noms PID se termine (voir ci\-après pour plus de détails). .PP If the "init" process of a PID namespace terminates, the kernel terminates all of the processes in the namespace via a \fBSIGKILL\fP signal. This behavior reflects the fact that the "init" process is essential for the correct operation of a PID namespace. In this case, a subsequent \fBfork\fP(2) into this PID namespace fail with the error \fBENOMEM\fP; it is not possible to create a new process in a PID namespace whose "init" process has terminated. Such scenarios can occur when, for example, a process uses an open file descriptor for a \fI/proc/\fPpid\fI/ns/pid\fP file corresponding to a process that was in a namespace to \fBsetns\fP(2) into that namespace after the "init" process has terminated. Another possible scenario can occur after a call to \fBunshare\fP(2): if the first child subsequently created by a \fBfork\fP(2) terminates, then subsequent calls to \fBfork\fP(2) fail with \fBENOMEM\fP. .PP Seuls les signaux pour lesquels le processus «\ init\ » a défini un gestionnaire de signal peuvent être envoyés au processus «\ init\ » par les autres processus de l'espace de noms PID. Cette règle s'applique également aux processus disposant de privilèges et permet d'éviter qu'un processus membre de l'espace de noms PID ne tue accidentellement le processus «\ init\ ». .PP Likewise, a process in an ancestor namespace can\[em]subject to the usual permission checks described in \fBkill\fP(2)\[em]send signals to the "init" process of a child PID namespace only if the "init" process has established a handler for that signal. (Within the handler, the \fIsiginfo_t\fP \fIsi_pid\fP field described in \fBsigaction\fP(2) will be zero.) \fBSIGKILL\fP or \fBSIGSTOP\fP are treated exceptionally: these signals are forcibly delivered when sent from an ancestor PID namespace. Neither of these signals can be caught by the "init" process, and so will result in the usual actions associated with those signals (respectively, terminating and stopping the process). .PP .\" .\" ============================================================ .\" Depuis Linux\ 3.4, l’appel système \fBreboot\fP(2) déclenche l'envoi d'un signal aux processus «\ init\ » des espaces de noms. Consultez \fBreboot\fP(2) pour obtenir plus d'informations. .SS "Imbrication des espaces de noms PID" .\" commit f2302505775fd13ba93f034206f1e2a587017929 .\" The kernel constant MAX_PID_NS_LEVEL Les espaces de noms PID peuvent être imbriqués\ : tous les espaces de noms PID ont un parent, sauf l'espace de noms PID initial («\ root\ »). Le parent d'un espace de noms PID est l'espace de noms PID du processus qui a créé l'espace de noms à l’aide de \fBclone\fP(2) ou \fBunshare\fP(2). Les espaces de noms PID forment donc une arborescence dans laquelle chaque espace de noms peut remonter jusqu'à l'espace «\ root\ ». Depuis Linux\ 3.7, le noyau limite la profondeur maximale d’imbrication pour les espace de noms PID à\ 32. .PP Un processus est visible de tous les processus de son espace de noms PID, et de tous les processus des espaces de noms PID ancêtres qui le séparent de l'espace PID\ «\ root\ ». Ici, on entend par «\ visible\ » qu'un autre processus peut être la cible d’opérations d’un autre processus utilisant des appels système qui précisent l’ID du processus. Inversement, les processus d'un espace de noms PID enfant ne peuvent pas voir les processus de l’espace parent et des espaces de noms ancêtre éloignés. En résumé, un processus peut seulement voir (c'est\-à\-dire envoyer des signaux avec \fBkill\fP(2), définir des valeurs de courtoisie avec \fBsetpriority\fP(2),\ etc.) les processus de son propre espace de noms PID et des espaces de noms de sa descendance. .PP Un processus a un identifiant dans chaque niveau de la hiérarchie des espaces de noms PID dans lequel il est visible, et ce en remontant chaque espace de noms ancêtre jusqu'à l'espace de noms PID «\ root\ ». Les appels système qui s'exécutent sur des identifiants de processus s'appliquent à l'identifiant du processus qui est visible dans l’espace de noms PID de l'appelant. Un appel à \fBgetpid\fP(2) renvoie toujours le PID associé à l'espace de noms dans lequel le processus a été créé. .PP Certains processus d'un espace de noms PID peuvent avoir des parents en dehors de cet espace. Par exemple, le parent du processus initial de l'espace de noms (\fBinit\fP(1), processus dont le PID est\ 1) se trouve forcément en dehors de cet espace. De même, l’enfant direct d'un processus qui a invoqué \fBsetns\fP(2) pour que son enfant rejoigne un espace de noms PID, se trouve dans un espace de noms PID différent de celui de l'appelant à \fBsetns\fP(2). Les appels à \fBgetppid\fP(2) pour de tels processus renvoient\ \fB0\fP. .PP Alors que les processus peuvent descendre librement dans les espaces de noms enfant (par exemple, en utilisant \fBsetns\fP(2) avec un descripteur de fichier d’espace de noms PID), ils ne peuvent pas se déplacer dans l’autre direction. Cela veut dire que les processus ne peuvent entrer dans aucun espace de noms ancêtre (parent, grand\-parent,\ etc.). La modification d’espace de noms PID est une opération à sens unique. .PP .\" .\" ============================================================ .\" L’opération \fBNS_GET_PARENT\fP d’\fBioctl\fP(2) peut être utilisée pour découvrir la relation parentale entre les espaces de noms PID. Consultez \fBioctl_ns\fP(2). .SS "Sémantiques de setns(2) et de unshare(2) " Calls to \fBsetns\fP(2) that specify a PID namespace file descriptor and calls to \fBunshare\fP(2) with the \fBCLONE_NEWPID\fP flag cause children subsequently created by the caller to be placed in a different PID namespace from the caller. (Since Linux 4.12, that PID namespace is shown via the \fI/proc/\fPpid\fI/ns/pid_for_children\fP file, as described in \fBnamespaces\fP(7).) These calls do not, however, change the PID namespace of the calling process, because doing so would change the caller's idea of its own PID (as reported by \fBgetpid\fP()), which would break many applications and libraries. .PP Pour présenter les choses différemment, l'appartenance d'un processus à un espace de noms PID est déterminée lors de la création du processus et ne peut plus être changée ensuite. Cela signifie que la relation parent\-enfant entre processus reproduit la relation parentale entre des espaces de noms PID\ : le parent d'un processus est soit dans le même espace de noms, soit dans l'espace de noms PID du parent immédiat. .PP .\" .\" ============================================================ .\" A process may call \fBunshare\fP(2) with the \fBCLONE_NEWPID\fP flag only once. After it has performed this operation, its \fI/proc/\fPpid\fI/ns/pid_for_children\fP symbolic link will be empty until the first child is created in the namespace. .SS "Adoption d’un enfant orphelin" .\" Furthermore, by definition, the parent of the "init" process .\" of a PID namespace resides in the parent PID namespace. .\" .\" ============================================================ .\" Quand un processus enfant devient orphelin, il est réapparenté au processus «\ init\ » dans l’espace de noms PID de son parent (sinon un des ancêtres les plus proches du parent employé dans la commande \fBPR_SET_CHILD_SUBREAPER\fP de \fBprctl\fP(2) pour être marqué comme le récupérateur des processus de descendants orphelins). Il est à noter qu’à cause des sémantiques de \fBsetns\fP(2) et \fBunshare\fP(2) décrites ci\-dessus, cela peut être le processus «\ init\ » dans l’espace de noms PID qui est le \fIparent\fP de l’espace de noms PID de l’enfant, plutôt que le processus «\ init\ » dans le propre espace de noms PID\ de l’enfant. .SS "Compatibilité de CLONE_NEWPID avec les autres attributs CLONE_*" In current versions of Linux, \fBCLONE_NEWPID\fP can't be combined with \fBCLONE_THREAD\fP. Threads are required to be in the same PID namespace such that the threads in a process can send signals to each other. Similarly, it must be possible to see all of the threads of a process in the \fBproc\fP(5) filesystem. Additionally, if two threads were in different PID namespaces, the process ID of the process sending a signal could not be meaningfully encoded when a signal is sent (see the description of the \fIsiginfo_t\fP type in \fBsigaction\fP(2)). Since this is computed when a signal is enqueued, a signal queue shared by processes in multiple PID namespaces would defeat that. .PP .\" Note these restrictions were all introduced in .\" 8382fcac1b813ad0a4e68a838fc7ae93fa39eda0 .\" when CLONE_NEWPID|CLONE_VM was disallowed .\" (restriction lifted in faf00da544045fdc1454f3b9e6d7f65c841de302) .\" (restriction lifted in e79f525e99b04390ca4d2366309545a836c03bf1) .\" .\" ============================================================ .\" De plus dans les premières versions de Linux, \fBCLONE_NEWPID\fP n’était pas autorisé (échouant avec l’erreur \fBEINVAL\fP) en combinaison avec \fBCLONE_SIGHAND\fP (avant Linux\ 4.3) ainsi que \fBCLONE_VM\fP (avant Linux\ 3.12). Les modifications qui ont apporté ces restrictions ont été aussi portées sur les précédents noyaux stables. .SS "/proc et espaces de noms PID" A \fI/proc\fP filesystem shows (in the \fI/proc/\fPpid directories) only processes visible in the PID namespace of the process that performed the mount, even if the \fI/proc\fP filesystem is viewed from processes in other namespaces. .PP Après la création d'un nouvel espace de noms PID, un enfant peut avoir intérêt à changer son répertoire racine et à monter une nouvelle instance procfs sur \fI/proc\fP afin d'assurer que des commandes comme \fBps\fP(1) fonctionneront correctement. Si un nouvel espace de noms montage est créé simultanément en invoquant \fBclone\fP(2) ou \fBunshare\fP(2) avec l'argument \fBCLONE_NEWNS\fP, il n'est alors pas nécessaire de changer le répertoire racine\ : une nouvelle instance procfs peut être montée directement dans \fI/proc\fP. .PP Depuis un interpréteur de commandes, la commande permettant de monter \fI/proc\fP est\ : .PP .in +4n .EX $ mount \-t proc proc /proc .EE .in .PP .\" .\" ============================================================ .\" L'appel de \fBreadlink\fP(2) appliqué au chemin \fI/proc/self\fP affiche les identifiants des processus de l'appelant dans l'espace de noms PID du montage procfs (c'est\-à\-dire l'espace de noms PID du processus qui a monté procfs). Cela peut être utile lorsque qu'un processus a besoin de connaître son PID dans un autre espace de noms. .SS "Fichiers /proc" .TP \fI/proc/sys/kernel/ns_last_pid\fP (depuis Linux 3.3) .\" commit b8f566b04d3cddd192cfd2418ae6d54ac6353792 Ce fichier (virtualisé par espace de noms PID) affiche le dernier PID qui a été alloué dans cet espace de noms PID. Quand le prochain PID est alloué, le noyau recherchera le plus petit PID non alloué qui est supérieur à cette valeur, et quand ce fichier est lu ultérieurement, il affiche ce PID. .IP .\" This ability is necessary to support checkpoint restore in user-space .\" .\" ============================================================ .\" Un processus peut écrire sur ce fichier s’il a la capacité \fBCAP_SYS_ADMIN\fP ou (depuis Linux\ 5.9) \fBCAP_CHECKPOINT_RESTORE\fP à l’intérieur de l’espace de noms utilisateur qui possède l’espace de noms PID. Cela rend possible de déterminer le PID qui est alloué au prochain processus créé dans cet espace de noms PID. .SS Divers Lorsqu'un identifiant de processus est transmis à l’aide d’un socket de domaine UNIX à un processus d'un autre espace de noms PID (consultez \fBSCM_CREDENTIALS\fP dans \fBunix\fP(7)), il est transformé pour devenir le PID correspondant dans l'espace de noms PID du processus recevant. .SH STANDARDS Linux. .SH EXEMPLES Consulter \fBuser_namespaces\fP(7). .SH "VOIR AUSSI" \fBclone\fP(2), \fBreboot\fP(2), \fBsetns\fP(2), \fBunshare\fP(2), \fBproc\fP(5), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBmount_namespaces\fP(7), \fBnamespaces\fP(7), \fBuser_namespaces\fP(7), \fBswitch_root\fP(8) .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 .