Setgid
100%

Permisos · Lección 6

Setgid

Aprende cómo set-group-ID afecta a las credenciales de ejecutables y a la herencia de grupos en directorios compartidos.

El bit set-group-ID, llamado habitualmente setgid o SGID, tiene dos usos importantes. En un archivo normal ejecutable, puede cambiar el ID de grupo efectivo del proceso nuevo. En un directorio, hace que las entradas nuevas hereden el grupo del directorio, lo que resulta especialmente útil para árboles colaborativos.

Setgid en archivos ejecutables

Un listado largo puede mostrar setgid en la posición de ejecución del grupo:

$ ls -l /path/to/program
-rwxr-sr-x 1 root operators 24576 Jan 10 09:30 /path/to/program

La s minúscula significa que están establecidos tanto setgid como la ejecución del grupo. La S mayúscula significa que setgid está establecido, pero falta la ejecución del grupo.

Cuando el kernel respeta este bit durante la ejecución, el proceso recibe un ID de grupo efectivo basado en el grupo propietario del ejecutable. Controles como un montaje nosuid pueden suprimir el comportamiento, y no debe considerarse una garantía universal para todos los tipos de archivo y entornos.

Cuando se respeta setgid en un ejecutable, ¿qué credencial procede del grupo propietario del ejecutable?

Setgid en directorios

Setgid tiene otro propósito en un directorio. Los archivos y subdirectorios nuevos suelen heredar el grupo del directorio en vez del grupo predeterminado de quien los crea. En Linux, los subdirectorios nuevos también heredan el bit setgid, lo que ayuda a mantener un grupo uniforme en un árbol de proyecto compartido.

Setgid no concede por sí solo permiso de escritura al grupo. El modo del directorio, la umask del proceso, el modo de creación solicitado, las ACL predeterminadas y otros controles siguen determinando el acceso.

$ sudo chgrp developers /srv/project
$ sudo chmod g+s /srv/project
$ ls -ld /srv/project
drwxr-sr-x 2 root developers 4096 Jan 10 09:30 /srv/project

¿Qué hace normalmente que un archivo nuevo herede setgid en /srv/project?

Establecer y eliminar setgid

Establece el bit simbólicamente con:

$ sudo chmod g+s myfile

Establécelo junto con los bits de modo normales mediante un 2 octal inicial:

$ sudo chmod 2755 myfile

Elimina únicamente el bit especial con chmod g-s myfile.

¿Qué valor aporta setgid al dígito octal inicial de bits especiales?

Usar directorios compartidos de forma segura

Para un directorio colaborativo, combina el grupo propietario deseado, setgid y unos bits de acceso cuidadosamente elegidos. Prueba la creación con usuarios representativos y consulta los resultados mediante ls -ld. No hagas que un árbol permita escritura a todo el mundo simplemente para resolver problemas de uso compartido por grupo; un grupo dedicado, una umask o ACL predeterminada adecuada y un directorio setgid suelen proporcionar un control más claro.

¿Establecer setgid por sí solo permite a los miembros del grupo crear archivos en un directorio?

Lección completada

Has completado Setgid

Ahora puedes distinguir los significados de setgid en ejecutables y directorios.

  • Reconoce setgid en la posición de ejecución del grupo.

  • Relaciona setgid en un ejecutable con el ID de grupo efectivo.

  • Usa setgid en directorios para conservar la propiedad de grupo en árboles compartidos.

  • Establece o elimina el bit sin confundirlo con el permiso normal de escritura.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Permisos