Saltar al contenido
Favoritos

Calculadora de chmod: permisos de archivos en Linux

Actualizado:

Convierte los permisos de archivos en Linux entre una cuadrícula de casillas, el código octal (por ejemplo, 755) y la notación simbólica (por ejemplo, rwxr-xr-x). Obtén comandos chmod listos para usar, una vista previa de ls -l y advertencias de seguridad para archivos y directorios.

Convierte permisos de Linux entre casillas, código octal y notación simbólica

Campos de entrada
Propietario (u)
Grupo (g)
Otros (o: todos los demás)
Bits especiales
Si está activado, el resultado se actualizará automáticamente al cambiar cualquier valor.

Fórmula de chmod

Fórmula
\[ d = 4 \cdot r + 2 \cdot w + 1 \cdot x \] \[ \text{modo} = (4 \cdot s_{\text{uid}} + 2 \cdot s_{\text{gid}} + 1 \cdot s_{\text{sticky}})\,(d_{\text{propietario}})(d_{\text{grupo}})(d_{\text{otros}}) \]

Donde:

  • \(r\), \(w\), \(x\): los bits de lectura, escritura y ejecución, respectivamente; cada uno vale 1 si se concede el permiso y 0 si no;
  • \(d\): el dígito octal de una categoría (propietario, grupo u otros), calculado con los valores 4, 2 y 1;
  • \(s_{\text{uid}}\), \(s_{\text{gid}}\), \(s_{\text{sticky}}\): los bits especiales setuid, setgid y sticky (también valen 0 o 1).

A cada categoría de usuarios le corresponde un dígito octal: la lectura vale 4, la escritura 2 y la ejecución 1. La suma de los permisos concedidos da un número entre 0 y 7. El dígito inicial opcional representa los bits especiales con los mismos valores 4, 2 y 1; así, 4755 indica setuid además de los permisos 755 habituales.

Chmod: ejemplo de cálculo

Ejemplo: un script que el propietario puede modificar y ejecutar libremente, mientras que el grupo y los demás solo pueden leerlo y ejecutarlo. Es la configuración clásica 755 y también la selección predeterminada de la calculadora: propietario r+w+x, grupo r+x y otros r+x.

\[ d_{\text{propietario}} = 4 + 2 + 1 = 7 \]
\[ d_{\text{grupo}} = 4 + 0 + 1 = 5 \]
\[ d_{\text{otros}} = 4 + 0 + 1 = 5 \]
\[ \text{modo} = 755 \]

Resultado: modo octal 755, modo simbólico rwxr-xr-x y comando chmod 755 file. En la salida de ls -l, el archivo aparece como -rwxr-xr-x.

Cómo usar la calculadora

  1. Abre el menú Método de entrada y elige cómo quieres indicar los permisos: Casillas (cuadrícula de permisos), Código octal, Notación simbólica o Configuraciones habituales. Solo se mostrarán los campos correspondientes al método elegido.
  2. Si eliges Casillas, marca Lectura, Escritura y Ejecución para cada categoría —Propietario (u), Grupo (g) y Otros (o)— y, si procede, los bits especiales Setuid, Setgid y Sticky.
  3. Si eliges Código octal, escribe tres dígitos (por ejemplo, 755) o cuatro si incluyes el dígito inicial de los bits especiales (por ejemplo, 4755). Con Notación simbólica, introduce nueve caracteres, como rwxr-xr-x, o pega una cadena completa de ls -l, como -rwxr-xr-x: el carácter inicial que indica el tipo de archivo se elimina automáticamente. Con Configuraciones habituales, basta con seleccionar un conjunto de permisos predefinido.
  4. En Tipo de archivo, selecciona Archivo normal (-) o Directorio (d) para que la explicación y la vista previa de ls -l correspondan al tipo elegido.
  5. Consulta los resultados: el modo numérico (octal), el modo simbólico, los comandos chmod listos para copiar, una vista previa con el formato de ls -l, una explicación sencilla y advertencias de seguridad.

Qué son los permisos de archivos en Linux y cómo interpretarlos

Cada archivo y directorio de un sistema Linux tiene nueve bits de permisos, repartidos entre tres categorías: el propietario (u), que creó el archivo; el grupo (g) al que pertenece; y otros (o), es decir, el resto de usuarios del sistema. En cada categoría, tres bits indican si se permite leer (r), escribir (w) y ejecutar (x) el archivo. El comando chmod modifica estos bits, y la calculadora convierte cualquiera de sus representaciones en las demás.

La notación octal resume los permisos de cada categoría en un dígito mediante los valores 4, 2 y 1; de ahí los modos 644 y 755. La notación simbólica expresa esos mismos bits mediante nueve caracteres que se leen de izquierda a derecha: tres para el propietario, tres para el grupo y tres para los demás. Un guion indica que falta el permiso; por eso rw-r--r-- representa el modo 644, que permite leer el archivo, pero no ejecutarlo. Ambas formas describen exactamente los mismos bits: utiliza la que acepte la herramienta con la que estés trabajando.

El significado de cada bit depende del tipo de archivo. En un archivo normal, r permite ver su contenido, w permite modificarlo y x permite ejecutarlo como programa. En un directorio, r permite listar los nombres que contiene, w permite crear, renombrar o eliminar entradas en él, y x permite acceder a él con cd y abrir los archivos que contiene. Por eso un directorio necesita x para que se pueda acceder a su contenido y 700 es el modo habitual de los directorios privados, como ~/.ssh.

