Decimal para octal: a base escondida atrás das permissões de arquivo
O que esta conversão faz
Escreve um número de base 10 na base 8, usando os dígitos de 0 a 7. O octal recuou para poucos nichos, mas um deles é muito movimentado: as permissões de arquivo do Unix, em que uma máscara como 755 ou 644 está em octal e é lida como três dígitos independentes, não como um número único.
Três bits por dígito, que é o ponto central
Um dígito octal cobre exatamente três dígitos binários, então um campo de permissão de nove bits se divide certinho em três grupos: dono, grupo e outros. É por isso que a notação pegou para permissões muito depois de sair de uso na aritmética. Cada grupo é formado por 4 para leitura, 2 para escrita e 1 para execução, então um 7 significa os três e um 5 significa leitura mais execução.
Tabela de conversão de decimal para octal
Os valores decimais por trás dos modos de arquivo e das máscaras pequenas que você encontra com mais frequência. As linhas de permissão valem ser reconhecidas de vista, já que o chmod trabalha em octal e os relatórios mostram a forma 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 onde o octal veio e onde ele sobreviveu
O octal caía bem em máquinas cujo tamanho de palavra era múltiplo de três bits, e minicomputadores antigos como o PDP-8 eram construídos assim. Quando bytes de 8 bits e palavras de 16 bits viraram padrão, o hexadecimal tomou o lugar, porque quatro divide oito e três não divide. As permissões de arquivo são o principal sobrevivente, mantidas vivas por décadas de hábito e pelo fato de três bits de permissão se dividirem perfeitamente por três.
Lendo um dígito de permissão
Trate cada dígito octal de um modo como uma soma pequena: 4 é leitura, 2 é escrita e 1 é execução, somados conforme o dígito que você vê. Assim, 755 é leitura, escrita e execução para o dono, depois leitura e execução para grupo e outros, e 644 é leitura e escrita para o dono e somente leitura para todo o resto.
Perguntas frequentes
Como converter um número decimal em octal à mão?
Divida por 8 e registre o resto, depois repita com o quociente até ele chegar a zero e leia os restos do último para o primeiro. Para 493: 493 ÷ 8 dá 61 com resto 5, 61 ÷ 8 dá 7 com resto 5, e 7 ÷ 8 dá 0 com resto 7, o que resulta em 755.
Por que as permissões de arquivo são escritas em octal?
Porque três bits de permissão por classe de usuário se encaixam exatamente em um dígito octal, então o modo inteiro é lido como três dígitos curtos em vez de nove bits. 755 quer dizer leitura, escrita e execução, depois leitura e execução, depois leitura e execução: um formato que você decodifica sem fazer conta.
O que o chmod 755 concede de fato?
O dono pode ler, escrever e executar; membros do grupo e todo o resto podem ler e executar, mas não modificar. Em decimal isso é 493. Diretórios usam os mesmos três bits com outro significado para a execução, e é por isso que um diretório normalmente precisa desse bit ligado para poder ser acessado.
O octal ainda é usado para mais alguma coisa?
De vez em quando. Algumas linguagens permitem literais octais com um zero à esquerda, e uns poucos formatos de arquivo e máscaras de rede usam octal. Fora esses casos o hexadecimal o substituiu, porque um byte se divide limpo em dois dígitos hexadecimais, enquanto três não divide oito.
A ferramenta lida com valores negativos e frações?
Sim, com os dois. Um número negativo mantém o sinal na frente dos dígitos octais, o que é a forma sinal-magnitude e não o complemento de dois. Frações convertem dígito a dígito e, se a expansão não terminar, o resultado é marcado como truncado em vez de arredondado sem aviso.