红联Linux门户
Linux帮助

不要让网上流传的umask减法误导了你---------相当一部分人已经走入误区

发布时间:2008-07-13 12:16:55来源:红联作者:lyq617617
umask是权限掩码,什么是权限掩码?简单的说,就是能把相应的权限给遮掩住的编码.. 通常root用户默认的掩码值是0022,一般用户的默认掩码值是0002.
文件的三种权限:读(r,4),写(w,2),执行(x,1).加起来 4+2+1=7
权限掩码是四位,但通常用到的就是后三位,也就像大家通常所说的权限掩码有三位是一样的.我们可以尝试以下操作,开启一个终端(用普通用户测试):
$ touch umask.txt
$ ls -l
可以看到刚才新建的文件umask.txt的详细信息,这里主要让大家看它的权限:
-rw-rw-r-- 1 jingjing jingjing 0 07-13 11:11 umask.txt
需要说明一下的是红色的表示user对此文件的操作权限,蓝色部分表示的是group对此文件的操作的权限,黑色部分表示其它用户对此文件的操作的权限.文件的权限值 664
好了,前面这些我相信任何资料论坛上都是这么说的,当然是正确,我这个主题的关键在下面:
[/color][color=seagreen]好多网上的资料都是这样说的:
比如 umask:002 那么建立的文件的权限值: 666减去002,结果就是664. 其中6:r+w 6:r+w 4:r
我想说的是这只是一个巧合!真正的原理是这样的:
因为我们这里设定的权限掩码值是002,也就是只遮掩住了其它用户的写权限(w,2),所以新建的文件权限是664;但请大家尝试一下输入下面的命令:
$ umask 033
$ touch testumask
$ ls -l
仔细看文件的权限:
-rw-r--r-- 1 jingjing jingjing 0 07-13 11:24 testumask
加一下,它的权限值应该是:644,其中 6:r+w 4:r 4:r.并不是大家经常在网上看到的 666-033=633.为什么呢?正是上面我讲到的,033也就是说遮掩了group和other用户的写(w,2)和执行权限(x,1),加起来(2+1=3).
我在网上看到的资料,90%都是说直接相减就得到对应文件的权限值,但事实上我想大家应该明白是怎么回事了!!!
:0)1

[ 本帖最后由 lyq617617 于 2008-7-13 13:30 编辑 ]
文章评论

共有 0 条评论