Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

lchown - Eigentümer/Gruppe einer Datei ändern

&pagelevel(4)&pagelevel

Definition

#include <unistd.h>

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

Beschreibung

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 Verweis. In diesem Fall ändert lchown() die Zugehörigkeit der Verweisdatei, wohingegen chown() die Zugehörigkeit der Datei oder des Verzeichnisses ändert, auf das sich der Verweis bezieht.

Wenn chown(), lchown() oder fchown() von einem Prozess aufgerufen wird, der nicht den Systemverwalterstatus hat, dann wird das Bit zum Setzen der Benutzer- und Gruppennummer bei Ausführung, beziehungsweise S_ISUID und S_ISGID, gelöscht (siehe chmod()).

Das Betriebssystem hat die Konfigurationsoption _POSIX_CHOWN_RESTRICTED, um Zugehörigkeitsänderungen für chown()-, lchown()- und fchown()-Systemaufrufe zu verhindern. In POSIX ist _POSIX_CHOWN_RESTRICTED aktiv, daher bewahren die chown()-, lchown()- und fchown()-Systemaufrufe den Eigentümer einer Datei davor, dass die Eigentümernummern seiner Dateien geändert werden und beschränken den Gruppenwechsel der Datei auf die Liste der ergänzenden Gruppennummern.

Nach erfolgreichem Abschluss markieren chown(), lchown() und fchown() das ST_CTI-ME-Feld der Datei zum Aktualisieren.

Returnwert

0

bei Erfolg.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen. Bei Rückgabe von -1 werden Benutzernummer und Gruppennummer der Datei nicht verändert.

Fehler

lchown() schlägt fehl, wenn gilt:


EACCES

Eine Komponente von path darf nicht durchsucht werden.

 

EINVAL

Der Wert der angegebenen Benutzer- oder Gruppennummer wird nicht unterstützt, z.B. wenn der Wert kleiner als 0 ist, oder es wurde versucht, auf eine BS2000-Datei zuzugreifen.

 

ENAMETOOLONG

 


Die Länge des Pfadnamens überschreitet {PATH_MAX}, oder die Länge einer Komponente des Pfadnamens überschreitet {NAME_MAX}.

 

ENOENT

Eine Komponente des Pfadnamens existiert nicht, oder path zeigt auf eine leere Zeichenkette.

 

ENOTDIR

Eine Komponente des Pfadnamen-Präfix ist kein Dateiverzeichnis.

 

EOPNOTSUPP

Das Argument path bezeichnet einen symbolischen Verweis und die Implementierung unterstützt nicht, den Eigentümer oder die Gruppenzugehörigkeit eines symbolischen Verweises zu ändern.

 

ELOOP

Während der Übersetzung von path wurden zu viele symbolische Verweise angetroffen.

 

EPERM

Die effektive Benutzernummer entspricht nicht dem Eigentümer der Datei, und der aufrufende Prozess hat nicht die passenden Zugriffsrechte.

 

EROFS

Die Datei steht in einem schreibgeschützten Dateisystem.

 

EIO

Es trat während des Lesens oder Schreibens vom Dateisystem ein Ein- oder Ausgabefehler auf.

 

EINTR

Ein Signal wurde während der Ausführung der Funktion abgefangen.

 

Erweiterung

ENAMETOOLONG

 


Die Auflösung symbolischer Verweise im Pfadnamen führt zu einem Zwischenergebnis, dessen Länge {PATH_MAX} überschreitet. (Ende)

Siehe auch

chmod(), chown(), symlink(), unistd.h.