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.