除了基本r, w, x权限外,在Linux传统的Ext2/Ext3/Ext4文件系统下,我们还可以设置其他的系统隐藏属性, 这部份可使用 chattr 来设置,而以 lsattr 来查看,最重要的属性就是可以设置其不可修改的特性!让连文件的拥有者都不能进行修改! 这个属性可是相当重要的,尤其是在安全机制上面 (security)!比较可惜的是,在 CentOS 7.x 当中利用 xfs 作为默认文件系统, 但是 xfs 就没有支持所有的 chattr 的参数了!仅有部份参数还有支持而已!
6.4.1 文件默认权限:umask
umask是指定“目前使用者在创建文件或目录时候的权限默认值”,那么如何得知或设置 umask 呢?他的指定条件以下面的方式来指定:
查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字体态的权限设置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了。
在默认权限的属性上,目录与文件是不一样的。从第五章我们知道 x 权限对于目录是非常重要的! 但是一般文件的创建则不应该有执行的权限,因为一般文件通常是用在于数据的记录嘛!当然不需要执行的权限了。 因此,默认的情况如下:
若使用者创建为“文件”则默认“没有可执行( x )权限”,亦即只有 rw 这两个项目,也就是最大为 666 分,默认权限如下: -rw-rw-rw-
若使用者创建为“目录”,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,默认权限如下: drwxrwxrwx
要注意的是,umask 的分数指的是“该默认值需要减掉的权限!”因为 r、w、x 分别是 4、2、1 分,所以也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,5分就是读与执行的权限。
如果以上面的例子来说明的话,因为 umask 为 022 ,所以 user 并没有被拿掉任何权限,不过 group 与 others 的权限被拿掉了 2 (也就是 w 这个权限),那么当使用者:
创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
umask的利用与重要性:专题制作
当我们需要新建文件给同群组的使用者共同编辑时,那么 umask 的群组就不能拿掉 2这个 w 的权限,umask就得要是002之类的才可以。这样新建的文件才能够是-rw-rw-r--的权限模样。设置umask就直接在umask后面输入002就好。
例题:假设你的 umask 为 003 ,请问该 umask 情况下,创建的文件与目录权限为?答:umask 为 003 ,所以拿掉的权限为 --------wx,因此: 文件: (-rw-rw-rw-) - (--------wx)= -rw-rw-r-- 目录: (drwxrwxrwx) - (d-------wx) = drwxrwxr--
在默认的情况中, root 的 umask 会拿掉比较多的属性,root 的 umask 默认是 022 , 这是基于安全的考虑,至于一般身份使用者,通常他们的 umask 为 002 ,亦即保留同群组的写入权力。