#android #linux #permissions #selinux #cts
#Android #linux #разрешения #selinux #cts
Вопрос:
когда я добавляю новую службу и нахожу ошибку следующим образом:
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.
Ответ №1:
Android поставляется с длинным списком neverallow
правил, которые гарантируют, что вы не предоставляете разрешения, которые нарушают безопасность вашего устройства. К счастью, эти neverallow
правила хорошо документированы в коде. Если вы посмотрите строку 517, system/sepolicy/public/domain.te
вы найдете это:
Не разрешайте service_manager добавлять ярлыки служб по умолчанию. Вместо этого домены должны использовать более конкретный тип, такой как system_app_service, а не общий тип. Новые service_types определены в {,hw,vnd}service.te, а новые сопоставления имени службы с service_type определены в {,hw, vnd}service_contexts .
Вероятно, вы использовали audit2allow
для создания правила. Поначалу это кажется простым решением, но это почти всегда приводит к тому, что набор правил будет трудно читать. В конце концов, нет другого пути, кроме понимания основ SELinux в Android.
Смотрите здесь для получения дополнительной информации.
Я не могу привести вам пример того, что делать сейчас, поскольку то, что вам нужно сделать, зависит от типа службы, которую вы хотите добавить.