1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
.\" 1993 Michael Haardt, Ian Jackson.
.\"
.\" 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.
.\"
.\" Modified Wed Jul 21 19:36:29 1993, Rik Faith (faith@cs.unc.edu)
.\" Modified 21 Aug 1994 by Michael Chastain (mec@shell.portal.com):
.\" Removed note about old kernel (pre-1.1.44) using wrong id on path.
.\"
.\" Traduction 9/10/1996 par Christophe Blaess (ccb@club-internet.fr)
.\"
.TH ACCESS 2 "9 Octobre 1996" "Linux 1.2.13" "Manuel du programmeur Linux"
.SH NOM
access \- Verifier les permissions d'acces a un fichier.
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.sp
.BI "int access(const char *" pathname ", int " mode );
.fi
.SH DESCRIPTION
.B access
verifie si le processus serait autorise a lire, ecrire,
executer, ou tester l'existence d'un fichier (ou d'un autre objet
appartenant au systeme de fichiers), dont le nom est
.IR pathname .
Si
.I pathname
est un lien symbolique, ce sont les permissions du fichier pointe
par celui\-ci qui sont testees.
.I mode
est un masque constitue d'un ou plusieurs arguments lies par un
OU binaire ( | )
.BR R_OK ", " W_OK ", " X_OK " et " F_OK .
Les requetes
.BR R_OK ", " W_OK " et " X_OK
servent respectivement a tester la lecture, l'ecriture, et
l'execution du fichier.
La requete
.B F_OK
teste si la verification d'existence du fichier serait autorisee (ceci
dependant des permissions des repertoires apparaissant dans le chemin
.I pathname
et eventuellement des liens symboliques rencontres sur ce chemin).
Le test est effectue avec les User-ID et Group-ID
.I reels
du processus, plutot qu'avec les IDs effectifs qui sont
utilises lorsque l'on tente l'operation. Ceci permet aux
programmes Set-UID de determiner les autorisations de l'utilisateur
ayant invoque le programme.
Seuls les bits d'acces sont verifies, et non pas le contenu du fichier.
Ainsi si l'ecriture est autorisee dans un repertoire, ceci signifie que
l'on peut creer des fichiers dans ce repertoire, et non pas que
l'on puisse y ecrire comme dans un fichier.
Egalement, un fichier DOS peut etre considere comme executable, alors
que l'appel systeme
.BR execve (2)
echouera evidemment.
.SH "VALEUR RENVOYEE"
.BR access
renvoie 0 s'il reussit, ou \-1 s'il echoue, auquel cas
.I errno
contient le code d'erreur.
.SH RESTRICTIONS
.B access
renvoie une erreur si l'un quelconque des types d'acces est refuse,
meme si les autres sont acceptes.
.P
Il est possible
.RB "qu'" access
ne fonctionne pas correctement sur un serveur NFS si les correspondances
d'UID son activees, car ces correspondances sont gerees par le serveur,
et masquees au client qui effectue les verifications d'autorisation.
.SH ERREURS
.TP 0.8i
.B EACCES
L'acces serait refuse, soit au fichier lui-meme, soit a l'un des
repertoires dans
.IR pathname .
.TP
.B EFAULT
.IR pathname " pointe en dehors de l'espace d'adressage accessible."
.TP
.B EINVAL
.IR mode " etait mal specifie."
.TP
.B ENAMETOOLONG
.IR pathname " est trop long."
.TP
.B ENOENT
Un repertoire contenu dans le
.I pathname
aurait ete accessible mais n'existe pas ou est un lien symbolique
pointant dans le vide.
.TP
.B ENOTDIR
Un element contenu dans le chemin
.I pathname
n'est pas un repertoire.
.TP
.B ENOMEM
Pas assez de memoire pour le noyau.
.TP
.B ELOOP
.I pathname
contient une reference circulaire (a travers un lien
symbolique).
.SH EXEMPLE
.nf
#include <stdio.h>
#include <unistd.h>
int
main (void)
{
char * nom_fichier = "/etc/passwd";
if (access (nom_fichier, W_OK) == 0) {
fprintf (stdout, "Ecriture Ok !");
if (getuid() != 0) { /* 0 <=> Super-User */
fprintf (stdout, "Danger !");
}
}
return (0);
}
.fi
.SH "CONFORMITE"
SVID, AT&T, POSIX, X/OPEN, BSD 4.3
.SH "VOIR AUSSI"
.BR stat "(2), " open "(2), " chmod "(2), " chown "(2), "
.BR setuid "(2), " setgid (2).
|