Android Q 平台 增加文件ioctl 的SElinux权限

Android Q 平台 增加文件ioctl 的SElinux权限

示例问题:avc: denied { ioctl } for path="/**/**" dev="**" ino=4026533781 ioctlcmd=0x6601 scontext=u:r:gap**:s0 tcontext=u:object_r:proc**:s0 tclass=file permissive=0

按照Android Q之前的selinux规则,只需要添加ioctl权限即可 allow gap** proc**:file { ioctl };

但是在Android Q上这样添加依然会报相同的selinux问题。强制关闭selinux, 执行setenforce 0; 可以规避该seliux问题。说明在Android Q上的ioctl规则没有添加正确。

===============

通过调查发现Android Q 上ioctl权限除需要allow之外 还需要增加allowxperm语句。

Google在Android Q上增强了对ioctl的审查,除保持对ioctl的审查/授权之外,对具体的ioctlcmd也需要进一步地审查/授权。
/kernel/security/selinux/hooks.c
...
error = ioctl_has_perm(cred, file, FILE__IOCTL, (u16) cmd);
...

==============

示例中的问题解决方法:

    1. 找到ioctlcmd=0x6601对应的CMD

/system/sepolicy/public/ioctl_defines文件(ioctl_defines也可能在vendor目录下)中找到

define(`DEV_1', `0x00006601')

    2. 编写sepolicy如下:

allow gap** proc**:file { ioctl };

allowxperm gap** proc**:file ioctl { DEV_1 };

最后重新编译运行即可解决该问题。

PS:seliunx的权限问题不会一次暴露完,需要一步步添加!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值