Android Root

什么是root

Android是基于linux内核的手机操作系统,root是linux系统的超级用户(相当于windows的administrator),具有系统的所有权限。在Android中出于安全考虑是禁用了root用户的,也就我们无法获取到root权限。

在android中的root还有它另外的意思:通过一定的手段获取系统的root权限。


怎么实现root


在linux系统中我们可以通过su命令来切换到超级用户(root)。所以对Android的root关键在于将su的可执行程序添加到系统之中并设置好合适的权限(4755),这样其他UID不是root的app就可以通过调用su来获取超级用户权限,从而实现“root”功能。这里会遇到一个问题:

“android的system目录是read-only文件系统,怎么把su添加进去?”

这里不做详细介绍了,网络上很多关于如何root的文章


root之后的权限管理


root之后所有的app都可以通过su来提升自己的权限,这肯定是一个非常大的安全隐患,那怎么解决呢?

目前在Android手机上最通用的做法是:让su询问用户是否授权,将决定权交回给用户应该是一个比较合适的办法。

有一个叫Superuser的app就是专门用来管理root权限的,Superuse其实包含2个部分:Superuser.apk 和 su的二进制程序,这个su的二进制程序是经过修改的,它通过Activemanager Service去调用Superuser来询问用户是否授权。


su的原理


su其实就是一个普通的二进制程序,在su的内部通过execl函数来执行命令

一般情况下,进程的用户id(user id)就是执行进程的user的uid,那么一个普通用户去执行su怎么会让进程的userid变成root呢?

让我们先看看su的权限:

 ls -l /system/xbin/su
 -rwsr-sr-x root     root        64204 2012-05-17 02:58 su

注意到没有,su的权限是"wsr-sr-x"并非寻常的“wrx-rx-x”,用数字来表示就是su的权限为“4755”,这意味着什么呢?

其实linux的权限应该是4位数字而不是3位数字,比如“chmod 777 dest”其实就是"chmod 0777 dest"即第一位默认为0, 而第一位如果为“4”,那么表示“非该文件所有者执行该文件时,将UID设置为该文件的所有者”

那么只要su的权限为“4755”,那么任何非root用户执行su,su的执行uid就是root,这样就具备超级权限啦。

(关于权限的问题,几句话也讲不清楚,有兴趣可以阅读chmod的man手册“man chmod”)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值