Definición de la política de SELinux para el servicio del sistema Android: cómo configurar?

Anteriormente había escrito un daemon independiente para acceder a un dispositivo personalizado (/ dev / mydev0). En cuanto a la fuente de AOSP, pensé que necesitaba políticas de configuración en los siguientes archivos para que funcione:

Nuevo archivo device.te que contiene:

type mydev_device, dev_type; 

Nuevo archivo mydevsrvc.te que contiene

 # 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; 

Editado file_contexts para agregar:

 /dev/mydev[0-9]* u:object_r:mydev_device:s0 

Editado service_contexts para agregar:

 mydevsrvc u:object_r:mydevsrvc_type:s0 

Y comenzó el daemon editando init.flo.rc para incluir estas líneas:

 service mydevsrvc /system/bin/mydevsrvc class main user system group system seclabel u:r:mydevsrvc_type:s0 oneshot 

Ahora, necesito tener acceso al dispositivo en aplicaciones android, así que debo cambiar el daemon en un servicio del sistema del androide.

Puedo arrancar el servicio (hilo) usando BOOT_COMPLETED intento como explicado en una pregunta previa

No puedo averiguar cómo configurar las políticas SELinux para que este servicio java también pueda acceder al archivo dev.

[Actualizar] He seguido usando daemon privilegiado para este propósito. Mi servicio java se conecta a daemon a través de sockets. No tengo una solución mejor.

A continuación se muestra un breve resumen de los pasos necesarios para implementar SELinux en su dispositivo Android:

Agregue el soporte de SELinux en el kernel y la configuración. Conceda cada servicio (proceso o daemon) iniciado desde init en su propio dominio. Identifique estos servicios: Revisando el archivo init..rc y encontrando todos los servicios. Examinar advertencias de la forma init: ¡Advertencia! El nombre del servicio necesita un dominio SELinux definido; ¡por favor, arregla! En salida dmesg. Comprobación de ps -Z | Grep init para ver qué servicios se ejecutan en el dominio init. Etiquete todos los nuevos procesos, controladores, sockets, etc. Todos los objetos deben estar etiquetados correctamente para asegurar que interactúan correctamente con las políticas que aplica. Consulte las etiquetas utilizadas en AOSP para ver los ejemplos a seguir en la creación de nombre de etiqueta. Instituir políticas de seguridad que cubran todas las etiquetas y restrinjan los permisos a su mínimo absoluto. Lo ideal es que los OEM empiecen con las políticas de AOSP y luego se basen en ellas para sus propias personalizaciones.

Para más https://source.android.com/security/selinux/implement.html

  • ¿Cómo obtener el objeto de vista de enfoque actual en Service?
  • Registrador de clave de Android
  • Cómo obtener el contexto de la aplicación
  • Null intent redelivered to Service onStartCommand ()
  • WiFiDirect discoverServices sigue fallando con error 3 (NO_SERVICE_REQUESTS)
  • Android.os.deadobjectexception en el servicio android
  • ¿Cuáles son las ventajas y desventajas de ejecutar un servicio en un proceso diferente?
  • Paradas de servicio de Android
  • No se puede iniciar el servicio
  • El servicio android se reinicia en la aplicación matado
  • servicio androide para realizar un seguimiento de las llamadas salientes y SMS en segundo plano
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.