Desarrolladores

Cómo entender los permisos chmod en Linux (con calculadora)

9 min de lectura

Chmod 755 significa que el propietario del archivo puede leer, escribir y ejecutar, mientras que el grupo y el resto de usuarios solo pueden leer y ejecutar. Cada uno de los tres dígitos (propietario, grupo, otros) es la suma de tres valores fijos: 4 para lectura, 2 para escritura y 1 para ejecución. Con eso basta para leer cualquier número que chmod use, sin memorizar tablas.

Cómo se construye cada dígito

Un permiso Unix tiene tres clases: propietario, grupo y otros. Cada clase puede tener hasta tres capacidades, y cada una vale un número fijo:

  • Leer (r) = 4
  • Escribir (w) = 2
  • Ejecutar (x) = 1

El dígito de esa clase es la suma de lo que tiene activado. Si una clase puede leer y ejecutar pero no escribir, el dígito es 4 + 1 = 5. Si puede las tres cosas, es 4 + 2 + 1 = 7. Si no puede nada, es 0. Como solo hay ocho combinaciones posibles por clase (de 0 a 7), un permiso completo se escribe siempre como tres dígitos octales, uno por clase, en el orden propietario-grupo-otros. Por eso 755 se lee como “propietario: 7 (rwx), grupo: 5 (r-x), otros: 5 (r-x)”.

Ejemplos que verás todos los días

Esta tabla cubre los permisos más comunes que vas a encontrar en un servidor real:

ComandoOctalSimbólicoUso típico
chmod 600 file600rw-------Clave privada SSH (id_rsa), archivo .env o de secretos
chmod 644 file644rw-r—r—Archivo normal (HTML, config, log): el propietario edita, todos leen
chmod 700 dir700rwx------Carpeta privada que solo el propietario puede abrir
chmod 755 script.sh755rwxr-xr-xScript o directorio público: el propietario edita, todos pueden ejecutar/entrar
chmod 775 dir775rwxrwxr-xDirectorio compartido en equipo: propietario y grupo pueden escribir
chmod 777 file777rwxrwxrwxTodos pueden leer, escribir y ejecutar: evítalo, es un riesgo de seguridad

Un detalle que confunde a mucha gente: en un directorio, el bit de ejecución no significa “correr” el directorio como si fuera un programa, sino poder entrar en él con cd. El bit de lectura, en cambio, es lo que permite listar su contenido con ls. Un directorio con lectura pero sin ejecución deja que algunas herramientas muestren los nombres de los archivos que contiene, pero no puedes entrar en él ni consultar los metadatos (stat) de esos archivos. Es una combinación rara, pero explica comportamientos que parecen contradictorios si solo piensas en “leer” y “ejecutar” como si fueran lo mismo que en un archivo normal.

Dos cosas distintas que se llaman “simbólico”

Aquí es donde más gente se lía, porque “modo simbólico” se usa para dos cosas relacionadas pero diferentes:

La cadena que muestra ls -l, como rwxr-xr-x. Es una fotografía del estado actual del permiso: diez caracteres, el primero indica el tipo de archivo (- para archivo normal, d para directorio) y los nueve siguientes son las tres clases (propietario, grupo, otros) con tres posiciones cada una. Es lo que muestra la calculadora de este artículo.

La sintaxis simbólica del propio comando chmod, que no describe un estado sino un cambio relativo. En vez de dar el permiso completo, le dices a chmod qué modificar:

  • chmod u+x file.sh añade permiso de ejecución solo al propietario (u = user)
  • chmod go-w file quita el permiso de escritura al grupo y a otros (go = group + others)
  • chmod a+r file hace el archivo legible para todo el mundo (a = all)

La ventaja de la sintaxis simbólica es que no necesitas saber el permiso actual para cambiarlo: chmod u+x añade ejecución sin tocar lectura ni escritura, mientras que fijar un octal como 755 sustituye el permiso entero. Para dar de baja un solo bit sin arriesgarte a pisar los demás, la sintaxis simbólica es más segura que recalcular el octal a mano.

Pruébalo con tus propios permisos

LecturaEscrituraEjecución
Propietario
Grupo
Otros
Calculadora Chmod
Gratis, sin registro, funciona en cualquier dispositivo.
Abrir la herramienta completa

Por qué los archivos nuevos salen en 644 y las carpetas en 755

Nadie ejecuta chmod cada vez que crea un archivo, y aun así casi todos terminan en 644 y las carpetas en 755. Esto lo decide el umask.

Cuando el sistema crea un archivo nuevo, parte de una base de 666 (rw-rw-rw-, sin bit de ejecución por defecto, por seguridad: nadie quiere que un archivo recién creado sea ejecutable sin que tú lo decidas). Las carpetas nuevas parten de 777 (rwxrwxrwx), porque necesitan el bit de ejecución para poder entrarse en ellas. A esa base se le resta el valor del umask del shell, que en la mayoría de sistemas Linux viene configurado en 022 por defecto.

