如何以root身份运行终端?

αғs*_*нιη 41 root gnome-terminal

当我们想以 root 身份运行程序时,我们使用sudo, gksu,gksudo等等。现在我的问题是我们如何在终端中以 root 用户身份运行终端?

我尝试使用gksudo terminalgksu terminal但没有任何反应。通过运行sudo terminal我得到错误sudo: terminal: command not found

Eli*_*gan 62

Ubuntu 上的默认终端模拟器是GNOME 终端。它位于/usr/bin/gnome-terminal并且可以使用gnome-terminal命令运行。

你真正想要的

您可能想要的是一个以 root 身份运行的 shell,就好像它是从 root 登录生成的(例如,为 root 而不是为您的用户设置所有环境变量)。

假设这就是你想要的,正如steeldriver 所建议的那样,只需运行:

sudo -i
Run Code Online (Sandbox Code Playgroud)

您将拥有一个 root shell,您在其中输入的命令将以 root 身份运行(不必在它们之前加上sudo)。

但是,如果您真的想以 root 身份运行图形终端模拟器应用程序,请继续阅读。我介绍了两种方式:使用gksu/gksdo和使用sudo命令。

gksu/gksudo

既然你有gksu安装 gksu安装包,您可以gnome-terminal使用以下任一方式以 root 身份运行:

gksu gnome-terminal
Run Code Online (Sandbox Code Playgroud)
gksudo gnome-terminal
Run Code Online (Sandbox Code Playgroud)

(由于gksu在 Ubuntu 中默认设置为 sudo-mode,这些应该是等效的。)

gnome-terminal在没有控制非 root 终端的情况下以 root 身份运行:

几乎每个桌面环境都提供了一种无需打开终端即可运行命令的工具(如果关闭终端,通常会导致命令终止)。

这通常通过Alt+实现F2。将出现一个标记为运行命令(或类似)的文本框,您可以输入您的命令。

例如,它在 Unity 中是这样的:

在 Unity 中运行命令文本框

在 MATE 中是这样的(GNOME Flashback/Fallback、Xfce、LXDE 类似):

MATE 中的运行命令对话框

请注意,这适用于gksu并且gksudo因为它们使用图形身份验证对话框。如果您按Alt+F2并运行sudo ...,您将无法与密码提示进行交互。

sudo

如果您没有 gksu 软件包并且不想安装它,您可以使用:

sudo -H gnome-terminal
Run Code Online (Sandbox Code Playgroud)

-H标志很重要,因为它将HOME环境变量设置为/root而不是您自己用户的主目录。你应该使用sudo gnome-terminal,因为它可以打破属于非root用户的GNOME终端的配置。有关这方面的更多信息,请参阅:

sudo -i gnome-terminal也可以。)

摆脱控制的非root终端:

如果您(1)打开一个图形终端,(2)sudo -H gnome-terminal在其中运行类似的东西,以创建一个新的图形根终端,并且(3)退出原始的非根图形终端……那么根图形终端也会退出.

这是因为当拥有它的终端退出时,会向根图形终端发送SIGHUP

为了防止这种情况,您可能认为您可以使用以下命令启动图形根终端:

sudo -H gnome-terminal &
Run Code Online (Sandbox Code Playgroud)

但这仅在sudo不必提示输入密码时才有效。如果是这样,您将不会看到密码提示。

解决此问题的一种方法是使用:

sudo -v
sudo -H gnome-terminal
Run Code Online (Sandbox Code Playgroud)

sudo -v正是为了这个目的而存在的。如 中所述man sudo,它“更新 [s] 用户的缓存凭据,并在必要时对用户进行身份验证。”

请注意,如果直接从桌面环境的Alt+ F2“运行命令”框中运行,这仍然不起作用,因为您仍然需要一个终端来输入sudo -v.

或者,您可以通过在作业开始后暂停作业,以所谓的传统方式执行此操作:

  1. 运行sudo -H gnome-terminal从原始的非根图形终端。
  2. 根据提示输入您的密码sudo。图形终端将启动。
  3. 仍然在非root终端,按Ctrl+Z挂起root终端。根终端挂起时,您不能使用它;它的界面不会响应您的操作。
  4. 退出控制非 root 终端exit。图形 root 终端作业将被非 root 终端自动取消暂停和否认。

简而言之:

sudo -H gnome-terminal
^Z
exit
Run Code Online (Sandbox Code Playgroud)

但是假设您也想继续使用原始的非 root 终端。然后,您可以运行,其中图形根终端的作业编号是什么,以在后台恢复作业。您可以运行查找,但您可能不必这样做——该数字显示为当您按下+ 时。例如:bg NNjobsN[N]CtrlZ

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$
Run Code Online (Sandbox Code Playgroud)


Jac*_*ijm 6

简短的回答:

gksudo gnome-terminal
(assuming gksu is installed)
Run Code Online (Sandbox Code Playgroud)

以 root 身份打开一个终端:

root@jacob-Satellite-L300:~#
Run Code Online (Sandbox Code Playgroud)

无需解释,您可以使用它像这样以 root身份打开任何终端;比如 Vala ( gksudo vala-terminal), Xterm ( gksudo xterm), Termit ( gksudo termit), UXTerm ( gksudo uxterm), Konsole ( gksudo konsole) 等等。