10 Permisos Especiales en Linux
Published Apr 12, 2023
🧠 Introducción
Ya sabes cómo funcionan los permisos básicos (r
, w
, x
) y cómo cambiarlos con chmod
. Ahora vamos a llevarlo un paso más allá: en esta clase aprenderás sobre SUID, SGID y Sticky Bit, tres permisos especiales que permiten un control más avanzado y seguro sobre archivos y directorios, especialmente en entornos multiusuario o colaborativos.
1. SUID (Set User ID)
El permiso SUID permite que un archivo se ejecute con los permisos del propietario, sin importar qué usuario lo ejecuta. Esto es útil cuando se necesita que un programa temporalmente actúe como si fuera otro usuario (por ejemplo, root
).
🔐 Ejemplo clásico: passwd
El comando passwd
necesita modificar /etc/shadow
, que solo root
puede editar. Para lograrlo sin dar acceso completo al sistema, passwd
usa el SUID.
🔍 Verifica que lo tiene:
ls -l $(which passwd)
Salida típica:
-rwsr-xr-x 1 root root ... /usr/bin/passwd
🔸 La s
en lugar de la x
del propietario (rws
) indica que tiene SUID.
🛠 Activar SUID manualmente
- Crear un script o archivo:
touch script.sh
chmod +x script.sh
- Asignar SUID:
chmod u+s script.sh
- Verificar:
ls -l script.sh
Esperado:
-rwsr-xr-x 1 usuario grupo ... script.sh
📌 Modo Octal
Para aplicar SUID directamente:
chmod 4755 script.sh
4
→ SUID755
→ Permisos normales
2. SGID (Set Group ID)
El permiso SGID permite que un archivo o directorio se ejecute con los permisos del grupo propietario, o que los archivos creados dentro de un directorio hereden su grupo.
En archivos
Ejecutar un archivo como si fueras parte del grupo asignado.
chmod g+s archivo
chmod 2755 archivo
En directorios (más común)
Cuando aplicas SGID a un directorio:
- Todos los archivos creados dentro heredan el grupo del directorio.
- Útil para colaboración (por ejemplo, desarrollo en grupo).
🧪 Ejemplo:
mkdir proyecto
sudo chgrp equipo proyecto
chmod g+s proyecto
Verifica:
ls -ld proyecto
Salida:
drwxr-sr-x 2 user equipo ... proyecto
🔸 La s
en el campo de grupo indica SGID activo.
3. Sticky Bit
El Sticky Bit impide que otros usuarios eliminen archivos en un directorio compartido, aunque tengan permisos de escritura.
🧠 Solo el dueño del archivo o root puede borrarlo.
📍 Caso clásico: /tmp
ls -ld /tmp
Salida:
drwxrwxrwt 10 root root ... /tmp
🔸 La t
al final indica Sticky Bit.
🛠 Activar Sticky Bit
mkdir compartido
chmod 1777 compartido
Verifica:
ls -ld compartido
Salida:
drwxrwxrwt 2 user grupo ... compartido
🎯 Resumen de Permisos Especiales
Permiso | ¿Qué hace? | Octal |
---|---|---|
SUID | Ejecuta el archivo con los permisos del propietario (root , por ej.) |
4 |
SGID | Ejecuta con permisos del grupo o hereda grupo en directorios | 2 |
Sticky Bit | Solo el propietario puede borrar archivos en el directorio | 1 |
🧪 Práctica Recomendada
- Crea un directorio
proyecto/
con SGID y agrégalo a un grupo. - Cambia un script para que use SUID (¡solo como prueba!).
- Crea un directorio
compartido/
y aplica Sticky Bit. - Verifica los permisos con
ls -l
y analiza las diferencias.
📘 Próximos Pasos
- Investiga cómo estas configuraciones afectan servidores web o aplicaciones multiusuario.
- Practica cómo se combinan los permisos especiales con los permisos tradicionales (
chmod 2755
,chmod 1777
, etc.). - Consulta
man chmod
yman chown
para ver cómo se aplican estas técnicas en producción.
🧠 Conclusión
Los permisos especiales en Linux (SUID, SGID y Sticky Bit) te permiten ir más allá de lo básico y establecer controles finos sobre cómo se usan los archivos y carpetas. Son herramientas indispensables cuando trabajas en sistemas multiusuario o proyectos colaborativos.
¡Sigue practicando y pon a prueba estos conceptos en un entorno seguro! 🚀🐧