Referencia de permisos Unix · Gratis

Calculadora chmod

Convierte las casillas de lectura, escritura y ejecución en un modo octal, una cadena simbólica y un comando chmod, o pega un modo que ya tengas y ve, en palabras claras, exactamente a quién deja entrar.

Pura aritmética en este navegador · No se sube nada

Modo 755, simbólico rwxr-xr-x, en un archivo. chmod 755 script.sh. Sin avisos.

Matriz de permisos

Nueve casillas, tres dígitos

Cada clase tiene su propio dígito octal, y cada dígito es simplemente la suma de las casillas marcadas.

Permisos de lectura, escritura y ejecución para el propietario, el grupo y todos los demás usuarios
ClaseLecturar · 4Escrituraw · 2Ejecuciónx · 1Dígito
Propietariou · usuario7
Grupog · grupo5
Otroso · otros5
Lectura en un archivo

Abrir el archivo y leer sus bytes, o copiarlo a otro sitio.

Escritura en un archivo

Cambiar o truncar el contenido. Borrar el archivo depende, en cambio, de su directorio.

Ejecución en un archivo

Ejecutarlo como programa. Un script también necesita lectura, porque el intérprete tiene que abrirlo.

Tabla de dígitos0 = ---1 = --x2 = -w-3 = -wx4 = r--5 = r-x6 = rw-7 = rwx
El cuarto dígito

setuid, setgid y el sticky bit

Estos tres van delante del modo, en un dígito que casi nadie escribe nunca. Cada uno cambia en quién se convierte un proceso o lo que permite un directorio; lee la nota antes de activar uno.

En palabras claras

Qué permite 755 en este archivo

  • Propietario
    u · 7

    El propietario puede leer el archivo, modificar el archivo y ejecutarlo como programa.

    Una sola cuenta: el ID de usuario registrado en el inodo, y el primero de los dos nombres de una línea de ls -l. Root se salta estas comprobaciones casi por completo, así que un modo solo limita a los usuarios normales.

  • Grupo
    g · 5

    Los miembros del grupo pueden leer el archivo y ejecutarlo como programa.

    Todas las cuentas del grupo del archivo, que es el segundo nombre de una línea de ls -l. La pertenencia al grupo es lo que permite a un equipo compartir el acceso de escritura sin abrirlo a toda la máquina.

  • Otros
    o · 5

    Todos los demás pueden leer el archivo y ejecutarlo como programa.

    Todos los que no entran en las dos primeras clases: otros inicios de sesión y todas las cuentas de demonios, como www-data o nobody. Esta es la clase en la que acaban los atacantes.

Comprobaciones de seguridad

Lo que conviene saber sobre este modo

Nada aquí parece contraproducente

Ningún bit de escritura para todos, ningún bit especial que no pueda actuar. Eso no es lo mismo que correcto: el modo aún tiene que encajar con el uso de este archivo.

Modos probados

Empieza por el modo que suele necesitar cada caso

Árbol completo

Arreglar todos los niveles a la vez

Un único chmod recursivo da el mismo modo a directorios y documentos: o los archivos acaban siendo ejecutables, o en los directorios no se puede entrar. Divídelo en dos y cada tipo recibe lo que necesita.

Directorios → 755
find script.sh -type d -exec chmod 755 {} +
Archivos → 644
find script.sh -type f -exec chmod 644 {} +
umask

Con qué modo empezarán los archivos nuevos

Una umask resta. El kernel ofrece 666 a un archivo nuevo y 777 a un directorio nuevo, y luego borra todos los bits que indica la máscara.

Archivos nuevos
644
Directorios nuevos
755

Con la habitual 022, por eso un archivo que acabas de crear llega como 644 en lugar de 666: la máscara quitó los bits de escritura del grupo y de los demás antes de que llegaras a verlo. Nada de esto cambia tu shell; es aritmética sobre el valor que has escrito.

