11 Permisos III
Published Apr 8, 2023
En esta clase profundizaremos en los permisos especiales que Linux ofrece para gestionar accesos de forma avanzada: SUID, SGID y el Sticky Bit. Estos permisos añaden funcionalidades únicas y excepciones a las reglas habituales de permisos de lectura, escritura y ejecución. Vamos a explorarlos paso a paso.
1. SUID (Set User ID)
El SUID permite a un archivo ejecutarse con los permisos del propietario (owner), sin importar quién lo ejecute. Este permiso es útil en casos donde se necesita acceso administrativo temporal para realizar tareas específicas, como cambiar contraseñas.
Ejemplo Clásico: passwd
Cuando cambiamos nuestra contraseña con passwd
, este comando necesita modificar el archivo /etc/shadow
, que contiene información sensible y solo es accesible por root
. Gracias al SUID, el binario passwd
puede ejecutarse como si fuera root
.
Comprobar permisos de
passwd
:Salida:ls -l $(which passwd)
-rwsr-xr-x 1 root root ... /usr/bin/passwd
- La s en el lugar de ejecución para el propietario indica que el SUID está activo.
Activar el SUID Manualmente
Crear un archivo de ejemplo:
touch script.sh chmod +x script.sh
Asignar el SUID:
chmod u+s script.sh
Verificar permisos:
ls -l script.sh
Salida esperada:
-rwsr-xr-x 1 user group ... script.sh
SUID con Representación Octal
El valor del SUID en permisos octales es 4. Se combina con los permisos habituales del propietario, grupo y otros.
Asignar SUID con octal:
chmod 4755 script.sh
- 4: Activa el SUID.
- 755: Permisos para propietario, grupo y otros.
2. SGID (Set Group ID)
El SGID permite que un archivo o directorio se ejecute con los permisos del grupo propietario, independientemente del grupo del usuario que lo ejecuta.
Comportamiento en Archivos
Cuando se aplica a un archivo, permite que cualquier usuario perteneciente al grupo del archivo lo ejecute como si fuera miembro del grupo propietario.
Aplicar SGID a un archivo:
chmod g+s archivo
Representación Octal del SGID: El valor del SGID es 2 en octal. Se combina con los permisos existentes:
chmod 2755 archivo ```
Comportamiento en Directorios
Cuando el SGID se aplica a un directorio:
- Los archivos creados dentro del directorio heredan el grupo del directorio, en lugar del grupo predeterminado del usuario.
- Esto facilita la colaboración en proyectos compartidos, donde varios usuarios necesitan trabajar con los mismos permisos de grupo.
Aplicar SGID a un directorio:
mkdir proyecto chmod g+s proyecto
Cambiar el grupo del directorio:
sudo chgrp equipo proyecto
Verificar permisos:
ls -ld proyecto
Salida esperada:
drwxr-sr-x 2 user equipo ... proyecto
3. Sticky Bit
El Sticky Bit es un permiso especial que se utiliza en directorios compartidos para restringir la eliminación de archivos. Solo el propietario del archivo o el root
pueden eliminar archivos, incluso si otros usuarios tienen permisos de escritura en el directorio.
Uso Común: /tmp
El directorio /tmp
es un ejemplo clásico de Sticky Bit, donde múltiples usuarios pueden crear archivos, pero no eliminar los de otros.
Comprobar permisos de
/tmp
:Salida:ls -ld /tmp
drwxrwxrwt 2 root root ... /tmp
- La t al final indica que el Sticky Bit está activo.
Aplicar el Sticky Bit a un Directorio
Crear un directorio:
mkdir compartido
Asignar el Sticky Bit:
chmod +t compartido
Verificar permisos:
ls -ld compartido
Salida esperada:
drwxrwxrwt 2 user group ... compartido
Representación Octal del Sticky Bit
El valor del Sticky Bit es 1 en octal. Se combina con los permisos existentes del directorio:
chmod 1777 compartido
Resumen de Permisos Especiales
Permiso | Descripción | Valor Octal |
---|---|---|
SUID | Ejecutar archivo con permisos del propietario. | 4 |
SGID | Ejecutar archivo con permisos del grupo o heredar grupo en directorios. | 2 |
Sticky Bit | Restringir eliminación de archivos en directorios compartidos. | 1 |
Conclusión
Los permisos especiales en Linux —SUID, SGID y Sticky Bit— ofrecen un control avanzado sobre la gestión de archivos y directorios. Estas herramientas son esenciales en sistemas multiusuario y entornos compartidos. Dominar su uso te permitirá garantizar seguridad y eficiencia en tus proyectos. ¡Practica y explora estos conceptos para llevar tu manejo de permisos al siguiente nivel! 🚀