|
|
1.1 root 1: .TH ACCESS 2 "18 July 1983"
2: .UC 4
3: .SH NAME
4: access \- determine accessibility of file
5: .SH SYNOPSIS
6: .nf
7: .ft B
8: #include <sys/file.h>
9: .PP
10: .ft B
11: .ta 1.25i 1.6i
12: #define R_OK 4 /* test for read permission */
13: #define W_OK 2 /* test for write permission */
14: #define X_OK 1 /* test for execute (search) permission */
15: #define F_OK 0 /* test for presence of file */
16: .PP
17: .ft B
18: accessible = access(path, mode)
19: int accessible;
20: char *path;
21: int mode;
22: .ft R
23: .fi
24: .SH DESCRIPTION
25: .I Access
26: checks the given
27: file
28: .I path
29: for accessibility according to
30: .IR mode ,
31: which is an inclusive or of the bits
32: R_OK,
33: W_OK
34: and
35: X_OK.
36: Specifying
37: .I mode
38: as F_OK (i.e. 0)
39: tests whether the directories leading to the file can be
40: searched and the file exists.
41: .PP
42: The real user ID and the group access list
43: (including the real group ID) are
44: used in verifying permission, so this call
45: is useful to set-UID programs.
46: .PP
47: Notice that only access bits are checked.
48: A directory may be indicated as writable by
49: .IR access ,
50: but an attempt to open it for writing will fail
51: (although files may be created there);
52: a file may look executable, but
53: .I execve
54: will fail unless it is in proper format.
55: .SH "RETURN VALUE
56: If
57: .I path
58: cannot be found or if any of the desired access modes would
59: not be granted, then a \-1 value is returned; otherwise
60: a 0 value is returned.
61: .SH "ERRORS
62: Access to the file is denied if one or more of the following are true:
63: .TP 15
64: [ENOTDIR]
65: A component of the path prefix is not a directory.
66: .TP 15
67: [ENOENT]
68: The argument path name was too long.
69: .TP 15
70: [ENOENT]
71: Read, write, or execute (search) permission is requested for a null
72: path name or the named file does not exist.
73: .TP 15
74: [EPERM]
75: The argument contains a byte with the high-order bit set.
76: .TP 15
77: [ELOOP]
78: Too many symbolic links were encountered in translating the pathname.
79: .TP 15
80: [EROFS]
81: Write access is requested for a file on a read-only file system.
82: .TP 15
83: [ETXTBSY]
84: Write access is requested for a pure procedure (shared text)
85: file that is being executed.
86: .TP 15
87: [EACCES]
88: Permission bits of the file mode do not permit the requested
89: access; or search permission is denied on a component of the
90: path prefix. The owner of a file has permission checked with
91: respect to the ``owner'' read, write, and execute mode bits,
92: members of the file's group other than the owner have permission
93: checked with respect to the ``group'' mode bits, and all
94: others have permissions checked with respect to the ``other''
95: mode bits.
96: .TP 15
97: [EFAULT]
98: .I Path
99: points outside the process's allocated address space.
100: .SH "SEE ALSO
101: chmod(2), stat(2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.