Provided by: manpages-nl-dev_4.27.0-1_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_EMPTY_PATH (vanaf Linux 5.8)
              Als padnaam een lege tekenreeks is, verwerk dan het bestand aangewezen door dirfd  (die  kan  zijn
              verkregen  door het gebruik van de open(2) O_PATH vlag). In dit geval kan dirfd verwijzen naar elk
              type bestand, niet alleen een map. Als dirfd gelijk is aan AT_FDCWD, dan werkt de  aanroep  op  de
              huidige  werkmap.  Deze  vlag  is  Linux-specifiek;   definieer  _GNU_SOURCE  om zijn definitie te
              verkrijgen.

       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
              FS_IOC_SETFLAGS(2const).

       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

       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.

   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.

VOLDOET AAN

       access()
       faccessat()
              POSIX.1-2008.

       faccessat2()
              Linux.

GESCHIEDENIS

       access()
              SVr4, 4.3BSD, POSIX.1-2001.

       faccessat()
              Linux 2.6.16, glibc 2.4.

       faccessat2()
              Linux 5.8.

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.

       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.

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.9.1                          13 juni 2024                                         access(2)