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_app
到 create
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 内核!
我无法理解我在 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_app
到 create
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_appObject
=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 内核!