最近开始学习linux ,看完马哥的linux课程关于umask的这个部分, 写这篇博客希望加深下我对umask的理解 和对umask不太清楚的博友一些帮助。
1 umask 是什么
当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask用于设置用户创建文件或者目录的默认权限,umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。一般在/etc/profile,HOME/.bashprofile或者HOME/.profile中设置umask值。
2 umask是用来做什么的
默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认 权限是755(7-0,7-2,7-2),可以用ls -l验证一下, 现在应该知道umask的用途了吧,它是为了控制默认权限的。
[root@bogon test]# iduid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023[root@bogon test]# umask0022[root@bogon test]# touch a.txt[root@bogon test]# ls -ltotal 0-rw-r--r--. 1 root root 0 Jul 3 00:40 a.txt[root@bogon test]# mkdir b[root@bogon test]# ls -ltotal 0-rw-r--r--. 1 root root 0 Jul 3 00:40 a.txtdrwxr-xr-x. 2 root root 6 Jul 3 00:41 b
从上面可以看到, root 的umask是022(第一个0 代表特殊权限位,这里先不考虑), 创建的文件默认权限是644,创建的目录是755。
3 基本权限讲解
讲解umask的使用之前, 需要先讲解下文件的基本权限
linux文件权限
r | w | x | |
文件 | 可以查看文件内容 | 可以修改文件 | 可以把文件启动为一个运行的程序 |
目录 | 可以ls查看目录中的文件名 | 可以在目录中创建或者删除文件(只有w权限没法创建,需要x配合) | 可以使用cd 进入这个目录ls-l显示目录内文件的元数据的信息 |
4 umask计算权限
对于文件和目录来说, 最大的权限其实都是777,但是执行权限对于文件来说,很可怕,而对目录来说执行权限是个基本权限。所以默认目录的最大权限是777,而文件的默认最大权限就是666。
对于root用户的umask=022这个来说,777权限二进制码就是(111)(111)(111),022权限二进制码为(000)(010)(010)。
所有权限二进制的1:代表有这个权限 umask二进制1:代表要去掉这个权限,不管你原来有没有权限,你最终一定没有这个权限。 umask二进制的0:代表我不关心对应位的权限,你原来有权限就有权限,没有就没有, 我不影响你。umask为002的文件默认权限计算方法