当linux用户创建目录或文件的时候都会有默认的权限。而umask就是用户创建时的默认权限。
但是umask权限是反过来的,相当于是Linux chmod 命令的补集。
如上图所示,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
如图所示,符合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 命令。