summaryrefslogtreecommitdiffstats
path: root/man/man2/umask.2
diff options
context:
space:
mode:
Diffstat (limited to 'man/man2/umask.2')
-rw-r--r--man/man2/umask.2149
1 files changed, 149 insertions, 0 deletions
diff --git a/man/man2/umask.2 b/man/man2/umask.2
new file mode 100644
index 0000000..77bf013
--- /dev/null
+++ b/man/man2/umask.2
@@ -0,0 +1,149 @@
+.\" Copyright (c) 2006, 2008, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" (A few fragments remain from an earlier (1992) version written in
+.\" 1992 by Drew Eckhardt <drew@cs.colorado.edu>.)
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified Sat Jul 24 12:51:53 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified Tue Oct 22 22:39:04 1996 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Thu May 1 06:05:54 UTC 1997 by Nicolás Lichtmaier
+.\" <nick@debian.com> with Lars Wirzenius <liw@iki.fi> suggestion
+.\" 2006-05-13, mtk, substantial rewrite of description of 'mask'
+.\" 2008-01-09, mtk, a few rewrites and additions.
+.TH umask 2 2024-05-02 "Linux man-pages (unreleased)"
+.SH NAME
+umask \- set file mode creation mask
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/stat.h>
+.P
+.BI "mode_t umask(mode_t " mask );
+.fi
+.SH DESCRIPTION
+.BR umask ()
+sets the calling process's file mode creation mask (umask) to
+.I mask
+& 0777 (i.e., only the file permission bits of
+.I mask
+are used), and returns the previous value of the mask.
+.P
+The umask is used by
+.BR open (2),
+.BR mkdir (2),
+and other system calls that create files
+.\" e.g., mkfifo(), creat(), mknod(), sem_open(), mq_open(), shm_open()
+.\" but NOT the System V IPC *get() calls
+to modify the permissions placed on newly created files or directories.
+Specifically, permissions in the umask are turned off from
+the
+.I mode
+argument to
+.BR open (2)
+and
+.BR mkdir (2).
+.P
+Alternatively, if the parent directory has a default ACL (see
+.BR acl (5)),
+the umask is ignored, the default ACL is inherited,
+the permission bits are set based on the inherited ACL,
+and permission bits absent in the
+.I mode
+argument are turned off.
+For example, the following default ACL is equivalent to a umask of 022:
+.P
+.in +4n
+.EX
+u::rwx,g::r-x,o::r-x
+.EE
+.in
+.P
+Combining the effect of this default ACL with a
+.I mode
+argument of 0666 (rw-rw-rw-), the resulting file permissions would be 0644
+(rw-r--r--).
+.P
+The constants that should be used to specify
+.I mask
+are described in
+.BR inode (7).
+.P
+The typical default value for the process umask is
+.BR S_IWGRP " | " S_IWOTH
+(octal 022).
+In the usual case where the
+.I mode
+argument to
+.BR open (2)
+is specified as:
+.P
+.in +4n
+.EX
+.BR S_IRUSR " | " S_IWUSR " | " S_IRGRP " | " S_IWGRP " | " S_IROTH " | " S_IWOTH
+.EE
+.in
+.P
+(octal 0666) when creating a new file, the permissions on the
+resulting file will be:
+.P
+.in +4n
+.EX
+.BR S_IRUSR " | " S_IWUSR " | " S_IRGRP " | " S_IROTH
+.EE
+.in
+.P
+(because 0666 & \[ti]022 = 0644; i.e. rw\-r\-\-r\-\-).
+.SH RETURN VALUE
+This system call always succeeds and the previous value of the mask
+is returned.
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001, SVr4, 4.3BSD.
+.SH NOTES
+A child process created via
+.BR fork (2)
+inherits its parent's umask.
+The umask is left unchanged by
+.BR execve (2).
+.P
+It is impossible to use
+.BR umask ()
+to fetch a process's umask without at the same time changing it.
+A second call to
+.BR umask ()
+would then be needed to restore the umask.
+The nonatomicity of these two steps provides the potential
+for races in multithreaded programs.
+.P
+Since Linux 4.7, the umask of any process can be viewed via the
+.I Umask
+field of
+.IR /proc/ pid /status .
+Inspecting this field in
+.I /proc/self/status
+allows a process to retrieve its umask without at the same time changing it.
+.P
+The umask setting also affects the permissions assigned to POSIX IPC objects
+.RB ( mq_open (3),
+.BR sem_open (3),
+.BR shm_open (3)),
+FIFOs
+.RB ( mkfifo (3)),
+and UNIX domain sockets
+.RB ( unix (7))
+created by the process.
+The umask does not affect the permissions assigned
+to System\ V IPC objects created by the process (using
+.BR msgget (2),
+.BR semget (2),
+.BR shmget (2)).
+.SH SEE ALSO
+.BR chmod (2),
+.BR mkdir (2),
+.BR open (2),
+.BR stat (2),
+.BR acl (5)