Suponha que a máscara padrão 0666. umask
0022 faça a nova máscara 0644 (0666-0022 = 0644), o que significa que o grupo e outras pessoas têm permissões de leitura (sem gravação ou execução).
O dígito "extra" (o primeiro número = 0) especifica que não há modos especiais.
Se o modo começar com um dígito, ele será interpretado como octal, caso contrário, deve ser simbólico.
0 é um dígito, assim como 1 (para o bit adesivo) ou 6 (para SGID). Um comando como chmod
pode ser chamado por outros métodos, como chmod ug+rw mydir
onde você adicionaria as permissões de leitura e gravação ao usuário e ao grupo. Observe que o modo neste caso (ug + rw) não começa com um dígito; portanto, não seria interpretado como octal, mas simbólico.
Veja en.wikipedia.org/wiki/Chmod#Symbolic_examples para símbolos e também www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/ para um pouco de modos especiais.
Não sei se você desmascararia a primeira parte umask
, mas tecnicamente poderia. Isso explicaria por que você quase sempre o vê como zero.
Crédito para pinkfloydx33
O primeiro dígito da máscara lida com permissões especiais que não se encaixam tão perfeitamente no modelo proprietário / grupo / outro. Quando quatro dígitos são fornecidos para uma permissão de arquivo, o primeiro se refere a esses valores especiais:
4000 = SUID
2000 = SGID
1000 = sticky bit
O bit SUID, abreviação de set-user-ID, faz com que um programa executável seja executado com a identificação de usuário efetiva (uid) do proprietário - em outras palavras, independentemente de quem o executa, o programa é executado com os direitos do proprietário. Isso geralmente é visto em programas que fazem coisas que exigem privilégios de root, mas devem ser executados por usuários normais: passwd
é um exemplo.
O bit SGID, abreviação de set-group-ID, é muito semelhante, mas é executado com o ID do grupo efetivo (gid) do proprietário.
A parte complicada é um pouco mais complicada; se você quiser obter mais informações, leia a página de manual sticky
.
Esses bits também podem ser usados com diretórios, mas seus significados mudam.
Eu não acredito que você pode realmente definir o umask
para permitir que você habilite qualquer um desses bits extras por padrão, mas você provavelmente nunca iria querer fazer isso de qualquer maneira.
Crédito para usuário470379
man 2 umask
(a chamada de sistema correspondente) "apenas os bits de permissão de arquivomask
são usados". Nobash
, umask 1000 gera um erro: "número octal fora do intervalo". Então, por que o 0 extra? Eu acho que é apenas para mostrar que o número está em octal.