Como verificar umask para todos os usuários no Linux?

16

No AIX, posso verificar o umask para todos os usuários com:

cut -d : -f 1 /etc/passwd | while read ONELINE; do lsuser -a umask "$ONELINE"; done

Mas como posso verificar a configuração umask para todos os usuários no Linux? ( su para cada usuário e, em seguida, umask comando? Há alguma maneira melhor para isso?)

UPDATE1:

Não é o melhor para su para todos os usuários, porque em alguns servidores RHEL o shell padrão para alguns usuários é interrompido / encerrado ..:

shutdown:x:6:0:shutdown;asdf;asdf;F:/sbin:/sbin/shutdown

então se eu su para o usuário ... então o servidor é desligado?

UPDATE2: criei uma recompensa por uma resposta não baseada em su.

    
por gasko peter 11.07.2013 / 15:54

2 respostas

7

Você pode verificar usando:

for user in $(awk -F: '{print $1}' /etc/passwd); 
do 
    printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done

Para evitar a verificação do usuário do sistema, faça o seguinte:

for user in $(awk -F: '( $3 >= 500 ){print $1}' /etc/passwd); 
do 
    printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done

OutPut:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022
    
por 11.07.2013 / 16:23
7

O umask é normalmente definido no sistema através do arquivo de configuração: /etc/login.defs :

$ grep UMASK /etc/login.defs 
UMASK           077

Esse valor pode ser substituído, mas normalmente não é por /etc/bashrc , /etc/profile e / ou pelos usuários em $HOME/.bashrc (supondo que estejam usando Bash).

Se você grep para "umask" nesses arquivos mencionados anteriormente, você também perceberá isso nas caixas do RHEL:

$ grep umask /etc/bashrc /etc/profile
/etc/bashrc:    # By default, we want umask to get set. This sets it for non-login shell.
/etc/bashrc:       umask 002
/etc/bashrc:       umask 022
/etc/profile:# By default, we want umask to get set. This sets it for login shell
/etc/profile:    umask 002
/etc/profile:    umask 022

Indo mais fundo:

  • /etc/bashrc

    # By default, we want umask to get set. This sets it for non-login shell.
    # Current threshold for system reserved uid/gids is 200
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "'id -gn'" = "'id -un'" ]; then
       umask 002
    else
       umask 022
    fi
    
  • /etc/profile

    # By default, we want umask to get set. This sets it for login shell
    # Current threshold for system reserved uid/gids is 200
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 199 ] && [ "'id -gn'" = "'id -un'" ]; then
        umask 002
    else
        umask 022
    fi
    

Portanto, pelo menos no sistema RHEL, o umask é 002 se seu UID for maior que 199 e 022 caso contrário (contas do sistema).

    
por 15.07.2013 / 08:54

Tags