Calculadora Chmod
Obtén el octal de chmod, la notación simbólica y el comando
Marca una casilla o escribe un valor octal / simbólico: el resto se actualiza automáticamente.
| — | Lectura (r) | Escritura (w) | Ejecución (x) |
|---|---|---|---|
| Propietario (u) | |||
| Grupo (g) | |||
| Otros (o) |
Resumen de permisos
Cálculo de umask
Los archivos nuevos parten de 666 y los directorios de 777; después se quitan los bits de la umask.
Procesando…
0.0
No se ha bloqueado: el resultado aparecerá cuando termine el cálculo.
Acerca de Calculadora Chmod
Esta herramienta convierte los permisos de archivo de Unix entre tres vistas: números octales como 755, la cadena simbólica que muestra ls -l (rwxr-xr-x) y los bits individuales que puedes activar o desactivar. Un octal de cuatro dígitos como 4755 o 1777 se lee con el primer dígito como bits setuid, setgid y sticky, y puedes pegar la parte de permisos de una línea de ls -l incluida la letra del tipo de archivo (-rwsr-xr-x).
Entender cómo se forman los números es más rápido que memorizarlos. A continuación: la aritmética octal, cómo aparecen los bits especiales como s, t, S y T, qué abre realmente un 777 y cómo decide umask los permisos de los archivos que todavía no existen.
Un dígito octal son tres bits
Cada dígito es la suma de lectura = 4, escritura = 2 y ejecución = 1: 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--. Los tres dígitos corresponden, por orden, al propietario, al grupo y al resto. 755 significa «el propietario puede todo, los demás leen y ejecutan»; 640, «el propietario lee y escribe, el grupo lee, el resto nada».
Se usa octal porque tres bits caben exactamente en un dígito octal, y de ahí sale un error clásico. Si un programa pasa el modo como número y olvida el prefijo octal (0o755 en Python, 0755 en C o Perl), recibe el decimal 755, que en octal es 1363: un modo extraño con el bit sticky activado.
En los directorios, r, w y x significan otra cosa
En un directorio, r permite listar los nombres que contiene, w permite crear, borrar y renombrar entradas, y x permite atravesarlo como parte de una ruta. Con r pero sin x ves los nombres con ls pero no puedes abrir los archivos; con x pero sin r solo abres un archivo si ya conoces su nombre exacto.
Poder borrar un archivo depende del permiso de escritura del directorio que lo contiene, no del archivo. Un archivo de solo lectura (444) en un directorio donde puedes escribir se puede eliminar. El bit sticky existe precisamente para cerrar ese hueco.
Bits especiales: setuid 4, setgid 2, sticky 1
El primer dígito de un modo de cuatro cifras guarda los bits especiales. En la forma simbólica no tienen columna propia y sustituyen la posición de ejecución de la clase correspondiente: minúscula (s, t) si la ejecución también está activa y mayúscula (S, T) si no. La mayúscula suele indicar un error: 4644 aparece como rwSr--r--, y un setuid en un archivo que nadie puede ejecutar no sirve de nada.
- setuid (4000): el ejecutable corre con los privilegios del propietario del archivo, no de quien lo lanza. Así passwd, propiedad de root con modo -rwsr-xr-x, deja que cualquier usuario cambie su contraseña. Linux ignora el setuid en scripts interpretados como los de shell.
- setgid (2000): en un ejecutable, corre con el grupo del archivo; en un directorio, los archivos nuevos heredan el grupo del directorio. Por eso las carpetas compartidas suelen ser 2775 o 2770.
- sticky (1000): en un directorio, solo el propietario de un archivo (o del directorio, o root) puede borrarlo o renombrarlo, aunque otros tengan escritura. /tmp es 1777, drwxrwxrwt, justamente por esto.
Lo que abre de verdad un chmod 777
«Me daba error de permisos, puse 777 y ya funciona» es una solución habitual, y lo que hace es dar escritura a todas las cuentas y todos los procesos de la máquina. Una carpeta de subidas en 777 permite que otro sitio del mismo hosting, o un plugin comprometido, deje ahí un script ejecutable. Un archivo de configuración en 666 permite a cualquiera cambiar la contraseña de la base de datos que contiene.
La mayoría de los errores de permisos no se deben a que falten permisos para «el resto», sino a un propietario o grupo equivocado. Si el usuario del servidor web (www-data, nginx…) necesita escribir en una carpeta, se ajusta el grupo con chown y se usa 775, o 2775 para conservar el grupo en los archivos nuevos. OpenSSH directamente se niega a usar una clave privada legible por el grupo o por otros, por eso las claves van en 600.
umask enmascara bits, no resta
El modo de un archivo nuevo es lo que pidió el programa (normalmente 666 para archivos y 777 para directorios) con los bits de umask apagados. Con umask 022 salen archivos 644 y directorios 755. Parece una resta, pero es una máscara de bits (pedido AND NOT umask), y restar da resultados erróneos: con umask 033 un archivo nuevo queda en 644, no en 666 − 033 = 633, porque los bits de ejecución que «restarías» nunca estuvieron activos.
Escribe una umask (por ejemplo 022 o 0027) en el cálculo de umask, al final de la herramienta, y verás el modo de un archivo nuevo (desde 666) y de un directorio nuevo (desde 777) en octal y en formato rwx. umask solo actúa al crear; los archivos existentes mantienen su modo hasta que les apliques chmod.
Ejemplos
Un ejecutable típico
- Entrada
755- Resultado
rwxr-xr-x / 0755
7 = 4+2+1, 5 = 4+1. El propietario edita y todos ejecutan.
El binario passwd
- Entrada
-rwsr-xr-x- Resultado
4755
La s en la ejecución del propietario es setuid más ejecución. El carácter inicial de tipo se ignora.
/tmp
- Entrada
1777- Resultado
rwxrwxrwt
Todos pueden escribir, pero la t (sticky) impide borrar archivos ajenos.
De dónde sale la S mayúscula
- Entrada
4644- Resultado
rwSr--r--
setuid sin ejecución: no tiene efecto y suele ser un error.
Calcular con umask
- Entrada
pedido 666, umask 027- Resultado
640 (rw-r-----)
El grupo pierde w (2) y el resto pierde rwx (7). Un directorio pedido en 777 quedaría en 750.
Cómo se usa
- Escribe un modo octal (755, 4755) o simbólico (rwxr-xr-x, o el inicio de una línea de ls -l).
- Activa o desactiva bits; ambas notaciones se actualizan a la vez.
- Copia el comando chmod generado.
Preguntas frecuentes
¿Por qué no conviene usar chmod 777?
Permite que cualquier cuenta o proceso del sistema modifique el archivo o la carpeta. Corregir propietario o grupo y usar 755 o 775 resuelve casi siempre lo mismo.
¿Qué significa una S o T mayúscula en ls -l?
Hay un bit especial activo sin el bit de ejecución en esa posición. En un archivo normal, la S casi nunca tiene efecto.
¿Qué permisos debe tener una clave privada SSH?
600 (rw-------). OpenSSH rechaza claves legibles por el grupo o por otros.
¿644 y 0644 son distintos?
No. El 0 inicial indica que no hay bits especiales; la herramienta acepta ambas formas.
Con umask 022, ¿por qué los archivos nuevos no son ejecutables?
Los programas suelen pedir 666 para archivos normales, así que quedan en 644. La ejecución se añade con chmod +x.
Fuentes
- POSIX chmod utility (The Open Group)
- POSIX umask utility (The Open Group)
- inode(7) – Linux manual page
Revisado el: