UMASK - Linux手册页
Linux程序员手册 第2部分
更新日期: 2020-08-13
名称
umask-设置文件模式创建掩码
语法
#包括
#包括
mode_t umask(mode_t mask);
说明
umask()将调用过程的文件模式创建掩码(umask)设置为mask&0777(即,仅使用mask的文件许可权位),并返回mask的先前值。
打开(2),mkdir(2)和其他创建文件的系统调用使用umask来修改对新创建的文件或目录的权限。具体来说,umask中的权限已从mode参数禁用为open(2)和mkdir(2)。
或者,如果父目录具有默认的acl(请参见acl(5)),则忽略umask,继承默认的acl,基于继承的ACL设置权限位,并转置mode参数中缺少的权限位关。例如,以下默认ACL等同于umask 022:
u :: rwx,g :: r-x,o :: r-x
将此默认ACL的效果与模式参数0666(rw-rw-rw-)结合在一起,得到的文件许可权将为0644(rw-r--r--)。
inode(7)中描述了用于指定掩码的常量。
进程umask的典型默认值为S_IWGRP S_IWOTH(八进制022)。在通常情况下,将open(2)的mode参数指定为:
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
(八进制0666)创建新文件时,对结果文件的权限为:
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
(因为0666&ti022 = 0644;即rw-r--r--)。
返回值
此系统调用总是成功,并且返回掩码的先前值。
遵循规范
POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。
备注
通过fork(2)创建的子进程继承其父级的umask。 execve(2)使umask保持不变。
使用umask()来获取进程的umask而不更改它是不可能的。然后需要再次调用umask()来恢复umask。这两个步骤的非原子性为多线程程序中的竞争提供了可能。
从Linux 4.7开始,可以通过/ proc / [pid] / status的Umask字段查看任何进程的umask。在/ proc / self / status中检查此字段可以使进程检索其Umask,而无需同时对其进行更改。
umask设置还会影响分配给POSIX IPC对象(mq_open(3),sem_open(3),shm_open(3)),FIFO(mkfifo(3))和UNIX域套接字(unix(7))的权限。处理。 umask不会影响分配给该进程创建的System V IPC对象的权限(使用msgget(2),semget(2),shmget(2))。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。