Hay otros tres bits especiales. Setuid (4) hace que un ejecutable se ejecute con los privilegios de su propietario; es el mecanismo que utiliza /usr/bin/passwd. Setgid (2) hace lo mismo con los privilegios del grupo y, en los directorios, hace que los archivos nuevos hereden el grupo del directorio. Sticky (1) restringe la eliminación de archivos en un directorio compartido con permiso de escritura: cada usuario solo puede borrar los suyos. Es lo que protege /tmp (1777). En la notación simbólica, estos bits aparecen como s/S en una posición de ejecución o como t/T en la última posición; la mayúscula indica que el bit de ejecución correspondiente está desactivado.

Modos de permisos habituales

Modo Notación simbólica Uso habitual
600 rw------- Archivos privados, como claves SSH
644 rw-r--r-- Archivos corrientes y contenido web
700 rwx------ Directorios privados, como ~/.ssh
755 rwxr-xr-x Programas, scripts y archivos servidos por la web
775 rwxrwxr-x Directorios compartidos por un grupo de confianza
1777 rwxrwxrwt Espacios temporales compartidos, como /tmp
4755 rwsr-xr-x Ejecutables setuid de root (úsalos con moderación)

Supuestos, limitaciones y consejos prácticos

  • 777 casi nunca es la solución. Dar permiso de escritura a todos los usuarios expone el archivo a cualquier cuenta del sistema. Antes de recurrir a 777, opta por 775 con un grupo bien elegido o por listas de control de acceso (ACL) mediante setfacl.
  • Nunca combines el permiso de escritura para todos con setuid o setgid. Modos como 4777 o 7777 permiten que cualquiera sustituya el archivo y que este siga ejecutándose con privilegios elevados: una vía clásica de escalada de privilegios.
  • Los demás no deberían tener más permisos que el propietario. Si el tercer dígito supera al primero, es muy probable que hayas escrito mal el modo; las advertencias de seguridad te avisarán.
  • 000 bloquea a todos, incluido el propietario. Solo root puede recuperar el acceso, así que utiliza 600 o 700 si lo que buscas es privacidad.
  • Ten cuidado con chmod -R. Un modo numérico aplicado recursivamente sustituye de una vez todos los bits de cada archivo y subdirectorio. Los directorios suelen necesitar x, pero los archivos de datos no. Aplica los modos según el tipo de archivo en lugar de asignar uno a todo el árbol.
  • Root no está sujeto a los bits de permisos. Los permisos restringen a los usuarios normales; no protegen frente al acceso con privilegios de root.
  • La calculadora convierte entre las representaciones conocidas de los permisos, incluidos los bits especiales, pero no puede tener en cuenta las ACL, SELinux ni otros controles de acceso obligatorios que también pueden afectar al acceso real.

Si trabajas con otras representaciones utilizadas en Linux, también pueden resultarte útiles el conversor de marcas de tiempo Unix, el conversor hexadecimal y la calculadora binaria para entender los sistemas numéricos en los que se basan.

Preguntas frecuentes

¿Cómo asigno distintos permisos a archivos y directorios de forma recursiva?

Utiliza find para aplicar un modo distinto a cada tipo: find /path -type d -exec chmod 755 {} + para los directorios y find /path -type f -exec chmod 644 {} + para los archivos. Con chmod -R 755, los archivos de datos reciben un permiso de ejecución que no necesitan; con -R 644, los directorios pierden el bit x y ya no se puede acceder a ellos. Separarlos por tipo evita ambos errores.

¿Cómo puedo ver los permisos actuales de un archivo en formato octal?

Ejecuta stat -c '%a' filename (o stat -f '%Lp' filename en macOS) para obtener directamente el modo en forma de dígitos, como 644. La salida detallada de ls -l solo muestra la notación simbólica, que tendrías que interpretar por tu cuenta. La salida octal es justo lo que espera el campo Código octal de la calculadora: puedes pegarla ahí y comprobar qué hace cada bit.

¿Por qué sigo recibiendo «Permiso denegado» después de usar chmod?

Comprueba tres cosas: los directorios de la ruta deben concederte el permiso x (ejecución) para que puedas llegar al archivo; un directorio con modo 644 impide acceder a todo su contenido aunque el archivo tenga modo 777. Tampoco puedes usar chmod sobre un archivo que no te pertenece. Por último, algunas reglas del sistema de archivos pueden prevalecer sobre los bits: opciones de montaje como noexec, las ACL, SELinux o AppArmor pueden denegar el acceso independientemente del modo.

¿Qué significa chmod a+r y en qué se diferencia de o+r?

a significa «todos»: aplica el cambio a la vez al propietario (u), al grupo (g) y a los demás (o), por lo que a+r concede permiso de lectura a todos. o+r solo afecta a la categoría «otros». En octal no existe ese atajo: un modo numérico siempre sustituye los nueve bits. Por eso, si quieres conservar los permisos actuales de algunas categorías, conviene ajustar los demás mediante la notación simbólica con + y −, en lugar de sustituir el modo numérico completo.

¿Por qué mis archivos nuevos tienen permisos 664 en lugar de 755? ¿Qué es umask?

umask es un ajuste de cada sesión de shell que elimina bits del modo solicitado por un programa al crear un archivo. Con la umask habitual 002, si un programa solicita 666 (rw-rw-rw-), el archivo recibe 664; si solicita 777 para un directorio, este recibe 775. Consulta tu umask con umask y cámbiala, por ejemplo, con umask 022. chmod no interviene en la creación: solo modifica los bits después.

¿Por qué setuid no funciona en mi script de shell?

La mayoría de los sistemas Linux ignoran deliberadamente el bit setuid en los scripts interpretados (de shell, Python y similares), porque quien se ejecuta realmente es el intérprete, no el script, y el intérprete se ejecuta con los privilegios de quien lo invoca. Setuid tiene efecto casi exclusivamente en binarios compilados como /usr/bin/passwd. Si necesitas realizar acciones con privilegios elevados desde un script, utiliza reglas de sudo en lugar de confiar en que chmod 4755 funcione con él.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *