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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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 ⟨⟩.