【问题标题】:SELinux - Is it possible to inherit from a domain?SELinux - 是否可以从域继承?
【发布时间】:2023-04-05 19:42:01
【问题描述】:
我正在扩展 Android SELinux 政策以支持专有系统服务。在 Android 中,system_app 域是为特权系统应用程序定义的。我希望我的专有服务具有与 system_app 域中定义的完全相同的权限以及一些额外的权限。是否可以在不更改 system_app 域定义或复制它的情况下这样做? SELinux 中的域有某种继承机制吗?
【问题讨论】:
标签:
android
android-source
selinux
【解决方案1】:
Android 上的 SELinux 政策不允许您根据需要使用此功能(需要修改)。但是,如果您查看类型是如何定义的,通过关键字 type,它允许定义一种新类型并为其分配属性。另一个关键字 typeattribute 允许将属性分配给类型 post 声明。
例如:
type foo, kitten, dog;
等同于:
type foo, dog;
typeattribute foo, kitten;
请注意,所有属性都必须通过 attribute 关键字声明:
attribute kitten;
attribute dog;
你可以这样想,因为类型 foo 扩展了 kitten 和 dog。但是,system_app 是一个类型,而不是一个属性,因此不能扩展。
在某个时间点,我希望做一些非常相似的事情,并尝试使基本策略应用程序域中的所有类型都消失并因此使它们成为属性。最终被废弃:
https://android-review.googlesource.com/#/c/58741/
但是,通过应用相同的习语,您可以达到您想要的结果。