int chmod(const char *path, mode_t mode);
int fchmod(int fd, mode_t mode);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
_BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
These system calls change the permissions of a file. They differ only
in how the file is specified:
* chmod() changes the permissions of the file specified whose pathname
is given in path, which is dereferenced if it is a symbolic link.
* fchmod() changes the permissions of the file referred to by the open
file descriptor fd.
The new file permissions are specified in mode, which is a bit mask
created by ORing together zero or more of the following:
S_ISUID (04000) set-user-ID (set process effective user ID on
S_ISGID (02000) set-group-ID (set process effective group ID on
execve(2); mandatory locking, as described in
fcntl(2); take a new file's group from parent direc-
tory, as described in chown(2) and mkdir(2))
S_ISVTX (01000) sticky bit (restricted deletion flag, as described in
S_IRUSR (00400) read by owner
S_IWUSR (00200) write by owner
S_IXUSR (00100) execute/search by owner ("search" applies for direc-
tories, and means that entries within the directory
can be accessed)
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
error to be returned.
As a security measure, depending on the filesystem, the set-user-ID and
set-group-ID execution bits may be turned off if a file is written.
(On Linux this occurs if the writing process does not have the
CAP_FSETID capability.) On some filesystems, only the superuser can
set the sticky bit, which may have a special meaning. For the sticky
bit, and for set-user-ID and set-group-ID bits on directories, see
On NFS filesystems, restricting the permissions will immediately influ-
ence already open files, because the access control is done on the
server, but open files are maintained by the client. Widening the per-
missions may be delayed for other clients if attribute caching is
enabled on them.
On success, zero is returned. On error, -1 is returned, and errno is
Depending on the filesystem, other errors can be returned. The more
general errors for chmod() are listed below:
EACCES Search permission is denied on a component of the path prefix.
(See also path_resolution(7).)
EFAULT path points outside your accessible address space.
EIO An I/O error occurred.
ELOOP Too many symbolic links were encountered in resolving path.
path is too long.
ENOENT The file does not exist.
ENOMEM Insufficient kernel memory was available.
A component of the path prefix is not a directory.
EPERM The effective UID does not match the owner of the file, and the
process is not privileged (Linux: it does not have the
EROFS The named file resides on a read-only filesystem.
The general errors for fchmod() are listed below:
EBADF The file descriptor fd is not valid.
EIO See above.
This page is part of release 3.54 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
Linux 2010-09-26 CHMOD(2)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2019
All Rights Reserved.