Android SELinux配置

Android SELinux配置,第1张

概述1.权限警告最近在调试Android的selinux配置,主要出现了一下三种权限警告,在此记录一下avc:denied{create}forpid=2984comm=“test_app”path="/dev/socket"scontext=u:r:test_app:s0tcontext=u:r:test_app:s0tclass=netlink_route_socketpermissive=1avc:denied{ioctl}fo

1.权限警告

最近在调试AndroID的selinux配置,主要出现了一下三种权限警告,在此记录一下

avc: denIEd { create } for pID=2984 comm=“test_app” path="/dev/socket"scontext=u:r:test_app:s0tcontext=u:r:test_app:s0tclass=netlink_route_socket permissive=1


avc: denIEd {ioctl} for pID=2984 comm=“test_app” path="/dev/socket" dev=“tmpfs” ino=317 ioctlcmd=8916scontext=u:r:test_app:s0tcontext=u:r:test_app:s0tclass=udp_socket permissive=1


avc: denIEd { read } for pID=2984 comm=“test_app” path="/dev/socket"name=“my_dir” dev=“mmcblk0p11” ino=24scontext=u:r:test_app:s0tcontext=u:r:device:s0tclass=chr_file permissive=1

2.权限警告语法

avc: denIEd { *** 作权限 } for pID=7201 comm=“进程名” scontext=u:r:源类型:s0 tcontext=u:r:目标类型:s0 tclass=访问类别 permissive=0


1. *** 作权限,即需要执行的权限
2.源类型,即相应的te文件中的类型
3.目标类型,即相应的te文件的类型
4.访问类别,即目标类型的相关类别

3.权限配置语法

allow 源类型 目标类型:访问类别 {权限};

4.配置普通权限

avc: denIEd { create } for pID=2984 comm=“test_app” path="/dev/socket" scontext=u:r:test_app:s0 tcontext=u:r:test_app:s0 tclass=netlink_route_socket permissive=1


在源码中,我们自定义的sepolicy文件夹,打开test_app.te文件
在其中添加:allow test_app test_app:netlink_route_socket { create }

5.配置ioctl特殊权限

avc: denIEd { ioctl } for pID=2984 comm=“test_app” path="/dev/socket" dev=“tmpfs” ino=317ioctlcmd=8916scontext=u:r:test_app:s0 tcontext=u:r:test_app:s0 tclass=udp_socket permissive=1


在源码中,我们自定义的sepolicy文件夹,打开test_app.te文件
如果在其中添加:allow test_app test_app:udp_socket { ioctl },则编译会提示”never allow”错误
需要修改为
net_domain(test_app)allowxperm test_app test_app:udp_socket ioctl { SIOCSIFADDR };
其中SIOCSIFADDR**是在system/sepolicy/public/ioctl_defines配置文件中与值ioctlcmd=8916相对应:define(`SIOCSIFADDR’, `0x00008916’)

6.配置新增节点权限

avc: denIEd { read } for pID=2984 comm=“test_app” path="/dev/socket"name=“my_dir”dev=“mmcblk0p11” ino=24 scontext=u:r:test_app:s0 tcontext=u:r:device:s0 tclass=chr_file permissive=1


在源码中,我们自定义的sepolicy文件夹,打开test_app.te文件
如果在其中添加:”type my_dir_device, dev_type;”,声明my_dir_device为设备类型
打开file_contexts文件文件
如果在其中添加:” /dev/my_dir u:object_r:my_dir_device:s0”,声明my_dir_device为/dev/my_dir对应的节点
打开test_app.te文件文件
如果在其中添加?**allow test_app my_dir_device:chr_file { read }***;

总结

以上是内存溢出为你收集整理的Android SELinux配置全部内容,希望文章能够帮你解决Android SELinux配置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005522.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存