3.1Linux下文件默认权限详解之umask命令
下一篇: 3.2Linux下文件隐藏属性
当我们新建一个新的文件或目录时,我们很少会去了解它的默认权限是什么。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 这个文件的内容,不建议修改该文件,感兴趣可以去了解下。
下一篇: 3.2Linux下文件隐藏属性
2 Comments
帮我换一下友情链接为带www的。
好的