access(2)

NAME

access, eaccess - check accessibility of a file

LIBRARY

Standard C Library (libc, -lc)

SYNOPSIS

#include <unistd.h>
int
access(const char *path, int mode);
int
eaccess(const char *path, int mode);

DESCRIPTION

The access() and eaccess() system calls check the accessi
bility of the
file named by the path argument for the access permissions
indicated by
the mode argument. The value of mode is either the bitwise
inclusive OR
of the access permissions to be checked (R_OK for read per
mission, W_OK
for write permission, and X_OK for execute/search permis
sion), or the
existence test (F_OK).
For additional information, see the File Access Permission
section of
intro(2).
The eaccess() system call uses the effective user ID and the
group access
list to authorize the request; the access() system call uses
the real
user ID in place of the effective user ID, the real group ID
in place of
the effective group ID, and the rest of the group access
list.
Even if a process's real or effective user has appropriate
privileges and
indicates success for X_OK, the file may not actually have
execute permission bits set. Likewise for R_OK and W_OK.

RETURN VALUES

The function returns the value 0 if successful; otherwise
the value -1 is
returned and the global variable errno is set to indicate
the error.

ERRORS

Access to the file is denied if:

[ENOTDIR] A component of the path prefix is not a
directory.
[ENAMETOOLONG] A component of a pathname exceeded 255
characters, or
an entire path name exceeded 1023 charac
ters.
[ENOENT] The named file does not exist.
[ELOOP] Too many symbolic links were encountered
in translat
ing the pathname.
[EROFS] Write access is requested for a file on a
read-only
file system.
[ETXTBSY] Write access is requested for a pure pro
cedure (shared
text) file presently being executed.
[EACCES] Permission bits of the file mode do not
permit the
requested access, or search permission is
denied on a
component of the path prefix.
[EFAULT] The path argument points outside the pro
cess's allo
cated address space.
[EIO] An I/O error occurred while reading from
or writing to
the file system.

SECURITY CONSIDERATIONS

The access() system call is a potential security hole due to
race conditions and should never be used. Set-user-ID and set-group
ID applications should restore the effective user or group ID, and
perform actions
directly rather than use access() to simulate access checks
for the real
user or group ID. The eaccess() system call likewise may be
subject to
races if used inappropriately.

SEE ALSO

chmod(2), intro(2), stat(2)

STANDARDS

The access() system call is expected to conform to ISO/IEC
9945-1:1990
(``POSIX.1'').

HISTORY

The access() function appeared in Version 7 AT&T UNIX.
BSD September 21, 2001
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout