Permisos en Linux

Este módulo explica cómo funcionan los permisos en Linux, cómo se interpretan y cómo gestionarlos correctamente.

Entender los permisos es crítico para cualquier sysadmin, ya que una mala configuración es una de las causas más comunes de errores de acceso, fallos de servicios y problemas de seguridad.


Introducción

Linux es un sistema multiusuario por diseño.
Desde el primer día, el sistema asume que habrá múltiples usuarios y procesos accediendo a archivos y recursos al mismo tiempo.

Para controlar esto, Linux usa un modelo de permisos simple pero muy potente, basado en:

  • Usuarios
  • Grupos
  • Permisos

Si entiendes bien este modelo, puedes predecir y resolver la mayoría de problemas de acceso sin ensayo-error.


Modelo de permisos: usuario, grupo y otros

Cada archivo y directorio en Linux tiene tres niveles de permisos:

  1. Usuario (owner)
  2. Grupo
  3. Otros (others)

Ejemplo:

-rw-r----- 1 root adm 1234 abr 10 10:00 syslog

Interpretación:

  • root → propietario
  • adm → grupo
  • Otros → cualquier usuario fuera del grupo

Tipos de permisos

Los permisos básicos son:

  • r (read) → leer
  • w (write) → escribir
  • x (execute) → ejecutar / acceder

Ejemplo visual:

rwx r-x r--
│   │   │
│   │   └─ otros
│   └──── grupo
└──────── usuario

⚠️ En directorios, el permiso x significa poder entrar (cd), no ejecutar.


Visualizar permisos

El comando básico es:

ls -l

Ejemplo:

drwxr-x--- 2 www-data www-data 4096 abr 10 12:00 /var/www

Desglose:

  • d → directorio
  • rwx → usuario
  • r-x → grupo
  • --- → otros

Permisos en formato numérico (octal)

Cada permiso tiene un valor:

  • r = 4
  • w = 2
  • x = 1

Suma por bloque:

Permiso Valor
r-- 4
rw- 6
rwx 7

Ejemplo:

chmod 750 script.sh

Equivale a:

  • Usuario → rwx (7)
  • Grupo → r-x (5)
  • Otros → --- (0)

Cambiar permisos con chmod

Modo simbólico

chmod u+x script.sh
chmod g-w archivo.txt
chmod o-r fichero.log

Donde:

  • u → usuario
  • g → grupo
  • o → otros
  • a → todos

Modo numérico

chmod 644 archivo.txt
chmod 755 script.sh

✅ En servidores, 644 y 755 son los permisos más comunes.


Propietarios y grupos: chown y chgrp

Cambiar propietario:

chown usuario archivo

Cambiar propietario y grupo:

chown usuario:grupo archivo

Cambiar grupo:

chgrp grupo archivo

Ejemplo típico en web:

chown -R www-data:www-data /var/www/app

Permisos especiales

SUID (Set User ID)

Ejecuta un binario con permisos del propietario.

Ejemplo clásico:

-rwsr-xr-x 1 root root /usr/bin/passwd
  • La s indica SUID
  • Permite cambiar contraseña sin ser root

Activar:

chmod u+s archivo

SGID (Set Group ID)

  • En archivos → hereda grupo
  • En directorios → los archivos creados heredan el grupo
chmod g+s directorio

Sticky Bit

Usado en directorios compartidos como /tmp.

drwxrwxrwt /tmp
  • Solo el propietario puede borrar sus archivos

Activar:

chmod +t directorio

Errores comunes

Errores típicos en producción:

  • Usar chmod 777 “para que funcione”
  • No entender permisos en directorios
  • Cambiar permisos sin revisar propietario
  • Romper servicios web por permisos incorrectos
  • Ignorar SGID en entornos colaborativos

💡 Regla de oro: da el mínimo permiso necesario, nunca más.


Ejercicios prácticos

1. Analizar permisos

ls -l /etc/passwd

Pregúntate:

  • ¿Quién puede leerlo?
  • ¿Quién puede escribirlo?

2. Crear un directorio compartido

mkdir /tmp/compartido
chgrp users /tmp/compartido
chmod 2775 /tmp/compartido

Comprueba cómo se hereda el grupo.


3. Detectar SUID en el sistema

find / -perm -4000 2>/dev/null

Mentalidad

Un buen sysadmin piensa:

  • Los permisos protegen, no estorban
  • Si algo falla, revisa permisos antes que reinstalar
  • Directorios ≠ archivos
  • Seguridad y operatividad deben equilibrarse

Entender permisos te ahorra horas de debugging.


Resumen

  • Linux usa usuario, grupo y otros
  • r, w y x tienen distinto significado en archivos y directorios
  • chmod y chown son fundamentales
  • Existen permisos especiales (SUID, SGID, sticky)
  • Los permisos son causa común de errores

Siguiente paso

En el siguiente módulo entrarás en:

Usuarios y grupos (usuarios.md)

Donde verás:

  • Cómo se gestionan usuarios en Linux
  • Archivos clave como /etc/passwd y /etc/group
  • Buenas prácticas en entornos multiusuario