1、特殊权限
set_uid
通过which查看passwd的绝对路径,然后通过ls -l查看绝对路径的信息,可以看到该路径的权限如下:
其中s权限就是set_uid的权限。用户在执行passwd命令修改密码时,会对shadow文件进行修改,因为shadow密码文件的权限为000,普通用户无法修改文件,所以只能使用set_uid权限,让用户在执行passwd命令的瞬间拥有对shadow文件的写权限:
在系统中只有passwd命令拥有set_uid权限
可以通过命令“chmod u+s”命令给一个命令增加s权限,如下给ls命令怎么s权限:
在默认情况下,普通用户无法通过ls命令查看/root/文件夹的信息,但是当给ls命令增加s权限后,普通用户可以通过ls命令查看/root/文件夹:
通过执行命令“chmod u=rws”可以给命令增加s权限,但是由于缺少x权限,所以此时的命令权限为S:
目录也可以增加s权限,但是没有意义
set_gid
作用在文件上时与set_uid功能比较像,作用在组上,执行“chmod g+s”命令实现,使得普通用户在使用该命令时,临时拥有所属组的权限:
作用在目录上时,并将所属组修改为user1,结果如下:
在该目录下创建文件,目录下的子文件的所属组也是user1:
在文件夹没有s权限时,创建子文件的权限为root:
在文件夹添加了set_gid权限后,当在文件下创建子目录或子文件时,子目录和子文件的所属组与该文件的所属组保持一致
stick_bit
系统中/tmp/文件夹拥有stick_bit权限,其普通用户权限显示为rwt,防止用户创建的文件被其他用户删除:
如使用普通用户在tmp目录下创建的一个文件,使用其他普通用户时可以对文件进行修改,但是无法对文件进行删除(root用户可以删除):
使用普通用户在创建一个权限为777的文件夹,其他的普通用户可以执行touch、mldir命令,由于所在的目录为777,虽然文件本身的权限为775,但是其他用户也可以进行删除:
2、软链接文件
类似于windows的快捷方式,如下图中/bin文件就是一个软链接文件,其真实路径为/usr/bin,使用的/bin/ls命令的真实命令是/usr/bin/ls:
在/lib64/文件中存的软链接文件比较多:
执行“ln -s 源文件 目标文件”创建软链接,如下,将/tmp/yum.log文件做一个软链接到/root/111/yum.log:
软链接也可以连接目录:
当源目录和软链接目录在同一目录下时,通过“ls -l”查看到的软链接显示的是相对路径:
但是当软链接文件路径发生变化时,软链接文件会失效,所以建议尽量使用绝对路径:
应用场景:系统中存在一服务“aming”,此服务一直在写/boot/aming.log,而且此文件很大,几乎将磁盘空间资源占尽,为了避免磁盘被写满,将/boot/aming.log放在其他目录下,但是由于aming这个服务需要,不能讲/boot/aming.log移动到其他分区,因此可以通过先将/boot/aming.log复制到根目录下/aming.log,再讲/boot/aming.log删除,然后执行ln -s /aming.log /boot/aming.log,将/aming.log软连接到/boot/aming.log,这样aming这个服务依然会将日志写到/boot/aming.log,但由于/boot/aming.log是/aming.log的软链接文件,所以其实是写到/aming.log中,这样就解决了空间存储资源不足的情况
3、硬链接文件
硬链接:创建了一个文件和另一个文件的iNode号相同,那么这两个文件相互为硬链接文件
第二列表示有几个文件使用了相同的iNode号:
不支持对目录做硬链接,只支持对文件做硬链接,执行“ln 源文件 硬链接文件”命令来给一个文件做硬链接,从下图可以看出,硬链接文件和源文件的iNode号相同,软链接文件和源文件的iNode号不同:
当删除源文件时,软链接失效,而硬链接文件不受影响:
在linux系统中,真正存储文件信息的为iNode号,通过“ls -i”可以查看iNode号:
不能对目录做硬链接:
不能跨分区做硬链接,因为两个分区可能存在相同iNode号文件: