chmod

Change file modes (POSIX)

Syntax:

chmod [-Rv] mode file...

Runs on:

QNX Neutrino, Linux, Microsoft Windows

Options:

-R
Recursively change file modes. For each file that names a directory, chmod changes the file mode bits of the directory and all files in the file hierarchy below it.
-v
Be verbose; display the operations that are being performed.
mode
Represents the change to be made to the file mode of each file named (see the Description below).
file
The pathname of a file whose file mode bits are to be modified.

Description:

The chmod utility lets you change any or all of the file permission mode bits of one or more files. For each file that you name, chmod changes the file permission mode bits according to the mode operand.

To change a file's permission mode bits, the user of chmod must be either the owner of the file or the superuser, root.

The mode option can be either a symbolic_mode expression or a nonnegative octal integer.

Symbolic Modes

The symbolic_mode has the following form:

[who]operator[copy|permissions][,symbolic_mode]

The who part of the symbolic mode is any combination of:

a
User, group, and other access
g
Group access
o
Other access
u
User access

The operator is one of:

+
Add specified permissions to the group, other, or user category of the specified files.
-
Remove specified permissions from the group, other, or user category of the specified files.
=
Set the specified permissions for the group, other, or user category of the specified files.

The copy part specifies the unmodified permissions (i.e. before the chmod command has been executed) of one of:

g
Group
o
Other
u
User

The permissions part is any combination of:

r
Read permission
s
When executed, set the user ID (if who contains or implies u) and/or group ID (if who contains or implies g)
t
Sticky bit
w
Write permission
X
Execute/search permission if the file is a directory or at least one execute bit is on before any of the file mode bits are modified
x
Execute permission

The who specification is optional. When it isn't supplied, all the permissions (user, group and other) are affected, but for + and = operators, only those permissions that aren't set in the file creation mask (see umask) are set.

The permissions part is also optional. If omitted, it defaults to none (i.e. the command adds no permissions, removes no permissions, or sets the permissions to none, depending on the operator).

Some examples of symbolic modes:

Make myfile executable by all:

chmod a+x myfile

Remove read permission for group and others:

chmod og-r myfile

Perform both the above operations, in the order given, on three files: myfile, file2, and zzz:

chmod a+x,og-r myfile file2 zzz

Add read permission to the user, remove write permission from the user, and set the group permissions to be the same as the other permissions:

chmod u+r,u-w,g=o myfile

Octal Modes

In octal mode, permissions are specified with a three-digit octal number. The three digits represent user, group, and other permissions in that order.

Each permission may be specified with an octal number: read = 4; write = 2; execute = 1; no permission = 0. The octal equivalents are derived by adding the numbers associated with the four basic permissions. The following table illustrates their use:

Octal number Symbolic Permission
0 --- None
1 --x Execute
2 -w- Write
3 -wx Write/execute
4 r-- Read
5 r-x Read/execute
6 rw- Read/write
7 rwx Read/write/execute

For example, give the user read/write/execute (octal 7 = rwx), group read/execute (octal 5 = r-x), and other read only (octal 4 = r--) for the file myfile:

chmod 754 myfile

Setgid and setuid

The following table shows how the setgid and setuid file modes are represented in octal:

Octal number File mode
1000 Sticky
2000 Setgid
4000 Setuid
6000 Setgid and setuid

You can combine these file modes with the permission modes described above. For example:

chmod 4666 testfile

In this case, setuid is set, and the user, group, and other get read/write access.

Exit status:

0
The utility executed successfully and all requested changes were made.
>0
An error occurred.

Caveats:

If the mode operand isn't valid, chmod doesn't change the file mode bits of any file.

See also:

chgrp, chown, find ... -chmod ..., ls, umask

Working with Files in the Neutrino User's Guide