我有一个应用程序启动本机应用程序并使用unix域套接字与它通信。该应用程序在NON-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域套接字?