Man page - getgroups(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro de

Manual

getgroups

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
Différences entre bibliothÚque C et noyau
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

NOM

getgroups, setgroups - Lire et Ă©crire la liste des groupes additionnels d’un processus

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <unistd.h>

int getgroups(int size , gid_t list []);

#include <grp.h>

int setgroups(size_t size , const gid_t *_Nullable list );

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

setgroups () :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE

DESCRIPTION

getgroups () renvoie dans la liste list les identifiants des groupes additionnels du processus appelant. Le paramĂštre size doit indiquer le nombre maximal d’élĂ©ments qui peuvent ĂȘtre stockĂ©s dans le tampon pointĂ© par list . Si le processus appelant est membre de plus de size groupes additionnels, cela gĂ©nĂšre une erreur.

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 getegid (2) et ajouter ou supprimer la valeur qui en rĂ©sulte).

Si size vaut zĂ©ro, list 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 list allouĂ©e dynamiquement Ă  utiliser dans un appel Ă  getgroups () ultĂ©rieur.

setgroups () dĂ©finit des identifiants de groupe additionnel pour le processus appelant. Les privilĂšges appropriĂ©s sont nĂ©cessaires (voir la description de EPERM ci-dessous). Le paramĂštre size indique le nombre d’identifiants de groupe additionnel du tampon pointĂ© par list . Un processus peut supprimer tous ses groupes additionnels :

setgroups(0, NULL);

VALEUR RENVOYÉE

En cas de succĂšs, getgroups () renvoie le nombre d’identifiants de groupe additionnel. En cas d’erreur, -1 est renvoyĂ© et errno est positionnĂ© pour indiquer l’erreur.

En cas de succĂšs, setgroups () renvoie 0 . En cas d’erreur, -1 est renvoyĂ© et errno est positionnĂ© pour indiquer l’erreur.

ERREURS

EFAULT

list contient une adresse non autorisée.

getgroups () peut également échouer avec les erreurs suivantes :

EINVAL

size est infĂ©rieur au nombre d’identifiants de groupe additionnel, et n’est pas nul.

setgroups () peut également échouer avec les erreurs suivantes :

EINVAL

size est plus grand que NGROUPS_MAX (32 avant Linux 2.6.4 ; 65536 depuis Linux 2.6.4).

ENOMEM

Plus assez de mémoire.

EPERM

Le processus appelant n’a pas de privilĂšges suffisants (l’appelant n’a pas la capacitĂ© CAP_SETGID dans l’espace de noms utilisateur oĂč il rĂ©side).

EPERM (depuis Linux 3.19)

L’utilisation de setgroups () est interdite dans cet espace de noms utilisateur. Voir la description de /proc/ pid /setgroups dans user_namespaces (7).

VERSIONS

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 setgroups ()) 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 nptl (7).

STANDARDS

getgroups ()

POSIX.1-2008.

setgroups ()

Aucun.

HISTORIQUE

getgroups ()

SVr4, 4.3BSD, POSIX.1-2001.

setgroups ()

SVr4, 4.3BSD. Depuis que setgroups () exige des privilĂšges, il n’est pas traitĂ© dans POSIX.1.

L’appel systĂšme getgroups () originel de Linux ne gĂ©rait que des identifiants de groupe sur 16 bits. En consĂ©quence, Linux 2.4 a ajoutĂ© getgroups32 () qui prend en charge des identifiants 32 bits. La fonction getgroups () de la glibc qui l’encapsule gĂšre de maniĂšre transparente ces diffĂ©rences entre noyaux.

NOTES

Un processus peut avoir jusqu’à NGROUPS_MAX identifiants de groupe additionnel en plus de son identifiant de groupe effectif. La constante NGROUPS_MAX est dĂ©finie dans <limits.h> . Le jeu d’identifiants de groupe additionnel est hĂ©ritĂ© du processus parent, et est prĂ©servĂ© au travers des appels Ă  execve (2).

Le nombre maximal d’identifiants de groupe additionnel peut ĂȘtre obtenu pendant l’exĂ©cution au moyen de sysconf (3) :

long ngroups_max;
ngroups_max = sysconf(_SC_NGROUPS_MAX);

La valeur de retour maximale de getgroups () ne peut pas ĂȘtre plus grande que 1 plus cette valeur. Depuis Linux 2.6.4, le nombre maximal d’identifiants de groupe additionnel est aussi exposĂ© Ă  l’aide du fichier /proc/sys/kernel/ngroups_max en lecture seule et spĂ©cifique Ă  Linux.

VOIR AUSSI

getgid (2), setgid (2), getgrouplist (3), group_member (3), initgroups (3), capabilities (7), credentials (7)

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-Philippe MENGUAL <jpmengual@debian.org>

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 .