| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> [ Android实战 ] selinux 策略修改不生效的问题解决 -> 正文阅读 |
|
[移动开发][ Android实战 ] selinux 策略修改不生效的问题解决 |
背景
问题处理我要移植的系统应用,主要是作为蓝牙通讯的服务端,客户端是通过 BluetoothSocket 的形式与其建立蓝牙连接。但是在Android10 上,报了 selinux 权限的错误。具体报错信息如下:
这里顺便说一下定位和解决 selinux 报错的一般思路,很多人可能已经很熟悉了,但是有一些人可能不知道。 开发调试阶段,如果某个应用在其他平台功能正常,而在新平台却不正常,可以用以下方法快速定位是否 selinux 问题: Android 系统启动后,先执行 接下来就是抓 logcat,过滤 avc 关键字,即可找到缺少的 selinux 权限,然后就是评估是否需要添加对应的 selinux 权限了。 简单的 selinux 策略添加,也有一个万能公式。比如我上面的那个报错,可以套用公式:
即在 untrusted_app_25.te 中添加策略: So easy! 修改完执行
注意:按照上述方式直接更新 selinux 相关文件在某些平台可能不生效,那就编译 vendor 或 system 镜像烧录即可。 重启机器后进行测试,fine,还是报同样的错误。。。 添加了 selinux 策略却不生效?百度了一圈,总算找到一个类似的问题:SELinux 添加一个权限 搜索了一下代码,发现果然在
从 mls 可以看出,必须满足以上 3 个条件之一才能授予 unix_stream_socket 的 connectto 权限: 1、根据 avc 报错,l1=s0:c512,c768,l2=s0,因此 l1 和 l2 不相等,l1 eq l2 不成立 2、t1 为 untrusted_app_25,根据 3、t2 为 system_app,根据 3 个条件都不满足,难怪加了对应的 selinux 策略后不生效,依然报错! 看懂了问题发生的原因,解决这个问题也就简单了。参考公司其他平台的做法,修改
总结问题解决了,还是得总结一下,当添加某些 allow 策略后,如果发现不起作用,可能是 MLS 作祟,限制了访问。这时可以查看一下 MLS 策略文件: 此外,一些 selinux 相关基本的概念还是有必要知道的: MLS:即 Multi-Level Security,在 selinux 的基础上加了不同安全等级的限制。 u1,u2:分别表示 source 和 target 的 user。 r1,r2:分别表示 source 和 target 的 role。比如 object_r t1,t2:分别表示 source 和 target 的 type,即对象的类型。比如 system_app,untrusted_app 等 l1,l2:分别表示 source 和 target 的 level,即 selinux 等级,由 sensitive 和 category 组成。比如 s0:c512,c768,s0 表示 sensitive,c512,c768 表示 category。 参考文章 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 16:19:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |