2.18 特殊权限set_uid
用which获取passwd的路径,然后使用ls -l查看passwd命令文件路径看到红色标记文件的。再看权限的时候就会发现看到多个s权限
这个s权限就是set_uid,可以让普通用户更改密码。
权限原理:当普通用户执行passwd命令的一瞬间给它赋予root的身份权限,相当于临时使用了root权限,所以才能够修改得了密码文件,这就是set_uid的权限的作用。
注意:拥有set_uid权限的文件,这种文件一定得是二进制的可执行文件。
查看root用户
给ls命令授予与删除set_uid权限
另一种设置set_uid权限的方法:
想要将s变成小写加个x权限即可:
目录也是可以设置set_uid权限的,但是也因为目录不是命令文件,没有实际的执行意义,所以设置set_uid权限也是没有意义的。
2.19 特殊权限set_gid
set_uid与set_gid很是相同字符都是s,不同的是set_git是作用在所属组上。
set_gid权限的作用是临时给普通用户拥有此文件所属组的身份权限,目录也是可以设置这个权限的
给ls设置一个set_git权限
给test1目录设置set_git权限
把Test1目录的所属组改为user1后,在此目录下所创建的子目录或文件的所属组都会和父目录保持一致,也就是说它们的所属组都会是user1
2.20 特殊权限stick_bit
tmp目录有stick_bit权限,这个权限的表示字符是t
这个stick_bit权限是用于防止自己的文件被其他用户删除的,设置了权限后除了这文件的所有者和所属组之外的用户是不能删除的
2.21 软链接文件
箭头处就是软链接文件,方框才是真正的文件路径
在lib64目录下面软链接文件较多
软链接文件的作用主要是节省存储空间,因为当需要复制一个文件的时候只需要复制那个文件的软链接文件即可,如果复制文件本身的话占用空间会大得多。
制作软链接
ln -s命令可以制作软链接
目录test1的软链接
相对路径的软链接
相对路径的软链接弊端:如果把这个目录拷贝到别的计算机或者这个目录的名称发生改变的话,这个相对路径的软链接就会失效,所以制作软链接尽量使用绝对路径。
如果是使用的绝对路径就不会有这种问题
软链接还可以解决磁盘存储空间不够的问题,例如tmp目录的快存储满了,但是这个目录下有一个日志文件需要一直被写入数据,这个时候就可以将这个日志文件先移动到一个磁盘空间大的目录下,然后将这个日志文件做一个软链接,接着将这个软链接文件放在tmp目录下,这样的话写入的数据是写入到原文件的,而不会写入到软链接文件,所以遇到这问题的时候可以用这种方式解决。
2.22 硬链接文件
ln命令可以制作硬链接,硬链接有点类似于复制了原文件但又不完全是,因为这个复制不会占用磁盘空间,因为原文件和硬链接文件的inode号是一样的,使用的是同一个inode号。
所以原文件和硬链接文件实际上是同一个文件,当原文件的内容改动时,硬链接的文件也会跟着改动,同样的硬链接的文件内容改动时,原文件的内容也会跟着改动。硬链接只支持对文件进行制作,不能对目录进行制作
硬链接的特性:两个文件相互为硬链接,并且信息一模一样,使用的inode号也是同一个,硬链接的原文件即便被删除了也不会影响到硬链接文件,因为原文件的inode还在被硬链接文件指向着。
这个inode号就像一个被多个包装盒包装着的气体,这些包装盒就是原文件和硬链接文件,不管你有多少个包装盒,只要最后一个包装盒没有被撕掉,那么这个气体就不会消失,如果最后一个包装盒都被撕掉了这个气体自然就会流走了。所以不管删除的是原文件还是硬链接文件,只要还剩最后一个文件指向着那个inode号,那么这个文件就还存在,如果最后一个指向那个inode号的文件都被删除了,那么这个文件就是被彻底删除了。
硬链接文件不会占用磁盘空间,它和原文件指向的是同一个inode,而且硬链接不允许跨目录分区,因为每个目录分区都有自己的inode体系