linux学习笔记(7) - 文件与目录的默认权限和隐藏权限

时间:2021-06-24 15:13:09
  • 文件的默认权限:umask
    当新创建一个文件或目录的时候,一般情况先时候默认权限的,而在默认权限的分配上,文件与目录是有些不大相同的。
    之前的学习中我们了解到过权限一般分为r、w、x三种,建立一个文件的时候默认是没有x的权限的,所以一个文件的最大权限为-rw-rw-rw-,也就是最大为666;一个目录,因为x属性与是否能够进入目录有关,所以x权限是肯定要有的,所以一个目录的最大权限为drwxrwxrwx,也就是最大为777。
    而在linux系统中还有一个与默认权限有关的东西:umask。umask代表默认权限需要减掉的权限。这个属性我们可以用umask或umask -s来查看,不加-s属性时候看到的是一个数字,加上-s属性的时候则是看到的比较具体的每中访问方式所对应的权限。
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    接下来我们看一下新建文件或目录的相应权限:
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    上面我们说的文件和目录的默认权限分别为-rw-rw-rw-和drwxrwxrwx,但是我们新建的文件和目录的权限分别为-rw-r–r–和drwxr-xr-x,中间有一些小小的偏差,这个偏差就与umask有关了。
    umask的定义:默认权限需要减掉的权限,也就是在相应默认权限的基础上减掉umask设置的权限。以上图为例,umask设置的为0022,第一位数字0表示八进制数,第二位数字0表示拥有者owner的权限不需要减去,第三位数字2表示用户组group的权限需要减去w,第四位数字2表示其他人other的权限需要减去w,所以
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    值得注意的一点是,umask显示的0022,我们需要把它解读为响应的权限之后再进行减掉的操作,如果用数字去减就会出现一定的问题,比如,如果设置uamsk为0033,文件的默认权限666,666 - 033 = 633 ,那么633对应的去权限是-rw–wx-wx,666对应的权限是-rw-rw-rw-,减之前没有x权限,减之后却出现了x权限,所以单纯的计算,不要用数字直接去减。
    umask的数字我们也可以通过命令来设置,比如:umask 002,就可以将umask的值设置为002了,之前也说过第一个数字代表的是八进制数,所以是系统默认,只需要设置后三个数就可以了,你也可以输入四个数:0022,但是必须保证第一位是0,如果第一位不是0,那么就会报一个错误:
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    这个错误的原因是linux在读取数字的时候把1022分解为10,2,2三个八进制数,所以就出现了上面的错误:八进制数超出范围。

  • 文件的隐藏属性
    文件的隐藏属性对系统有很大帮助,尤其是系统安全性方面非常重要。
    ①、设置文件隐藏属性:chattr
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    ②、显示文件隐藏属性:lsattr
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限

  • 文件的特殊权限
    ①、SUID(set user id)
    任意用户访问文件时暂时获得文件拥有者的权限。
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    ②SGID(set group id)
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    ③SBIT(sticky bit)
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    ④SUID、SGID、SBIT权限设置
    这三个特殊属性的设置也是用chmod命令进行设置,通常使用chmod + 三位数字 +文件名 的命令是假设没有以上三个特殊属性的,而想要设置这三个属性,需要在三个数字的前面再加一个数字就行了,这个数字的算法是这样的:
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限
    一个小小的列子:
    linux学习笔记(7) - 文件与目录的默认权限和隐藏权限