credentials(7) Miscellaneous Information Manual credentials(7) NOM credentials - Identifiants de processus DESCRIPTION Identifiant de processus (PID) Chaque processus a un identifiant unique entier positif qui lui est attribue a sa creation (avec fork(2)). Un processus peut connaitre son PID avec getpid(2). Un PID est represente par le type pid_t (defini dans ). Les PID sont utilises dans un certain nombre d'appels systeme pour identifier le processus affecte, par exemple : kill(2), ptrace(2), setpriority(2), setpgid(2), setsid(2), sigqueue(3) et waitpid(2). Le PID d'un processus est conserve 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 cree avec fork(2). Un processus peut connaitre son PPID avec getppid(2). Un PPID est represente a l'aide du type pid_t. Le PPID d'un processus est conserve 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 representes par le type pid_t. Un processus peut connaitre son identifiant de session avec getsid(2) et son identifiant de groupe de processus avec getpgrp(2). Un processus enfant cree par fork(2) herite 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 preserves au travers d'un execve(2). Les sessions et les groupes de processus sont des abstractions destinees a aider au controle des taches dans le shell. Un groupe de processus (parfois appele << tache >>) est un ensemble de processus ayant le meme identifiant de groupe de processus ; le shell cree un nouveau groupe de processus pour le(s) processus utilise(s) pour executer une commande unique ou pipeline (par exemple, les deux processus crees pour executer la commande << ls | wc >> sont places dans le meme groupe de processus). L'appartenance a un groupe de processus peut etre changee avec setpgid(2). Le processus dont le PID est egal a son identifiant de groupe de processus est le leader du groupe de processus. Une session est un ensemble de processus ayant le meme identifiant de session. Tous les membres d'un groupe de processus ont egalement le meme identifiant de session (tous les membres d'un groupe de processus appartiennent a la meme session, donc les sessions et les groupes de processus forment une hierarchie stricte a deux niveaux). Une nouvelle session est creee lorsqu'un processus appelle setsid(2) qui cree une nouvelle session dont l'identifiant est le PID de ce processus. Le createur de cette session est appele leader de session. Tous les processus d'une session partagent un terminal de controle. Le terminal de controle est cree lorsque le leader de session ouvre un terminal pour la premiere fois (sauf si le parametre O_NOCTTY est precise lors de l'appel de open(2)). Un terminal ne peut etre le terminal de controle que d'une seule session. Il ne peut y avoir plus d'une tache ayant la place de << tache de premier plan >> ; les autres taches de la sessions sont des << taches d'arriere plan >>. Seule la tache de premier plan peut recevoir des informations depuis le terminal ; si un job d'arriere plan tente de recevoir des informations du terminal, le signal SIGTTIN est renvoye au groupe du processus, ce qui a pour effet de suspendre la tache. Si le terminal a recu l'attribut TOSTOP (consultez termios(3)), alors seule la tache de premier plan est autorisee a afficher des donnees dans le terminal ; l'envoi de donnees de taches d'arriere plan vers le terminal declenche un signal SIGTTOU, ce qui a pour effet de suspendre la tache. Lorsqu'une touche du clavier qui genere un signal est enfoncee (par exemple, la touche interrupt qui provoque normalement un Controle-C), le signal est envoye au processus de premier plan. Divers appels systeme et fonctions de bibliotheque 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 egalement la discussion au sujet des operations 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 representes respectivement avec les types uid_t et gid_t (definis dans ). Sous Linux, chaque processus a les identifiants d'utilisateur et de groupe suivants : - Identifiant d'utilisateur reel et identifiant de groupe reel. Ces identifiants determinent le proprietaire du processus. Un processus peut determiner ses UID et GID reels avec getuid(2) et getgid(2). - UID effectif et GID effectif. Ces identifiants sont utilises par le noyau pour determiner les permissions de ce processus lors d'acces a des ressources partagees telles que les files de messages, la memoire partagee ou les semaphores. Sur la plupart des systemes UNIX, ces identifiants determinent aussi les permissions d'acces aux fichiers. Cependant, Linux utilise l'identifiant d'utilisateur du systeme de fichiers (decrit plus bas) pour cette tache. Un processus peut determiner son UID (GID) effectif avec geteuid(2) (getegid(2)). - UID sauvegarde et GID sauvegarde. Ces identifiants sont utilises dans les programmes set-user-ID et set-group-ID pour sauvegarder une copie des identifiants effectifs correspondants lors de l'execution du programme (consultez execve(2)). Un programme set-user-ID peut prendre et abandonner des privileges en changeant son UID effectif entre les valeurs de ses UID reel et sauvegarde. Cet echange est realise par les appels systeme seteuid(2), setreuid(2) ou setresuid(2). Un programme set-group-ID peut effectuer les operations correspondantes avec setegid(2), setregid(2) ou setresgid(2). Un processus peut obtenir son UID sauvegarde avec getresuid(2) et son GID sauvegarde avec getresgid(2)). - UID et GID du systeme de fichiers (specifiques a Linux). Ces identifiants, ainsi que les identifiants de groupe additionnels decrits plus bas, sont utilises pour determiner les permissions d'acces aux fichiers ; consultez path_resolution(7) pour plus de details. Lorsque l'UID (ou GID) effectif d'un processus est modifie, le noyau definit automatiquement l'UID (ou GID) du systeme de fichiers a la meme valeur. Ainsi, les identifiants du systeme de fichiers sont en general egaux aux identifiants effectifs, et la semantique des verifications de permissions sont les memes sous Linux et sous les autres UNIX. Les identifiants du systeme de fichiers peuvent prendre une valeur differente des identifiants effectifs en utilisant les appels setfsuid(2) et setfsgid(2). - GID additionnels. Il s'agit d'un ensemble d'identifiants de groupe supplementaires qui sont utilises pour les verifications de permissions d'acces aux fichiers et autres ressources partagees. Avant Linux 2.6.4, un processus pouvait avoir jusqu'a 32 groupes additionnels ; depuis Linux 2.6.4, cette limite est de 65536 groupes additionnels. L'appel sysconf(_SC_NGROUPS_MAX) peut etre utilise pour determiner 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 cree par fork(2) herite des copies des UID et GID de son parent. Lors d'un execve(2), les UID et GID reels ainsi que les GID supplementaires sont preserves ; les identifiants effectifs et sauvegardes peuvent etre modifies comme indique dans execve(2). En dehors des contextes decrits ci-dessus, les UID d'un processus sont egalement utilises dans les cas suivants : - lors de la verification des permissions pour l'envoi de signaux (consultez kill(2)) ; - lors de la verification des permissions pour la modification des parametres d'ordonnancement (politesse, politique et priorite d'ordonnancement temps-reel, priorite 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 verification de limites de ressources (consultez getrlimit(2)) ; - lorsque la limite du nombre d'instances inotify que le processus peut creer est verifiee (consultez inotify(7)). Modification des UID et GID d'un processus Soumis aux regles decrites dans les pages de manuel concernees, un processus peut se servir des API suivantes pour modifier ses UID et GID. setuid(2) ( setgid(2)) Modify the process's real (and possibly effective and saved-set) user (group) IDs. seteuid(2) ( setegid(2)) Modify the process's effective user (group) ID. setfsuid(2) ( setfsgid(2)) Modify the process's filesystem user (group) ID. setreuid(2) ( setregid(2)) Modify the process's real and effective (and possibly saved-set) user (group) IDs. setresuid(2) ( setresgid(2)) Modify the process's real, effective, and saved-set user (group) IDs. 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 propagees sur l'UID (ou le GID) du systeme de fichiers du processus. Les modifications d'UID (ou de GID) effectif d'un processus peuvent aussi affecter l'attribut << dumpable >> du processus, comme decrit dans prctl(2). Les modifications d'UID (ou de GID) d'un processus peuvent affecter les capacites du processus, comme decrit dans capabilities(7). STANDARDS Les PID, PPID, PGID et SID sont specifies dans POSIX.1. Les identifiants reels, effectifs et sauvegardes, et les identifiants de groupe additionnels sont specifies dans POSIX.1. Les UID et GID du systeme de fichiers sont une extension de Linux. NOTES Plusieurs champs du fichier /proc/pid/status montrent les identifiants du processus decrits ci-dessus. Consultez proc(5) pour plus d'informations. La specification POSIX des threads demande que les identifiants soient partages par tous les threads d'un processus. Toutefois, au niveau du noyau, Linux maintient des identifiants d'utilisateurs et de groupes separes pour chaque thread. L'implementation 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 a setuid(2) ou setresuid(2)) soit propagee vers tous les threads POSIX d'un processus. Consultez nptl(7) pour plus de details. 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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Cedric Boutillier , Frederic Hantrais et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 19 novembre 2023 credentials(7)