seteuid
Section: System Calls (2)
Updated: 5 février 2023
Index
Return to Main Contents
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 <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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- STANDARDS
-
- NOTES
-
- différences entre bibliothèque C et noyau
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 13:50:45 GMT, May 22, 2024