Cómo entender los permisos en archivos Linux - Guía completa chmod, chown, octal

Linux | File Permissions | Security

Permisos en archivos Linux: Guía completa de chmod, chown y octal

Domina rwx, 755, 644. Entiende permisos usuario/grupo/otros. Seguridad y control total de tu sistema. De novato a experto.

¿Qué son los permisos en Linux?


Los permisos en Linux son reglas que controlan quién puede hacer qué con cada archivo o carpeta. Son la base de la seguridad en Linux: sin ellos, cualquier usuario podría leer, modificar o ejecutar cualquier archivo del sistema. Entender permisos es esencial para administración de servidores, seguridad y DevOps.

Tres conceptos clave: Read (lectura), Write (escritura), Execute (ejecución). Tres categorías: User (dueño), Group (grupo), Others (otros usuarios). Dos formatos: Notación simbólica (rwx) y octal (755).

El ejemplo clásico: Tu archivo de configuración con contraseñas. Quieres que solo TÚ puedas leerlo (600). Si los permisos son 644, otros usuarios pueden verlo. Un error de permisos = brechas de seguridad.

Tres permisos básicos

1. Read (r) - Lectura

  • Para archivos: Puedo ver el contenido del archivo
  • Para carpetas: Puedo listar archivos dentro (ls)
  • Valor octal: 4
  • Representación: r--

2. Write (w) - Escritura

  • Para archivos: Puedo modificar/eliminar el archivo
  • Para carpetas: Puedo crear/eliminar archivos dentro
  • Valor octal: 2
  • Representación: -w-

3. Execute (x) - Ejecución

  • Para archivos: Puedo ejecutar el archivo (script, binary)
  • Para carpetas: Puedo acceder/navegar dentro (cd)
  • Valor octal: 1
  • Representación: --x
Regla de oro: Read=4, Write=2, Execute=1. Suma para combinaciones: 4+2=6 (rw-), 4+2+1=7 (rwx), etc.

Leer permisos con notación simbólica

Cuando ejecutas ls -l, ves algo así:

-rw-r--r-- 1 usuario grupo 1234 May 20 10:30 archivo.txt drwxr-xr-x 2 usuario grupo 4096 May 20 10:30 carpeta

Desglose del primer ejemplo: -rw-r--r--

  1. - = Tipo de archivo. - = archivo normal, d = directorio, l = enlace
  2. rw- = Permisos del usuario (dueño). Read+Write, sin Execute
  3. r-- = Permisos del grupo. Solo Read
  4. r-- = Permisos de otros. Solo Read

Ejemplos comunes

  • -rw-r--r-- (644): Archivo. Dueño leer+escribir, grupo y otros solo leer
  • -rwxr-xr-x (755): Script ejecutable. Dueño control total, otros ejecutar+leer
  • -rw------- (600): Secreto. Solo dueño puede leer/escribir, nadie más
  • drwxr-xr-x (755): Carpeta. Dueño control total, otros navegar
  • drwx------ (700): Carpeta privada. Solo dueño accede

Notación octal (números)

La tabla mágica

Permisos
Octal
Simbólico
Cálculo
No permission
0
---
0
Execute
1
--x
1
Write
2
-w-
2
Write+Execute
3
-wx
2+1
Read
4
r--
4
Read+Execute
5
r-x
4+1
Read+Write
6
rw-
4+2
Read+Write+Execute
7
rwx
4+2+1

Entender 755 (el más común)

755 = 7 5 5 7 (user) = 4+2+1 = rwx (control total) 5 (group) = 4+0+1 = r-x (leer + ejecutar) 5 (others) = 4+0+1 = r-x (leer + ejecutar)

Otros ejemplos útiles

644 = rw- r-- r-- (archivos regulares) 755 = rwx r-x r-x (carpetas, scripts ejecutables) 600 = rw- --- --- (archivos sensibles, solo dueño) 700 = rwx --- --- (carpeta privada, solo dueño) 777 = rwx rwx rwx (NUNCA USES ESTO - inseguro)

