oracular (2) setregid.2.gz

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

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #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
               || /* Depuis la glibc 2.19 : */ _DEFAULT_SOURCE
               || /* glibc <= 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 est  définie  pour  préciser
       l'erreur.

       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  Le processus appelant n'est pas privilégié (sous Linux, il n'a pas les capacités nécessaires  dans
              son  espace  de noms utilisateur : CAP_SETUID dans le cas de setreuid(), ou CAP_SETGID dans le cas
              de setregid()), et des modifications ont été demandées autres que (1) l'échange  de  l'UID  (resp.
              GID)  effectif  avec l'UID (resp. GID) réel, (2) la définition de la valeur de l'une avec celle de
              l'autre ou (3) la définition de l'UID (resp. GID) effectif avec la valeur  de  l'UID  (resp.  GID)
              sauvée.

VERSIONS

       POSIX.1  ne donne pas tous les changements d'identifiants qui sont autorisés sous Linux pour un processus
       non privilégié. Pour setreuid(), l'identifiant d'utilisateur effectif peut être  celui  de  l'identifiant
       d'utilisateur  réel  ou celui de l'identifiant d'utilisateur sauvé. Il n'est pas indiqué si des processus
       non privilégiés peuvent changer l'identifiant d'utilisateur réel en l'identifiant d'utilisateur  effectif
       ou  en  celui  sauvé.  Pour  setregid(),  l'identifiant  de  groupe réel peut être changé en la valeur de
       l'identifiant de groupe sauvé, et l'identifiant de groupe effectif peut  être  changé  en  la  valeur  de
       l'identifiant  de  groupe  réel  ou de celui sauvé. Les détails précis sur les changements d'identifiants
       autorisés varient en fonction de l'implémentation.

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

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, 4.3BSD (apparue dans 4.2BSD).

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

       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
       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 de processus. Ces fonctions enveloppes (dont
       celles autour de setreuid() et de setregid())  "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).

VOIR AUSSI

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