Wcześniej napisałem autonomicznego demona, aby uzyskać dostęp do niestandardowego urządzenia (/ dev/mydev0). Patrząc na źródło AOSP, pomyślałem potrzebne polityki konfiguracji w następujących plików, aby to działało:Definicja polityki SELinux dla usługi systemu Android: jak skonfigurować?
nowy plik device.te zawierające:
type mydev_device, dev_type;
nowy plik mydevsrvc.te zawierający
# 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;
edytowany file_contexts dodać:
/dev/mydev[0-9]* u:object_r:mydev_device:s0
edytowany service_contexts dodać:
mydevsrvc u:object_r:mydevsrvc_type:s0
i zaczął demona edytując init.flo.rc włączyć te linie:
service mydevsrvc /system/bin/mydevsrvc
class main
user system
group system
seclabel u:r:mydevsrvc_type:s0
oneshot
Teraz muszę dostęp do urządzenia w aplikacjach na Androida, więc muszę zmienić demona w produkt usługa systemu Android.
mogę uruchomieniem usługi (gwint) przy użyciu BOOT_COMPLETED intencję, jak wyjaśniono w a previous question
nie jestem w stanie dowiedzieć się, jak skonfigurować polityki SELinux tak, że ta usługa Java jest również w stanie uzyskać dostępu do pliku Dev.
[Aktualizacja] W tym celu kontynuowałem używanie uprzywilejowanego demona. Moja usługa java łączy się z demonem poprzez gniazda. Nie mam lepszego rozwiązania.
W trakcie opracowywania zasad dla tego demona zdałem sobie sprawę, że komponent uruchamiający proces musi skonfigurować domenę procesu. Teraz odkryłem, że init * .rc to miejsce, w którym mogę skonfigurować domenę dla demona. Nie mogłem znaleźć miejsca do skonfigurowania domeny dla usługi Android opartej na języku Java. – GPS
Jeśli ktoś na to patrzy, postanowiłem zachować rodzimego demona z init.rc i komunikować się z nim z mojej nieuprzywilejowanej usługi java poprzez gniazda linuksowe Androida. – GPS
Tutaj masz składnię polecenia "dervice" init.rc https://stackoverflow.com/questions/8905593/whats-language-of-init-rc-in-android –