Man page - credentials(7)

Packages contains this manual

Available languages:

en fr pl ja de

Manual

credentials

NOM
DESCRIPTION
Identifiant de processus (PID)
Identifiant du processus parent (PPID)
Identifiant de groupe de processus et identifiant de session
Identifiants d’utilisateur et de groupe
Modification des UID et GID d’un processus
STANDARDS
NOTES
VOIR AUSSI
TRADUCTION

NOM

credentials - Identifiants de processus

DESCRIPTION

Identifiant de processus (PID)

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

Identifiant du processus parent (PPID)

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

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

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 uid_t et gid_t (dĂ©finis dans <sys/types.h> ).

Sous Linux, chaque processus a les identifiants d’utilisateur et de groupe suivants :

-

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 getuid (2) et getgid (2).

-

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 geteuid (2) ( getegid (2)).

-

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 execve (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 seteuid (2), setreuid (2) ou setresuid (2). Un programme set-group-ID peut effectuer les opĂ©rations correspondantes avec setegid (2), setregid (2) ou setresgid (2). Un processus peut obtenir son UID sauvegardĂ© avec getresuid (2) et son GID sauvegardĂ© avec getresgid (2)).

-

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 path_resolution (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 setfsuid (2) et setfsgid (2).

-

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. Avant Linux  2.6.4, un processus pouvait avoir jusqu’à 32 groupes additionnels ; depuis Linux 2.6.4, cette limite est de 65536 groupes additionnels. L’appel sysconf(_SC_NGROUPS_MAX) 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 getgroups (2).

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 :

-

lors de la vĂ©rification des permissions pour l’envoi de signaux (consultez kill (2)) ;

-

lors de la vĂ©rification des permissions pour la modification des paramĂštres d’ordonnancement (politesse, politique et prioritĂ© d’ordonnancement temps-rĂ©el, prioritĂ© d’E/S) avec setpriority (2), sched_setaffinity (2), sched_setscheduler (2), sched_setparam (2), sched_setattr (2) et ioprio_set (2) ;

-

lors de la vérification de limites de ressources (consultez getrlimit (2)) ;

-

lorsque la limite du nombre d’instances inotify que le processus peut crĂ©er est vĂ©rifiĂ©e (consultez inotify (7)).

Modification des UID et GID d’un processus

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

setgid (2)) Modifier l’UID (ou le GID) rĂ©el (et Ă©ventuellement effectif et sauvegardĂ©) d’un processus.

seteuid (2) (

setegid (2)) Modifier l’UID (ou le GID) effectif d’un processus.

setfsuid (2) (

setfsgid (2)) Modifier l’UID (ou le GID) du systùme de fichiers d’un processus.

setreuid (2) (

setregid (2)) Modifier les UID (ou le GID) rĂ©el et effectif (et Ă©ventuellement sauvegardĂ©) d’un processus.

setresuid (2) (

setresgid (2)) Modifier les UID (ou le GID) rĂ©el, effectif et sauvegardĂ© d’un processus.

setgroups (2)

Modifier la liste des groupes additionnels d’un processus

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

STANDARDS

Les PID, PPID, PGID et SID sont spécifiés dans POSIX.1. Les identifiants réels, effectifs et sauvegardés, et les identifiants de groupe additionnels sont spécifiés dans POSIX.1.

Les UID et GID du systĂšme de fichiers sont une extension de Linux.

NOTES

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.

VOIR AUSSI

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)

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