Provided by: manpages-fr_4.18.1-1_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 systè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 created 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 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.

   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 systè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 symbolic 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 namespace 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 process 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érification 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 montage 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 utilisateur 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 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.

          •  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'attente 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),
       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)

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>,   Cédric   Boutillier
       <cedric.boutillier@gmail.com>,   Frédéric   Hantrais  <fhantrais@gmail.com>  et  Jean-Paul
       Guillonneau <guillonneau.jeanpaul@free.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.