chmod(1)
NAME
chmod − change file mode access permissions
SYNOPSIS
/usr/bin/chmod [-A] [-R] symbolic_mode_list file ...
Obsolescent form:
/usr/bin/chmod [-A] [-R] numeric_mode file ...
DESCRIPTION
The chmod command changes the permissions of one or more files according to the value of symbolic_mode_list or numeric_mode. You can display the current permissions for a file with the ls -l command (see ls(1)).
Symbolic Mode List
A symbolic_mode_list is a comma-separated list of operations in the following form. Whitespace is not permitted.
[who]op[permission ][,...]
The variable fields can have the following values:
who One or more of the following letters:
u Modify permissions for user (owner).
g Modify permissions for group.
o Modify permissions for others.
a Modify permissions for all users (a is equivalent to ugo).
op Required; one of the following symbols:
+ Add permission to the existing file mode bits of who.
- Delete permission from the existing file mode bits of who.
= Replace the existing mode bits of who with permission.
permission One or more of the following letters:
r Add or delete the read permission for who.
w Add or delete the write permission for who.
x Add or delete the execute file (search directory) permission for who.
s Add or delete the set-owner-id or set-group-id on file execution permission for who. Useful only if u or g is expressed or implied in who.
t Add or delete the save-text-image on file execution (sticky bit) permission. Useful only if u is expressed or implied in who. See chmod(2).
X Conditionally add or delete the execute/search permission as follows:
• If file is a directory, add or delete the search permission to the existing file mode for who. (Same as x.)
• If file is not a directory, and the current file permissions include the execute permission (ls -l displays an x or an s) for at least one of user, group, or other, then add or delete the execute file permission for who.
• If file is not a directory, and no execute permissions are set in the current file mode, then do not change any execute permission.
Or one only of the following letters:
u Copy the current user permissions to who.
g Copy the current group permissions to who.
o Copy the current other permissions to who.
The operations are performed in the order specified, and can override preceding operations specified in the same command line.
If who is omitted, the r, w, x, and X permissions are changed for all users if the changes are permitted by the current file mode creation mask (see umask(1)). The s and t permissions are changed as if a was specified in who.
Omitting permission is useful only when used with = to delete all permissions.
Numeric Mode (Obsolescent)
Absolute permissions can be set by specifying a numeric_mode, an octal number constructed from the logical OR (sum) of the following mode bits:
Miscellaneous mode bits:
4000 (= u=s) Set-user-id on file execution (file only)
2000 (= g=s) Set-group-id on file execution
1000 (= u=t) Set sticky bit; see chmod(2)
Permission mode bits:
0400 (= u=r) Read by owner
0200 (= u=w) Write by owner
0100 (= u=x) Execute (search in directory) by owner
0040 (= g=r) Read by group
0020 (= g=w) Write by group
0010 (= g=x) Execute/search by group
0004 (= o=r) Read by others
0002 (= o=w) Write by others
0001 (= o=x) Execute/search by others
Options
-A Preserve any optional access control list (ACL) entries associated with the file. By default, in conformance with the IEEE Standard POSIX 1003.1-1988, optional ACL entries are deleted. For information about access control lists, see acl(5).
-R Recursively change the file mode bits. For each file operand that names a directory, chmod alters the file mode bits of the named directory and all files and subdirectories in the file hierarchy below it.
Only the owner of a file, or a user with appropriate privileges, can change its mode.
Only a user having appropriate privileges can set (or retain, if previously set) the sticky bit of a regular file.
In order to set the set-group-id on execution bit, the group of the file must correspond to your current group ID.
If chmod is used on a symbolic link, the mode of the file referred to by the link is changed.
EXTERNAL INFLUENCES
Environment Variables
LC_MESSAGES determines the language in which messages are displayed.
If LC_MESSAGES is not specified in the environment or is set to the empty string, the value of LANG is used as a default for each unspecified or empty variable. If LANG is not specified or is set to the empty string, a default of "C" (see lang(5)) is used instead of LANG.
If any internationalization variable contains an invalid setting, chmod behaves as if all internationalization variables are set to "C". See environ(5).
International Code Set Support
Single- and multi-byte character code sets are supported.
RETURN VALUE
Upon completion, chmod returns one of the following values:
0 Successful completion.
>0 An error condition occurred.
EXAMPLES
Deny write permission to others:
chmod o-w file
Make a file executable by everybody:
chmod a+x file
Assign read and execute permission to everybody, and set the set-user-id bit:
chmod a=rx,u+s file
Assign read and write permission to the file owner, and read permission to everybody else:
chmod u=rw,go=r file
or
chmod 644 file (obsolescent form)
Traverse a directory subtree making all regular files readable by user and group only, and all executables and directories executable (searchable) by everyone:
chmod -R ug+r,o-r,a+X pathname
If the current value of umask is 020 (umask -S displays u=rwx,g=rx,o=rwx; do not change write permission for group) and the current permissions for file mytest are 444 (a=r), displayed by ls -l as -r--r--r--, then the command
chmod +w mytest
sets the permissions to 646 (uo=rw,g=r), displayed by ls -l as -rw-r--rw-.
If the current value of umask is 020 (umask -S displays u=rwx,g=rx,o=rwx; do not change write permission for group) and the current permissions for file mytest are 666 (a=rw), displayed by ls -l as -rw-rw-rw-, then the command
chmod -w mytest
sets the permissions to 464 (uo=r,g=rw), displayed by ls -l as -r--rw-r--.
DEPENDENCIES
The -A option causes chmod to fail on file systems that do not support ACLs.
AUTHOR
chmod was developed by AT&T and HP.
SEE ALSO
chacl(1), ls(1), umask(1), chmod(2), acl(5).
STANDARDS CONFORMANCE
chmod: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2
Hewlett-Packard Company — HP-UX Release 10.20: July 1996