Permisos de Archivos en Linux Explicados: Guía Completa de chmod
Una guía completa sobre los permisos de archivos Unix: el modelo propietario/grupo/otros, la notación octal (755, 644, 777), la notación simbólica, setuid/setgid/sticky bit y ejemplos del mundo real para servidores web y claves SSH.
Cada archivo y directorio en un sistema Linux o macOS lleva un conjunto de permisos que controla quién puede leerlo, escribir en él o ejecutarlo. Configurar correctamente estos permisos marca la diferencia entre un servidor seguro y uno que filtra datos o queda comprometido. Sin embargo, la notación — chmod 755, la salida de ls -la mostrando -rwxr-xr-- — puede parecer opaca hasta que se entiende el modelo subyacente. Esta guía explica los permisos de archivos Unix desde los principios fundamentales.
Puedes calcular valores de permisos y convertir entre notación octal y simbólica al instante con la Calculadora chmod de BrowseryTools — gratuita, sin registro, todo se ejecuta en tu navegador.
El modelo de permisos Unix: propietario, grupo y otros
Unix asigna a cada archivo y directorio tres conjuntos de permisos, cada uno cubriendo un público diferente:
- Propietario (usuario) — la cuenta de usuario que posee el archivo. Típicamente, el usuario que lo creó.
- Grupo — un grupo de usuarios con nombre. El archivo pertenece a un grupo; todos los miembros de ese grupo comparten los permisos de grupo.
- Otros (mundo) — todos los demás en el sistema que no son el propietario ni miembros del grupo.
Dentro de cada uno de estos tres conjuntos hay tres bits de permisos: lectura (r), escritura (w) y ejecución (x). Esto da nueve bits de permisos en total, que se corresponden directamente con los nueve caracteres que ves tras el indicador de tipo de archivo en la salida de ls -la.
Leer la salida de ls -la
Cuando ejecutas ls -la, cada línea comienza con una cadena de 10 caracteres como -rwxr-xr--. Así se lee:
- rwx r-x r-- ^ ^^^ ^^^ ^^^ | | | └── otros: solo lectura | | └─────── grupo: lectura + ejecución | └──────────── propietario: lectura + escritura + ejecución └─────────────── tipo de archivo: - = archivo, d = directorio, l = enlace simbólico
Un guion - en una posición de permiso indica que ese permiso no está concedido. Por lo tanto, r-x significa que se permiten lectura y ejecución, pero no escritura.
Qué significan lectura, escritura y ejecución para archivos y directorios
Los tres bits de permisos tienen significados distintos según si se aplican a un archivo o a un directorio:
- Lectura de archivo (r) — puede leer el contenido del archivo (
cat,less, abrir en un editor). - Escritura de archivo (w) — puede modificar o truncar el archivo. Nota: eliminar un archivo lo controla el permiso de escritura del directorio padre, no el bit de escritura del propio archivo.
- Ejecución de archivo (x) — puede ejecutar el archivo como programa o script. Sin este bit,
./script.shdevuelve "Permiso denegado" aunque puedas leerlo. - Lectura de directorio (r) — puede listar el contenido del directorio (
ls). Sin él, sabes que el directorio existe pero no puedes ver qué hay dentro. - Escritura de directorio (w) — puede crear, renombrar o eliminar archivos dentro del directorio. Por eso puedes eliminar un archivo que no te pertenece si tienes acceso de escritura en su directorio padre.
- Ejecución de directorio (x) — puede entrar al directorio (
cd) y acceder a los archivos dentro si conoces sus nombres. A veces se llama el "bit de búsqueda". Un directorio conr--te permite listar nombres de archivo pero no acceder a ellos; un directorio con--xte permite acceder a archivos por nombre pero no listarlos.
Notación octal: 755, 644, 777
Cada conjunto de permisos (propietario, grupo, otros) son tres bits. Tres bits pueden representar valores del 0 al 7 — exactamente un dígito octal. Por eso los permisos se escriben como tres dígitos octales, uno por audiencia:
Valores de bits: r = 4, w = 2, x = 1 rwx = 4+2+1 = 7 r-x = 4+0+1 = 5 r-- = 4+0+0 = 4 --- = 0+0+0 = 0 chmod 755 → propietario: 7 (rwx), grupo: 5 (r-x), otros: 5 (r-x) chmod 644 → propietario: 6 (rw-), grupo: 4 (r--), otros: 4 (r--) chmod 600 → propietario: 6 (rw-), grupo: 0 (---), otros: 0 (---)
No necesitas memorizar cada combinación — usa la Calculadora chmod de BrowseryTools para comprobar qué significa cualquier valor octal o para construir el valor correcto para tu situación.
Notación simbólica: u+x, g-w, o=r
El modo simbólico te permite modificar los permisos de forma relativa a su estado actual, sin especificar los tres conjuntos a la vez. El formato es [quién][operador][permisos]:
- Quién:
u(propietario/usuario),g(grupo),o(otros),a(los tres) - Operador:
+(añadir),-(eliminar),=(establecer exactamente) - Permisos:
r,w,x
chmod u+x script.sh # añadir ejecución solo para el propietario chmod g-w config.txt # eliminar escritura del grupo chmod o=r public.html # establecer otros como solo lectura exactamente chmod a+r file.txt # añadir lectura para todos chmod u=rwx,g=rx,o= # equivalente a chmod 750
Patrones de permisos comunes explicados
- 755 (
rwxr-xr-x) — Estándar para ejecutables y directorios. El propietario puede hacer todo; los demás pueden leer y ejecutar (o entrar a un directorio) pero no escribir. El valor por defecto para el directorio raíz de documentos del servidor web y los scripts públicos. - 644 (
rw-r--r--) — Estándar para archivos normales. El propietario puede leer/escribir; los demás solo pueden leer. Adecuado para recursos web, archivos de configuración que no contienen secretos y la mayoría del contenido estático. - 600 (
rw-------) — El propietario puede leer/escribir; nadie más puede hacer nada. Requerido para claves privadas SSH (~/.ssh/id_rsa). SSH se negará a usar un archivo de clave con permisos más permisivos. - 700 (
rwx------) — El propietario puede hacer todo; nadie más tiene acceso. Adecuado para scripts privados y directorios que contienen datos sensibles. - 400 (
r--------) — Solo lectura para el propietario; completamente bloqueado para los demás. Se usa para archivos de configuración e certificados inmutables donde las escrituras accidentales serían perjudiciales.
Por qué 777 es peligroso
chmod 777 otorga permisos de lectura, escritura y ejecución a todos los usuarios del sistema. Esto significa que cualquier proceso ejecutándose como cualquier usuario — incluyendo una aplicación web comprometida, un script malicioso en un entorno de hosting compartido, o cualquier otro usuario de la máquina — puede modificar o ejecutar el archivo. En un contexto de servidor web, un archivo PHP con permisos 777 permite que cualquier otro proceso lo sobrescriba con código malicioso. Nunca uses 777 en producción. Si lo estás usando para "corregir un error de permisos", la solución real es darle la propiedad del archivo al usuario o grupo correcto.
Setuid, setgid y sticky bit
Más allá de los nueve bits estándar, hay tres bits especiales que aparecen como un cuarto dígito inicial en la notación octal de cuatro dígitos:
- Setuid (4xxx) — cuando se establece en un ejecutable, el programa se ejecuta con los privilegios del propietario del archivo, no del ejecutor.
/usr/bin/passwdlo usa para permitir que usuarios normales escriban en/etc/shadow, que pertenece a root. - Setgid (2xxx) — en un ejecutable, se ejecuta con los privilegios de grupo del archivo. En un directorio, los nuevos archivos creados dentro heredan el grupo del directorio en lugar del grupo primario del creador — útil para directorios de proyectos compartidos.
- Sticky bit (1xxx) — en un directorio, evita que los usuarios eliminen archivos que no les pertenecen, incluso si tienen acceso de escritura al directorio.
/tmptiene el sticky bit activado (chmod 1777) para que los usuarios puedan crear sus propios archivos temporales pero no eliminar los de otros.
chmod recursivo (-R) y ejemplos del mundo real
El indicador -R aplica un cambio de permisos de forma recursiva a un directorio y todo su contenido. Úsalo con cuidado — aplicar los mismos permisos tanto a archivos como a directorios suele ser incorrecto, porque los directorios necesitan el bit de ejecución para poder acceder a ellos, mientras que los archivos normales generalmente no deberían tener ejecución:
# Servidor web: los directorios necesitan 755, los archivos necesitan 644
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;
# Corregir permisos de clave SSH
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 644 ~/.ssh/authorized_keys
# Hacer ejecutable un script de despliegue
chmod +x deploy.shCuando no estés seguro de qué valor octal usar, la Calculadora chmod de BrowseryTools te permite marcar casillas para los permisos de propietario, grupo y otros, y ver al instante el valor octal resultante y la notación simbólica.
Calculadora chmod gratuita — Octal ↔ Simbólico ↔ Legible por humanos
Abrir la Calculadora chmod →Try the Tools — 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools →