【问题标题】:what does the su mean: process = Runtime.getRuntime().exec("su");su 是什么意思: process = Runtime.getRuntime().exec("su");
【发布时间】:2011-05-23 17:25:17
【问题描述】:

我正在尝试找出我收到的一些代码。有人能告诉我这是什么意思吗?

process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());

尤其是苏。

谢谢!

【问题讨论】:

    标签: android


    【解决方案1】:

    在没有任何其他类型的参数的情况下使用,su 将用户 ID 更改为 0(超级用户)但不会更改当前路径或环境。

    【讨论】:

    • 经常被忽略,但最重要的是,su 不会更改现有进程的用户 ID,而是启动一个作为请求的用户 ID 运行的新进程(可能是 shell)。
    • 真的!要更改当前进程的执行 ID,程序应尝试调用 setuid(uid) uid_t uid; su 命令默认启动一个新的 shell,你可以提供一个命令在新的 shell 中执行。
    • 是的,但请注意 setuid() 不能让以前没有特权的进程成为 root,这是许多尝试以编程方式使用“su”的人(尤其是在 android 上)正在寻找的能力,并且将没找到。
    【解决方案2】:

    这是一个 Unix 命令。用于切换活跃用户。例如,请参阅 this manual page 以了解有关该命令的作用的详细信息。 Wikipedia page 对命令名称的含义进行了一些讨论。我以为是“切换用户”,没想到这么简单。

    【讨论】:

    • 好的,但是为什么有人要在这种情况下切换活跃用户呢?
    • 做他们当前用户不允许做的事情。具体来说,这段代码可能会以 root 身份启动 shell 进程(隐含),并设置一个流向它发送命令,以便让它做父进程没有权限做的事情。请注意,这在 android 的官方版本中不支持
    • 因此,如果我想在另一个线程中的其他位置创建输入流,(因此在阻止输入时我不会杀死应用程序)我应该复制这种模式还是有更好的方法来这样做?
    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2022-01-25
    相关资源
    最近更新 更多