Comment vérifier umask pour tous les utilisateurs sous Linux?

18

Sous AIX, je peux vérifier le umaskpour tous les utilisateurs avec:

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

Mais comment puis-je vérifier le umaskparamètre pour tous les utilisateurs sous Linux? ( suà chaque utilisateur puis umaskcommande? Y a-t-il de meilleures façons de le faire?)

MISE À JOUR1:

Ce n'est pas le meilleur pour sutous les utilisateurs, car sur certains serveurs RHEL, le shell par défaut pour quelques utilisateurs est stop / shutdown ..:

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

donc si je suà l'utilisateur ... alors le serveur s'arrête?

UPDATE2: J'ai créé une prime pour une réponse non basée sur su.

gasko peter
la source
J'ai déjà mentionné pour éviter l'utilisateur du système (3 $> 500), signifie vérifier au-dessus de l'UID 500
Rahul Patil
encore une fois: je dois vérifier umask pour tous les utilisateurs, sans exclure les utilisateurs du système :)
gasko peter
nous pouvons vérifier un shell valide, qu'en pensez-vous? , signifie que si shell est autre que / bin / bash, nous pouvons ignorer cet utilisateur. n'est-ce pas?
Rahul Patil

Réponses:

9

Vous pouvez vérifier en utilisant:

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

Pour éviter de vérifier l'utilisateur du système, procédez comme suit:

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

Production:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022
Rahul Patil
la source
1
ok, merci, mais existe-t-il des moyens de vérifier le umask sans "soumettre" à l'utilisateur?
gasko peter
si vous l'avez défini manuellement, par exemple, ~.bashrcvous pouvez grep dans ce fichier.
Rahul Patil
Cela pourrait être réglé à de nombreux endroits ... c'est pourquoi le grepping n'est pas la meilleure solution
gasko peter
alors nous devons vérifier dans de nombreux endroits
Rahul Patil
cela devrait être mieux, si vous avez défini umask par utilisateur dans un fichier commun, par exemple .bashrc
Rahul Patil
10

Le umaskest généralement défini à l'échelle du système via le fichier de configuration /etc/login.defs::

$ grep UMASK /etc/login.defs 
UMASK           077

Cette valeur peut être surchargée , mais est généralement pas soit par /etc/bashrc, /etc/profileet / ou par les utilisateurs dans leur $HOME/.bashrc( En supposant qu'ils utilisent Bash).

Si vous greputilisez "umask" dans les fichiers susmentionnés, vous le remarquerez également sur les boîtes 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

Creuser plus profond:

  • /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
    

Donc, au moins sur le système RHEL, umaskc'est soit 002si votre UID est supérieur à 199, et 022sinon (comptes système).

slm
la source
Pour Ubuntu et (probablement) les systèmes basés sur Debian, vous devez le faire dans ~/.profile, qui a la valeur par défaut commentée en haut du fichier pour vous permettre de décommenter et de modifier pour chaque utilisateur.
code_dredd