SUID, SGID y Sticky Bit: El club de los permisos especiales
Si ya dominas la matriz rwx, sabrás que con el dueño, grupo y otros cubrimos el 90% de los casos. Pero, ¿qué pasa cuando queremos que un usuario normal cambie su propia contraseña (algo que requiere permisos de root) o que nadie pueda borrar archivos ajenos en una carpeta pública?
Hoy vamos a explorar el "Cuarto Dígito" de los permisos: SUID, SGID y el Sticky Bit. 🔒
El Cuarto Dígito (Modo Octal)
Hasta ahora usábamos tres números (ej. 755). Pero en realidad, Linux acepta cuatro. Ese primer dígito a la izquierda representa los permisos especiales:
| Valor | Permiso | Efecto Principal |
|---|---|---|
| 4 | SUID | Ejecutas con privilegios del dueño. |
| 2 | SGID | Los archivos heredan el grupo del directorio. |
| 1 | Sticky Bit | Solo el dueño borra sus archivos. |
1. SUID: El "Disfraz" de Root
El SUID (Set User ID) es como un disfraz. Cuando un ejecutable tiene este bit, cualquiera que lo corra adquiere temporalmente los poderes del dueño del archivo.
El ejemplo rey: /usr/bin/passwd.
Para cambiar tu clave, el sistema debe escribir en /etc/shadow (que es solo de root). Gracias al SUID, cuando corres passwd, el sistema te "disfraza" de root por un momento para que la operación tenga éxito.
- Cómo se ve: Una
sminúscula en el bloque del dueño:-rw**s**r-xr-x. - Comando:
chmod u+s archivoochmod 4755 archivo.
2. SGID: Trabajo en Equipo
El SGID (Set Group ID) es el mejor amigo de la colaboración. Aunque se puede usar en archivos, su verdadero poder brilla en los directorios.
Si activas SGID en una carpeta compartida, cualquier archivo creado dentro pertenecerá automáticamente al grupo de la carpeta, sin importar quién sea el usuario que lo creó. Se acabó el problema de: "Oye, no puedo leer tu archivo porque lo creaste con tu grupo personal".
- Cómo se ve: Una
sminúscula en el bloque del grupo:drwxr-**s**r-x. - Comando:
chmod g+s directorioochmod 2755 directorio.
3. Sticky Bit: El "Seguro" de Borrado
Imagina la carpeta /tmp. Todos pueden escribir ahí. Sin el Sticky Bit, un usuario malintencionado podría borrar el trabajo de otro solo porque tiene permiso de escritura en la carpeta.
El Sticky Bit asegura que, aunque la carpeta sea pública, solo el dueño del archivo (o root) pueda borrarlo o renombrarlo. Es el permiso de la "permanencia".
- Cómo se ve: Una
tminúscula al final:drwxrwxrw**t**. - Comando:
chmod +t directorioochmod 1777 directorio.
A veces verás estas letras en MAYÚSCULAS. Esto es una señal de advertencia: significa que el bit especial está activo pero el permiso de ejecución (x) subyacente no lo está.
Es como tener el disfraz de superhéroe (SUID) pero no tener piernas para correr (falta el bit x). En la mayoría de los casos, esto indica un error de configuración.
Resumen de Comandos Rápidos
Si necesitas configurar un entorno de desarrollo compartido rápidamente:
# 1. Crear carpeta y dar permisos totales al grupo
mkdir /opt/shared_dev
chmod 2770 /opt/shared_dev # SGID activo, grupo hereda todo
# 2. Asegurar que nadie borre lo de otros (Sticky Bit)
chmod +t /opt/shared_dev
Conclusión
Los permisos especiales son potentes pero requieren cuidado. Un bit SUID mal puesto en un editor de texto o en la Shell podría dejar la puerta abierta para que cualquier usuario tome el control total del servidor. ¡Úsalos con criterio de administrador!
¿Te ha servido esta nota? En la sección de comandos prácticos tienes más ejemplos sobre cómo combinar estos bits con el comando chmod. 🚀