在 Android Oreo 上使用 su 权限在 init.rc 中启动本机守护进程
Posted
技术标签:
【中文标题】在 Android Oreo 上使用 su 权限在 init.rc 中启动本机守护进程【英文标题】:Starting a native daemon in init.rc with su rights on Android Oreo 【发布时间】:2019-11-22 18:19:28 【问题描述】:我需要在具有 su 权限的 android Oreo AOSP 中启动一个简单的守护进程。
我已将 SE Linux 设置为允许更改内核引导参数设置,编译守护程序并将可执行文件放入 /system/xbin ,在 init.rc 中添加服务定义但仍然得到:
avc : 拒绝 转换
如果守护程序由 shell 启动(具有 su 权限),它可以正常工作。
我在***上遵循了许多用户提出的解决方案,但没有结果。
有什么帮助或建议吗?
谢谢
【问题讨论】:
【参考方案1】:Init 至少需要一个 SELinux 上下文才能将进程转换到。恐怕即使在许可模式下运行,您也必须定义一个。
将以下内容添加到您的file_contexts
/system/xbin/<my-service> u:object_r:<some-context>:s0
编辑:将seclabel
属性添加到init.rc
(see init) 中的服务配置可能就足够了。
service my-service /system/xbin/my-service
[...]
seclabel u:r:su:s0
【讨论】:
以上是关于在 Android Oreo 上使用 su 权限在 init.rc 中启动本机守护进程的主要内容,如果未能解决你的问题,请参考以下文章
Android 8或更高版本使用Firebase Performance SDK在Android Oreo上崩溃的应用程序
为啥在 Android Oreo 上关闭屏幕时前台服务停止?
如何在 Android Oreo 中管理来自未知来源的安装?
仅限 Android 9 (Pie):Context.startForegroundService() 没有调用 Service.startForeground() - 在 Oreo 上工作正常