android - 为什么 SELinux 拒绝此访问

标签 android android-source selinux

我的音频 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/

相关文章:

selinux - PostgreSQL 11 配置不允许 pgAdmin4 连接

ListView Adapter 中的 Android OnClickListener 更改了另一行

android - 如何使用kotlin android更改 ListView 中的自定义字体

android - 构建android源代码(AOSP)问题

android - native 库没有从 golang 条件实现加载到 apex_defaults?

java - 如何构建AOSP来获取jar文件?

android - 如何校准安卓设备的麦克风

android - Android NDK + SDK开发需要一个IDE

python - 如何使用 Ansible 在 Ubuntu 上禁用 SELinux?

linux - 有谁知道 docker 中无新权限阻止 selinux 转换的解决方法?