Man page - setuid(2)

Packages contains this manual

Available languages:

en fr nl ja ru ro de

Manual

setuid

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

setuid - DĂ©finir l’identifiant de l’utilisateur

BIBLIOTHÈQUE

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

SYNOPSIS

#include <unistd.h>

int setuid(uid_t uid );

DESCRIPTION

setuid () dĂ©finit l’UID effectif du processus appelant. Si ce processus appelant est privilĂ©giĂ© (plus prĂ©cisĂ©ment, s’il a la capacitĂ© CAP_SETUID dans son espace de noms utilisateur), l’UID rĂ©el et sauvĂ© sont aussi positionnĂ©s.

Sous Linux, setuid () est implĂ©mentĂ© avec l’option _POSIX_SAVED_IDS , comme le spĂ©cifie POSIX. Cela permet Ă  un programme Set-UID (autre que root) d’abandonner tous ses privilĂšges, d’effectuer des tĂąches non privilĂ©giĂ©es, et de retrouver son UID effectif de maniĂšre sĂ©curisĂ©e.

Si l’utilisateur est le superutilisateur, ou si le programme est Set-UID root, des prĂ©cautions particuliĂšres doivent ĂȘtre prises : setuid () vĂ©rifie l’UID effectif de l’appelant et si c’est le superutilisateur, tous les UID du processus sont mis Ă  uid . Une fois cela effectuĂ©, il est impossible au programme de retrouver ses privilĂšges de superutilisateur.

Ainsi, un programme Set-UID root dĂ©sireux d’abandonner temporairement ses privilĂšges, en prenant l’identitĂ© d’un utilisateur ordinaire, puis de rĂ©cupĂ©rer ses privilĂšges par la suite ne doit pas utiliser setuid (). On peut accomplir cela en utilisant l’appel seteuid (2).

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, setuid () peut Ă©chouer alors mĂȘme que l’UID de l’appelant est 0 ; ne pas vĂ©rifier la valeur renvoyĂ©e par setuid () pour dĂ©tecter un Ă©chec est une grave erreur qui compromet la sĂ©curitĂ© du systĂšme.

ERREURS

EAGAIN

L’appel voudrait changer l’identifiant (UID) rĂ©el de l’appelant (c’est-Ă -dire que uid 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

uid 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 uid dĂ©passerait la limite de ressources RLIMIT_NPROC de l’appelant. À partir de Linux 3.1, cette erreur ne peut plus se produire (nĂ©anmoins, les applications rigoureuses doivent vĂ©rifier que l’erreur ne s’est pas produite) ; consultez la description de EAGAIN dans execve (2).

EINVAL

L’identifiant utilisateur indiquĂ© dans uid n’est pas valable dans cet espace de noms utilisateur.

EPERM

L’utilisateur n’est pas privilĂ©giĂ© (sous Linux : n’a pas la capacitĂ© CAP_SETUID dans son espace de noms utilisateur) et uid ne correspond ni Ă  l’UID rĂ©el, ni au set-uid sauvĂ© du processus appelant.

VERSIONS

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 du threading de la NPTL satisfait aux exigences de POSIX Ă  l’aide de fonctions d’enveloppe pour les diffĂ©rents appels systĂšme qui modifient des UID ou des GID de processus. Ces fonctions d’enveloppe (dont celles autour de setuid ()) 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).

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001, SVr4.

Pas tout Ă  fait compatible avec l’appel systĂšme 4.4BSD, qui positionne l’ensemble des ID rĂ©el, sauvĂ© et effectif.

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

NOTES

Linux dispose d’un concept d’UID de systĂšme de fichiers qui est normalement Ă©gal Ă  l’UID effectif. L’appel setuid () dĂ©finit Ă©galement l’UID de systĂšme de fichiers du processus appelant. Consultez setfsuid (2).

Si l’ uid est diffĂ©rent de l’ancien UID effectif, le processus ne pourra pas laisser d’image mĂ©moire (core dump) sur le disque.

VOIR AUSSI

getuid (2), seteuid (2), setfsuid (2), setreuid (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 .