table of contents
other versions
- jessie 1.8-1
- stretch 1.22-1
- testing 2.11-1
- stretch-backports 2.11-1~bpo9+2
- unstable 2.12-1
other sections
CHMOD(2) | Linux-Programmierhandbuch | CHMOD(2) |
BEZEICHNUNG¶
chmod, fchmod, fchmodat - Zugriffsrechte einer Datei ändernÜBERSICHT¶
#include <sys/stat.h> int chmod(const char *pathname, mode_t mode);int fchmod(int fd, mode_t mode); #include <fcntl.h> /* Definition der AT_*-Konstanten */ #include <sys/stat.h> int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
fchmod():
_BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
fchmodat():
- Seit Glibc 2.10:
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
- Bis Glibc 2.10:
- _ATFILE_SOURCE
BESCHREIBUNG¶
Diese Systemaufrufe chmod() und fchmod() ändern die Rechte einer Datei. Sie unterscheiden sich nur in der Art, wie eine Datei angegeben wird:- *
- chmod() ändert die Berechtigungen einer angegebenen Datei, deren Pfadname in pathname übergeben wird. Falls sie ein symbolischer Link ist, wird dieser dereferenziert.
- *
- fchmod() ändert die Rechte der über den offenen Dateideskriptor fd angegebenen Datei.
- S_ISUID (04000)
- Set-User-ID (setzt die effektive Benutzer-ID des Prozesses bei execve(2))
- S_ISGID (02000)
- Set-Group-ID (setzt die effektive Gruppen-ID für execve(2); sperrt obligatorisch, wie in fcntl(2) beschrieben; bestimmt die Gruppe der Datei aus dem übergeordneten Verzeichnis, wie in chown(2) und mkdir(2) beschrieben
- S_ISVTX (01000)
- »Sticky Bit« (Schalter für eingeschränktes Löschen, wie in unlink(2) beschrieben)
- S_IRUSR (00400)
- Leserechte für Eigentümer
- S_IWUSR (00200)
- Schreibrechte für Eigentümer
- S_IXUSR (00100)
- Ausführungs-/Schreibrechte für Eigentümer (»suchen« trifft für Verzeichnisse zu und bedeutet, dass auf Einträge innerhalb des Verzeichnisses zugegriffen werden kann)
- S_IRGRP (00040)
- Leserechte für Gruppe
- S_IWGRP (00020)
- Schreibrechte für Gruppe
- S_IXGRP (00010)
- Ausführungs-/Schreibrechte für Gruppe
- S_IROTH (00004)
- Leserechte für andere
- S_IWOTH (00002)
- Schreibrechte für andere
- S_IXOTH (00001)
- Ausführungs-/Schreibrechte für andere
fchmodat()¶
Der Systemaufruf fchmodat() funktioniert genauso wie chmod(), außer den hier beschriebenen Unterschieden. Falls der in pathname übergebene Pfadname relativ ist wird er als relativ zu dem im Dateideskriptor dirfd referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses, wie es bei chmod() für einen relativen Pfadnamen erfolgt). Falls pathname relativ ist und dirfd den besonderen Wert AT_FDCWD annimmt wird pathname als relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie chmod()). Falls pathname absolut ist wird dirfd ignoriert. flags kann entweder 0 sein oder die folgenden Schalter enthalten:- AT_SYMLINK_NOFOLLOW
- Wenn der Pfadname ein symbolischer Link ist, wird er nicht dereferenziert: es wird stattdessen mit dem Link selbst gearbeitet. Dieser Schalter ist gegenwärtig nicht implementiert.
RÜCKGABEWERT¶
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.FEHLER¶
Abhängig vom Dateisystem können andere als die unten aufgeführten Fehler zurückgeliefert werden. Die allgemeineren Fehler bei chmod() sind im Folgenden aufgeführt:- EACCES
- Eine Komponente des Pfad-Präfix darf nicht durchsucht werden. (Siehe auch path_resolution(7).)
- EFAULT
- pathname zeigt aus dem für Sie zugänglichen Adressraum heraus.
- EIO
- Es ist ein E/A-Fehler (engl. I/O) aufgetreten.
- ELOOP
- Bei der Auflösung von pathname wurden zu viele symbolische Links gefunden.
- ENAMETOOLONG
- pathname ist zu lang.
- ENOENT
- Die Datei existiert nicht.
- ENOMEM
- Es war nicht genügend Kernel-Speicher verfügbar.
- ENOTDIR
- Eine Komponente des Pfad-Präfixes ist kein Verzeichnis.
- EPERM
- Die effektive UID passt nicht auf den Eigentümer der Datei und der Prozess ist nicht privilegiert (Linux: Er verfügt nicht über die Capability CAP_FOWNER).
- EROFS
- Die angegebene Datei befindet sich auf einem nur lesbaren (read-only) Dateisystem.
- EBADF
- Der Dateideskriptor fd ist ungültig.
- EIO
- Siehe oben.
- EPERM
- Siehe oben.
- EROFS
- Siehe oben.
- EBADF
- dirfd ist kein zulässiger Dateideskriptor.
- EINVAL
- Ungültiger Schalter in flags angegeben.
- ENOTDIR
- Pfadname ist relativ und dirfd ist ein Dateideskriptor, der sich auf eine Datei statt auf ein Verzeichnis bezieht.
- ENOTSUP
- flags spezifizierte AT_SYMLINK_NOFOLLOW, was nicht unterstützt wird.
VERSIONEN¶
fchmodat() wurde zu Linux in Kernel 2.6.16 hinzugefügt; Bibliotheksunterstützung wurde zu Glibc in Version 2.4 hinzugefügt.KONFORM ZU¶
chmod(), fchmod(): 4.4BSD, SVr4, POSIX.1-2001i, POSIX.1-2008. fchmodat(): POSIX.1-2008.ANMERKUNGEN¶
ABI-Unterschiede in C-Bibliothek/Kernel¶
Die Wrapper-Funktion fchmodat() der GNU-C-Bibliothek implementiert die in dieser Seite beschriebene POSIX-spezifizierte Schnittstelle. Diese Schnittstelle unterscheidet sich vom zugrunde liegenden Linux-Systemaufruf, welcher kein Schalter-Argument hat.Anmerkungen zur Glibc¶
Mit älteren Kernels, in denen fchmodat() nicht verfügbar ist, weicht die Glibc-Wrapper-Funktion auf chmod() aus. Wenn Pfadname ein relativer Pfadname ist, dann konstruiert die Glibc einen Pfadnamen, der auf jenem symbolischen Link in /proc/self/fd, der dem Argument dirfd entspricht.SIEHE AUCH¶
chown(2), execve(2), open(2), stat(2), path_resolution(7), symlink(7)KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.74 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 http://www.kernel.org/doc/man-pages/.ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Daniel Kobras <kobras@linux.de>, Helge Kreutzmann <debian@helgefjell.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> 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>.19. August 2014 | Linux |