你真正想要的

你真正想要的

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

我尝试使用gksudo terminalgksu terminal但什么也没发生。并且运行时sudo terminal出现错误sudo: terminal: command not found

答案1

Ubuntu 上的默认终端仿真器是GNOME 终端。它位于/usr/bin/gnome-terminal,可以与gnome-terminal命令。

你真正想要的

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

假设这就是你想要的,因为steeldriver 建议, 赶紧跑:

sudo -i

您将拥有一个 root shell,您在其中输入的命令将以 root 身份运行(无需在命令前面加上sudo)。

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

gksu/gksudo

因为你有堪萨斯州立大学安装 gksu软件包安装后,你可以gnome-terminal以 root 身份运行以下任一操作:

gksu gnome-terminal
gksudo gnome-terminal

(由于gksuUbuntu 中默认设置为 sudo 模式,因此这些应该是等效的。)

以 root 身份运行,gnome-terminal无需控制非 root 终端:

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

这通常使用Alt+来实现F2。标有运行命令(或类似)将会出现,然后您就可以输入您的命令。

例如,在 Unity 中看起来像这样:

在 Unity 中运行命令文本框

在 MATE 中如下所示(GNOME Flashback/Fallback、Xfce、LXDE 类似):

MATE 中的“运行命令”对话框

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

sudo

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

sudo -H gnome-terminal

-H标志很重要,因为它将HOME环境变量设置为/root而不是您自己的用户的主目录。您应该不是使用sudo gnome-terminal它,因为它可能会破坏非 root 用户的 gnome-terminal 配置。有关此问题的更多信息,请参阅:

sudo -i gnome-terminal也可以。)

摆脱控制非root终端:

如果你(1)打开图形终端,(2)在其中运行类似的sudo -H gnome-terminal命令来创建一个新的图形根终端,然后(3)退出原来的非root图形终端...那么root图形终端也退出。

这是因为根图形终端发送信号当拥有它的终端退出时。

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

sudo -H gnome-terminal &

sudo但这仅在无需输入密码时才有效。如果需要,您将看不到密码提示。

单程解决这个问题的方法是使用:

sudo -v
sudo -H gnome-terminal

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

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

或者你可以用所谓的传统方式来做,作业启动后暂停:

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

简而言之:

sudo -H gnome-terminal
^Z
exit

但假设你还想继续使用原来的非 root 终端。那么你可以运行,其中bg NN是图形根终端的作业编号,用于在后台恢复作业。您可以运行jobs以查找N但你可能不需要这样做——当你按下+时,这个数字就会显示出来。例如:[N]CtrlZ

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$

答案2

简短回答:

gksudo gnome-terminal
(assuming gksu is installed)

以 root 身份打开终端:

root@jacob-Satellite-L300:~#

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

答案3

如前所述,您询问如何以 root 身份运行终端,但更可能的情况是,您实际上想以普通用户身份运行图形终端应用程序,并在其中启动 root shell,您以 root 身份登录。这样,图形终端应用程序就不会被授予 root 权限。前面的答案似乎没有提供明确的命令行,所以我使用以下命令行。

使用 xterm

xterm -bg black -fg red -e sudo -i

'-e sudo -i' 告诉 xterm 在会话中切换到 root,并且颜色只是为了非常明显地表明它是一个 root shell。

使用 Gnome 终端

gnome-terminal -- sudo -i

就我个人而言,我绑定了 Gnome 的按键绑定,以便轻松启动终端

转到键盘设置,使用快捷键 Super+X 和命令“xterm -bg black -fg white -sb -sl 5000”添加自定义快捷方式,并使用快捷键 Super+Z 和命令“xterm -bg black -fg red -sb -sl 5000 -e sudo -i”添加 root xterm。

过去我倾向于使用 xterm 而不是 Gnome Terminal,因为字体小而简单,但现在我又开始使用 Terminal 了,因为我运行高 DPI 大屏幕。一旦您开始运行具有危险后果的不同配置文件,对终端进行颜色编码是一个非常好的主意,可以避免发生事故(例如本地根、远程客户端的机器、远程客户端根)。

答案4

还有另一种方法可以做到这一点,已经在 Ubuntu 16.04 LTS 上测试并运行:

首先安装 gnome-panel:

sudo apt install gnome-panel

然后安装gksu:

sudo apt install gksu

安装完成后,运行:

gnome-desktop-item-edit ~/Desktop/ --create-new

这将创建一个桌面快捷方式。您可以选择命名它。我将它命名为“X-Term”,但您可以随意命名。输入/usr/bin/gksu* 表示“命令”路径。

当您启动新的桌面快捷方式时,系统将提示您运行一个应用程序。输入:xterm

现在将提示您输入密码;输入密码后,您将可以访问正在运行的 root 终端。请记住,只在绝对必要时使用,使用完毕后关闭。

*假设您使用默认设置安装了 Ubuntu,并且自安装以来没有对任何文件系统进行重大更改。

相关内容