int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);
Modes are specified by or'ing the following:
- S_ISUID
- 04000 set user ID on execution
- S_ISGID
- 02000 set group ID on execution
- S_ISVTX
- 01000 sticky bit
- S_IRUSR (S_IREAD)
- 00400 read by owner
- S_IWUSR (S_IWRITE)
- 00200 write by owner
- S_IXUSR (S_IEXEC)
- 00100 execute/search by owner
- S_IRGRP
- 00040 read by group
- S_IWGRP
- 00020 write by group
- S_IXGRP
- 00010 execute/search by group
- S_IROTH
- 00004 read by others
- S_IWOTH
- 00002 write by others
- S_IXOTH
- 00001 execute/search by others
The effective UID of the process must be zero or must match the owner of the file.
The effective UID or GID must be appropriate for setting execution bits.
Depending on the file system, set user ID and set group ID execution bits may be turned off if a file is written. On some file systems, only the super-user can set the sticky bit, which may have a special meaning (i.e., for directories, a file can only be deleted by the owner or the super-user).
The general errors for fchmod are listed below: