一、SUID
1.1 基础知识
- SUID 是针对二进制可执行文件而言的,他的最终目的是所有用户在执行设置了SUID的二进制可执行文件时,该二进制拥有的权限是文件所有者的权限。(打破安全上下文法则)。
- 案例理解
[root@tysonscloud ~]# ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
[root@tysonscloud ~]# ls -l /etc/shadow
---------- 1 root root 948 Jan 29 15:25 /etc/shadow
用户用passwd命令修改密码是对/etc/shadow这个文件进行操作,然而普通用户对这个文件是没有任何权限的。按照从前的理论是没有办法对密码进行修改的。而SUID的作用就是使得普通用户在执行passwd这个程序后,产生的passwd进程的权限与该进程的所有者(root)而不是发起者(普通用户) 相同,这样普通用户就可以通过/etc/passwd这个程序进行密码修改了。
1.2 安全上下文法则
- 程序启动前:用户是否能够启动某二进制可执行文件为进程,取决于用户是否对该二进制可执行文件拥有x权限。
- 程序启动:进程拥有的权限为发起者的权限,也就是进程的属主是发起者的属主。
1.3 启用SUID后进程的属主
- 程序启动前:用户是否能够启动某二进制可执行文件为进程,取决于用户是否对该二进制可执行文件拥有x权限。
- 程序启动后:进程拥有的权限为二进制可执行文件属主的权限,也就是进程的属主是二进制文件的属主。
1.4 案例2
- 在root用户环境下将二进制可执行文件/bin/cat复制到tyson用户的家目录对应文件夹下,可以看到此时是没有设置SUID的。(注意:SUID只会在属主的权限中显示)。
[root@Tyson Lee learnSuid]# cp /bin/cat /home/tyson/learnSuid/
[root@Tyson Lee learnSuid]# ll
total 56
-rwxr-xr-x. 1 root root 54080 Jan 14 01:29 cat
- 切换成tyson用户,测试在没有设置SUID权限的情况:
拥有cat文件执行权限的tyson用户启动cat进程后,进程拥有的权限是tyson用户的权限。
也就是说仅仅拥有tyson用户权限的cat程序无法对/etc/shadow文件进行操作(该文件的other权限为—)。
[root@Tyson Lee learnSuid]# su - tyson
Last login: Mon Jan 14 01:27:53 CST 2019 on pts/0
[tyson@Tyson Lee ~]$ cd learnSuid/
[tyson@Tyson Lee learnSuid]$ ls -al
total 60
drwxr-xr-x. 2 root root 17 Jan 14 01:29 .
drwx------. 10 tyson tyson 4096 Jan 14 01:29 ..
-rwxr-xr-x. 1 root root 54080 Jan 14 01:29 cat
[tyson@Tyson Lee learnSuid]$ ~/learnSuid/cat /etc/shadow
/home/tyson/learnSuid/cat: /etc/shadow: Permission denied
[tyson@Tyson Lee ~]$ ls -l /etc/shadow
----------. 1 root root 881 Jan 10 12:17 /etc/shadow
- 切换到root用户,给用户家目录下对应文件夹的cat进程设置SUID权限。需要注意SUID是给user位+S,而不是加载other位上。
再切换到tyson用户,再启动二进制可执行文件cat后的cat程序拥有的就是其属主(root)的权限,而此时root用户可以查看/etc/shadow,所以tyson用户也就能够通过SUID来查看该文件的内容了。
[tyson@Tyson Lee learnSuid]$ su - root
Password:
Last login: Mon Jan 14 01:28:07 CST 2019 on pts/0
you have been successfully process /etc/profile!
[root@Tyson Lee

最低0.47元/天 解锁文章
1388

被折叠的 条评论
为什么被折叠?



