Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

umask - Standard-Vergabe der Zugriffsrechte ausgeben oder ändern

&pagelevel(4)&pagelevel

(get or set the file mode creation mask)


Das in die POSIX-Shell sh eingebaute Kommando umask gibt die aktuell gültige Schutzbit-Maske aus oder ändert sie. Diese Schutzbit-Maske legt fest, welche Zugriffsrechte die Dateien und Dateiverzeichnisse erhalten, die Sie ab jetzt in der aktuellen Shell oder in einer ihrer Subshells neu anlegen.

Wenn Sie mit umask die Schutzbit-Maske ändern, gilt diese Änderung so lange, bis Sie mit umask einen neuen Wert vereinbaren oder die Shell beenden, in der Sie umask aufgerufen haben.

Der POSIX-Verwalter kann mit umask den Wert der Schutzbit-Maske in der Datei /etc/profile festlegen. Da /etc/profile von jeder Login-Shell ausgeführt wird, gelten die so bestimmten Zugriffsrechte für jeden am System angemeldeten Benutzer (siehe Beispiel 1).


Syntax


umask[ -S][ maske]

-S

Die Maske wird symbolisch in folgender Form ausgegeben:

u=<zugriffsrechte>,g=<zugriffsrechte>,o=<zugriffsrechte>

wobei u = user, g = group, o = others und zugriffsrechte = r, w, x

maske

eine dreistellige Oktalzahl für die Schutzbit-Maske. Diese Schutzbit-Maske legt fest, welche Zugriffsrechte die Dateien und Dateiverzeichnisse erhalten, die Sie ab jetzt in der aktuellen Shell oder in einer ihrer Subshells neu anlegen (siehe Aus der Schutzbit- Maske die Zugriffrechte bestimmen).

Da Sie mit umask von der Grundeinstellung nur Rechte wegnehmen können, ist es unabhängig von der Angabe für maske nicht möglich, an Dateien standardmäßig das Ausführrecht zu vergeben. Verwenden Sie dazu chmod.

maske nicht angegeben:
umask gibt die derzeit gültige Schutzbit-Maske aus. Die Ausgabe hat das Format 0nnn (0 steht für Oktaldarstellung und nnn steht für die aktuelle Schutzbit-Maske).

Aus der Schutzbit-Maske die Zugriffsrechte bestimmen

Beim Anlegen von Dateien und Dateiverzeichnissen werden in der Regel folgende Zugriffsrechte als Grundeinstellung vergeben (siehe open() [4]):

  • rw-rw-rw- an Dateien; das ist 110110110 in Binärdarstellung

  • rwxrwxrwx an Dateiverzeichnisse; das ist 111111111 in Binärdarstellung

Mit umask können Sie von dieser Grundeinstellung nur Rechte wegnehmen. Das bedeutet, es ist mit umask nicht möglich, an Dateien standarmäßig das Ausführrecht zu vergeben. Das entsprechende x-Bit können Sie nur mit dem Kommando chmod setzen.

Die Schutzbit-Maske ist eine dreistellige Oktalzahl, die Sie beim Aufruf von umask angeben. Die anschließend gültigen Zugriffsrechte ergeben sich wie folgt:

  1. Rechnen Sie die Schutzbit-Maske um in eine Binärzahl.

  2. Bilden Sie zu dieser Binärzahl das Komplement; d.h. ersetzen Sie jede Null durch eine Eins und jede Eins durch eine Null.

  3. Verknüpfen Sie dieses Komplement und den Binärwert der Grundeinstellung mit UND; d.h das Ergebnis hat nur an den Stellen eine Eins, an der beide Summanden eine Eins haben, an allen anderen Stellen steht eine Null.

Beispiel

Die Schutzbit-Maske 022 ändert die Zugriffsrechte wie folgt:

  • Dateien:
    Für Dateien gilt die Grund-Einstellung 110110110.

    1. Die Binärzahl zu 022 ist   000010010
    2. Das Komplement dazu ist    111101101
    3. UND-Verknüpfung:           111101101
                                  110110110
                                  ---------
                                  110100100
    

    Also haben alle neu angelegten Dateien die Zugriffsrechte rw-r--r--

  • Dateiverzeichnisse:
    Für Dateiverzeichnisse gilt die Grund-Einstellung 111111111.

    UND-Verknüpfung:           111101101
                               111111111
                               ---------
                               111101101
    

    Also haben alle neu angelegten Dateiverzeichnisse die Zugriffsrechte rwxr-xr-x

Datei

/etc/profile

Datei, die von jeder Login-Shell ausgeführt wird. Sie dient zur Einstellung einer Shell-Umgebung.
Der POSIX-Verwalter legt hier in der Regel einen Schutzmasken-Wert für Benutzer ohne Sonderrechte und einen für root fest.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos umask:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Die Datei /etc/profile enthält häufig die folgenden Zeilen:

if [ "$USER" != "admin" -a "$USER" != "root" ]
then
        umask 066
fi

Da jede Login-Shell die Datei /etc/profile ausführt, hat die Schutzbit-Maske für alle Benutzer außer root und admin den Wert 066.

Deshalb werden folgende Zugriffsrechte vergeben:

  • für neu angelegte Dateien: rw-------

  • für neu angelegte Dateiverzeichnisse: rwx--x--x

Beispiel 2

Schutzbit-Maske ändern und ausgeben:

$ umask 033

$ > neu

$ mkdir neudvz
$ ls -ld neu neudvz

-rw-r--r--   1 ANNA     other          0   Mar 22 09:49 neu

drwxr--r--   2 ANNA     other        520   Mar 22 16:40 neudvz
$ umask

0033

Die Ausgabe des Kommandos ls -ld ... zeigt, welche Zugriffrechte an neue Dateien und Dateiverzeichnisse vergeben werden, wenn die Schutzbit-Maske auf den Wert 033 gesetzt wird.

Siehe auch

chmod

chmod(), creat(), open(), umask() [4]