chown, lchown, fchown - change owner and group of a file or
link
#include <sys/types.h>
#include <unistd.h>
int
chown(const char *path, uid_t owner, gid_t group);
int
lchown(const char *path, uid_t owner, gid_t group);
int
fchown(int fd, uid_t owner, gid_t group);
The owner ID and group ID of the file (or link) named by
path or referenced
by fd is changed as specified by the arguments owner
and group.
The owner of a file may change the group to a group of which
he or she is
a member, but the change owner capability is restricted to
the superuser.
chown() clears the set-user-ID and set-group-ID bits on the
file to prevent
accidental or mischievous creation of set-user-ID and
set-group-ID
programs.
lchown() operates similarly to how chown() operated on older
systems, and
does not follow symbolic links. It allows the owner and
group of a symbolic
link to be set.
fchown() is particularly useful when used in conjunction
with the file
locking primitives (see flock(2)).
One of the owner or group IDs may be left unchanged by specifying it as
-1.
Zero is returned if the operation was successful; -1 is returned if an
error occurs, with a more specific error code being placed
in the global
variable errno.
chown() or lchown() will fail and the file or link will be
unchanged if:
[ENOTDIR] A component of the path prefix is not a directory.
[ENAMETOOLONG]
A component of a pathname exceeded {NAME_MAX}
characters,
or an entire path name exceeded {PATH_MAX}
characters.
[ENOENT] The named file does not exist.
[EACCES] Search permission is denied for a component of
the path
prefix.
[ELOOP] Too many symbolic links were encountered in
translating the
pathname.
[EPERM] The effective user ID is not the superuser.
[EROFS] The named file resides on a read-only file
system.
[EFAULT] path points outside the process's allocated
address space.
[EIO] An I/O error occurred while reading from or
writing to the
file system.
fchown() will fail if:
[EBADF] fd does not refer to a valid descriptor.
[EINVAL] fd refers to a socket, not a file.
[EPERM] The effective user ID is not the superuser.
[EROFS] The named file resides on a read-only file
system.
[EIO] An I/O error occurred while reading from or
writing to the
file system.
chgrp(1), chmod(2), flock(2), chown(8)
The chown() function is expected to conform to IEEE Std
1003.1-1988
(``POSIX'').
The fchown() function call appeared in 4.2BSD.
The chown() and fchown() functions were changed to follow
symbolic links
in 4.4BSD.
The lchown() function was added to OpenBSD due to the above.
OpenBSD 3.6 January 25, 1997
[ Back ] |