如何以root身份运行终端?

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

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

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

你真正想要的

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

假设这是你想要的,正如钢铁匠所建议的 ,只需运行:

 sudo -i 

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

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

gksu / gksudo

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

 gksu gnome-terminal 
 gksudo gnome-terminal 

(因为默认情况下gksu在Ubuntu中设置为sudo-mode,所以这些应该是等效的。)

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

实际上,每个桌面环境都提供了运行命令的工具,而无需打开终端(如果关闭,则通常会导致命令终止)。

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

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

在Unity中运行命令文本框

和MATE一样(GNOME Flashback / Fallback,Xfce,LXDE类似):

在MATE中运行命令对话框

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

随着sudo

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

 sudo -H gnome-terminal 

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

  • Ubuntu上的RootSudo帮助维基
  • 为什么用户永远不会使用普通的sudo来启动图形应用程序?

sudo -i gnome-terminal也没关系。)

摆脱控制非root终端:

如果你(1)打开一个图形终端, (2)在其中运行类似sudo -H gnome-terminal的东西,创建一个新的图形根终端,以及(3)退出原始的非根图形终端……然后根图形终端也退出。

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

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

 sudo -H gnome-terminal & 

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

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

 sudo -v sudo -H gnome-terminal 

sudo -v就是为了这个目的而存在的。 正如man sudo所解释的那样,它“更新[s]用户的缓存凭据,必要时对用户进行身份validation。”

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

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

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

简而言之:

 sudo -H gnome-terminal ^Z exit 

但是假设你想继续使用原始的非root终端。 然后你可以运行bg N ,其中N是图形根终端的作业号,以在后台恢复作业。 您可以运行jobs来查找N但您可能不必 – 按Ctrl + Z时该数字显示为[ N ] 。 例如:

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

简短回答:

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

还有另一种方法可以做到这一点,测试并使用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 *作为’Command’路径。

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

现在将提示您输入密码; 输入后,您将可以访问正常工作的终端。 请记住仅在绝对必要时使用,并在完成后关闭。

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

我正在使用Debian 9

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

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

我把Super + T作为捷径。

现在,每当你想以root用户身份打开终端时,只需输入你的快捷方式即可

我希望它可能在将来帮助某人

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

 sudo -s 

欲了解更多信息,请执

 man sudo 

并阅读-s --shell部分。