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

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)