NAME
chown, fchown
— change owner and group of a
file
SYNOPSIS
#include
<unistd.h>
int
chown(const
char *path, uid_t
owner, gid_t
group);
int
fchown(int
fd, uid_t owner,
uid_t group);
DESCRIPTION
The owner ID and group ID of the file 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 super-user.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.
Fchown()
is particularly useful when used in conjunction with the file locking
primitives (see
flock(2)).
One of the owner or group id's may be left unchanged by specifying it as -1.
RETURN VALUES
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.
ERRORS
Chown() will fail and the file will be
unchanged if:
- [
ENOTDIR] - A component of the path prefix is not a directory.
- [
EINVAL] - The pathname contains a character with the high-order bit set.
- [
ENAMETOOLONG] - A component of a pathname exceeded 255 characters, or an entire path name exceeded 1023 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 super-user.
- [
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 super-user.
- [
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.
SEE ALSO
STANDARDS
Chown() is expected to conform to IEEE Std
1003.1-1988 (“POSIX”).
HISTORY
The fchown() function call appeared in
4.2BSD.
The chown() and
fchown() functions were changed to follow symbolic
links in 4.4BSD.