Provided by: manpages-nl-dev_4.15.0-9_all bug

NAAM

       access, faccessat, faccessat2- controleer gebruikers rechten voor een bestand.

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.

       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 kernel 2.6.16; bibliotheek ondersteuning werd
       toegevoegd aan glibc in versie 2.4.

       faccessat2()  werd toegevoegd aan Linux in versie 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 kernel 2.4 (en eerder) is er 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 2.6  kernels  (tot
       en met 2.6.3) gedroegen zich op dezelfde manier als kernel 2.4.

       In  kernels  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)

COLOFON

       Deze  pagina  is  onderdeel  van  release  5.13  van  het  Linux  man-pages-project.   Een
       beschrijving  van  het  project, informatie over het melden van bugs en de nieuwste versie
       van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.