问题:日志报错update_engine: type=1400 audit(0.0:371): avc: denied { read } for name="mmcblk0p17" dev="tmpfs" ino=17516 scontext=u:r:update_engine:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0

根据日志在update_engine.te中添加avc权限:

allow update_engine block_device:blk_file { read write open ioctl getattr };

整编报错:

neverallow { domain -kernel -init -recovery } block_device:blk_file { open read write };

分析:selinux权限为了防止文件节点权限范围被随便使用,使用neverallow约束,下面就通过上面日志的错误提示来解决。

u:object_r:block_device:s0中对应的文件路径

/dev/block(/.*)?    u:object_r:block_device:s0

adb shell查看后mmcblk0p17文件存在/dev/block/mmcblk0p17,所以上面avc错误中block_device标签实际使用的是name="mmcblk0p17",下面给/dev/block/mmcblk0p17文件添加selinux权限,根据block_device进行配置:

路径aosp/device/mediatek/sepolicy/basic/non_plat

device.te:

type block_device, dev_type, bdev_type;

type block_mmcblk0p17, dev_type, bdev_type;

file_contexts:

/dev/block(/.*)?    u:object_r:block_device:s0

/dev/block/mmcblk0p17    u:object_r:block_mmcblk0p17:s0

update_engine.te:

allow update_engine block_mmcblk0p17:blk_file { read write open ioctl getattr };

编译验证

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