int chown(const char *path, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *path, uid_t owner, gid_t group);
If the owner or group is specified as -1, then that ID is not changed.
When the owner or group of an executable file are changed by a non-superuser, the S_ISUID and S_ISGID mode bits are cleared. POSIX does not specify whether this also should happen when root does the chown(); the Linux behaviour depends on the kernel version. In case of a non-group-executable file (with clear S_IXGRP bit) the S_ISGID bit indicates mandatory locking, and is not cleared by a chown().
標籤 | 描述 |
---|---|
EACCES | Search permission is denied on a component of the path prefix. (See also path_resolution(2).) |
EFAULT | path yiibais outside your accessible address space. |
ELOOP | Too many symbolic links were encountered in resolving path. |
ENAMETOOLONG | |
path is too long. | |
ENOENT | The file does not exist. |
ENOMEM | Insufficient kernel memory was available. |
ENOTDIR | |
A component of the path prefix is not a directory. | |
EPERM | The calling process did not have the required permissions (see above) to change owner and/or group. |
EROFS | The named file resides on a read-only file system. |
The general errors for fchown() are listed below: | |
EBADF | The descriptor is not valid. |
EIO | A low-level I/O error occurred while modifying the inode. |
ENOENT | See above. |
EPERM | See above. |
EROFS | See above. |
The prototype for fchown() is only available if _BSD_SOURCE is defined.
The 4.4BSD version can only be used by the superuser (that is, ordinary users cannot give away files).