2011-05-23 56 views

回答

2

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

+4

经常被忽视的是,但最重要的是,su不会更改现有进程的用户标识,而是会启动一个作为所请求的用户标识运行的新进程(可能是一个shell)。 – 2011-05-23 17:35:13

+0

正确!要更改当前进程的执行ID,程序应尝试调用setuid(uid)uid_t uid; su命令默认启动一个新的shell,你可以提供一个命令在新shell中执行。 – saint 2011-05-23 17:40:07

+0

是的,但请注意,setuid()不能让先前未授权的进程变成root,这是许多尝试以编程方式尝试使用'su'(特别是在android上)寻找并找不到的功能。 – 2011-05-23 17:49:01

1

这是一个Unix命令。它用于切换活动用户。有关命令的详细信息,请参见例如this manual pageWikipedia page对命令名称的含义有一些讨论。我认为这是“切换用户”,但并不那么简单。

+0

好的,但为什么有人想在这种情况下切换活动用户? – user758362 2011-05-23 17:28:00

+0

做一些他们当前的用户是不允许的。具体来说,这段代码很可能以root身份启动shell进程(隐含),并设置一个流来发送它的命令,以便让它执行父进程无权执行的操作。请注意,这是**不支持**在官方版本的Android。 – 2011-05-23 17:32:48

+0

所以,如果我想创建一个输入流,否则在另一个线程中(所以我不杀死应用程序时,输入阻塞)我应该复制这种模式或有更好的方式来做到这一点? – user758362 2011-05-23 17:35:49