Scroll to navigation

CHMOD(2) Linux-Programmierhandbuch CHMOD(2)

BEZEICHNUNG

chmod, fchmod - Zugriffsrechte einer Datei ändern

ÜBERSICHT

#include <sys/stat.h>
 
int chmod(const char *path, mode_t mode);
 
int fchmod(int fd, mode_t mode);
 

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

BESCHREIBUNG

Diese Systemaufrufe ä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 path übergeben wird. Falls sie ein symbolischer Link ist, wird dieser dereferenziert.
*
fchmod() ändert die Rechte der über den offenen Dateideskriptor fd angegebenen Datei.
Die neuen Dateirechte werden in der Bit-Maske mode festgelegt, welche durch ODER-Verknüpfung von null oder mehr der Folgenden erstellt wird:
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
Die effektive UID des aufrufenden Prozesses muss auf den Eigentümer der Datei passen oder der Prozess muss privilegiert sein (Linux: er muss über die Capability (Fähigkeit) CAP_FOWNER verfügen).
 
Falls der aufrufende Prozess nicht privilegiert ist (Linux: er verfügt nicht über die Capability CAP_FSETID) und die Gruppe der Datei nicht auf die effektive Gruppen-ID des Prozesses oder einer seiner ergänzenden Gruppen-IDs passt, dann wird das Bit S_ISGID ausgeschaltet werden, ohne dass ein Fehler zurückgegeben wird.
 
Als Sicherheitsmaßnahme können je nach Dateisystem die Set-User-ID- und Set-Group-ID-Ausführungsbits ausgeschaltet werden, wenn eine Datei geschrieben wird. (Unter Linux geschieht das, wenn der schreibende Prozess nicht über die CAP_FSETID-Capability verfügt.) Bei einigen Dateisystemen kann nur der Superuser das Sticky-Bit setzen, das möglicherweise eine besondere Bedeutung hat. Für das Sticky-Bit, das Set-User-ID-Bit und das Set-Group-ID-Bit für Verzeichnisse siehe stat(2).
 
Für NFS-Dateisysteme wirkt sich eine Beschränkung der Rechte sofort auf schon geöffnete Dateien aus, weil die Zugriffskontrolle auf dem Server erfolgt, der Client sich aber um die offenen Dateien kümmert. Die Erweiterung der Rechte kann für andere Clients verschoben werden, wenn für sie die Zwischenspeicherung der Attribute aktiviert wurde.

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 Fehler zurückgeliefert werden. Die allgemeineren Fehler für chmod() sind im Folgenden aufgeführt:
EACCES
Eine Komponente des Pfad-Präfix darf nicht durchsucht werden. (Siehe auch path_resolution(7).)
EFAULT
path zeigt aus Ihrem adressierbaren Adressraum heraus.
EIO
Es ist ein E/A-Fehler (engl. I/O) aufgetreten.
ELOOP
Bei der Auflösung von path wurden zu viele symbolische Verknüpfungen gefunden.
ENAMETOOLONG
path ist zu lang.
ENOENT
Die Datei existiert nicht.
ENOMEM
Zu wenig Kernelspeicher 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.
Die allgemeinen Fehler bei fchmod() sind im Folgenden aufgeführt:
EBADF
Der Dateideskriptor fd ist ungültig.
EIO
Siehe oben.
EPERM
Siehe oben.
EROFS
Siehe oben.

KONFORM ZU

4.4BSD, SVr4, POSIX.1-2001.

SIEHE AUCH

chown(2), execve(2), fchmodat(2), open(2), stat(2), path_resolution(7)

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux- man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, 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> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> 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>.
26. September 2010 Linux