linux权限体系(三)特殊权限SUID、SGID

一、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权限。
程序启动后:进程拥有的权限为二进制可执行文件属主的权限,也就是进程的属主是二进制文件的属主。
简言之,当我们启动某个二进制程序,该程序调用了其他非对象,此对象非启动者所有,也不具备相应权限时,此时无法成功执行。但是当我们为这个二进制程序赋予了SUID,则被调用的这个对象会被临时赋予该对象的所有者权限

下面直接演用鸟哥的示例来描述这个问题

ls -hltr /usr/bin/passwd /etc/shadow
-rwsr-xr-x. 1 root root 31K Feb 22 2012 /usr/bin/passwd ###权限为rws
———-. 1 root root 950 Aug 25 2016 /etc/shadow

密码文件/etc/shadow只有root用户拥有修改权限,那其他用户是如何修改自身密码的呢,那就是由于命令passwd拥有SUID权限
  a、vbird 对於 /usr/bin/passwd 这个程序来说是具有 x 权限的,表示 vbird 能运行 passwd;
  b、passwd 的拥有者是 root 这个帐号;
  c、vbird 运行 passwd 的过程中,会『暂时』获得 root 的权限;
  d、/etc/shadow 就可以被 vbird 所运行的 passwd 所修改。
但如果 vbird 使用 cat 去读取 /etc/shadow 时,他能够读取吗?因为 cat 不具有 SUID 的权限,所以 vbird 运行 『cat /etc/shadow』 时,是不能读取 /etc/shadow 的。

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

二、SGID
2.1 基础知识
SGID的产生需求:root用户需要设置某一个文件夹,使得其他普通用户在该文件夹下创建文件的时候,所创建的文件的属组是目录的属组(而默认情况下文件的属组是创建者的属组)。
SGID可以作用在文件和目录上:
作用在文件上:类似于SUID,用户将二进制可执行文件启用成进程后,进程的属组是二进制可执行文件的属组,进程的权限是二进制可执行文件属组的权限。
作用在目录上:任何用户在该目录下创建的文件的属组与目录的属组相同。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值