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.
When called to change the owner of a file,
chown(),
lchown() and
fchown() clear the set-user-id (
S_ISUID) bit on the file. When a called to change the group of a file,
chown(),
lchown() and
fchown() clear the set-group-id (
S_ISGID) bit on the file. These actions are taken to prevent accidental or mischievous creation of set-user-id and set-group-id programs.
lchown() is like
chown() except in the case where the named file is a symbolic link, in which case
lchown() changes the owner and group of the link, while
chown() changes the owner and group of the file the link references.
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 (uid_t)-1 or (gid_t)-1 respectively.