2

3.1Linux下文件默认权限详解之umask命令

Posted by 撒得一地 on 2015年11月27日 in Linux教程

当我们新建一个新的文件或目录时,我们很少会去了解它的默认权限是什么。Linux下默认权限涉及到umask这个命令,umask就是指定目前使用者在创建文件或目录时需要减去的权限默认值。可以用底下的方式来得知umask:

[root@lmode ~]# umask
0022   《= 和一般权限有关的是后面三个数字
[root@lmode ~]# umask -S
u=rwx,g=rx,o=rx

第一种查阅方式就是直接输入umask,便可以看到数字型态的权限配置分数,另一种是加入-S(Symbolic)这个选项,就会以符号类型的方式来显示出权限。第一种umask 的四个数字有点特殊,第一个是特殊权限用的。我们先了解后面三个数字。

在默认权限的属性上,目录与文件是不一样的。x权限对目录是非常重要的,但是一般文件的创建则不应该有运行的权限,因为一般文件通常是用在数据的记录,当然不需要运行的权限了。因此,默认情况如下:
若使用者创建为文件则默认没有可运行( x )权限,只有 rw 这两个权限,用权限数字表示最大为666,默认权限如下:

-rw-rw-rw-

若使用者创建为目录,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,用权限数字即777,默认权限如下:

drwxrwxrwx

要注意的是,umask 的那组数字的后三个指的是该默认值需要减掉的权限。因为 r、w、x 权限分别对应的是 4、2、1 分,所以,也就是说,当要拿掉写的权限,umask那组数字相对应的要写上2,而如果要拿掉能读的权限,就要写上4,那么要拿掉读与写的权限,就要写上6,依次类推。

上面的例子中,umask后三位为022,所以user并没有被拿掉任何权限,不过group与others的权限被拿掉了2(也就是 w 这个权限),那么当使用者:

创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

上面例子的含义是,当创建文件时,该文件被创建后的默认权限是666-022=644。(其中022为mask默认后三位)而创建目录时,目录被创建后的默认权限是777-022=755。我们可以验证一下:

[root@lmode ~]# umask
0022
[root@lmode ~]# touch test1
[root@lmode ~]# mkdir test2
[root@lmode ~]# ll
-rw-r--r--  1 root root     0 Nov 26 22:51 test1
drwxr-xr-x  2 root root  4096 Nov 26 22:51 test2

umask的利用与修改

umask值设定的多少,影响着你新建文件或目录最终的权限属性。配置umask很简单,直接在umask后面输入相应的一组值即可。比如你要将umask设定为002,那么直接这么操作:

[root@iZ94aucqfjcZ ~]# umask 002
[root@iZ94aucqfjcZ ~]# touch test3
[root@iZ94aucqfjcZ ~]# mkdir test4
[root@iZ94aucqfjcZ ~]# ll
total 48
-rw-rw-r--  1 root root     0 Nov 26 23:01 test3
drwxrwxr-x  2 root root  4096 Nov 26 23:01 test4

实例:假设你的umask为 003 ,请问该umask情况下,创建的文件与目录权限是多少?
umask 为 003 ,所以拿掉的权限为 ——–wx,因此:

文件: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--
目录: (drwxrwxrwx) - (--------wx) = drwxrwxr--

像上面的例子如果使用文件默认属性 666 与目录默认属性 777 来与 umask 进行相减的计算则很容易出错,以上面例题来看,如果使用默认属性相加减,则文件变成:666-003=663,亦即是 -rw-rw–wx ,这可是完全不对的。因为原本文件就已经去除 x 的默认属性了,而直接相减计算完则多了个x属性,很显然是错误的。所以,切忌直接将权限进行相加减。

在默认的情况中,root 的umask会拿掉比较多的属性,root 的 umask 默认是 022 ,这是基于安全的考量。至于一般身份使用者,通常他们的 umask 为 002 ,亦即保留同群组的写入权力。关于默认 umask 的配置可以参考 /etc/bashrc 这个文件的内容,不建议修改该文件,感兴趣可以去了解下。

标签:,

上一篇:

下一篇:

相关推荐

2 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

6 + 1 = ?

网站地图|XML地图

Copyright © 2015-2017 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.