NOMBRE¶
setfsgid - establece la identidad del grupo que accede al sistema de ficheros
SINOPSIS¶
#include <unistd.h> /* glibc usa <sys/fsuid.h> */
int setfsgid(uid_t fsgid);
DESCRIPCIÓN¶
La llamada al sistema
setfsgid establece el identificador de grupo que el
núcleo de Linux usa para comprobar todos los accesos al sistema de
ficheros. Normalmente, el valor de
fsgid cambiará según el
valor del grupo efectivo. De hecho, cada vez que el grupo efectivo cambie,
fsgid también cambiará al nuevo valor del grupo 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.)
setfsgid sólo tendrá éxito si quien lo invoca es el
superusuario o si
fsgid coincide con el identificador de grupo real,
con el identificador de grupo efectivo, con el setgid guardado o con el valor
actual de
fsgid.
VALOR DEVUELTO¶
En caso de éxito, se devolverá el valor anterior de
fsgid. En
caso de error, se devolverá el valor actual de
fsgid.
setfsgid 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),
setfsuid(2)