Como é umask calculada no Linux?

13

Então, eu sei que umask pode restringir usuários privilegiados usando este formato umask ugo .

Eu entendo que o read = 4, write = 2 e exec = 1. No entanto, quando eu digito umask , ele retorna 4 dígitos que é 0022 ou 0073 . Eu não entendo como isso funciona agora, porque há um dígito extra. O que é esse dígito extra e o que significa 0022 ?

    
por Braiam 28.07.2013 / 00:52

1 resposta

16

Suponha que a máscara padrão de 0666. umask 0022 faria com que a nova máscara 0644 (0666-0022 = 0644) significasse que o grupo e outros tinham 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, significa ser simbólico.

0 é um dígito, como é 1 (para o bit pegajoso) ou 6 (para o 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 sim simbólico.

Veja en.wikipedia.org/wiki/Chmod#Symbolic_examples para simbólicos, bem como www.lifeaftercoffee.com/2007/03/20/especial-permission-modes -em-linux-e-unix / para um pouco em modos especiais.

Eu não sei se você desmascararia o primeiro bit com umask , mas tecnicamente você poderia. Isso explicaria porque você quase sempre vê isso como um zero.

Crédito para pinkfloydx33

O primeiro dígito da máscara lida com permissões especiais que não se encaixam tão bem no modelo proprietário / grupo / outro. Quando quatro dígitos são fornecidos para uma permissão de arquivo, o primeiro refere-se 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 o ID de usuário efetivo (uid) do proprietário - em outras palavras, independentemente de quem o executa, o programa é executado com o proprietário direitos. Isso é comumente visto em programas que fazem coisas que exigem privilégios de root, mas que devem ser executados por usuários normais: passwd é um desses exemplos.

O bit SGID, abreviação de set-group-ID, é muito semelhante, mas é executado com o grupo id (gid) do proprietário.

O bit pegajoso é um pouco mais complicado, se você quiser mais informações sobre isso, você pode ler a página de manual para sticky .

Esses bits também podem ser usados com diretórios, mas seus significados mudam.

Eu não acredito que você possa realmente definir o umask para permitir que você habilite qualquer um desses bits extras por padrão, mas você provavelmente nunca desejaria fazer isso de qualquer maneira.

Crédito para user470379

    
por 28.07.2013 / 00:52

Tags