Cambiar permisos con chmod

Sintaxis básica

# Octal (más común) chmod 755 archivo.txt # Simbólico chmod u+x archivo.txt # Añade execute al usuario chmod u-w archivo.txt # Quita write al usuario chmod go-r archivo.txt # Quita read a grupo y otros

Cambiar carpetas recursivamente

# Todos los archivos en carpeta a 644 chmod -R 644 /path/to/folder # Todas las carpetas a 755 find /path -type d -exec chmod 755 {} \;

Ejemplos prácticos

# Hacer archivo ejecutable chmod +x script.sh # Archivo secreto (solo dueño) chmod 600 contraseñas.txt # Carpeta privada (solo dueño puede entrar) chmod 700 mi-carpeta-privada/ # Web accessible (lectura para todos) chmod 644 index.html

Cambiar dueño y grupo con chown

Sintaxis básica

# Cambiar dueño sudo chown nuevousuario archivo.txt # Cambiar dueño y grupo sudo chown usuario:grupo archivo.txt # Cambiar solo grupo sudo chgrp grupoNuevo archivo.txt

Cambiar recursivamente

# Toda una carpeta sudo chown -R usuario:grupo /path/to/folder

Ejemplo real: Archivo de Docker

# Problema: archivo creado por root, necesitas acceder como usuario sudo chown $USER:$USER archivo.db # Ahora el archivo es tuyo chmod 644 archivo.db

Casos de uso comunes

1. Servidor web (Nginx/Apache)

# Archivos web legibles por servidor chmod 644 /var/www/html/index.html # Carpetas navegables por servidor chmod 755 /var/www/html/

2. Claves privadas SSH

# CRÍTICO: Solo dueño puede acceder chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub

3. Scripts ejecutables

# Script que otros usuarios pueden usar chmod 755 /usr/local/bin/mi-script.sh

4. Archivo de configuración sensible

# Base de datos, credenciales, etc. Solo dueño chmod 600 /etc/app/config.conf

5. Carpeta compartida (grupo)

# Todos en el grupo pueden acceder chmod 770 /home/shared-folder chown usuario:grupoCompartido /home/shared-folder

Errores comunes y soluciones

Error: Permission denied

# Causa: No tienes permisos de lectura/ejecución ls -l archivo # Ver qué permisos tiene chmod 755 archivo # Dar permisos adecuados

Error: No permission to execute

# Script sin permisos de ejecución chmod +x script.sh # Para ejecutar: ./script.sh

Problema: Docker no puede acceder a volumen

# Causa típica: archivo de host es propiedad de root sudo chown -R 1000:1000 /data/ # UID 1000 = usuario típico en contenedor chmod -R 755 /data/
NUNCA hagas esto: chmod 777 en producción. Cualquier usuario puede modificar cualquier archivo. Es una brecha de seguridad masiva.

Mejores prácticas de seguridad

Principio del menor privilegio

Da solo los permisos necesarios. Si un archivo necesita ser leído, no le des write. Si una carpeta solo necesita acceso, no le des permisos de modificación.

Archivos vs Carpetas

  • Archivos: Típicamente 644 (rw-r--r--) o 600 (secreto)
  • Carpetas: Típicamente 755 (rwxr-xr-x) o 700 (privada)
  • Scripts: 755 si son ejecutables públicamente, 700 si privados

Auditar permisos regularmente

# Ver qué tiene permisos inseguros (777, 666, etc) find / -perm 777 -type f # Archivos con 777 find / -perm 666 -type f # Archivos sin restricción de ejecución

Configuración típica de servidor

# Estructura estándar /home/user/app/ config.conf → 600 (secreto, solo usuario) app.bin → 755 (ejecutable público) data/ → 700 (carpeta privada) shared/ → 755 (carpeta compartida) logs/ → 700 (solo usuario puede leer logs)

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.