chown(2) chown(2)
NAME
chown, lchown, fchown - Eigentümer/Gruppe einer Datei ändern
SYNTAX
#include <unistd.h>
#include <sys/types.h>
int chown(const char *path, uidt owner, gidt group);
int lchown(const char *path, uidt owner, gidt group);
int fchown(int fildes, uidt owner, gidt group);
BESCHREIBUNG
Die Eigentümer-ID und die Gruppen-ID der Datei, die durch path spezi-
fiziert wird, oder auf die fildes verweist, werden auf owner bzw.
group gesetzt. Wenn owner oder group mit (uidt)-1 bzw. (gidt)-1 spe-
zifiziert ist, wird die der Datei zugehörige ID nicht geändert.
Die Funktion lchown setzt den Eigentümer und die Gruppenzugehörigkeit
der angegebenen Datei genau wie chown(), es sei denn, die Datei
besteht aus einem symbolischen Link (Verweis). In diesem Fall ändert
lchown() die Zugehörigkeit der Link-Datei, wohingegen chown() die
Zugehörigkeit der Datei oder des Verzeichnisses ändert, auf das sich
der symbolische Link bezieht.
Wenn chown(), lchown() oder fchown() von einem Prozeß aufgerufen wird,
der nicht den Systemverwalterstatus hat, dann wird das Bit zum Setzen
der Benutzer- und Gruppen-ID bei Ausführung, beziehungsweise SISUID
und SISGID, gelöscht [siehe chmod(2)].
Das Betriebssystem hat die Konfigurationsoption
POSIXCHOWNRESTRICTED, um Zugehörigkeitsänderungen für die System-
aufrufe chown(), lchown() und fchown() zu verhindern. Wenn
POSIXCHOWNRESTRICTED nicht aktiv ist, muß die effektive Benutzer-ID
des Prozesses die des Eigentümers der Datei sein, oder der Prozeß muß
Systemverwalter sein, um den Besitz der Datei zu ändern. Wenn
POSIXCHOWNRESTRICTED aktiv ist, bewahren die Systemaufrufe chown(),
lchown() und fchown() den Eigentümer einer Datei davor, daß die
Eigentümer-IDs seiner Dateien geändert werden und beschränken den
Gruppenwechsel der Datei auf die Liste der ergänzenden Gruppen-IDs.
Nach erfolgreichem Abschluß markieren chown(), lchown() und fchown()
das Feld stctime der Datei, um sie auf den neuesten Stand zu bringen.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
chown(2) chown(2)
chown() und lchown() sind erfolglos, und Eigentümer und Gruppe der
angegebenen Datei bleiben unverändert, wenn einer oder mehrere der
nachstehenden Punkte zutreffen:
EACCES Eine Komponente von path darf nicht durchsucht werden.
EFAULT path weist über den zugewiesenen Adreßraum des Prozesses
hinaus.
EINTR Ein Signal wurde während des Systemaufrufs chown() oder
lchown() abgefangen.
EINVAL group oder owner sind außerhalb des zulässigen Bereichs.
EIO Beim Lesen vom Dateisystem oder Schreiben auf dieses
trat ein Ein-/Ausgabefehler auf.
ELOOP Während der Auflösung von path wurden zu viele symboli-
sche Links angetroffen.
EMULTIHOP Die Komponenten von path erfordern den Sprung auf meh-
rere ferne Rechner, und der Dateisystemtyp erlaubt die-
ses nicht.
ENAMETOOLONG Die Länge des Arguments path überschreitet PATHMAX,
oder die Länge einer Komponente von path überschreitet
NAMEMAX.
ENAMETOOLONG Die Auflösung des Pfadnamens eines symbolischen Links
hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
überschreitet.
ENOLINK path weist auf einen fernen Rechner, zu dem die Verbin-
dung nicht mehr aktiv ist.
ENOTDIR Eine Komponente des Pfads path ist kein Verzeichnis.
ENOENT Eine Komponente des Pfads oder die Datei, auf die path
verweist, existiert nicht oder ist ein leerer Pfadname.
EPERM Die effektive Benutzer-ID entspricht nicht dem Eigentü-
mer der Datei, oder der aufrufende Prozess hat nicht die
passenden Zugriffsrechte.
EROFS Die Datei steht in einem schreibgeschützten Dateisystem.
fchown() ist erfolglos, und Eigentümer und Gruppe der angegebenen
Datei bleiben unverändert, wenn einer oder mehrere der nachstehenden
Punkte zutreffen:
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
chown(2) chown(2)
EABDF Verweist auf keine offene Datei.
EINVAL group oder owner sind außerhalb des zulässigen Bereichs.
EPERM Die effektive Benutzer-ID entspricht nicht dem Eigentü-
mer der Datei, oder der aufrufende Prozess hat nicht die
passenden Zugriffsrechte.
EROFS Die Datei steht in einem schreibgeschützten Dateisystem.
EINTR Ein Signal wurde während des chown()- oder lchown()-
Systemaufrufs abgefangen.
EIO Beim Lesen vom Dateisystem oder Schreiben auf dieses
trat ein Ein-/Ausgabefehler auf.
ENOLINK path weist auf einen fernen Rechner, zu dem die Verbin-
dung nicht mehr aktiv ist.
ERGEBNIS
Nach erfolgreicher Beendigung wird 0 zurückgegeben, andernfalls wird
-1 zurückgegeben und errno zur Anzeige des Fehlers gesetzt. Bei Rück-
gabe von -1 werden Benutzer-ID und Gruppen-ID der Datei nicht verän-
dert.
ANWENDUNGSZWECK
Da POSIXCHOWNRESTRICTED auf XSI-kompatiblen Systemen (XSI - X/Open
System Interface) stets mit einem anderen Wert als -1 definiert ist,
wird der Fehler EPERM immer zurückgegeben, wenn die effektive
Benutzer-ID nicht der des Eigentümers der Datei entspricht oder der
aufrufende Prozeß nicht über die entsprechenden Privilegien verfügt.
Bei Implementierungen, die symbolische Links als Verzeichniseinträge
anstatt als Dateien unterstützen, schlägt lchown() fehl.
SIEHE AUCH
chgrp(1), chown(1), chmod(2), symlink(2), unistd(4), types(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98