UMASK(2)

BEZEICHNUNG
umask - Dateimodus-Erstellungsmaske setzen

ÜBERSICHT
#include <sys/types.h>
#include <sys/stat.h>

mode_t umask(mode_t mask);

BESCHREIBUNG
umask() setzt die Dateimodus-Erstellungsmaske (Umask) des aufrufenden Prozesses auf mask & 0777 (d.h. nur die Dateiberechtigungsbits von mask 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 mask 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.

KONFORM ZU
POSIX.1-2001, POSIX.1-2008, 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.Seit Linux 4.7 kann die Umask jedes Prozesses in dem Feld Umask von /proc/[PID]/status betrachtet werden. Die Abfrage dieses Feldes in /proc/self/status ermöglicht es einem Prozess, seine Umask zu erhalten, ohne sie dabei 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)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.16 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

Ü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 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 <debian-l10n-german@lists.debian.org>.