Provided by:
manpages-de-dev_0.5-4.1ubuntu1_all 
BEZEICHNUNG
chown, fchown, lchown - Besitzverhältnisse einer Datei ändern
ÜBERSICHT
#include <sys/types.h>
#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);
BESCHREIBUNG
Die Besitzverhältnisse der Datei, die durch path bzw. fd gegeben ist,
werden geändert: neuer Eigentümer ist owner, neue Gruppe ist group.
Nur der Super-User 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. Der Super-User kann die
Gruppenzugehörigkeit beliebig ändern.
Wird als owner oder group -1 übergeben, wird die entsprechende ID nicht
geändert.
Werden Eigentümer oder Gruppe einer ausführbaren Datei von einem Nicht-
Super-User geändert, werden die Modus-Bits S_ISUID und S_ISGID
gelöscht. POSIX legt nicht fest, ob dies auch dann geschehen sollte,
wenn der Super-User chown durchführt. Das Verhalten von Linux ist in
diesem Falle abhängig von der Kernelversion. Ist die Datei nicht
ausführbar (d.h. das S_IXGRP Bit ist gelöscht), bedeutet ein gesetztes
S_ISGID Bit verbindliche Sperren (mandatory locks) für die Datei.
Dieses Bit wird dann von chown nicht geändert.
RÜCKGABEWERT
Bei Erfolg gibt chown Null zurück. Bei einem Fehler wird -1
zurückgegeben und errno entsprechend gesetzt.
FEHLER
Die häufigsten Fehler für chown sind unten aufgeführt. Je nach
Dateisystem können andere Fehler zurückgegeben werden.
EPERM Die effektive UID (Benutzer ID) entspricht nicht dem Eigentümer
der Datei und ist auch nicht Null (d.h. Super-User). EPERM
kann auch anzeigen, dass Eigentümer (owner) oder Gruppe (group)
falsch angegeben wurden.
EROFS Die angegebene Datei liegt auf einem schreibgeschützten (read-
only) Dateisystem.
EFAULT path zeigt auf eine Adresse außerhalb des gültigen Adressraums.
ENAMETOOLONG
path ist zu lang.
ENOENT Die Datei ist nicht vorhanden.
ENOMEM Es war nicht ausreichend Kernel-Speicher verfügbar.
ENOTDIR Eine Komponente im Verzeichnisteil des Pfades (d.i. der vordere
Teil bis zum Dateinamen ausschließlich) ist kein Verzeichnis.
EACCES Die Berechtigung zum Durchsuchen eines Verzeichnisses im Pfad
ist nicht gegeben.
ELOOP Es wurden zu viele symbolische Links beim Auflösen von path
gefunden.
Folgende Fehler können von fchown zurückgegeben werden:
EBADF Der Dateideskriptor fd ist ungültig.
ENOENT Siehe oben.
EPERM Siehe oben.
EROFS Siehe oben.
EIO Ein (low-level) Ein-/Ausgabe-Fehler ist während der Änderung
des Inodes aufgetreten.
ANMERKUNGEN
In Linux-Versionen vor 2.1.81 (außer 2.1.46) folgte chown nicht
symbolischen Links. Ab 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 besitzt) die gleiche Systemaufruf-Nummer
(syscall number) und chown erhielt die neu eingeführte Nummer.
Der Prototyp für fchown ist nur dann verfügbar, wenn __USE_BSD
definiert ist.
KONFORM ZU
chown ist konform zu SVr4, SVID, POSIX und X/OPEN. Die 4.4BSD-Version
kann nur vom Super-User benutzt werden (d.h. dass normale Benutzer
keine Dateien abgeben können). SVr4 dokumentiert die Fehler EINVAL,
EINTR, ENOLINK und EMULTIHOP, aber nicht ENOMEM. POSIX.1 dokumentiert
nicht die Fehler ENOMEM und ELOOP.
Der fchown-Aufruf ist konform zu 4.4BSD und SVr4. SVr4 dokumentiert
zusätzlich die Fehler EINVAL, EIO, EINTR und ENOLINK.
EINSCHRÄNKUNGEN
Die Semantik von chown() wird auf NFS-Dateisystemen mit aktiviertem
UID-mapping (Umsetzung der Benutzerkennungen zwischen verschiedenen
Rechnern) 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.
SIEHE AUCH
chmod(2), flock(2).