来源:知乎

> Android的内核就是Linux,所以Android获取root其实和Linux获取root权限是一回事儿。

Linux下获取root权限的时候就是执行sudo或者su程序。

接下来系统会提示你输入root用户的密码,密码正确就获得root权限了。

Android本身就不想让你获得Root权限,大部分手机出厂的时候根本就没有su这个程序。所以想获得root权限:

第一步就是要把编译好的su文件拷贝到Android系统的/system/bin或者/system/xbin/目录下。我们先假设你可以把su放在xbin下,接下来你可以在Android手机的adb shell或者串口下输入su了。

Linux下su以后输入密码就可以root了,但Android里的su和Linux里的su是不一样的,Android里的su不是靠验证密码的,而是看你原来的权限是什么。意思就是如果你是root,那你可以通过su切换到别的用户,比如说shell,wifi,audio什么的。但如果你是root之外的其他用户,就不能切换回root了,会提示你permission denied。(具体su是怎么做到这一点的,我准备过几天有时间的时候写在下面,单独说明

也就说用root运行su才有用,但我这个时候还没有root怎么办呢?这就涉及到另外个问题。

一般我们在Linux的console下输入 ls -l 会列出所有文件的权限。

比如:-rwxr-xr-x

用过Linux的人都知道r代表该文件可读,w代表可写,x代表可执行,-就代表没有该权限。

第一个rwx代表文件所有者的权限

第二个rwx代表和所有者同组人的权限

第三个rwx代表其他用户对该文件的权限。

但下面这个文件就比较特殊。


rws,它的执行权限标志位是一个s,s代表当任何一个用户执行该文件的时候都拥有文件所有者的权限,这文件的所有者是root,简单点说就是不管谁执行这个文件,他执行的时候都是以root身份执行的。

也就说即使我不是root也有可能以root身份来执行程序,那么我就把一个所有者是root的su程序权限标志位置成-rwsr-xr-x,那么不管谁执行它,都是root身份执行,su就可以顺利执行成功了,执行成功之后我就是root身份了。

更多相关文章

  1. Mediapipe框架在Android上的使用
  2. Android悬浮窗使用小结
  3. androidManifest.xml之uses-permission(权限-安全控制)
  4. xamarin Android(安卓)activity生命周期详解
  5. Android基本组件学习(Activity生命周期)
  6. Android中AsyncTask的简单用法
  7. Android兼容性测试工具Spoon
  8. Android中线程形态AsyncTask、HandlerThread 和 IntentService简
  9. Android学习日记----------Android(安卓)10调用摄像头闪退问题--

随机推荐

  1. Android(安卓)最佳实践
  2. android 基本概念和一些术语
  3. 利用Handler来更新android的UI (2)
  4. Android开发环境搭建
  5. android 显示特殊符号
  6. Android多媒体开发高级编程
  7. Android(安卓)开发最佳实践
  8. AndroidStudio 3.0 加载Android(安卓)sup
  9. ProgressBar的简单使用
  10. android防止屏幕关闭后后台服务停止运行