Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

       chmod, fchmod, fchmodat - Zugriffsrechte einer Datei ändern

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <sys/stat.h>

       int chmod(const char *Pfadname, mode_t Modus);
       int fchmod(int dd, mode_t Modus);

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

       int fchmodat(int Verzdd, const char *Pfadname, mode_t Modus, int Schalter);

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

       fchmod():
           Seit Glibc 2.24:
               _POSIX_C_SOURCE >= 199309L
           Glibc 2.19 bis 2.23
               _POSIX_C_SOURCE
           Glibc 2.16 bis 2.19:
               _BSD_SOURCE || _POSIX_C_SOURCE
           Glibc 2.12 bis 2.16:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500
                   || _POSIX_C_SOURCE >= 200809L
           Glibc 2.11 und älter:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

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

BESCHREIBUNG

       Die Systemaufrufe chmod() und fchmod() ändern die Modusbits einer Datei. (Die Dateimodusbits bestehen aus
       den Dateiberechtigungsbits sowie den Bits set-user-ID,  set-group-ID  und  sticky).  Diese  Systemaufrufe
       unterscheiden sich nur in der Art, wie eine Datei angegeben wird:

       •  chmod()  ändert  den Modus der angegebenen Datei, deren Pfadname in Pfadname übergeben wird. Falls sie
          ein symbolischer Link ist, wird dieser dereferenziert.

       •  fchmod() ändert den Modus der über den offenen Dateideskriptor dd angegebenen Datei.

       Der neue Dateimodus wird in der Bit-Maske Modus angegeben, welche durch ODER-Verknüpfung  von  null  oder
       mehr der Folgenden erstellt wird:

       S_ISUID  (04000)  Set-User-ID (setzt die effektive Benutzerkennung des Prozesses bei execve(2))

       S_ISGID  (02000)  Set-Group-ID  (setzt  die effektive Gruppenkennung für execve(2); sperrt obligatorisch,
                         wie in fcntl(2) beschrieben; bestimmt die Gruppe der Datei aus  dem  Elternverzeichnis,
                         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  Gruppenkennung  des  Prozesses  oder  einer
       seiner zusätzlichen Gruppenkennungen 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 inode(7).

       Für NFS-Dateisysteme wirkt sich eine Beschränkung der Rechte sofort auf schon geöffnete Dateien aus, weil
       die  Zugriffssteuerung  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.

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

       Falls  der  in  Pfadname  übergebene  Pfadname  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 chmod() für einen relativen Pfadnamen erfolgt).

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

       Falls Pfadname absolut ist, wird Verzdd ignoriert.

       Schalter kann entweder 0 sein oder den 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.

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

RÜCKGABEWERT

       Bei  Erfolg  wird  Null  zurückgegeben.  Bei einem Fehler wird -1 zurückgegeben und errno gesetzt, um den
       Fehler anzuzeigen.

FEHLER

       Je nach Dateisystem können andere als die unten aufgeführten Fehler zurückgegeben 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).)

       EBADF  (fchmod())  Der Dateideskriptor dd ist ungültig.

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

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

       EINVAL (fchmodat())  Unzulässiger Schalter in Schalter angegeben.

       EIO    Es ist ein E/A-Fehler (engl. I/O) aufgetreten.

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

       ENAMETOOLONG
              Pfadname ist zu lang.

       ENOENT Die Datei existiert nicht.

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

       ENOTDIR
              Eine Komponente des Pfad-Präfixes ist kein Verzeichnis.

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

       ENOTSUP
              (fchmodat())  Schalter spezifizierte AT_SYMLINK_NOFOLLOW, was nicht unterstützt wird.

       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).

       EPERM  Die Datei ist als unveränderlich oder nur-anhängbar markiert (siehe ioctl_iflags(2)).

       EROFS  Die angegebene Datei befindet sich auf einem nur lesbaren (read-only) Dateisystem.

VERSIONEN

       fchmodat()  wurde  zu  Linux  in  Version  2.6.16 hinzugefügt; Bibliotheksunterstützung wurde zu Glibc in
       Version 2.4 hinzugefügt.

STANDARDS

       chmod(), fchmod(): 4.4BSD, SVr4, POSIX.1-2001i, POSIX.1-2008.

       fchmodat(): POSIX.1-2008.

ANMERKUNGEN

   Unterschiede 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 Verzdd entspricht.

SIEHE AUCH

       chmod(1), chown(2), execve(2), open(2), stat(2), inode(7), path_resolution(7), symlink(7)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Daniel Kobras <kobras@linux.de>, Martin  Eberhard
       Schauer   <Martin.E.Schauer@gmx.de>,   Helge  Kreutzmann  <debian@helgefjell.de>  und  Mario  Blättermann
       <mario.blaettermann@gmail.com> 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⟩.