Provided by: manpages-de-dev_2.16-1_all bug

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():
           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 früher:
               _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 pathname übergeben  wird.  Falls  sie
         ein symbolischer Link ist, wird dieser dereferenziert.

       * fchmod() ändert den Modus der über den offenen Dateideskriptor fd angegebenen Datei.

       Der  neue  Dateimodus  wird 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 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 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 Pfadname 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.

       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  entsprechend
       gesetzt.

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

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

       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.

       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.

       Die gleichen Fehler, die bei chmod() auftreten, können  auch  bei  fchmodat()  auftreten.  Die  folgenden
       zusätzlichen Fehler können bei fchmodat() auftreten:

       EBADF  dirfd ist kein zulässiger Dateideskriptor.

       EINVAL Unzulässiger Schalter in flags angegeben.

       ENOTDIR
              Pfadname  ist relativ und dirfd ist ein Dateideskriptor, der sich auf eine Datei bezieht, die kein
              Verzeichnis ist.

       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

   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 dirfd 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.03  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 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>.

Linux                                          15. September 2017                                       CHMOD(2)