Я новичок в мире Android
Я хочу знать, как установить SEPolicy для клиентской программы родного связующего
(И что же настроить ..)
Я использую ссылку поставщика binder (vndservicemanager) из Использование Binde-IPC
И я добавляю несколько файлов для требуемой SEPolicy
Теперь у меня есть два встроенных исполняемых файла - my_binder_service и my_client
они оба находятся в / vendor / bin /
my_binder_service запускается во время загрузки, и это добавит службу к поставщику servicemanager
my_client - это программа, которая использует binder IPC для выполнения некоторой функции из my_binder_service
Вот мои настройки в init.rc
service my_binder_service /vendor/bin/my_binder_service
class main
class oneshot
class console
seclabel u:r:my_binder_service:s0
Что у меня так далеко:
- my_binder_service успешно запущен во время загрузки
- Может добавить услугу к поставщику servicemanager
- my_client ведет себя хорошо при разрешительном режиме
Все вышеперечисленное проверяется в принудительном режиме с помощью ps -AZ и vndservice list command
Однако my_client приводит к ошибке сегментации в принудительном режиме
Я проверяю отклоненное сообщение по
dmesg | grep avc | grep my_
logcat | grep avc: | grep my_
Но я не нашел ни одного сообщения ни в разрешающем, ни в принудительном режиме
Я также проверяю контексты этих 2 запущенных процессов с помощью ps -AZ :
u:r:my_binder_service:s0 <- for my_binder_service
u:r:su:s0 <- for my_client
Я обнаружил, что контекст процесса не установлен правильно для my_client
И я думаю, что это может быть проблема my_client в принудительном режиме
Я думаю, my_binder_service установлен правильно из-за команды seclabel в файле init.rc
Но я не знаю, где установить контекст процесса для my_client
Вот содержимое my_client.te (my_binder_service.te похож на это)
type my_client, domain;
type my_client_exec, exec_type, file_type, vendor_file_type;
init_daemon_domain(my_client)
allow my_client my_client_exec:file entrypoint;
allow my_client serial_device:chr_file { read write };
vndbinder_use(my_client);
binder_call(my_client, my_binder_service);
и контекст файла указан в file_context file
/vendor/bin/my_binder_service u:object_r:my_binder_service_exec:s0
/vendor/bin/my_client u:object_r:my_client_exec:s0
Чего-то не хватает в части SEPolicy?
Или это не проблема SEPolicy?