android L(5.0) 以及以后的版本:
Google 删除了permission table, 而是直接通过SELinux 来限制SELinux 的添加与修改.
对于"ro." 开头的系统属性,如果原本已经存在,则无法修改,所谓"read only", 即最多写一次。
对于一个 "xxx.yyy.zzz" 的系统属性("ro.xxx.yyy.zzz" 当作 "xxx.yyy.zzz" 看待),
(2.0) 首先到external/sepolicy/property_contexts , device/mediatek/common/sepolicy/property_contexts 查看是否有绑定它或者它的前缀(如 xxx.yyy.zzz, xxx.yyy, xxx.yyy., xxx.,xxx 等) 的SELinux Context, 如果有, 则忽略掉(2.1), (2.2) 这两步.
(2.1) 在device/mediatek/common/sepolicy/property.te 中 定义这个系统属性 "xxx.yyy.zzz" 的SELinux Context.
type xxx_yyy_zzz_prop, property_type;
(2.2) 在device/mediatek/common/sepolicy/property_contexts 中 绑定这个系统属性所对应的SELinux Context.
xxx.yyy.zzz xxx_yyy_zzz_prop;
(2.3) 在对应的Process(假设为demo)在device/mediatek/common/sepolicy/demo.te 中新增
unix_socket_connect(demo,property,init);
allow demo xxx_yyy_zzz_prop:property_service set;
同样Google 严禁普通的app (untrusted app)增加和修改system property.