Calculadora chmod
Convierte permisos de archivos Unix entre octal (755), simbólico (rwxr-xr-x) y una cuadrícula de casillas, con setuid, setgid y el bit sticky.
| Clase | Lectura | Escritura | Ejecución |
|---|---|---|---|
| Propietario | |||
| Grupo | |||
| Otros |
chmod 644 filechmod u=rw,g=r,o=r file-rw-r--r--Qué hace esta herramienta
Cada archivo de un sistema Unix lleva un conjunto de permisos que deciden quién puede leerlo, modificarlo o ejecutarlo. El comando chmod los establece y acepta esos permisos en dos grafías bastante distintas —un número octal de tres dígitos y una cadena de letras— que describen exactamente lo mismo. Esta herramienta mantiene sincronizadas ambas grafías, y además una cuadrícula de casillas, para que puedas partir de la que tengas y copiar la que necesites.
Todo se ejecuta en tu navegador y es aritmética pura: no hay servidor y nada de lo que escribes se envía a ninguna parte. Es una calculadora y una referencia, no una forma de cambiar permisos en una máquina real: para eso copias el comando chmod que produce y lo ejecutas tú mismo.
Tres grupos, tres permisos
Los permisos se organizan en tres grupos de tres. Los grupos son el propietario del archivo, el grupo al que pertenece y todos los demás: «otros». Dentro de cada grupo hay tres permisos: lectura, escritura y ejecución.
- Lectura (r): ver el contenido del archivo o listar las entradas de un directorio.
- Escritura (w): modificar el archivo, o añadir y eliminar entradas en un directorio.
- Ejecución (x): ejecutar el archivo como programa, o entrar en un directorio y alcanzar los archivos que contiene.
La ejecución significa algo distinto en un directorio que en un archivo, y eso confunde a mucha gente: un directorio que puedes leer pero no ejecutar te deja ver los nombres de lo que hay dentro, pero no abrir nada.
Cómo funciona el número octal
Los tres permisos de cada grupo se comprimen en un dígito octal sumando valores fijos: lectura es 4, escritura es 2 y ejecución es 1. Lectura-escritura-ejecución es 4+2+1 = 7; lectura-ejecución es 4+1 = 5; lectura-escritura es 4+2 = 6. Tres grupos dan tres dígitos.
755 7 = 4+2+1 # propietario: lectura + escritura + ejecución 5 = 4+0+1 # grupo: lectura + ejecución 5 = 4+0+1 # otros: lectura + ejecución
Así, 755 significa «el propietario puede hacerlo todo, los demás pueden leer y ejecutar pero no modificar», que es el modo habitual de un programa o un directorio. 644 —lectura y escritura para el propietario, solo lectura para el resto— es el modo habitual de un archivo corriente. Cuando el patrón resulta familiar, los modos comunes se leen de un vistazo.
La cadena simbólica
La otra grafía es la que imprime ls -l: nueve caracteres, tres por grupo, cada uno su letra o un guion. 755 es rwxr-xr-x; 644 es rw-r--r--. Contiene exactamente la misma información que el número octal, solo que dispuesta de modo que ves cada permiso en lugar de sumar dígitos mentalmente.
Una línea de ls -l lleva un décimo carácter al principio: una d para un directorio, un guion para un archivo normal, una l para un enlace simbólico. Ese carácter inicial es el tipo del archivo, no un permiso, y chmod no puede cambiarlo. Puedes pegar aquí todo el campo de permisos de ls -l y el carácter de tipo simplemente se ignora.
Los bits especiales: setuid, setgid y sticky
Por encima de los nueve bits ordinarios hay tres especiales, escritos como un cuarto dígito octal opcional al principio: setuid (4), setgid (2) y el bit sticky (1). No tienen columna propia; en su lugar, cada uno se superpone a una casilla de ejecución de la cadena simbólica, y de ahí vienen las mayúsculas que tanto desconciertan.
- setuid en un ejecutable hace que se ejecute como el propietario del archivo y no como el usuario que lo lanzó. Así es como passwd puede actualizar un archivo del sistema en el que no puedes escribir directamente, y por eso un programa setuid con un fallo es un agujero grave.
- setgid en un ejecutable lo ejecuta con el grupo del archivo. En un directorio hace algo más útil y seguro: los archivos nuevos creados dentro heredan ese grupo en lugar del grupo del creador.
- El bit sticky en un directorio implica que solo el propietario de un archivo puede borrarlo o renombrarlo, aunque todos puedan escribir en el directorio. Es lo que mantiene /tmp compartido pero seguro. En un archivo normal no hace nada.
En la cadena simbólica, un bit especial activo convierte su casilla de ejecución en una letra: s en la del propietario para setuid, s en la del grupo para setgid y t en la de otros para sticky. La caja de la letra indica si la ejecución también está activa: minúscula significa que sí, mayúscula que no.
rwsr-xr-x 4755 # setuid, y el propietario SÍ ejecuta rwSr-xr-x 4655 # setuid, pero el propietario NO ejecuta rwxrwxrwt 1777 # sticky, y otros SÍ ejecutan rwxrwxrwT 1776 # sticky, pero otros NO ejecutan
Una S o una T mayúscula casi siempre es un error: significa que se activó un bit especial en un archivo que no es ejecutable, así que el bit no tiene sobre qué actuar.
Octal o simbólico en la línea de comandos
chmod acepta ambas formas y esta herramienta escribe las dos. La forma octal fija todos los bits de una vez: chmod 755 file. La forma simbólica con = hace lo mismo de manera absoluta —chmod u=rwx,g=rx,o=rx file— enumerando cada grupo para que el resultado no dependa de cómo estuviera el archivo antes.
Existe una tercera forma, relativa, que la calculadora no necesita pero que te encontrarás: chmod +x file añade ejecución para todos, chmod g-w file quita la escritura del grupo y chmod o= file borra todo para otros. Esa forma cambia bits en relación con el modo actual en lugar de fijarlo entero, lo cual es cómodo en la línea de comandos pero no tiene un «resultado» único que mostrar.
Modos que conviene no poner
Una herramienta de permisos también debería decir cuándo un modo es mala idea. Dos aparecen constantemente:
- 777 da a todos los usuarios lectura, escritura y ejecución. Es el arreglo reflejo cuando algo «no funciona» y casi siempre cambia un problema pequeño por un agujero de seguridad real. El modo correcto casi siempre es más estrecho: normalmente 755 o 644.
- Cualquier archivo escribible por todos (el último dígito incluye el 2) permite que cualquier cuenta de la máquina reescriba su contenido. Para algo que se ejecuta, se carga o es de confianza, eso es una vía de entrada. Concede la escritura a un grupo, o resérvala al propietario.
La herramienta los señala cuando aparecen. No puede saber si tu objetivo es un archivo o un directorio, así que los plantea como cosas que merecen una segunda mirada y no como errores: el bit sticky es correcto en un directorio e inútil en un archivo, y solo tú sabes cuál tienes.
Qué significa chmod 755
Es el modo al que acaba llegando casi todo script, programa y directorio, y se lee de grupo en grupo. Cada dígito son los tres permisos de ese grupo sumados —lectura 4, escritura 2, ejecución 1—, así que 7 son los tres y 5 es lectura más ejecución dejando fuera la escritura.
- Propietario — 7 = 4+2+1. Lectura, escritura y ejecución: puedes editar el archivo y ejecutarlo.
- Grupo — 5 = 4+0+1. Lectura y ejecución, sin escritura: los miembros del grupo del archivo pueden leerlo y ejecutarlo, y no pueden modificarlo.
- Otros — 5 = 4+0+1. Lo mismo otra vez: cualquier otra cuenta de la máquina puede leerlo y ejecutarlo, y ninguna puede modificarlo.
Escrito del todo es rwxr-xr-x, y el comando es chmod 755 file, o chmod u=rwx,g=rx,o=rx file si prefieres las letras. En un directorio los mismos bits se leen de otro modo, porque allí la ejecución significa que puedes entrar y llegar a lo que hay dentro: 755 es un directorio que cualquiera puede listar y en el que cualquiera puede entrar, mientras que solo el propietario puede añadir o quitar entradas. Sobre 755 la calculadora no dice nada en absoluto, y es deliberado: es el modo más estrecho que aún deja a otras cuentas ejecutar lo que has escrito. Si el grupo también necesita editar el archivo, el modo que añade la escritura de grupo es 775, no 777.
Qué significa chmod 644, y por qué tus archivos ya lo tienen
644 es 755 sin ningún bit de ejecución: 6 = 4+2 para el propietario, luego 4 = 4+0+0 para el grupo y otra vez 4 para otros, es decir rw-r--r--. Nadie puede ejecutarlo, y eso es justo lo que corresponde a todo lo que solo se lee: un documento, una página HTML, un archivo de configuración, un archivo fuente que compila otro programa. En un directorio, en cambio, no es restrictivo sino que está roto: sin ejecución nada puede entrar, así que los nombres de dentro se listan y ninguno se abre.
Es además el modo que suele tener un archivo nuevo antes de que nadie lo toque, y la razón es umask. Un programa que crea un archivo pide normalmente 666 y uno que crea un directorio pide 777; después la umask borra los bits que nombra, antes incluso de que el archivo exista. Con la umask habitual 022 —escritura retirada al grupo y a otros— 666 se convierte en 644 y 777 en 755, por lo que esos dos están por todas partes y por lo que son los dos primeros modos que ofrece esta herramienta. Escribe umask en un shell para ver el valor que tienes.
- umask 022, el valor por omisión habitual: un archivo nuevo sale 644 y un directorio nuevo 755.
- umask 002, que se pone donde cada usuario tiene su propio grupo: 664 y 775, de modo que los miembros del grupo también pueden editar.
- umask 077, el ajuste privado: 600 y 700, que nadie salvo el propietario puede ni siquiera leer.
Los seis son modos preparados aquí, y no es casualidad: son las tres umask que la gente pone de verdad, aplicadas una vez a un archivo y otra a un directorio. Leerlos como tres parejas y no como seis valores es la forma más rápida de dejar de consultar modos.
Qué significa chmod 711: entra, pero no mires
711 es el modo corriente que reparte ejecución sin lectura: 7 = 4+2+1 para el propietario y luego 1 = 0+0+1 dos veces, es decir rwx--x--x. Solo tiene sentido cuando se vuelven a separar los dos permisos de directorio —la lectura lista los nombres, la ejecución deja pasar—, y por eso en un directorio con 711 puede entrar cualquiera que ya sepa el nombre de lo que busca, y no puede listarlo nadie.
- En un directorio eso es realmente útil. Un directorio personal con 711 permite a un servidor web, o a otra cuenta de una máquina compartida, abrir /home/you/public/report.pdf mientras ls /home/you se rechaza. Nada queda oculto al propietario; simplemente los nombres no se pueden enumerar desde fuera.
- En un archivo es casi inútil. Ejecutar un script de shell significa que un intérprete abre el archivo y lo lee, así que la ejecución sin lectura falla; solo sigue funcionando un binario compilado, que el núcleo carga por su cuenta. Si querías un script que otros pudieran ejecutar, querías 755.
Sobre 711 la calculadora tampoco dice nada, porque es más estrecho que 755 y no más ancho: no concede nada que 755 no conceda. Sus vecinos aparecen por la misma razón: 751 da al grupo el listado que se niega a otros, y 700 retira incluso el paso, que es lo que quiere un directorio destinado a una sola cuenta.
777 y 1777: un bit de diferencia y no el mismo consejo
Los dos modos que atrae un directorio compartido se diferencian en un solo bit, y esta herramienta les responde distinto a propósito. 777 es rwxrwxrwx y vuelve señalado como peligro; 1777 es rwxrwxrwt, vuelve como una nota simple y es uno de los modos preparados de arriba: es el modo que /tmp tiene de verdad.
- 777 — cada dígito es 4+2+1: lectura, escritura y ejecución para el propietario, el grupo y todos los demás. No queda nada que proteja nada: cualquier cuenta puede reescribir el archivo y cualquier cuenta puede borrar o sustituir una entrada en un directorio que lo lleve. Es el arreglo reflejo ante un problema de permisos y casi siempre cambia un problema pequeño por uno real.
- 1777 — los mismos nueve bits más el bit sticky, que permite borrar y renombrar una entrada solo a su propio propietario. Esa única restricción es lo que hace seguro dejar un directorio escribible por todos, y es por lo que /tmp funciona: cualquiera puede crear un archivo allí y nadie puede quitar el de otro.
La distinción solo se sostiene donde otros también pueden ejecutar, y en eso la herramienta es estricta. 1666 es rw-rw-rwT —el bit sticky puesto donde ningún grupo tiene ejecución— y nada de esa forma puede ser un directorio utilizable, así que el bit sticky no guarda nada y el modo se señala como escribible por todos con toda la gravedad, exactamente igual que 666. La T mayúscula dice lo mismo en un carácter.
Así que un directorio que tiene que compartirse quiere 1777, o mejor aún 775 con el grupo correcto; y un archivo que no se abre es casi siempre un problema de propiedad y no un caso para 777.
Preguntas frecuentes
- ¿Cuál es la diferencia entre 644 y 755?
- 644 es lectura y escritura para el propietario y solo lectura para el resto, el modo habitual de un archivo corriente. 755 añade ejecución para los tres grupos, que es lo que un programa necesita para ejecutarse y lo que un directorio necesita para poder entrarse. Usa 644 para documentos y archivos de código, y 755 para scripts y directorios.
- ¿Por qué mi modo mostró una S o una T mayúscula?
- Porque se activó un bit especial en un grupo que no tiene permiso de ejecución. Una s o t minúscula significa que tanto el bit especial como la ejecución están activos; la forma en mayúscula significa que el bit especial está activo pero la ejecución no, lo que suele indicar que el modo no es el que se pretendía; por ejemplo, 4644 (rwSr--r--) es setuid en un archivo que nadie puede ejecutar.
- ¿Qué hace realmente chmod 777 y por qué se desaconseja?
- Concede lectura, escritura y ejecución al propietario, al grupo y a todos los demás: acceso total para cualquier cuenta del sistema. Se desaconseja porque elimina todas las protecciones de golpe; un archivo en el que todos pueden escribir es un archivo que cualquiera puede manipular, y un directorio en el que todos pueden escribir es uno donde cualquiera puede colocar archivos. Casi todos los casos que recurren a 777 se resuelven con 755 o 644 y la propiedad adecuada.
- ¿Tiene que estar el dígito inicial?
- No. Cuando no hay ningún bit especial activo, el modo son solo tres dígitos —755, no 0755— y eso es lo que muestra esta herramienta. Un cero inicial se acepta y significa lo mismo; un 4, un 2 o un 1 iniciales activan setuid, setgid o el bit sticky respectivamente.
- ¿Puedo pegar una línea directamente de ls -l?
- Sí. Pega el campo de permisos de diez caracteres, como -rwxr-xr-x o drwxr-xr-x, y la herramienta quita el carácter de tipo inicial y lee el resto. El tipo (archivo, directorio, enlace) no es un permiso y chmod no puede cambiarlo, así que se ignora.
- ¿Se envía a un servidor algo de lo que introduzco?
- No. Toda la herramienta es aritmética que se ejecuta en tu navegador. Nada se sube, se registra ni se almacena, y por eso también funciona sin ninguna conexión de red.
- ¿Qué hace chmod 711?
- Da al propietario todo y al grupo y a todos los demás solo ejecución: rwx--x--x. En un directorio eso significa que pueden pasar por él hasta una ruta que ya conocen, pero no listar lo que hay dentro, que es lo que suele querer un directorio personal en una máquina compartida. En un archivo no sirve: un script de shell tiene que ser leído por su intérprete para ejecutarse, así que la ejecución sin lectura simplemente falla.
- ¿Cuál es la diferencia entre chmod 777 y chmod 1777?
- Un bit: el bit sticky, escrito como el 1 inicial, que convierte el último carácter de x en t. Los dos dan a cada cuenta lectura, escritura y ejecución; 1777 además permite borrar o renombrar una entrada solo a su propietario. Por eso esta herramienta señala 777 como casi nunca correcto y llama a 1777 el modo estándar de un directorio compartido como /tmp.
- ¿Por qué los archivos nuevos salen 644 y los directorios nuevos 755?
- Por la umask. Un programa que crea un archivo pide 666 y uno que crea un directorio pide 777, y la umask borra bits de eso antes incluso de que el archivo exista. El valor habitual, 022, retira la escritura al grupo y a otros, con lo que quedan 644 y 755. Ejecuta umask en un shell para ver el tuyo: 002 da 664 y 775, y 077 da 600 y 700.
- ¿Qué significa rwxr-xr-x?
- Es 755 escrito del todo. Léelo de tres en tres caracteres: rwx es el propietario, con lectura, escritura y ejecución; r-x es el grupo, con lectura y ejecución pero sin escritura; r-x otra vez son todos los demás. Un guion significa que ese permiso está apagado. Pega la cadena en el campo «Simbólico» de aquí y la casilla «Octal» mostrará 755.
Herramientas relacionadas
- Calculadora CIDR / de subredes
Desglosa una red, comprueba pertenencia y divídela.
- Explicador de expresiones cron
Lee una expresión cron y muestra cuándo se ejecuta de verdad.
- Cuál es mi IP
Tus IPv4 e IPv6 públicas, y cuál eligió el navegador.
- Conversor de marca de tiempo Unix
Convierte tiempo epoch a fecha, y al revés.