Provided by: manpages-fr_4.21.0-2_all bug

NOM

       espaces de noms – Présentation des espaces de noms sous Linux

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.

       Cette page présente les différents espaces de noms, leurs fichiers /proc respectifs,  et  récapitule  les
       API qui permettent de travailler avec ces espaces de noms.

   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.
       Espaces de noms Indicateur      Page                  Isolation
       Cgroup          CLONE_NEWCGROUP cgroup_namespaces(7)  Répertoire racine cgroup
       IPC             CLONE_NEWIPC    ipc_namespaces(7)     IPC System V, files de messages
                                                             POSIX
       Réseau          CLONE_NEWNET    network_namespaces(7) Périphériques réseau, piles,
                                                             ports, etc.
       Montage         CLONE_NEWNS     mount_namespaces(7)   Points de montage
       PID             CLONE_NEWPID    pid_namespaces(7)     Identifiants de processus (PID)
       Temps           CLONE_NEWTIME   time_namespaces(7)    Horloges de démarrage et
                                                             monotones
       Utilisateur     CLONE_NEWUSER   user_namespaces(7)    ID utilisateur et groupe
       UTS             CLONE_NEWUTS    uts_namespaces(7)     Nom d'hôte et nom de domaine
                                                             NIS

   API des espaces de noms
       En  plus  des  divers fichiers /proc décrits plus bas, l'API des espaces de noms comprend les appels sys‐
       tèmes suivants :

       clone(2)
              The clone(2)  system call creates a new process. If the flags argument of the call  specifies  one
              or  more  of the CLONE_NEW* flags listed above, then new namespaces are created for each flag, and
              the child process is made a member of those namespaces. (This system call also implements a number
              of features unrelated to namespaces.)

       setns(2)
              The setns(2)  system call allows the calling process to join an existing namespace. The  namespace
              to  join is specified via a file descriptor that refers to one of the /proc/pid/ns files described
              below.

       unshare(2)
              The unshare(2)  system call moves the calling process to a new namespace. If the flags argument of
              the call specifies one or more of the CLONE_NEW* flags listed above, then new namespaces are crea‐
              ted for each flag, and the calling process is made a member of those namespaces. (This system call
              also implements a number of features unrelated to namespaces.)

       ioctl(2)
              Diverses opérations ioctl(2) peuvent être utilisées pour connaître des informations à  propos  des
              espaces de noms. Ces opérations sont décrites dans ioctl_ns(2).

       Dans  la plupart des cas, la création de nouveaux espaces de noms en utilisant clone(2) ou unshare(2) né‐
       cessite de disposer de la capacité CAP_SYS_ADMIN, puisque, dans le nouvel espace de noms, le créateur au‐
       ra 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  particu‐
       lier.

   Le répertoire /proc/[pid]/ns/
       Each process has a /proc/pid/ns/ subdirectory containing one entry for each namespace that supports being
       manipulated by 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]

       Lier le montage (consulter mount(2)) d'un des fichiers de ce répertoire dans un autre emplacement du sys‐
       tème  de fichiers maintient l'espace de noms du processus désigné par pid en fonctionnement, même si tous
       les processus de l'espace de noms sont terminés.

       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
       pid. 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
       setns(2).

       In Linux 3.7 and earlier, these files were visible as hard links. Since Linux 3.8, they appear as  symbo‐
       lic  links.  If  two  processes are in the same namespace, then the device IDs and inode numbers of their
       /proc/pid/ns/xxx symbolic links will be the same; an application can check this using the stat.st_dev and
       stat.st_ino fields returned by stat(2). The content of this symbolic link is a string containing the  na‐
       mespace type and inode number as in the following example:

           $ readlink /proc/$$/ns/uts
           uts:[4026531838]

       Les liens symboliques dans ce sous-répertoire sont les suivants :

       /proc/pid/ns/cgroup (since Linux 4.6)
              Ce fichier est un descripteur pour l'espace de noms cgroup du processus.

       /proc/pid/ns/ipc (since Linux 3.0)
              Ce fichier est un descripteur pour l'espace de noms IPC du processus.

       /proc/pid/ns/mnt (since Linux 3.8)
              Ce fichier est un descripteur pour l'espace de noms montage du processus.

       /proc/pid/ns/net (since Linux 3.0)
              Ce fichier est un descripteur pour l'espace de noms réseau du processus.

       /proc/pid/ns/pid (since Linux 3.8)
              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).

       /proc/pid/ns/pid_for_children (since Linux 4.12)
              This file is a handle for the PID namespace of child processes created by this process.  This  can
              change  as a consequence of calls to unshare(2) and setns(2)  (see pid_namespaces(7)), so the file
              may differ from /proc/pid/ns/pid. The symbolic link gains a value only after the first child  pro‐
              cess  is  created  in the namespace. (Beforehand, readlink(2)  of the symbolic link will return an
              empty buffer.)

       /proc/pid/ns/time (since Linux 5.6)
              Ce fichier est un descripteur pour l'espace de noms temps du processus.

       /proc/pid/ns/time_for_children (since Linux 5.6)
              This file is a handle for the time namespace of child processes created by this process. This  can
              change as a consequence of calls to unshare(2) and setns(2)  (see time_namespaces(7)), so the file
              may differ from /proc/pid/ns/time.

       /proc/pid/ns/user (since Linux 3.8)
              Ce fichier est un descripteur pour l'espace de noms utilisateur du processus.

       /proc/pid/ns/uts (since Linux 3.0)
              Ce fichier est un descripteur pour l'espace de noms UTS du processus.

       La permission de déréférencer ou lire (readlink(2)) ces liens symboliques est contrôlée par une vérifica‐
       tion PTRACE_MODE_READ_FSCREDS du mode d’accès ptrace. Consultez ptrace(2).

   The /proc/sys/user directory
       Les fichiers dans le répertoire /proc/sys/user (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 :

       max_cgroup_namespaces
              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.

       max_ipc_namespaces
              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.

       max_mnt_namespaces
              Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de  noms  mon‐
              tage pouvant être créés dans l’espace de noms utilisateur.

       max_net_namespaces
              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.

       max_pid_namespaces
              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.

       max_time_namespaces (depuis Linux 5.7)
              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.

       max_user_namespaces
              Cette valeur dans le fichier définit une limite par utilisateur du nombre d’espaces de noms utili‐
              sateur pouvant être créés dans l’espace de noms utilisateur.

       max_uts_namespaces
              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.

       Remarquez les points suivants concernant ces fichiers :

       -  Les valeurs dans ces fichiers sont modifiables par les processus privilégiés.

       -  Les valeurs indiquées par ces fichiers sont les limites pour l’espace de noms utilisateur dans  lequel
          le processus ouvert réside.

       -  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.

       -  Les limites s’appliquent à tous les utilisateurs, incluant l’UID 0.

       -  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.

       -  En cas de dépassement de ces limites, clone(2) et unshare(2) échouent avec l’erreur ENOSPC.

       -  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 (/proc/sys/kernel/threads-max). Dans  tous
          les espaces de noms de la descendance, la valeur par défaut dans chaque fichier est MAXINT.

       -  Quand  un  espace  de  noms est créé, l’objet est aussi comptabilisé dans les espaces de noms ancêtre.
          Plus précisément :

          -  Chaque espace de noms utilisateur à un UID créateur.

          -  Quand un espace de noms est créé, il est comptabilisé dans les UID créateurs dans  chacun  des  es‐
             paces 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.

          -  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.

   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 :

       -  An open file descriptor or a bind mount exists for the corresponding /proc/pid/ns/* file.

       -  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.

       -  C’est un espace de noms utilisateur qui possède un ou plusieurs espaces de noms non utilisateur.

       -  It  is  a  PID  namespace,  and  there  is  a  process  that   refers   to   the   namespace   via   a
          /proc/pid/ns/pid_for_children symbolic link.

       -  It   is   a   time   namespace,   and  there  is  a  process  that  refers  to  the  namespace  via  a
          /proc/pid/ns/time_for_children symbolic link.

       -  C’est un espace de noms IPC et un montage correspondant d’un système de fichiers  mqueue  (file  d'at‐
          tente de message — consultez mq_overview(7)) se réfère à cet espace de noms.

       -  C’est  un  espace de noms PID et un montage correspondant d’un système de fichiers proc(5) se réfère à
          cet espace de noms.

EXEMPLES

       Consultez clone(2) et user_namespaces(7).

VOIR AUSSI

       nsenter(1), readlink(1), unshare(1), clone(2),  ioctl_ns(2),  setns(2),  unshare(2),  proc(5),  capabili‐
       ties(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)

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 <tvi‐
       gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Guérard  <fe‐
       vrier@tigreraye.org>,  Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
       bian.org>,  Thomas  Huriaux  <thomas.huriaux@gmail.com>,   Nicolas   François   <nicolas.francois@centra‐
       liens.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>, Cédric Boutillier <cedric.boutil‐
       lier@gmail.com>, Frédéric Hantrais  <fhantrais@gmail.com>  et  Jean-Paul  Guillonneau  <guillonneau.jean‐
       paul@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 à  de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                    namespaces(7)