前提准备:
- su命令
- superuser.apk或supersu.apk
- sh命令(通常原系统自带)
- busybox(可选,拓展原系统的命令,原系统自带的命令较少)
- 当前电视的system.img镜像文件
原 理:
其实较简单,就是将sh、su、busybox复制到/system/bin或/system/xbin目录下,然后安装superuser.apk到手机,授权应用程序的超级用户请求。
root 过程:
挂载system.img :
命令:sudo mount -t ext4 -rw system.img sys
biren@ubuntu:~/downloads/new$ mkdir sys
biren@ubuntu:~/downloads/new$ sudo mount -t ext4 -rw system.img sys
biren@ubuntu:~/downloads/new$ cd sys
biren@ubuntu:~/downloads/new/sys$ ll
total 60
drwxr-xr-x 13 root root 4096 Jan 1 1970 ./
drwxrwxr-x 3 biren biren 4096 Jun 15 11:49 ../
drwxr-xr-x 2 root root 4096 Jun 9 20:58 app/
drwxr-xr-x 2 root 2000 4096 Jun 12 19:05 bin/
-rw-r--r-- 1 root root 1979 Dec 16 2012 build.prop
drwxr-xr-x 9 root root 4096 Dec 16 2012 etc/
drwxr-xr-x 2 root root 4096 Dec 16 2012 fonts/
drwxr-xr-x 2 root root 4096 Dec 16 2012 framework/
drwxr-xr-x 8 root root 8192 Dec 16 2012 lib/
drwxr-xr-x 3 root root 4096 Dec 16 2012 media/
drwxr-xr-x 3 root root 4096 Dec 16 2012 tts/
drwxr-xr-x 8 root root 4096 Dec 16 2012 usr/
drwxr-xr-x 3 root 2000 4096 Dec 16 2012 vendor/
drwxr-xr-x 2 root 2000 4096 Dec 16 2012 xbin/
复制su 、busybox到/system/xbin :
$ cp ../su xbin
$ cp ../busybox xbin
biren@ubuntu:~/downloads/new/sys$ ll -l xbin/su xbin/busybox
-rwxr-xr-x 1 root 2000 1745016 Dec 16 2012 xbin/busybox*
-rwxr-xr-x 1 root 2000 85096 Dec 16 2012 xbin/su*
修改su 、busybox属性:
命令:sudo chmod 6755 xbin/su xbin/busybox
重要说明 :
明明它们是可执行属性,为什么要修改成6755 ?如果不修改,在运行su命令时就会出现“su: must be suid to work properly”的错误。
biren@ubuntu:~/downloads/new/sys$ sudo chmod 6755 xbin/su xbin/busybox
biren@ubuntu:~/downloads/new/sys$ ll -l xbin/su xbin/busybox
-rwsr-sr-x 1 root 2000 1745016 Dec 16 2012 xbin/busybox*
-rwsr-sr-x 1 root 2000 85096 Dec 16 2012 xbin/su*
在/system/bin中建立su、busybox的链接:
$ sudo ln -s xbin/su bin/su
$ sudo ln -s xbin/busybox bin/busybox
biren@ubuntu:~/downloads/new/sys$ ll bin/su bin/busybox
lrwxrwxrwx 1 root root 12 Jun 12 19:05 bin/busybox -> xbin/busybox
lrwxrwxrwx 1 root root 7 Jun 15 12:17 bin/su -> xbin/su
授 权:
在应用app运行时会弹出“超级用户请求”,如运行re、终端模拟器等,点击“允许”vcs
二个问题解决:
问题一、SU二进制文件需要更新,是否继续?
运行superuser或supersu应用时出现
大致原因:su与superuser版本不一致或者superuser与android内核版本不一致
问题二、su: must be suid to work properly
这个是运行su命令时出现的
原因:su命令设置不当造成的
解决:修改su的属性为6755,chmod 6755 xbin/su
权限额外说明 :
6755属性:中的6是SUID、SGID、SBIT权限的体现,SUID=4,SGID=2,SBIT=1,授权方法除了数字外,还可用SUID: u±s ,SGID: g±s,SBIT: o±t
SUID : set uid (所有者)
- 对可执行程序有效
- 使普通账号在使用这些命令时暂时获得其拥有者的权限,典型的有su 、passwd
SGID : set gid (所在群组)
- 作用于目录或可执行文件
- 在执行过程中,调用者会暂时获得该文件的所属组权限
SBIT : Sticky Bit
- 对目录有效
- 当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
获取system.img :
通常从升级包中提取出来,提取方法可参考:精简、root康佳电视升级包LED37R5200PDF(晨星Mstar),工具mstar-bin-tool等