在 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 Oreo 中管理来自未知来源的安装?

Android oreo - 推送通知崩溃

仅限 Android 9 (Pie):Context.startForegroundService() 没有调用 Service.startForeground() - 在 Oreo 上工作正常