chmod en lenguaje común — ¿Por qué todos escriben 755 sin saber lo que significa?
755, 644, 777 — has introducido estas tantas veces. Aquí está lo que realmente significan, por qué chmod 777 es perezoso y no malo, y en qué momento cada valor es realmente la opción correcta.
A alguna parte temprana de tu carrera, alguien te dijo que debías ejecutarlo chmod 755 en un directorio o chmod 644 en un archivo de configuración. Funcionó. Pasaste a otra cosa. Ahora, años después, sigues escribiendo esas cifras exactas por memoria muscular — y si alguien te pregunta qué significa realmente 755, te miras vagamente hacia una pantalla y dices: «es la cosa estándar de permisos».
Esto está bien, hasta que no lo está. El momento en que necesitas depurar un error de permisos denegados, decides qué poner en un nuevo script o explicar a un desarrollador junior por qué chmod 777 no es la solución para todo — de repente, la memoria muscular ya no es suficiente.
Aquí está lo que significan realmente esos números.
Estructura de bits
Los permisos de archivos en Unix son tres conjuntos de tres bits. Eso es todo. Cada conjunto controla qué tipo de usuario puede hacer algo — propietario, grupo, otros — y cada bit dentro de un conjunto se refiere a lectura, escritura o ejecución.
Los valores son: lectura = 4, escritura = 2, ejecución = 1. Los sumas para cada conjunto. Así que 7 significa lectura + escritura + ejecución (4+2+1). 5 significa lectura + ejecución (4+1). 4 significa solo lectura.
Desglosa 755: el propietario obtiene 7 (rwx), el grupo obtiene 5 (r-x), los demás obtienen 5 (r-x). En binario: 111 101 101. En notación simbólica: rwxr-xr-x. La configuración predeterminada que has estado escribiendo durante años es simplemente: «el propietario puede hacer todo, todos los demás pueden leer y ejecutar, pero no escribir».
Lectura del resultado de ls -la
Ejecuta ls -la en cualquier directorio y obtienes algo así:
drwxr-xr-x 2 deploy www-data 4096 May 29 10:00 public_html
-rw-r--r-- 1 deploy www-data 2341 May 29 09:45 config.php
-rwx------ 1 deploy deploy 891 May 28 14:20 deploy.sh
-rw------- 1 deploy deploy 411 May 10 08:30 .env
El primer carácter es el tipo de archivo: d para directorio, - para archivo normal, l para enlace simbólico. Luego vienen tres grupos de tres caracteres — propietario, grupo, otros. Un guión significa que el permiso está ausente.
El número después de los permisos es el conteo de enlaces duros. Luego el nombre del propietario, el nombre del grupo, el tamaño del archivo en bytes, la marca de modificación y finalmente el nombre del archivo.
Así que drwxr-xr-x 2 deploy www-data significa: directorio, el propietario (deploy) puede leer, escribir y ejecutar, el grupo (www-data) puede leer y navegar pero no escribir, todos los demás pueden leer y navegar pero no escribir. Dos enlaces duros. Eso es tu directorio web estándar.
Valores comunes de permisos y por qué existen
Aquí está el desglose de los valores que realmente usarás, qué significan y en qué momento usarlos:
| Valor | Simbólico | Binario | ¿Cómo solucionarlo? | Cuándo usarlo |
|---|---|---|---|---|
755 | rwxr-xr-x | 111 101 101 | Propietario: completo. Grupo/Otros: lectura + ejecución | Directorios, ejecutables públicos, scripts servidos por web |
644 | rw-r–r– | 110 100 100 | Propietario: lectura + escritura. Grupo/Otros: solo lectura | Archivos de configuración, activos estáticos, HTML, fuentes de PHP |
600 | rw——- | 110 000 000 | Propietario: lectura + escritura. Todos los demás: nada | Claves SSH (~/.ssh/id_rsa), archivos .env |
700 | rwx—— | 111 000 000 | Propietario: completo. Todos los demás: nada | Scripts que contienen secretos, ejecutables privados |
777 | rwxrwxrwx | 111 111 111 | Todos: acceso completo | /tmp, directorios de contenedores — casi nunca en otro lugar |
La razón por la que los directorios necesitan permiso de ejecución es que «ejecutar» en un directorio significa «navegar» — la capacidad de entrar al directorio y acceder a su contenido. Si un directorio es r--r--r--, puedes listar los nombres de los archivos dentro, pero no puedes acceder a ellos. Necesitas el bit x para poder cd en él o abrir archivos. Por eso 755 y no 744 para directorios.
Si quieres trabajar con estos valores de forma interactiva, el Calculador de chmod en IO Tools te permite alternar bits individuales y ver que los valores octales y simbólicos se actualizan en tiempo real — útil cuando necesitas construir un valor de permisos inusual.
Notación simbólica: cuándo usarla en lugar de la octal
La notación octal establece todos los permisos de golpe. La notación simbólica permite cambios progresivos. Ambas son válidas — la elección depende de lo que estés haciendo.
chmod u+x script.sh agrega permiso de ejecución para el propietario sin tocar nada más. Si el archivo actualmente es 644, esto lo convierte en 744. Si usas notación octal y escribes chmod 744 script.sh, obtienes el mismo resultado — pero necesitas saber el estado actual primero.
Los operadores simbólicos son directos: + agrega un permiso, - lo elimina, = lo establece exactamente. Los objetivos son u (usuario/propietario), g (grupo), o (otros), a (los tres).
chmod u+x deploy.sh # add execute for owner
chmod g-w config.php # remove write from group
chmod o=r public/index.html # set others to read-only exactly
chmod a+r shared.txt # add read for everyone
Usa notación simbólica cuando quieras cambiar un permiso sin reiniciar todo lo demás. Usa notación octal cuando estés estableciendo permisos desde cero o quieras tener control absoluto sobre el estado final.
¿Por qué los nuevos archivos no empiezan en 666 por defecto?
Crea un nuevo archivo con un editor de texto o touch y obtienes 644. Crea un directorio y obtienes 755. ¿De dónde vienen esos valores por defecto?
Los archivos comienzan en un máximo teórico de 666 (sin ejecución por defecto — eso debe establecerse explícitamente). Los directorios comienzan en 777. El umask se restan de esos máximos.
El umask predeterminado en la mayoría de los sistemas Linux es 022. Aplicado a un archivo: 666 – 022 = 644. Aplicado a un directorio: 777 – 022 = 755. Es por eso que 644 y 755 se sienten como valores por defecto — son, mecánicamente, así.
Ejecuta umask con argumentos para ver tu valor actual. Cambia en tu perfil de shell si necesitas valores más estrictos — umask 027 te da archivos de 640 y directorios de 750, lo que elimina todos los permisos para «otros» y solo permite lectura al grupo.
chmod 777: No es malo, solo perezoso
Aquí está la opinión honesta sobre chmod 777: no es una catástrofe de seguridad en todos los contextos. Rara vez es la respuesta correcta en producción, y la gente lo usa porque hace que el error de permisos desaparezca sin necesidad de pensar.
En un servidor compartido, chmod 777 en un directorio escribible significa que cualquier proceso que ejecute bajo cualquier usuario — incluyendo una aplicación web comprometida — puede escribir en ese directorio. Eso es una superficie real de ataque. También es exactamente el tipo de cosa que queda en producción para siempre porque «lo arreglaremos más tarde».
Uso adecuado de 777:
- /tmp en un contenedor temporal — nada persiste, nada importa, pasa a lo siguiente
- Depuración de un problema de permisos en desarrollo — úsalo para confirmar que el problema es de permisos y no de algo más, luego establece el valor correcto
- Directorios de trabajo compartidos en una máquina de usuario confiable — si eres el único usuario, el permiso para «otros» es académico
El flujo diagnóstico es: encuentras un error de denegación de permisos, aplica temporalmente 777 para confirmar que es un problema de permisos y no de algo más, luego determina qué valor de permisos es correcto y establece ese valor. chmod 777 como herramienta diagnóstica es aceptable. chmod 777 en un script de despliegue que nadie revisa es cómo ocurren las brechas.
Los valores que vale la pena conocer
No necesitas memorizar todas las combinaciones posibles. Estos cuatro cubren aproximadamente el 95% de los casos reales del mundo real:
- 755 — directorios y ejecutables que deben ser accesibles públicamente
- 644 — archivos que deben ser leíbles por todos pero escritos solo por el propietario
- 600 — archivos sensibles: claves SSH, credenciales, archivos .env. SSH rechazará usar una clave privada que no sea 600 o más estricta.
- 700 — scripts que ejecutan con secretos internos y que no deben ejecutarse por nadie más
Cuando encuentres algo fuera de este rango, trabaja desde la estructura de bits: decide qué necesita hacer el propietario, el grupo y los demás, suma los bits, escribe el número. El Calculadora Chmod es útil aquí si prefieres no hacer cálculos mentales bajo presión.
El modelo de permisos es uno de esos aspectos en Unix que parecen arbitrarios hasta que entiendes que es simplemente una suma binaria. Una vez que eso se entiende, dejas de imitar los comandos de chmod de otros y empiezas a establecer permisos intencionalmente — y eso es el punto.
Instalar extensiones
Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas
恵 ¡El marcador ha llegado!
Marcador es una forma divertida de llevar un registro de tus juegos, todos los datos se almacenan en tu navegador. ¡Próximamente habrá más funciones!
Herramientas clave
Ver todo Los recién llegados
Ver todoActualizar: Nuestro última herramienta was added on Jun 21, 2026
