NAME

chmod, fchmod - change mode of file

SYNOPSIS


#include 
#include 

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 combination of the following, defined in :


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 protecting 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. Otherwise, a value of -1 is returned and errno is set to indicate 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 executables into memory.