SETGID(2) Manuel du programmeur Linux SETGID(2)
NOM
setuid - Fixer l'ID de l'utilisateur.
SYNOPSIS
#include <unistd.h>
int setuid(uid_t uid)
DESCRIPTION
setuid fixe l'UID effectif du processus en cours. Si cet
UID effectif est celui du Super-User, 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 pro
gramme Set-UID (autre que root) d'abandonner tous ses
privilèges, d'effectuer des tâches non-privilégiée, et de
retrouver son UID effectif de manière sécurisée.
Si l'utilisateur est le Super-User, ou si le programme est
Set-UID root, des précautions particulières doivent être
prises. La fonction setguid vérifie l'UID effectif de
l'appelant et si c'est le Super-User, tous les UID du pro
cessus sont mis à uid. une fois ceci effectué, il est
impossible au programme de retrouver ses privilèges de
Super-User.
Ainsi un programme Set-UID root désireux d'abandonner tem
porairement 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.
VALEUR RENVOYÉE
setuid renvoie 0 s'il réussit, ou -1 s'il échoue, auquel
cas errno contient le code d'erreur.
ERREURS
EPERM L'utilisateur n'est pas Super-User et uid ne cor
respond ni à l'UID effectif, ni à l'UID sauvé du
processus.
CONFORMITÉ
SVr4, SVID, POSIX.1. Pas tout à fait compatible avec
l'apppel système BSD 4.4, qui positionne l'ensemble des
IDs réel, sauvé et effectif. SVr4 indique une condition
d'erreur supplémentaire EINVAL.
SPÉCIFICITÉS LINUX
Linux dispose d'un concept d'UID de système de fichiers,
qui est normalement égal à l'UID effectif. L'appel setuid
peut également fixer l'UID de système de fichiers du pro
cessus en cours. Voir setfsuid(2).
Linux 19 Juillet 1997 1
SETGID(2) Manuel du programmeur Linux SETGID(2)
Si l'uid est différent de l'ancien UID effectif, le pro
cessus ne pourra pas laisser d'image mémoire (core dump)
sur le disque.
VOIR AUSSI
getuid(2), setreuid(2), seteuid(2), setfsuid(2).
TRADUCTION
Christophe Blaess, 1997.
Linux 19 Juillet 1997 2