Android系统服务的SELinux策略定义:如何设置?

Android系统服务的SELinux策略定义:如何设置?,第1张

概述我之前写过一个独立的守护进程来访问自定义设备(/ dev / mydev0).看看AOSP源代码,我想我需要在以下文件中设置策略才能使其工作: 新文件device.te包含: type mydev_device, dev_type; 新文件mydevsrvc.te包含 # service flash_recovery in init.rctype mydevsrvc_type, domain; 我之前写过一个独立的守护进程来访问自定义设备(/ dev / mydev0).看看AOSP源代码,我想我需要在以下文件中设置策略才能使其工作:

新文件device.te包含:

type mydev_device,dev_type;

新文件mydevsrvc.te包含

# service flash_recovery in init.rctype mydevsrvc_type,domain;type mydevsrvc_type_exec,exec_type,file_type;init_daemon_domain(mydevsrvc_type)allow mydevsrvc_type mydev_device:chr_file rw_file_perms;

编辑file_contexts添加:

/dev/mydev[0-9]*    u:object_r:mydev_device:s0

编辑了service_contexts以添加:

mydevsrvc                  u:object_r:mydevsrvc_type:s0

并通过编辑init.flo.rc来启动守护进程以包含以下行:

service mydevsrvc /system/bin/mydevsrvc    class main    user system    group system    seclabel u:r:mydevsrvc_type:s0    oneshot

现在,我需要访问AndroID应用程序中的设备,所以我必须将守护进程更改为AndroID系统服务.

我可以使用BOOT_COMPLETED意图启动服务(线程),如a previous question中所述

我无法弄清楚如何设置SElinux策略,以便此java服务也能够访问dev文件.

[更新]为此,我继续使用特权守护进程.我的java服务通过套接字连接到守护进程.我没有更好的解决方案.

解决方法 我终于找到了答案.在这里发布,因为肯定有像我这样的SEPolicy noobs寻找类似的答案.

对于这项工作,我需要能够从我的实现我的服务的Java应用程序访问我的设备文件.

我需要在我的sepolicy目录中的新文件中添加以下规则:

允许system_app mydev_device:chr_file rw_file_perms;

此外,需要使我的服务应用程序在system_app域中运行.为此,我需要:

>在AndroID构建期间安装在priv_app中.
>使用平台密钥签名
>在manifest中声明共享用户标识:androID.uID.system.我发现没有这个,应用程序在平台应用程序域中运行,即使SEPolicy规则中有相应的更改,也无法访问我的设备文件.不知道为什么,我没有费心去调试.

也可以在mydevsrvc_type域中运行我的服务应用程序.我没有找到如何做到这一点,或者这是否有效.

总结

以上是内存溢出为你收集整理的Android系统服务的SELinux策略定义:如何设置?全部内容,希望文章能够帮你解决Android系统服务的SELinux策略定义:如何设置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1136000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存