mkdir(2)

BEZEICHNUNG
mkdir, mkdirat - ein Verzeichnis erzeugen

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

ÜBERSICHT
#include <sys/stat.h>

int mkdir(const char *Pfad, mode_t Modus);

#include <fcntl.h>           /* Definition der AT_*-Konstanten */
#include <sys/stat.h>

int mkdirat(int Verzdd, const char *Pfad, mode_t Modus);

    Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

mkdirat():
    Seit Glibc 2.10:
        _POSIX_C_SOURCE >= 200809L
    Vor Glibc 2.10:
        _ATFILE_SOURCE

BESCHREIBUNG
mkdir() versucht, ein Verzeichnis mit dem Namen Pfad zu erzeugen.

Das Argument Modus gibt den zu verwendenden Zugriffsmodus an (siehe inode(7)). Es wird wie üblich noch von der umask des Prozesses verändert: Ohne Standard-ACL ist der Zugriffsmodus des erzeugten Verzeichnisses (Modus & ~umask & 0777). Die Berücksichtigung weitere Modus-Bits des erzeugten Verzeichnisses hängen vom Betriebssystem ab. Für Linux siehe VERSIONEN weiter unten.

Das neu erzeugte Verzeichnis trägt die effektive Benutzerkennung des Prozesses. Wenn das das neue Verzeichnis enthaltende Verzeichnis set-group-id gesetzt hat oder wenn das Dateisystem mit der BSD-Gruppensemantik eingehängt wurde (mount -o bsdgroups oder synonym mount -o grpid), erbt das neue Verzeichnis die Gruppeneigentümerschaft des Elternprozesses. Anderenfalls wird die effektive Gruppenkennung des erzeugenden Prozesses Besitzer des Verzeichnisses.

Wenn das Elternverzeichnis set-group-id gesetzt hat, wird das neue Verzeichnis dieses ebenfalls gesetzt haben.

  mkdirat()
Der Systemaufruf mkdirat() funktioniert genauso wie mkdir(), außer den hier beschriebenen Unterschieden.

Falls Pfad relativ ist, wird er als relativ zu dem im Dateideskriptor Verzdd referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses, wie es bei mkdir() für einen relativen Pfadnamen erfolgt).

Falls Pfad relativ ist und Verzdd den besonderen Wert AT_FDCWD annimmt, wird Pfad als relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie mkdir()).

Falls Pfad absolut ist, wird Verzdd ignoriert.

Lesen Sie openat(2) für eine Beschreibung der Notwendigkeit von mkdirat().

RÜCKGABEWERT
mkdir() und mkdirat() geben bei Erfolg 0 zurück. Bei einem Fehler wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

EACCES
    Das Elternverzeichnis gibt dem Prozess keine Schreibberechtigung oder eines der Verzeichnisse in Pfad erlaubt keine Suche. (Siehe auch path_resolution(7).)

EBADF
    (mkdirat()) Der Pfad ist relativ, aber Verzdd ist weder AT_FDCWD noch ein gültiger Dateideskriptor.

EDQUOT
    Das Kontingent des Benutzers an Datenträgerblöcken oder Inodes auf dem Dateisystem ist ausgeschöpft.

EEXIST
    Pfad existiert bereits (jedoch nicht notwendigerweise als Verzeichnis). Das umfasst auch den Fall, dass Pfad ein symbolischer Link ist – egal ob er ins Leere weist oder nicht.

EFAULT
    Pfad zeigt aus dem für Sie zugänglichen Adressraum heraus.

EINVAL
    Die letzte Komponente (»basename«) von Pfad des neuen Verzeichnisses ist ungültig (beispielsweise enthält sie Zeichen, die im zugrunde liegenden Dateisystem nicht erlaubt sind).

ELOOP
    Bei der Auflösung von Pfad wurden zu viele symbolische Links gefunden.

EMLINK
    Die Anzahl von Links zum »Elternverzeichnis« würde LINK_MAX überschreiten.

ENAMETOOLONG
    Pfad war zu lang.

ENOENT
    Eine Verzeichniskomponente von Pfad existiert nicht oder ist ein toter symbolischer Link.

ENOMEM
    Es war nicht genügend Kernelspeicher verfügbar.

ENOSPC
    Das Gerät, welches Pfad enthält, hat keinen Platz für ein neues Verzeichnis.

ENOSPC
    Das neue Verzeichnis kann nicht erzeugt werden, da das Plattenkontingent des Benutzers erschöpft ist.

ENOTDIR
    Eine als Verzeichnis benutzte Komponente von Pfad ist kein Verzeichnis.

ENOTDIR
    (mkdirat()) Pfad ist relativ und Verzdd ist ein Dateideskriptor, der sich auf eine Datei bezieht, die kein Verzeichnis ist.

EPERM
    Das Gerät, welches Pfad enthält, unterstützt keine Erstellung von Verzeichnissen.

EROFS
    Pfad bezieht sich auf eine Datei auf einem schreibgeschützten Dateisystem.

EOVERFLOW
    UID- oder GID-Abbildungen (siehe user_namespaces(7)) wurden nicht konfiguriert.

VERSIONEN
Unter Linux, abgesehen von den Zugriffs-Bits, wird der Modus S_ISVTX ebenfalls anerkannt.

  Anmerkungen zur Glibc
Unter älteren Kernels, in denen mkdirat() nicht verfügbar ist, weicht die Glibc-Wrapper-Funktion auf mkdir() aus. Wenn Pfad relativ ist, dann konstruiert die Glibc einen Pfadnamen, der auf jenem symbolischen Link in /proc/self/fd basiert, der dem Argument Verzdd entspricht.

STANDARDS
POSIX.1-2024.

GESCHICHTE

mkdir()
    4.2BSD, SVr4, POSIX.1-1988.

mkdirat()
    Glibc 2.4, Linux 2.6.16, POSIX.1-2008.

ANMERKUNGEN
Es gibt noch viele Ungereimtheiten im NFS zugrunde liegenden Protokoll. Einige davon betreffen mkdir().

SIEHE AUCH
mkdir(1), chmod(2), chown(2), mknod(2), mount(2), rmdir(2), stat(2), umask(2), unlink(2), acl(5), path_resolution(7)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>, Ralf Baumert <bau@heineken.chemie.uni-dortmund.de>, Daniel Kobras <kobras@linux.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Helge Kreutzmann <debian@helgefjell.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.