深谈Unix操作系统SUID/SGID

系统 其他OS
在文章中,我们会讲到Unix操作系统中SUID/SGID的知识,这是Unix操作系统网络入侵者非常爱用的入侵入口。SUID表示"设置用户ID",SGID表示"设置组ID"。

今天我们来讲解Unix操作系统中SUID/SGID,为什么要单独把他们从文件权限中分出来讲呢?因为,这是Unix操作系统网络入侵者非常爱用的入侵入口。SUID表示"设置用户ID",SGID表示"设置组ID"。

当用户执行一个SUID文件时,用户ID在程序运行过程中被置为文件拥有者的用户ID。如果文件属于root,那用户就成为超级用户。同样,当一个用户执行SGID文件时,用户的组被置为文件的组。

例如,PS命令以SUID root运行,他从系统内存中读取,这是一般用户不能做的。Unix操作系统SUID程序代表了重要的安全漏洞,特别是SUID设为root的程序。

Unix操作系统实际上有两种类型的用户ID。"real user ID"是在登录过程中建立的用户ID。 "effective user ID"是在登录后的会话过程中通过SUID和SGID位来修改。

当一个用户运行一条命令时,进程继承了用户登录Shell的权限,这时"real user ID"和"effective user ID"是相同的。当SUID位被设置时,进程继承了命令拥有者的权限。

例如普通用户运行passwd命令时,他能够修改/etc/passwd文件,尽管文件是属于root的。这成为可能是因为passwd命令以root的SUID权限运行。那么如何识别SUID程序呢?

我们检查文件的权限模式,在它的第四位如果不是"x",而是"s",就是一个SUID程序。例如,ls -l /bin/su命令显示: -rwsr-xr-x 1 root root 14888 Aug 15 1999 /bin/su* 表明su是一个SUID程序。
 
Unix操作系统安全的一种典型攻击就是创建一个SUID是root的shell拷贝,然后把他隐藏。通过调用后门,攻击者就获得了root的权利。例如,某个系统管理员忘了关闭某个root的Shell,一个坏人经过运行如下命令:
cp /bin/bash /home/badman/.bash; chmod 4777 /home/badman/.bash

badman现在就有了一个bash的SUID root拷贝任其处理。他就有完整的root权限了。因此,Unix操作系统管理员应该定期察看系统中有哪些SUID和SGID文件。用下面的命令可以实现:find / -type f \( -perm -4000 -o -perm -2000 \) -ls

当然,攻击者可以通过修改find命令来逃避检测,所以要运行专门的检测软件(如Tripwire)来进行检查。 好了,关于Unix操作系统中SUID/SGID的知识,我们就介绍到这里了。

【编辑推荐】

  1. 系统命令检测你的Unix操作系统
  2. 讲解Unix操作系统的分支FreeBSD操作系统
  3. 如何测试Unix操作系统配置
  4. 学习配置Unix操作系统客户机
  5. 如何配置Unix操作系统DNS服务器
责任编辑:小霞
相关推荐

2010-04-15 18:46:53

Unix操作系统

2010-04-15 11:15:04

2010-05-06 16:26:02

Unix SUIDSGID

2010-05-06 16:45:17

Unix SUID

2010-04-13 12:27:44

Unix操作系统

2010-04-15 14:40:26

Unix操作系统

2010-04-19 18:18:30

Unix操作系统

2010-04-19 17:39:50

Unix操作系统

2010-04-16 17:19:58

Unix操作系统

2010-04-14 13:59:45

Unix操作系统

2010-04-16 17:49:28

Unix操作系统

2010-04-08 17:56:42

Unix操作系统

2010-04-09 11:24:38

Unix操作系统

2010-04-19 16:57:09

Unix操作系统

2010-04-08 16:18:22

Unix操作系统工具

2010-04-08 15:21:39

Unix操作系统

2010-04-19 18:31:16

Unix操作系统

2010-04-08 10:42:28

Unix操作系统

2010-04-19 10:54:33

Unix操作系统

2010-05-04 10:16:11

Unix操作系统
点赞
收藏

51CTO技术栈公众号