Go to the previous, next section.

The Mode Bits for Access Permission

The file mode, stored in the st_mode field of the file attributes, contains two kinds of information: the file type code, and the access permission bits. This section discusses only the access permission bits, which control who can read or write the file. See section Testing the Type of a File, for information about the file type code.

All of the symbols listed in this section are defined in the header file `sys/stat.h'.

These symbolic constants are defined for the file mode bits that control access permission for the file:

S_IRUSR
S_IREAD
Read permission bit for the owner of the file. On many systems, this bit is 0400. S_IREAD is an obsolete synonym provided for BSD compatibility.

S_IWUSR
S_IWRITE
Write permission bit for the owner of the file. Usually 0200. S_IWRITE is an obsolete synonym provided for BSD compatibility.

S_IXUSR
S_IEXEC
Execute (for ordinary files) or search (for directories) permission bit for the owner of the file. Usually 0100. S_IEXEC is an obsolete synonym provided for BSD compatibility.

S_IRWXU
This is equivalent to `(S_IRUSR | S_IWUSR | S_IXUSR)'.

S_IRGRP
Read permission bit for the group owner of the file. Usually 040.

S_IWGRP
Write permission bit for the group owner of the file. Usually 020.

S_IXGRP
Execute or search permission bit for the group owner of the file. Usually 010.

S_IRWXG
This is equivalent to `(S_IRGRP | S_IWGRP | S_IXGRP)'.

S_IROTH
Read permission bit for other users. Usually 04.

S_IWOTH
Write permission bit for other users. Usually 02.

S_IXOTH
Execute or search permission bit for other users. Usually 01.

S_IRWXO
This is equivalent to `(S_IROTH | S_IWOTH | S_IXOTH)'.

S_ISUID
This is the set-user-ID on execute bit, usually 04000. See section How an Application Can Change Persona.

S_ISGID
This is the set-group-ID on execute bit, usually 02000. See section How an Application Can Change Persona.

S_ISVTX
This is the sticky bit, usually 01000.

On an executable file, it modifies the swapping policies of the system. Normally, when a program terminates, its pages in core are immediately freed and reused. If the sticky bit is set on the executable file, the system keeps the pages in core for a while as if the program were still running. This is advantageous for a program that is likely to be run many times in succession.

On a directory, the sticky bit gives permission to delete a file in the directory if you can write the contents of that file. Ordinarily, a user either can delete all the files in the directory or cannot delete any of them (based on whether the user has write permission for the directory). The sticky bit makes it possible to control deletion for individual files.

The actual bit values of the symbols are listed in the table above so you can decode file mode values when debugging your programs. These bit values are correct for most systems, but they are not guaranteed.

Warning: Writing explicit numbers for file permissions is bad practice. It is not only nonportable, it also requires everyone who reads your program to remember what the bits mean. To make your program clean, use the symbolic names.

Go to the previous, next section.