La resta es literal: 666 menos 022 da 644, que es justo el permiso que ves en cualquier archivo que acabas de crear con un editor de texto. Y 777 menos 022 da 755, el permiso típico de un directorio nuevo. El umask no toca el archivo después de creado, solo define el punto de partida en el momento de creación; por eso cambiar el umask no afecta a archivos que ya existen, solo a los que se creen a partir de ese cambio.

Errores comunes y por qué chmod 777 es un problema

chmod 777 en producción. Dar 777 a un archivo o carpeta significa que cualquier usuario del sistema, incluido uno que haya conseguido acceso parcial a través de otra vulnerabilidad, puede leer, escribir y reemplazar ese archivo. Es la forma clásica en que una subida de archivos mal protegida termina convertida en una webshell: alguien sube un script, lo ejecuta y tiene control del servidor. Las auditorías de seguridad de hosting y de WordPress marcan 777 como hallazgo crítico casi siempre que lo encuentran. El arreglo casi nunca es complicado: 755 para ejecutables y directorios, 644 para archivos normales, y si hace falta compartir con un grupo de confianza, se puede apretar todavía más a 750 o 640 en vez de abrir a todo el mundo.

Claves SSH con permisos demasiado abiertos. ssh-keygen crea las claves privadas con 600 por defecto (solo el propietario puede leer y escribir), y no es un capricho: OpenSSH se niega activamente a usar una clave privada que sea legible por el grupo o por otros. Si el permiso es demasiado abierto, el cliente SSH aborta la conexión con un mensaje como este:

Permissions 0644 for 'id_rsa' are too open

En algunas versiones el aviso es todavía más directo:

UNPROTECTED PRIVATE KEY FILE!

La solución es siempre la misma: chmod 600 id_rsa. Si copiaste la clave desde otro equipo, desde un contenedor o desde un backup, revisa el permiso antes de intentar conectarte, porque el fallo suele venir de ahí y no de la clave en sí.

Lo que esta calculadora no cubre

Además de los tres dígitos estándar de propietario, grupo y otros, Unix tiene un cuarto dígito opcional que va delante y activa permisos especiales: setuid (4000), setgid (2000) y el sticky bit (1000). Se escriben juntos, como en chmod 4755 o en chmod 1777, que es justo el permiso que suele tener /tmp. El setuid hace que un binario se ejecute con los privilegios de su propietario en vez de los del usuario que lo lanza (es el caso de /usr/bin/passwd, que necesita privilegios que un usuario normal no tiene para poder cambiar su propia contraseña). El sticky bit, aplicado a un directorio donde todos pueden escribir, impide que un usuario borre archivos de otro usuario dentro de esa carpeta. Esta calculadora trabaja solo con el conjunto estándar de tres dígitos, así que si necesitas ese cuarto dígito especial tendrás que añadirlo a mano delante del resultado.

Preguntas frecuentes

¿Qué significa chmod 755? Que el propietario del archivo tiene permiso de lectura, escritura y ejecución (7 = 4+2+1), mientras que el grupo y el resto de usuarios solo tienen lectura y ejecución (5 = 4+1), sin poder escribir. Es el permiso típico de scripts públicos y de directorios que otros usuarios necesitan poder recorrer.

¿Cómo leo una cadena como rwxr-xr-x? Se divide en tres bloques de tres caracteres cada uno: el primero es el propietario, el segundo el grupo y el tercero el resto de usuarios. Dentro de cada bloque, la primera posición es lectura (r), la segunda escritura (w) y la tercera ejecución (x); un guion en esa posición significa que el permiso no está activo. rwxr-xr-x es 755: propietario con los tres permisos, grupo y otros solo con lectura y ejecución.

¿Por qué chmod 777 es peligroso? Porque le da a cualquier usuario del sistema, no solo al propietario, la capacidad de leer, modificar y ejecutar ese archivo o entrar en ese directorio. En un servidor con varios usuarios o servicios, eso incluye a un posible atacante que haya conseguido cualquier tipo de acceso: si encuentra un archivo con 777, puede reemplazarlo por código propio y ejecutarlo. Casi siempre la alternativa correcta es 755 o 644.

¿Por qué mis archivos nuevos siempre tienen permiso 644? Porque el sistema crea los archivos partiendo de una base de 666 y le resta el umask del shell, que por defecto suele ser 022 en Linux. El cálculo es 666 menos 022 igual a 644. Las carpetas nuevas siguen la misma lógica pero partiendo de 777, así que terminan en 755.

¿Cuál es la diferencia entre rwxr-xr-x y chmod u+x archivo? rwxr-xr-x es una descripción completa del estado actual del permiso, la que muestra ls -l. chmod u+x archivo no describe un estado, sino una instrucción de cambio relativo: añade el bit de ejecución solo al propietario sin tocar el resto de permisos que ya tuviera el archivo. Son dos usos distintos de la palabra “simbólico” aplicados a chmod.

ChmodPermisos UnixLinuxSSH
Calculadora Chmod
Ahora pruébalo tú mismo con la herramienta completa.
Probar ahora