SETEUID(2)

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

SYNOPSIS
#include <sys/types.h>
#include <unistd.h>

int seteuid(uid_t euid);
int setegid(gid_t egid);

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

seteuid(), setegid() :
    _BSD_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600

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é. Ceci 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
S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence. 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

EPERM
    Le processus appelant n'est pas privilégié (sous Linux : n'a pas la capacité CAP_SETUID dans le cas de seteuid(), ou la capacité CAP_SETGID dans le cas de setegid()), et l'argument euid (respectivement egid) n'est pas l'UID (respectivement GID) réel, effectif ou sauvé.

CONFORMITÉ
BSD 4.3, POSIX.1-2001.

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.

Sous libc4, libc5, et glibc 2.0, seteuid(euid) est équivalent à setreuid(-1, euid) et modifie ainsi l'UID sauvé. Sous 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 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. Sous Linux, seteuid() et setegid() sont des fonctions de bibliothèques qui appellent respectivement setreuid(2) et setresgid(2).

VOIR AUSSI
geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7)

COLOPHON
Cette page fait partie de la publication 3.70 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».