Terminal Linux mostrando permisos de archivos con chmod y chown

Permisos en Linux: chmod, chown y umask explicados con ejemplos

Los permisos en Linux son uno de los conceptos más importantes para cualquier administrador de sistemas. Controlan quién puede leer, escribir o ejecutar cada archivo y directorio. En este tutorial aprenderás a dominar chmod, chown y umask con ejemplos prácticos.

Cómo funcionan los permisos en Linux

En Linux, cada archivo y directorio tiene tres tipos de permisos asignados a tres grupos de usuarios:

  • Owner (propietario): el usuario que creó el archivo
  • Group (grupo): usuarios que pertenecen al mismo grupo
  • Others (otros): el resto de usuarios del sistema

Y tres tipos de permisos:

  • r (read): permiso de lectura — valor numérico 4
  • w (write): permiso de escritura — valor numérico 2
  • x (execute): permiso de ejecución — valor numérico 1

Leer los permisos con ls -l

$ ls -l archivo.txt
-rwxr-xr-- 1 victor devops 1234 may 7 10:00 archivo.txt

Desglosando la salida:

PosiciónValorSignificado
1Tipo: archivo normal (d = directorio, l = enlace)
2-4rwxPermisos del propietario: lectura, escritura y ejecución
5-7r-xPermisos del grupo: lectura y ejecución
8-10r–Permisos de otros: solo lectura
11victorUsuario propietario
12devopsGrupo propietario

El comando chmod: cambiar permisos

chmod (change mode) permite modificar los permisos de archivos y directorios. Tiene dos modos de uso: simbólico y numérico (octal).

Modo simbólico

# Añadir permiso de ejecución al propietario
chmod u+x script.sh

# Quitar permiso de escritura al grupo
chmod g-w archivo.txt

# Dar lectura y escritura a todos
chmod a+rw archivo.txt

# Quitar todos los permisos a otros
chmod o-rwx archivo.txt

# Múltiples cambios a la vez
chmod u+x,g-w,o-r archivo.txt

Las letras que puedes usar:

  • u: user (propietario)
  • g: group (grupo)
  • o: others (otros)
  • a: all (todos)

Modo numérico (octal)

El modo numérico es el más utilizado en la práctica. Cada permiso tiene un valor: r=4, w=2, x=1. Se suman para obtener el valor de cada grupo.

Valor octalPermisosDescripción
7rwxLectura, escritura y ejecución
6rw-Lectura y escritura
5r-xLectura y ejecución
4r–Solo lectura
0Sin permisos
# Propietario: rwx | Grupo: r-x | Otros: r--
chmod 754 script.sh

# Permisos típicos para scripts
chmod 755 script.sh

# Permisos típicos para archivos de configuración
chmod 644 config.conf

# Solo el propietario puede leer y escribir
chmod 600 clave-privada.pem

# Aplicar permisos recursivamente a un directorio
chmod -R 755 /var/www/html/

El comando chown: cambiar propietario

chown (change owner) permite cambiar el usuario y/o grupo propietario de un archivo o directorio.

# Cambiar propietario
chown victor archivo.txt

# Cambiar propietario y grupo
chown victor:devops archivo.txt

# Cambiar solo el grupo
chown :devops archivo.txt

# Cambiar propietario recursivamente
chown -R victor:devops /var/www/html/

# Ver el resultado
ls -l archivo.txt

Caso práctico: despliegue web

Un caso muy común en servidores web: asignar correctamente los permisos para que Nginx o Apache puedan leer los archivos pero no modificarlos.

# Asignar los archivos al usuario www-data (Nginx/Apache)
chown -R www-data:www-data /var/www/html/

# Directorios: rwxr-xr-x (755)
find /var/www/html -type d -exec chmod 755 {} ;

# Archivos: rw-r--r-- (644)
find /var/www/html -type f -exec chmod 644 {} ;

El comando umask: permisos por defecto

umask define qué permisos se eliminan por defecto al crear nuevos archivos y directorios. Es como un filtro que se aplica automáticamente.

# Ver el umask actual
umask

# Salida típica: 0022

Con umask 022:

  • Archivos nuevos: 666 – 022 = 644 (rw-r–r–)
  • Directorios nuevos: 777 – 022 = 755 (rwxr-xr-x)
# Cambiar umask temporalmente (solo para la sesión actual)
umask 027

# Con umask 027:
# Archivos: 666 - 027 = 640 (rw-r-----)
# Directorios: 777 - 027 = 750 (rwxr-x---)

# Cambiar umask permanentemente (añadir a ~/.bashrc o /etc/profile)
echo "umask 027" >> ~/.bashrc

Permisos especiales: SUID, SGID y Sticky Bit

Además de los permisos básicos, Linux tiene tres permisos especiales muy utilizados en entornos de producción:

SUID (Set User ID) — valor 4

Permite ejecutar un archivo con los permisos del propietario, no del usuario que lo ejecuta. Muy usado en comandos del sistema como passwd.

chmod u+s script.sh
# o en octal:
chmod 4755 script.sh

# Verificar: aparece 's' en lugar de 'x'
ls -l script.sh
# -rwsr-xr-x

SGID (Set Group ID) — valor 2

En directorios, hace que los nuevos archivos hereden el grupo del directorio padre en lugar del grupo del usuario creador. Ideal para directorios compartidos entre equipos.

chmod g+s /shared/proyecto/
# o en octal:
chmod 2755 /shared/proyecto/

Sticky Bit — valor 1

En directorios, impide que los usuarios borren archivos de otros. El ejemplo clásico es /tmp.

chmod +t /tmp/compartido/
# o en octal:
chmod 1777 /tmp/compartido/

# Verificar: aparece 't' al final
ls -ld /tmp/
# drwxrwxrwt

Resumen: tabla de permisos más usados

OctalPermisosUso típico
777rwxrwxrwx⚠️ Evitar en producción
755rwxr-xr-xScripts, directorios web
644rw-r–r–Archivos web, configuración
600rw——-Claves privadas SSH
400r——–Archivos solo lectura críticos
1777rwxrwxrwtDirectorios temporales compartidos

Conclusión

Dominar los permisos en Linux es fundamental para mantener un sistema seguro. Recuerda la regla de oro: aplica siempre el mínimo privilegio necesario. No uses 777 en producción y asegúrate de que las claves privadas tienen permisos 600.

En el próximo post veremos cómo automatizar tareas con cron jobs, otro pilar esencial para cualquier sysadmin. ¿Tienes dudas sobre permisos? Déjalas en los comentarios.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *