Como descobrir onde defini “umask 077”?

2

Quando logado como root , tenho umask definido como 077 , o que causa problemas (como /etc/resolv.conf sendo ilegível para não-raiz e, portanto, DNS não funcionando.

Não sei onde defini o umask 077 . Não está definido em .bashrc ou em .profile ou em /etc/profile .

Alguma sugestão de onde 077 pode vir?

Estou usando o Debian Wheezy

    
por Martin Vegter 31.12.2013 / 17:01

2 respostas

3

De man bash , na seção INVOCATION :

When bash is invoked as an interactive login shell, or as a non-inter‐ active shell with the --login option, it first reads and executes com‐ mands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

Certifique-se de verificar todos os arquivos mencionados aqui.

No entanto, não vejo como umask é um "problema" aqui. O fato de você ter 0077 significa apenas que todos os arquivos criados durante o seu shell interativo estarão indisponíveis para o grupo e outros usuários. Em si, não há nada errado com isso, é muito seguro para o seu usuário root . Se você precisar, você sempre pode tornar um arquivo acessível por outros usuários, tudo que você precisa é um chmod , por exemplo:

chmod +r /etc/resolv.conf

Observe que umask não afeta os arquivos existentes. Por exemplo:

$ rm -f ls.out
$ umask 077; ls > ls.out; ls -l ls.out
-rw-------  1 jack  staff  341 Dec 31 19:20 ls.out
$ umask 022; ls > ls.out; ls -l ls.out
-rw-------  1 jack  staff  341 Dec 31 19:20 ls.out

Assim, é possível que em algum momento você tenha testado sua configuração de rede em seu shell, por exemplo executando ifup wlan0 e, devido ao seu umask , o arquivo /etc/resolv.conf ter sido criado muito restritivo. Desde então, mesmo que o arquivo seja truncado por um shell não interativo, as permissões permanecem as mesmas.

Não sei ao certo se os shells não interativos usam esse umask restritivo. Talvez talvez não. Portanto, vale a pena verificar os arquivos mencionados na seção INVOCATION de man bash . Se o snippet que colei não ajudar, leia toda a seção. Você também pode verificar essas correspondências:

grep -r umask.*77 /etc/

Finalmente, embora umask 0077 pareça legal e seguro, talvez seja demais. Quando você instala algo novo e joga com a configuração correta, é possível que você tenha problemas semelhantes novamente. Eu também tenho Debian / Wheezy e é 0022 no meu, que eu acho que é o padrão normal. Então, quando você encontrar onde isso está definido, provavelmente está ok para alterá-lo de volta para 0022 .

    
por 31.12.2013 / 17:10
1

Você pode encontrar uma descrição detalhada de umask aqui e aqui

Você pode verificar o valor de umask da sessão de login atual pelo comando umask . Isso seria aplicável apenas para a sessão atual. Se você quiser torná-lo permanente, você pode fazer uma entrada para .profile . Por padrão, é definido em /etc/login.defs . ou /etc/profile

    
por 31.12.2013 / 17:35

Tags