access, accessx, faccessx, accessxat oder faccessat Subroutine

Zweck

Legt die Zugriffsmöglichkeit für eine Datei fest.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <unistd.h>
int access (PathName,Mode)
char *PathName;
int Mode;

int accessx (PathName,  Mode,  Who)
char *PathName;
int Mode, Who;

int faccessx (FileDescriptor, Mode, Who)
int FileDescriptor;
int Mode, Who;

int accessxat (DirFileDescriptor, PathName, Mode, Who)
int DirFileDescriptor;
char *PathName;
int Mode, Who;

int faccessat (DirFileDescriptor, PathName, Mode, Flag)
int DirFileDescriptor;
char *PathName;
int Mode, Flag;

Beschreibung

Die Subroutinen access, accessx, accessxat, faccessat und faccessx bestimmen die Zugänglichkeit eines Dateisystemobjekts. Die Subroutinen accessx, accessxatund faccessx ermöglichen die Angabe einer Klasse von Benutzern oder Prozessen, für die der Zugriff geprüft werden soll.

Der Aufrufende muss Suchberechtigung für alle Komponenten des Parameters PathName haben.

Das Unterprogramm accessxat entspricht dem Unterprogramm accessx, und das Unterprogramm faccessat entspricht dem Unterprogramm access, wenn der Parameter PathName einen absoluten Pfad angibt oder wenn der Parameter DirFileDescriptor auf AT_FDCWD gesetzt ist. Der Dateizugriff wird durch den relativen Pfad zu dem Verzeichnis bestimmt, das mit dem DirFileDescriptor anstelle des aktuellen Arbeitsverzeichnisses verknüpft ist. Wenn auf das Verzeichnis ohne das Öffnungsflag O_SEARCH zugegriffen wird, prüft die Subroutine, ob Verzeichnissuchen unter Verwendung der aktuellen Berechtigungen des Verzeichnisses zulässig sind. Wenn auf das Verzeichnis mit dem Öffnungsflag O_SEARCH zugegriffen wird, führt die Subroutine die Prüfung nicht aus.

Parameter

Element Beschreibung
PathName Gibt den Pfadnamen der Datei an. Wenn der Parameter PathName auf einen symbolischen Link verweist, gibt die Subroutine access Informationen zu der Datei zurück, auf die der symbolische Link verweist. Wenn der DirFileDescriptor angegeben ist und PathName relativ ist, dann gibt der DirFileDescriptor das effektive aktuelle Arbeitsverzeichnis für den PathName an.
FileDescriptor Gibt den Dateideskriptor einer geöffneten Datei an.
Modus Gibt die zu prüfenden Zugriffsmodi an. Dieser Parameter ist eine Bitmaske mit 0 oder mehr der folgenden Werte, die in der Datei <sys/access.h> definiert sind:
R_OK
Überprüfen Sie die Leseberechtigung.
W_OK
Überprüfen Sie die Schreibberechtigung.
X_OK
Überprüfen Sie die Ausführungs-oder Suchberechtigung.
F_OK
Überprüfen Sie, ob eine Datei vorhanden ist.

Wenn keiner dieser Werte angegeben wird, wird das Vorhandensein einer Datei überprüft.

Zielgruppe Gibt die Klasse der Benutzer an, deren Zugriff geprüft wird. Dieser Parameter muss einer der folgenden Werte sein, die in der Datei <sys/access.h> definiert sind:
ACC_SELF
Bestimmt, ob der Zugriff für den aktuellen Prozess zulässig ist. Die effektiven Benutzer-und Gruppen-IDs, das gleichzeitige Gruppensatz und die Berechtigung des aktuellen Prozesses werden für die Berechnung verwendet.
ACC_INVOKER
Bestimmt, ob der Zugriff für das aufrufende Programm des aktuellen Prozesses zulässig ist Die realen Benutzer-und Gruppen-IDs, die gleichzeitige Gruppengruppe und die Berechtigung des aufrufenden Benutzers werden für die Berechnung verwendet.
Anmerkung: Der Ausdruck access (Pfadname, Modus) ist äquivalent zu accessx (Pfadname, Modus, ACC_INVOKER).
ACC_OTHERS
Bestimmt, ob der angegebene Zugriff für einen anderen Benutzer als den Objekteigner zulässig ist Der Parameter Modus darf nur einen der gültigen Modi enthalten. Die Berechtigung wird bei der Berechnung nicht berücksichtigt.
ACC_ALLE
Bestimmt, ob der angegebene Zugriff für alle Benutzer zulässig ist. Der Parameter Modus darf nur einen der gültigen Modi enthalten. Die Berechtigung wird bei der Berechnung nicht berücksichtigt.
Hinweis: Die Subroutine accessx zeigt dasselbe Verhalten sowohl für den Benutzer als auch für den Root mit ACC_ALL.
DirFileDescriptor Gibt den Dateideskriptor eines geöffneten Verzeichnisses an, das als aktuelles Arbeitsverzeichnis für das Argument PathName verwendet wird Wenn der DirFileDescriptor gleich AT_FDCWD ist, wird der DirFileDescriptor ignoriert und das PathName gibt die vollständige Datei an.
Markierung Gibt ein Bitfeldargument an Wenn der Parameter Flag AT_EACCESSentspricht, werden die effektiven Benutzer-und Gruppen-IDs überprüft (ACC_SELF). Wenn der Parameter Flag null ist, werden die realen IDs geprüft (ACC_INVOKER).

