Rechercher une page de manuel

Chercher une autre page de manuel:

access

Autres langues

Langue: fr

Version: 18 juillet 2003 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

NOM

access - Vérifier les permissions d'accès à un fichier.

SYNOPSIS


#include <unistd.h>



int access(const char *pathname, int mode);

DESCRIPTION

access vérifie si le processus serait autorisé à lire, écrire, exécuter, ou tester l'existence d'un fichier (ou d'un autre objet appartenant au système de fichiers), dont le nom est pathname. Si pathname est un lien symbolique, ce sont les permissions du fichier pointé par celui-ci qui sont testées.

mode est un masque constitué des arguments liés par un OU binaire ( | ) R_OK, W_OK, X_OK et F_OK. Les requêtes R_OK, W_OK et X_OK servent respectivement à tester la lecture, l'écriture, et l'exécution du fichier. La requête F_OK teste l'existence du fichier.

Les tests dépendent des permissions des répertoires apparaissant dans le chemin pathname et éventuellement des liens symboliques rencontrés sur ce chemin.

Le test est effectué avec les User-ID et Group-ID réels du processus, plutôt qu'avec les IDs effectifs qui sont utilisés lorsque l'on tente l'opération. Ceci permet aux programmes Set-UID de déterminer les autorisations de l'utilisateur ayant invoqué le programme.

Seuls les bits d'accès sont vérifiés, et non pas le contenu du fichier. Ainsi si l'autorisation d'écriture dans un répertoire, indique la possibilité d'y créer des fichiers, et pas d'y écrire comme dans un fichier. De même, un fichier DOS peut être considéré comme exécutable, alors que l'appel execve(2) échouera évidemment.

Si le processus a les privilèges suffisants, une implémentation peut indiquer un succès pour X_OK même si le fichier n'a aucun bit d'exécution positionné.

VALEUR RENVOYÉE

L'appel renvoie 0 s'il réussit (toutes les requêtes sont autorisées), ou -1 s'il échoue (au moins une requête du mode est interdite), auquel cas errno contient le code d'erreur.

ERREURS

access doit échouer si :
EACCES
L'accès serait refusé au fichier lui-même, ou il n'est pas permis de parcourir l'un des répertoires de pathname.
ELOOP
Trop de liens symboliques ont été rencontrés en parcourant pathname.
ENAMETOOLONG
pathname est trop long.
ENOENT
Un répertoire contenu dans le pathname aurait été accessible mais n'existe pas, ou est un lien symbolique pointant dans le vide.
ENOTDIR
Un élément contenu dans le chemin pathname n'est pas un répertoire.
EROFS
On demande une écriture sur un système de fichiers en lecture-seule.

access peut échouer si :

EFAULT
pathname pointe en dehors de l'espace d'adressage accessible.
EINVAL
mode était mal spécifié.
EIO
Une erreur d'entrée/sortie s'est produite.
ENOMEM
Le noyau n'a pas assez de mémoire.
ETXTBSY
On a demandé l'écriture dans un fichier exécutable qui en cours d'utilisation.

RESTRICTIONS

access renvoie une erreur si l'un quelconque des types d'accès est refusé, même si les autres sont acceptés.

access peut fonctionner incorrectement sur un serveur NFS si les correspondances d'UID sont activées, car ces correspondances sont gérées par le serveur, et masquées au client qui effectue les vérifications d'autorisation.

Utiliser access pour vérifier si un utilisateur a le droit, par exemple, d'ouvrir un fichier avant d'effectuer réellement l'ouverture avec open(2), risque de créer un trou de sécurité. En effet, l'utilisateur peut exploiter le petit intervalle de temps entre la vérification et l'accès pour modifier le fichier (via un lien symbolique en général).

CONFORMITÉ

SVID, AT&T, POSIX, X/OPEN, BSD 4.3

VOIR AUSSI

stat(2) open(2) chmod(2) chown(2) setuid(2) setgid(2).

TRADUCTION

Christophe Blaess, 1996-2003.
For a time I stood
pondering on circle sizes. The
large computer mainframe quietly
processed all of its assembly code. Inside my entire
hope lay for figuring out an elusive expansion. Value : pi.
Decimals expected soon. I nervously entered a format procedure.
The mainframe processed the request. Error. I, again entering it,
carefully retyped. This iteration gave zero error printouts in all - success.
Intently I waited. Soon, roused by thoughts within me, appeared narrative
mnemonics relating digits to verbiage ! The idea appeared to exist but only in
abbreviated fashion - little phrases typically. Pressing on I then resolved, deciding
firmly about a sum of decimals to use - likely around four hundred, presuming the
computer code soon halted ! Pondering these ideas, words appealed to me. But a
problem of zeros did exist. Pondering more, solution subsequently appeared. Zero
suggests a punctuation element. Very novel ! My thoughts were culminated. No periods, I
concluded. All residual marks of punctuation = zeros. First digit expansion answer then came
before me. On examining some problems unhappily arose. That imbecillic bug ! The printout I
processed showed four nine as foremost decimals. Manifestly troubling. Totally every number
looked wrong. Repairing the bug took much effort. A pi mnemonic with letters truly seemed
good. Counting of all the letters probably should suffice. Reaching for a record would be
helpful. Consequently, I continued, expecting a good final answer from computer. First
number slowly displayed on the flat screen -3. Good. Trailing digits apparently were right
also. Now my memory scheme must be probably implementable. The technique was
chosen, elegant in scheme : by self reference a tale mnemonically helpful was
ensured. An able title suddenly existed - "Circle Digits". Taking pen I began.
Words emanated uneasily. I desired more synonyms. Speedily I found my
(alongside me) Thesaurus. Rogets is probably an essential in doing this,
instantly I decided. I wrote and erased more. The Rogets clearly
assisted immensely. My story proceeded (how lovely !) faultlessly.
The end, above all, would soon joyfully overtake. So, this
memory helper story is incontestably complete. Soon I
will locate publisher. There a narrative will I
trust immediately appear producing
fame. The end.
-- Keith, Michael ; Circle digits : a self referential story