ACCESS(2)

JMÉNO
access - kontroluje přístupová práva k souboru

SYNTAXE
#include <unistd.h>

int access(const char *pathname, int mode);

POPIS
access kontroluje, zda proces může číst či zapisovat do souboru (nebo jiného objektu souborového systému) se jménem pathname . Lze jej také použít ke zjištění existence pathname . Pokud je pathname symbolický odkaz, pak jsou testována přístupová práva souboru, na který odkaz směřuje. mode je maska obsahující jednu či více těchto možností: R_OK, W_OK, X_OK a F_OK. R_OK, W_OK a X_OK provede testování, zda soubor existuje a má pro běžící proces nastavená práva ke čtení (Read), psaní (Write) a vykonání (eXecute). F_OK kontroluje pouze existenci souboru. Výsledek testu závisí na přístupových právech adresářů, jež náleží cestě k souboru pathname, a na přístupových právech adresářů a souborů, na které směřují symbolické odkazy na cestě. Kontrola je provedena se skutečným uid a gid procesu. Nebere se zřetel na efektivní id, které se projeví při souborové operaci. Tak mohou setuid programy snadno zjistit skutečná práva uživatele. Kontrolují se pouze příznakové bity; ne typ souboru či jeho obsah. Pokud je adresář "zápisu schopný", lze v něm pravděpodobně tvořit soubory - nemůžeme do něj zapisovat, jako do běžného souboru. Zrovna tak DOSový soubor může být "spustitelný", ale execve(2) bude stále protestovat.

NÁVRATOVÁ HODNOTA
Při úspěchu (všechna kontrolovaná práva jsou dostupná) vrací nulu. Při neúspěchu (alespoň jeden druh přístupu reprezentovaný příslušným bitem z mode je odepřen, nebo nastane jiná chyba), vrací -1, a proměnná errno je nastavena.

CHYBY

EACCES
    Požadovaný přístup by byl odepřen.

EFAULT
    pathname odkazuje někam mimo přístupný adresovatelný diskový prostor.

EINVAL
    mode je zadán chybně.

ENAMETOOLONG
    pathname je příliš dlouhý.

ENOENT
    Adresáře v pathname by mohly být přístupné, ale neexistují, nebo jsou to volné symbolické odkazy.

ENOTDIR
    Části pathname použité jako adresáře ve skutečnosti nejsou adresáře

ENOMEM
    Málo paměti jádra.

ELOOP
    pathname obsahuje cyklický symbolický odkaz, např. symbolický odkaz odkazuje sám na sebe.

OMEZENÍ
access vrací chybu i kdyby jeden jediný druh přístupu byl odepřen a všechny ostatní umožněny.

access může zlobit na NFS souborových systémech, které mají zapnuté mapování UID, protože mapovaní UID je prováděno na serveru a je skryto před klienty.

SPLŇUJE STANDARDY
SVID, AT&T, POSIX, X/OPEN, BSD 4.3

DALŠÍ INFORMACE
stat(2), open(2), chmod(2), chown(2), setuid(2), setgid(2).