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


18

No AIX, posso verificar umasktodos os usuários com:

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

Mas como posso verificar a umaskconfiguração para todos os usuários no Linux? ( supara todo usuário e depois umaskcomando? Existem maneiras melhores para isso?)

UPDATE1:

Não é o melhor para sutodos os usuários, porque em alguns servidores RHEL o shell padrão para alguns usuários é parar / desligar ..:

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

Então, se eu supara o usuário ... então o servidor é desligado?

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


Já mencionei para o usuário do sistema evitar (US $ 3> 500), meios de verificação acima UID 500
Rahul Patil

novamente: Eu preciso verificar umask para todos os usuários, sem excluir usuários do sistema :)
Gasko peter

podemos verificar se há shell válido, o que você acha? , significa que se o shell é outro / bin / bash, podemos pular esse usuário. não é?
Rahul Patil

Respostas:


9

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 verificar o usuário do sistema, faça:

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

Resultado:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022

11
ok, obrigado, mas existem maneiras de verificar o umask sem "su" para o usuário?
Gasko peter

se você tiver definido manualmente, digamos que ~.bashrcvocê pode entrar nesse arquivo.
Rahul Patil

Pode ser definido em muitos lugares ... É por isso que grepping não é a melhor solução
Gasko peter

então temos que verificar em muitos lugar
Rahul Patil

ela deve ser melhor, se tiver definido umask no por usuário em um arquivo comum, por exemplo .bashrc
Rahul Patil

10

A umaské tipicamente um sistema amplo definida através do arquivo de configuração: /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

Este valor pode ser substituído, mas normalmente não é, quer através de /etc/bashrc, /etc/profilee / ou pelos usuários em sua $HOME/.bashrc(Supondo que eles estão usando Bash).

Se você grep"umask" nesses arquivos mencionados acima, também notará isso nas caixas 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é 002se o seu UID for maior que 199 e o 022caso (contas do sistema).


Para sistemas baseados no Ubuntu e (provavelmente) no Debian, você deve fazer isso ~/.profile, que tem o valor padrão comentado na parte superior do arquivo para você descomentar e modificar em uma base por usuário.
code_dredd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.