CHMOD(1) User Commands CHMOD(1)

chmod - change mode

chmod [-R] mode file ...

The mode of each named file is changed according to mode, which may be absolute or symbolic. An absolute mode is an octal number constructed from the OR of the following modes:

4000
Set user ID on execution.
20#0
Set group ID on execution if # is 7, 5, 3, or 1 and file is not a directory.
Enable mandatory locking if # is 6, 4, 2, or 0 and file is not a directory.
If file is a directory, files created in this directory will get the group ID of the directory instead of the current process (may be set or cleared using explicit symbolic modes only).
1000
Sticky bit. If file is a directory, only the owner of the file or the super-user can rename or delete a file in that directory.
0400
Read by owner.
0200
Write by owner.
0100
Execute (search in directory) by owner.
0070
Read, write, execute (search) by group.
0007
Read, write, execute (search) by others.

A symbolic mode has the form:

[who] op permission [op permission] ...

The who part is a combination of the letters u (for user's permissions), g (group) and o (other). The letter a stands for ugo. If who is omitted, the default is a but the setting of the file creation mask (see umask(2)) is taken into account for /usr/5bin/posix/chmod and /usr/5bin/posix2001/chmod.

Op can be + to add permission to the file's mode, - to take away permission and = to assign permission absolutely (all other bits will be reset).

Permission is any combination of the letters r (read), w (write), x (execute), X (execute if file is a directory or if it already has at least one execute bit set), s (set owner or group id), t (save text - sticky), and l (mandatory locking). Letters u, g or o indicate that permission is to be taken from the current mode. Omitting permission is only useful with = to take away all permissions.

The first example denies write permission to others, the second makes a file executable:

chmod o-w file
chmod +x file

Multiple symbolic modes separated by commas may be given. Operations are performed in the order specified. The letter s is only useful with u or g.

Only the owner of a file (or the super-user) may change its mode.

The chmod command accepts the following option:

Recursively descend each file operand. If a symbolic link is encountered, the permissions of its target are changed, but the link is not followed otherwise.

chown(1), ls(1), chmod(2), stat(2), umask(2)

Use of the -R option is not generally recommended since symbolic links can lead to modification of files at arbitrary places outside the file hierarchies specified as arguments. The find(1) command can be used in combination with chmod to achieve the desired result in a more controlled manner. For example,

find . ! -type l -exec chmod u+w {} +


will add write permission for the invoking user, and

find . -type d -exec chmod a+rx {} + -o \
! -type l ! -type d -exec chmod a+r {} +


will make the file hierarchy accessible to all users.

1/24/05 Heirloom Toolchest