selinux权限neverallow解决

文章讲述了在处理日志中出现的SELinux错误时,如何在update_engine.te策略文件中添加适当的AVC权限,以允许update_engine访问mmcblk0p17设备。通过定义新的设备类型block_mmcblk0p17,在device.te和file_contexts中更新规则,并在update_engine.te中设置权限,然后进行编译验证以解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:日志报错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 };

编译验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值