Linux |
CentOS 4.8 |
|
setgid(2) |
setgid − Fixer l’ID de groupe. |
#include <sys/types.h> int setgid(gid_t gid); |
setgid fixe le GID effectif du processus en cours. Si l’appelant est le Super−User, les GID réels et sauvés sont également fixés. Sous Linux setgid est implémenté comme la version POSIX avec l’option _POSIX_SAVED_IDS. Ceci permet à un programme Set−GID (autre que root) d’abandonner tous ses privilèges de groupe, d’effectuer des tâches non−privilégiées, et de retrouver son GID effectif de manière sécurisée. Si l’utilisateur est le Super−User, ou si le programme est Set−GID root, des précautions particulières doivent être prises. La fonction setgid vérifie le GID effectif de l’appelant et si c’est le Super−User, tous les GID du processus sont mis à gid. une fois ceci effectué, il est impossible au programme de retrouver ses privilèges de Super−User. Ainsi un programme Set−GID root désireux d’abandonner temporairement ses privilèges, en prenant l’identité d’un programme de groupe non-root, puis de récupérer ses privilèges par la suite ne doit pas utiliser setgid. On peut accomplir ceci en utilisant l’appel (non-POSIX, BSD) setegid. |
setgid renvoie 0 s’il réussit, ou −1 s’il échoue, auquel cas errno contient le code d’erreur. |
EPERM |
L’utilisateur n’est pas Super−User et gid ne correspond ni au GID effectif, ni au GID sauvé du processus. |
SVr4, SVID. |
getgid(2), setregid(2), setegid(2) |
Christophe Blaess, 1997. |
setgid(2) |