NOM¶
setuid - Définir l'identifiant de l'utilisateur
SYNOPSIS¶
#include <sys/types.h>
#include <unistd.h>
int setuid(uid_t uid);
DESCRIPTION¶
setuid() définit l'UID effectif du processus appelant. Si cet UID
effectif est celui du superutilisateur, les UID réels et sauvés sont
également définis.
Sous Linux
setuid() est implémenté comme le spécifie
POSIX, avec l'option
_POSIX_SAVED_IDS. Ceci permet à un programme
Set-UID (autre que root) d'abandonner tous ses privilèges, d'effectuer
des tâches non privilégiées, et de retrouver son UID effectif
de manière sécurisée.
Si l'utilisateur est le superutilisateur, ou si le programme est Set-UID root,
des précautions particulières doivent être prises. La fonction
setuid() vérifie l'UID effectif de l'appelant et si c'est le
superutilisateur, tous les UID du processus sont mis à
uid. Une
fois ceci effectué, il est impossible au programme de retrouver ses
privilèges de superutilisateur.
Ainsi un programme Set-UID root désireux d'abandonner temporairement ses
privilèges, en prenant l'identité d'un utilisateur ordinaire, puis
de récupérer ses privilèges par la suite ne doit pas utiliser
setuid(). On peut accomplir ceci en utilisant l'appel
seteuid(2).
VALEUR RENVOYÉE¶
S'il réussit, cet appel système renvoie 0. S'il échoue, il
renvoie -1 et remplit
errno en conséquence.
ERREURS¶
- EAGAIN
- uid ne correspond pas à l'UID courant et
uid porterait le processus au-delà de sa limite
RLIMIT_NPROC.
- EPERM
- L'utilisateur n'est pas privilégié (sous
Linux : n'a pas la capacité CAP_SETUID) et uid ne
correspond ni à l'UID réel, ni au set-uid sauvé du
processus.
SVr4, POSIX.1-2001. Pas tout à fait compatible avec l'appel système
BSD 4.4, qui positionne l'ensemble des ID réel, sauvé et
effectif.
NOTES¶
Linux dispose d'un concept d'UID de système de fichiers, qui est
normalement égal à l'UID effectif. L'appel
setuid()
définit également l'UID de système de fichiers du processus
appelant. Consultez
setfsuid(2).
Si l'
uid est différent de l'ancien UID effectif, le processus ne
pourra pas laisser d'image mémoire (core dump) sur le disque.
L'appel système
setuid() original de Linux ne gérait que des
identifiants d'utilisateur sur 16 bits. En conséquence,
Linux 2.4 a ajouté
setuid32() qui prend en charge des
identifiants 32 bits. La fonction
setuid() de la glibc qui
l'encapsule gère de manière transparente ces différences entre
noyaux.
VOIR AUSSI¶
getuid(2),
seteuid(2),
setfsuid(2),
setreuid(2),
capabilities(7),
credentials(7)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».