umask(2)

BEZEICHNUNG
umask - Dateimodus-Erstellungsmaske setzen

BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT
#include <sys/stat.h>

mode_t umask(mode_t Maske);

BESCHREIBUNG
umask() setzt die Dateimodus-Erstellungsmaske (Umask) des aufrufenden Prozesses auf Maske & 0777 (d.h. nur die Dateiberechtigungsbits von Maske werden verwendet) und liefert den vorherigen Wert der Maske zurück.

Die Umask wird für open(2), mkdir(2) und andere Systemaufrufe verwendet, die Dateien erstellen, um die Rechte auf neu erstellte Dateien oder Verzeichnisse zu verändern. Insbesondere werden die Rechte in der Umask von den mode-Argumenten für open(2) und mkdir(2) abgestellt.

Alternativ wird die Umask ignoriert, falls das Elternverzeichnis eine Standard-ACL hat (siehe acl(5)), die Standard-ACL wird vererbt, die Berechtigungsbits werden basierend auf der vererbten ACL gesetzt und die Berechtigungsbits, die im Argument mode fehlen, werden abgeschaltet. Beispielsweise ist die folgende Standard-ACL äquivalent zu einer Umask 022:

    u::rwx,g::r-x,o::r-x

Wird der Effekt dieser Standard-ACL mit dem Argument mode von 0666 (rw-rw-rw-) kombiniert, ist die resultierende Dateiberechtigung 0644 (rw-r--r--).

Die Konstanten, die für die Angabe von Maske verwendet werden sollen, werden in inode(7) beschrieben.

Der typische Vorgabewert für die Prozess-Umask ist S_IWGRP | S_IWOTH (oktal 022). Im normalen Fall, wenn das Argument mode bei open(2) als

    S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

(oktal 0666) bei der Erstellung einer neuen Datei angegeben wurde, werden die Rechte für die entstehendene Datei

    S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH

sein (da 0666 & ~022 = 0644; d.h. rw-r--r--).

RÜCKGABEWERT
Der Systemaufruf hat immer Erfolg und der vorherige Wert der Maske wird zurückgegeben.

STANDARDS
POSIX.1-2008.

GESCHICHTE
POSIX.1-2001, SVr4, 4.3BSD.

ANMERKUNGEN
Ein Kindprozess, der mit fork(2) erstellt wird, erbt die Umask des Elternprozesses. Die Umask bleibt bei execve(2) unverändert.

Es ist unmöglich, die Umask eines Prozesses mit umask() auszulesen, ohne sie dabei gleichzeitig zu verändern. Ein zweiter Aufruf von umask() wäre dann notwendig, um die Umask wieder herzustellen. Da diese beiden Schritte keine atomaren Operationen sind, gibt es in Multithreading-Programmen die Möglichkeit einer Race-Condition.

Seit Linux 4.7 kann die Umask jedes Prozesses in dem Feld Umask von /proc/PID/status betrachtet werden. Prüfung des Feldes in /proc/self/status erlaubt es einem Prozess, seine Umask abzufragen, ohne sie gleichzeitig zu ändern.

Die Umask-Einstellung beeinflusst auch die Berechtigungen der vom Prozess erstellten POSIX-IPC-Objekte (mq_open(3), sem_open(3), shm_open(3)), FIFOs (mkfifo(3)) und UNIX-Domain-Sockets (unix(7)). Die Umask beeinflusst nicht die Berechtigungen, die den vom Prozess (mittels msgget(2), semget(2) und shmget(2)) erzeugten System-V-IPC-Objekten zugewiesen wurden.

SIEHE AUCH
chmod(2), mkdir(2), open(2), stat(2), acl(5)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>, Helge Kreutzmann <debian@helgefjell.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer <toddy@debian.org> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.