Man page - setfsuid(2)

Packages contains this manual

Available languages:

en fr ja ru ro de

Manual

setfsuid

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
STANDARDS
HISTORIQUE
Différences entre bibliothÚque C et noyau
BOGUES
VOIR AUSSI
TRADUCTION

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>

[[obsolĂšte]] 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.

STANDARDS

Linux.

HISTORIQUE

Linux 1.2.

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)

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 .