特殊权限set_uid、set_gid、stick_bit、软链接文件与硬连接文件
一、Linux的特殊权限
1、特殊权限set_uid
普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码,passwd显示的是 rws,并非传统的rwx,这个s就是set_uid权限:
平时工作中,普通用户如果使用命令ls /root 会提示没有权限的,如何给这些二进制文件添加这个suid权限呢?命令如下 chmod u+s /usr/bin/ls (ls用来作例子),这样ls就临时的获得了root的权限
如果要去掉这个权限,命令为:chmod u-s /usr/bin/ls
2、特殊权限set_gid
这个set_gid是让普通用户临时拥有所属组的权限,如果目录被设置这个权限后,任何用户在此目录下创建的文件或目录都具有和该目录所属的组相同的组
PS:给/tmp/test 目录设置set_gid后,权限由原来的drwxrwxrwx 变为drwxrwsrwx,此时以user1的身份在/tmp/test目录里创建目录和文件,所属组都为root,而不是user1了。
3、特殊权限stick_bit
stick_bit 可以理解为防删除位,如果希望用户能够添加文件但同时不能删除该目录下的其他用户的文件 ,则可以对父目录增加该权限。设置它后,就算用户对目录具有写权限,也不能删除其他用户的文件。比如/tmp/目录就设置过这个权限。
例子:再增加一个用户,来测试这个权限的作用。
PS:一个文件能否被删除,取决于该文件父目录的权限,/tmp/目录是777权限,任何人都可以写,所以理论上任何人都可以删除这个目录的所有文件,但是前面的测试表明,user2是不可以删除user1的文件 ,这就是因为/tmp/目录有一个stick_bit
二、链接文件
软链接文件和硬连接文件
命令: ln
语法 : ln [-s] [来源文件] [目的文件]
目录是可以软链接的,但不能硬链接
ln 常用的选项就一个 ‘-s’, 如果不加就是建立硬链接,加上就建立软链接
上例中,做了硬链接后,虽然两个文件大小都为 ‘1097’, 但是目录的大小并没有变化,删除源文件passwd, 空间依旧不变。这说明硬链接只是复制了一份inode信息。
另外,如果删除源文件,则软链接文件不能读取了,而且使用‘ll’ 查看发现颜色也变了: