Android SELinux(或者你可以说是SEAndroid)定义了许多域,包括system_app、platform_app、isolated_app等等。
每个域都有不同的含义,例如,system_app包含所有共享系统uid的应用程序,而platform_app包含所有签署平台密钥的应用程序。
所有SE文件都位于外部/sepolicy中,我可以从这些文件修改规则。
是否可以定义指向指定包名的新域(例如,com.google.android.music)?
我找不到关于这方面的任何文件或例子,因此我不知道如何做到这一点。
如有任何建议或意见,我将不胜感激。
谢谢。
发布于 2015-03-17 08:32:29
经过长时间的研究,我找到了一种为指定包定义新域的方法。
在seapp_contexts中定义一个新域
像这样,
user=_app domain=googlemusic seinfo=platform name=com.google.android.music type=app_data_file
然后定义新域googlemusic的权限。
创建一个名为googlemusic.te的te文件
type googlemusic_app,domain
app_domain(googlemusic)
#more permissions
发布于 2022-06-04 14:00:52
只是为了更新Android12的@alec.tu答案--在googlemusic.te文件中,第2行应该是:
typeattribute googlemusic_app coredomain;
app_domain(googlemusic_app)另一个新的文件- system/sepolicy/public/googlemusic_app.te应该使用以下内容创建:
type googlemusic_app, domain;发布于 2022-07-07 16:04:16
好的,对于那些试图实现这一目标的人:在AOSP 11中,如果您在构建包含“从不允许”的内容时遇到错误,则需要为您的应用程序指定一个域。当我在设备/你的供应商/你的设备/你的设备/sepolicy中的platform_app.te文件中尝试这个错误时,我写了一行: platform_app sysfs:file { getattr };;
在违反“永不允许”规则的同时,构建在错误时停止。
解决方案是打开文件seapp_contexts,然后添加一行:
解释:
user=_app domain=*you可以任意命名它,比如selinuxtest,但是您必须添加"_app",所以应该是selinuxtest_app seinfo=platform name=com.yourappname.whatever type=app_data_file levelFrom=all。
示例:
user=_app domain=selinuxtest_app seinfo=platform name=com.testapplication.myname type=app_data_file levelFrom=all
然后在与platform_app.te相同的文件夹中创建一个文件,在我们的示例中应该是selinuxtest.te,并将其放入其中:
解释:
输入yourappdomainname & "_app“域;app_domain(yourappdomainname & "_app")
示例:
类型selinuxtest_app,域;app_domain(selinuxtest_app)
允许selinuxtest_app sysfs:文件{ getattr打开读};
瞧!它的工作原理是这样的,只为您自己的应用程序提供访问权限。
https://stackoverflow.com/questions/28914215
复制相似问题