Linux

CentOS 4.8

setuid(2)


SETUID

NOM

setuid − Fixer l’ID de l’utilisateur.

SYNOPSIS

#include <sys/types.h>
#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 programme 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 setuid vérifie l’UID effectif de l’appelant et si c’est le Super−User, tous les UID du processus 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 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.

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 correspond ni à l’UID réel, ni à l’UID sauvé du processus.

CONFORMITÃ

SVr4, SVID, POSIX.1. Pas tout à fait compatible avec l’appel 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 processus en cours. 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), setreuid(2), seteuid(2), setfsuid(2).

TRADUCTION

Christophe Blaess, 1997.


setuid(2)