Hola Fronters 👋

Si alguna vez has ejecutado ls -l y te has encontrado con una sopa de letras como -rwxr-xr-x y te has preguntado qué significa todo eso, este artículo es para ti. La permisología de archivos y directorios en Linux es uno de los pilares fundamentales de la seguridad y administración del sistema. Dominarla te permitirá controlar quién puede leer, escribir o ejecutar cada recurso en tu servidor.

Hoy vamos a cubrir desde los conceptos básicos hasta temas avanzados como permisos especiales (SUID, SGID, Sticky Bit) y ACLs, todo con ejemplos prácticos que puedes probar en tu terminal.

¿Qué son los permisos en Linux?

En Linux, cada archivo y directorio tiene un conjunto de permisos que determinan qué operaciones puede realizar cada usuario sobre él. El modelo es simple pero poderoso: tres acciones básicas (leer, escribir, ejecutar) para tres categorías de usuarios (propietario, grupo, otros).

Los tres tipos de permisos (rwx)

  • r (read): Permite leer el contenido del archivo. En directorios, permite listar su contenido.
  • w (write): Permite modificar el archivo. En directorios, permite crear, eliminar o renombrar archivos dentro de él.
  • x (execute): Permite ejecutar el archivo como programa. En directorios, permite acceder a su contenido (atravesarlo con cd).

Los tres niveles de usuarios

  • Owner (propietario): El usuario que creó el archivo. Puede cambiarse con chown.
  • Group (grupo): Todos los usuarios que pertenecen al grupo asignado al archivo.
  • Others (otros): Cualquier usuario que no sea ni el propietario ni miembro del grupo.

Cómo leer permisos con ls -l

Ejecuta ls -l y verás algo como esto:

Vamos a desglosar el primer campo, que tiene 10 caracteres:

  • Carácter 1: Tipo de archivo. - = archivo regular, d = directorio, l = enlace simbólico.
  • Caracteres 2-4: Permisos del propietario (owner).
  • Caracteres 5-7: Permisos del grupo (group).
  • Caracteres 8-10: Permisos de otros (others).

En el ejemplo, -rwxr-xr-x significa: archivo regular, el propietario puede leer, escribir y ejecutar; el grupo y otros solo pueden leer y ejecutar.

chmod: Cambiar permisos

El comando chmod (change mode) es tu herramienta principal para modificar permisos. Puedes usar dos notaciones: simbólica y octal.

Notación simbólica

Usa letras para referirse a los usuarios y operadores para asignar permisos:

  • u = user (propietario), g = group, o = others, a = all (todos)
  • + añade permiso, - quita, = asigna exactamente

Notación octal (numérica)

Cada permiso tiene un valor numérico: r=4, w=2, x=1. Se suman para cada grupo de usuario:

  • 7 (rwx): 4+2+1 — lectura, escritura y ejecución
  • 6 (rw-): 4+2 — lectura y escritura
  • 5 (r-x): 4+1 — lectura y ejecución
  • 4 (r–): 4 — solo lectura
  • 0 (—): sin permisos

chown: Cambiar propietario y grupo

Con chown (change owner) puedes transferir la propiedad de archivos y directorios:

chgrp: Cambiar grupo

Alternativamente, puedes usar chgrp exclusivamente para cambiar el grupo de un archivo:

umask: Máscara de permisos por defecto

Cuando creas un archivo o directorio, Linux asigna permisos por defecto aplicando la máscara umask. La umask resta permisos del valor base:

  • Archivos base: 666 (rw-rw-rw-)
  • Directorios base: 777 (rwxrwxrwx)

Permisos especiales: SUID, SGID y Sticky Bit

Linux ofrece tres permisos especiales que añaden comportamientos avanzados a archivos y directorios.

SUID (Set User ID) — 4xxx

Cuando un archivo ejecutable tiene SUID, se ejecuta con los privilegios del propietario del archivo, no del usuario que lo ejecuta. Se representa con una s en la posición del x del propietario.

SGID (Set Group ID) — 2xxx

En archivos: se ejecuta con los privilegios del grupo. En directorios: los nuevos archivos creados dentro heredan el grupo del directorio. Se representa con s en la posición del grupo.

Sticky Bit — 1xxx

En directorios, el Sticky Bit evita que los usuarios eliminen o renombren archivos que no les pertenecen, incluso si tienen permisos de escritura en el directorio. Se representa con una t en la posición de x de otros. El ejemplo clásico es /tmp.

Puedes combinar permisos especiales:

ACLs (Access Control Lists)

Cuando los permisos estándar de owner/grupo/otros no son suficientes, las ACLs permiten asignar permisos a usuarios y grupos específicos de forma granular.

Casos prácticos resumidos

1. Script ejecutable para todos

2. Archivo de configuración sensible

3. Directorio compartido de equipo

4. Servidor web

Conclusión

Los permisos en Linux son tu primera línea de defensa. Conocer chmod, chown, chgrp y umask es esencial para cualquier administrador de sistemas. Los permisos especiales (SUID, SGID, Sticky Bit) y las ACLs te dan control granular cuando los permisos básicos se quedan cortos.

Recuerda la regla de oro: otorga siempre el mínimo privilegio necesario. Un chmod 777 es casi siempre señal de que algo no está bien diseñado.

¿Tienes dudas o quieres profundizar en algún aspecto? Déjanos tu comentario. ¡Hasta la próxima, Fronters! 🐧


📊 Infografía: Permisos en Linux

Descarga nuestra infografía resumen:

📥 Puedes descargar la infografía aquí