NOM
setuid - Fixer l’ID de l’utilisateur
SYNOPSIS
#include <sys/types.h>
#include <unistd.h>
int setuid(uid_t uid);
setuid() fixe l’UID effectif du processus appelant. Si cet UID effectif
est celui du superutilisateur, les UID réels et sauvés sont également
fixés.
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 non-root, puis
de récupérer ses privilèges par la suite ne doit pas utiliser setuid().
On peut accomplir ceci en utilisant l’appel (non-POSIX, BSD)
seteuid(2).
VALEUR RENVOYÉE
En cas de réussite, zéro est renvoyé, sinon -1 est renvoyé et errno
contient le code d’erreur.
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.
CONFORMITÉ
SVr4, POSIX.1-2001. Pas tout à fait compatible avec l’appel système
BSD4.4, qui positionne l’ensemble des ID réel, sauvé et effectif.
NOTES
Notes sur Linux
Linux dispose d’un concept d’UID de système de fichiers, qui est
normalement égal à l’UID effectif. L’appel setuid() fixe également
l’UID de système de fichiers du processus appelant. Voir 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.
VOIR AUSSI
getuid(2), seteuid(2), setfsuid(2), setreuid(2), capabilities(7),
credentials(7)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
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> ».