1.\"	$OpenBSD: access.2,v 1.11 2005/08/10 01:06:13 jaredy Exp $
2.\"	$NetBSD: access.2,v 1.7 1995/02/27 12:31:44 cgd Exp $
3.\"
4.\" Copyright (c) 1980, 1991, 1993
5.\"	The Regents of the University of California.  All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\" 3. Neither the name of the University nor the names of its contributors
16.\"    may be used to endorse or promote products derived from this software
17.\"    without specific prior written permission.
18.\"
19.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29.\" SUCH DAMAGE.
30.\"
31.\"     @(#)access.2	8.2 (Berkeley) 4/1/94
32.\"
33.Dd April 1, 1994
34.Dt ACCESS 2
35.Os
36.Sh NAME
37.Nm access
38.Nd check access permissions of a file or pathname
39.Sh SYNOPSIS
40.Fd #include <unistd.h>
41.Ft int
42.Fn access "const char *path" "int mode"
43.Sh DESCRIPTION
44The
45.Fn access
46function checks the accessibility of the file named by
47.Fa path
48for the access permissions indicated by
49.Fa mode .
50The value of
51.Fa mode
52is the bitwise inclusive
53.Tn OR
54of the access permissions to be checked
55.Pf ( Dv R_OK
56for read permission,
57.Dv W_OK
58for write permission, and
59.Dv X_OK
60for execute/search permission) or the existence test,
61.Dv F_OK .
62All components of the pathname
63.Fa path
64are checked for access permissions (including
65.Dv F_OK ) .
66.Pp
67The real user ID is used in place of the effective user ID
68and the real group access list
69(including the real group ID) is
70used in place of the effective ID for verifying permission.
71.Pp
72Even if a process has appropriate privileges and indicates success for
73.Dv X_OK ,
74the file may not actually have execute permission bits set.
75Likewise for
76.Dv R_OK
77and
78.Dv W_OK .
79.Sh RETURN VALUES
80If
81.Fa path
82cannot be found or if any of the desired access modes would not be granted,
83then a \-1 value is returned; otherwise a 0 value is returned.
84.Sh ERRORS
85Access to the file is denied if:
86.Bl -tag -width Er
87.It Bq Er ENOTDIR
88A component of the path prefix is not a directory.
89.It Bq Er ENAMETOOLONG
90A component of a pathname exceeded
91.Dv {NAME_MAX}
92characters, or an entire path name exceeded
93.Dv {PATH_MAX}
94characters.
95.It Bq Er ENOENT
96The named file does not exist.
97.It Bq Er ELOOP
98Too many symbolic links were encountered in translating the pathname.
99.It Bq Er EROFS
100Write access is requested for a file on a read-only file system.
101.It Bq Er ETXTBSY
102Write access is requested for a pure procedure (shared text)
103file presently being executed.
104.It Bq Er EACCES
105Permission bits of the file mode do not permit the requested access,
106or search permission is denied on a component of the path prefix.
107The owner of a file has permission checked with respect to the
108.Dq owner
109read, write, and execute mode bits, members of the file's group other
110than the owner have permission checked with respect to the
111.Dq group
112mode bits, and all others have permissions checked with respect to the
113.Dq other
114mode bits.
115.It Bq Er EFAULT
116.Fa path
117points outside the process's allocated address space.
118.It Bq Er EIO
119An I/O error occurred while reading from or writing to the file system.
120.It Bq Er EINVAL
121An invalid value was specified for
122.Ar mode .
123.El
124.Sh SEE ALSO
125.Xr chmod 2 ,
126.Xr stat 2
127.Sh STANDARDS
128The
129.Fn access
130function conforms to
131.St -p1003.1-90 .
132.Sh CAVEATS
133.Fn access
134is a potential security hole and should never be used.
135