【问题标题】:SElinux Android message interpretationSElinux Android 消息解读
【发布时间】:2017-11-28 08:29:33
【问题描述】:

我无法理解我在我的 android 应用程序上收到的这条消息。家里有高手吗?

type=1400 audit(0.0:2233): avc: denied { create } for name="access_control.new_commit.cv" scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:fuse:s0:c512,c768 tclass=fifo_file permissive=0

【问题讨论】:

    标签: android selinux


    【解决方案1】:

    给定的 SELinux 违规:

    type=1400 audit(0.0:2233): avc: denied { create } for name="access_control.new_commit.cv" scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:fuse:s0:c512,c768 tclass=fifo_file permissive=0
    

    下面我将尝试解释上述违规的重要部分:

    denied { create } : 操作权限状态 : 请求/执行的拒绝权限。在这种情况下,它是一个 create 操作。 SELinux 拒绝执行 create dir/file 操作的权限。

    name="access_control.new_commit.cv": Target name : 您的应用程序可能尝试创建的目标名称(在本例中为 file/dir 名称)。

    scontext=u:r:untrusted_app:s0源上下文:此安全违规的源上下文。这表明哪个域/进程s 正在尝试执行create 功能。这里untrusted_app应用是zygote启动的应用

    tcontext=u:object_r:fuse:s0 : 目标上下文 : 目标资源(在本例中为文件)的安全上下文。此处,源试图在 Fuse 文件系统 中创建 file 已被拒绝。

    tclass=fifo_file : 目标类 : 目标的类。

    一句话,SELinux拒绝untrusted_appcreateaccess_control.new_commit.cv文件在fuse中的权限。

    来自 Google 来源,检查 SEPolicy 文件 untrusted_app.te 权限是如何被拒绝的。

    注意:如果您对答案有任何建议,请告诉我。

    【讨论】:

    • 谢谢。这发生在我第一次尝试写入领域文件时。但是当我第二次出现时,我能够写入 REalm DB。那么为什么它只在应用程序启动时第一次发生。
    【解决方案2】:

    根据Validating SELinux  |  Android Open Source Project,留言:

    type=1400 audit(0.0:2233): avc: denied { create } for name="access_control.new_commit.cv" scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:fuse:s0:c512,c768 tclass=fifo_file permissive=0
    

    关键信息是:

    • Action创建
    • Actor=scontext=source context: untrusted_app
    • Object=tcontext=target context: 保险丝
      • object_r=object read?
    • Result=tclass=target classfifo_file=FIFO文件
    • permissive=permissive mode: 0 -> NOT 许可模式
      • -> 是强制模式?

    翻译成人类可读的句子:

    untrusted_app 想要为 fuse

    创建 fifo_file

    (但Android SELinux的强制模式STOP没有权限,所以你看到上面的logcat日志信息)

    【讨论】:

      【解决方案3】:

      我可以补充一点,在错误消息上运行 audit2allow 将为您提供有关如何更新 untrusted_app.te 文件的建议。

      将 dmesg 转储到文本文件:

      dmesg > /sdcard/dmesg.txt
      
      cat dmesg.txt | grep avc | audit2allow 
      

      在这种情况下会给你以下结果:

      #============= untrusted_app ==============
      allow untrusted_app fuse:fifo_file create;
      

      将此行添加到 untrusted_app.te 并重建 Android 内核!

      【讨论】:

        猜你喜欢
        • 2021-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-12
        • 2015-08-20
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多