NAME
chmod - change mode of file
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *path, mode_t mode)
DESCRIPTION
The file whose name is given by path has its mode changed to
mode. Modes are constructed by or'ing together some combi-
nation of the following, defined in <sys/stat.h>:
S_ISUID 04000 set user ID on execution
S_ISGID 02000 set group ID on execution
S_ISVTX 01000 `sticky bit' (see below)
S_IRWXU 00700 read, write, execute by owner
S_IRUSR 00400 read by owner
S_IWUSR 00200 write by owner
S_IXUSR 00100 execute (search on directory) by owner
S_IRWXG 00070 read, write, execute by group
S_IRGRP 00040 read by group
S_IWGRP 00020 write by group
S_IXGRP 00010 execute (search on directory) by group
S_IRWXO 00007 read, write, execute by others
S_IROTH 00004 read by others
S_IWOTH 00002 write by others
S_IXOTH 00001 execute (search on directory) by others
If mode ISVTX (the `sticky bit') is set on a directory, an
unprivileged user may not delete or rename files of other
users in that directory. (Minix-vmd)
Only the owner of a file (or the super-user) may change the
mode.
Writing or changing the owner of a file turns off the set-
user-id and set-group-id bits unless the user is the super-
user. This makes the system somewhat more secure by pro-
tecting set-user-id (set-group-id) files from remaining
set-user-id (set-group-id) if they are modified, at the
expense of a degree of compatibility.
RETURN VALUE
Upon successful completion, a value of 0 is returned. Oth-
erwise, a value of -1 is returned and errno is set to indi-
cate the error.
ERRORS
Chmod will fail and the file mode will be unchanged if:
[ENOTDIR] A component of the path prefix is not a
directory.
[ENAMETOOLONG] The path name exceeds PATH_MAX 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. (Minix-vmd)
[EPERM] The effective user ID does not match the
owner of the file and 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.
SEE ALSO
chmod(1), open(2), chown(2), stat(2).
NOTES
The sticky bit was historically used to lock important exe-
cutables into memory.