Rechercher une page de manuel
access
Langue: fr
Version: 23 juin 2004 (ubuntu - 01/11/07)
Section: 2 (Appels système)
Sommaire
NOM
access - Vérifier les permissions d'accès à un fichierSYNOPSIS
#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 cibles des liens symboliques rencontrés sur ce chemin.
Le test est effectué avec les UID et GID 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, l'autorisation d'écriture dans un répertoire indique la possibilité d'y créer des fichiers et non 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 du préfixe du chemin de pathname. (Voir aussi path_resolution(2).)
- ELOOP
- Trop de liens symboliques ont été rencontrés en parcourant pathname.
- ENAMETOOLONG
- pathname est trop long.
- ENOENT
- Un composant du chemin d'accès pathname n'existe pas ou est un lien symbolique pointant nulle part.
- ENOTDIR
- Un élément utilisé 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
- Pas assez de mémoire pour le noyau.
- ETXTBSY
- On a demandé l'écriture dans un fichier exécutable qui est en cours d'utilisation.
NOTES SUR LINUX
Dans les noyaux antérieurs à 2.6.20, access() ignorait l'effet de l'attribut MS_NOEXEC s'il était utilisé pour monter le système de fichiers correspondant (avec mount(2)). Depuis Linux 2.6.20, access() prend en compte cet attribut.RESTRICTIONS
access() renvoie une erreur si l'un 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É
SVr4, BSD 4.3, POSIX.1-2001.VOIR AUSSI
chmod(2), chown(2), faccessat(2), open(2), path_resolution(2), setgid(2), setuid(2), stat(2)TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006, et mise à disposition sur http://manpagesfr.free.fr/.Les mises à jour et corrections de la version présente dans Debian sont directement gérées par Julien Cristau <jcristau@debian.org> et l'équipe francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».
-+- Oswald Spengler, Der Untergang des Abendlandes -+-
Contenus ©2006-2008 Benjamin Poulain
Design ©2006-2008 Maxime Vantorre