Linux / Befehl umask: Standard-Dateiberechtigungen steuern

umask setzt die Berechtigungsbits, die entfernt werden sollen, wenn die aktuelle Shell und ihre Kindprozesse neue Dateien oder Verzeichnisse erstellen. Es ändert nicht die Berechtigungen bereits existierender Dateien.

Die typischen Berechtigungen für Erstellungsvorgänge sind 666 für Dateien und 777 für Verzeichnisse. Wenn umask 022 angewendet wird, werden Dateien normalerweise als 644 und Verzeichnisse als 755 erstellt. Dies ist keine einfache numerische Subtraktion, sondern eine Methode, Maskenbits von den erlaubten Bits zu entfernen. Wenn ein Programm eine restriktivere Einstellung anfordert, wird das tatsächliche Ergebnis ebenfalls eingeschränkter sein.

Grundlegende Syntax

umask [-S] [mask]

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung für das aktuelle System mit help umask.

Beispiele

Aktuelle Maske prüfen

Zeigt die oktale Maske an, die auf die Shell angewendet wird.

umask

Symbolisch prüfen

Zeigt die derzeit erlaubten Berechtigungen in einer für Menschen lesbaren Form mit Zeichen an.

umask -S

Aktuelle Einschränkung der Berechtigungen für neue Dateien in der Shell

Passt die Einschränkung an, die auf neu erstellte Dateien und Verzeichnisse angewendet wird. Sie gilt nicht für bestehende Dateien.

umask 027
umask

Wie die Maske die Standardberechtigungen begrenzt

In einem frischen Arbeitsverzeichnis entfernt das Setzen von umask 027 in der Shell Schreibrechte für die Gruppe und Rechte anderer Benutzer vom maximalen Standardwert 666 für neue reguläre Dateien. Der maximale Standardwert für neue Verzeichnisse ist 777. Führen Sie dieses Beispiel aus, wenn die Datei und das Verzeichnis noch nicht existieren: touch berechnet die Berechtigungen für eine vorhandene Datei nicht neu.

umask 027
umask
touch demo.txt
mkdir demo-dir
stat -c '%a %n' demo.txt demo-dir

Beispielausgabe (wenn keine zusätzlichen Richtlinien wie ACLs im Dateisystem vorhanden sind):

0027
640 demo.txt
750 demo-dir

umask gilt für die aktuelle Shell und ihre Kindprozesse und ändert die Berechtigungen vorhandener Dateien nicht. Die tatsächlichen Berechtigungen werden auch durch den vom Programm angeforderten Modus und ACL-/Dateisystemrichtlinien beeinflusst, daher sollten wichtige Pfade mit stat überprüft werden.

Umask maskiert angeforderte Berechtigungsbits; es ist keine gewöhnliche dezimale Subtraktion. Das Ändern der Maske kann einer regulären Datei kein Ausführungsbit hinzufügen, wenn das erstellende Programm diesen nicht angefordert hat. Login-Shells, Dienstmanager und Container können ebenfalls unterschiedliche Masken setzen.

Hauptoptionen und Format

Optionen/Format Beschreibung
022 Ein häufiges Beispiel, das die Schreibrechte der Gruppe und anderer Benutzer einschränkt.
027 Beschränkt die Schreibrechte der Gruppe und alle Berechtigungen für andere Benutzer.
-S Zeigt die aktuellen Einstellungen in symbolischer Form an.
-p Zeigt sie in einer Form an, die in Bash erneut ausgeführt werden kann.

Vorsichtsmaßnahmen bei der Verwendung

umask ist ein Bash-Shell-Builtin-Befehl, daher ändert er selbst bei Ausführung in einer separaten Kind-Shell nicht die Einstellungen der übergeordneten Shell. Neu erstellte Dateien beginnen nicht unbedingt bei 666, und der vom Programm angeforderte Modus sowie ACL- und Dateisystemrichtlinien beeinflussen ebenfalls das Ergebnis. Um die Berechtigungen vorhandener Dateien zu ändern, verwenden Sie chmod.

Häufig gestellte Fragen

Wenn Sie umask 022 ausführen, werden vorhandene Dateien zu 644?

Nein. Danach gilt es nur für die Berechtigungsbeschränkungen neu erstellter Dateien und Verzeichnisse dieser Shell und ihrer Kindprozesse.

Offizielle Dokumentation

Das genaue Verhalten der Option und die Unterschiede zwischen den Implementierungen finden Sie in der offiziellen Dokumentation zu umask.