Definindo umask para raiz su

6

Na minha conta de usuário, defino o umask como 022 com meu .bashrc , mas quero que o root use umask de 077 não importa como eu me torne root (por exemplo, fazer login diretamente como root em um tty ou usando sudo ou su). Se eu logar em um tty como root, eu recebo 077 , então está tudo bem. Para sudo em /etc/sudoers , defini

Defaults umask = 0022
Defaults umask_override

e eu recebo 077 , então novamente tudo bem. Para su , em /root/.bashrc posso definir

umask 022

e recebo um umask de 077 , mas não estou convencido de que essa seja a maneira correta de fazer isso.

Como você define o umask para su root

Potencialmente relevante é que meu /etc/login.defs tem

UMASK           077
USERGROUPS_ENAB yes
    
por StrongBad 15.07.2013 / 10:42

2 respostas

3

Esta resposta é bash específica, outras shells têm características similares, mas desde que sua resposta mencionou .bashrc , presumo que você esteja usando o Bash.

O que você está encontrando é que um shell pode ser chamado como um shell interativo ou de login.

  • bash -l - login
  • bash -i - interativo

Se você olhar na página man do Bash na seção "INVOCATION", você notará os seguintes 2 comentários:

  • faça login

    A login shell is one whose first character of argument zero is a -, or one started with the --login option.

  • interativo

    An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option.
    PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.

Interativo & As shells de login lêem os arquivos de configuração na seguinte ordem. Ele faz isso primeiro:

  1. / etc / profile

Seguido por um deles (que já encontra primeiro) nesta ordem:

  1. ~ / .bash_profile
  2. ~ / .bash_login
  3. ~ / .profile

Shells interativos (que não são shell de login) lêem um arquivo de configuração adicional, ~/.bashrc . Observe que eles nunca leem o arquivo /etc/bashrc config diretamente. Eles leem o arquivo ~/.bashrc por causa desta sub-rotina:

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

Então, o que acontece com o umask

Para fazer com que os dois tipos de shells leiam o umask , você precisa incluí-lo em um dos arquivos mencionados acima para ler os dois tipos de invocação do shell, então eu colocaria em /root/.bash_profile .

    
por 15.07.2013 / 16:48
0

Você pode definir umask de root em /root/.profile e informar su para iniciar o shell como um shell de login.

su -
    
por 15.07.2013 / 14:50

Tags