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 |