-
软件开发指南_v2.09_20190527针对rk3399芯片在Android 7.1系统下的条件语句说明
资源介绍
9.3 条件语句
我们在 SELinux策略中使用布尔变量的原因是为了可以在编写规则时可以使用条件语
句(if),条件语句有一个条件表达式,条件表达式是由布尔变量和一个真值及假值的列表
组成,如果条件表达式的值为真,真值列表规则就生效,假值列表规则就失效;如果条件表
达式的值为假,情况就和前面的相反了,在一个处于运行中的系统上,我们可以通过改变表
达式使用的布尔变量的当前值来改变条件表达式的值。
9.3.1 条件表达式和规则列表
最简单最常见的条件语句只有一个布尔变量和一个真值规则列表(没有假值规则列表),
我们还是延续前面的 ping例子进行讨论,当布尔变量 user_ping为真值时,我们可以编写
规则允许用户域使用 ping,下面就是开启 user_ping 的条件语句:
# Example: controlling user ping via a Boolean
# Assumptions (defined elsewhere in policy):
# unpriv_userdomain: attribute for all ordinary user
domains
# ping_t: domain type for the ping process (which has
necessary
# network interface access for ping to work)
# ping_exec_t: entrypoint file type of the ping
executable
if ( user_ping ) {
# domain transition access to allow user access
allow unpriv_userdomain ping_t : process transition;
allow unpriv_userdomain ping_exec_t : file { read getattr
execute };
# entrypoint might be redundant since ping_t should already
have it
# but adding it again is not harmful