]> git.saurik.com Git - apple/xnu.git/blame - bsd/man/man2/chown.2
xnu-2782.30.5.tar.gz
[apple/xnu.git] / bsd / man / man2 / chown.2
CommitLineData
9bccf70c
A
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.\"
91447636 34.Dd April 19, 1994
9bccf70c
A
35.Dt CHOWN 2
36.Os
37.Sh NAME
38.Nm chown ,
91447636 39.Nm fchown ,
fe8ab488
A
40.Nm lchown ,
41.Nm fchownat
91447636 42.Nd change owner and group of a file
9bccf70c 43.Sh SYNOPSIS
91447636 44.In unistd.h
9bccf70c 45.Ft int
2d21ac55
A
46.Fo chown
47.Fa "const char *path"
48.Fa "uid_t owner"
49.Fa "gid_t group"
50.Fc
9bccf70c 51.Ft int
2d21ac55
A
52.Fo fchown
53.Fa "int fildes"
54.Fa "uid_t owner"
55.Fa "gid_t group"
56.Fc
91447636 57.Ft int
2d21ac55
A
58.Fo lchown
59.Fa "const char *path"
60.Fa "uid_t owner"
61.Fa "gid_t group"
62.Fc
fe8ab488
A
63.Ft int
64.Fn fchownat "int fd" "const char *path" "uid_t owner" "gid_t group" "int flag"
9bccf70c 65.Sh DESCRIPTION
91447636 66The owner ID and group ID of the file
9bccf70c
A
67named by
68.Fa path
69or referenced by
2d21ac55 70.Fa fildes
9bccf70c
A
71is changed as specified by the arguments
72.Fa owner
91447636 73and
9bccf70c
A
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
91447636
A
83The
84.Fn chown
85system call
9bccf70c
A
86clears the set-user-id and set-group-id bits
87on the file
88to prevent accidental or mischievous creation of
91447636
A
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.
9bccf70c 96.Pp
91447636
A
97The
98.Fn fchown
99system call
9bccf70c
A
100is particularly useful when used in conjunction
101with the file locking primitives (see
102.Xr flock 2 ) .
103.Pp
91447636
A
104The
105.Fn lchown
106system call is similar to
107.Fn chown
108but does not follow symbolic links.
109.Pp
fe8ab488
A
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
9bccf70c
A
153One of the owner or group id's
154may be left unchanged by specifying it as -1.
155.Sh RETURN VALUES
91447636 156.Rv -std
9bccf70c 157.Sh ERRORS
2d21ac55 158.Pp
91447636
A
159The
160.Fn chown
161and
162.Fn lchown
2d21ac55 163system calls will fail if:
9bccf70c 164.Bl -tag -width Er
2d21ac55 165.\" ==========
9bccf70c
A
166.It Bq Er EACCES
167Search permission is denied for a component of the path prefix.
9bccf70c 168.It Bq Er EFAULT
91447636
A
169The
170.Fa path
171argument
9bccf70c 172points outside the process's allocated address space.
2d21ac55
A
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.
9bccf70c
A
189.El
190.Pp
91447636
A
191The
192.Fn fchown
193system call will fail if:
9bccf70c 194.Bl -tag -width Er
2d21ac55 195.\" ==========
9bccf70c 196.It Bq Er EBADF
91447636 197The
2d21ac55 198.Fa fildes
91447636 199argument
9bccf70c 200does not refer to a valid descriptor.
2d21ac55 201.\" ==========
9bccf70c 202.It Bq Er EINVAL
91447636 203The
2d21ac55 204.Fa fildes
91447636 205argument
9bccf70c 206refers to a socket, not a file.
2d21ac55
A
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.\" ==========
9bccf70c 218.It Bq Er EPERM
2d21ac55
A
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.\" ==========
9bccf70c
A
222.It Bq Er EROFS
223The named file resides on a read-only file system.
9bccf70c 224.El
fe8ab488
A
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
9bccf70c 255.Sh SEE ALSO
9bccf70c
A
256.Xr chgrp 1 ,
257.Xr chmod 2 ,
91447636
A
258.Xr flock 2 ,
259.Xr chown 8
9bccf70c
A
260.Sh STANDARDS
261The
262.Fn chown
91447636
A
263system call is expected to conform to
264.St -p1003.1-90 .
fe8ab488
A
265The
266.Fn fchownat
267system call is expected to conform to POSIX.1-2008 .
9bccf70c
A
268.Sh HISTORY
269The
91447636
A
270.Fn chown
271function appeared in
272.At v7 .
273The
9bccf70c 274.Fn fchown
91447636 275system call appeared in
9bccf70c
A
276.Bx 4.2 .
277.Pp
278The
279.Fn chown
280and
281.Fn fchown
91447636 282system calls were changed to follow symbolic links in
9bccf70c 283.Bx 4.4 .
91447636
A
284The
285.Fn lchown
286system call was added in
287.Fx 3.0
288to compensate for the loss of functionality.
fe8ab488
A
289.Pp
290The
291.Fn fchownat
292system call appeared in OS X 10.10