Linux的umask值计算与设置

linux

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/bashrcUbuntu

vim /etc/login.defs

Thank ArchLinux

以上是 Linux的umask值计算与设置 的全部内容, 来源链接: utcz.com/z/506904.html

回到顶部