Linux的umask值计算与设置

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

你的欣赏是我最大的动力

Yanxiong Huang

My name is Yanxiong Huang. graduated from Nanyang middle school.Love Linux,familiar with Node.js,Docker,Serverless... and more Web technology.Contact Me:QQ 31356617;Email:huangaynxiong2013@gmail.com

guangzhou,china http://www.myfreax.com

乐在分享