.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) .\" and Copyright (C) 2008, 2010, 2015, Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified Thu Oct 31 12:04:29 1996 by Eric S. Raymond .\" Modified, 27 May 2004, Michael Kerrisk .\" Added notes on capability requirements .\" 2008-05-03, mtk, expanded and rewrote parts of DESCRIPTION and RETURN .\" VALUE, made style of page more consistent with man-pages style. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getgroups 2 "2 mai 2024" "Pages du manuel de Linux 6.8" .SH NOM getgroups, setgroups \- Lire et écrire la liste des groupes additionnels d'un processus .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint getgroups(int \fP\fIsize\fP\fB, gid_t \fP\fIlist\fP\fB[]);\fP .P \fB#include \fP .P \fBint setgroups(size_t \fP\fIsize\fP\fB, const gid_t *_Nullable \fP\fIlist\fP\fB);\fP .fi .P .RS -4 Exigences de macros de test de fonctionnalités pour la glibc (consulter \fBfeature_test_macros\fP(7)) : .RE .P \fBsetgroups\fP() : .nf Depuis la glibc 2.19 : _DEFAULT_SOURCE glibc 2.19 et antérieures : _BSD_SOURCE .fi .SH DESCRIPTION \fBgetgroups\fP() renvoie dans la liste \fIlist\fP les identifiants des groupes additionnels du processus appelant. Le paramètre \fIsize\fP doit indiquer le nombre maximal d'éléments qui peuvent être stockés dans le tampon pointé par \fIlist\fP. Si le processus appelant est membre de plus de \fIsize\fP groupes additionnels, cela génère une erreur. .P Il n'est pas précisé si l'ID du groupe effectif du processus appelant est inclus dans la liste renvoyée (ainsi, une application doit aussi appeler \fBgetegid\fP(2) et ajouter ou supprimer la valeur qui en résulte). .P Si \fIsize\fP vaut zéro, \fIlist\fP n'est pas modifiée, mais le nombre total de groupes additionnels pour le processus est renvoyé. Cela permet à l'appelant de déterminer la taille d'une liste \fIlist\fP allouée dynamiquement à utiliser dans un appel à \fBgetgroups\fP() ultérieur. .P \fBsetgroups\fP() définit des identifiants de groupe additionnel pour le processus appelant. Les privilèges appropriés sont nécessaires (voir la description de \fBEPERM\fP ci\-dessous). Le paramètre \fIsize\fP indique le nombre d'identifiants de groupe additionnel du tampon pointé par \fIlist\fP. Un processus peut supprimer tous ses groupes additionnels : .P .in +4n .EX setgroups(0, NULL); .EE .in .SH "VALEUR RENVOYÉE" En cas de succès, \fBgetgroups\fP() renvoie le nombre d'identifiants de groupe additionnel. En cas d'erreur, \fB\-1\fP est renvoyé et \fIerrno\fP est positionné pour indiquer l'erreur. .P En cas de succès, \fBsetgroups\fP() renvoie \fB0\fP. En cas d'erreur, \fB\-1\fP est renvoyé et \fIerrno\fP est positionné pour indiquer l'erreur. .SH ERREURS .TP \fBEFAULT\fP \fIlist\fP contient une adresse non autorisée. .P \fBgetgroups\fP() peut également échouer avec les erreurs suivantes : .TP \fBEINVAL\fP \fIsize\fP est inférieur au nombre d'identifiants de groupe additionnel, et n'est pas nul. .P \fBsetgroups\fP() peut également échouer avec les erreurs suivantes : .TP \fBEINVAL\fP \fIsize\fP est plus grand que \fBNGROUPS_MAX\fP (32 avant Linux 2.6.4 ; 65536 depuis Linux 2.6.4). .TP \fBENOMEM\fP Plus assez de mémoire. .TP \fBEPERM\fP Le processus appelant n'a pas de privilèges suffisants (l'appelant n'a pas la capacité \fBCAP_SETGID\fP dans l'espace de noms utilisateur où il réside). .TP \fBEPERM\fP (depuis Linux 3.19) L'utilisation de \fBsetgroups\fP() est interdite dans cet espace de noms utilisateur. Voir la description de \fI/proc/\fPpid\fI/setgroups\fP dans \fBuser_namespaces\fP(7). .SH VERSIONS .SS "Différences entre bibliothèque C et noyau" Au niveau du noyau, les ID d'utilisateur et de groupe représentent un attribut par thread. Cependant, POSIX exige que tous les threads d'un processus partagent les mêmes droits. L'implémentation des threads NPTL gère les exigences de POSIX en fournissant des fonctions enveloppes pour les appels système qui modifient les UID et les GID du processus. Ces fonctions enveloppes (dont celle de \fBsetgroups\fP()) utilisent une technique basée sur le signal pour s'assurer que quand un thread modifie les droits, tous les autres threads du processus modifient également leurs droits. Pour des détails, voir \fBnptl\fP(7). .SH STANDARDS .TP \fBgetgroups\fP() POSIX.1\-2008. .TP \fBsetgroups\fP() Aucun. .SH HISTORIQUE .TP \fBgetgroups\fP() SVr4, 4.3BSD, POSIX.1\-2001. .TP \fBsetgroups\fP() SVr4, 4.3BSD. Depuis que \fBsetgroups\fP() exige des privilèges, il n'est pas traité dans POSIX.1. .P L'appel système \fBgetgroups\fP() originel de Linux ne gérait que des identifiants de groupe sur 16 bits. En conséquence, Linux 2.4 a ajouté \fBgetgroups32\fP() qui prend en charge des identifiants 32 bits. La fonction \fBgetgroups\fP() de la glibc qui l'encapsule gère de manière transparente ces différences entre noyaux. .SH NOTES Un processus peut avoir jusqu'à \fBNGROUPS_MAX\fP identifiants de groupe additionnel en plus de son identifiant de groupe effectif. La constante \fBNGROUPS_MAX\fP est définie dans \fI\fP. Le jeu d'identifiants de groupe additionnel est hérité du processus parent, et est préservé au travers des appels à \fBexecve\fP(2). .P Le nombre maximal d'identifiants de groupe additionnel peut être obtenu pendant l'exécution au moyen de \fBsysconf\fP(3) : .P .in +4n .EX long ngroups_max; ngroups_max = sysconf(_SC_NGROUPS_MAX); .EE .in .P La valeur de retour maximale de \fBgetgroups\fP() ne peut pas être plus grande que \fB1\fP plus cette valeur. Depuis Linux 2.6.4, le nombre maximal d’identifiants de groupe additionnel est aussi exposé à l’aide du fichier \fI/proc/sys/kernel/ngroups_max\fP en lecture seule et spécifique à Linux. .SH "VOIR AUSSI" \fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBgroup_member\fP(3), \fBinitgroups\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7) .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-Philippe MENGUAL . .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 .