如何从终端提示中调用“ su”?


7

通过运行其他地方记录的漏洞利用程序,可以在终端中得到根提示。(例如,此处:http ://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global: _Full_Update_Guide

此时,我可以安装“ su”二进制文件并为其授予权限4755。这应该允许任何人执行它,并且由于二进制文件的所有者是“ root”并且设置了sticky位,因此我应该成为root用户。但是我显然没有重启终端就无法从终端上消失的根。但是,重新启动后,似乎无法使用'su'成为root用户。

$ ls -l /system/bin/su
-rwsr-xr-x root    app_101    26234 2012-07-09 15:00 su

好的,权限看起来不错,我应该能够运行它成为root,但仅在终端的此特定调用中才可以。

$ /system/bin/su
Permission denied

如果我指定该命令以root用户或其他任何参数运行,它也会失败:

$ /system/bin/su /system/bin/sh
Permission denied

为什么?还有其他工作机制吗?我不想安装Superuser.apk,因为我只想一种方法,可以根据需要临时获得root shell,例如手动删除不需要的文件。此外,Superuser.apk无论如何都依赖于su二进制文件,因此它必须具有某种调用它的方法,那么为什么不能在终端中复制它呢?

编辑:我有另一个想法,所以我尝试将/ bin / sh复制到另一个位置,并将其设为suid根。但是,尽管我可以执行新的二进制文件,但它并没有给我root。Android是否在suid上做一些棘手的/与众不同的事情,而suid却是常规Linux不能做到的?


1
在设备上安装不受保护的“ su”很有风险,因为任何尝试使用它的人都会在没有用户确认该超级用户应用程序尝试添加为网关的情况下得到它。
克里斯·斯特拉顿

是的,嗯...我正在尝试提前计划。不确定后续更新将如何摆脱su,因此我将其放在一堆名称不同的不同地方。事实证明,更新删除了粘性位,我无法从系统以外的地方运行suid。呃,好吧。
迈克尔

Answers:


6

线索在所有者/组ID中...

$ ls -l /system/bin/su
-rwsr-xr-x root    app_101    26234 2012-07-09 15:00 su

请注意,组ID设置为“ app_101”,应为“ root”,但是再次,您需要按顺序使用busybox二进制文件(它是SuperUser.apk二进制文件的一部分,安装后将相关的二进制文件复制到/system/xbin)。能够做到chown这一点。


是的,这将是一个问题最终,由于使用chown user.group文件名(至少来自Froyo-ICS),股票android chown也可以更改组,因此最终不需要busybox
Chris Stratton 2012年

1

尝试添加-c选项。例如

su -c sh

要么

 su -c 'echo bogus'

(有关更多参数)


0

多挖一点,我想我已经找到了答案。它不起作用的原因是终端应用程序未在其清单中请求超级用户权限,例如:

<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>

这种额外的安全性层似乎是因为终端应用程序是一个Java应用程序,尽管它很好地隐藏了它。超级用户似乎以某种方式对事物进行了伪装,因此即使Java应用程序在创建时并不知道需要此权限,它也可以获取此权限。


2
ACCESS_SUPERUSER权限与您的问题
无关
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.