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 .
|