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

NOM

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

SYNOPSIS

       #include <sys/types.h>
       #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
               || /* Since glibc 2.19: */ _DEFAULT_SOURCE
               || /* Glibc versions <= 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  reçoit  une
       valeur adéquate.

       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  The  calling  process  is  not  privileged  (on  Linux, does not have the necessary
              capability in its  user  namespace:  CAP_SETUID  in  the  case  of  setreuid(),  or
              CAP_SETGID  in  the  case of setregid())  and a change other than (i)  swapping the
              effective user (group) ID with the real user (group) ID, or (ii) setting one to the
              value  of  the other or (iii) setting the effective user (group) ID to the value of
              the saved set-user-ID (saved set-group-ID) was specified.

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008, 4.3BSD (setreuid()  and setregid()  first appeared in 4.2BSD).

NOTES

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

       POSIX.1  does  not  specify  all of the UID changes that Linux permits for an unprivileged
       process. For setreuid(), the effective user ID can be made the same as the real user ID or
       the  saved  set-user-ID,  and it is unspecified whether unprivileged processes may set the
       real user ID to the real user ID, the effective user ID, or  the  saved  set-user-ID.  For
       setregid(),  the  real group ID can be changed to the value of the saved set-group-ID, and
       the effective group ID can be changed to the value of the  real  group  ID  or  the  saved
       set-group-ID.   The  precise  details  of  what  ID  changes  are  permitted  vary  across
       implementations.

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

       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
       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
       those for setreuid()  and setregid())  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

       getgid(2), getuid(2), seteuid(2),  setgid(2),  setresuid(2),  setuid(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 ⟨⟩.