Provided by: manpages-de-dev_1.4-1_all bug

BEZEICHNUNG

       chown, fchown, lchown - Besitzverhältnisse einer Datei ändern

ÜBERSICHT

       #include <unistd.h>

       int chown(const char *path, uid_t owner, gid_t group);
       int fchown(int fd, uid_t owner, gid_t group);
       int lchown(const char *path, uid_t owner, gid_t group);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       fchown(), lchown():
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

BESCHREIBUNG

       Diese  Systemaufrufe  ändern  den Eigentümer und die Gruppe einer Datei. Sie unterscheiden
       sich nur in der Angabe der Datei:

       * chown() ändert die Besitzverhältnisse der von path  angegebenen  Datei.  Falls  das  ein
         symbolischer Link ist, wird er dereferenziert.

       * fchown()  ändert  die Besitzverhältnisse der Datei, die über den offenen Dateideskriptor
         fd festgelegt wird.

       * lchown() ist wie chown(), dereferenziert aber keine symbolischen Links.

       Nur ein privilegierter Prozess (Linux: verfügt über  die  CAP_CHOWN-Capability)  kann  den
       Eigentümer  einer  Datei  ändern. Der Eigentümer einer Datei kann die Gruppenzugehörigkeit
       der Datei in jede Gruppe ändern,  der  er  selber  angehört.  Ein  privilegierter  Prozess
       (Linux: mit CAP_SHOWN) kann die Gruppenzugehörigkeit beliebig ändern.

       Falls owner oder group als -1 übergeben werden, dann wird diese ID nicht geändert.

       Werden   der  Eigentümer  oder  die  Gruppe  einer  ausführbaren  Datei  von  einem  nicht
       privilegierten Nutzer geändert, werden die Modus-Bits S_ISUID und S_ISGID gelöscht.  POSIX
       legt nicht fest, ob dies auch dann geschehen sollte, wenn Root das chown() durchführt. Das
       Verhalten von Linux ist in diesem Falle abhängig von der Kernel-Version. Falls  die  Datei
       für  die  Gruppe  nicht  ausführbar  ist (d.h. eine, für die das S_IXGRP-Bit nicht gesetzt
       ist), zeigt das S_ISGID-Bit verbindliche Sperren (mandatory locks) für die  Datei  an  und
       wird nicht durch ein chown() gelöscht.

RÜCKGABEWERT

       Bei  Erfolg  wird  Null  zurückgegeben.  Bei  einem Fehler wird -1 zurückgegeben und errno
       entsprechend gesetzt.

FEHLER

       Die häufigsten Fehler für chown() sind im Folgenden aufgeführt. Je nach Dateisystem können
       andere Fehler zurückgegeben werden.

       EACCES Eine   Komponente  des  Pfad-Präfix  darf  nicht  durchsucht  werden.  (Siehe  auch
              path_resolution(7).)

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

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

       ENAMETOOLONG
              path 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  Der aufrufende Prozess hatte nicht die  benötigten  Rechte  (siehe  oben),  um  den
              Eigentümer und/oder die Gruppe zu ändern.

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

       Die allgemeinen Fehler von fchown() sind im Folgenden aufgeführt:

       EBADF  Der Dateideskriptor ist ungültig.

       EIO    Bei  der  Bearbeitung  des  Inodes trat ein system-/hardwarenaher E/A-Fehler (engl.
              I/O) auf.

       ENOENT Siehe oben.

       EPERM  Siehe oben.

       EROFS  Siehe oben.

KONFORM ZU

       4.4BSD, SVr4, POSIX.1-2001.

       Die Version aus 4.4BSD kann nur vom Superuser verwendet  werden  (d.h.,  normale  Benutzer
       können keine Dateien weggeben).

