table of contents
| CHOWN(2) | Linux-Programmierhandbuch | CHOWN(2) | 
BEZEICHNUNG¶
chown, fchown, lchown - Besitzverhältnisse einer Datei ändernÜBERSICHT¶
#include <unistd.h>Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
_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.
 
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 Ihrem adressierbaren Adressraum heraus.
 
- 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
 - 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.
 
- EBADF
 - Der Dateideskriptor ist ungültig.
 
- EIO
 - Bei der Bearbeitung des Inodes trat ein system-/hardwarenaher E/A-Fehler auf.
 
- ENOENT
 - Siehe oben.
 
- EPERM
 - Siehe oben.
 
- EROFS
 - Siehe oben.
 
KONFORM ZU¶
4.4BSD, SVr4, POSIX.1-2001.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.- *
 - 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-Bitwurde für das übergeordnete Verzeichnis aktivert, wird die Gruppe einer neuen Datei vom übergeordneten Verzeichnis übernommen.
 
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¶
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 Florian Jenn <jennf@tu-cottbus.de>, Helge Kreutzmann <debian@helgefjell.de> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.| 22. November 2010 | Linux |