Android 安卓&x27;kworker/kernel在tmpfs上发送了s Logcat垃圾邮件,并拒绝了selinux avc,1400型

Android 安卓&x27;kworker/kernel在tmpfs上发送了s Logcat垃圾邮件,并拒绝了selinux avc,1400型,android,selinux,Android,Selinux,我的android的logcat上贴满了这些警告 我正在查看以下文档,以了解如何解决此问题,但无法解决它 我查看了/dev,但没有类似的内容 android# ls -l /dev/ | grep sd #returns nothing inode解析为此文件: find /sys -xdev -inum 28978 /sys/firmware/devicetree/base/__symbols__/sb_7_tx 但是,在下次重新启动时,会解析为其他文件,但错误始终

我的android的logcat上贴满了这些警告

我正在查看以下文档,以了解如何解决此问题,但无法解决它

我查看了
/dev
,但没有类似的内容

android# ls -l /dev/ | grep sd
#returns nothing
inode解析为此文件:

find /sys -xdev -inum 28978
/sys/firmware/devicetree/base/__symbols__/sb_7_tx
但是,在下次重新启动时,会解析为其他文件,但错误始终与单个inode相关

我想我应该把这个规则添加到一个.te文件中

允许内核oem_设备:blk_文件{read-write}

adb pull /sys/fs/selinux/policy
adb logcat -b all -d | audit2allow -p policy
#this confirms the rule
我在此转储中找到了一些与selinux相关的文件:

但是我不太确定应该在哪里添加规则..可能在/vendor/etc/selinux中的某个地方

有人知道修复这些警告的步骤吗?有人可能会进一步深入调查这些警告发生的原因吗


谢谢

从错误中可以直接看出它显示的原因<代码>内核
正在尝试读取/写入标有
oem\u设备
类型的
blk\u文件

此时,您有两种选择:

  • 如果要允许访问,请添加
    allow
    规则
  • 如果只想支持日志,请添加
    dontaudit
    规则。看见

  • 该规则应添加到
    kernel.te

    通常,根据供应商的不同,这些自定义内容会进入
    设备/XXXXXX
    。例如,在我的树中,对于rockchip设备,我会修改
    /device/rockchip/common/sepolicy/vendor/kernel.te

    要重建策略,请执行以下操作:

    source build/envsetup.sh
    lunch-yourTarget
    mmm system/sepolicy
    
    并将它们闪存到系统中(如果您是userdebug并且可以重新安装):


    如果您无法推送它们,则需要重建并闪存系统

    我使用以下命令修复了警告:

    magiskpolicy --live 'allow kernel oem_device blk_file {read write open}'
    
    “打开”权限也被授予,因为在只允许读/写之后,会出现另一个与之相关的警告

    我还是不明白:

  • 为什么内核试图访问这个
  • 到底是什么在试图访问
  • magisk难道不应该负责与内核等低级别授权相关的selinux策略吗
  • 不确定如何使此修复永久(在重新启动时保持)。根据我的研究,看起来我必须修改boot.img中的某个文件,重新打包并将其推回到android
  • 在本页上:

    它指定了一个工具magiskboot,应该用于这种修补,但我没有它

    用于解压/重新打包引导映像、解析/修补/提取cpio、修补dtb、十六进制修补二进制文件以及使用多种算法压缩/解压文件的工具。

    我会带着任何发现回来

    更新: 我设法在引导时使用在引导过程中运行的post fs数据脚本永久添加修复程序。它可能不是100%修复,因为应该修补引导映像,以便magiskinit甚至在执行init之前加载策略,但它仍然在引导过程结束后修复logcat中的警告

    参考:

    adb root
    adb remount
    adb push out/target/product/YOUR_DEVICE/vendor/etc/selinux /vendor/etc/
    adb push out/target/product/YOUR_DEVICE/system/etc/selinux /system/etc/
    adb shell sync
    
    adb reboot
    
    magiskpolicy --live 'allow kernel oem_device blk_file {read write open}'
    
    su -
    cd /data/adb/post-fs-data.d
    touch fix_selinux.sh
    chmod +x fix_selinux.sh
    vi fix_selinux.sh #add this line (and any other rules you need):
    /sbin/magiskpolicy --live 'allow kernel oem_device blk_file {read write open}'