Table of Contentsaccess - check user's permissions for a file #include <unistd.h>
int access(const char *pathname, int mode); 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. 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 testing for reading, writing and executing the file, respectively. F_OK requests checking whether merely testing for the existence of the file would be allowed (this depends on the permissions of the directories in the path to the file, as given in pathname.)
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 "writable," it probably means that files can be created in the directory, and not that the directory can be written as a file. Similarly, a DOS file may be found to be "executable," but the execve(2) call will still fail.
On success, zero is returned. On error, -1 is returned, and errno is set appropriately. - EACCES
- The requested access would be denied, either to the file itself or one of the directories in pathname.
- 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
- pathname contains a reference to a circular symbolic link, i.e., a symbolic link containing a reference to itself.
SVID, AT&T, POSIX, X/OPEN, BSD 4.3 stat(2), open(2), chmod(2), chown(2), setuid(2), setgid(2).
Table of Contents
www.fiveanddime.net