![](/img/trans.png)
[英]Updating Android 9 SELinux Policy To Allow OTA Updates by System App
[英]SELinux policy definition for Android system service: how to setup?
我之前编写了一个独立的守护进程来访问自定义设备 (/dev/mydev0)。 查看 AOSP 源代码,我想我需要在以下文件中设置策略才能使其工作:
新文件 device.te 包含:
type mydev_device, dev_type;
新文件 mydevsrvc.te 包含
# service flash_recovery in init.rc
type 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 意图启动服务(线程),如上一个问题中所述
我无法弄清楚如何设置 SELinux 策略,以便此 java 服务也能够访问 dev 文件。
[更新] 为此,我继续使用特权守护进程。 我的 java 服务通过套接字连接到守护进程。 我没有更好的解决方案。
我终于找到了答案。 在这里发布,因为肯定会有像我这样的SEPolicy noobs寻找类似的答案。
对于这项工作,我需要能够从我的实现我的服务的Java应用程序访问我的设备文件。
我需要在我的sepolicy目录中的新文件中添加以下规则:
allow system_app mydev_device:chr_file rw_file_perms;
此外,需要使我的服务应用程序在system_app
域中运行。 为此,我需要:
priv_app
中。 android.uid.system
。 我发现没有这个,应用程序在platform-app
域中运行,即使SEPolicy规则中有相应的更改,也无法访问我的设备文件。 不知道为什么,但我没有费心去调试。 也可以在mydevsrvc_type
域中运行我的服务应用程序。 我没有找到如何做到这一点,或者这是否有效。
以下是在Android设备上实施SELinux所需步骤的简要摘要:
在内核和配置中添加SELinux支持。 授予每个服务(进程或守护进程)从init自己的域启动。 通过以下方式识别这些服务:查看init..rc文件并查找所有服务。 检查表单init的警告:警告! 服务名称需要定义SELinux域; 请修理! 在dmesg输出。 检查ps -Z | grep init输出以查看init域中正在运行的服务。 标记所有新进程,驱动程序,套接字等。所有对象都需要正确标记,以确保它们与您应用的策略正确交互。 有关在标签名称创建中要遵循的示例,请参阅AOSP中使用的标签。 制定完全涵盖所有标签的安全策略,并将权限限制在绝对最低限度。 理想情况下,OEM从AOSP中的策略开始,然后在它们的基础上进行自定义。
更多https://source.android.com/security/selinux/implement.html
可能在您的ueventd.rc文件或特定项目中添加一行以授予权限
为了回答您从 init rc 启动服务的问题,您只需编写一个如下所示的 rc 文件。 在接收到 boot_completed 时它将在何处启动您的服务
on property:sys.boot_completed=1 start mydevsrvc
供参考http://androidxref.com/9.0.0_r3/xref/device/generic/qemu/init.ranchu.rc#60
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.