Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
access(2)
Edit
PageHistory
Diff
Info
LikePages
ACCESS !!!ACCESS ---- !!NAME access - check user's permissions for a file !!SYNOPSIS __#include <unistd.h>__ __access(char *__''pathname''__, int__ ''mode''__);__ !!DESCRIPTION __access__ checks whether the process would be allowed to read, write or test for existence of the file (or other file system object) whose name is ''pathname''. If ''pathname'' is a symbolic link permissions of the filereferred to by this symbolic link are tested. ''mode'' is a mask consisting of one or more of __R_OK__, __W_OK__, __X_OK__ and __F_OK__. __R_OK__, __W_OK__ and __X_OK__ request checking whether the file exists and has read, write and execute permissions, respectively. __F_OK__ just requests checking for the existence of the file. The tests depend on the permissions of the directories occurring in the path to the file, as given in ''pathname'', and on the permissions of directories and files referred to by symbolic links encountered on the way. The check is done with the process's ''real'' uid and gid, rather than with the effective ids as is done when actually attempting an operation. This is to allow set-UID programs to easily determine the invoking user's authority. Only access bits are checked, not the file type or contents. Therefore, if a directory is found to be execve__(2) call will still fail. !!RETURN VALUE On success (all requested permissions granted), zero is returned. On error (at least one bit in ''mode'' asked for a permission that is denied, or some other error occurred), -1 is returned, and ''errno'' is set appropriately. !!ERRORS ;[EACCES]: The requested access would be denied to the file or search permission is denied to one of the directories in ''pathname''. ;[EROFS]: Write permission was requested for a file on a read-only filesystem. ;[EFAULT]: ''pathname'' points outside your accessible address space. ;[EINVAL]: ''mode'' was incorrectly specified. ;[ENAMETOOLONG]: ''pathname'' is too long. ;[ENOENT]: A directory component in ''pathname'' would have been accessible but does not exist or was a dangling symbolic link. ;[ENOTDIR]: A component used as a directory in ''pathname'' is not, in fact, a directory. ;[ENOMEM]: Insufficient kernel memory was available. ;[ELOOP]: Too many symbolic links were encountered in resolving ''pathname''. ;[EIO]: An I/O error occurred. !!RESTRICTIONS __access__ returns an error if any of the access types in the requested call fails, even if other types might be successful. __access__ may not work correctly on NFS file systems with UID mapping enabled, because UID mapping is done on the server and hidden from the client, which checks permissions. Using __access__ to check if a user is authorized to e.g. open a file before actually doing so using open(2) creates a security hole, because the user might exploit the short time interval between checking and opening the file to manipulate it. !!CONFORMING TO SVID, AT !!SEE ALSO stat(2), open(2), chmod(2), chown(2), setuid(2), setgid(2)
6 pages link to
access(2)
:
perldelta(1)
Man2a
access(1)
csh(1)
lsof(8)
syscalls(2)
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.