Por que é umask e NÃO operação de máscara

3

Por que umask é uma máscara $ perms e NÃO $ e não apenas $ perms E $ mascara?

Em outras palavras, porque há um NOT lá dentro; por que não não foi implementado como um e máscara?

Como exemplo, 666 e 700, para gerar 600?

    
por Spacen Jasset 03.07.2011 / 02:05

2 respostas

5

A chave é que o umask ( "máscara do usuário" ) pretende impedir que os processos criem arquivos com bits de permissão eles não deveriam usar. Se você olhar dessa perspectiva, o conceito de umask pode fazer mais sentido; em particular, a umask comum de 022 impede que processos criem arquivos que são graváveis por grupo ou mundo, o que geralmente é o que você quer.

    
por 03.07.2011 / 02:31
3

O valor de entrada é octal, o que pode exigir que um 0 inicial seja analisado corretamente. Como a máscara do proprietário é quase sempre 0, a máscara pode ser digitada com três dígitos. Como uma máscara AND, seria necessário inserir 0755 ou 0750.

Definindo-a como uma operação AND NOT, torna-se mais seguro se os caracteres estiverem ausentes na máscara. Se umask fosse e AND operation umask 5 permitiria apenas acesso limitado ao mundo e umask 0 seria ainda pior. umasq 75 analisado como um valor decimal seria efetivamente umask 113 , o que não permitiria acesso de leitura.

EDIT: De outra perspectiva, a máscara é uma lista dos bits que você deseja mascarar. Portanto, você quer máscaras como 026 em vez de 0751 . A representação interna pode muito bem ser 07751 ou o que for apropriado para o ANDing. Caso contrário, a conversão é relativamente trivial e, no grande esquema das coisas, a máscara não é aplicada com frequência.

    
por 03.07.2011 / 06:06

Tags