如何以root身份运行Terminal?


35

当我们要运行一个程序,我们使用root sudogksugksudo等现在的问题是我们如何可以运行一个终端在终端的root用户?

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


4
是的gnome-terminal。所以尝试一下sudo gnome-terminal
g_p 2014年

1
以root身份运行终端程序本身真的有任何优势吗?为什么不只在终端内部启动交互式root shell sudo -i
steeldriver

2
@Guru sudo不应用于运行这样的图形程序。如果gksu/ gksudo不是(或可能不)安装,sudo -H ...(或sudo -i ...)可被用于运行一个图形应用程序...作为根。
伊利亚·卡根

是的,你是对的。
g_p 2014年

Answers:


53

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

你真正想要的

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

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

sudo -i

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

但是,如果您真的想以root用户身份运行图形终端仿真器应用程序,请继续阅读。我提出两种方式:使用gksu/ gksdo以及使用sudo命令。

gksu/gksudo

由于已经安装了gksu安装gksu软件包,因此可以gnome-terminal使用以下任一命令以root身份运行:

gksu gnome-terminal
gksudo gnome-terminal

(由于gksu默认情况下在Ubuntu中将其设置为sudo-mode,因此它们应该等效。)

gnome-terminal以root身份运行而没有控制非root终端:

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

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

例如,在Unity中如下所示:

在Unity中运行命令文本框

并在MATE中这样(GNOME Flashback / Fallback,Xfce,LXDE相似):

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

请注意,这与gksugksudo一起使用,因为它们使用图形验证对话框。如果按Alt+ F2并运行sudo ...,则将无法与密码提示进行交互。

sudo

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

sudo -H gnome-terminal

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

sudo -i gnome-terminal也可以)

摆脱控制的非根终端:

如果您(1)打开图形终端,(2)sudo -H gnome-terminal在其中运行类似操作,以创建新的图形根终端,并且(3)退出原始的非根图形终端,那么根图形终端也将退出。

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

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

sudo -H gnome-terminal &

但这仅在sudo不需要提示输入密码的情况下才有效。如果是这样,您将不会看到密码提示。

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

sudo -v
sudo -H gnome-terminal

sudo -v为此目的而存在。如中所述man sudo,它“更新用户的缓存凭据,必要时对用户进行身份验证”。

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

或者,您可以通过在作业开始后挂起作业来以传统方式进行操作

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

简而言之:

sudo -H gnome-terminal
^Z
exit

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

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

我也可以通过xterm。Ubuntu中有多少个终端?
αғsнιη

@KasiyA很多。我曾经在25岁时停止计数。腻子,终结者也被大量使用。
Rinzwind 2014年

6

简短答案:

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)等。


1
sudo x-terminal-emulator呢?
αғsнιη

@KasiyA还是应该做gksu x-terminal-emulatorgksudo x-terminal-emulatorkdesudo x-terminal-emulator(如果你的桌面环境KDE是),sudo -H x-terminal-emulatorsudo -i x-terminal-emulator相反,以避免这个问题。同样,sudo gedit不应gedit以root 身份运行。
伊利亚·卡根

2

如前所述,您询问如何以root用户身份运行Terminal,但实际上您更可能希望以普通用户身份运行图形Terminal应用程序,并在其中以root用户身份登录的地方启动root shell。这样,图形终端应用程序不会被授予根特权。先前的答案似乎并没有给出清晰的命令行来使用,因此这就是我的用法。

使用xterm

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

'-e sudo -i'告诉xterm在会话中切换到根目录,而颜色只是很明显地表明它是根外壳。

带Gnome终端

gnome-terminal -- sudo -i

我个人将Gnome绑定绑定到启动终端

转到键盘设置,使用快捷方式Super + X和命令'xterm -bg黑色-fg白色-sb -sl 5000'添加自定义快捷方式,并使用快捷方式Super + Z和命令'xterm -bg黑色-fg红色-添加根xterm- sb -sl 5000 -e sudo -i'。

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


0

还有另一种方法可以在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

现在将提示您输入密码。输入后,您将可以使用正在运行的根终端。切记仅在绝对必要时使用,并在完成后关闭。

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


0

我正在使用Debian 9 Stretch

转到键盘快捷键,添加如下命令:

`gksu / usr / bin / x-terminal-emulator'

我把它Super + T当作捷径。

现在,每次您想以超级用户身份打开终端时,只需键入快捷方式

我希望它将来可以对某人有所帮助


-1

您可以使用以下命令启动交互式shell:

sudo -s

有关更多信息,请执行以下操作:

man sudo

并阅读本-s --shell节。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.