• selinux相关学习笔记-简单selinux部分的解决


    selinux问题判断:

    1 日志查看
    logcat -b all 查看所有日志
    如果自己程序有类似如下的avc:denied打印,基本上可以认为有selinux问题,这里有avc: denied相关的关键字

     I Thread-2: type=1400 audit(0.0:53): avc: denied { search } for name="leds" dev="sysfs" ino=26711 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=1
    
    • 1

    2 再次验证是否selinux影响
    可以adb shell setEnforce 0 关闭selinux限制看看是否功能正常

    selinux问题修改方式:

    相关问题日志:

    I Thread-2: type=1400 audit(0.0:53): avc: denied { search } for name=“leds” dev=“sysfs” ino=26711 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:sysfs_leds:s0 tclass=dir permissive=1

    这里表示成了一种更加直观的语句如下:

    avc: denied { 操作 } for name=“leds” dev=“sysfs” ino=26711 scontext=u:r:主体type:s0:c512,c768 tcontext=u:object_r:客体type:s0 tclass=客体类别 permissive=1

    最简单allow语句:

    allow 主体type 客体type :客体类别 {操作权限}
    手写方式:

    allow platform_app sysfs_leds:dir search
    
    • 1
    自动生成相关的te的audit2allow工具:
    sudo apt-get install policycoreutils
    sudo apt-get install policycoreutils-python-utils
    
    • 1
    • 2
    test@test:~/tmp$ audit2allow -i input.txt -o out.txt
    ValueError: You must specify the -p option with the path to the policy file.
    
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/usr/bin/audit2allow", line 381, in <module>
        app.main()
      File "/usr/bin/audit2allow", line 365, in main
        audit2why.init()
    SystemError: <built-in function init> returned a result with an error set
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    上面错误需要进行修改一下audit2allow源码:
    sudo vi /usr/bin/audit2allow
    在这里插入图片描述屏蔽上面四行代码

    最后工具帮我们写好如下:

    test@test:~/tmp$ audit2allow -i input-1.txt 
    
    
    #============= platform_app ==============
    allow platform_app sysfs_leds:dir search;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改地方:
    上面有#============= platform_app ==============提示
    既可以把这个语句放到platform_app.te中

    test@test:~/nx563j_xiaomi/system/sepolicy$ find -name platform_app.te
    ./private/platform_app.te
    ./public/platform_app.te
    ./prebuilts/api/30.0/private/platform_app.te
    ./prebuilts/api/30.0/public/platform_app.te
    ./prebuilts/api/33.0/private/platform_app.te
    ./prebuilts/api/33.0/public/platform_app.te
    ./prebuilts/api/29.0/private/platform_app.te
    ./prebuilts/api/29.0/public/platform_app.te
    ./prebuilts/api/32.0/private/platform_app.te
    ./prebuilts/api/32.0/public/platform_app.te
    ./prebuilts/api/31.0/private/platform_app.te
    ./prebuilts/api/31.0/public/platform_app.te
    ./prebuilts/api/28.0/private/platform_app.te
    ./prebuilts/api/28.0/public/platform_app.te
    test@test:~/nx563j_xiaomi/system/sepolicy$ 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    一般加载
    ./private/platform_app.te
    ./public/platform_app.te
    ./prebuilts/api/33.0/private/platform_app.te //33代表当前系统sdk版本
    在上面te中末尾加入

    allow platform_app sysfs_leds:dir search;

    selinux的编译和验证方式:

    1、编译make selinux_policy
    2、验证:

    adb push ./out/target/product/XXX/system/etc/selinux/*  /system/etc/selinux/
    adb push ./out/target/product/XXX/vendor/etc/selinux/*  /vendor/etc/selinux/
    
    adb push ./out/target/product/XXX/system/system_ext/etc/selinux/*  /system/system_ext/etc/selinux/
    
    adb push ./out/target/product/XXX/system/product/etc/selinux/*  /system/product/etc/selinux/
    adb push ./out/target/product/XXX/root/sepolicy  /
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    更多framework干货课程优惠获取相关可以+V(androidframework007)
    在这里插入图片描述

  • 相关阅读:
    jQuery选择器方法总结
    【日拱一卒行而不辍20220920】自制操作系统
    WebSocket的优缺点
    【机器学习6】概率图模型
    Linux编译安装brpc
    Vue2和Vue3生命周期映射关系及异同
    Centos 搭建MQTT
    graphviz 绘制红黑树
    架构师的 36 项修炼第09讲:系统的安全架构设计
    卷积神经网络(CNN)识别眼睛状态
  • 原文地址:https://blog.csdn.net/learnframework/article/details/133741962