当前位置: 首页 > 工具软件 > SE Android > 使用案例 >

Android SE权限问题

禹兴安
2023-12-01

权限修改
方法一:adb在线修改SELinux
Enforcing 表示已打开,Permissive 表示已关闭

getenforce; //获取当前seLinux状态 
setenforce 1; //打开seLinux 
setenforce 0; //关闭seLinux

方法二:从kernel中彻底关闭
修改kernel-**/arch/arm64/configs/***_defconfig文件(*一般为手机产品名) 
去掉CONFIG_SECURITY_SELINUX=y的配置项

方法三:sepolicy中添加权限
修改依据,通过 cat /proc/kmsg | grep denied,或者kernel的Log中定位到标志性log。
修改步骤 
找到相应的源类型.te文件,此文件可能存放的路径(其中源类型见下方的标志性log格式): 
高通平台: 
external/sepolicy/ 
device/qcom/sepolicy/common/ 
MTK平台: 
external/sepolicy/ 
device/mediatek/common/sepolicy
标志性log格式 
avc:denied {操作权限} for pid=3603 comm="进程名" scontext=u:r:源类型:s0 tcontext=u:r:目标类型:s0 tclass=访问类型 permissive=0 
在相应的源文件.te中添加如下格式的权限声明:(结尾别忘了分号) 
allow 源类型 目标类型:访问类型 {操作权限}
实例 
Kernel log 
avc: denied { write } for pid=3603 comm="sh" name="interactive" dev="sysfs" ino=42601 scontext=u:r:qti_init_shell:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
修改方案 
此问题log来自高通平台,首先根据log找到init_shell.te,添加如下语句: 
allow qti_init_shell sysfs:dir write; 
PS:如果需要多个权限,后面权限部分可写成集合的形式,如{write,read}
 

 类似资料: