Liderando zero em umask 0022 [duplicata]

0

Como posso mudar o zero inicial em umask 0022? Pode ser mudado?

Pesquisei os métodos usuais para obter informações e meu sistema local foi de pouca ajuda.

$ man umask  
No manual entry for umask  

$ umask --help
bash: umask: --: invalid option
umask: usage: umask [-p] [-S] [mode]

Eu encontrei uma página man on-line de umask com o seguinte:

umask [-p] [-S] [mode]

mode ... File creation mask
-S ........ Print the mask in symbolic format
-p ........ Output in a form that can be reused as input

Com base nisso, tentei alguns comandos básicos umask :

$ umask
0022

$ umask -p
umask 0022

$ umask -S
u=rwx,g=rx,o=rx

Fiquei surpreso ao descobrir que não era possível executar umask com sudo

$ sudo umask  
[sudo] password :  
sudo: umask: command not found  

Alterei a umask normal da seguinte forma:

$ umask 021
$ umask
0021

$ umask 0022
$ umask
0022  

Por fim, acertei um erro ao tentar alterar o zero inicial

$ umask 1022
-sh: umask: 1022: octal number out of range  

Então, voltando à minha pergunta original, como alguém altera o zero inicial (0)? É para o super usuário (root)? Pode ser atualizado e, em caso afirmativo, para quê?

Eu analisei uma questão semelhante como-é-umask-calculada-in- linux e encontrado:

I don't know that you would unmask the first bit with umask, but technically you could ...

e

I don't believe you can actually set the umask to allow you to enable any of these extra bits by default

Então, essas afirmações incertas e contraditórias não respondem a essa pergunta.

    
por MikeD 24.03.2017 / 16:04

1 resposta

1

Em linguagens como C ou Perl, um zero à esquerda significa um número octal, e como os bits de permissão de arquivo são habitualmente representados em octal, o zero deve ser usado nessas linguagens para que o número não seja tomado como decimal.

Os utilitários da Shell sempre interpretam permissões numéricas como octal, portanto, o a zero não tem outro significado além de preencher ou fazer com que o número pareça uma constante octal no estilo C.

Somente os 3 dígitos octal mais baixos têm um significado em umask, então o zero extra em algo como 0022 parece um pouco redundante, a menos que se queira preencher todas as permissões numéricas com o mesmo comprimento e deixar o zero à esquerda signifique octal.

(POSIX um pouco confusamente diz que umask() usa apenas os bits de permissão, mas ao mesmo tempo, o significado dos outros bits é definido pela implementação.)

    
por 24.03.2017 / 16:23

Tags