Cómo funciona

Tres clases, tres bits, un número.

Unix registra los permisos como nueve bits: lectura, escritura y ejecución, repetidos para el propietario, el grupo y todos los demás. Agrupa los bits de tres en tres y cada trío cabe en un solo dígito octal del 0 al 7, que es la única razón por la que chmod acepta números como 755 en lugar de una frase. El kernel comprueba las clases en orden (primero el propietario, luego el grupo, luego los demás) y se detiene en la primera que coincide contigo, así que un modo generoso con los demás no puede rescatar a un propietario al que se le ha denegado el acceso.

  1. 01

    Indica si es un archivo o un directorio

    Los mismos tres bits significan cosas distintas en cada caso. Cambia primero el interruptor y todas las explicaciones de la página lo seguirán: la ejecución deja de significar lanzar un programa y pasa a significar entrar.

  2. 02

    Marca las casillas o pega lo que ya tienes

    Activa lectura, escritura y ejecución para el propietario, el grupo y los demás. ¿Ya tienes un modo delante? Pega 0644 o los diez caracteres de un listado de ls -l en el campo inverso y la cuadrícula se rellena sola.

  3. 03

    Escribe la ruta y llévate el comando

    Indica el destino real y copia el comando octal, la forma de asignación para scripts o el par de comandos find que dan modos distintos a directorios y documentos en una sola pasada.

Pensada para arreglar servidores reales

Todas las formas de un modo, siempre sincronizadas.

Una cuadrícula, cuatro notaciones

La matriz de casillas, el octal de tres dígitos, el octal de cuatro dígitos, la cadena simbólica y la línea de ls -l son vistas de los mismos nueve bits, y todas se redibujan con cada pulsación.

Lee modos igual de bien que los escribe

Pega 700, 0755, rwxrwxr-x o drwxr-xr-x. La forma de listado de diez caracteres incluso ajusta el interruptor de archivo o directorio a partir de su letra inicial, y lo que no se puede interpretar lo dice en lugar de ignorarte en silencio.

La semántica de directorios, por escrito

La lectura lista los nombres, la escritura añade y elimina entradas, la ejecución deja pasar una búsqueda. Esas frases se generan a partir del modo que tienes, no se imprimen desde una tabla fija.

El cuarto dígito, sin leyendas

setuid, setgid y sticky tienen cada uno su propio control y su propia explicación, incluidos los casos que el kernel ignora por completo: setuid en un script de shell, sticky en un archivo normal.

Avisos donde de verdad se cometen los errores

Escritura para todos, un bit setuid en un archivo que nadie puede ejecutar, un script con ejecución pero sin lectura: cada caso se señala con su propio color, con el motivo en lugar de un sermón.

Comandos que puedes pegar sin editar

Octal, la forma de asignación u=rwx,g=rx,o=rx y los dos comandos find para un árbol mixto, con la ruta de destino que escribiste ya colocada. Todo se genera en tu navegador.

Preguntas sobre permisos

Dígitos octales, bits especiales, directorios y umask.

¿Qué significa realmente chmod 755?+

Cada dígito es una clase: primero el propietario, luego el grupo y luego los demás. Dentro de un dígito, la lectura vale 4, la escritura 2 y la ejecución 1, así que 7 es 4+2+1 (lectura, escritura, ejecución), 5 es 4+1 (lectura y ejecución) y 0 es nada. Por tanto, 755 permite al propietario hacerlo todo, mientras que el grupo y todos los demás pueden leer y ejecutar, pero no modificar. Es el modo habitual para un programa y para casi todos los directorios de un sistema.

¿Cuál es la diferencia entre 644 y 755?+

Solo el bit de ejecución. 644 da al propietario lectura y escritura, y a todos los demás lectura; 755 añade ejecución para las tres clases. Los archivos de datos llevan 644; un bit de ejecución en un PDF o en una foto no hace más que confundir. Los programas, los scripts de shell y todos los directorios llevan 755, porque en un directorio sin ejecución no se puede entrar, ni siquiera quien puede listarlo.

