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 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                                           15 septembre 2017                                    SETREUID(2)