Rückgabewerte

Wenn der angeforderte Zugriff zulässig ist, access, accessx, faccessx, accessxat, und faccessat -Subroutinen geben den Wert 0 zurück. Wenn der angeforderte Zugriff nicht erlaubt ist oder der Funktionsaufruf fehlschlägt, wird ein Wert von -1 zurückgegeben und die globale Variable errno gesetzt, um den Fehler anzuzeigen.

Die Subroutine access zeigt den Erfolg von X_OK an, auch wenn keines der Berechtigungsbits für die Ausführungsdatei gesetzt ist.

Fehlercodes

Die Subroutinen access faccessat, accessxund accessx schlagen fehl, wenn mindestens eine der folgenden Bedingungen zutrifft:

Element Beschreibung
EACCES Die Suchberechtigung wird für eine Komponente des Präfix PathName verweigert.
EFAULT Der Parameter PathName verweist auf eine Position außerhalb des zugeordneten Adressraums des Prozesses.
ELOOP Beim Umsetzen des Parameters PathName wurden zu viele symbolische Links gefunden.
ENAMETOOLONG Eine Komponente des Parameters PathName überschreitet 255 Zeichen oder der gesamte Parameter PathName überschreitet 1022 Zeichen.
ENOENT Eine Komponente des PathName ist nicht vorhanden oder für den Prozess ist das Attribut disallow truncation festgelegt.
ENOENT Die genannte Datei ist nicht vorhanden.
ENOENT Der Parameter PathName war null.
ENOENT Eine symbolische Verbindung wurde benannt, aber die Datei, auf die sie verweist, ist nicht vorhanden.
ENOTDIR Eine Komponente des PathName ist kein Verzeichnis.
ESTALE Das Prozessstammverzeichnis oder das aktuelle Verzeichnis befindet sich in einem virtuellen Dateisystem, das abgehängt wurde.

Die Subroutine faccessx schlägt fehl, wenn Folgendes zutrifft:

Element Beschreibung
EBADF Der Wert des Parameters FileDescriptor ist ungültig.

Die Subroutinen access, accessxund faccessx schlagen fehl, wenn mindestens eine der folgenden Bedingungen zutrifft:

Element Beschreibung
EACCES Der Dateischutz lässt den angeforderten Zugriff nicht zu.
ENOMEM Es kann kein Speicher reserviert werden.
EIO Während der Operation ist ein E/A-Fehler aufgetreten.
EROFS Für eine Datei in einem schreibgeschützten Dateisystem wird Schreibzugriff angefordert.

Die Subroutinen accessxat und faccessat schlagen fehl, wenn mindestens eine der folgenden Einstellungen zutrifft:

Element Beschreibung
EBADF Der Parameter PathName gibt keinen absoluten Pfad an und das Argument DirFileDescriptor ist weder AT_FDCWD noch ein gültiger Dateideskriptor.
EINVAL Der Wert des Parameter Flag ist nicht gültig.
ENOTDIR Der Parameter PathName ist kein absoluter Pfad und DirFileDescriptor ist ein Dateideskriptor, der jedoch nicht mit einem Verzeichnis verknüpft ist.

Wenn Network File System (NFS) auf Ihrem System installiert ist, können die Subroutinen accessx, accessxatund faccessx ebenfalls fehlschlagen, wenn die folgenden Einstellungen zutreffen:

Element Beschreibung
ETIMEDOUT Das Zeitlimit für die Verbindung wurde überschritten.
ETXTBSY Schreibzugriff wird für eine gemeinsam genutzte Textdatei angefordert, die ausgeführt wird.
EINVAL Der Wert des Arguments Mode ist ungültig.