Resposta curta:
Porque com um 5
você está removendo o read (4)
e executable (1)
bit, então você acaba com apenas write (2)
.
Explicação:
Com 555
você não está definindo o bit executável padrão.
It's wrong => (6 - 5 = 1)
Temos estes mods:
- 4 = ler
- 2 = Escreva
- 1 = executável
A única maneira de criar um 5
é de 4 + 1
, então 5
significa:
4 (Read) + 1 (Executable) = 5
Isso significa "remover" executáveis e ler mods se eles estiverem sendo definidos.
Em outras palavras, com umask 555
você está removendo o bit de leitura (4) e executável (1) do modo de arquivo padrão (6) que nos traz ao (2), porque em um 6 nós temos apenas um 4 e 2 para remover (não qualquer 1):
6 = 4 + 2
Você remove apenas o 4, então o arquivo termina com 222
.
Em binário
Pense nisso em binário:
1 -> 001
2 -> 010
3 -> 011
4 -> 100
5 -> 101
6 -> 110
7 -> 111
O modo padrão do arquivo é 666 (110 110 110) e nosso valor umask
é 555
(101 101 101):
Decimal title -> 421 421 421
666 in binary -> 110 110 110
- 555 in binary -> - 101 101 101
_____________
010 010 010
2 2 2
-w- -w- -w-
Veja? nós acabamos no -w-w-w-, ou 222
.