曲径通幽论坛

标题: 域的转移(Domain Transitions) [打印本页]

作者: beyes    时间: 2013-6-19 22:26
标题: 域的转移(Domain Transitions)
一个域中的进程要转移到另一个域中,需要通过执行一个具有新域“入口点”类型的应用程序。SELinux 策略里使用 “入口点” 权限控制哪个应用程序可以进入一个域。下面演示这依情况:

1. 比如一个用户希望改变自己的密码,那么它会执行 /usr/bin/passwd 这个程序,我们先来查看一下该程序的类型:
[root@groad.net ~]# ls -Z /usr/bin/passwd
-rwsr-xr-x. root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd
由上可见,它的类型为 passwd_exec_t 。

passwd 这个工具是需要访问 /etc/shadow 这个文件的,该文件的类型被标以 shadow_t 类型:
[root@groad.net ~]# ls -Z /etc/shadow
----------. root root system_u:object_r:shadow_t:s0    /etc/shadow

2. SELinux 策略规则已经声明过,一个运行在 passwd_t 域的进程允许读和写被标记为 shadow_t 类型的文件。shadow_t 类型仅仅用在需要修改密码的文件上,如 /etc/gshadow, /etc/shadow 以及它们的备份文件。

3. SELinux 策略规则还声明了 passwd_t 域具有 passwd_exec_t 类型的“入口点”权限。

4. 当一个用户运行 /usr/bin/passwd 这个程序时,用户的 shell 进程将转移到 passwd_t 域中。对于 SELinux 来说,默认的动作都是禁止的(如这里的修改密码),假如说 SELinux 策略数据库中没有这么一条允许的规则,那么改变密码将失败;然而在策略数据库中已存在一条规则并声明允许运行在 passwd_t 域中的应用程序可以访问标记以 shadow_t 类型的文件,因此 passwd 这个命令就允许访问 /etc/shadow ,然后用户的密码得意修改。

上面的例子并不完全说明整个问题,但它用来解释域的转移基本原理却是足够的。尽管有一条实际的规则允许运行在 passwd_t 域的程序可以访问标记以 shadow_t 文件类型的对象,但在转移到新域之前,也要求满足其他的 SELinux 策略规则。在这个例子里,TE (Type Enforcement,类型的强制实施)可做有如下保证:












欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2