]> git.saurik.com Git - apple/xnu.git/blame_incremental - bsd/man/man2/chown.2
xnu-2782.30.5.tar.gz
[apple/xnu.git] / bsd / man / man2 / chown.2
... / ...
CommitLineData
1.\" Copyright (c) 1980, 1991, 1993, 1994
2.\" The Regents of the University of California. All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\" notice, this list of conditions and the following disclaimer in the
11.\" documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\" must display the following acknowledgement:
14.\" This product includes software developed by the University of
15.\" California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\" may be used to endorse or promote products derived from this software
18.\" without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\" @(#)chown.2 8.4 (Berkeley) 4/19/94
33.\"
34.Dd April 19, 1994
35.Dt CHOWN 2
36.Os
37.Sh NAME
38.Nm chown ,
39.Nm fchown ,
40.Nm lchown ,
41.Nm fchownat
42.Nd change owner and group of a file
43.Sh SYNOPSIS
44.In unistd.h
45.Ft int
46.Fo chown
47.Fa "const char *path"
48.Fa "uid_t owner"
49.Fa "gid_t group"
50.Fc
51.Ft int
52.Fo fchown
53.Fa "int fildes"
54.Fa "uid_t owner"
55.Fa "gid_t group"
56.Fc
57.Ft int
58.Fo lchown
59.Fa "const char *path"
60.Fa "uid_t owner"
61.Fa "gid_t group"
62.Fc
63.Ft int
64.Fn fchownat "int fd" "const char *path" "uid_t owner" "gid_t group" "int flag"
65.Sh DESCRIPTION
66The owner ID and group ID of the file
67named by
68.Fa path
69or referenced by
70.Fa fildes
71is changed as specified by the arguments
72.Fa owner
73and
74.Fa group .
75The owner of a file may change the
76.Fa group
77to a group of which
78he or she is a member,
79but the change
80.Fa owner
81capability is restricted to the super-user.
82.Pp
83The
84.Fn chown
85system call
86clears the set-user-id and set-group-id bits
87on the file
88to prevent accidental or mischievous creation of
89set-user-id and set-group-id programs if not executed
90by the super-user.
91The
92.Fn chown
93system call
94follows symbolic links to operate on the target of the link
95rather than the link itself.
96.Pp
97The
98.Fn fchown
99system call
100is particularly useful when used in conjunction
101with the file locking primitives (see
102.Xr flock 2 ) .
103.Pp
104The
105.Fn lchown
106system call is similar to
107.Fn chown
108but does not follow symbolic links.
109.Pp
110The
111.Fn fchownat
112system call is equivalent to the
113.Fn chown
114and
115.Fn lchown
116except in the case where
117.Fa path
118specifies a relative path.
119In this case the file to be changed is determined relative to the directory
120associated with the file descriptor
121.Fa fd
122instead of the current working directory.
123.Pp
124Values for
125.Fa flag
126are constructed by a bitwise-inclusive OR of flags from the following
127list, defined in
128.In fcntl.h :
129.Bl -tag -width indent
130.It Dv AT_SYMLINK_NOFOLLOW
131If
132.Fa path
133names a symbolic link, ownership of the symbolic link is changed.
134.El
135.Pp
136If
137.Fn fchownat
138is passed the special value
139.Dv AT_FDCWD
140in the
141.Fa fd
142parameter, the current working directory is used and the behavior is identical
143to a call to
144.Fn chown
145or
146.Fn lchown
147respectively, depending on whether or not the
148.Dv AT_SYMLINK_NOFOLLOW
149bit is set in the
150.Fa flag
151argument.
152.Pp
153One of the owner or group id's
154may be left unchanged by specifying it as -1.
155.Sh RETURN VALUES
156.Rv -std
157.Sh ERRORS
158.Pp
159The
160.Fn chown
161and
162.Fn lchown
163system calls will fail if:
164.Bl -tag -width Er
165.\" ==========
166.It Bq Er EACCES
167Search permission is denied for a component of the path prefix.
168.It Bq Er EFAULT
169The
170.Fa path
171argument
172points outside the process's allocated address space.
173.\" ==========
174.It Bq Er ELOOP
175Too many symbolic links are encountered in translating the pathname.
176This is taken to be indicative of a looping symbolic link.
177.\" ==========
178.It Bq Er ENAMETOOLONG
179A component of a pathname exceeded 255 characters,
180or an entire path name exceeded 1023 characters.
181.\" ==========
182.It Bq Er ENOENT
183A component of
184.Fa path
185does not exist.
186.\" ==========
187.It Bq Er ENOTDIR
188A component of the path prefix is not a directory.
189.El
190.Pp
191The
192.Fn fchown
193system call will fail if:
194.Bl -tag -width Er
195.\" ==========
196.It Bq Er EBADF
197The
198.Fa fildes
199argument
200does not refer to a valid descriptor.
201.\" ==========
202.It Bq Er EINVAL
203The
204.Fa fildes
205argument
206refers to a socket, not a file.
207.El
208.Pp
209Any of these calls will fail if:
210.Bl -tag -width Er
211.\" ==========
212.It Bq Er EINTR
213Its execution is interrupted by a signal.
214.\" ==========
215.It Bq Er EIO
216An I/O error occurs while reading from or writing to the file system.
217.\" ==========
218.It Bq Er EPERM
219The effective user ID does not match the owner of the file
220and the calling process does not have appropriate (i.e., root) privileges.
221.\" ==========
222.It Bq Er EROFS
223The named file resides on a read-only file system.
224.El
225.Pp
226In addition to the errors specified for
227.Fn chown
228and
229.Fn lchown ,
230the
231.Fn fchownat
232system call may fail if:
233.Bl -tag -width Er
234.It Bq Er EBADF
235The
236.Fa path
237argument does not specify an absolute path and the
238.Fa fd
239argument is neither
240.Dv AT_FDCWD
241nor a valid file descriptor open for searching.
242.It Bq Er EINVAL
243The value of the
244.Fa flag
245argument is not valid.
246.It Bq Er ENOTDIR
247The
248.Fa path
249argument is not an absolute path and
250.Fa fd
251is neither
252.Dv AT_FDCWD
253nor a file descriptor associated with a directory.
254.El
255.Sh SEE ALSO
256.Xr chgrp 1 ,
257.Xr chmod 2 ,
258.Xr flock 2 ,
259.Xr chown 8
260.Sh STANDARDS
261The
262.Fn chown
263system call is expected to conform to
264.St -p1003.1-90 .
265The
266.Fn fchownat
267system call is expected to conform to POSIX.1-2008 .
268.Sh HISTORY
269The
270.Fn chown
271function appeared in
272.At v7 .
273The
274.Fn fchown
275system call appeared in
276.Bx 4.2 .
277.Pp
278The
279.Fn chown
280and
281.Fn fchown
282system calls were changed to follow symbolic links in
283.Bx 4.4 .
284The
285.Fn lchown
286system call was added in
287.Fx 3.0
288to compensate for the loss of functionality.
289.Pp
290The
291.Fn fchownat
292system call appeared in OS X 10.10