.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" and Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl) .\" and Copyright (c) 2006, 2007, 2008, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified by Michael Haardt .\" Modified 1993-07-21 by Rik Faith .\" Modified 1996-07-09 by Andries Brouwer .\" Modified 1996-11-06 by Eric S. Raymond .\" Modified 1997-05-18 by Michael Haardt .\" Modified 2004-06-23 by Michael Kerrisk .\" 2007-07-08, mtk, added an example program; updated SYNOPSIS .\" 2008-05-08, mtk, Describe rules governing ownership of new files .\" (bsdgroups versus sysvgroups, and the effect of the parent .\" directory's set-group-ID mode bit). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH CHOWN 2 "15. September 2017" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG chown, fchown, lchown, fchownat \- Besitzverhältnisse einer Datei ändern .SH ÜBERSICHT .nf \fB#include \fP .PP \fBint chown(const char *\fP\fIpathname\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP \fBint fchown(int \fP\fIfd\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP \fBint lchown(const char *\fP\fIpathname\fP\fB, uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB);\fP \fB#include \fP/* Definition der AT_*\-Konstanten */ \fB#include \fP .PP \fBint fchownat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB,\fP \fB uid_t \fP\fIowner\fP\fB, gid_t \fP\fIgroup\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .PP .in -4n Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .in .PP \fBfchown\fP(), \fBlchown\fP(): .PD 0 .ad l .RS 4 .\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED /* Seit Glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 500 || /* Glibc\-Versionen <= 2.19: */ _BSD_SOURCE .RE .PP \fBfchownat\fP(): .PD 0 .ad l .RS 4 .TP 4 Seit Glibc 2.10: _POSIX_C_SOURCE\ >=\ 200809L .TP Vor Glibc 2.10: _ATFILE_SOURCE .RE .ad .PD .SH BESCHREIBUNG Diese Systemaufrufe ändern den Eigentümer und die Gruppe einer Datei. Die Systemaufrufe \fBfchown\fP() und \fBlchown\fP() unterscheiden sich nur in der Angabe der Datei: .IP * 2 \fBchown\fP() ändert die Besitzverhältnisse der von \fIpathname\fP angegebenen Datei. Falls das ein symbolischer Link ist, wird er dereferenziert. .IP * \fBfchown\fP() ändert die Besitzverhältnisse der Datei, die über den offenen Dateideskriptor \fIfd\fP festgelegt wird. .IP * \fBlchown\fP() ist wie \fBchown\fP(), dereferenziert aber keine symbolischen Links. .PP Nur ein privilegierter Prozess (Linux: verfügt über die \fBCAP_CHOWN\fP\-Capability) 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. Ein privilegierter Prozess (Linux: mit \fBCAP_SHOWN\fP) kann die Gruppenzugehörigkeit beliebig ändern. .PP Falls \fIowner\fP oder \fIgroup\fP als \-1 übergeben werden, dann wird diese ID nicht geändert. .PP .\" In Linux 2.0 kernels, superuser was like everyone else .\" In 2.2, up to 2.2.12, these bits were not cleared for superuser. .\" Since 2.2.13, superuser is once more like everyone else. Wird der Eigentümer oder die Gruppe einer ausführbaren Datei von einem nicht privilegierten Nutzer geändert, werden die Modus\-Bits \fBS_ISUID\fP und \fBS_ISGID\fP gelöscht. \fBPOSIX\fP legt nicht fest, ob dies auch dann geschehen sollte, wenn Root das \fBchown\fP() durchführt. Das Verhalten von Linux ist in diesem Falle abhängig von der Kernel\-Version; seit Linux 2.2.13 wird root wie jeder andere Benutzer behandelt. Falls die Datei für die Gruppe nicht ausführbar ist (d.h. eine, für die das \fBS_IXGRP\fP\-Bit nicht gesetzt ist), zeigt das \fBS_ISGID\fP\-Bit verbindliche Sperren (mandatory locks) für die Datei an und wird nicht durch ein \fBchown\fP() gelöscht. .PP .\" Wenn der Eigentümer oder die Gruppe einer Programmdatei (durch igendeinen Benutzer) geändert werden, werden alle Capability\-Mengen für diese Datei zurückgesetzt. .SS fchownat() Der Systemaufruf \fBfchownat\fP() funktioniert genauso wie \fBchown\fP, außer den hier beschriebenen Unterschieden. .PP Falls der in \fIpathname\fP übergebene Pfadname relativ ist wird er als relativ zu dem im Dateideskriptor \fIdirfd\fP referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses, wie es bei \fBchown\fP() für einen relativen Pfadnamen erfolgt). .PP Falls \fIpathname\fP relativ ist und \fIdirfd\fP den besonderen Wert \fBAT_FDCWD\fP annimmt wird \fIpathname\fP als relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie \fBchown\fP()). .PP Falls \fIpathname\fP absolut ist wird \fIdirfd\fP ignoriert. .PP Das \fISchalter\fP\-Argument ist eine Bitmaske, die durch bitweises ODER null oder mehr der folgenden Werte enthält: .TP \fBAT_EMPTY_PATH\fP (seit Linux 2.6.39) .\" commit 65cfc6722361570bfe255698d9cd4dccaf47570d .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed Falls \fIPfadname\fP eine leere Zeichenkette ist, wird mit der Datei gearbeitet, auf die \fIdirfd\fP verweist (dies kann mit dem \fBO_PATH\fP\-Schalter von \fBopen\fP(2) ermittelt werden). In diesem Fall kann sich \fIdirfd\fP auf jeden Dateityp beziehen, nicht nur einem Verzeichnis. Falls \fIdirfd\fP \fBAT_FDCWD\fP ist, erfolgt der Aufruf im aktuellen Arbeitsverzeichnis. Dieser Schalter ist Linux\-spezifisch; definieren Sie \fB_GNU_SOURCE\fP, um dessen Definition zu ermitteln. .TP \fBAT_SYMLINK_NOFOLLOW\fP Wenn der \fIPfadname\fP ein symbolischer Link ist, wird er nicht dereferenziert: es wird stattdessen mit dem Link selbst gearbeitet, wie bei \fBlchown\fP(). In der Voreinstellung dereferenziert \fBfchownat\fP() symbolische Links, wie \fBchown\fP(). .PP Lesen Sie \fBopenat\fP(2) für eine Beschreibung der Notwendigkeit von \fBfchownat\fP(). .SH RÜCKGABEWERT Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird \-1 zurückgegeben und \fIerrno\fP entsprechend gesetzt. .SH FEHLER Je nach Dateisystem können andere als die unten aufgeführten Fehler zurückgegeben werden. .PP Die allgemeineren Fehler von \fBfchown\fP() sind im Folgenden aufgeführt: .TP \fBEACCES\fP Eine Komponente des Pfad\-Präfix darf nicht durchsucht werden. (Siehe auch \fBpath_resolution\fP(7).) .TP \fBEFAULT\fP \fIpathname\fP zeigt aus dem für Sie zugänglichen Adressraum heraus. .TP \fBELOOP\fP Bei der Auflösung von \fIpathname\fP wurden zu viele symbolische Links gefunden. .TP \fBENAMETOOLONG\fP \fIpathname\fP ist zu lang. .TP \fBENOENT\fP Die Datei existiert nicht. .TP \fBENOMEM\fP Es war nicht genügend Kernelspeicher verfügbar. .TP \fBENOTDIR\fP Eine Komponente des Pfad\-Präfixes ist kein Verzeichnis. .TP \fBEPERM\fP Der aufrufende Prozess hatte nicht die benötigten Rechte (siehe oben), um den Eigentümer und/oder die Gruppe zu ändern. .TP \fBEPERM\fP Die Datei ist als unveränderlich oder nur\-anhängbar markiert (siehe \fBioctl_iflags\fP(2)) .TP \fBEROFS\fP Die angegebene Datei befindet sich auf einem nur lesbaren (read\-only) Dateisystem. .PP Die allgemeinen Fehler von \fBfchown\fP() sind im Folgenden aufgeführt: .TP \fBEBADF\fP \fIfd\fP ist kein zulässiger offener Dateideskriptor. .TP \fBEIO\fP Bei der Bearbeitung des Inodes trat ein system\-/hardwarenaher E/A\-Fehler (engl. I/O) auf. .TP \fBENOENT\fP Siehe oben. .TP \fBEPERM\fP Siehe oben. .TP \fBEROFS\fP Siehe oben. .PP Die gleichen Fehler, die bei \fBchown\fP() auftreten, können auch bei \fBfchownat\fP auftreten. Die folgenden zusätzlichen Fehler können bei \fBfchownat\fP() auftreten: .TP \fBEBADF\fP \fIdirfd\fP ist kein zulässiger Dateideskriptor. .TP \fBEINVAL\fP Unzulässiger Schalter in \fIflags\fP angegeben. .TP \fBENOTDIR\fP \fIpathname\fP ist relativ und \fIdirfd\fP ist ein Dateideskriptor, der sich auf eine Datei bezieht, die kein Verzeichnis ist. .SH VERSIONEN \fBfchownat\fP() wurde zu Linux in Kernel 2.6.16 hinzugefügt; Bibliotheksunterstützung wurde in Glibc in Version 2.4 hinzugefügt. .SH "KONFORM ZU" \fBchown\fP(), \fBfchown\fP(), \fBlchown\fP(): 4.4BSD, SVr4, POSIX.1\-2001, POSIX.1\-2008. .PP .\" chown(): .\" SVr4 documents EINVAL, EINTR, ENOLINK and EMULTIHOP returns, but no .\" ENOMEM. POSIX.1 does not document ENOMEM or ELOOP error conditions. .\" fchown(): .\" SVr4 documents additional EINVAL, EIO, EINTR, and ENOLINK .\" error conditions. Die Version aus 4.4BSD kann nur vom Superuser verwendet werden (d.h., normale Benutzer können keine Dateien weggeben). .PP \fBfchownat\fP(): POSIX.1\-2008. .SH ANMERKUNGEN .SS "Eigentümerschaft neuer Dateien" Wenn eine neue Datei erzeugt wird (zum Beispiel durch \fBopen\fP(2) oder \fBmkdir\fP(2)), wird der Eigentümer der gleiche wie die Dateisystem\-Benutzer\-ID des erzeugenden Prozesses. Die Gruppe der Datei hängt von einer Reihe von Faktoren ab, einschließlich der Art des Dateisystems, den beim Einhängen des Dateisystems verwendeten Optionen und der (Nicht\-) Aktivierung des Set\-Group\-ID\-Modusbits für das Elternverzeichnis. Falls das Dateisystem die Optionen \fB\-o\ grpid\fP (oder synonym \fB\-o\ bsdgroups\fP) und \fB\-o \nogrpid\fP (oder synonym \fB\-o\ sysvgroups\fP) von \fBmount\fP(8) unterstützt, dann sind die Vorschriften wie folgt: .IP * 2 Falls das Dateisystem mit \fB\-o\ grpid\fP eingehängt wurde, wird die Gruppe der neuen Datei vom Elternverzeichnis übernommen. .IP * Falls das Dateisystem mit \fB\-o\ nogrpid\fP eingehängt wurde und das Set\-Group\-ID\-Bit wurde für das Elternverzeichnis deaktiviert, wird die Gruppe einer neuen Datei auf die Dateisystem\-GID des Prozesses gesetzt. .IP * Falls das Dateisystem mit \fB\-o\ nogrpid\fP eingehängt wurde und das Set\-Group\-ID\-Bit wurde für das Elternverzeichnis aktiviert, wird die Gruppe einer neuen Datei vom Elternverzeichnis übernommen. .PP Unter Linux 4.12 werden die Einhängeoptionen \fB\-o\ grpid\fP und \fB\-o\ nogrpid\fP von ext2, ext3, ext4 und XFS unterstützt. Dateisysteme, die diese Optionen nicht unterstützen, folgen den \fB\-o\ nogrpid\fP\-Regeln. .SS "Anmerkungen zur Glibc" Mit älteren Kernels, in denen \fBfchownat\fP() nicht verfügbar ist, weicht die Glibc\-Wrapper\-Funktion auf \fBchown\fP() und \fBlchown\fP() aus. Wenn \fIPfadname\fP ein relativer Pfadname ist, dann konstruiert die Glibc einen Pfadnamen, der auf jenem symbolischen Link in \fI/proc/self/fd\fP, der dem Argument \fIdirfd\fP entspricht. .SS NFS Die Semantik von \fBchown\fP() wird auf NFS\-Dateisystemen mit aktiviertem UID\-Mapping bewusst verletzt. Außerdem wird bei allen Systemaufrufen, die auf den Dateiinhalt zugreifen, die Semantik verletzt, da \fBchown\fP() 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. .SS "Historische Details" Die ursprünglichen Linux\-Systemaufrufe \fBchown\fP(), \fBfchown\fP() und \fBlchown\fP() unterstützten nur 16\-Bit\-Benutzer\- und Gruppenkennungen. Anschließend fügte Linux 2.4 \fBchown32\fP(), \fBfchown32\fP() und \fBlchown32\fP() zur Unterstützung von 32\-Bit\-Kennungen hinzu. Die Glibc\-Wrapper\-Funktionen \fBchown\fP(), \fBfchown\fP() und \fBlchown\fP() gehen transparent mit den Variationen zwischen den Kernel\-Versionen um. .PP In Linux\-Versionen vor 2.1.81 (außer 2.1.46) folgte \fBchown\fP() nicht symbolischen Links. Seit Linux 2.1.81 folgt \fBchown\fP() symbolischen Links und es gibt einen neuen Systemaufruf \fBlchown\fP(), der symbolischen Links nicht folgt. Ab Linux 2.1.86 hat dieser neue Aufruf (der die gleiche Semantik wie das alte \fBchown\fP() hat) die gleiche Systemaufruf\-Nummer (syscall number) und \fBchown\fP() erhielt die neu eingeführte Nummer. .SH BEISPIEL .PP 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 Benutzerkennung oder als Benutzername (die mittels \fBgetpwnam\fP(3) durch einen Suchlauf in der System\-Passwortdatei in eine Benutzerkennung umgewandelt wird) angegeben werden. .SS Programmquelltext .EX #include #include #include #include int main(int argc, char *argv[]) { uid_t uid; struct passwd *pwd; char *endptr; if (argc != 3 || argv[1][0] == \(aq\e0\(aq) { fprintf(stderr, "%s \en", argv[0]); exit(EXIT_FAILURE); } uid = strtol(argv[1], &endptr, 10); /* eine numerische Zeichenkette erlauben */ if (*endptr != \(aq\e0\(aq) { /* 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); } .EE .SH "SIEHE AUCH" \fBchgrp\fP(1), \fBchown\fP(1), \fBchmod\fP(2), \fBflock\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.16 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Florian Jenn , Martin Eberhard Schauer , Mario Blättermann , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an .