FreeToGenerate.com

Un bit setuid sin permiso de ejecución aparece como una S mayúscula: puesto, y sin hacer nada. Dos de cada tres modos con bit especial tienen uno así.

LecturaEscrituraEjecución
Propietario
Grupo
Otros

Ejecuta el archivo como su propietario y no como quien lo lanzó. En un directorio, en Linux no hace nada.

Ejecuta el archivo como su grupo. En un directorio, los archivos nuevos heredan ese grupo en vez del de quien los crea.

En un directorio, solo el dueño de un archivo puede borrarlo: eso es lo que hace seguro un /tmp compartido. En un archivo normal se ignora.

0755
rwxr-xr-x
chmod 0755 filename

Octal de tres o cuatro dígitos, o el campo de permisos de ls -l, con o sin su carácter de tipo inicial.

Lo que deja una umask

Una umask solo quita permisos, nunca los da. Que la misma umask deje un archivo en 644 y un directorio en 755 no es cosa de la umask: es que los programas piden 666 y 777 respectivamente, y la umask resta sobre cada uno.

Archivo nuevo
644
Directorio nuevo
755

También disponible en: English · Português · Français · العربية

Calculadora chmod

De permisos a octal y al revés, con la salida de ls, el comando listo para copiar y un aviso cuando enciendes un bit especial que no tiene sobre qué actuar.

¿Qué es una calculadora chmod?

En un sistema Unix cada archivo lleva nueve bits de permiso: lectura, escritura y ejecución, para el propietario, para el grupo y para todos los demás. El comando chmod los fija, y los toma como un número octal: los famosos 755 o 644. Una calculadora chmod convierte las casillas en las que estás pensando en el número que chmod quiere, y también al revés.

Por encima de esos nueve hay tres bits más. setuid y setgid hacen que un programa se ejecute como el propietario o el grupo del archivo en lugar de como quien lo lanzó; el bit sticky, en un directorio, impide que unos borren los archivos de otros, que es justamente por lo que un /tmp compartido es seguro. Esos tres forman el dígito inicial, así que 1777 es /tmp y 4755 es un binario setuid.

Esta calculadora va en las dos direcciones. Marca las casillas y lee el número, o pega un modo (755, 4755, rwxr-xr-x, o el campo entero de permisos copiado de ls -l con su d inicial incluida) y las casillas se colocan solas.

Cómo usarla

  1. Marca los permisos que quieras. Nueve casillas para los permisos normales y tres para los bits especiales. El número octal y la representación de ls se actualizan sobre la marcha.
  2. Copia el comando, no solo el número. La línea de comandos sale escrita y lista para pegar, así que no hay nada que volver a montar.
  3. O pega un modo que ya tengas. Octal o simbólico, los dos valen. Esta es la dirección que quieres cuando estás leyendo un listado de ls o un Dockerfile e intentando averiguar qué permite de verdad.

La letra mayúscula que significa que el bit no hace nada

Cada bit especial modifica un bit de ejecución. setuid modifica el del propietario, setgid el del grupo y el sticky el de los demás. Si enciendes un bit especial mientras su bit de ejecución está apagado, el bit queda puesto y no tiene sobre qué actuar, y ls te lo dice imprimiendo una letra mayúscula en vez de una minúscula. 4755 sale como rwsr-xr-x; 4644 sale como rwSr--r--, con S mayúscula.

No es un rincón raro. De los 3.584 modos posibles que llevan al menos un bit especial, 2.368 (el 66,1 por ciento) muestran al menos una mayúscula. Por bit es exactamente la mitad, porque un bit especial y el bit de ejecución que modifica se ponen de forma independiente. Ese dato no es una estimación: todo el espacio son solo 4.096 modos, así que se convirtieron y comprobaron todos en vez de tomar una muestra.

Casi todas las calculadoras chmod imprimen una s o una t minúscula pase lo que pase, lo que convierte en silencio un error en algo que parece correcto. Esta muestra la mayúscula y dice qué bit está inerte y por qué.

Una advertencia en el otro sentido, porque es lo que se suele contar mal: el significado del bit sticky depende de a qué esté puesto. En un directorio restringe el borrado, que es lo que quieres. En un archivo normal, todos los sistemas en uso hoy lo ignoran.

Límites honestos, y la cuestión de la umask

Una umask no es un permiso, es una máscara de permisos que hay que quitar, y solo puede restar. Por eso la misma umask 022 deja un archivo nuevo en 644 y un directorio nuevo en 755: la diferencia no está en la umask, está en que los programas piden 666 al crear un archivo y 777 al crear un directorio, y la umask les quita los mismos bits a cada uno. El panel de aquí enseña los dos resultados para que la asimetría se vea en vez de sorprender.

Lo que esta página no puede decirte es si un modo es seguro en tu sistema, porque eso depende de cosas que el número no contiene: quién es el dueño del archivo, qué grupos existen, si un directorio padre deja siquiera llegar hasta él y si SELinux o AppArmor tienen algo que opinar. Un 777 en un archivo dentro de un directorio que nadie puede atravesar es inalcanzable; un 644 en un archivo dentro de un directorio escribible por todos se puede sustituir igualmente.

Tampoco modela las ACL. Si un archivo tiene listas de control de acceso extendidas, ls imprime un signo más al final del campo de permisos y los nueve bits dejan de ser toda la historia. Esta calculadora lee los nueve bits y los tres especiales, y nada más, que es el alcance honesto de una calculadora de modos.

Por último, esto es semántica Unix. Los permisos de Windows son otro modelo completamente distinto, y un número producido aquí no significa nada allí.

¿Por qué es gratis?

Porque no cuesta nada mantenerla. La aritmética ocurre en tu navegador; no se sube nada, no hay servidor de por medio y no hay cuenta.

La representación se comprueba contra las propias reglas del sistema operativo y no contra otra calculadora: los 4.096 modos posibles se comparan con la salida de una implementación conforme a POSIX, y la prueba que lo hace está guardada junto al código.