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

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
自动生成相关的te的audit2allow工具:
sudo apt-get install policycoreutils
sudo apt-get install policycoreutils-python-utils
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

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

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

test@test:~/tmp$ audit2allow -i input-1.txt 


#============= platform_app ==============
allow platform_app sysfs_leds:dir search;

修改地方:
上面有#============= 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$ 

一般加载
./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  /

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值