Provided by:
manpages-es_1.55-9_all 
NOMBRE
setfsuid - establece la identidad del usuario que accede al sistema de
ficheros
SINOPSIS
#include <unistd.h> /* glibc usa <sys/fsuid.h> */
int setfsuid(uid_t fsuid);
DESCRIPCIÓN
La llamada al sistema setfsuid establece el identificador de usuario
que el núcleo de Linux usa para comprobar todos los accesos al sistema
de ficheros. Normalmente, el valor de fsuid cambiará según el valor del
usuario efectivo. De hecho, cada vez que el usuario efectivo cambie,
fsuid también cambiará al nuevo valor del usuario efectivo.
Las llamadas explícitas a setfsuid y setgsgid normalmente sólo se usan
en programas como el servidor NFS de Linux, que necesitan cambiar el
identificador de usuario y de grupo para acceder a un fichero, pero sin
cambiar los identificadores real y efectivo. Un cambio en el
identificador real del usuario para un programa como el servidor NFS
supondría un agujero de seguridad, al quedar expuesto a otras señales
no deseadas. (véase más abajo.)
setfsuid sólo tendrá éxito si quien lo invoca es el superusuario o si
fsuid coincide con el identificador de usuario real, con el
identificador de usuario efectivo, con el setuid guardado o con el
valor actual de fsuid.
VALOR DEVUELTO
En caso de éxito, se devolverá el valor anterior de fsuid. En caso de
error, se devolverá el valor actual de fsuid.
CONFORME A
setfsuid es específico de Linux y no debería usarse en programas que se
pretende sean portables. Está presente desde la versión 1.1.44 de
Linux y en libc desde la versión 4.7.6.
ERRORES
No se devuelve ningún mensaje de error a quien lo invoca. Al menos,
debería devolverse EPERM cuando todas las llamadas fallen.
OBSERVACIONES
Cuando glibc determina que el argumento no es un ID de usuario válido,
devuelve -1 y pone en errno el valor EINVAL sin intentar la llamada al
sistema.
Observe que en la época en la que esta llamada al sistema fue
introducida, un proceso podía enviar una señal a un proceso con el
mismo ID de usuario efectivo. Hoy el manejo de los permisos sobre
señales es ligeramente diferente.
VÉASE TAMBIÉN
kill(2), setfsgid(2)