【问题标题】:audit2allow for unix socket on android gives blank outputandroid上unix套接字的audit2allow提供空白输出
【发布时间】:2017-04-10 09:01:28
【问题描述】:

我有一个应用程序连接到我在 mediaserver 中运行的套接字服务器(在我的音频 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:~$ 

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

【问题讨论】:

    标签: android android-source selinux


    【解决方案1】:

    您是否从“out”提供了已编译的 sepolicy? 你应该。

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

    【讨论】:

    • 你是什么意思sepolicy from 'out'?
    • android boot.img 编译的产物之一是一个'sepolicy'文件。这是文件
    • 哦,嗯,我只是在问,因为我遇到了同样的问题,但在 RHEL 上适用于 nginx,但我不确定原因是否与审计显示的问题相同 @987654323 @ for nginx` 尽管 nginx 对 puma 套接字的访问被拒绝。
    【解决方案2】:

    首先,你的二进制文件 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 文件。

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多