Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

       chmod, fchmod, fchmodat - Zugriffsrechte einer Datei ändern

Ü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 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 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

   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)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  5.13  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 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⟩.