android 上的 unix 套接字的 audit2allow 给出空白输出

audit2allow for unix socket on android gives blank output

我有一个连接到我的套接字服务器的应用程序 运行 在媒体服务器中(在我的音频 HAL 中)

SElinux 在连接时抛出此日志(来自 dmesg):

[  251.022149] type=1400 audit(1491810054.932:24): avc: denied { connectto } for pid=9065 comm="com.gps.app1" path=0073727663 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:mediaserver:s0 tclass=unix_stream_socket permissive=1

我尝试将其提供给 audit2allow 以获取 te 文件,但它 returns 一条空白规则:

gps@gps-HP-ProBook-4540s:~$ audit2allow -i ~/gps-ott/selinux/denied.txt -m appcon

module appcon 1.0;



gps@gps-HP-ProBook-4540s:~$ 

谁能指出我做错了什么,或者可以使用什么文件来允许此连接?

您是否提供了来自 'out' 的已编译 sepolicy? 你应该。

audit2allow -p ./out/target/product/<your-device>/root/sepolicy

首先,您的二进制文件 out/target/product//root/sepolicy 必须存在。

在此之后:

1- 清理 dmesg 缓冲区,启动命令:

sudo dmesg -c

2- 启动您的应用,创建有趣的 dmesg 行(即“[ 251.022149] type=1400 audit(1491810054.932:24): avc: denied { connectto } for pid=...”)

在此之后,本地化好的 'audit2allow' 脚本(不要使用 /usr/bin/audit2allow 脚本,而是使用 AOSP 安装附带的脚本,例如 external/selinux/prebuilts/bin/audit2allow)

然后,在启动经典的 'adb connect >targeted_device_@ip<

后,从安装了 AOSP 的 PC 启动
adb shell su root dmesg | ./external/selinux/prebuilts/bin/audit2allow -p out/target/product/<your_product_name>/root/sepolicy

此命令将为您提供良好的 SEpolicy 规则以创建您自己的 .te SEpolicy 文件。