
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 umask
Befehl einfach als dieser Benutzer ausführen. Das Skript, das Sie in der Frage angegeben haben, ruft eine Liste von Benutzern aus der /etc/passwd
Datei ab und führt den umask
Befehl 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 umask
Befehl einfach in dieses Shell-Skript ein. Oder ignorieren Sie die Umask einfach vollständig und chmod
wechseln Sie in den gewünschten Modus des Verzeichnisses.