NAME
chmod, fchmod - Changes file access permissions
SYNOPSIS
#include <sys/mode.h>
#include <sys/types.h>
#include <sys/stat.h>
int chmod (
const char *path,
mode_t mode );
int fchmod (
int filedes,
mode_t mode );
PARAMETERS
path Specifies the full pathname of the file. If the
path parameter refers to a symbolic link, the
chmod() function changes access permissions on the
file specified by the symbolic link.
filedes Specifies the file descriptor of an open file.
mode Specifies the bit pattern which determines the
access permissions.
DESCRIPTION
The chmod() function sets the access permissions of the file
specified by the path parameter according to the bit pattern
specified by the mode parameter.
The fchmod() function sets the access permissions of an open
file pointed to by the filedes parameter according to the
bit pattern specified by the mode parameter.
To change file access permissions, the process must have the
same effective user ID as the owner of the file or the pro-
cess must have superuser privilege.
Upon successful completion, the chmod() and fchmod() func-
tions mark the st_ctime field of the file for update.
The mode parameter is constructed by logically ORing one or
more of the following values, which are defined in the
sys/mode.h header file:
S_ISUID Sets the process' effective user ID to the file's
owner on execution.
S_ISGID Sets the process' effective group ID to the file's
group on execution.
S_ISVTX Saves text image after execution.
S_IRWXU Permits the file's owner to read, write, and exe-
cute it (or to search the directory).
S_IRUSR Permits the file's owner to read it.
S_IWUSR Permits the file's owner to write to it.
S_IXUSR Permits the file's owner to execute it (or to
search the directory).
S_IRWXG Permits the file's group to read, write, and exe-
cute it (or to search the directory).
S_IRGRP Permits the file's group to read it.
S_IWGRP Permits the file's group to write to it.
S_IXGRP Permits the file's group to execute it (or to
search the directory).
S_IRWXO Permits others to read, write, and execute it (or
to search the directory).
S_IROTH Permits others to read the file.
S_IWOTH Permits others to write to the file.
S_IXOTH Permits others to execute the file (or to search
the directory).
Other mode values exist that can be set with the mknod()
function, but not with the chmod() function.
If the mode bit S_ISGID is set and the mode bit S_IXGRP is
not set, mandatory file record locking will exist on a regu-
lar file. This may affect subsequent calls to other calls
on the file, including open(), creat(), read(), write(), and
truncate().
The S_ISGID bit of the file is cleared if:
o The file is a regular file.
o The effective user ID of the process does not have
appropriate system privilege.
o The effective group ID or one of the IDs in the group
access list of the process does not match the file's
existing group ID.
NOTES
AES Support Level:
Full use (chmod())
Trial use (fchmod())
RETURN VALUES
Upon successful completion, the chmod() and fchmod() func-
tions return a value of 0 (zero). If the chmod() or fchmod()
function fails, a value of -1 is returned, and errno is set
to indicate the error.
ERRORS
If the chmod() function fails, the file permissions remain
unchanged and errno may be set to one of the following
values:
[ENOTDIR] A component of the path parameter is not a direc-
tory.
[ENOENT] The named file does not exist or is an empty
string.
[ENOENT] A symbolic link was named, but the file to which
it refers does not exist.
[EACCES] A component of the path parameter has search per-
mission denied.
[EPERM] The effective user ID does not match the ID of the
owner of the file or the owner does not have
appropriate system privilege.
[EROFS] The named file resides on a read-only file system
[EFAULT] The path parameter points to a location outside of
the allocated address space of the process.
[ESTALE] The process' root or current directory is located
in a virtual file system that has been unmounted.
[ELOOP] Too many symbolic links were encountered in
translating the path parameter.
[ENAMETOOLONG]
The length of the path argument exceeds PATH_MAX
or a pathname component is longer than NAME_MAX.
[EINTR] A signal was caught during execution of the system
call.
If the fchmod() function fails, the file permissions remain
unchanged and errno may be set to one of the following
values:
[EBADF] The file descriptor filedes is not valid.
[EROFS] The file referred to by filedes resides on a
read-only file system.
[EPERM] The effective user ID does not match the ID of the
owner of the file, and the calling process does
not have superuser privilege.
[ESTALE] The process' root or current directory is located
in a virtual file system that has been unmounted.
[EINTR] A signal was caught during execution of the system
call.
RELATED INFORMATION
Functions: chown(2), fcntl(2), getgroups(2), mknod(2),
open(2), read(2) setgroups(2) truncate(2) write(2)
Commands: chmod(1)
Acknowledgement and Disclaimer