Provided by: manpages-nl-dev_4.21.0-2_all 

NAAM
access, faccessat, faccessat2 - controleer gebruikers rechten voor een bestand.
BIBLIOTHEEK
Standard C bibliotheek (libc, -lc)
SAMENVATTING
#include <unistd.h>
int access(const char *padnaam, int toestand);
#include <fcntl.h> /* Definitie van AT_* constanten */
#include <unistd.h>
int faccessat(int mapbi, const char *padnaam, int toestand, int vlaggen);
/* Maar zie C library/kernel verschillen, hieronder */
#include <fcntl.h> /* Definitie van AT_* constanten */
#include <sys/syscall.h> /*Definitie van SYS_* constanten */
#include <unistd.h>
int syscall(SYS_faccessat2,
int mapbi, const char *pathname, int toestand, int vlaggen);
Feature Test Macro´s eisen in glibc (zie feature_test_macros(7)):
faccessat():
Vanaf glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Voor glibc 2.10:
_ATFILE_SOURCE
BESCHRIJVING
access() controleert of het aanroepende proces het bestand padnaam mag benaderen. Als padnaam een
symbolische koppeling is, dan wordt deze zelf gebruikt.
De toestand specificeert welke toegangscontroles moeten gedaan worden, en is ofwel de waarde van F_OK,
ofwel een masker bestaande uit een bitgewijze OF van een of meer van R_OK, W_OK, en X_OK. F_OK
controleert op het bestaan van het bestand. R_OK, W_OK, en X_OK controleert of het bestand bestaat en
respectievelijk lees, schrijf en uitvoer permissies toe staat.
De controle wordt gedaan gebruik makend van de echte UID en GID van het aanroepende proces, in plaats
van de effectieve ID´s zoals gedaan tijdens het uitvoeren van een operatie (b.v. open(2)) op het bestand.
Op dezelfde manier, voor de systeembeheerder, de controle gebruikt een verzameling van toegestane
mogelijkheden in plaats van een verzameling van effectieve mogelijkheden; en voor niet-systeembeheerders
gebruikt de controle een lege verzameling van mogelijkheden.
Dit maakt het mogelijk dat set-user-ID programma´s en gerechtigde programma´s om makkelijk de autoriteit
van aanroepende gebruikers te bepalen. Met andere woorden , access() beantwoord de "kan ik het bestand
lezen/schrijven/uitvoeren" vraag niet. Het beantwoord een lichtelijk andere vraag: "(aannemende dat ik
een setuid binaire ben) mag de gebruiker die mij aanriep dit bestand lezen/schrijven/uitvoeren?", dit
geeft set-user-ID programma´s de mogelijkheid om te voorkomen dat kwaadaardige gebruikers bestanden lezen
die ze niet zouden moeten kunnen lezen.
Als het aanroepende proces gerechtigd is (m.a.w. zijn effectieve UID is nul), dan zal een X_OK controle
succesvol zijn voor een regulier bestand als het uitvoer-recht is ingeschakeld voor een van de
bestandsbits: eigenaar, groep of ander.
faccessat()
De faccessat() systeem aanroep werkt op precies dezelfde wijze als access(), behalve voor de hier
beschreven verschillen.
Als het pad gegeven in padnaam relatief is, dan wordt deze geïnterpreteerd als relatieve aan de map
aangewezen door de bestandsbeschrijving mapbi (in plaats van relatief aan de huidige werkmap van het
aanroepende proces, zoals gedaan door access() voor een relatieve padnaam).
Als padnaam relatief is en mapbi heeft de speciale waarde AT_FDCWD, dan wordt padnaam geïnterpreteerd als
relatief aan de huidige werkmap van het aanroepende proces (zoals access()).
Als padnaam absoluut is, dan wordt mapbi genegeerd.
vlaggen wordt gemaakt door OF´en van een of meer van de volgendewaarden:
AT_EACCESS
Voer toegangscontrole uit gebruikmakend van de effectieve gebruiker en groeps ID´s. Standaard
gebruikt faccessat() echte ID´s (zoals access()).
AT_SYMLINK_NOFOLLOW
Als padnaam een symbolische koppeling is, volg deze niet: in plaats daarvan, retourneer informatie
over de koppeling zelf.
Zie openat(2) voor een uitleg over de noodzaak van faccessat().
faccessat2()
De hierboven gegeven beschrijving van faccessat() komt overeen met POSIX.1 en met de implementatie
voorzien in glibc. Hoewel de glibc implementatie een imperfecte emulatie (zie BUGS) was die struikelde
over het feit dat de onbewerkte Linux faccessat() systeem aanroep geen vlaggen argument heeft. Om te
voorzien in een juiste implementatie, voegde Linux 5.8 de faccessat2() systeem aanroep toe, die het
vlaggen argument ondersteund en een juiste implementatie van de faccessat() mogelijk maakt.
EIND WAARDE
Bij succes (alle gevraagde permissies toegestaan, of toestand is F_OK en het bestand bestaat), nul wordt
teruggegeven. Bij een fout (minstens een gevraagd bit in toestand voor een permissie werd geweigerd, of
toestand is F_OK en het bestand bestaat niet, of een andere fout trad op), -1 wordt terug gegeven, en
errno wordt gezet om de fout aan te duiden.
FOUTEN
EACCES De gevraagde toegang tot het bestand zou geweigerd worden, of zoek toestemming werd geweigerd in
een van de mappen in padnaam. Zie ook path_resolution(7).
EBADF (faccessat()) padnaam is relatief maar mapbi is noch AT_FDCWD (faccessat()) noch een geldige
bestandsbeschrijving.
EFAULT padnaam wijst buiten de voor u toegankelijke adresruimte.
EINVAL toestand werd ongeldig opgegeven.
EINVAL (faccessat()) Ongeldige vlag opgegeven in vlaggen.
EIO Een Invoer/Uitvoer fout trad op.
ELOOP Teveel symbolische koppelingen werden tegengekomen bij het vaststellen van padnaam.
ENAMETOOLONG
padnaam is te lang.
ENOENT Een map-deel van padnaam zou toegankelijk geweest zijn maar bestaat niet of was een zwevende
symbolische koppeling.
ENOMEM Onvoldoende kernelgeheugen voorhanden.
ENOTDIR
Een onderdeel gebruikt als map in padnaam is in feite geen map.
ENOTDIR
(faccessat()) padnaam is relatief en mapbi is een bestand beschrijving die wijst naar een bestand
in plaats van een map.
EPERM Schrijf toestemming werd gevraagd voor een bestand op een alleen-lezen bestandssysteem. Zie ook
ioctl_iflags(2).
EROFS Schrijf toestemming werd gevraagd voor een bestand op een alleen-lezen bestandsysteem.
ETXTBSY
Schrijf toegang werd gevraagd aan een uitvoerbaar bestand dat wordt uitgevoerd.
VERSIES
faccessat() werd toegevoegd aan Linux in 2.6.16; bibliotheek ondersteuning werd toegevoegd aan glibc
2.4.
faccessat2() werd toegevoegd aan Linux 5.8.
VOLDOET AAN
access(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
faccessat(): POSIX.1-2008.
faccessat2(): Linux-specifiek.
OPMERKINGEN
Waarschuwing: Deze aanroepen gebruiken om te controleren of een gebruiker is gerechtigd om, bij
voorbeeld, een bestand te openen alvorens het echt te doen door open(2) te gebruiken, creëert een
veiligheidslek, omdat de gebruiker het korte tijdinterval tussen de controle en het openen van het
bestand kan gebruiken om het te manipuleren. Om deze reden moet het gebruik van deze systeem aanroep
worden vermeden. (In het hier beschreven voorbeeld, is een veiliger alternatie om tijdelijk het
effectieve gebruikers ID te veranderen naar het echte ID en dan open(2) aan te roepen.)
access() volgt symbolische koppelingen altijd. Als u de rechten van een symbolische koppeling zelf wilt
controleren, gebruik dan faccessat() met de vlag AT_SYMLINK_NOFOLLOW.
Deze aanroepen geven een fout terug zodra een van de toegang typen in toestand wordt geweigerd, zelfs als
een van de andere typen in toestand wordt toegestaan.
Als het aanroepende proces gepaste rechten heeft (m.a.w. systeembeheerder), staat POSIX.1-2001 een
implementatie toe om succes te melden voor een X_OK controle zelfs als géén van de uitvoer-recht bits
zijn gezet. Linux doet dit niet.
Een bestand is alleen toegankelijk als de rechten in elk van de mappen in het pad voorvoegsel van padnaam
zoeken toestaat (m.a.w. uitvoer) recht heeft. Als enige map niet toegankelijk is dan zal de access()
aanroep falen, onafhankelijk van de rechten van het bestand zelf.
Alleen toegangs bits worden gecontroleerd, niet het bestandstype of inhoud. Daarom, als de map als
schrijfbaar werd bevonden, betekent dit dat hoogstwaarschijnlijk bestanden in deze map kunnen worden
aangemaakt, en niet dat de map als een bestand kan worden geschreven. Vergelijkbaar, kan een DOS bestand
gevonden worden als "uitvoerbaar", maar de execve(2) aanroep zal falen.
Deze aanroepen kunnen niet correct werken op een NFSv2 bestandssysteem met UID-mapping ingeschakeld,
omdat UID-mapping op de server plaats vind en onzichtbaar is vanaf de client, die de rechten
controleert, (NFS versie 3 en hoger voeren de controle op de server uit.) Vergelijkbare problemen kunnen
optreden op FUSE koppeling.
C library/kernel verschillen
De onbewerkte faccessat() systeem aanroep gebruikt alleen de eerste drie argumenten. De AT_EACCESS en
AT_SYMLINK_NOFOLLOW vlaggen zijn daadwerkelijk geïmplementeerd. in de glibc omwikkel functie voor
faccessat(). Als een van deze vlaggen werd opgegeven, dan gebruikt de omwikkel functie fstatat(2) om de
toegangsrechten te bepalen.
Glibc-opmerkingen
Op oudere kernels waar faccessat() niet beschikbaar is (en indien de AT_EACCESS en AT_SYMLINK_NOFOLLOW
vlaggen werden niet opgegeven, valt de glibc omwikkel functie terug op het gebruik van access(). Als
padnaam een relatieve padnaam is, dan construeert glibc een padnaam gebaseerd op de symbolische koppeling
in /proc/self/fd die overeenkomt met het mapbi argument.
BUGS
Omdat de Linux kernel´ faccessat() systeem aanroep het vlaggen argument niet ondersteund, emuleert
glibc´s faccessat() omwikkel functie, voorzien in glibc 2.32 en eerder, de vereiste functionaliteit
gebruik makende van een combinatie van de faccessat() systeem aanroep en fstatat(2). Hoewel deze
emulatie ACL´s niet in in aanmerking neemt. Vanaf glibc 2.33, vermijd de omwikkel functie deze bug door
gebruik te maken van de faccessat2() systeem aanroep waar het in wordt voorzien de de onderliggende
kernel.
In Linux 2.4 (en eerder) is iets vreemds in het behandelen van X_OK testen voor de systeembeheerder.
Wanneer alle categorieën van uitvoer-rechten zijn uitgeschakeld voor een niet-map bestand, dan is de
enige access() test die -1 retourneert is wanneer toestand werd gespecificeerd als alleen X_OK; indien
R_OK of W_OK ook werden gespecificeerd in toestand, dan retourneert access() een 0 voor zulke bestanden.
Vroegere Linux 2.6 kernels (tot en met Linux 2.6.3) gedroegen zich op dezelfde manier als Linux 2.4.
In Linux voor 2.6.20, ignoreerden deze aanroepen het effect van de MS_NOEXEC vlag als deze was gebruikt
om te mount(2)´en het onderliggende bestandssysteem. Vanaf kernel 2.6.20 wordt de MS_NOEXEC vlag
gehonoreerd.
ZIE OOK
chmod(2), chown(2), open(2), setgid(2), setuid(2), stat(2), euidaccess(3), credentials(7),
path_resolution(7), symlink(7)
VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Mario Blättermann
<mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de
Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-
dutch@lists.debian.org.
Linux man-pagina's 6.03 5 februari 2023 access(2)