The umask built-in sets or prints the file mode creation mask.
Syntax
- 
umask mask
- 
umask [-S]
Description
If executed without the mask operand, the built-in prints the current file mode creation mask of the shell to the standard output in a form that can later be used as mask to restore the current mask.
Otherwise, the built-in sets the file mode creation mask to mask.
Options
- 
-S
- 
--symbolic
- 
Print in the symbolic form instead of the octal integer form. 
Operands
- mask
- 
The new file mode creation mask either in the symbolic or octal integer form. 
Octal integer form
In the octal integer form, the mask is specified as a non-negative octal integer that is the sum of the following permissions:
- 0400
- 
read by owner 
- 0200
- 
write by owner 
- 0100
- 
execute/search by owner 
- 0040
- 
read by group 
- 0020
- 
write by group 
- 0010
- 
execute/search by group 
- 0004
- 
read by others 
- 0002
- 
write by others 
- 0001
- 
execute/search by others 
Symbolic form
In the symbolic form, the mask is specified as a symbolic expression that denotes permissions that are not included in the mask.
The entire expression is one or more clauses separated by comma. A clause is a sequence of whos followed by one or more actions.
A who is one of:
- 
u
- 
owner 
- 
g
- 
group 
- 
o
- 
others 
- 
a
- 
all of owner, group, and others 
An empty sequence of whos is equivalent to who a.
An action is an operator followed by permission. An operator is one of:
- 
=
- 
set who's permission to permission 
- 
+
- 
add permission to who's permission 
- 
-
- 
remove permission from who's permission 
and permission is one of:
- 
r
- 
read 
- 
w
- 
write 
- 
x
- 
execute/search 
- 
X
- 
execute/search (only if some user already has execute/search permission) 
- 
s
- 
set-user-ID and set-group-ID 
- 
u
- 
user’s current permissions 
- 
g
- 
group’s current permissions 
- 
o
- 
others' current permissions 
but more than one of r, w, x, X, and s can be specified after a
single operand.
For example, the command umask u=rwx,go+r-w
- 
unmasks the user’s read, write, and execute/search permissions; 
- 
unmasks the group’s and others' read permission; and 
- 
masks the group’s and others' write permission. 
Exit status
The exit status of the umask built-in is zero unless there is any error.
Notes
The umask built-in is a semi-special built-in.
The POSIX standard does not require the default output format (used when the
-S option is not specified) to be the octal integer form.