Provided by: manpages-es_1.55-10_all bug

NOMBRE

       setuid - establece la identidad del usuario

SINOPSIS

       #include <sys/types.h>
       #include <unistd.h>

       int setuid(uid_t uid);

DESCRIPCIÓN

       setuid  establece el UID efectivo del proceso en curso.  Si el UID efectivo de quien llama
       a esta rutina es root, también  se  establecen  los  identificadores  de  usuario  real  y
       salvado.

       Bajo  Linux,  setuid  está  implementado  como  la  versión  POSIX  con  la característica
       _POSIX_SAVED_IDS. Esto permite que un programa SUID (distinto de root)  renuncie  a  todos
       sus  privilegios de usuario, haga algún trabajo no privilegiado, y luego recupere su ID de
       usuario efectivo original de una manera segura.

       Si el usuario es root o si  el  programa  es  SUID  a  root,  deben  tomarse  precauciones
       especiales.  La  función  setuid  comprueba  el  UID efectivo de quien la llama y si es el
       súper-usuario, todos los IDs relacionados con el proceso se ponen a uid.  Después de esto,
       es imposible para el programa recuperar sus privilegios de root.

       Así,  un programa SUID a root que desea temporalmente renunciar a sus provilegios de root,
       asumir la identidad de un usuario no-root y luego recuperar sus  privilegios  de  root  no
       puede emplear setuid.  Esto se puede hacer con la llamada (no POSIX, BSD) seteuid.

VALOR DEVUELTO

       En  caso  de éxito, se devuelve cero. En caso de error, se devuelve -1, y se pone un valor
       apropiado en errno.

ERRORES

       EPERM   El usuario no es el súper-usuario, y uid no concuerda con el ID de usuario real ni
               guardado del proceso invocador.

CONFORME A

       SVr4,  SVID, POSIX.1.  No muy compatible con la llamada de 4.4BSD, que establece todos los
       IDs de usuario: real, salvado y efectivo. SVr4 documenta una condición de error adicional,
       EINVAL.

OBSREVACIONES ESPECÍFICAS DE LINUX

       Linux  posee el concepto de UID de sistema de ficheros, normalmente igual al UID efectivo.
       La llamada a setuid también establece el UID de sistema de ficheros del proceso en  curso.
       Vea setfsuid(2).

       Si uid es diferente del uid efectivo antiguo, al proceso se le prohibirá dejar volcados de
       memoria.

VÉASE TAMBIÉN

       getuid(2), setreuid(2), seteuid(2), setfsuid(2)