![](/img/trans.png)
[英]SELinux Permission Denied for a new framework service in android
[英]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.