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.