CHOWN(2)

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, gid_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
chown(8), chgrp(1), chmod(2), flock(2)

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.