credentials(7) | Miscellaneous Information Manual | credentials(7) |
credentials - Identifiants de processus
Chaque processus a un identifiant unique entier positif qui lui est attribué à sa création (avec fork(2)). Un processus peut connaître son PID avec getpid(2). Un PID est représenté par le type pid_t (défini dans <sys/types.h>).
Les PID sont utilisés dans un certain nombre d'appels système pour identifier le processus affecté, par exemple : kill(2), ptrace(2), setpriority(2), setpgid(2), setsid(2), sigqueue(3) et waitpid(2).
Le PID d'un processus est conservé au travers d'un execve(2).
L'identifiant de processus parent d'un processus identifie le processus qui l'a créé avec fork(2). Un processus peut connaître son PPID avec getppid(2). Un PPID est représenté à l'aide du type pid_t.
Le PPID d'un processus est conservé au travers d'un execve(2).
Chaque processus a un identifiant de session et un identifiant de groupe de processus, tous deux représentés par le type pid_t. Un processus peut connaître son identifiant de session avec getsid(2) et son identifiant de groupe de processus avec getpgrp(2).
Un processus enfant créé par fork(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 execve(2).
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 setpgid(2). Le processus dont le PID est égal à son identifiant de groupe de processus est le leader du groupe de processus.
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 setsid(2) qui crée une nouvelle session dont l'identifiant est le PID de ce processus. Le créateur de cette session est appelé leader de session.
Tous les processus d'une session partagent un terminal de contrôle. 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 O_NOCTTY est précisé lors de l'appel de open(2)). Un terminal ne peut être le terminal de contrôle que d'une seule session.
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 SIGTTIN est renvoyé au groupe du processus, ce qui a pour effet de suspendre la tâche. Si le terminal a reçu l'attribut TOSTOP (consultez termios(3)), alors seule la tâche de premier plan est autorisée à afficher des données dans le terminal ; l'envoi de données de tâches d'arrière plan vers le terminal déclenche un signal SIGTTOU, 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 interrupt qui provoque normalement un Contrôle-C), le signal est envoyé au processus de premier plan.
Divers appels système et fonctions de bibliothèque peuvent agir sur tous les membres d'un groupe de processus, notamment kill(2), killpg(2), getpriority(2), setpriority(2), ioprio_get(2), ioprio_set(2), waitid(2) et waitpid(2). Consultez également la discussion au sujet des opérations F_GETOWN, F_GETOWN_EX, F_SETOWN et F_SETOWN_EX dans fcntl(2).
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 uid_t et gid_t (définis dans <sys/types.h>).
Sous Linux, chaque processus a les identifiants d'utilisateur et de groupe suivants :
Un processus enfant créé par fork(2) hérite des copies des UID et GID de son parent. Lors d'un execve(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 execve(2).
En dehors des contextes décrits ci‐dessus, les UID d'un processus sont également utilisés dans les cas suivants :
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.
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 prctl(2).
Les modifications d'UID (ou de GID) d'un processus peuvent affecter les capacités du processus, comme décrit dans capabilities(7).
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.
Plusieurs champs du fichier /proc/pid/status montrent les identifiants du processus décrits ci‐dessus. Consultez proc(5) pour plus d'informations.
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 à setuid(2) ou setresuid(2)) soit propagée vers tous les threads POSIX d'un processus. Consultez nptl(7) pour plus de détails.
bash(1), csh(1), groups(1), id(1), newgrp(1), ps(1), runuser(1), setpriv(1), sg(1), su(1), access(2), execve(2), faccessat(2), fork(2), getgroups(2), getpgrp(2), getpid(2), getppid(2), getsid(2), kill(2), setegid(2), seteuid(2), setfsgid(2), setfsuid(2), setgid(2), setgroups(2), setpgid(2), setresgid(2), setresuid(2), setsid(2), setuid(2), waitpid(2), euidaccess(3), initgroups(3), killpg(3), tcgetpgrp(3), tcgetsid(3), tcsetpgrp(3), group(5), passwd(5), shadow(5), capabilities(7), namespaces(7), path_resolution(7), pid_namespaces(7), pthreads(7), signal(7), system_data_types(7), unix(7), user_namespaces(7), sudo(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-Pierre Giraud <jean-pierregiraud@neuf.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 |