SELinux权限问题解决

SELinux权限

SELinux是Google从android 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。借助 SELinux,Android 可以更好地保护和限制系统服务、控制对应用数据和系统日志的访问、降低恶意软件的影响,并保护用户免遭移动设备上的代码可能存在的缺陷的影响。SELinux 按照默认拒绝的原则运行:任何未经明确允许的行为都会被拒绝。

然而,在开发中,我们经常会遇到由于SELinux造成的各种权限不足,即使拥有“万能的root权限”,也不能获取全部的权限。

确认是否SELinux权限问题

  • 先查看当前权限模式:
	adb shell getenforce
  • SELinux权限有两种全局权限模式:
    1. Permissive(宽容模式):权限拒绝事件会被记录下来,但不会被强制执行。
    2. Enforce(强制模式):权限拒绝事件会被记录下来并强制执行。
	切换SELinux模式:
	Permissive: adb shell setenforce 0
	Enforce: adb shell setenforce 1

如果问题消失了,基本可以确认是SELinux造成的权限问题,需要通过正规的方式来解决权限问题。

问题解决

报错log:
问题场景是读取dropbox下面文件所致

  avc: denied { read } for name="dropbox" dev="vdd44" ino=466946 scontext=u:r:system_app:s0 tcontext=u:object_r:dropbox_data_file:s0 tclass=dir permissive=0

可以看到有avc denied,且最后有permissive=0,表示不允许。

拆分此问题

缺少的权限:     { read }权限
谁缺少权限:        scontext=u:r:system_app:s0 
对哪个文件缺少权限:tcontext=u:object_r:dropbox_data_file:s0
什么类型的文件:  tclass=dir 
完整的意思: system_app进程对object_r:dropbox_data_file类型的dir缺少read 权限。

解决方法

# system_app.te
allow system_app dropbox_data_file:dir { read };

总结此类问题万能公式:

要添加的权限语句: allow scontext tcontext:tclass { action };
要添加的目标文件: {scontext}.te

参考连接

  1. https://blog.csdn.net/Haomione/article/details/123881504
  2. https://blog.csdn.net/qq_40731414/article/details/126919088
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值