Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       setuid - Définir l'identifiant de l'utilisateur

SYNOPSIS

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

       int setuid(uid_t uid);

DESCRIPTION

       setuid()   sets  the effective user ID of the calling process. If the calling process is privileged (more
       precisely: if the process has the CAP_SETUID capability in its user namespace), the real  UID  and  saved
       set-user-ID are also set.

       Sous Linux setuid() est implémenté comme le spécifie POSIX, avec l'option _POSIX_SAVED_IDS. Ceci 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.

       If the user is root or the program is set-user-ID-root, special care must be taken: setuid()  checks  the
       effective user ID of the caller and if it is the superuser, all process-related user ID's are set to uid.
       After this has occurred, it is impossible for the program to regain root privileges.

       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 ceci 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 reçoit une valeur adéquate.

       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 a changé 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 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 L'identifiant utilisateur indiqué dans uid n'est pas valide dans cet espace de noms utilisateur.

       EPERM  The user is not privileged (Linux: does not have the CAP_SETUID capability in its user  namespace)
              and uid does not match the real UID or saved set-user-ID of the calling process.

CONFORMITÉ

       POSIX.1-2001,  POSIX.1-2008, SVr4. Not quite compatible with the 4.4BSD call, which sets all of the real,
       saved, and effective user IDs.

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.

       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.

   différences entre bibliothèque C et noyau
       At the kernel level, user IDs and group IDs are a per-thread attribute. However, POSIX requires that  all
       threads  in  a  process  share  the same credentials. The NPTL threading implementation handles the POSIX
       requirements by providing wrapper functions for the various system calls that  change  process  UIDs  and
       GIDs. These wrapper functions (including the one for setuid())  employ a signal-based technique to ensure
       that  when  one  thread  changes  credentials,  all of the other threads in the process also change their
       credentials. For details, see nptl(7).

VOIR AUSSI

       getuid(2), seteuid(2), setfsuid(2), setreuid(2), capabilities(7), credentials(7), user_namespaces(7)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

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>    et    Frédéric    Hantrais
       <fhantrais@gmail.com>

       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.

Linux                                              6 mars 2019                                         SETUID(2)