Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       setfsuid - Définir l'UID pour les vérifications d'accès au système de fichiers

SYNOPSIS

       #include <sys/fsuid.h>

       int setfsuid(uid_t fsuid);

DESCRIPTION

       Sur  Linux,  un  processus  a un identifiant utilisateur pour le système de fichiers et un
       identifiant  utilisateur  effectif.  L'identifiant  utilisateur  du  système  de  fichiers
       (spécifique  à  Linux) est utilisé pour valider les droits lors de l'accès aux systèmes de
       fichiers, alors que l'identifiant utilisateur effectif est utilisé pour d'autres types  de
       validations de droits (voir credentials(7)).

       Normalement,  la valeur de l'identifiant utilisateur de système de fichiers d'un processus
       est la même que celle de son identifiant utilisateur effectif. Cela car à chaque fois  que
       l'identifiant  utilisateur  effectif est modifié, le noyau change l'identifiant de système
       de fichiers pour lui donner la même valeur que celle du nouvel  identifiant  d'utilisateur
       effectif.  Un  processus peut faire diverger ces deux identifiants en utilisant setfsuid()
       pour passer son identifiant utilisateur de système de fichiers à  la  valeur  donnée  dans
       fsuid.

       Les appels explicites à setfsuid() et à setfsgid(2) ne sont (n'étaient) normalement utiles
       qu'aux programmes tels que le serveur NFS qui ont besoin  de  modifier  l’UID  et  le  GID
       utilisé  pour  les accès aux fichiers sans changer véritablement leurs UID et GID réels et
       effectifs. Une modification des identifiants normaux d'un programme comme un  serveur  NFS
       serait  un  trou  de  sécurité  qui  l'exposerait à des signaux indésirables (néanmoins ce
       problème est historique ; voir ci-dessous).

       setfsuid() ne réussira que si l'appelant est le superutilisateur ou si fsuid correspond  à
       l'UID  réel  de  l'appelant, à son UID effectif, à son UID sauvé, ou encore à la valeur de
       l'UID au niveau du système de fichier au moment de l'appel.

VALEUR RENVOYÉE

       En cas de succès comme en cas d'échec, l'appel renvoie la dernière valeur de l'identifiant
       utilisateur (UID) de l'appelant dans le système de fichiers.

VERSIONS

       Cet appel système est présent sous Linux depuis la version 1.2.

CONFORMITÉ

       setfsuid()  est  spécifique  à  Linux  et  ne devrait pas être employé dans des programmes
       destinés à être portables.

NOTES

       Lorsque cet appel système a été introduit, un processus pouvait envoyer  un  signal  à  un
       autre processus avec le même identifiant utilisateur effectif. Cela avait pour conséquence
       que si un processus disposant de privilèges changeait son identifiant utilisateur effectif
       afin de valider les droits d'un fichier, il était susceptible de recevoir des signaux d'un
       autre processus (ne disposant pas de privilèges) avec  le  même  identifiant  utilisateur.
       Pour  cette  raison,  l'attribut  ID  utilisateur  a été introduit au niveau du système de
       fichiers pour permettre à un processus de changer son identifiant utilisateur  et  valider
       les  droits  d'un  fichier,  sans  pour  autant  devenir vulnérable au signaux envoyés par
       d'autres processus. À partir de Linux 2.0, la prise en charge des permissions des  signaux
       a  évolué  (consultez kill(2)), de sorte que la modification d'un processus puisse changer
       l'ID utilisateur effectif sans pour autant rendre le processus vulnérable aux signaux  non
       sollicités  envoyés  par  d'autres  processus.  Ainsi,  setfsuid()  n'est  désormais  plus
       nécessaire et on doit éviter d'y avoir recours dans les nouvelles  applications  (de  même
       qu'on évitera d'utiliser setfsgid(2)).

       L'appel  système setfsuid() originel de Linux ne gérait que des identifiants d'utilisateur
       sur 16 bits. En conséquence, Linux 2.4 a ajouté  setfsuid32()  qui  prend  en  charge  des
       identifiants  32 bits.  La fonction setfsuid() 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
       Dans la glibc 2.15 et les versions précédentes, lorsque l'enveloppe autour  de  cet  appel
       système  détermine  que l'argument ne peut pas être passé au noyau sans tronquer un entier
       (le noyau étant ancien et ne gérant pas les identifiants  utilisateur  en  32 bits),  elle
       renverra -1 et positionnera errno sur EINVAL sans essayer l'appel système.

BOGUES

       Aucune  indication  concernant l'erreur n'est renvoyée à l'appelant et le fait que la même
       valeur soit retournée en cas de succès ou d'échec ne permet pas de  savoir  si  l'appel  a
       réussi ou échoué. Pour cela, l'appelant devra se référer à la valeur renvoyée par un appel
       ultérieur par exemple à setfsuid(-1) (qui  échouera  toujours).  Cet  appel  permettra  de
       savoir  si un appel antérieur à setfsuid() a changé l'identifiant utilisateur au niveau du
       système de fichiers. Au minimum, EPERM doit être renvoyé lorsque l'appel  échoue  (puisque
       l'appelant ne dispose pas des privilèges CAP_SETUID).

VOIR AUSSI

       kill(2), setfsgid(2), capabilities(7), credentials(7)

COLOPHON

       Cette  page  fait partie de la publication 5.13 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>,  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⟩.