Provided by: manpages-fr-dev_4.26.0-1_all bug

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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                          setuid(2)