Auf Unix-ähnlichen Betriebssystemen gibt der umask-Befehl den Wert der Erstellungsmaske für den Dateimodus des Systems zurück oder setzt ihn.
Diese Seite behandelt die Linux-Version von umask.
Beschreibung
Unter Linux und anderen Unix-ähnlichen Betriebssystemen werden neue Dateien mit einem Standardsatz von Berechtigungen erstellt. Die Zugriffsrechte einer neuen Datei können auf bestimmte Weise eingeschränkt werden, indem eine „Maske“ für die Zugriffsrechte angewendet wird, die umask genannt wird. Der Befehl umask wird verwendet, um diese Maske zu setzen oder um ihren aktuellen Wert anzuzeigen.
Syntax
umask
Optionen
-S | Eine symbolische Darstellung einer Maske annehmen oder eine zurückgeben. |
Maske | Wenn eine gültige Maske angegeben ist, wird die umask auf diesen Wert gesetzt. Wenn keine Maske angegeben ist, wird der aktuelle Wert der umask zurückgegeben. |
Was sind Berechtigungen und wie funktionieren sie?
Wie Sie vielleicht wissen, ist jeder Datei auf Ihrem System ein Satz von Berechtigungen zugeordnet, die zum Schutz von Dateien verwendet werden: Die Berechtigungen einer Datei bestimmen, welche Benutzer auf diese Datei zugreifen dürfen und welche Art von Zugriff sie haben.
Es gibt drei allgemeine Klassen von Benutzern:
- Der Benutzer, dem die Datei gehört („Benutzer“).
- Benutzer, die zur definierten Besitzergruppe der Datei gehören („Gruppe“).
- Alle anderen („Andere“).
Für jede dieser Benutzerklassen gibt es wiederum drei Arten des Dateizugriffs:
- Die Möglichkeit, den Inhalt der Datei anzusehen („Lesen“).
- Die Fähigkeit, den Inhalt der Datei zu ändern („Schreiben“).
- Die Fähigkeit, den Inhalt der Datei als Programm auf dem System auszuführen („Ausführen“).
So gibt es für jede der drei Benutzerklassen drei Arten des Zugriffs.
Wie werden Berechtigungen dargestellt?
Es gibt zwei Möglichkeiten, die Berechtigungen einer Datei darzustellen: symbolisch (mit Symbolen wie „r“ für Lesen, „w“ für Schreiben und „x“ für Ausführen) oder mit einem oktalen Zahlenwert.
Wenn Sie zum Beispiel den Inhalt eines Verzeichnisses an der Kommandozeile mit dem ls-Befehl wie folgt auflisten:
ls -l
Sie sehen (neben anderen Informationen) die Dateiberechtigungsinformationen für jede Datei. Hier wird sie symbolisch dargestellt, was wie das folgende Beispiel aussieht:
-rwxr-xr--
Es gibt hier zehn Symbole. Der erste Bindestrich („-„) bedeutet, dass es sich um eine „normale“ Datei handelt, also nicht um ein Verzeichnis (oder ein Gerät oder eine andere spezielle Art von Datei). Die restlichen neun Symbole stehen für die Berechtigungen: rwxr-xr–. Diese neun Symbole sind eigentlich drei Gruppen von je drei Symbolen und repräsentieren die jeweiligen spezifischen Berechtigungen, von links nach rechts:
Symbole | Bedeutung |
---|---|
rwx | Der Eigentümer der Datei darf diese Datei lesen, schreiben oder als Prozess auf dem System ausführen. |
r-x | jeder in der Gruppe der Datei darf diese Datei lesen oder ausführen, aber nicht in sie schreiben. |
r– | jeder darf diese Datei lesen, aber nicht in sie schreiben oder ihren Inhalt als Prozess ausführen. |
Spezifizieren der Dateierstellungsmaske mit Hilfe von Symbolen
Die allgemeine symbolische Form einer Maske ist wie folgt:
...
Das Berechtigungssymbol ist eine beliebige Kombination aus r (lesen), w (schreiben) oder x (ausführen), wie oben beschrieben.
Benutzerklassensymbol kann eine oder mehrere der folgenden sein:
u | Benutzer (der Eigentümer der Datei). |
g | Gruppe (jedes Mitglied der definierten Gruppe der Datei). |
o | Andere (jeder andere). |
a | Alle (entspricht ugo). |
Der Berechtigungsoperator kann einer der folgenden sein:
+ | Die angegebenen Dateiberechtigungen können für die angegebenen Benutzerklassen aktiviert werden (nicht angegebene Berechtigungen bleiben in der Maske unverändert). |
– | verhindern, dass die angegebenen Dateiberechtigungen für die angegebenen Benutzerklassen aktiviert werden (Berechtigungen, die nicht angegeben sind, werden in der Maske unverändert übernommen). |
= | die angegebenen Dateiberechtigungen für die angegebenen Benutzerklassen zulassen (nicht angegebene Berechtigungen werden bei der Dateierstellung in der Maske verboten). |
Der folgende umask-Befehl:
umask u+w
stellt die Maske so ein, dass Dateien bei der Erstellung mit Berechtigungen versehen werden, die dem Benutzer (Dateibesitzer) Schreibrechte erlauben. Der Rest der Dateiberechtigungen würde sich nicht von der Vorgabe des Betriebssystems unterscheiden.
Mehrere Änderungen können angegeben werden, indem mehrere Sätze der symbolischen Notation durch Kommata (aber nicht durch Leerzeichen!) getrennt werden. Beispiel:
umask u-x,g=r,o+w
Dieser Befehl setzt die Maske so, dass beim Erstellen nachfolgender Dateien diese die folgenden Berechtigungen haben:
- Verhindern, dass die Ausführungsberechtigung für den Eigentümer (Benutzer) der Datei gesetzt wird, während der Rest der Eigentümerberechtigungen unverändert bleibt;
- Leseberechtigung für die Gruppe aktivieren, während Schreib- und Ausführungsberechtigung für die Gruppe verboten werden;
- Schreibberechtigung für andere aktivieren, während der Rest der anderen Berechtigungen unverändert bleibt.
Beachten Sie, dass, wenn Sie den Gleichheitsoperator („=“) verwenden, alle nicht angegebenen Berechtigungen ausdrücklich verboten werden. Zum Beispiel der Befehl
umask a=
Setzt die Dateierstellungsmaske so, dass neue Dateien für jeden unzugänglich sind.
Spezifizieren der Dateierstellungsmaske mit numerischer Darstellung
Die Dateierstellungsmaske kann auch numerisch dargestellt werden, wobei oktale Werte (die Ziffern von 0 bis 7) verwendet werden. Bei der numerischen Darstellung mit Oktalwerten stehen bestimmte Zahlen für bestimmte Berechtigungen, und diese Zahlen werden addiert oder subtrahiert, um den endgültigen, kombinierten Berechtigungswert darzustellen. Konkret stehen die Zahlen 1, 2 und 4 für die folgenden Berechtigungen:
Zahl | Berechtigung |
---|---|
4 | lesen |
2 | schreiben |
1 | Ausführen |
Diese Zahlen werden verwendet, weil jede Kombination dieser drei Zahlen eindeutig ist. Die folgende Tabelle veranschaulicht ihre eindeutigen Kombinationen:
Lesewert + | Schreibwert + | Ausführungswert = | kombinierter Wert: | Symbolisches Äquivalent: | |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | ||
0 | 0 | 1 | 1 | x | |
0 | 2 | 0 | 2 | w | |
0 | 2 | 1 | 3 | wx | |
4 | 0 | 0 | 4 | r | |
4 | 0 | 1 | 5 | rx | |
4 | 2 | 0 | 6 | rw | |
4 | 2 | 1 | 7 | rwx |
Für jede Benutzerklasse kann eine Ziffer ihre Berechtigungen repräsentieren; Anhand des obigen Beispiels könnten wir die symbolische Berechtigung rwxr-xr– durch die dreistellige Oktalzahl 754 darstellen. Die Reihenfolge der Ziffern ist immer gleich: Benutzer, Gruppe, Andere.
Die andere Berechtigungsziffer
In oktalen Darstellungen von Dateiberechtigungen gibt es eigentlich vier Ziffern. Die drei wichtigen Ziffern, die wir besprochen haben, sind die letzten drei Ziffern. Die erste Ziffer ist ein spezielles Dateiberechtigungskennzeichen und kann für diese Diskussion immer als Null betrachtet werden. Wenn wir also von hier an über die Dateiberechtigung 777 sprechen, kann sie auch als 0777 bezeichnet werden.
Wie funktioniert die umask eigentlich?
Die umask maskiert Berechtigungen, indem sie sie um einen bestimmten Wert einschränkt.
Im Wesentlichen wird jede Ziffer der umask vom Standardwert des Betriebssystems „subtrahiert“, um den von Ihnen definierten Standardwert zu erhalten. Es ist nicht wirklich eine Subtraktion; technisch gesehen wird die Maske negiert (ihr bitweises Kompliment wird genommen) und dieser Wert wird dann mit einer logischen UND-Operation auf die Standardberechtigungen angewendet. Das Ergebnis ist, dass die umask dem Betriebssystem mitteilt, welche Berechtigungsbits es „ausschalten“ soll, wenn es eine Datei erstellt.
In Linux ist der Standardwert für die Berechtigungen 666 für eine normale Datei und 777 für ein Verzeichnis. Beim Anlegen einer neuen Datei oder eines neuen Verzeichnisses nimmt der Kernel diesen Standardwert, „subtrahiert“ den umask-Wert und gibt den neuen Dateien die resultierenden Berechtigungen.
Diese Tabelle zeigt, wie sich jede Ziffer des umask-Wertes auf neue Datei- und Verzeichnisberechtigungen auswirkt:
Umaskierungsziffer | Standard-Dateiberechtigungen | Standard-Verzeichnisberechtigungen |
---|---|---|
0 | rw | rwx |
1 | rw | rw |
2 | r | rx | 3 | r | r |
4 | w | wx |
5 | w | w |
6 | x | x |
7 | (keine Berechtigung erlaubt) | (keine Berechtigung erlaubt) |
Wenn also unser umask-Wert 022 ist, dann haben alle neuen Dateien standardmäßig die Berechtigung 644 (666 – 022). Ebenso werden neue Verzeichnisse standardmäßig mit den Rechten 755 (777 – 022) angelegt.
Beispiele
Um den aktuellen umask-Wert Ihres Systems zu sehen, geben Sie den Befehl:
umask
der die umask Ihres Systems als vierstellige Oktalzahl ausgibt, zum Beispiel:
0002
Auch hier ist die erste Null eine spezielle Berechtigungsziffer und kann ignoriert werden; für unsere Zwecke ist 0002 gleichbedeutend mit 002.
Um dies als symbolische Darstellung zu sehen, verwenden Sie das -S-Flag:
umask -S
Das gibt symbolisch den gleichen Wert zurück, zum Beispiel:
u=rwx,g=rwx,o=rx
wobei u für Benutzer, g für Gruppe und o für andere steht. Das sagt uns, dass, wenn wir eine neue Datei anlegen, diese die Standardrechte 664 hat, also 666 (die Standardrechte für Dateien) maskiert durch 002 (unseren umask-Wert).
Testen wir dies, indem wir eine neue Datei mit dem touch-Befehl erstellen:
touch testfile
Und nun lassen wir uns eine Verzeichnisliste für diese Datei anzeigen:
ls -l testfile
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile
Wie erwartet, hat die neue Datei die Berechtigungen -rw-rw-r–, oder 0664: Der Besitzer und die Gruppe dürfen die Datei lesen oder schreiben, andere dürfen sie nur lesen.
Nun ändern wir die umask. Um eine umask von 022 zu setzen, verwenden Sie den Befehl:
umask 022
Das ist dasselbe wie die Ausführung von umask 0022; wenn Sie nur drei Ziffern angeben, wird die erste Ziffer als Null angenommen. Überprüfen wir, ob die Änderung stattgefunden hat:
umask
0022
Und nun legen wir eine neue Datei an:
touch testfile2
Und nun sehen wir uns deren Verzeichnisliste an, mit der ersten Datei, die wir erstellt haben, und verwenden den Sternchen-Platzhalter („*“), um alle Dateien anzuzeigen, deren Name mit „testfile“ beginnt:
ls -l testfile*
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile-rw-r--r-- 1 myusername myusername 0 Jan 7 14:39 testfile2
Wie Sie sehen, hat testfile2 die Berechtigungen 644.
Hier sind einige weitere Beispiel-Befehle für umask:
umask a+r
Setzt die Maske so, dass neue Dateien von allen Benutzern gelesen werden können; andere Berechtigungen bleiben vom Standard unverändert.
umask a-x
Setzt die Maske so, dass neue Dateien anfangs von keinem Benutzer ausgeführt werden können; andere Berechtigungen bleiben von der Vorgabe unverändert.
umask u=rw,go=
Setzt die Maske so, dass neue Dateien von dem Benutzer, dem die Datei gehört, gelesen und geschrieben werden können, aber nicht ausgeführt werden dürfen; Gruppenmitglieder und andere haben keine Berechtigungen für den Zugriff auf die Datei.
umask 777
Neue Dateien für jeden unzugänglich machen – niemand kann sie lesen, schreiben oder ausführen.
umask 000
Neue Dateien für absolut jeden zugänglich machen (lesen, schreiben und ausführen). Dies ist jedoch eine schlechte Idee. Tun Sie das nicht.
chmod – Ändern Sie die Berechtigungen von Dateien oder Verzeichnissen.
csh – Der C-Shell-Befehlsinterpreter.
ksh – Der Korn-Shell-Befehlsinterpreter.
sh – Der Bourne-Shell-Befehlsinterpreter.