.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2007 by Michael Kerrisk .\" .\" %%%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 .\" .\" 2007-06-13 Creation .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH RÉFÉRENCES 7 "1 novembre 2020" Linux "Manuel du programmeur Linux" .SH NOM credentials \- Identifiants de processus .SH DESCRIPTION .SS "Identifiant de processus (PID)" Chaque processus a un identifiant unique entier positif qui lui est attribué à sa création (avec \fBfork\fP(2)). Un processus peut connaître son PID avec \fBgetpid\fP(2). Un PID est représenté par le type \fIpid_t\fP (défini dans \fI\fP). .PP .\" .BR sched_rr_get_interval (2), .\" .BR sched_getaffinity (2), .\" .BR sched_setaffinity (2), .\" .BR sched_getparam (2), .\" .BR sched_setparam (2), .\" .BR sched_setscheduler (2), .\" .BR sched_getscheduler (2), .\" .BR getsid (2), .\" .BR waitid (2), .\" .BR wait4 (2), Les PID sont utilisés dans un certain nombre d'appels système pour identifier le processus affecté, par exemple\ : \fBkill\fP(2), \fBptrace\fP(2), \fBsetpriority\fP(2), \fBsetpgid\fP(2), \fBsetsid\fP(2), \fBsigqueue\fP(3) et \fBwaitpid\fP(2). .PP Le PID d'un processus est conservé au travers d'un \fBexecve\fP(2). .SS "Identifiant du processus parent (PPID)" L'identifiant de processus parent d'un processus identifie le processus qui l'a créé avec \fBfork\fP(2). Un processus peut connaître son PPID avec \fBgetppid\fP(2). Un PPID est représenté à l'aide du type \fIpid_t\fP. .PP Le PPID d'un processus est conservé au travers d'un \fBexecve\fP(2). .SS "Identifiant de groupe de processus et identifiant de session" Chaque processus a un identifiant de session et un identifiant de groupe de processus, tous deux représentés par le type \fIpid_t\fP. Un processus peut connaître son identifiant de session avec \fBgetsid\fP(2) et son identifiant de groupe de processus avec \fBgetpgrp\fP(2). .PP Un processus enfant créé par \fBfork\fP(2) hérite de l'identifiant de session et de l'identifiant de groupe de processus de son parent. Les identifiants de session et de groupe de processus sont préservés au travers d'un \fBexecve\fP(2). .PP Les sessions et les groupes de processus sont des abstractions destinées à aider au contrôle des tâches dans le shell. Un groupe de processus (parfois appelé «\ tâche\ ») est un ensemble de processus ayant le même identifiant de groupe de processus\ ; le shell crée un nouveau groupe de processus pour le(s) processus utilisé(s) pour exécuter une commande unique ou pipeline (par exemple, les deux processus créés pour exécuter la commande «\ ls\ |\ wc\ » sont placés dans le même groupe de processus). L'appartenance à un groupe de processus peut être changée avec \fBsetpgid\fP(2). Le processus dont le PID est égal à son identifiant de groupe de processus est le \fIleader du groupe de processus\fP. .PP Une session est un ensemble de processus ayant le même identifiant de session. Tous les membres d'un groupe de processus ont également le même identifiant de session (tous les membres d'un groupe de processus appartiennent à la même session, donc les sessions et les groupes de processus forment une hiérarchie stricte à deux niveaux). Une nouvelle session est créée lorsqu'un processus appelle \fBsetsid\fP(2) qui crée une nouvelle session dont l'identifiant est le PID de ce processus. Le créateur de cette session est appelé \fIleader de session\fP. .PP Tous les processus d'une session partagent un \fIterminal de contrôle\fP. Le terminal de contrôle est créé lorsque le leader de session ouvre un terminal pour la première fois (sauf si le paramètre \fBO_NOCTTY\fP est précisé lors de l'appel de \fBopen\fP(2)). Un terminal ne peut être le terminal de contrôle que d'une seule session. .PP Il ne peut y avoir plus d'une tâche ayant la place de «\ tâche de premier plan\ »\ ; les autres tâches de la sessions sont des «\ tâches d'arrière plan\ ». Seule la tâche de premier plan peut recevoir des informations depuis le terminal\ ; si un job d'arrière plan tente de recevoir des informations du terminal, le signal \fBSIGTTIN\fP est renvoyé au groupe du processus, ce qui a pour effet de suspendre la tâche. Si le terminal a reçu l'attribut \fBTOSTOP\fP (consultez \fBtermios\fP(3)), alors seule la tâche de premier plan est autorisée à afficher des données dans le terminal\ ; l'envoi de données d'une tâche d'arrière plan vers le terminal déclenche un signal \fBSIGTTOU\fP, ce qui a pour effet de suspendre la tâche. Lorsqu'une touche du clavier qui génère un signal est enfoncée (par exemple, la touche \fIinterrupt\fP qui provoque normalement un Contrôle\-C), le signal est envoyé au processus de premier plan. .PP Divers appels système et fonctions de bibliothèque peuvent agir sur tous les membres d'un groupe de processus, notamment \fBkill\fP(2), \fBkillpg\fP(2), \fBgetpriority\fP(2), \fBsetpriority\fP(2), \fBioprio_get\fP(2), \fBioprio_set\fP(2), \fBwaitid\fP(2) et \fBwaitpid\fP(2). Consultez également la discussion au sujet des opérations \fBF_GETOWN\fP, \fBF_GETOWN_EX\fP, \fBF_SETOWN\fP et \fBF_SETOWN_EX\fP dans \fBfcntl\fP(2). .SS "Identifiants d'utilisateur et de groupe" Chaque processus a un certain nombre d'identifiants d'utilisateur et de groupe. Ces identifiants sont des entiers représentés respectivement avec les types \fIuid_t\fP et \fIgid_t\fP (définis dans \fI\fP). .PP Sous Linux, chaque processus a les identifiants d'utilisateur et de groupe suivants\ : .IP * 3 Identifiant d'utilisateur réel et identifiant de groupe réel. Ces identifiants déterminent le propriétaire du processus. Un processus peut déterminer ses UID et GID réels avec \fBgetuid\fP(2) et \fBgetgid\fP(2). .IP * UID effectif et GID effectif. Ces identifiants sont utilisés par le noyau pour déterminer les permissions de ce processus lors d'accès à des ressources partagées telles que les files de messages, la mémoire partagée ou les sémaphores. Sur la plupart des systèmes UNIX, ces identifiants déterminent aussi les permissions d'accès aux fichiers. Cependant, Linux utilise l'identifiant d'utilisateur du système de fichiers (décrit plus bas) pour cette tâche. Un processus peut déterminer son UID (GID) effectif avec \fBgeteuid\fP(2) (\fBgetegid\fP(2)). .IP * UID sauvegardé et GID sauvegardé. Ces identifiants sont utilisés dans les programmes set\-user\-ID et set\-group\-ID pour sauvegarder une copie des identifiants effectifs correspondants lors de l'exécution du programme (consultez \fBexecve\fP(2)). Un programme set\-user\-ID peut prendre et abandonner des privilèges en changeant son UID effectif entre les valeurs de ses UID réel et sauvegardé. Cet échange est réalisé par les appels système \fBseteuid\fP(2), \fBsetreuid\fP(2) ou \fBsetresuid\fP(2). Un programme set\-group\-ID peut effectuer les opérations correspondantes avec \fBsetegid\fP(2), \fBsetregid\fP(2) ou \fBsetresgid\fP(2). Un processus peut obtenir son UID sauvegardé avec \fBgetresuid\fP(2) et son GID sauvegardé avec \fBgetresgid\fP(2)). .IP * UID et GID du système de fichiers (spécifiques à Linux). Ces identifiants, ainsi que les identifiants de groupe additionnels décrits plus bas, sont utilisés pour déterminer les permissions d'accès aux fichiers\ ; consultez \fBpath_resolution\fP(7) pour plus de détails. Lorsque l'UID (ou GID) effectif d'un processus est modifié, le noyau définit automatiquement l'UID (ou GID) du système de fichiers à la même valeur. Ainsi, les identifiants du système de fichiers sont en général égaux aux identifiants effectifs, et la sémantique des vérifications de permissions sont les mêmes sous Linux et sous les autres UNIX. Les identifiants du système de fichiers peuvent prendre une valeur différente des identifiants effectifs en utilisant les appels \fBsetfsuid\fP(2) et \fBsetfsgid\fP(2). .IP * .\" Since kernel 2.6.4, the limit is visible via the read-only file .\" /proc/sys/kernel/ngroups_max. .\" As at 2.6.22-rc2, this file is still read-only. GID additionnels. Il s'agit d'un ensemble d'identifiants de groupe supplémentaires qui sont utilisés pour les vérifications de permissions d'accès aux fichiers et autres ressources partagées. Avec les noyaux Linux antérieurs à\ 2.6.4, un processus pouvait avoir jusqu'à 32\ groupes additionnels\ ; depuis le noyau\ 2.6.4, cette limite est de 65536\ groupes additionnels. L'appel \fIsysconf(_SC_NGROUPS_MAX)\fP peut être utilisé pour déterminer le nombre de groupes additionnels auxquels un processus peut appartenir. Un processus peut consulter son ensemble de GID additionnels avec \fBgetgroups\fP(2). .PP Un processus enfant créé par \fBfork\fP(2) hérite des copies des UID et GID de son parent. Lors d'un \fBexecve\fP(2), les UID et GID réels ainsi que les GID supplémentaires sont préservés\ ; les identifiants effectifs et sauvegardés peuvent être modifiés comme indiqué dans \fBexecve\fP(2). .PP En dehors des contextes décrits ci\(hydessus, les UID d'un processus sont également utilisés dans les cas suivants\ : .IP * 3 lors de la vérification des permissions pour l'envoi de signaux (consultez \fBkill\fP(2))\ ; .IP * lors de la vérification des permissions pour la modification des paramètres d'ordonnancement (politesse, politique et priorité d'ordonnancement temps\(hyréel, priorité d'E/S) avec \fBsetpriority\fP(2), \fBsched_setaffinity\fP(2), \fBsched_setscheduler\fP(2), \fBsched_setparam\fP(2), \fBsched_setattr\fP(2) et \fBioprio_set\fP(2)\ ; .IP * lors de la vérification de limites de ressources (consultez \fBgetrlimit\fP(2))\ ; .IP * .\" lorsque la limite du nombre d'instances inotify que le processus peut créer est vérifiée (consultez \fBinotify\fP(7)). .SS "Modification des UID et GID d'un processus" .PP Soumis aux règles décrites dans les pages de manuel concernées, un processus peut se servir des API suivantes pour modifier ses UID et GID. .TP \fBsetuid\fP(2) (\fBsetgid\fP(2)) Modifier l'UID (ou le GID) réel (et éventuellement effectif et sauvegardé) d'un processus. .TP \fBseteuid\fP(2) (\fBsetegid\fP(2)) Modifier l'UID (ou le GID) effectif d'un processus. .TP \fBsetfsuid\fP(2) (\fBsetfsgid\fP(2)) Modifier l'UID (ou le GID) du système de fichiers d'un processus. .TP \fBsetreuid\fP(2) (\fBsetregid\fP(2)) Modifier les UID (ou le GID) réel et effectif (et éventuellement sauvegardé) d'un processus. .TP \fBsetresuid\fP(2) (\fBsetresgid\fP(2)) Modifier les UID (ou le GID) réel, effectif et sauvegardé d'un processus. .TP \fBsetgroups\fP(2) Modifier la liste des groupes additionnels d'un processus .PP Toutes les modifications d'UID (ou de GID) effectif d'un processus sont automatiquement propagées sur l'UID (ou le GID) du système de fichiers du processus. Les modifications d'UID (ou de GID) effectif d'un processus peuvent aussi affecter l'attribut «\ dumpable\ » du processus, comme décrit dans \fBprctl\fP(2). .PP Les modifications d'UID (ou de GID) d'un processus peuvent affecter les capacités du processus, comme décrit dans \fBcapabilities\fP(7). .SH CONFORMITÉ Les PID, PPID, PGID et SID sont spécifiés dans POSIX.1\-2001. Les identifiants réels, effectifs et sauvegardés, et les identifiants de groupe additionnels sont spécifiés dans POSIX.1\-2001. Les UID et GID du système de fichiers sont une extension de Linux. .SH NOTES Plusieurs champs du fichiers \fI/proc/[pid]/status\fP montrent les identifiants du processus décrits ci\(hydessus. Consultez \fBproc\fP(5) pour plus d'informations. .PP La spécification POSIX des threads demande que les identifiants soient partagés par tous les threads d'un processus. Toutefois, au niveau du noyau, Linux maintient des identifiants d'utilisateurs et de groupes séparés pour chaque thread. L'implémentation des threads NPTL effectue un certain travail pour s'assurer que toute modification d'identifiants d'utilisateur ou de groupe (par exemple, au moyen d'appels à \fBsetuid\fP(2) ou \fBsetresuid\fP(2)) soit propagée vers tous les threads POSIX d'un processus. Consultez \fBnptl\fP(7) pour plus de détails. .SH "VOIR AUSSI" \fBbash\fP(1), \fBcsh\fP(1), \fBgroups\fP(1), \fBid\fP(1), \fBnewgrp\fP(1), \fBps\fP(1), \fBrunuser\fP(1), \fBsetpriv\fP(1), \fBsg\fP(1), \fBsu\fP(1), \fBaccess\fP(2), \fBexecve\fP(2), \fBfaccessat\fP(2), \fBfork\fP(2), \fBgetgroups\fP(2), \fBgetpgrp\fP(2), \fBgetpid\fP(2), \fBgetppid\fP(2), \fBgetsid\fP(2), \fBkill\fP(2), \fBsetegid\fP(2), \fBseteuid\fP(2), \fBsetfsgid\fP(2), \fBsetfsuid\fP(2), \fBsetgid\fP(2), \fBsetgroups\fP(2), \fBsetpgid\fP(2), \fBsetresgid\fP(2), \fBsetresuid\fP(2), \fBsetsid\fP(2), \fBsetuid\fP(2), \fBwaitpid\fP(2), \fBeuidaccess\fP(3), \fBinitgroups\fP(3), \fBkillpg\fP(3), \fBtcgetpgrp\fP(3), \fBtcgetsid\fP(3), \fBtcsetpgrp\fP(3), \fBgroup\fP(5), \fBpasswd\fP(5), \fBshadow\fP(5), \fBcapabilities\fP(7), \fBnamespaces\fP(7), \fBpath_resolution\fP(7), \fBpid_namespaces\fP(7), \fBpthreads\fP(7), \fBsignal\fP(7), \fBsystem_data_types\fP(7), \fBunix\fP(7), \fBuser_namespaces\fP(7), \fBsudo\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-Pierre Giraud . .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 .