linux权限管理之特殊权限
特殊权限
SUID
[root@xixi ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
可以看到本来表示文件所有者权限中的x权限位,却出现了s权限,此种权限通常称为SetUID,简称SUID特殊权限。
- SUID特殊权限仅适用于可执行文件
- 所具有的功能是,所有用户对设有SUID的文件有执行权限
- 当用户执行文件时,会以文件所有者的身份去执行文件
- 一旦文件执行结束,身份的切换也随之消失
以/usr/bin/passwd可执行命令举例,就是让普通用户,执行该命令时,临时获得root的权限
- 用户创建完用户后,需要修改密码,执行passwd命令
- 但是passwd命令需要读取,修改/etc/passwd、/etc/passwd文件都需要root权限,普通用户无法操作
- 可以设置SUID让普通用户临时获得root身份,拥有属主的权限
- SUID特殊权限,只能用在二进制可执行文件上
SUID位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权如果所有者是root,那么执行人就有超级用户的特权,这是该位就成为了一个安全漏洞,因此不要轻易设置该位
[root@xixi ~]# chmod u+s /usr/bin/rm
[root@xixi ~]# ll -d /usr/bin/rm
-rwsr-xr-x. 1 root root 62864 Apr 11 2018 /usr/bin/rm
[root@xixi ~]# #这时rm的加上了特殊权限SUID,谁都可以用这个命令,特别不安全
SGID
对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限,和9位基本rwx那个理解概念一样。
suid是获得文件属主的权限,sgid是获得文件属组的权限
sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用。
对文件来说
-
sgid只对二进制命令生效,且需要二进制命令本身有x权限。
-
执行包含sgid权限的二进制命令时,会获得该命令在执行期间所属的组的身份与权限。
对文件夹来说
-
linux中所有的用户,默认创建的文件,文件夹,属主和属组都是用户自身。
-
设置了sgid的目录,会保证在这个目录下创建的文件、文件夹都保持同样的权限属性,都属于该目录的属组权限。
[root@xixi ~]# mkdir /lalala
[root@xixi ~]# chmod g+s /lalala
[root@xixi ~]# ll -d /lalala/
drwxr-sr-x. 2 root root 6 Mar 17 15:45 /lalala/
[root@xixi ~]# chgrp aaa /lalala
[root@xixi ~]# ll -d /lalala/
drwxr-sr-x. 2 root aaa 6 Mar 17 15:45 /lalala/
[root@xixi ~]# mkdir /lalala/{hahaha,hehehe}
[root@xixi ~]# touch /lalala/{haha,hehe}.txt
[root@xixi ~]# ll /lalala/
total 0
drwxr-sr-x. 2 root aaa 6 Mar 17 15:48 hahaha
-rw-r--r--. 1 root aaa 0 Mar 17 15:49 haha.txt
drwxr-sr-x. 2 root aaa 6 Mar 17 15:48 hehehe
-rw-r--r--. 1 root aaa 0 Mar 17 15:49 hehe.txt
SBIT
黏滞位,又称黏着位,linux下的另一个特殊权限
- 当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件,而不能影响到其他人。
在拥有SGID特殊权限的目录下创建文件夹继承了和目录一样的权限,而文件则继承了属组;在同一个目录下用户对文件的权限可以享受目录的权限
[jerry02@xixi ~]$ touch /lalala/我是杰瑞.txt
[bob01@xixi ~]$ touch /lalala/我是鲍勃.txt
[root@xixi ~]# ll /lalala/
total 0
-rw-rw-r--. 1 jerry02 jerry02 0 Mar 17 16:05 我是杰瑞.txt
-rw-rw-r--. 1 bob01 bob01 0 Mar 17 16:05 我是鲍勃.txt
[jerry02@xixi ~]$ rm -f /lalala/我是鲍勃.txt
[root@xixi ~]# ll /lalala/
total 0
-rw-rw-r--. 1 jerry02 jerry02 0 Mar 17 16:05 我是杰瑞.txt
[root@xixi ~]# chmod o+t /lalala/
[root@xixi ~]# ll -d /lalala/
drwxrwxrwt. 2 aaa aaa 54 Mar 17 16:08 /lalala/
[jerry02@xixi ~]$ rm -f /lalala/我是鲍勃.txt
rm: cannot remove ‘/lalala/我是鲍勃.txt’: Operation not permitted
有了黏着位的存在没有权限删除别人的文件,只能删除自己的文件.
[jerry02@xixi ~]$ rm -f /lalala/我是杰瑞.txt