Android SE权限问题

权限修改

方法一: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}

猜你喜欢

转载自blog.csdn.net/u014304560/article/details/79141447