.\" -*- 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 .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 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 "30 maart 2023" "Linux man\-pagina's 6.05.01" .SH NAAM access, faccessat, faccessat2 \- controleer gebruikers rechten voor een bestand. .SH BIBLIOTHEEK Standard C bibliotheek (\fIlibc\fP, \fI\-lc\fP) .SH SAMENVATTING .nf \fB#include \fP .PP \fBint access(const char *\fP\fIpadnaam\fP\fB, int \fP\fItoestand\fP\fB);\fP .PP \fB#include \fP /* Definitie van \fBAT_*\fP 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 */ .PP \fB#include \fP /* Definitie van \fBAT_*\fP constanten */ \fB#include \fP /*Definitie van \fBSYS_*\fP constanten */ \fB#include \fP .PP \fBint syscall(SYS_faccessat2,\fP \fB int \fP\fImapbi\fP\fB, const char *\fP\fIpathname\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(): .nf Vanaf glibc 2.10: _POSIX_C_SOURCE >= 200809L Voor glibc 2.10: _ATFILE_SOURCE .fi .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 .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 \fBEBADF\fP (\fBfaccessat\fP()) \fIpadnaam\fP is relatief maar \fImapbi\fP is noch \fBAT_FDCWD\fP (\fBfaccessat\fP()) noch een geldige bestandsbeschrijving. .TP \fBEFAULT\fP \fIpadnaam\fP wijst buiten de voor u toegankelijke adresruimte. .TP \fBEINVAL\fP \fItoestand\fP werd ongeldig opgegeven. .TP \fBEINVAL\fP (\fBfaccessat\fP()) Ongeldige vlag opgegeven in \fIvlaggen\fP. .TP \fBEIO\fP Een Invoer/Uitvoer fout trad op. .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 \fBENOMEM\fP Onvoldoende kernelgeheugen voorhanden. .TP \fBENOTDIR\fP Een onderdeel gebruikt als map in \fIpadnaam\fP is in feite geen map. .TP \fBENOTDIR\fP (\fBfaccessat\fP()) \fIpadnaam\fP is relatief en \fImapbi\fP is een bestand beschrijving die wijst naar een bestand in plaats van een map. .TP \fBEPERM\fP Schrijf toestemming werd gevraagd voor een bestand op een alleen\-lezen bestandssysteem. Zie ook \fBioctl_iflags\fP(2). .TP \fBEROFS\fP Schrijf toestemming werd gevraagd voor een bestand op een alleen\-lezen bestandsysteem. .TP \fBETXTBSY\fP Schrijf toegang werd gevraagd aan een uitvoerbaar bestand dat wordt uitgevoerd. .SH VERSIES .\" 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. .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 "VOLDOET AAN" .TP \fBaccess\fP() .TQ \fBfaccessat\fP() POSIX.1\-2008. .TP \fBfaccessat2\fP() Linux. .SH GESCHIEDENIS .TP \fBaccess\fP() SVr4, 4.3BSD, POSIX.1\-2001. .TP \fBfaccessat\fP() Linux 2.6.16, glibc 2.4. .TP \fBfaccessat2\fP() Linux 5.8. .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 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. .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 Linux 2.4 (en eerder) is 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 Linux 2.6 kernels (tot en met Linux 2.6.3) gedroegen zich op dezelfde manier als Linux 2.4. .PP In Linux 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) .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 .