我们创建一个文件或者目录后,我们都会看到前面会默认给出一定的权限,我们是拥有者,为什么还会给我们设置默认的权限?为什么不是我们来设置?
>umask-Linux中的默认权限掩码
一、umask指令解释
Linux 是注重安全性的操作系统,而安全的基础在于对权限的设定,不仅所有已存在的文件和目录要设定必要的访问权限,创建新的文件和目录时,也要设定必要的初始权限。
这个初识权限通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。
那我们怎么如何得知umask默认权限的值?直接通过umask命令得:
0002是默认值(注意!不同系统可能对用的默认值不同!),如果我们想要修改,那么在指令后面加上我们想要修改的数字即可,至于如何修改,修改的原理是什么,我们稍后再讲。
我们可以看到会出现0002四个数字,第一位与特殊权限有关,在设置默认权限时不会用到,我们可以不用理会。只看后三位002。
这三位是八进制数字,在创建文件的时候,要从默认权限中,过滤掉在umask中出现的权限。
二、初始权限
我们在umask 002的前提下创建一个文件的权限是:
我们可以看到创建file文件后,默认权限是0664
那我们将002设置成000,看看不需要过滤的权限是什么样子的:
我们可以看到,没有umask过滤权限的前提下,我们的文件初始权限是0666,三个角色都是没有x权限的.
说明我们过滤之后从0666变成了0664.
三、如何过滤
最终权限=初识权限&(~umask)
我们在进行过滤时,要先将初始权限的八进制位和umask的八进制位转化为二进制,然后我们先将umask按位取反,再与初识权限的每个位相&,就得到我们的最终权限了。
讲解:
根据这个原理,我们就可以设置自己想要的默认权限了。