首页 > 解决方案 > SELinux 阻止 android 应用读取串行设备文件

问题描述

我正在使用 Galaxy S5 (G900H),我正在使用 cdc-acm 驱动程序通过 USB 将串行设备连接到它,并尝试从我的 android 应用程序中读取它。它在其他设备(旧的和新的)上运行良好。

连接设备时,/dev/ttyACM0会创建设备文件,但尝试从中读取时收到错误消息Permission denied。运行setenforce 0SELinux 并将其设置为 Permissive 模式时 - 一切正常,应用程序成功读取设备文件。

dmesg 说:

cdc_acm 2-1:1.0: usb_probe_interface
cdc_acm 2-1:1.0: usb_probe_interface
cdc_acm 2-1:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 2-1:1.0: ttyACM0: USB ACM device

我尝试使用 audit2allow 制定新策略,但找不到任何用于创建“允许”规则的“拒绝”消息。

有没有办法通过我的应用程序使用设备文件而不将 SELinux 设置为允许?如果需要,我可以编辑内核并制作一个新内核,但我真的不想这样做。

谢谢!

标签: androiddevice-driverselinuxcdc

解决方案


推荐阅读