chmod(2) chmod(2)
NAME
chmod - change mode of file
SYNOPSIS
int chmod (path, mode)
char *path;
int mode;
DESCRIPTION
path points to a path name naming a file. chmod sets the
access permission portion of the named file's mode according
to the bit pattern contained in mode.
Access permission bits are interpreted as follows:
04000 Set user ID on execution.
02000 Set group ID on execution.
01000 Save text image after execution.
00400 Read by owner.
00200 Write by owner.
00100 Execute (search if a directory) by owner.
00070 Read, write, execute (search) by group.
00007 Read, write, execute (search) by others.
The effective user ID of the process must match the owner of
the file or be super-user to change the mode of a file.
If the effective user ID of the process is not super-user,
mode bit 01000 (save text image on execution) is cleared.
If the effective user ID of the process is not super-user
and the effective group ID of the process does not match the
group ID of the file, mode bit 02000 (set group ID on
execution) is cleared.
If an executable file is prepared for sharing (see the cc -n
option), then mode bit 01000 prevents the system from
abandoning the swap-space image of the program-text portion
of the file when its last user terminates. Thus, when the
next user of the file executes it, the text need not be read
from the file system but can simply be swapped in, saving
time.
Changing the owner of a file turns off the set-user-id bit,
Page 1 (last mod. 1/14/87)
chmod(2) chmod(2)
unless the super-user does it. This makes the system
somewhat more secure at the expense of a degree of
compatibility. It will fail and the file mode will be
unchanged if one or more of the following are true:
[ENOTDIR] A component of the path prefix is not a
directory.
[ENOENT] The named file does not exist.
[EACCES] Search permission is denied on a component of
the path prefix.
[EPERM] The effective user ID does not match the
owner of the file and the effective user ID
is not super-user.
[EROFS] The named file resides on a read-only file
system.
[EFAULT] path points outside the allocated address
space of the process.
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.
SEE ALSO
chown(2), mknod(2).
Page 2 (last mod. 1/14/87)