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

NOM

       setresuid, setresgid - Définir les UID ou les GID réel, effectif et sauvé

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <unistd.h>

       int setresuid(uid_t ruid, uid_t euid, uid_t suid);
       int setresgid(gid_t rgid, gid_t  egid, gid_t sgid);

DESCRIPTION

       setresuid() définit l'UID réel, effectif et (effectif) sauvé du processus appelant.

       Un  processus  non  privilégié peut définir son UID réel, effectif ou sauvé, chacun étant : l'UID actuel,
       l'UID effectif actuel ou l'UID sauvé.

       Un processus privilégié (sous Linux, qui a  la  capacité  CAP_SETUID)  peut  positionner  son  UID  réel,
       effectif ou sauvé à une valeur quelconque.

       Si l'un des paramètres vaut -1, la valeur correspondante n'est pas modifiée.

       Indépendamment  des  changements  concernant  les  UID  réels, effectifs et sauvés, le fsuid est toujours
       défini à la même valeur que l'UID effectif.

       De manière analogue, setresgid() définit le GID réel, effectif et sauvé du processus appelant (et définit
       toujours le fsgid à la même valeur que le GID effectif) avec les mêmes restrictions  pour  les  processus
       n'ayant aucun GID nul.

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, setresuid() peut échouer alors même que l'UID de l'appelant  est  0  ;  ne  pas
       vérifier  la valeur renvoyée par setresuid() 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  Le processus appelant n'a pas de privilèges (n'a pas la capacité nécessaire  dans  son  espace  de
              noms utilisateur) et essaie de modifier ses ID de manière interdite. Pour setresuid(), la capacité
              nécessaire est CAP_SETUID.Pour setresgid(), c'est CAP_SETGID.

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
       de  threading  de  NPTL  satisfait  aux  exigences  de  POSIX  à  l'aide de fonctions enveloppes pour les
       différents appels système qui modifient des UID ou des GID. Ces fonctions enveloppe (dont  celles  autour
       de  setresuid()  et  de  setresgid())  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

       Aucun.

HISTORIQUE

       Linux 2.1.44, glibc 2.3.2. HP-UX, FreeBSD.

       Les  appels  système  setresuid()  et  setresgid()  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é setresuid32() et setresgid32()
       qui prennent en charge des identifiants 32 bits. Les fonctions setresuid() et setresgid() de la glibc qui
       les encapsulent gèrent de manière transparente ces différences entre noyaux.

VOIR AUSSI

       getresuid(2),   getuid(2),   setfsgid(2),   setfsuid(2),   setreuid(2),    setuid(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                                       setresuid(2)