Come controllare umask per tutti gli utenti su Linux?


18

Sotto AIX posso controllare umaskper tutti gli utenti con:

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

Ma come posso controllare l' umaskimpostazione per tutti gli utenti su Linux? ( super ogni utente e poi umaskcomando? Esistono modi migliori per farlo?)

Update1:

Non è il migliore per sututti gli utenti, perché su alcuni server RHEL la shell predefinita per alcuni utenti è l'arresto / arresto ..:

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

quindi se io super l'utente ... allora il server si spegne?

UPDATE2: ho creato una taglia per una risposta non basata su.


Ho già menzionato per evitare l'utente del sistema ($ 3> 500), significa controllare sopra l'UID 500
— Rahul Patil

di nuovo: devo controllare umask per tutti gli utenti, esclusi gli utenti del sistema :)
— gasko peter,

possiamo verificare la presenza di shell valide, cosa ne pensi? , significa che se shell è diversa da / bin / bash, allora possiamo saltare quell'utente. non è vero?
— Rahul Patil,

Risposte:


9

Puoi controllare usando:

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

Per evitare di verificare l'utente del sistema, procedere come segue:

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

Produzione:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022

1
ok, grazie, ma ci sono modi per controllare l'umask senza "citare" l'utente?
— Gasko Peter,

se hai impostato manualmente, dì ~.bashrcche puoi accedere a questo file.
— Rahul Patil,

Potrebbe essere ambientato in molti posti ... ecco perché grepping non è la soluzione migliore
— gasko peter,

allora dobbiamo controllare in molti posti
— Rahul Patil l'

dovrebbe essere meglio, se hai impostato umask per utente nel file comune, ad esempio .bashrc
— Rahul Patil,

10

In umaskgenere viene impostato a livello di sistema tramite il file di configurazione /etc/login.defs::

$ grep UMASK /etc/login.defs 
UMASK           077

Questo valore può essere sovrascritto, ma in genere non è attraverso sia /etc/bashrc, /etc/profilee / o da parte degli utenti a loro $HOME/.bashrc(Supponendo che stanno usando Bash).

Se grepper "umask" in quei file sopra menzionati, noterai anche questo sulle scatole 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

Scavando più a fondo:

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

Quindi almeno sul sistema RHEL umaskè 002se il tuo UID è maggiore di 199, e 022altrimenti (account di sistema).


Per Ubuntu e (probabilmente) sistemi basati su Debian, dovresti farlo in ~/.profile, che ha il valore predefinito commentato nella parte superiore del file per decommentare e modificare in base all'utente.
— code_dredd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.