umask - set file creation mode mask |
umask - set file creation mode mask
umask EXPR
umask
Sets the umask for the process to EXPR and returns the previous value. If EXPR is omitted, merely returns the current umask.
The Unix permission rwxr-x---
is represented as three sets of three
bits, or three octal digits: 0750
(the leading 0 indicates octal
and isn't one of the digits). The umask
value is such a number
representing disabled permissions bits. The permission (or ``mode'')
values you pass mkdir
or sysopen
are modified by your umask, so
even if you tell sysopen
to create a file with permissions 0777
,
if your umask is 0022
then the file will actually be created with
permissions 0755
. If your umask
were 0027
(group can't
write; others can't read, write, or execute), then passing
sysopen
0666
would create a file with mode 0640
(0666 &~
027
is 0640
).
Here's some advice: supply a creation mode of 0666
for regular
files (in sysopen
) and one of 0777
for directories (in
mkdir
) and executable files. This gives users the freedom of
choice: if they want protected files, they might choose process umasks
of 022
, 027
, or even the particularly antisocial mask of 077
.
Programs should rarely if ever make policy decisions better left to
the user. The exception to this is when writing files that should be
kept private: mail files, web browser cookies, .rhosts files, and
so on.
If umask(2)
is not implemented on your system and you are trying to
restrict access for yourself (i.e., (EXPR & 0700) > 0), produces a
fatal error at run time. If umask(2)
is not implemented and you are
not trying to restrict access for yourself, returns undef
.
Remember that a umask is a number, usually given in octal; it is not a string of octal digits. See also oct in the perlfunc manpage, if all you have is a string.
umask - set file creation mode mask |