Linux之umask详解
看了网上很多umask的文章,有的过于臃肿,越解释越迷糊,以下自己研究过程,仅供大家参考,有误,请指正:
1、umask到底是什么?
按照我个人理解就是对文件、文件目录权限控制的预设值(注意这个预设值是要被减掉的)。
2、umask怎么查看预设默认值?
这里需要特别注意的是:linux系统本身有一个创建文件夹、文件的初始值, 文件夹:777 文件:666
##通过umask 便可以查看当前用户的umask值。
[root@qjzhao /]# umask
0022
3、umask默认值是否可以修改?在哪里修改?
- umask是可以被修改
- 在/etc/profile 与/etc/bashrc 都有umask参数设置默认值。
4、umask默认值因用户、组不同存在差异
在/etc/profile、/etc/bashrc这个文件中详细说明了,说明什么情况下存在差异?此处我有一个疑问就是,根据这个逻辑来看,假如存在一个用户,uid>199且用户名和组一致,那么他的umask 权限为002?相当于是非root用户创建文件夹、文件反而权限更大?why?如果大家有研究,可否告知我一下!
[root@qjzhao /]# groupadd zqj -g 200
[root@qjzhao /]# useradd zqj -u 200 -g zqj -s /sbin/login
[root@qjzhao /]# id zqj
uid=200(zqj) gid=200(zqj) 组=200(zqj)
[zqj@qjzhao ~]$ umask
0002
[zqj@qjzhao ~]$ ll -d test
drwxrwxr-x 2 zqj zqj 21 12月 29 08:17 test
[zqj@qjzhao ~]$ ll test
-rw-rw-r-- 1 zqj zqj 0 12月 29 08:17 111.txt
5 umask值怎么算?
我觉得要理解怎么算umask的值前提有两点:
①、操作系统初始创建文件、文件夹默认值是多少
②、/etc/profile、/etc/bashrc中默认umask的值是多少
用户创建文件夹权限值=初始创建文件夹默认值-umask的预设值
如:
775=777-002
用户创建文件权限值=初始创建文件默认值-umask的预设值
664=666-002
6 临时修改umask
在命令中直接用 umask 003就行,仅限当前系统会话。
此处需要注意的是,设置某些umask值,实际是没有减掉的,如下演示
[zqj@qjzhao ~]$ umask 007
[zqj@qjzhao ~]$ touch 111.txt
[zqj@qjzhao ~]$ mkdir -p test
[zqj@qjzhao ~]$ ll 111.txt
###此处需要减掉7,但实际上减掉了6,少减了一个1.
-rw-rw---- 1 zqj zqj 0 12月 29 09:05 111.txt
[zqj@qjzhao ~]$ ll -d test
###此处被减掉了7所以 test文件夹的权限为770
drwxrwx--- 2 zqj zqj 6 12月 29 09:05 test
[zqj@qjzhao ~]$
以上样例说明了一个问题,当umask预设值超过了系统初始默认值,不管文件、还是文件夹会按照777的权限进行。