SUID y SGID en Linux
¿Qué son SUID y SGID?
SUID (Set User ID) y SGID (Set Group ID) son permisos especiales en sistemas Linux que permiten a los usuarios ejecutar archivos con los permisos del propietario o grupo del archivo, en lugar de con los permisos del usuario que lo ejecuta.
SUID (Set User ID)
Cuando se establece el bit SUID en un archivo ejecutable, el programa se ejecuta con los permisos del propietario del archivo, no del usuario que lo ejecuta.
SGID (Set Group ID)
- En archivos ejecutables: El programa se ejecuta con los permisos del grupo propietario.
- En directorios: Los archivos creados dentro del directorio heredan el grupo propietario del directorio, no el grupo primario del usuario que lo crea.
Visualización de los bits SUID y SGID
Cuando usas el comando ls -l, los permisos SUID y SGID aparecen en lugar de la ‘x’ en la posición correspondiente:
- SUID: Se muestra como ‘s’ en lugar de ‘x’ en los permisos del propietario (
rwsen lugar derwx) - SGID: Se muestra como ‘s’ en lugar de ‘x’ en los permisos de grupo (
rwsen lugar derwx)
Ejemplo:
-rwsr-xr-x 1 root root 43888 mar 22 2019 /usr/bin/passwd
En este caso, /usr/bin/passwd tiene el bit SUID establecido (notese la s en lugar de x).
Cómo establecer y quitar los bits SUID y SGID
Utilizando chmod con notación simbólica
- Para establecer SUID:
chmod u+s archivo - Para establecer SGID:
chmod g+s archivo - Para quitar SUID:
chmod u-s archivo - Para quitar SGID:
chmod g-s archivo
Utilizando chmod con notación octal
- SUID = 4
- SGID = 2
- Sticky bit = 1
Ejemplos:
chmod 4755 archivo(establecer SUID)chmod 2755 archivo(establecer SGID)chmod 6755 archivo(establecer tanto SUID como SGID)
Casos de uso comunes
SUID
/usr/bin/passwd: Permite a los usuarios cambiar sus contraseñas, lo que requiere escribir en/etc/shadow(propiedad de root)./usr/bin/sudo: Permite a los usuarios ejecutar comandos como otro usuario (normalmente root).
SGID
- Directorios compartidos donde varios usuarios necesitan crear archivos con el mismo grupo.
- Ejemplo:
chmod g+s /shared_directoryasegurará que todos los archivos creados hereden el grupo del directorio.
Consideraciones de seguridad
Los bits SUID y SGID pueden representar riesgos de seguridad importantes:
- Nunca establezca SUID/SGID en scripts de shell o programas que podrían ser manipulados.
- Limite el uso de SUID/SGID solo a casos estrictamente necesarios.
- Revise periódicamente qué archivos tienen estos bits establecidos:
find / -perm -4000 -type f 2>/dev/null # para SUID find / -perm -2000 -type f 2>/dev/null # para SGID - Muchos ataques de escalada de privilegios explotan archivos con bits SUID/SGID.
Conclusión
Los bits SUID y SGID son herramientas poderosas en Linux que permiten ejecutar programas con permisos elevados, pero deben usarse con precaución debido a las implicaciones de seguridad que conllevan.