有了前面介绍的访问控制策略,SELinux已经可以完成访问控制工作了。但SELinux的设计者觉得还不够,又引入了限制语句和条件语句。在限制语句和条件语句中,四元组中的类型之外的三个成员也可以起作用。
1.限制
限制(Constrain)的语法是:
其中expression的语法是:
其中u1、r1、t1指源端(主体)的SELinux用户、角色、类型,u2、r2、t2指目的端(客体)的SELinux用户、角色、类型。op包含两个值“==”和“!=”。role_op包含“==”和“!=”names就是一个或多个名字。
举例:
2.条件
为了进一步增加灵活性,SELinux在策略中引入了布尔变量和条件分支。这也增加了复杂性。
(1)bool
语法很简单:
举例:(www.xing528.com)
2)if
通过if语句内核可以根据布尔变量关闭或启用部分策略。语法如下
其中conditional_expression可以包含布尔常量(true或false)、一个或多个已定义的布尔变量,可以使用的布尔运算符包括&&、||、^、!、==、!=。
举例:
3.多级安全限制
SELinux安全上下文四元组中的SELinux用户和角色有两条途径为SELinux访问控制做贡献。第一条路径是SELinux用户映射为角色,角色映射为类型;第二条路径是在限制策略中起作用。多级安全为访问控制做贡献只有一条路径,就是多级安全限制策略。
多级安全限制策略语句是mlsconstrain。mlsconstrain和constrain类似,也是对客体对象施加额外的检查。语法如下:
其中expression的语法是:
其中u1、r1、t1、l1、h1指源端(主体)安全上下文中的SELinux用户、角色、类型、多级安全中的低级别、多级安全中的高级别。u2、r2、t2、l2、h2指目的端(客体)安全上下文中的SELinux用户、角色、类型、多级安全中的低级别、多级安全中的高级别。op包含==和!= role_mls_op包含==、!=、eq、dom、domby、incomp。names的定义为:
举例:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。