3

我有一个启动本机应用程序并使用 unix 域套接字与其通信的应用程序。该应用程序在非根设备上运行良好。

问题是当我以 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 域套接字?

4

0 回答 0