SElinux Android 消息解读

SElinux Android message interpretation

我无法理解我在 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

给定的 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": 目标名称 : 目标名称(在本例中,file/dir名称)您的应用程序可能正在尝试创建。

scontext=u:r:untrusted_app:s0源上下文:此安全违规的源上下文。这表示哪个 domain/proces 正在尝试执行 create 功能。此处,untrusted_app 个应用程序是由 zygote

启动的应用程序

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

tclass=fifo_file目标Class:目标的class。

一句话,SELinux 拒绝了 untrusted_appcreate fuse 中的 access_control.new_commit.cv 文件的权限。 =22=]

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

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

根据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 class: fifo_file=先进先出文件
  • permissive=permissive mode: 0 -> NOT 宽容模式
    • -> 是强制模式吗?

翻译成人类可读的句子:

untrusted_app 创建 一个 fifo_file 保险丝

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

我可以补充一点,错误消息中的 运行 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 内核!