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 reels et sauves sont egalement fixes. Sous Linux setuid est implemente comme le specifie Posix, avec l'option _POSIX_SAVED_IDS. Ceci permet a un programme Set-UID (autre que root) d'abandonner tous ses privileges, d'effectuer des taches non-privilegiee, et de retrouver son UID effectif de maniere securisee. Si l'utilisateur est le Super-User, ou si le programme est Set-UID root, des precautions particulieres doivent etre prises. La fonction setguid verifie l'UID effectif de l'appelant et si c'est le Super-User, tous les UID du processus sont mis a uid. une fois ceci effectue, il est impossible au programme de retrouver ses privileges de Super-User. Ainsi un programme Set-UID root desireux d'abandonner temporairement ses privileges, en prenant l'identite d'un utilisateur non-root, puis de recuperer ses privileges par la suite ne doit pas utiliser setuid. On peut accomplir ceci en utilisant l'appel (non-POSIX, BSD) seteuid.

VALEUR RENVOYEE
setuid renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

EPERM
    L'utilisateur n'est pas Super-User et uid ne correspond ni a l'UID effectif, ni a l'UID sauve du processus.

CONFORMITE
SVr4, SVID, POSIX.1. Pas tout a fait compatible avec l'apppel systeme BSD 4.4, qui positionne l'ensemble des IDs reel, sauve et effectif. SVr4 indique une condition d'erreur supplementaire EINVAL.

SPECIFICITES LINUX
Linux dispose d'un concept d'UID de systeme de fichiers, qui est normalement egal a l'UID effectif. L'appel setuid peut egalement fixer l'UID de systeme de fichiers du processus en cours. Voir setfsuid(2).

Si l'uid est different de l'ancien UID effectif, le processus ne pourra pas laisser d'image memoire (core dump) sur le disque.

VOIR AUSSI
getuid(2), setreuid(2), seteuid(2), setfsuid(2).