10 Permisos Especiales en Linux

Published Apr 12, 2023

Linuxpermissions

🧠 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

  1. Crear un script o archivo:
touch script.sh
chmod +x script.sh
  1. Asignar SUID:
chmod u+s script.sh
  1. 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 → SUID
  • 755 → 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

  1. Crea un directorio proyecto/ con SGID y agrégalo a un grupo.
  2. Cambia un script para que use SUID (¡solo como prueba!).
  3. Crea un directorio compartido/ y aplica Sticky Bit.
  4. 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 y man 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! 🚀🐧