Differences between current version and revision by previous author of access(2).
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 2 | Last edited on Monday, October 28, 2002 8:40:16 pm | by PerryLorier | |
Older page: | version 1 | Last edited on Tuesday, June 4, 2002 12:23:39 am | by perry | Revert |
@@ -1,45 +1,31 @@
ACCESS
!!!ACCESS
-NAME
-SYNOPSIS
-DESCRIPTION
-RETURN VALUE
-ERRORS
-RESTRICTIONS
-CONFORMING TO
-SEE ALSO
+
----
!!NAME
access - check user's permissions for a file
!!SYNOPSIS
-__#include
-__''pathname''__, int__ ''mode''__);
-
__
+
__#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 file
-referred
to by this symbolic link are tested.
-
+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__.
+''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
@@ -58,110 +44,45 @@
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.
-__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)
-----
+stat(2), open(2), chmod(2), chown(2), setuid(2), setgid(2)