码迷,mamicode.com
首页 > 系统相关 > 详细

浅谈linux中umask值及其对应的文件权限

时间:2015-07-30 09:36:45      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:文件权限   umask   linux   

    最近刚好系统学习到linux文件权限这一块,在“umask值及其对应的文件权限”这一个问题上,找过视频看(老男孩老师的视频,强烈推荐),也看过鸟哥的书,当然也在网上找了找,发现计算方法都是多种多样的,但是个人觉得掌握一种就好了,看了各种方法,觉得其实大多数都是在找规律,不是找规律的又实在是太复杂,因此个人感觉不太好记,时间一长可能就忘记了,于是就根据自己的理解,做各种测试,发现有了如下更好的方法。(从理解和记忆的层次上更好的方法)


 1.问题引出:设置umask为004与005时,创建的文件默认权限都是一样的

设置umask为004的情况:

[root@xpleaf right]# umask 005
[root@xpleaf right]# umask
0005
[root@xpleaf right]# touch 005file
[root@xpleaf right]# ls -l 005file 
-rw-rw--w- 1 root root 0 7月  29 12:19 005file

这里的分析,为了简便,我都是只关注others的权限来进行分析。

由上面的输出可以看到,others的权限为-w-,即为3,由umask的含义(表示拿掉的权限)知,拿掉5,即拿掉了r权限和x权限(由r w x分别对应数字4 2 1知),所以创建005file文件中others的权限即为-w-,也就是2了,这与我们的认知是不相违背的。


设置umask为004的情况:

[root@xpleaf right]# umask 004
[root@xpleaf right]# umask
0004
[root@xpleaf right]# touch 004file
[root@xpleaf right]# ls -l 004file
总用量 0
-rw-rw--w- 1 root root 0 7月  29 12:21 004file

根据上面的分析,按道理来说,这里拿掉了others 4即r的权限,那么新创建文件others的权限就应该为-rx,可是这里怎么会是-r-呢?难道系统出错了?

当然不是了,这里也是最关键的问题所在,对此,有如下结论:

  • 对于文件来说,如果umask没有去掉x权限,则系统自动处理掉x权限;

  • 对于文件来说,如果umask有去掉x权限,则系统按正常情况去掉相应权限;

  • 对于目录来说,则不存在这样的情况。

什么意思呢?

拿上面的两个例子来说:

(1)对于设置umask为004的情况,即表示要拿掉(others)r的权限,所以默认权限就应该为-wx才对,可是由于umask没有去掉x权限,所以在我们创建新文件时,系统自动帮我们把x权限拿掉了,因此,创建的文件的权限才为-w-。

(2)对于设置umask为005的情况,即表示要拿掉(others)r和x的权限,此时,umask有去掉x权限,所以我们就按正常情况来处理好了,即创建的文件的权限就为-r-

(3)所以由上面的分析可以知道,设置umask为004和005时,文件的默认权限都是一样的。


2.深入分析:为什么系统会自动帮我们拿掉x权限?

    想一下,我们平时用touch来创建文件,绝大多数都是用来干嘛的?当然是用来存储和记录数据的,因此,这样的文件应该是不能够执行的(即使有x的权限),所以既然如此,在我们创建文件时,就应该没有必要把x权限也加上去了,如果实在需要的话,就自己手动给一个文件加x权限好了。

    于是出于这样的原因,系统就帮我们自动把x权限给拿掉了。


3.建议:用理解的方法去吸收“umask值及其对应的文件权限”知识

    以上的内容(第2点)并非有什么科学依据,只是我自己个人根据实际中测试的结果所做的一个猜测,当然鸟哥的书当中似乎也有在透露这一点(只是感觉不够清晰和明确)。

    我自己作为一个linux的新手,目前正在努力看老师的视频,同时也在看鸟哥的书,个人觉得这样去记忆是比较好的,比如umask是006,由于6表示把r和w权限拿掉,但是没有把x权限拿掉,所以在我们创建文件的时候,系统就把这个x权限也拿掉了,最终ohters的权限也就为---了;再比如umask为3,由于3表示把w和x权限拿掉,有包括x权限,以在我们创建文件的时候,最终ohters的权限也就为r--了。

    我想对于大多数人来讲,这样的方法算出答案应该还是比较快的吧,至少我觉得我不算聪明,但是也可以比较快的口算出来,当然前提是你要知道:1.umask是什么意思  2.r w x对应的数字分别为4 2 1(其实就是二进制的一、二、三位,分别是2的0次、1次、2次方),相比记忆奇数或偶数,我想这样的方法对于新手来讲应该是更能去理解和记忆的。

    当然,上面只是个人的一点看法而已,不过作为新手来讲,真心是建议用这样的方法去理解和记忆。


本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1679861

浅谈linux中umask值及其对应的文件权限

标签:文件权限   umask   linux   

原文地址:http://xpleaf.blog.51cto.com/9315560/1679861

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!