Eu sei que:
- Um arquivo mod padrão é
666
umask
value será removido dos mods padrão.
Então, por que quando eu defino o "umask" para 555
ele, ele não define as permissões do arquivo recém-criado 111
? em vez disso, está definindo-os para222
Eu sei que:
666
umask
value será removido dos mods padrão.Então, por que quando eu defino o "umask" para 555
ele, ele não define as permissões do arquivo recém-criado 111
? em vez disso, está definindo-os para222
Resposta curta:
Porque com um
5
você está removendo o bitread (4)
eexecutable (1)
, então você acaba com apenaswrite (2)
.Explicação:
Com
555
você não está ativando o bit executável padrão.Temos esses mods:
A única maneira de criar um
5
é a partir de4 + 1
, então5
na verdade significa:Significa "remover" o executável e ler os mods se estiverem sendo configurados.
Em outras palavras,
umask 555
você está removendo o bit lido ( 4 ) e executável ( 1 ) do modo de arquivo padrão ( 6 ) o que nos leva ao ( 2 ), porque em um 6 temos apenas um 4 e 2 para remover (não qualquer 1):Sua remoção afeta apenas o 4, então o arquivo acaba com
222
.Em binário
Pense nisso em binário:
O modo padrão do arquivo é 666 (110 110 110) e nosso
umask
valor é555
(101 101 101):Ver? acabamos no -www-, ou
222
.O valor umask resultante é mask & 0777 ( bitwise e )
Quando a máscara é 0555
Então 0555 e 0777 resultam em 0222
A origem da diferença entre
touch file
emkdir dir
:Definição
Grosso modo, em geral, os bits ativados de uma máscara desligam (se ainda não estiverem desligados) os bits do que ela está mascarando.
Mais precisamente, neste caso particular, o modo resultante de um arquivo ou pasta recém-criado segue a seguinte operação bit a bit:
onde
result
é o modo resultante,mode
é o modo usual (666 para arquivos e 777 para pastas) e!mask
é a negação bit a bit demask
, a máscara definida.Exemplos
Mascarando a permissão de gravação (2) à esquerda e as permissões de leitura (4) e execução (1) à direita.
Notas
Observe no último exemplo que o mascaramento não coincide com a subtração (6-5=1 em ambas as notações, decimal e binária).