今天有同事来问我为嘛360的su权限是755。
以前还真没注意这个细节,看了下自己手机里用360root的su,果真如此。
既然没有SUID或者SGID权限,那又是怎么访问root用户下的东西呢。
于是花了点时间研究了一下,360此举主要是为了规避4.4以后android系统的selinux机制。
它的主要步骤如下:
1. 修改install-recovery.sh
这个文件的内容被360改成了/system/bin/su --daemon &
2. install-recovery.sh的执行是在init阶段,此时不受selinux的影响。
3. init阶段
......
判断启动参数,如果是--daemon,就把进程名改成permmgrd。
4. ps查看下permmgrd进程,其实permmgrd就是su的符号链接。
5. c/s架构
于是乎,就大致明白了360的su的总体组成了。
(1). init阶段启动起来的permmgrd进程具有完全的root权限,理论上是不受selinux限制的。
(2). 用户执行su之后,执行的操作,很有可能是permmgrd进程帮忙执行的。