Wie finde ich den Umask-Wert für einen bestimmten Systembenutzer?

Wie finde ich den Umask-Wert für einen bestimmten Systembenutzer?

Ich möchte den Umask-Wert für einen bestimmten Systembenutzer herausfinden, der angewendet wird, wenn ein als dieser Benutzer ausgeführtes Skript ein neues Verzeichnis erstellt. Ich verwende sowohl Ubuntu 16.04- als auch 20.04-Systeme.

Die beste Antwort, die ich dazu finden kann, istdiese Frage. Ich verstehe kein Wort davon, aber ich habe das Skript ausprobiert

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

in der akzeptierten Antwort angegeben; es druckte das Wort „root“ und fror dann das System ein.

Wie finde ich den Umask-Wert für einen bestimmten Systembenutzer?

Antwort1

Um die Umask eines Benutzers zu einem bestimmten Zeitpunkt zu ermitteln, können Sie den umaskBefehl einfach als dieser Benutzer ausführen. Das Skript, das Sie in der Frage angegeben haben, ruft eine Liste von Benutzern aus der /etc/passwdDatei ab und führt den umaskBefehl dann nacheinander für jeden aus. Es hat jedoch einige Probleme, nicht zuletzt, dass es hängen bleibt, während es auf ein Passwort wartet, wenn es als Nicht-Root-Benutzer ausgeführt wird.

Ein Benutzer kann seine Umask jederzeit ändern (eigentlich muss ein Benutzer nicht einmalhabeneine Umask, die Umask ist prozessspezifisch), Sie sollten sich also nicht darauf verlassen, dass sie jedes Mal gleich ist. Wenn Sie wissen müssen, welche Umask ein Benutzer hat, wenn er ein Shell-Skript ausführt, fügen Sie den umaskBefehl einfach in dieses Shell-Skript ein. Oder ignorieren Sie die Umask einfach vollständig und chmodwechseln Sie in den gewünschten Modus des Verzeichnisses.

verwandte Informationen