SELinux на Android блокирует мое приложение для использования доменного сокета Unix

У меня есть приложение, которое запускает нативное приложение и связывается с ним через доменные сокеты Unix. Приложение отлично работает на устройстве без Rooted.

Проблема в том, когда я запускаю нативное приложение от имени пользователя root. Нативное приложение работает нормально и ожидает сообщений от приложения. Затем приложение пытается отправить сообщение в собственное приложение, используя сокет домена unix. Приложение использует JNI для вызова "sendto"; но SELinux блокирует вызовы sendto из моего приложения.

Это логи, написанные, когда я пытаюсь вызвать "sendto" заблокированным.

type=1400 audit(0.0:27806): avc: denied { sendto } for uid=10220 comm=4173796E635461736B202331 path=0044726F696456504E456E67696E65536F636B6574 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=unix_dgram_socket permissive=0

Единственное, что заставляет его работать снова, это если я отключаю selinux (например: setenforce 0)

Есть ли другой способ исправить это? Как команда semanage, так что мне не нужно полностью отключать SELinux и разрешать только то, что нужно моему приложению, а именно просто использовать доменные сокеты unix?

0 ответов

Другие вопросы по тегам