diff options
Diffstat (limited to 'man/man2/umask.2')
-rw-r--r-- | man/man2/umask.2 | 149 |
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) |