https://source.android.google.cn/security/selinux/concepts
https://blog.csdn.net/kongbaidepao/article/details/61416862
1、属性
定义在 attributes 文件中,属性是一组域或类型的名称
如:
# All types used for processes.
attribute domain;
# All types used for /data files.
attribute data_file_type;
系统属性是对相同性质主体或者客体的一种抽象,抽象为一种类型
attribute file_type;
文件类型,代表所有的文件。
定义了type 中需要使用到的属性值,所有的客体与主体只会属于这些事先定义好的类别。
属性与type 是在同一个命名空间,可以认为是相同效果的。
在申明类型时,关联属性
type httpd_user_content_t, file_type, httpdcontent;
等效
type httpd_user_content_t; //申明类型
typeattribute httpd_user_content_t file_type, httpdcontent; //关联属性
typeattribute可以让申明与关联分开,从而控制更灵活
2、class 对象的类型,定义在security_classes,用于指定域或类型所属的的一个类别
A、定义属性ro.fun.su 对象标签,这样其它地方就可以使用了
ro.fun.su u:object_r: ro_fun_su_prop:s0
B、指定对象标签类型,即type 定义主体与客所属的类型。
type ro_fun_su_prop , property_type, mtk_core_property_type;
这里定义了一个 ro_fun_su_prop 类型为 property_type属性, mtk_core_property_type
这里是类型与属性关联起来了
C、使用
使用 ro_fun_su_prop 地方相当使用 ro.fun.su
allow system_server ro_fun_su_prop:property_service set;
对class 为property_service 的类型设置
allow system_server ro_fun_su_prop:file r_file_perms;
对class为file 的类型读
属性指定了客体的一个比较粗范围,allow规则中添加class 限制到了一个更小的范围
http://blog.csdn.net/myarrow/article/details/9856095/