前提准备: - 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 sysbiren@ubuntu:~/downloads/new$ sudo mount -t ext4 -rw system.img sysbiren@ubuntu:~/downloads/new$ cd sysbiren@ubuntu:~/downloads/new/sys$ lltotal 60drwxr-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.propdrwxr-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 xbinbiren@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/busyboxbiren@ubuntu:~/downloads/new/sys$ ll bin/su bin/busyboxlrwxrwxrwx 1 root root 12 Jun 12 19:05 bin/busybox -> xbin/busyboxlrwxrwxrwx 1 root root 7 Jun 15 12:17 bin/su -> xbin/su
授 权: 在应用app运行时会弹出“超级用户请求”,如运行re、终端模拟器等,点击“允许”即可
二个问题解决: 问题一、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) 只要有root权限想去广告、卸载多余的app、安装自己喜欢的app等就容易了。 |