三种特殊文件权限 SetUID、SetGID、Sticky BIT 总结

目录

1.SetUID

2.SetGID

3.Sticky BIT


1.SetUID

1)功能介绍:

  • 只有可以执行的二进制程序才能设定SUID权限
  • 命令执行者要对该程序拥有执行权限 x
  • 命令执行者启动该程序时获得该程序属主身份
  • SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行中有效

举例思考:为什么普通用户可以修改自己的密码?

[root@Beiqi ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1495 7月   7 18:20 /etc/passwd
[root@Beiqi ~]# ll /etc/shadow
---------- 1 root root 1082 7月   7 18:20 /etc/shadow
[root@Beiqi ~]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 27856 4月   1 11:57 /usr/bin/passwd

可以看出 /usr/bin/passwd 命令拥有 权限SetUID,即文件属性第四位为 s 。

可以理解为 拥有执行权限的用户执行此命令时使用文件的属主执行此命令。

普通用户可以修改密码具体流程是:当普通用户使用passwd更改自己密码时,/usr/bin/passwd的属主为root,以root身份执行passwd命令,那么也可以将密码写入/etc/shadow文件中,执行完此命令root身份消失。如果取消 /usr/bin/passwd的s权限,普通用户也不可以修改自己密码。

既然 特殊权限 s 可以借尸还魂 ,使用root的权利 ,那么系统中原本具有 s 权限的文件要注意,还有自己给与权限时也要好好考虑。

2.SetGID

1)针对文件的作用

SGID可以对文件生效,也可以对目录生效,此处与SUID不同

对文件此权限介绍:

  • 只有可执行的二进制程序才能设置SGID权限
  • 命令执行者要对该程序拥有执行权限 x 
  • 命令执行程序时,组身份更改为该程序文件的属组
  • SetGID权限同样只在该程序执行过程中有效
[root@Beiqi ~]# ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 2340149 7月   7 16:47 /var/lib/mlocate/mlocate.db

文件权限显示属主为rw,属组为r,其他人为0

[root@Beiqi ~]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 40520 4月  11 2018 /usr/bin/locate

普通用户beiqi执行 locate 命令时 流程为:

  1. /usr/bin/locate 为二进制可执行程序,有SGID
  2. 执行用户beiqi对此命令拥有执行权限 x
  3. 执行 locate 时,组身份改为 slocate ,而 属组 slcate 对 /var/lib/mlocate/mlocate.db 文件具有 r 权限 ,即普通用户可以读取 mlocate 数据库
  4. locate 执行结束,属组改为 beiqi 

对目录此权限介绍:

  • 普通用户必须对此目录拥有r和x权限,才能进入此目录
  • 普通用户在此目录中的有效组改为此目录的属组
  • 若普通用户对此目录拥有 w 权限时,新建文件默认属组为 此目录的属组

举例说明:

[root@Beiqi ~]# cd /tmp
[root@Beiqi /tmp]# mkdir test
[root@Beiqi /tmp]# chmod g+s test/
[root@Beiqi /tmp]# ll -d test/
drwxr-sr-x 2 root root 6 7月   8 00:21 test/
[root@Beiqi /tmp]# chmod 777 test/
[root@Beiqi /tmp]# su - beiqi
[beiqi@Beiqi ~]$ cd /tmp/test/
[beiqi@Beiqi /tmp/test]$ touch 1.txt
[beiqi@Beiqi /tmp/test]$ ll 1.txt
-rw-rw-r-- 1 beiqi root 0 7月   8 00:23 1.txt
[beiqi@Beiqi /tmp/test]$

可以看见普通用户创建的新文件属组 为目录属组。

3.Sticky BIT

此权限介绍:

  • 此权限只对目录有效,给与为其他人权限 o-t 或 o+t
  • 普通用户对该目录拥有w和x权限
  • 目录有 SBIT 权限 除了root可以删除所有文件,普通用户拥有w权限也只能删除自己创建的文件,无法删除其他用户创建的文件
[root@Beiqi /tmp]# chmod o+t test/
[root@Beiqi /tmp]# ll
drwxrwxrwt 2 root root     19 7月   8 00:23 test
drwx------ 2 root root      6 6月  20 01:24 vmware-root
[root@Beiqi /tmp/test]# touch 1.txt
[root@Beiqi /tmp/test]# ll
总用量 0
-rw-r--r-- 1 root root 0 7月   8 00:35 1.txt
[root@Beiqi ~]# su - beiqi
[beiqi@Beiqi ~]$ cd /tmp/test/
[beiqi@Beiqi /tmp/test]$ ls
1.txt
[beiqi@Beiqi /tmp/test]$ touch 2.txt
[beiqi@Beiqi /tmp/test]$ ll
总用量 0
-rw-r--r-- 1 root  root  0 7月   8 00:35 1.txt
-rw-rw-r-- 1 beiqi beiqi 0 7月   8 00:36 2.txt
[beiqi@Beiqi /tmp/test]$ rm -rf *
rm: 无法删除"1.txt": 不允许的操作

特殊权限数字表示为 

  • 4 = SUID
  • 2 = SGID
  • 1 = SBIT
[root@Beiqi ~]# chmod 2777 mail.txt
[root@Beiqi ~]# ll mail.txt
-rwxrwsrwx 1 root root 6 7月   1 17:37 mail.txt
[root@Beiqi ~]# chmod 4777 mail.txt
[root@Beiqi ~]# ll mail.txt
-rwsrwxrwx 1 root root 6 7月   1 17:37 mail.txt
[root@Beiqi ~]# chmod 1777 protest/
[root@Beiqi ~]# ll -d protest/
drwxrwxrwt 2 root root 19 7月   7 18:43 protest/

 

你可能感兴趣的:(三种特殊文件权限 SetUID、SetGID、Sticky BIT 总结)