指定域转换规则

来源:互联网 发布:淘宝怎么收钱 编辑:程序博客网 时间:2024/06/13 07:03

http://book.51cto.com/art/200902/108616.htm

11.2.2.2.指定域转换规则

现在看第8和第9行,这里出现了两次调用domain_auto_trans()宏,这个宏可能是strict示例策略中最常用的一个宏了,因为它定义了我们在第2章"概念"中讨论到的允许域转换的标准规则,你可以在./macros/core_macros.te文件找到这个宏的定义,实际上宏通常很短,因为它要调用另一个宏doamin_trans(),这个宏的定义如下:

# $1 is original domain, $2 is executable file type, $3 is new domain
define(`domain_auto_trans',`
domain_trans($1,$2,$3)
type_transition $1 $2:process $3;
')

domain_auto_trans()宏授予了必要的权限允许域转换(通过调用domain_trans()宏)默认通过type_transition规则使这个转换自动进行。

如果我们进一步分析domain_trans()宏,我们会发现更多规则,它们大部分都是标识进程间(父进程和子进程间)通信(IPC)需要的许可,然而,这个宏还包括了三个小型allow规则,如:

# 来自domain_trans macro的关键规则
# $1是原始域,$2是可执行文件类型,$3 是新域
define(`domain_trans',`
allow $1 $3:process transition;  # 旧域可以转换成新域
allow $1 $2:file { read x_file_perms }; # # 旧域可执行文件类型
allow $3 $2:file entrypoint;  # 新域可以送入的文件类型
# 剩下的domain_trans规则没有显示
')
注意第二个规则中许可字段中有read和x_file_perms,然而read是针对file客体类别的许可,x_file_perms却不是,相反,它是m4宏的另一个类型,它通常代表文件可执行许可,我们在./macros/core_macros.te可以找到这个宏的定义:
define(`x_file_perms', `{ getattr execute }')
因此,我们再看ping模块中的第8行和第9行,我们看到具有特权的管理域类型sysadm_t和启动进程脚本域initrc_t都可以访问域ping_t,这就清晰地表明它们可以运行ping程序。
0 0