¿Por qué chmod 777 es un problema de seguridad y no una solución?+

Concede escritura a todas las cuentas de la máquina, incluidas las cuentas de servicio a las que un atacante llega primero. Un servidor web que se ejecuta como www-data y puede reescribir la aplicación que sirve convierte un pequeño fallo en la subida de archivos en ejecución arbitraria de código. Recurrir a 777 también significa que la causa real (normalmente el propietario o el grupo equivocados) nunca se encuentra, así que la exposición sigue ahí mucho después de que se haya olvidado el error original. Corrige la propiedad con chown y concede el modo más restringido que funcione.

¿Cuándo necesito un cuarto dígito?+

Solo cuando activas setuid (4000), setgid (2000) o el sticky bit (1000). Escribir 755 o 0755 hace lo mismo, porque un dígito inicial que falta se lee como cero. La sorpresa llega al volver a quitar esos bits: GNU chmod deja intactos a propósito el setuid y el setgid de un directorio salvo que los nombres, así que en Linux ni chmod 755 ni chmod 0755 quitan el setgid de un directorio; para eso hace falta chmod g-s, chmod =755 o el chmod 00755 de cinco dígitos. El chmod de BSD, incluido el de macOS, en cambio los quita con un modo normal de tres dígitos. En un archivo normal, todas las versiones los quitan.

¿Qué significa una S o una T mayúscula en una línea de ls -l?+

Significa que el bit especial está activado pero el bit de ejecución correspondiente no, así que el bit especial no puede actuar. rwSr--r-- es un archivo setuid que el propietario no puede ejecutar; drwxrwxrwT es un directorio sticky sin ejecución para los demás. Una s o una t minúscula significa que ambos bits están activados y que el comportamiento está en vigor. Una mayúscula suele indicar que el bit de ejecución se quitó después de activar el bit especial, o que se escribió un modo de cuatro dígitos sin la x correspondiente; en cualquier caso, el modo no hace lo que parece.

¿Por qué alguien puede borrar mi archivo si no tiene permiso de escritura sobre él?+

Porque borrar no es una operación sobre el archivo, sino sobre el directorio que contiene el nombre. Escritura más ejecución en el directorio basta para desvincular cualquier entrada de su interior, diga lo que diga el propio archivo. Ese es justo el agujero que cierra el sticky bit: en un directorio 1777 como /tmp, solo el propietario de una entrada, el propietario del directorio o root pueden eliminarla.

¿Qué hace el bit de ejecución en un directorio?+

Concede el recorrido: el derecho a resolver un nombre en su interior y llegar a cualquier cosa más profunda. Lectura y ejecución son independientes: lectura sin ejecución te deja listar los nombres pero no usarlos, así que ls funciona y abrir cualquiera de los resultados falla. Ejecución sin lectura es lo contrario, y es una técnica real: el modo 711 en un directorio personal permite que un servidor web llegue a public_html sin dejar que nadie liste qué más hay ahí. Cada directorio de una ruta necesita ejecución, o la búsqueda falla en ese nivel.

¿Qué relación hay entre umask y chmod?+

chmod fija un modo directamente; umask solo quita bits, y solo en el momento en que se crea algo. El kernel ofrece 666 para un archivo nuevo y 777 para un directorio nuevo, y luego borra todos los bits que indica la máscara; por eso la umask habitual de 022 produce archivos 644 y directorios 755, y por eso los archivos nuevos nunca son ejecutables. Es un ajuste por proceso, así que cambiarla en una shell afecta a esa shell y a sus procesos hijos, y a nada que ya exista.

Más herramientas especializadas, listas cuando las necesites.

Explora una colección cada vez más amplia para cálculos, documentos, escritura y el trabajo diario.

Ver todas las herramientas