Wie überprüfe ich umask für alle Benutzer unter Linux?

18

Unter AIX kann ich das umaskfür alle Benutzer überprüfen mit:

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

Aber wie kann ich die umaskEinstellung für alle Benutzer unter Linux überprüfen ? ( suAn jeden Benutzer und dann umaskBefehl? Gibt es dafür bessere Möglichkeiten?)

UPDATE1:

Dies ist nicht das Beste für sualle Benutzer, da auf einigen RHEL-Servern die Standard-Shell für einige Benutzer "Anhalten / Herunterfahren" ist.

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

also wenn ich suden user ... dann fährt der server herunter?

UPDATE2: Ich habe ein Kopfgeld für eine nicht auf Su basierende Antwort erstellt.

Gasko Peter
quelle
Ich habe bereits erwähnt, um Systembenutzer zu vermeiden ($ 3> 500), das heißt, überprüfen Sie über UID 500
Rahul Patil
nochmal: ich muss umask für alle benutzer überprüfen , nicht nur für systembenutzer :)
gasko peter
Wir können nach einer gültigen Shell suchen. Was denkst du? , bedeutet, wenn die Shell nicht / bin / bash ist, können wir diesen Benutzer überspringen. ist es nicht
Rahul Patil

Antworten:

9

Sie können Folgendes überprüfen:

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

So vermeiden Sie die Überprüfung des Systembenutzers:

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

Ausgabe:

ram       0022
shyam     0022
suraj     0022
vinayak   0022
javed     0022
Rahul Patil
quelle
1
ok, danke, aber gibt es irgendwelche möglichkeiten die umask zu überprüfen ohne den benutzer zu "verklagen"?
Gasko Peter
Wenn Sie manuell eingestellt haben, sagen Sie in, ~.bashrcdann können Sie in diese Datei springen.
Rahul Patil
Es könnte an vielen Stellen eingestellt werden ... Deshalb ist Greifen nicht die beste Lösung
Gasko Peter
dann müssen wir an vielen
Orten
Es sollte besser sein, wenn Sie umask pro Benutzer in einer gemeinsamen Datei eingestellt haben, zB .bashrc
Rahul Patil
10

Das umaskwird normalerweise systemweit über die Konfigurationsdatei eingestellt /etc/login.defs:

$ grep UMASK /etc/login.defs 
UMASK           077

Dieser Wert außer Kraft gesetzt werden kann , aber in der Regel ist auch nicht durch /etc/bashrc, /etc/profileund / oder von den Benutzern in ihrem $HOME/.bashrc(vorausgesetzt , sie verwenden Bash).

Wenn Sie grepin diesen oben genannten Dateien nach "umask" suchen, bemerken Sie dies auch bei RHEL-Boxen:

$ 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

Tiefer Graben:

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

Zumindest auf RHEL-Systemen umaskist dies entweder 002der Fall, wenn Ihre UID größer als 199 ist, oder 022andernfalls (Systemkonten).

slm
quelle
Für Ubuntu und (wahrscheinlich) Debian-basierte Systeme sollten Sie dies in ~/.profileausführen, wobei der Standardwert oben in der Datei kommentiert ist, damit Sie die Kommentare entfernen und auf Benutzerbasis ändern können.
Code_dredd