namespaces(7) | Miscellaneous Information Manual | namespaces(7) |
espaces de noms – Présentation des espaces de noms sous Linux
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.
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 |
En plus des divers fichiers /proc décrits plus bas, l'API des espaces de noms comprend les appels systèmes suivants :
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.
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 :
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).
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 :
Remarquez les points suivants concernant ces fichiers :
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 :
Consultez clone(2) et user_namespaces(7).
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)
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 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.
5 février 2023 | Pages du manuel de Linux 6.03 |