当linux用户创建目录或文件的时候都会有默认的权限。而umask就是用户创建时的默认权限。

但是umask权限是反过来的,相当于是Linux chmod 命令的补集。

Linux umask 详解

如上图所示,umask为 0022,其中第一位为特殊权限,不做讨论,后面3位为022,关于umask权限对文件和目录有两种不同的计算方法,如下。

目录权限umask计算方法

目录的最大权限是777

777-022=755,也就是说umask创建目录的权限是755。

755代表 :拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

如果换算成rwx(读写执行)的模式就是 rwxr-x-x

文件权限umask计算方法

文件最大的权限是666

666-022=644,也就是说umask创建文件的权限是644

644代表: 只有拥有者有读写权限;而属组用户和其他用户只有读权限。

如果换算成rwx(读写执行)的模式就是rw-r--r--

这里验证一下创建文件的默认权限,我们使用touch命令创建一个文件

touch 123.txt

Linux umask 详解

如图所示,符合umask默认权限的规则。

修改umask权限

[root@localhost ~]# umask 0002
[root@localhost ~]# umask
0002

通过该方法修改的umask权限在重启的时候会复位,即它是临时修改umask的权限。

如果要永久更改umask的值,可以将命令添加至/etc/profile或/etc/bashrc文件中

vi /etc/profile #打开文件
umask 0002       //添加一行
source /etc/profile //这里是退出文件并执行生效命令

注意 

在多线程的服务器上尽量避免使用这个函数。创建文件后要改变其权限最好还是使用 chmod 命令。