Android中SeLinux权限 .te文件编写

46 篇文章 0 订阅
28 篇文章 0 订阅

Android中SeLinux权限 .te文件编写

2017年09月05日 10:26:19 mrx润物细无声 阅读数:3193

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/x2017x/article/details/77847988

  在android中添加一个LocakSocket通信,权限部分折腾了好几天,终于搞定了.

  首先在root权限下使用setenforce 0命令放开selinux权限,看看需要的操作是否能成功.如果可以,证明是Selinux的设置问题.仅使用该命令,手机重启又会恢复为enforce为1的状态.为了长久更改此权限,需更改如下.

  /device/qcom/sepolicy 目录下找到对应的版本,在里面添加自己的服务对应的te文件,如service.te.编辑内容如下:

        type service, domain;
        type service_exec, exec_type, file_type; 
        init_daemon_domain(service)

  接下来在下面加上各种权限设置,具体的权限添加可根据经验添加.对于我这种小白,只能采用一步步尝试了.编译系统到手机中,运行你的服务,查看权限组阻止日志:

                              adb shell

                              su

                              cat /dev/kmsg

  寻找这种形式的日志:36,7462,1035433895,-;type=1400 audit(836284.029:112): avc: denied { execute } for pid=11710 comm="mpctrl" name="sh" dev="mmcblk0p21" ino=502 scontext=u:r:mpctrl:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=0

  那么在上面的service.te文件末尾添加 allow mpctrl shell_exec:file execute;(记得加分号,否则编译通不过)

  mpctrl对应为scontext中的第三项,shell_exec对应为tcontext中的第三项,类型file对应为tclass,需要的权限为denied { execute }中的execute.

  可能不止需要一个权限,那么就再次编译,重复上面步骤寻找,添加.编译的过程中可能由于你加入的权限和某些权限配置产生冲突,比如/external/sepolicy/app.te中的一些neverallow语句,那么就需要看情况注释一些不允许的规则了,或者通过在neverallow中"-***"除去你所需要打开权限针对的内容.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值