app权限

一.权限级别

定义在/frameworks/base/core/res/AndroidManifest.xml中,查看protectionLevel字段,可分为normal,signature(需系统签名),privileged,dangerous(需动态申请)等
在这里插入图片描述
具体参考https://blog.csdn.net/u012514113/article/details/128865859

二.app分类

untrusted_app: 第三方app,没有Android平台签名,没有system权限
platform_app :有android平台签名,没有system权限
system_app :有android平台签名和system权限
priv_app :没有platform签名的app(肯定没有system权限), 但Android.mk 中 LOCAL_PRIVILEGED_MODULE := true, 在priv-app 目录下的
android平台签名:Android.mk 中,定义 LOCAL_CERTIFICATE := platform
system权限:AndroidManifest.xml 中声明 android:sharedUserId=“android.uid.system”

三.动态申请权限

参考https://blog.csdn.net/fenghuochengshan/article/details/130035308
通过requestPermissions申请权限,会弹窗,用户同意后回调
绕过动态权限检查:
参考https://blog.csdn.net/weixin_44021334/article/details/106946035
https://blog.csdn.net/ChaoLi_Chen/article/details/103704703
https://blog.csdn.net/qq_15950325/article/details/129359322

四.Selinux权限

1. 根据log在XXX.te添加allow语句

1>具体添加的位置

  android8及之前:device\qcom\sepolicy\common
  android9: device\qcom\sepolicy\vendor\common
  android10:device\qcom\sepolicy\generic\vendor\common
  android11,12 :UM.9.14\device\qcom\sepolicy_vndr\generic\vendor\common

2>比如log中报如下错误
在这里插入图片描述
根据log打印,应该在ttsfiles_shell.te中添加

allow ttsfiles_shell system_data_file:dir {search}

2.根据编译报错修改neverallow语句

具体目录

system\sepolicy\public\domain.te
system\sepolicy\prebuilts\api\XXX\public\domain.te
system\sepolicy\private\domain.te
system\sepolicy\prebuilts\api\XXX\private\domain.te

比如以下两个语句会冲突

allow ttsfiles_shell ttsfiles_shell:capability {dac_read_search};
neverallow ~{    //~ 表示除了
   traced_perf
   traced_probes
   userdebug_or_eng(`heapprofd')
 } self:global_capability_class_set dac_read_search; //此句意思为除了traced_perf,traced_probes,userdebug_or_eng有dac_read_search权限,其它都没有该权限

解决方法:修改neverallow语句

3.当添加allow语句后继续报avc :denied错误

查看mls文件,看是否有约束语句
具体目录:

system\sepolicy\private\mls
system\sepolicy\prebuilts\api\XXX\private\mls

比如以下两个语句会冲突

allow ttsfiles_shell system_data_file:dir {search};
mlsconstrain dir { open search getattr setattr rename add_name remove_name reparent rmdir }
	     ( (t2 != app_data_file and t2 != privapp_data_file ) or l1 dom l2 or t1 == mlstrustedsubject);

解决方法:添加typeattribute ttsfiles_shell mlstrustedsubject;

4.涉及ioctl操作

其权限定义在system\sepolicy\public\ioctl_defines中

5.以上操作后依旧不行

chmod 777

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值