dwww Home | Manual pages | Find package

setfsuid(2)                   System Calls Manual                  setfsuid(2)

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

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

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 utilisa-
       teur du système de fichiers (spécifique à Linux) est utilisé pour vali-
       der  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 fi-
       chiers d'un processus est la même que celle de son identifiant utilisa-
       teur effectif. Cela car à chaque fois que l'identifiant utilisateur ef-
       fectif est modifié, le noyau change l'identifiant  de  système  de  fi-
       chiers  pour  lui donner la même valeur que celle du nouvel identifiant
       d'utilisateur effectif. Un processus peut faire diverger ces deux iden-
       tifiants  en  utilisant setfsuid() pour passer son identifiant utilisa-
       teur 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 mo-
       dification 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  fi-
       chier au moment de l'appel.

VALEUR RENVOYÉE
       En  cas de succès comme en cas d'échec, l'appel renvoie la dernière va-
       leur de l'identifiant utilisateur (UID) de l'appelant dans  le  système
       de fichiers.

VERSIONS
       Cet appel système est présent depuis Linux 1.2.

STANDARDS
       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 ef-
       fectif. Cela avait pour conséquence que si un  processus  disposant  de
       privilèges changeait son identifiant utilisateur effectif afin de vali-
       der les droits d'un fichier, il était susceptible de recevoir  des  si-
       gnaux  d'un  autre  processus  (ne disposant pas de privilèges) avec le
       même identifiant utilisateur. Pour cette raison, l'attribut ID utilisa-
       teur  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 en-
       voyé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 solli-
       cité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  identi-
       fiants  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 au-
       tour  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'appe-
       lant  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 utili-
       sateur 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)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>,  Cédric Boutillier <ce-
       dric.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⟩.

Pages du manuel de Linux 6.03   4 décembre 2022                    setfsuid(2)

Generated by dwww version 1.15 on Sat Jun 29 00:40:24 CEST 2024.