NOMBRE
setresuid, setresgid − establecen el UID o GID efectivo, real y salvado
SINOPSIS
#include <unistd.h>
int
setresuid(uid_t ruid, uid_t
euid, uid_t suid);
int setresgid(gid_t rgid, gid_t
egid, gid_t sgid);
DESCRIPCIÓN
setresuid establece el UID real, el UID efectivo y el SETUID salvado del proceso actual.
Los procesos de usuarios no privilegiados (esto es, procesos con cada uno de los UIDs real, efectivo y salvado distintos de cero) pueden cambiar el UID real, efectivo y salvado, cada uno a uno de: el UID actual, el UID efectivo actual o el UID salvado actual.
El súper-usuario puede establecer los UIDs real, efectivo y salvado a valores arbitrarios.
Si uno de los parámetros es igual a −1, el valor correspondiente no se cambia.
De forma completamente análoga, setresgid establece el GID real, efectivo y salvado del proceso en curso, con las mismas restricciones para procesos con cada uno de los UIDs real, efectivo y salvado distintos de cero.
VALOR DEVUELTO
En caso de éxito, se devuelve cero. En caso de error, se devuelve −1 y se pone en errno un valor adecuado.
ERRORES
EPERM |
El proceso en curso no era privilegiado e intentó cambiar los IDs de una forma no permitida. |
CONFORME A
Esta llamada no es estándar.
HISTORIA
Esta llamada al sistema fue introducida por primera vez en HP-UX. En Linux está disponible desde la versión 2.1.44. Aquellos días también se podía encontrar en FreeBSD (para emulación de los binarios de Linux).
OBSERVACIONES
Bajo HP-UX y FreeBSD el prototipo se encuentra en <unistd.h>. Bajo Linux no hay hasta ahora fichero de cabecera que incluya el prototipo - ésto es un fallo de glibc. Los programas que usen esta llamada al sistema deben añadir el prototipo ellos mismos.
VÉASE TAMBIÉN
getuid(2), setuid(2), getreuid(2), setreuid(2), getresuid(2)