Linux |
CentOS 4.8 |
|
setresuid(2) |
setresuid, setresgid − Fixer les UIDs ou les GIDs réels, effectifs et sauvés. |
#include <unistd.h> int setresuid(uid_t ruid, uid_t
euid, uid_t suid); |
setresuid fixe les UIDs réel, effectif et sauvé du processus apppelant. Un processus utilisateur non-privilégié (dont les UID réel, effectif et sauvé sont tous non-nuls) peut fixer son UID réel et son UID sauvé avec sa valeur d’UID actuel, d’UID effectif actuel, ou d’UID sauvé. Le Super-Utilisateur peut positionner son UID réel, effectif ou sauvé à une valeur quelconque. Si l’un des paramètres vaut −1, la valeur correspondante n’est pas modifiée. De manière analogue setresgid fixe les GIDs réel, effectif et sauvé du processus appelant avec les mêmes restrictions pour les processus n’ayant aucun GID nul. |
Les appels setresuid et setresgid renvoient 0 s’ils réussissent, ou −1 s’ils échouent auquel cas errno contient le code d’erreur. |
EPERM |
Le processus n’a pas de privilèges et essaye de modifier ses IDs de manière interdite. |
Cet appel-système n’est pas standard. |
Cet appel-système a d’abord été introduit dans HP-UX. Il est disponible sous Linux depuis le noyau 2.1.44. A présent, on le rencontre également dans FreeBSD (pour l’émulation binaire de Linux). |
Sous HP-UX et FreeBSD, le prototype se trouve dans <unistd.h>. Sous Linux, il n’y a pas encore de fichier d’en-tête incluant ce prototype, ce qui peut être considéré comme un défaut de la GlibC. Les programmes utilisant cet appel-système doivent en déclarer le prototype eux-mêmes. |
getuid(2), setuid(2), getreuid(2), setreuid(2), getresuid(2) |
Christophe Blaess, 1997. |
setresuid(2) |