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