Android O selinux违反Neverallow解决办法

因工作需要移植fastmmi到Android O,其中会涉及selinux权限配置,现将自己的理解总结如下:

1、Android O selinux相关配置文件所在路径

      system/sepolicy/*                      AOSP device和APPS相关selinux配置

      device/qcom/sepolicy/*            平台和板卡相关selinux配置

2、修改selinux权限时,注意不要违反谷歌规定的Neverallow规则,否则编译报错

例如:kernel log中提示“avc: denied { read write } for pid=867 comm="mmi" name="binder" dev="tmpfs" ino=10501 scontext=u:r:mmi:s0 tcontext=u:object_r:binder_device:s0 tclass=chr_file permissive=0”

如果直接在mmi.te文件中添加:allow mmi  binder_device : chr_file  rw_file_perms,就可能导致违反谷歌规定的Neverallow规则而编译报错: 

system/sepolicy/public/domain.te

neverallow {
  domain
  -coredomain
  -appdomain
  -binder_in_vendor_violators 

} binder_device:chr_file rw_file_perms;

如果这时直接修改neverallow规则,可以通过编译,但是可能会导致CTS测试失败,所以这时就要想办法绕过neverallow规则,

上面有一个binder_in_vendor_violators貌似和binder有关,那我们就先看下这个东东如何定义的吧?

system/sepolicy/public/attributes

attribute binder_in_vendor_violators;

expandattribute binder_in_vendor_violators false;

system/sepolicy/private/binder_in_vendor_violators.te

allow binder_in_vendor_violators binder_device:chr_file rw_file_perms;

从中可以看出这个东东具有读写binder_device权限,那我们能否利用这个?如果可以,又该如何利用?

 其实很简单,只要做如下修改即可:

device/qcom/sepolicy/common/mmi.te

typeattribute mmi binder_in_vendor_violators;

将mmi domain关联到这个东东,问题就可以解决了

  • 10
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值