NOM

seteuid, setegid - Définir les UID et GID effectifs

BIBLIOTHÈQUE

Bibliothèque C standard ( libc, -lc)

SYNOPSIS

#include <unistd.h>
int seteuid(uid_t euid);
int setegid(gid_t egid);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
seteuid(), setegid() :
    _POSIX_C_SOURCE >= 200112L
        || /* Versions de la glibc <= 2.19 : */ _BSD_SOURCE

DESCRIPTION

seteuid() définit l'UID effectif du processus appelant. Les processus non privilégiés peuvent uniquement définir leur UID effectif à la valeur de leur UID réel, de leur UID effectif ou de leur UID sauvé.
Cela fonctionne exactement de la même façon avec setegid() en raisonnant en terme de groupe (GID) au lieu d'utilisateur (UID).

VALEUR RENVOYÉE

En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno est définie pour préciser l'erreur.
Note : dans certains cas, seteuid() peut échouer alors même que l'UID de l'appelant est 0 ; ne pas vérifier la valeur renvoyée par seteuid() pour détecter un échec est une grave erreur qui compromet la sécurité du système.

ERREURS

EINVAL
L'identifiant utilisateur ou groupe cible n'est pas autorisé dans cet espace de noms utilisateur.
EPERM
Dans le cas de seteuid() : le processus appelant n'est pas privilégié (ne possède pas la capacité CAP_SETUID dans son espace de noms utilisateur) et euid ne correspond ni à l'UID réel, ni à l'UID effectif de l'utilisateur réel actuel, ni à l'UID sauvé du processus appelant.
Dans le cas de setegid() : le processus appelant n'est pas privilégié (ne possède pas la capacité CAP_SETGID dans son espace de noms utilisateur) et egid ne correspond ni au GID réel actuel, ni au GID effectif du groupe réel actuel, ni au GID sauvé actuel du processus appelant .

STANDARDS

POSIX.1-2001, POSIX.1-2008, 4.3BSD.

NOTES

Définir l'UID (GID) effectif à la valeur de l'UID (GID) sauvé est possible depuis Linux 1.1.37 (1.1.38). Sur un système UNIX inconnu, il faut vérifier la présence de la constante _POSIX_SAVED_IDS.
Dans la glibc 2.0, seteuid(euid) est équivalent à setreuid(-1, euid) et peut ainsi modifier l'UID sauvé. Dans la glibc 2.1 et les versions suivantes, c'est équivalent à setresuid(-1, euid, -1) et ne modifie donc pas l'UID sauvé. Les mêmes remarques sont valables pour setegid(), à la différence que le changement d'implémentation de setregid(-1, egid) à setresgid(-1, egid, -1) est apparu dans la glibc 2.2 ou 2.3 (en fonction de l'architecture matérielle).
D'après POSIX.1, seteuid() (resp. setegid()) n'a pas besoin de permettre à euid (resp. egid) d'avoir la même valeur que l'identifiant d'utilisateur (resp. de groupe) effectif, et certaines implémentations ne le permettent effectivement pas.

différences entre bibliothèque C et noyau

Sous Linux, seteuid() et setegid() sont des fonctions de bibliothèques qui appellent respectivement setreuid(2) et setregid(2).

VOIR AUSSI

geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7), user_namespaces(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 <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]>, Cédric Boutillier <[email protected]>, Frédéric Hantrais <[email protected]> et Jean-Philippe MENGUAL <[email protected]>
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 à [email protected]