¿Odias los anuncios? Ir Sin publicidad Hoy

chmod en lenguaje común — ¿Por qué todos escriben 755 sin saber lo que significa?

Actualizado en

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.

chmod en lenguaje común — ¿Por qué todos escriben 755 sin saber qué significa? 1
ANUNCIO · ¿ELIMINAR?

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:

ValorSimbólicoBinario¿Cómo solucionarlo?Cuándo usarlo
755rwxr-xr-x111 101 101Propietario: completo. Grupo/Otros: lectura + ejecuciónDirectorios, ejecutables públicos, scripts servidos por web
644rw-r–r–110 100 100Propietario: lectura + escritura. Grupo/Otros: solo lecturaArchivos de configuración, activos estáticos, HTML, fuentes de PHP
600rw——-110 000 000Propietario: lectura + escritura. Todos los demás: nadaClaves SSH (~/.ssh/id_rsa), archivos .env
700rwx——111 000 000Propietario: completo. Todos los demás: nadaScripts que contienen secretos, ejecutables privados
777rwxrwxrwx111 111 111Todos: 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.

¿Quieres eliminar publicidad? Adiós publicidad hoy

Instalar extensiones

Agregue herramientas IO a su navegador favorito para obtener acceso instantáneo y búsquedas más rápidas

añadir Extensión de Chrome añadir Extensión de borde añadir Extensión de Firefox añadir Extensión de Opera

¡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!

ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?
ANUNCIO · ¿ELIMINAR?

Noticias Aspectos técnicos clave

Involucrarse

Ayúdanos a seguir brindando valiosas herramientas gratuitas

Invítame a un café
ANUNCIO · ¿ELIMINAR?