Decimal a octal: la base que se esconde tras los permisos de archivo
Qué hace esta conversión
Escribe un número en base 10 usando los dígitos del 0 al 7. El octal se ha replegado a unos pocos nichos, pero uno de ellos está muy concurrido: los permisos de archivo de Unix, donde una máscara como 755 o 644 va en octal y se lee como tres dígitos independientes y no como una sola cifra.
Tres bits por dígito, que es justo el punto
Un dígito octal cubre exactamente 3 dígitos binarios, así que un campo de permisos de nueve bits se parte en tres grupos limpios: propietario, grupo y resto. Por eso la notación siguió pegada a los permisos mucho después de dejar de usarse para aritmética. Cada grupo se arma con 4 para lectura, 2 para escritura y 1 para ejecución, de modo que un 7 significa los tres y un 5 significa lectura más ejecución.
Tabla de conversión de decimal a octal
Los valores decimales que hay detrás de los modos de archivo y las máscaras pequeñas más frecuentes. Las filas de permisos conviene aprendérselas de vista, porque chmod acepta la forma octal y los informes muestran la decimal.
| Decimal | Octal |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 7 |
| 8 | 10 |
| 10 | 12 |
| 15 | 17 |
| 16 | 20 |
| 31 | 37 |
| 64 | 100 |
| 100 | 144 |
| 127 | 177 |
| 200 | 310 |
| 255 | 377 |
| 1000 | 1750 |
De dónde vino el octal y dónde sigue vivo
El octal encajaba de forma natural en máquinas cuyo tamaño de palabra era múltiplo de 3 bits, y los primeros miniordenadores como el PDP-8 se construyeron así. Cuando el byte de 8 bits y la palabra de 16 se volvieron estándar, el hexadecimal tomó el relevo porque cuatro divide a ocho y tres no. Los permisos de archivo son el gran superviviente, mantenidos por décadas de costumbre y porque 3 bits de permiso dividen perfectamente entre 3.
Leer un dígito de permiso
Trata cada dígito octal de un modo como una suma pequeña: 4 es lectura, 2 es escritura y 1 es ejecución, sumados según el dígito que veas. Así 755 es lectura, escritura y ejecución para el propietario, y lectura y ejecución para grupo y resto; 644 es lectura y escritura para el propietario y solo lectura para los demás.
Preguntas frecuentes
¿Cómo paso un número decimal a octal a mano?
Divide entre 8 y anota el resto, repite con el cociente hasta que llegue a cero y lee los restos del último al primero. Para 493: 493 ÷ 8 es 61 con resto 5, 61 ÷ 8 es 7 con resto 5, y 7 ÷ 8 es 0 con resto 7, lo que da 755.
¿Por qué los permisos de archivo se escriben en octal?
Porque 3 bits de permiso por clase de usuario caben exactos en 1 dígito octal, así que el modo entero se lee como tres dígitos cortos en vez de 9 bits. 755 significa lectura, escritura y ejecución, luego lectura y ejecución, luego lectura y ejecución: un formato que se descifra sin hacer ninguna operación.
¿Qué concede exactamente chmod 755?
El propietario puede leer, escribir y ejecutar; los miembros del grupo y el resto pueden leer y ejecutar, pero no modificar. En decimal eso es 493. Los directorios usan los mismos 3 bits con un significado distinto para la ejecución, y por eso un directorio normalmente necesita tenerla activada para poder entrar en él.
¿Se sigue usando el octal para algo más?
De vez en cuando. Algunos lenguajes permiten literales octales con un cero delante y unos pocos formatos de archivo y máscaras de red lo emplean. Fuera de esos casos el hexadecimal lo ha sustituido, porque un byte se parte en 2 dígitos hexadecimales y 3 no divide a 8.
¿Acepta valores negativos y fracciones?
Sí a los dos. Un número negativo conserva el signo delante de los dígitos octales, en forma de signo y magnitud y no de complemento a dos. Las fracciones se convierten dígito a dígito y, si el desarrollo no termina, el resultado se marca como truncado en lugar de redondearse sin avisar.