Man page - setreuid(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro de

Manual

setreuid

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

NOM

setreuid, setregid - Définir les UID et GID effectifs et/ou réels

BIBLIOTHÈQUE

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

SYNOPSIS

#include <unistd.h>

int setreuid(uid_t ruid , uid_t euid );
int setregid(gid_t
rgid , gid_t egid );

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

setreuid (), setregid () :
_XOPEN_SOURCE >= 500
|| /* Depuis la glibc 2.19 : */ _DEFAULT_SOURCE
|| /* glibc <= 2.19 : */ _BSD_SOURCE

DESCRIPTION

setreuid () dĂ©finit les ID d’utilisateur effectif et rĂ©el du processus appelant.

Fournir une valeur -1 pour l’un des arguments demande au systùme de ne pas modifier l’ID correspondant

Les processus non privilĂ©giĂ©s peuvent seulement dĂ©finir leur UID effectif Ă  la valeur de l’UID rĂ©el, de l’UID effectif ou de l’UID sauvĂ©.

Les utilisateurs non privilĂ©giĂ©s peuvent seulement dĂ©finir l’UID rĂ©el Ă  la valeur de l’UID rĂ©el ou de l’UID effectif.

Si l’UID rĂ©el est changĂ© (c’est-Ă -dire si ruid est diffĂ©rent de -1), ou si l’UID effectif a avec une valeur diffĂ©rente de l’UID rĂ©el prĂ©cĂ©dent, le set-uid sauvegardĂ© prendra Ă©galement la valeur du nouvel UID effectif.

De maniĂšre analogue, setregid () dĂ©finit les ID de groupe du processus appelant, et toutes les remarques prĂ©cĂ©dentes s’appliquent, en remplaçant GID par 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, setreuid () peut Ă©chouer alors mĂȘme que l’UID de l’appelant est 0 ; ne pas vĂ©rifier la valeur renvoyĂ©e par setreuid () pour dĂ©tecter un Ă©chec est une grave erreur qui compromet la sĂ©curitĂ© du systĂšme.

ERREURS

EAGAIN

L’appel a changĂ© l’identifiant (UID) rĂ©el de l’appelant (c’est Ă  dire que ruid ne correspond pas Ă  l’UID rĂ©el de l’appelant), mais une erreur temporaire est survenue lors de l’allocation des structures de donnĂ©es du noyau nĂ©cessaires Ă  l’opĂ©ration.

EAGAIN

ruid ne correspond pas Ă  l’UID rĂ©el de l’appelant et suite Ă  cet appel, le nombre de processus appartenant Ă  l’utilisateur dont l’identifiant rĂ©el est ruid a dĂ©passĂ© la limite de ressources RLIMIT_NPROC de l’appelant. A partir de Linux 3.1, cette erreur ne peut plus se produire (nĂ©anmoins, les applications sĂ©rieuses doivent vĂ©rifier que l’erreur ne s’est pas produite) ; consultez la description de EAGAIN dans execve (2).

EINVAL

Au moins un des identifiants utilisateur ou groupe cible n’est pas valide dans espace de noms utilisateur.

EPERM

Le processus appelant n’est pas privilĂ©giĂ© (sous Linux, il n’a pas les capacitĂ©s nĂ©cessaires dans son espace de noms utilisateur : CAP_SETUID dans le cas de setreuid (), ou CAP_SETGID dans le cas de setregid ()), et des modifications ont Ă©tĂ© demandĂ©es autres que (1) l’échange de l’UID (resp. GID) effectif avec l’UID (resp. GID) rĂ©el, (2) la dĂ©finition de la valeur de l’une avec celle de l’autre ou (3) la dĂ©finition de l’UID (resp. GID) effectif avec la valeur de l’UID (resp. GID) sauvĂ©e.

VERSIONS

POSIX.1 ne donne pas tous les changements d’identifiants qui sont autorisĂ©s sous Linux pour un processus non privilĂ©giĂ©. Pour setreuid (), l’identifiant d’utilisateur effectif peut ĂȘtre celui de l’identifiant d’utilisateur rĂ©el ou celui de l’identifiant d’utilisateur sauvĂ©. Il n’est pas indiquĂ© si des processus non privilĂ©giĂ©s peuvent changer l’identifiant d’utilisateur rĂ©el en l’identifiant d’utilisateur effectif ou en celui sauvĂ©. Pour setregid (), l’identifiant de groupe rĂ©el peut ĂȘtre changĂ© en la valeur de l’identifiant de groupe sauvĂ©, et l’identifiant de groupe effectif peut ĂȘtre changĂ© en la valeur de l’identifiant de groupe rĂ©el ou de celui sauvĂ©. Les dĂ©tails prĂ©cis sur les changements d’identifiants autorisĂ©s varient en fonction de l’implĂ©mentation.

POSIX.1 ne dit rien de l’effet de ces appels sur les set-user-ID et set-group-ID sauvĂ©s.

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001, 4.3BSD (apparue dans 4.2BSD).

DĂ©finir l’UID (GID) effectif avec la valeur de l’UID (GID) sauvĂ© est possible depuis Linux 1.1.37 (1.1.38).

Les appels systĂšme setreuid () et setregid () originaux de Linux ne gĂ©raient que des identifiants d’utilisateur et de groupe sur 16 bits. En consĂ©quence, Linux 2.4 a ajoutĂ© setreuid32 () et setregid32 () qui prennent en charge des identifiants 32 bits. Les fonctions setreuid () et setregid () de la glibc qui les encapsulent gĂšrent de maniĂšre transparente ces diffĂ©rences entre noyaux.

Différences entre bibliothÚque C et noyau

Au niveau du noyau, les identifiants 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 de threading de NPTL satisfait aux exigences de POSIX Ă  l’aide de fonctions enveloppes pour les diffĂ©rents appels systĂšme qui modifient des UID ou des GID de processus. Ces fonctions enveloppes (dont celles autour de setreuid () et de setregid ()) "utilisent des techniques basĂ©es sur le signal pour s’assurer que lorsqu’un thread modifie les droits, tous les autres threads du processus le font Ă©galement pour leur compte. Pour des dĂ©tails, consultez nptl (7).

VOIR AUSSI

getgid (2), getuid (2), seteuid (2), setgid (2), setresuid (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 à debian-l10n-french@lists.debian.org .