superuser.apk和su到底是什么?


32

我已经深入研究了Android设备的生根。我真的很想知道我致力于该过程之前每个步骤的情况。

我对superuser.apk和su文件的来源有些困惑。看起来它们不是正式的Google文件,而是由(随机)个人创建的文件。也就是说,这些文件有多安全?

从研究中,我对它们的目的有了一般的了解。我想知道是否有人知道这些文件是什么(可执行文件?脚本?),它们包含什么以及它们通常如何工作。

谢谢!


Answers:


32

su(“切换用户”的缩写)是二进制可执行文件。Android和其他基于* nix的系统使用它来允许进程更改与其关联的用户帐户。从su植根的角度来看很重要的原因是,没有任何其他参数将切换到root用户,这意味着需要调用需要root权限才能执行其功能的进程su(因为默认情况下,它们不是由root运行的)。

超级用户是一个Android应用程序(.apk是一个Android应用程序包)。它充当su二进制文件的一种“关守” 。尝试调用的应用程序su将被迫通过超级用户进行路由,然后该超级用户将提示该用户是未知应用程序还是新应用程序。然后,用户可以选择批准或拒绝对su超级用户的访问,也可以选择让超级用户记住他们的决定,以便它可以自动将该决定应用于该应用程序的后续呼叫。这样,唯一被授予根权限的应用程序就是用户选择的应用程序。

这两个应用程序的源代码都可以在Github上找到,并且可以由任何希望查看它的人进行检查/审核(超级用户在这里,su 在这里)。

您可以在Superuser的网站上找到更多详细信息以及更改日志。

有关Android发烧友的其他相关问题:


1
我非常感谢详细的回复和链接!谢谢!
kaspnord 2012年

1
为了扎根Android,这些文件是否有替代品/等效产品?
kaspnord 2012年

1
@kaspnord:不,su与其他linux / unix操作系统使用的文件相同,没有其他替代方法,但superuser.apk可能存在。为什么要替代?
kyrias 2012年

3
我只是很好奇,因为这些文件尽管受到开源社区的青睐,但似乎没有任何标准(即非官方的Google)。因此,这使我认为其他人可以创建同一文件的其他变体。就我个人而言,我想确切地知道我正在使用什么并将其放入设备中,而不是依靠其他我无法100%自信地知道文件包含内容的解决方案。
kaspnord 2012年

11

超级用户的源代码可以在GitHub上,超级用户的主要作者是亚当·尚克斯(ChainsDD)和科希克杜塔(koush,笔者也发条恢复的)。

Koushik Dutta在他的博客中解释了Superuser.apk的工作原理 ; 请注意,该帖子出自Superuser应用程序的最早版本,此后发生了很多变化,其中一些内容已不再适用于现代的superuser / su实现,但基本知识应相同。

su和Superuser都可以用替代方法代替,但是由于su使用的功能(即exec()和setuid()系统调用)可用于任何可执行文件,因此它实际上并不会发挥太大作用,前提是该可执行文件具有适当的功能。权限位(即setuid位设置为root)。su的核心是一个非常简单的程序,它只是以另一个用户的身份生成一个进程。真正的安全检查由内核完成。

因此,只要您获得了未经修改的官方su和superuser应用程序,并且在获得适当许可的情况下正确安装了它们,您就不必担心,它们是开源的并且安全的,您可以验证源代码在github上编写代码。但是,肯定有可能获得特洛伊木马程序超级用户/ su二进制文件,因此请确保无论您在何处获取超级用户/ su二进制文件都是值得信赖的(如果您确实偏执,则可以自己编译su / 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.