Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
su如何在android上工作?什么是它工作的先决条件?安卓的根基是什么?_Android_Root_Su - Fatal编程技术网

su如何在android上工作?什么是它工作的先决条件?安卓的根基是什么?

su如何在android上工作?什么是它工作的先决条件?安卓的根基是什么?,android,root,su,Android,Root,Su,可能重复: 我厌倦了尝试所有不同的事情,但我仍然无法理解su什么时候能工作。什么是在安卓系统中支持设备?谁来帮我做这个 我回答了以下问题。我在那里发布的解决方案,我进行了测试,而且效果良好 这是我的问题: 我试着跟着 模仿苏 已安装SuperUser.apk 我从程序中调用su,然后使用新创建的进程执行所需的操作 这有两个结果 1) 当设备在根目录下运行时(如在z4root中执行永久根目录选项),它将工作,并更改系统文件权限 2) 当设备没有根目录时,它将不工作 请解释一下z4root执行了哪

可能重复:

我厌倦了尝试所有不同的事情,但我仍然无法理解su什么时候能工作。什么是在安卓系统中支持设备?谁来帮我做这个

我回答了以下问题。我在那里发布的解决方案,我进行了测试,而且效果良好

这是我的问题:

我试着跟着

模仿苏

已安装SuperUser.apk

我从程序中调用su,然后使用新创建的进程执行所需的操作

这有两个结果

1) 当设备在根目录下运行时(如在z4root中执行永久根目录选项),它将工作,并更改系统文件权限

2) 当设备没有根目录时,它将不工作

请解释一下z4root执行了哪些额外的任务使任务成为可能。请简单解释一下


如果我的问题不清楚,请告诉我。非常感谢。

当您在设备上建立根目录时,您会覆盖或修改ROM中的操作系统映像,以授予您提升的权限。在用户模式下安装应用程序不可能在任何版本的Linux anywhere中为您提供权限提升。如果任何用户都可以通过“复制su”使自己成为root用户,那么就不会有安全问题。

我不知道你在问什么,但这似乎很简单。你想成为“超级用户”,或者做一些有超级用户权限的事情。仅当您拥有设备上当前运行的用户帐户的实际权限时,才能执行此操作。通常你没有这个权利

请记住,“超级用户”与“根用户”相同

  • 如果你“根”你的设备,这意味着你给了自己成为超级用户的权利。你可以做一些需要成为超级用户的事情:“su”就是其中的一个命令,上面写着“以超级用户的身份登录”。您显然需要超级用户权限才能成为该用户
  • 如果你没有根设备,你没有权利做超级用户可以做的事情。因此,调用
    su
    将不起作用
因此,如果你已经
在设备上设置了根目录
,那么你只能执行
根目录
操作。

z4root(或任何其他根目录程序)运行了什么漏洞来将自己的uid(用户id)更改为0(根目录)。你可以把它想象成是在进行某种黑客攻击,欺骗内核,使其认为自己实际上有权成为root用户(那么,如果z4root是一种病毒,那么它可以用你的手机做任何事情,从安装键盘记录器到组装它)。当然,如果有可能以这种方式欺骗内核,使您能够访问根目录,那么它将被视为一个安全漏洞(任何应用程序都可能这样做并执行一些恶意操作),并且通常会在将来的内核更新中得到修复(这就是为什么升级固件时z4root可能无法工作的原因)

当z4root将其uid设置为0时,它会执行以下操作:将
/system
分区重新装载为可写分区(默认为只读分区),通过su binary、Superuser.apk和busybox进行复制,然后将
/system
重新装载为只读分区

那么,当应用程序通常具有与父进程相同的uid时,su二进制文件如何在不进行“黑客”操作的情况下为您提供根访问权限?这是因为su二进制文件设置了标志,并且始终作为uid 0(根)运行


现在,如果您已将su二进制文件复制到
/system/bin
,那么您必须具有root访问权限,这意味着您忘记了更改所有者/权限(
chown root:root/system/bin/su;chmod 6755/system/bin/su
),但您仍然需要root访问权限才能执行此操作。

“因此,只有在设备根目录下才能执行root操作”我想了解的是,在设备根化之前和之后的区别。在操作系统内部添加了一些东西,可以让su工作吗?或者它是什么?这样看:你作为用户“登录”到你的设备上,就像在任何其他计算机上一样。该用户没有执行超级用户操作的权限。您运行的一切(应用程序等)都是以您的权限运行的。您所做的更改是允许随机用户(例如您)成为root用户。这样看:通常就像你登录到图书馆的计算机:你不是管理员。“rooting”意味着“hacking”计算机,因此默认用户将成为管理员。操作系统映像的具体差异是什么,这是我试图理解的。。感谢您回复“安装应用程序…不可能给您特权升级”,我同意这是不应该的,但这通常是设备根方法的工作方式。利用安全漏洞将当前非根进程升级到根进程,然后进行一些永久性更改,以便以后更轻松地升级权限(例如,将su复制到通常为只读的“系统”文件系统)。谢谢。。但是有没有关于如何通过编程将Uid更改为0的线索?@happy2Help除非您是root用户(Uid 0),否则无法更改Uid。只允许root用户更改uid,否则任何用户都可以授予自己提升的权限。答:调用设置了setuid标志的可执行文件(在大多数Linux上,默认情况下只有su和sudo有,但您可以创建自己的可执行文件-您需要根访问权限才能将其作为根访问)。我认为第3段和下面的内容不正确。Android的su不使用setuid标志,因为Android不尊重该标志。相反,Android的su联系一个守护进程daemonsu,该进程由init直接分叉。所以你用su运行的程序不是su的子进程,而是daemonsu的子进程。@WuYongzheng这个答案已经有两年多的历史了,当时我很有信心Android使用了setuid标志,因为这就是我在手机上设置根的方式(下载图像->解包->添加su二进制,setuid->包->闪存)@matix2267没有注意到日期。刚查过。删除setuid位是在Android 4.3及更高版本中实现的