setuid, setruid, seteuid, setreuid ou setuidx Subroutine
Objectif
Définit les ID utilisateur de processus.
Bibliothèque
Bibliothèque C standard (libc.a)
Syntaxe
#include <unistd.h> uid_t UID;
uid_t RUID;
uid_t EUID;
int setreuid (RUID, EUID)
uid_t RUID;
uid_t EUID;#include <unistd.h>
#include <sys/id.h> int setuidx (which, UID)
int which;
uid_t UID;Descriptif
Les sous-routines setuid, setruid, seteuidet setreuid réinitialisent les ID utilisateur de processus. Les sémantiques suivantes sont prises en charge:
| Article | Descriptif |
|---|---|
| bit ID utilisateur | Si l'ID utilisateur effectif du processus est l'utilisateur root, les ID utilisateur réels, effectifs et sauvegardés du processus sont définis sur la valeur du paramètre UID . Sinon, l'ID utilisateur effectif du processus est réinitialisé si le paramètre UID indique l'ID utilisateur réel ou sauvegardé en cours. |
| seteuid | L'ID utilisateur effectif du processus est réinitialisé si le paramètre UID est égal à l'ID utilisateur réel ou sauvegardé en cours ou si l'ID utilisateur effectif du processus est l'utilisateur root. |
| ID de passerelle | Le code d'erreur EPERM est toujours renvoyé. Les processus ne peuvent pas réinitialiser uniquement leurs ID utilisateur réels. |
| setreuid | Les paramètres RUID et EUID peuvent avoir les deux possibilités suivantes:
|
| Setuidx | La sous-routine setuidx ne modifie pas les privilèges du processus une fois que l'ID utilisateur du processus a été modifié. Pour modifier les privilèges et l'ID utilisateur d'un processus, utilisez conjointement la sous-routine setpriv et la sous-routine setuidx . Le paramètre qui peut avoir l'une des valeurs suivantes:
|
Les paramètres d'identification de l'utilisateur réel et effectif peuvent avoir une valeur de -1 Si la valeur est -1, la valeur réelle du paramètre UID est fixée à la valeur actuelle du paramètre UID du processus.
Le système d'exploitation ne prend pas en charge les scripts shell setuid ou setgid (setgid, setrgid, setegid, setregid ou setgidx Subroutine).
Ces sous-routines font partie de l'environnement d'exécution du système d'exploitation de base (BOS).
Paramètres
| Article | Descriptif |
|---|---|
| UID | Indique l'ID utilisateur à définir. |
| euid | Indique l'ID utilisateur effectif à définir. |
| ruid | Indique l'ID utilisateur réel à définir. |
| qui | Indique les valeurs d'ID utilisateur à définir. |
Valeurs renvoyées
Une fois l'opération terminée, les sous-routines setuid, seteuid, setreuidet setuidx renvoient la valeur 0. Dans le cas contraire, la valeur -1 est renvoyée et la variable globale errno est définie pour indiquer l'erreur.
Codes d'erreur
Les sous-routines setuid, seteuid, setreuidet setuidx échouent si l'une des conditions suivantes est vérifiée:
| Article | Descriptif |
|---|---|
| EINVAL | La valeur du paramètre UID ou EUID n'est pas valide. |
| EPERM | Le processus ne dispose pas des privilèges appropriés et les paramètres UID et EUID ne sont pas égaux aux ID utilisateur réels ou sauvegardés du processus. |
Exemples
#include <sys/id.h>
#include <sys/priv.h>
int main(void) {
int uid=206;
priv_t priv;
bzero(priv.pv_priv, sizeof(priv.pv_priv));
if (setuidx(ID_EFFECTIVE|ID_REAL|ID_SAVED|ID_LOGIN,uid) < 0) {
perror("setuidx error");
exit(errno);
}
if(setpriv(PRIV_SET|PRIV_INHERITED|PRIV_EFFECTIVE|PRIV_BEQUEATH,&priv,sizeof(priv_t))<0) {
perror("setpriv error");
exit(errno);
}
exit (0);
}