Ранее я написал автономный демон для доступа к настраиваемому устройству (/ dev / mydev0). Глядя на исходный код AOSP, я решил, что мне нужны политики настройки в следующих файлах, чтобы заставить его работать:
новый файл device.te, содержащий:
type mydev_device, dev_type;
новый файл mydevsrvc.te, содержащий
# service flash_recovery in init.rc
type mydevsrvc_type, domain;
type mydevsrvc_type_exec, exec_type, file_type;
init_daemon_domain(mydevsrvc_type)
allow mydevsrvc_type mydev_device:chr_file rw_file_perms;
отредактировал file_contexts, чтобы добавить:
/dev/mydev[0-9]* u:object_r:mydev_device:s0
отредактировал service_contexts, чтобы добавить:
mydevsrvc u:object_r:mydevsrvc_type:s0
И запустил демон, отредактировав init.flo.rc, включив в него следующие строки:
service mydevsrvc /system/bin/mydevsrvc
class main
user system
group system
seclabel u:r:mydevsrvc_type:s0
oneshot
Теперь мне нужно получить доступ к устройству в приложениях для Android, поэтому я должен превратить демон в системную службу Android.
Я могу запустить службу (поток), используя намерение BOOT_COMPLETED, как описано в предыдущем вопросе
Я не могу понять, как настроить политики SELinux, чтобы эта java-служба также могла получить доступ к файлу dev.
[Обновление] Я продолжаю использовать для этой цели привилегированный демон. Моя java-служба подключается к демону через сокеты. У меня нет лучшего решения.