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.