簡體   English   中英

新創建的服務的 AndroidP-SELinux 權限被拒絕

[英]AndroidP-SELinux Permission Denied for a new created service

當我添加一個新服務時,發現錯誤如下:

SELinux : avc:  denied  { add } for service=xxxManagerService pid=3798 uid=1000 scontext=u:r:system_server:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager permissive=0

然后我在system_server.te添加允許:

allow system_server default_android_service:service_manager { add };

但是發生了構建錯誤:

libsepol.report_failure: neverallow on line 517 of system/sepolicy/public/domain.te (or line 10355 of policy.conf) violated by allow system_server default_android_service:service_manager { add };
libsepol.check_assertions: 1 neverallow failures occurred
Error while expanding policy
out/host/linux-x86/bin/checkpolicy:  loading policy configuration from out/target/product/sti6030d111/obj/ETC/sepolicy_neverallows_intermediates/policy.conf
[ 11% 22/200] target thumb C++: libpqcontrol <= vendor/amlogic/common/frameworks/services/systemcontrol/PQ/SSMAction.cpp

我應該怎么做才能成功,並通過 cts。

Android 帶有一長串neverallow規則,可確保您不會授予破壞設備安全性的權限。 幸運的是,這些neverallow規則在代碼中都有詳細說明。 如果您在system/sepolicy/public/domain.te查找第 517 行,您會發現:

不允許為默認服務標簽添加 service_manager。 相反,域應該使用更具體的類型,例如 system_app_service 而不是通用類型。 {,hw,vnd}service.te 中定義了新的 service_types,{,hw,vnd}service_contexts 中定義了從服務名稱到 service_type 的新映射。

您可能使用了audit2allow來創建規則。 起初這似乎是一個簡單的解決方案,但它幾乎總是會導致難以閱讀的規則集。 最后,除了了解 Android 中 SELinux 的基礎知識之外,別無他法。

請參閱此處了解更多信息。

我無法舉例說明現在要做什么,因為您需要做的事情取決於您要添加的服務類型。

暫無
暫無

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

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