我有一个应用程序连接到在媒体服务器中运行的套接字服务器(在我的音频 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文件,但它返回一个空白规则:
gps@gps-HP-ProBook-4540s:~$ audit2allow -i ~/gps-ott/selinux/denied.txt -m appcon
module appcon 1.0;
gps@gps-HP-ProBook-4540s:~$
有人可以指出我做错了什么,或者可以使用什么 te 文件来允许这种连接吗?
您是否从"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:拒绝{连接} for pid=..."(
在此之后,本地化好的"audit2allow"脚本(不要使用/usr/bin/audit2allow 脚本,而是使用 AOSP 安装附带的脚本,例如 external/selinux/prebuilds/bin/audit2allow(
然后,在启动经典的"adb 连接>targeted_device_@ip<后,从安装了>
adb shell su root dmesg | ./external/selinux/prebuilts/bin/audit2allow -p out/target/product/<your_product_name>/root/sepolicy
此命令将为您提供良好的 SEpolicy 规则,以创建您自己的 .te SEpolicy 文件。