chmod(1)
Name
chmod − change file mode
Syntax
chmod [ −fR ] mode file...
Description
Permissions on files are set according to mode and file parameters.
For file, you can specify either a full or partial path. You can specify multiple files, separated by spaces.
For mode, you specify one of two variants: absolute mode or symbolic mode.
Absolute Mode
For mode in absolute form, you specify an octal number constructed from the sum of one or more of the following values:
4000 set user ID on execution (applies to executable files only)
2000 set group ID on execution (applies to executable files only)
1000 set sticky bit (see chmod() for more information)
0400 read by owner
0200 write by owner
0100 execute, or search if file is a directory, by owner
0040 read by group
0020 write by group
0010 execute, or search if file is a directory, by group
0004 read by others
0002 write by others
0001 execute, or search if file is a directory, by others
For example, the absolute mode value that provides read, write, and execute permission to owner, read and execute permission to group, and read and execute permission to others is 755 (400+200+100+40+10+4+1). The absolute mode value that provides read, write, and execute permission to owner and no permission to group or others is 700 (400+200+100).
Symbolic Mode
To specify mode in symbolic form, use the following format:
[who] op permission [op permission] ...
Note
Spaces are included in the preceding format so that you can read the arguments; however, as will be shown in examples that follow, you do not enter spaces between mode arguments.
Specify who using the letters u (for owner), g (for group) and o (for others) either alone or in combination. You can also specify the letter a (for all), which is is equivalent to the letter combination ugo. If you omit the who parameter, a is assumed. For more information, see umask(.).
For the op parameter, specify the plus sign (+) to add permission to the file’s mode, the minus sign (−) to remove permission from the file’s mode, or the equal sign (=) to assign permission absolutely (denying or revoking any permission not explicitly specified following the equal sign). The first command in the following example provides group with execute permission for filea in addition to any other permissions group currently has for filea. The second command limits the permission that group has for fileb to execute alone:
chmod g+x filea
chmod g=x fileb
For the permission parameter, specify any combination of the letters r (read), w (write), x (execute), s (set owner or group id), and t (save text − sticky). Alternatively, you can specify the letter u, g, or o to set permission for the who parameter to be the same as the permission currently granted to the user category indicated by the letter. In the following example, the group (g) is given the same permissions on filea as currently granted to owner (u):
chmod g=u filea
You can revoke all permissions by specifying the who argument followed by =, and omitting the permission argument. For example, the following command removes all permissions from others for fileb:
chmod o= fileb
When specifying more than one symbolic mode for file, separate the modes with commas. The mode changes are applied in the sequence specified. In the following example, write permission is added to the permissions already granted to the owner of filea and group is then granted the same permissions on filea as granted the owner:
chmod u+w,g=u filea
Options
−fInhibits display of errors that are returned if chmod fails to change the mode on a file.
−RCauses chmod to recursively descend any directories subordinate to file and to set the specified mode for each file encountered. However, when symbolic links are encountered, chmod does not change the mode of the link file and does not traverse the path associated with the link. Note that the -R option is useful only when file identifies a directory that is not empty.
Restrictions
The permission letter s is used only with who letter u or g.
Only the owner of a file or someone logged on as superuser may change the mode of that file.
Examples
Using absolute mode, provide read, write, and search permission to the owner, and read and search permission to others for a directory named public:
chmod 755 ~harris/public
Using absolute mode, set the UID for progrmb execution to be the UID of of the file owner rather than the UID of the user running the program as follows:
chmod 4000 progrmb
Using symbolic mode, perform the same operation as described for the preceding example:
chmod u=s progrmb
Using symbolic mode, deny write permission to others for the file ourspec:
chmod o−w ourspec
Using symbolic mode, give execute permission on file myprog to all user categories:
chmod +x myprog
Using symbolic mode, give write permission to all group members, deny write permission to others, and give search permission to owner on docdir:
chmod g+w,o−r,u+x docdir
Using symbolic mode, give read and execute permissions to others for a directory named programs, and then recursively descend the paths subordinate to programs, adding the same permissions for others on all files and directories included in the subordinate paths:
chmod -R o+rx programs
Note
In the preceding example, if programs were the name of a file rather than a directory, chmod would change the mode only of the programs file.