110 lines
2.7 KiB
Groff
110 lines
2.7 KiB
Groff
.\" Copyright (c) 1980 Regents of the University of California.
|
|
.\" All rights reserved. The Berkeley software License Agreement
|
|
.\" specifies the terms and conditions for redistribution.
|
|
.\"
|
|
.\" @(#)access.2 6.5 (Berkeley) 5/22/86
|
|
.\"
|
|
.TH ACCESS 2 "May 22, 1986"
|
|
.UC 4
|
|
.SH NAME
|
|
access \- determine accessibility of file
|
|
.SH SYNOPSIS
|
|
.ft B
|
|
.nf
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
.PP
|
|
.ft B
|
|
.ta 1.25i 1.6i
|
|
.nf
|
|
#define R_OK 4 /* test for read permission */
|
|
#define W_OK 2 /* test for write permission */
|
|
#define X_OK 1 /* test for execute (search) permission */
|
|
#define F_OK 0 /* test for presence of file */
|
|
.PP
|
|
.ft B
|
|
.nf
|
|
int access(const char *\fIpath\fP, mode_t \fImode\fP)
|
|
.ft R
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.B Access
|
|
checks the given
|
|
file
|
|
.I path
|
|
for accessibility according to
|
|
.IR mode ,
|
|
which is an inclusive or of the bits
|
|
.BR R_OK ,
|
|
.BR W_OK
|
|
and
|
|
.BR X_OK .
|
|
Specifying
|
|
.I mode
|
|
as
|
|
.B F_OK
|
|
(i.e., 0)
|
|
tests whether the directories leading to the file can be
|
|
searched and the file exists.
|
|
.PP
|
|
The real user ID and the group access list
|
|
(including the real group ID) are
|
|
used in verifying permission, so this call
|
|
is useful to set-UID programs.
|
|
.PP
|
|
Notice that only access bits are checked.
|
|
A directory may be indicated as writable by
|
|
.BR access ,
|
|
but an attempt to open it for writing will fail
|
|
(although files may be created there);
|
|
a file may look executable, but
|
|
.B execve
|
|
will fail unless it is in proper format.
|
|
.SH "RETURN VALUE
|
|
If
|
|
.I path
|
|
cannot be found or if any of the desired access modes would
|
|
not be granted, then a \-1 value is returned; otherwise
|
|
a 0 value is returned.
|
|
.SH "ERRORS
|
|
Access to the file is denied if one or more of the following are true:
|
|
.TP 15
|
|
[ENOTDIR]
|
|
A component of the path prefix is not a directory.
|
|
.TP 15
|
|
[ENAMETOOLONG]
|
|
The path name exceeds PATH_MAX characters.
|
|
.TP 15
|
|
[ENOENT]
|
|
The named file does not exist.
|
|
.TP 15
|
|
[EACCES]
|
|
Search permission is denied for a component of the path prefix.
|
|
.TP 15
|
|
[ELOOP]
|
|
Too many symbolic links were encountered in translating the pathname.
|
|
(Minix-vmd)
|
|
.TP 15
|
|
[EROFS]
|
|
Write access is requested for a file on a read-only file system.
|
|
.TP 15
|
|
[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. The owner of a file has permission checked with
|
|
respect to the ``owner'' read, write, and execute mode bits,
|
|
members of the file's group other than the owner have permission
|
|
checked with respect to the ``group'' mode bits, and all
|
|
others have permissions checked with respect to the ``other''
|
|
mode bits.
|
|
.TP 15
|
|
[EFAULT]
|
|
.I Path
|
|
points outside the process's allocated address space.
|
|
.TP 15
|
|
[EIO]
|
|
An I/O error occurred while reading from or writing to the file system.
|
|
.SH "SEE ALSO
|
|
.BR chmod (2),
|
|
.BR stat (2).
|