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 }***;