.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2004, 2006, 2007, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified 1993-07-21 Rik Faith (faith@cs.unc.edu) .\" Modified 1994-08-21 by Michael Chastain (mec@shell.portal.com): .\" Removed note about old kernel (pre-1.1.44) using wrong id on path. .\" Modified 1996-03-18 by Martin Schulze (joey@infodrom.north.de): .\" Stated more clearly how it behaves with symbolic links. .\" Added correction due to Nick Duffek (nsd@bbc.com), aeb, 960426 .\" Modified 1996-09-07 by Michael Haardt: .\" Restrictions for NFS .\" Modified 1997-09-09 by Joseph S. Myers .\" Modified 1998-01-13 by Michael Haardt: .\" Using access is often insecure .\" Modified 2001-10-16 by aeb .\" Modified 2002-04-23 by Roger Luethi .\" Modified 2004-06-23 by Michael Kerrisk .\" 2007-06-10, mtk, various parts rewritten, and added BUGS section. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ACCESS 2 "21 december 2020" Linux "Linux Programmeurs Handleiding" .SH NAAM access, faccessat, faccessat2 \- controleer gebruikers rechten voor een bestand. .SH SAMENVATTING .nf \fB#include \fP .PP \fBint access(const char *\fP\fIpadnaam\fP\fB, int \fP\fItoestand\fP\fB);\fP \fB#include \fP/* Definitie van AT_* constanten */ \fB#include \fP .PP \fBint faccessat(int \fP\fImapbi\fP\fB, const char *\fP\fIpadnaam\fP\fB, int \fP\fItoestand\fP\fB, int \fP\fIvlaggen\fP\fB);\fP /* Maar zie C library/kernel verschillen, hieronder */ \fBint faccessat(int \fP\fImapbi\fP\fB, const char *\fP\fIpadnaam\fP\fB, int \fP\fItoestand\fP\fB, int \fP\fIvlaggen\fP\fB);\fP .fi .PP .RS -4 Feature Test Macro´s eisen in glibc (zie \fBfeature_test_macros\fP(7)): .RE .PP \fBfaccessat\fP(): .PD 0 .ad l .RS 4 .TP 4 Vanaf glibc 2.10: _POSIX_C_SOURCE\ >=\ 200809L .TP Vóór glibc 2.10: _ATFILE_SOURCE .RE .ad .PD .SH BESCHRIJVING \fBaccess\fP() controleert of het aanroepende proces het bestand \fIpadnaam\fP mag benaderen. Als \fIpadnaam\fP een symbolische koppeling is, dan wordt deze zelf gebruikt. .PP .\" F_OK is defined as 0 on every system that I know of. De \fItoestand\fP specificeert welke toegangscontroles moeten gedaan worden, en is ofwel de waarde van \fBF_OK\fP, ofwel een masker bestaande uit een bitgewijze OF van een of meer van \fBR_OK\fP, \fBW_OK\fP, en \fBX_OK\fP. \fBF_OK\fP controleert op het bestaan van het bestand. \fBR_OK\fP, \fBW_OK\fP, en \fBX_OK\fP controleert of het bestand bestaat en respectievelijk lees, schrijf en uitvoer permissies toe staat. .PP De controle wordt gedaan gebruik makend van de \fIechte\fP UID en GID van het aanroepende proces, in plaats van de effectieve ID´s zoals gedaan tijdens het uitvoeren van een operatie (b.v. \fBopen\fP(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. .PP 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 , \fBaccess\fP() 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 \fIde gebruiker die mij aanriep\fP 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. .PP Als het aanroepende proces gerechtigd is (m.a.w. zijn effectieve UID is nul), dan zal een \fBX_OK\fP controle succesvol zijn voor een regulier bestand als het uitvoer\-recht is ingeschakeld voor een van de bestandsbits: eigenaar, groep of ander. .SS faccessat() De \fBfaccessat\fP() systeem aanroep werkt op precies dezelfde wijze als \fBaccess\fP(), behalve voor de hier beschreven verschillen. .PP Als het pad gegeven in \fIpadnaam\fP relatief is, dan wordt deze geïnterpreteerd als relatieve aan de map aangewezen door de bestandsbeschrijving \fImapbi\fP (in plaats van relatief aan de huidige werkmap van het aanroepende proces, zoals gedaan door \fBaccess\fP() voor een relatieve padnaam). .PP Als \fIpadnaam\fP relatief is en \fImapbi\fP heeft de speciale waarde \fBAT_FDCWD\fP, dan wordt \fIpadnaam\fP geïnterpreteerd als relatief aan de huidige werkmap van het aanroepende proces (zoals \fBaccess\fP()). .PP Als \fIpadnaam\fP absoluut is, dan wordt \fImapbi\fP genegeerd. .PP \fIvlaggen\fP wordt gemaakt door OF´en van een of meer van de volgendewaarden: .TP \fBAT_EACCESS\fP Voer toegangscontrole uit gebruikmakend van de effectieve gebruiker en groeps ID´s. Standaard gebruikt \fBfaccessat\fP() echte ID´s (zoals \fBaccess\fP()). .TP \fBAT_SYMLINK_NOFOLLOW\fP Als \fIpadnaam\fP een symbolische koppeling is, volg deze niet: in plaats daarvan, retourneer informatie over de koppeling zelf. .PP .\" Zie \fBopenat\fP(2) voor een uitleg over de noodzaak van \fBfaccessat\fP(). .SS faccessat2() De hierboven gegeven beschrijving van \fBfaccessat\fP() 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 \fBfaccessat\fP() systeem aanroep geen \fIvlaggen\fP argument heeft. Om te voorzien in een juiste implementatie, voegde Linux 5.8 de \fBfaccessat2\fP() systeem aanroep toe, die het \fIvlaggen\fP argument ondersteund en een juiste implementatie van de \fBfaccessat\fP() mogelijk maakt. .SH "EIND WAARDE" Bij succes (alle gevraagde permissies toegestaan, of \fItoestand\fP is \fBF_OK\fP en het bestand bestaat), nul wordt teruggegeven. Bij een fout (minstens een gevraagd bit in \fItoestand\fP voor een permissie werd geweigerd, of \fItoestand\fP is \fBF_OK\fP en het bestand bestaat niet, of een andere fout trad op), \-1 wordt terug gegeven, en \fIerrno\fP wordt gezet om de fout aan te duiden. .SH FOUTEN \fBaccess\fP() en \fBfaccessat\fP() moeten falen als: .TP \fBEACCES\fP De gevraagde toegang tot het bestand zou geweigerd worden, of zoek toestemming werd geweigerd in een van de mappen in \fIpadnaam\fP. Zie ook \fBpath_resolution\fP(7). .TP \fBELOOP\fP Teveel symbolische koppelingen werden tegengekomen bij het vaststellen van \fIpadnaam\fP. .TP \fBENAMETOOLONG\fP \fIpadnaam\fP is te lang. .TP \fBENOENT\fP Een map\-deel van \fIpadnaam\fP zou toegankelijk geweest zijn maar bestaat niet of was een zwevende symbolische koppeling. .TP \fBENOTDIR\fP Een onderdeel gebruikt als map in \fIpadnaam\fP is in feite geen map. .TP \fBEROFS\fP Schrijf toestemming werd gevraagd voor een bestand op een alleen\-lezen bestandsysteem. .PP \fBaccess\fP() en \fBfaccessat\fP() mogen falen als: .TP \fBEFAULT\fP \fIpadnaam\fP wijst buiten de voor u toegankelijke adresruimte. .TP \fBEINVAL\fP \fItoestand\fP werd ongeldig opgegeven. .TP \fBEIO\fP Een Invoer/Uitvoer fout trad op. .TP \fBENOMEM\fP Onvoldoende kernelgeheugen voorhanden. .TP \fBETXTBSY\fP Schrijf toegang werd gevraagd aan een uitvoerbaar bestand dat wordt uitgevoerd. .PP De volgende aanvullende fouten kunnen optreden voor \fBfaccessat\fP(): .TP \fBEBADF\fP \fImapbi\fP is geen geldige bestandsindicator. .TP \fBEINVAL\fP Ongeldige vlag opgegeven in \fIvlaggen\fP. .TP \fBENOTDIR\fP \fIpadnaam\fP is relatief en \fImapbi\fP is een bestandsindicator die naar een bestand wijst die geen map is. .SH VERSIES \fBfaccessat\fP() werd toegevoegd aan Linux in kernel 2.6.16; bibliotheek ondersteuning werd toegevoegd aan glibc in versie 2.4. .PP \fBfaccessat2\fP() werd toegevoegd aan Linux in versie 5.8. .SH "VOLDOET AAN" \fBaccess\fP(): SVr4, 4.3BSD, POSIX.1\-2001, POSIX.1\-2008. .PP \fBfaccessat\fP(): POSIX.1\-2008. .PP \fBfaccessat2\fP(): Linux\-specifiek. .SH OPMERKINGEN \fBWaarschuwing\fP: Deze aanroepen gebruiken om te controleren of een gebruiker is gerechtigd om, bij voorbeeld, een bestand te openen alvorens het echt te doen door \fBopen\fP(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. \fBOm deze reden moet het gebruik van deze systeem aanroep worden vermeden\fP. (In het hier beschreven voorbeeld, is een veiliger alternatie om tijdelijk het effectieve gebruikers ID te veranderen naar het echte ID en dan \fBopen\fP(2) aan te roepen.) .PP \fBaccess\fP() volgt symbolische koppelingen altijd. Als u de rechten van een symbolische koppeling zelf wilt controleren, gebruik dan \fBfaccessat\fP() met de vlag \fBAT_SYMLINK_NOFOLLOW\fP. .PP Deze aanroepen geven een fout terug zodra een van de toegang typen in \fItoestand\fP wordt geweigerd, zelfs als een van de andere typen in \fItoestand\fP wordt toegestaan. .PP .\" HPU-UX 11 and Tru64 5.1 do this. Als het aanroepende proces gepaste rechten heeft (m.a.w. systeembeheerder), staat POSIX.1\-2001 een implementatie toe om succes te melden voor een \fBX_OK\fP controle zelfs als géén van de uitvoer\-recht bits zijn gezet. Linux doet dit niet. .PP Een bestand is alleen toegankelijk als de rechten in elk van de mappen in het pad voorvoegsel van \fIpadnaam\fP zoeken toestaat (m.a.w. uitvoer) recht heeft. Als enige map niet toegankelijk is dan zal de \fBaccess\fP() aanroep falen, onafhankelijk van de rechten van het bestand zelf. .PP 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 \fBexecve\fP(2) aanroep zal falen. .PP .\" .\" 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. .SS "C library/kernel verschillen" .\" De onbewerkte \fBfaccessat\fP() systeem aanroep gebruikt alleen de eerste drie argumenten. De \fBAT_EACCESS\fP en \fBAT_SYMLINK_NOFOLLOW\fP vlaggen zijn daadwerkelijk geïmplementeerd. in de glibc omwikkel functie voor \fBfaccessat\fP(). Als een van deze vlaggen werd opgegeven, dan gebruikt de omwikkel functie \fBfstatat\fP(2) om de toegangsrechten te bepalen. .SS Glibc\-opmerkingen Op oudere kernels waar \fBfaccessat\fP() niet beschikbaar is (en indien de \fBAT_EACCESS\fP en \fBAT_SYMLINK_NOFOLLOW\fP vlaggen werden niet opgegeven, valt de glibc omwikkel functie terug op het gebruik van \fBaccess\fP(). Als \fIpadnaam\fP een relatieve padnaam is, dan construeert glibc een padnaam gebaseerd op de symbolische koppeling in \fI/proc/self/fd\fP die overeenkomt met het \fImapbi\fP argument. .SH BUGS Omdat de Linux kernel´ \fBfaccessat\fP() systeem aanroep het \fIvlaggen\fP argument niet ondersteund, emuleert glibc´s \fBfaccessat\fP() omwikkel functie, voorzien in glibc 2.32 en eerder, de vereiste functionaliteit gebruik makende van een combinatie van de \fBfaccessat\fP() systeem aanroep en \fBfstatat\fP(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 \fBfaccessat2\fP() systeem aanroep waar het in wordt voorzien de de onderliggende kernel. .PP .\" This behavior appears to have been an implementation accident. In kernel 2.4 (en eerder) is er iets vreemds in het behandelen van \fBX_OK\fP testen voor de systeembeheerder. Wanneer alle categorieën van uitvoer\-rechten zijn uitgeschakeld voor een niet\-map bestand, dan is de enige \fBaccess\fP() test die \-1 retourneert is wanneer \fItoestand\fP werd gespecificeerd als alleen \fBX_OK\fP; indien \fBR_OK\fP of \fBW_OK\fP ook werden gespecificeerd in \fItoestand\fP, dan retourneert \fBaccess\fP() een 0 voor zulke bestanden. Vroegere 2.6 kernels (tot en met 2.6.3) gedroegen zich op dezelfde manier als kernel 2.4. .PP In kernels voor 2.6.20, ignoreerden deze aanroepen het effect van de \fBMS_NOEXEC\fP vlag als deze was gebruikt om te \fBmount\fP(2)´en het onderliggende bestandssysteem. Vanaf kernel 2.6.20 wordt de \fBMS_NOEXEC\fP vlag gehonoreerd. .SH "ZIE OOK" \fBchmod\fP(2), \fBchown\fP(2), \fBopen\fP(2), \fBsetgid\fP(2), \fBsetuid\fP(2), \fBstat\fP(2), \fBeuidaccess\fP(3), \fBcredentials\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH COLOFON Deze pagina is onderdeel van release 5.10 van het Linux \fIman\-pages\fP\-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. .PP .SH VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Mario Blättermann en Luc Castermans . .PP Deze vertaling is vrije documentatie; lees de .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. .PP Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar .MT debian-l10n-dutch@lists.debian.org .ME .