umask是用来控制创建文件模式的命令,它为创建文件定义初始化的权限位,uamsk遵循POSIX的标准,因为它会影响当前shell的执行环境,通常内置到shell中
查看当前umask值
➜ umask
000
计算umask值
当创建新文件时,通常都会有默认的权限位,这是因为系统会根据我们设置umask值来为新文件设置权限,有时我们需要更改此值,需要重新计算umask的值,假设我们系统的umask值是027
0 第一位即user的所有权 7-0 7
2 第二位即group的所有权 7-2 5
7 第三位即other的所有权 7-7 0
十进制 二进制 含义
0 000 没有权限
1 001 只执行
2 010 只写
3 011 写,执行
4 100 只读
5 101 读,执行
6 110 读,写
7 111 读写,执行
从表中可以看到创建新文件时默认设置的权限是用最高权限(777)减去umak值(027)即750,对应到第二个表就是user为读写,执行,group为读,执行,other则没有权限,但在Linux中不允许创建有可执行权限的新文件,因此需要去掉user,group,other执行权限1,因此在这个示例中默认的新文件权限为640,而目录则没有限制,新创建的文件权限最高是666,目录可以是777
另一种计算方式
比如umask=022;文件默认最高权限为666,则文件的初始权限就为:rw-rw-rw- 减去 ----w--w- 得到 rw-r--r-- 的文件初始权限,umask值代表着,被 “抛弃” 的权限
Thank SmartA
设置umask值
➜ umask 0000 #十进制的方式
➜ touch test
➜ stat -c %a test
666
命令的方式仅在当前会话有效,可以在配置文件设置永久生效~/.bashrc
,/etc/bashrc
Ubuntu
vim /etc/login.defs
Thank ArchLinux