ANMERKUNGEN

       Die  ursprünglichen  Linux-Systemaufrufe  chown(), fchown() und lchown() unterstützten nur
       16-Bit-Benutzer- und Gruppen-IDs. Anschließend fügte Linux 2.4 chown32(),  fchown32()  und
       lchown32()  zur  Unterstützung von 32-Bit-IDs hinzu. Die Glibc-Wrapper-Funktionen chown(),
       fchown() und lchown() gehen transparent mit den Variationen zwischen den  Kernel-Versionen
       um.

       Wenn  eine  neue  Datei  erzeugt wird (zum Beispiel durch open(2) oder mkdir(2)), wird der
       Eigentümer der gleiche wie die  Dateisystem-Benutzer-ID  des  erzeugenden  Prozesses.  Die
       Gruppe  der  Datei  hängt  von  einer  Reihe  von  Faktoren ab, einschließlich der Art des
       Dateisystems, den beim Einhängen des Dateisystems verwendeten Optionen  und  der  (Nicht-)
       Aktivierung  des  Set-Group-ID-Berechtigungsbits  für das übergeordnete Verzeichnis. Falls
       das Dateisystem die Optionen  -o grpid (oder synonym -o bsdgroups)  und  -o  0grpid  (oder
       synonym -o sysvgroups) von mount(8) unterstützt, dann sind die Vorschriften wie folgt:

       * Falls das Dateisystem mit -o grpid eingehängt wurde, wird die Gruppe der neuen Datei vom
         übergeordneten Verzeichnis übernommen.

       * Falls das Dateisystem mit -o nogrpid eingehängt wurde und das Set-Group-ID-Bit wurde für
         das  übergeordnete  Verzeichnis  deaktiviert,  wird die Gruppe einer neuen Datei auf die
         Dateisystem-GID des Prozesses gesetzt.

       * Falls das Dateisystem mit -o nogrpid eingehängt wurde und das Set-Group-ID-Bit wurde für
         das  übergeordnete  Verzeichnis  aktiviert,  wird  die  Gruppe  einer  neuen  Datei  vom
         übergeordneten Verzeichnis übernommen.

       Seit Linux 2.6.25 werden die Einhängeoptionen -o grpid und -o nogrpid von ext2, ext3, ext4
       und  XFS  unterstützt.  Dateisysteme,  die  diese  Optionen nicht unterstützen, folgen den
       -o nogrpid-Regeln.

       Die Semantik von chown() wird auf NFS-Dateisystemen mit  aktiviertem  UID-Mapping  bewusst
       verletzt.  Außerdem  wird bei allen Systemaufrufen, die auf den Dateiinhalt zugreifen, die
       Semantik verletzt, da chown() einen sofortigen Entzug des Zugriffs bei bereits  geöffneten
       Dateien  bewirken  kann.  Zwischenspeicherung  (Caching) seitens des Clients kann zu einer
       Verzögerung zwischen dem Zeitpunkt der Änderung der Besitzverhältnisse, um einem  Benutzer
       Zugriff  zu  ermöglichen,  und  dem  Zeitpunkt,  zu dem er auf anderen Clients tatsächlich
       zugreifen kann, führen.

       In Linux-Versionen vor 2.1.81 (außer 2.1.46) folgte chown() nicht symbolischen Links. Seit
       Linux  2.1.81  folgt  chown()  symbolischen  Links  und  es  gibt einen neuen Systemaufruf
       lchown(), der symbolischen Links nicht folgt. Ab Linux 2.1.86 hat dieser neue Aufruf  (der
       die  gleiche  Semantik  wie das alte chown() hat) die gleiche Systemaufruf-Nummer (syscall
       number) und chown() erhielt die neu eingeführte Nummer.

BEISPIEL

       Das folgende Programm ändert den Eigentümer der Datei  im  zweiten  Befehlszeilen-Argument
       auf den Wert, der als erstes Befehlszeilen-Argument angegeben wird. Der neue Besitzer kann
       entweder als numerische Benutzer-ID oder als Benutzername (die mittels   getpwnam(3) durch
       einen Suchlauf in der System-Passwortdatei in eine Benutzer-ID umgewandelt wird) angegeben
       werden.

       #include <pwd.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       int
       main(int argc, char *argv[])
       {
           uid_t uid;
           struct passwd *pwd;
           char *endptr;

           if (argc != 3 || argv[1][0] == '\0') {
               fprintf(stderr, "%s <Eigentümer> <Datei>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           uid = strtol(argv[1], &endptr, 10); /* eine numerische Zeichenkette
                                                  erlauben */

           if (*endptr != '\0') {         /* String war nicht rein numerisch */
               pwd = getpwnam(argv[1]);   /* versuchen, UID für den Benutzernamen
                                             zu bestimmen */
               if (pwd == NULL) {
                   perror("getpwnam");
                   exit(EXIT_FAILURE);
               }

               uid = pwd->pw_uid;
           }

           if (chown(argv[2], uid, -1) == -1) {
               perror("chown");
               exit(EXIT_FAILURE);
           }

           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

       chmod(2), fchownat(2), flock(2), path_resolution(7), symlink(7)

KOLOPHON

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the
       project,     and    information    about    reporting    bugs,    can    be    found    at
       http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite  wurde  von  Florian   Jenn   <jennf@tu-
       cottbus.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>.