1.set_uid即权限位SUID
SUID用于二进制文件,运行某程序时,程序属于自身属主而非启动者。
图上可知,passwd属主有一个s权限,也就意味着普通用户运行passwd这个命令时,会临时获取/usr/bin/passwd的属主权限,即即使普通用户将也会得到root拥有的rwx权限。
特殊权限位的位数也可用数字表示即4,例如passwd文件的权限为4755,这里最开头的4即是它的权限数字。
下面具体例子解释作用
下面两个图箭头指向的第一个图是#代表是root用户,第二个图$代表是普通用户
1.用root用户给ls命令suid权限
2.可以看到普通用户也可以进入到root的家目录了
3.普通用户获得了ls属主的权限,也就可以查看root的目录内容了
2.set_gid即权限位SGID
1.运行某程序,相应进程组是文件自身属组,而非启动者。可作用于文件(二进制可执行文件)和目录。
2.set_gid作用在文件上时,和set_uid效果一致,会使普通用户临时拥有所属组的身份。
3.特殊权限位的位数也可用数字表示即2,例如passwd文件的权限为2755,这里最开头的2即是它的权限数字。
4.其他用户在有sgid的目录下,自己本身作为其他用户或者属组也要拥有自己能进入目录或者写入的权限才行。
下图是先用root给/bin/ls一个sgid权限,普通用户也可以运行这个命令和suid相似。
下图是sgid作用于目录的例子
1.在/tmp下用root用户创建一个名为mulu的目录,并给于2777的权限。
2.普通用户进入root创建的目录内,并创建一个文件,结果可看到普通用户创建的文件属组成了root。(用户创建的文件按说都是自己是属主和属组的)
3.sticky
这个权限目地是公共目录大家一起工作的,每个人都可以创建文件删除自己创建的文件等等,但唯独不能删除别人的。
1.root用户进入目录创建权限为777的文件
4.软硬链接文件
链接文件分为硬链接文件(hard link)和软链接文件(symbolic link),两种链接的本质区别在于inode。
软链接文件:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。做软链接尽量使用绝对路径。 例:a.txt 做一个软链接文件 为b 读取b,其实就是读取a 删除a.txt时,b链接文件不会被删除,但是读取不了。
硬链接文件:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块区域。即建立硬链接时该文件内容没有变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。
软硬链接的作用和限制
1.软连接可跨分区,可作用目录,硬链接则不能。
2.软连接要用绝对路径(防止移动数据文件导致失效)
2.硬链接的inode和源数据的inode一样,软连接则是新的inode号。
ln (默认是硬链接)
-s:创建软连接
-v:显示过程
下图红圈内是软硬链接和源文件的异同之处。(inode号,大小,文件名都有所不同)其中4.txt是软连接,5.txt是硬链接,最下面是源文件。