簡體   English   中英

使用 android 高音架構將供應商服務添加到 ServiceManager [SELinux 策略]

[英]Add vendor service to ServiceManager with android treble architecture[SELinux policy]

注意:我是 SELinux 政策的初學者,並且遵循Android 的 vndservicemanager

我有一個在 BootComplete 接收器上啟動的 java 服務(MyService)。 現在我在 MyService.java 的 onCreate 中將 myservice 添加到 ServiceManager。

ServiceManager.addService(mysystemservice, mybinder);

根據高音架構,我通過在應用程序的 Android.mk 中添加以下內容將我的應用程序移動到供應商映像分區。

LOCAL_VENDOR_MODULE := true

我對 OEM SELinux 政策進行了以下更改,之前它是為系統服務編寫的,因為我將應用程序移至供應商,因此對供應商服務進行了更改,提供舊的和當前的 SE 政策。

創建上下文“my_service”

老的

私人/service_contexts

mysystemservice u:object_r:my_service:s0

現在

vendor/common/vndservice_contexts

mysystemservice u:object_r:my_service:s0

定義的服務類型

老的

public/service.te

type my_service, service_manager_type;

現在

vendor/common/vndservice.te

type my_service, vndservice_manager_type;

現在授予添加權限

老的

public/servicemanager.te

allow system_app my_service:service_manager add;

現在

abc.te

type abc, domain;
type abc_exec, exec_type, vendor_file_type, file_type;

init_daemon_domain(abc)

vndbinder_use(abc)

binder_call(abc, system_app)

add_service(abc, my_service)

allow abc  my_service:service_manager  find;
allow abc  my_service:service_manager  add; 

經過上述更改並提供完整構建后,我可以看到我的服務上下文是 out/product/target/vendor/etc/selinux/vndservice_contexts..inplace 的一部分 out/product/target/system。

但是一旦 Myservice.java 嘗試在 ServiceManager 中添加“mysystemservice”

ServiceManager.addService(mysystemservice, mybinder);

我低於 **avc denied ** 錯誤

E/SELinux: avc: denied { add } for service=mysystemservice pid=7588 uid=1000 scontext=u:r:system_app:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager permissive=0 2019-11-14 12 :44:39.613 592-592/? E/ServiceManager: add_service('mysystemservice',b0) uid=1000 - 權限被拒絕

正如我們在上面的日志中看到的那樣,目標上下文采用默認的“ tcontext=u:object_r:default_android_service:s0代替my_service

注意:如果我保留對系統映像的更改,一切正常,唯一的問題是當我將 SE 策略更改移動到供應商時。

如果我錯過了什么或任何其他方式來添加服務,請告訴我。

我可以看到的一個問題是您正在使用abc.te ,但您尚未在vendor/common/內的seapp_context定義它。

您應該定義如下內容:

user=system
seinfo=platform
name=your.package.name
domain=adbc
type=system_app_data_file

此更改后avc錯誤將指向abc應用程序域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM