gpt4 book ai didi

android - 为什么 SELinux 拒绝此访问

转载 作者:行者123 更新时间:2023-11-29 01:08:02 27 4
gpt4 key购买 nike

我的音频 HAL 中有一个 unix 套接字守护进程,我需要从我的应用连接到它。

我收到如下 SELinux 拒绝日志:

08-08 10:38:01.939 2622-2622/com.xxx.xxx.xxx W/ksetsdk.xxx: type=1400 audit(0.0:511): avc: denied { connectto } for path=0023xxx scontext=u:r:system_app:s0 tcontext=u:r:audioserver:s0 tclass=unix_stream_socket permissive=0

即使我的应用程序使用平台 key 签名、安装在 system.img 中并作为系统运行,也会打印此信息:

root@hikey:/ # ps | grep xxx                                                                                                                                                                   
system 2619 1893 1561788 86956 SyS_epoll_ 0000000000 S com.xxx.xxx.xxx
root@hikey:/ # ps -Z | grep xxx
u:r:system_app:s0 system 2619 1893 1561788 86736 SyS_epoll_ 0000000000 S com.xxx.xxx.xxx
root@hikey:/ #

并且我添加了 SEPolicy 如下:

auditallow system_app audioserver:unix_stream_socket { ioctl read getattr write setattr lock append bind connect getopt setopt shutdown connectto };

任何人都可以指导我了解我错过的内容吗? AOSP SEPolicy 中是否有任何规则与此相矛盾?如何让它发挥作用?

最佳答案

在我构建 aosp 和更改 SEPolicy 规则时肯定存在一些同步问题。

我做了更详尽的测试并发现:

(1) 当应用程序通过平台 key 签名,并在 list 中请求系统 uid 时,它作为 system_app 运行并且遵循以下规则:

auditallow system_app audioserver:unix_stream_socket { connectto };

(2) 当应用程序通过平台 key 签名,但不在 list 中请求系统 uid 时,它作为 platform_app 运行,但遵循规则工作:

auditallow platform_app audioserver:unix_stream_socket { connectto };

(3) 如果 App 没有被平台 key 签名,它作为 priv_app 运行,并且下面的规则工作:

auditallow priv_app audioserver:unix_stream_socket { connectto };

我一定是在测试 AOSP 时混淆了 AOSP 中内置的规则。

我仍然是个谜,为什么 priv_app 或 platform_app 不能工作,但 system_app 可以用类似的规则。

关于android - 为什么 SELinux 拒绝此访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com