Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chown(2)

fcntl(2)

getgroups(2)

mknod(2)

open(2)

read(2)

setgroups(2)

truncate(2)

write(2)

chmod(1)

chmod(2)  —  System Calls

OSF

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

pathSpecifies 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. 

filedesSpecifies the file descriptor of an open file. 

modeSpecifies 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 process must have superuser privilege. 

Upon successful completion, the chmod() and fchmod() functions 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_ISUIDSets the process’ effective user ID to the file’s owner on execution. 

S_ISGIDSets the process’ effective group ID to the file’s group on execution. 

S_ISVTXSaves text image after execution. 

S_IRWXUPermits the file’s owner to read, write, and execute it (or to search the directory). 

S_IRUSRPermits the file’s owner to read it. 

S_IWUSRPermits the file’s owner to write to it. 

S_IXUSRPermits the file’s owner to execute it (or to search the directory). 

S_IRWXGPermits the file’s group to read, write, and execute it (or to search the directory). 

S_IRGRPPermits the file’s group to read it. 

S_IWGRPPermits the file’s group to write to it. 

S_IXGRPPermits the file’s group to execute it (or to search the directory). 

S_IRWXOPermits others to read, write, and execute it (or to search the directory). 

S_IROTHPermits others to read the file. 

S_IWOTHPermits others to write to the file. 

S_IXOTHPermits 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 regular 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:

       •The file is a regular file. 

       •The effective user ID of the process does not have appropriate system privilege. 

       •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() functions 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 directory. 

[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 permission 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)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026