Calculadora Chmod
Calculadora interactiva de permisos de archivos Linux/Unix.
chmod 000 filename
Permisos habituales
Cómo usar
- Marca las casillas para definir los permisos de lectura, escritura y ejecución para Propietario, Grupo y Otros.
- O escribe directamente un valor numérico de 3 dígitos (p. ej. 755).
- La notación simbólica y el comando
chmodse actualizan en tiempo real. - Haz clic en Copiar el comando para copiar el comando chmod completo.
Referencia de permisos
| Número | Permiso | Símbolo |
|---|---|---|
| 0 | Ningún permiso | --- |
| 1 | Solo ejecución | --x |
| 2 | Solo escritura | -w- |
| 3 | Escritura + ejecución | -wx |
| 4 | Solo lectura | r-- |
| 5 | Lectura + ejecución | r-x |
| 6 | Lectura + escritura | rw- |
| 7 | Lectura + escritura + ejecución | rwx |
Preguntas frecuentes
¿Qué significa chmod 755?
755 significa que el propietario puede leer, escribir y ejecutar (7), mientras que el grupo y los demás pueden leer y ejecutar pero no escribir (5). Es el permiso más habitual para carpetas y scripts.
¿Cuál es la diferencia entre 644 y 755?
644 (rw-r--r--) autoriza al propietario a leer/escribir y a todos los demás solo a leer · típico en archivos. 755 (rwxr-xr-x) añade el permiso de ejecución · típico en carpetas y scripts.
¿Funciona también para carpetas?
Sí. Los permisos numéricos funcionan igual. Para carpetas, «ejecución» significa poder entrar en la carpeta y acceder a su contenido.
El modelo de permisos de Unix en 9 bits
Cada archivo y directorio de un sistema de tipo Unix lleva un «modo», un pequeño entero que registra quién puede hacer qué. El modelo está esencialmente inalterado desde Unix Sixth Edition (mayo de 1975), y las primeras entradas del manual de chmod aparecen en Unix Version 1 (noviembre de 1971). Codifica nueve bits de permiso dispuestos como tres tríos de lectura / escritura / ejecución, un trío para el propietario del archivo, otro para su grupo y otro para todos los demás:
Owner Group Others
r w x r w x r w x
4 2 1 4 2 1 4 2 1
Cada grupo de tres bits es exactamente un dígito octal porque tres bits codifican 2³ = 8 valores distintos (0-7). Los pesos 4, 2, 1 son 2², 2¹, 2⁰. Sumar cualquier combinación de lectura (4) + escritura (2) + ejecución (1) produce los ocho dígitos posibles por clase sin colisión: esa es toda la correspondencia de octal a simbólico. chmod 755 significa, por tanto, rwx (4+2+1=7) para el propietario, r-x (4+1=5) para el grupo y r-x para todos los demás.
La cadena de 10 caracteres que ves en ls -l son los mismos datos más una columna adicional al principio para el tipo de archivo: - para un archivo normal, d para un directorio, l para un enlace simbólico, c para un dispositivo de caracteres, b para un dispositivo de bloques, p para una tubería con nombre, s para un socket. Los nueve caracteres restantes son los tríos de permisos.
Notación simbólica: chmod u+x archivo
Los modos octales sobrescriben los nueve bits a la vez. Los modos simbólicos son no destructivos: solo cambian los bits que nombras. La gramática es quién + op + perm:
- quién:
uusuario/propietario,ggrupo,ootros,atodos (= ugo). - op:
+añade,-quita,=establece exactamente (y borra los demás). - perm:
r,w,x, más las letras especialesX(ejecución solo si el destino es un directorio o ya es ejecutable en al menos una clase),s(setuid / setgid),t(sticky / eliminación restringida). También puedes copiar de otra clase conu,g,o: p. ej.,g=uestablece los permisos de grupo idénticos a los del propietario.
Ejemplos útiles:
chmod u+x script.sh: añade ejecución solo para el propietario.chmod g-w shared.log: quita escritura para el grupo.chmod a=rw note.txt: establece lectura/escritura para todos y borra la ejecución para todos.chmod o= secret.key: borra todos los bits de los «otros».chmod -R u+rwX,go+rX /var/www: concede de forma recursiva acceso total al propietario y lectura a los demás; laXmayúscula añade ejecución solo en directorios o archivos que ya la tienen en alguna clase, evitando hacer ejecutable por accidente cada archivo de texto.
Los modos numéricos son explícitos e idempotentes (chmod 755 siempre significa los mismos nueve bits). Los modos simbólicos son quirúrgicos (chmod g+w solo cambia un bit). Los scripts de producción tienden a preferir el numérico por la claridad en los registros de auditoría; los operadores que teclean en el shell tienden a preferir el simbólico para ajustes incrementales.
Modos comunes y para qué sirven
| Modo | Simbólico | Uso típico |
|---|---|---|
| 755 | rwxr-xr-x | Ejecutables públicos y directorios estándar, /usr/bin/*, docroots web, árboles de trabajo de Git |
| 644 | rw-r--r-- | Archivos normales estándar, configuración, código fuente, documentos |
| 700 | rwx------ | Directorio privado, ~/.ssh, documentos personales que nadie más debería ver |
| 600 | rw------- | Archivo privado, ~/.ssh/id_rsa, ~/.gnupg/*, archivos de contraseñas |
| 444 | r--r--r-- | Solo lectura para todos, datos de referencia fijos, índices del registro de Cargo |
| 750 | rwxr-x--- | Propietario total, grupo lectura/recorrido, otros nada, directorio de servicio compartido por grupo |
| 777 | rwxrwxrwx | Casi siempre incorrecto. Véase más abajo. |
Por qué chmod 777 es casi siempre incorrecto
Poner un archivo en 777 lo hace legible, escribible y ejecutable por todo el mundo. Cualquier usuario de la máquina (incluidas las cuentas de servicio sin privilegios y cualquier proceso que llegue a verse comprometido) puede leer el contenido del archivo, modificarlo y ejecutarlo. El típico consejo de los tutoriales, «haz chmod 777 hasta que funcione», es un antipatrón de seguridad que ha sido responsable de incontables brechas reales: archivos de configuración escribibles por todos que se manipulan, directorios web escribibles por todos que se convierten en vectores de desfiguración, archivos de registro escribibles por todos que permiten la falsificación de registros, directorios ejecutables por todos que permiten la ejecución de código arbitrario.
Si un error de permisos te bloquea, la solución correcta es casi siempre cambiar el propietario del archivo (con chown) o su grupo (con chgrp) para que el usuario que necesita acceso sea realmente el propietario o copropietario del archivo, no quitar los controles de acceso a todo el mundo.
Bits especiales: setuid, setgid, sticky
Un cuarto dígito octal antepuesto al modo desbloquea tres bits especiales, todos reliquias del diseño original de Unix:
- 4xxx, setuid (set user ID). Cuando se establece en un ejecutable, el programa se ejecuta con los privilegios del propietario en lugar de los del invocador. El ejemplo clásico es
passwd: todos los usuarios pueden ejecutarlo, pero solo porque es setuid-root puede escribir en/etc/shadow. setuid es una superficie de seguridad importante; el Linux moderno lo sustituye cada vez más por capacidades de archivo (bits de permiso más granulares mediantesetcap), y muchas distribuciones están eliminando progresivamente los bits setuid. - 2xxx, setgid (set group ID). En un ejecutable, se ejecuta con el grupo del archivo; en un directorio, los archivos creados dentro heredan el grupo del directorio en lugar del grupo principal del creador, útil para directorios de proyectos compartidos.
- 1xxx) bit sticky. En un directorio, solo el propietario del archivo (o root) puede eliminar o renombrar los archivos de dentro, con independencia del permiso de escritura sobre el propio directorio. El uso canónico es
/tmp: escribible por todos para que cualquier usuario pueda crear archivos, pero el bit sticky impide que los usuarios eliminen los archivos de los demás.
La visualización de ls -l cambia el carácter de ejecución por s, S, t o T cuando estos bits están establecidos (las mayúsculas significan que el bit está establecido pero el bit de ejecución subyacente no).
umask: el inverso de chmod
chmod establece los permisos de los archivos existentes. umask determina los permisos predeterminados de los archivos que creas, actuando como una máscara sustractiva. La aritmética: un archivo normal nuevo sería 666 (rw-rw-rw-), un directorio nuevo 777, menos lo que esté establecido en la umask. Valores comunes:
- umask 022 (el predeterminado en la mayoría de las distribuciones de Linux), quita la escritura al grupo y a los otros. Los archivos nuevos acaban en 644 y los directorios nuevos en 755.
- umask 002 (predeterminado en algunos entornos de desarrollo compartido), quita la escritura solo a los otros. Archivos nuevos en 664, directorios en 775. Útil cuando un equipo de desarrollo quiere leer y editar los archivos de los demás.
- umask 077 (común en servidores privados y configuraciones preocupadas por la seguridad), quita todos los permisos al grupo y a los otros. Archivos nuevos en 600, directorios en 700.
Teclear umask sin argumentos muestra el valor actual. Establecerlo en el inicio de tu shell (~/.bashrc, ~/.zshrc) o en /etc/login.defs se aplica a toda la sesión.
Archivos frente a directorios: distintos significados de x
Los mismos bits r/w/x significan cosas sutilmente distintas en los directorios que en los archivos:
- Lectura en un directorio: listar su contenido. Sin lectura, aún puedes acceder a un nombre de archivo conocido dentro del directorio si tienes ejecución, pero
lsno funcionará. - Escritura en un directorio: crear, eliminar o renombrar las entradas de dentro. Nota: esto es independiente del permiso de escritura sobre los propios archivos. La escritura en el directorio más el bit sticky (1xxx) es lo que permite los directorios compartidos multiusuario controlados como
/tmp. - Ejecución en un directorio: atravesarlo (entrar en él con
cd, acceder a las entradas con nombre de dentro). Un directorio sin ejecución es, en la práctica, un callejón sin salida. Muchos problemas sutiles de «permission denied» provienen de esta distinción: tienes lectura en un directorio profundo pero no ejecución en uno de sus padres, así que no puedes llegar a él.
chmod recursivo y el patrón find
chmod -R 755 /var/www aplica el mismo modo a cada archivo y directorio del árbol, lo cual es casi siempre incorrecto porque los archivos y los directorios quieren modos distintos (p. ej., 644 para archivos, 755 para directorios). El modismo correcto usa find:
find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +
O, de forma equivalente, usando la X mayúscula del chmod de GNU: chmod -R u=rwX,go=rX /var/www concede ejecución solo en directorios y en archivos que ya tenían ejecución en algún sitio, exactamente el resultado que normalmente quieres.
Enlaces simbólicos, ACL y cómo Linux amplía el modelo
Dos matices que conviene conocer:
- Los enlaces simbólicos tienen su propio modo (siempre 777), pero se ignora.
chmodsigue el enlace y modifica el destino por defecto. Usachmod -hen BSD ochmod --no-dereferenceen GNU para operar sobre el propio enlace, aunque rara vez hay motivo para hacerlo. - Las ACL POSIX (
setfacl,getfacl) amplían el modelo básico con entradas por usuario y por grupo. Un archivo puede conceder escritura a un usuario concreto sin tocar los bits de modo estándar.ls -lmuestra un+al final en los archivos con ACL. macOS, la mayoría de los sistemas de archivos de Linux y los BSD las admiten todas; son opcionales y muchos administradores de sistemas prefieren quedarse con el modo clásico, más sencillo. - Las ACL de NTFS de Windows son aún más ricas: entradas por usuario / por grupo con bits explícitos de permitir / denegar y herencia heredable. El modelo de
chmodno se traduce directamente. Cygwin y WSL lo emulan de forma imperfecta sobre NTFS.
Más preguntas
¿Por qué se rechaza mi clave SSH con «permissions are too open»?
Porque el cliente de OpenSSH se niega a usar una clave privada que sea legible por el grupo o por todo el mundo, partiendo de que cualquier cosa que otras personas puedan leer no debería ser una credencial. La solución es chmod 600 ~/.ssh/id_rsa (y chmod 700 ~/.ssh en el propio directorio). La misma lógica para ~/.gnupg/ y la mayoría de los demás almacenes de credenciales.
¿Cuál es la diferencia entre chmod y chown?
chmod cambia los bits de modo, lo que pueden hacer propietario/grupo/otros. chown cambia quién es el propietario. Con frecuencia necesitas ambos: un archivo que «el usuario equivocado no puede leer» normalmente no necesita que se abran sus permisos; necesita pertenecer al usuario que necesita el acceso. Prueba primero chown myuser:mygroup file.
¿Debería usar 666 para los archivos de registro?
Casi nunca. Los archivos de registro escribibles por todos permiten que cualquier proceso (incluido un servicio comprometido que se ejecute como un usuario con pocos privilegios) falsifique entradas de registro o borre el registro. El patrón estándar es hacer que el directorio de registros sea escribible por un grupo de registro concreto (adm en Debian, wheel en BSD, etc.) y añadir los servicios pertinentes a ese grupo, o usar logrotate + un demonio de registro (rsyslog, systemd-journald) que se encargue de la propiedad de los archivos por ti.
¿Tiene en cuenta esta calculadora los bits especiales?
No, cubre los nueve bits de permiso base (el modo estándar de 3 dígitos). Para setuid (4xxx), setgid (2xxx) o sticky (1xxx), antepondrías el dígito inicial a mano. La inmensa mayoría del trabajo cotidiano con chmod usa modos de 3 dígitos y nunca toca los bits especiales.
¿Se envía algo a un servidor?
No. La conversión conmutador ↔ octal ↔ simbólico es pura aritmética, calculada en tu navegador. La página funciona sin conexión una vez cargada.