如何以root身份运行终端?
当我们想以root身份运行程序时,我们使用sudo
, gksu
, gksudo
等。现在我的问题是如何在终端中以root用户身份运行终端?
我尝试使用gksudo terminal
和gksu 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
/ gksdo
和sudo
命令。
用gksu
/ gksudo
既然你有gksu 安装包后,您可以使用以下任一方式以root身份运行gnome-terminal
:
gksu gnome-terminal
gksudo gnome-terminal
(因为默认情况下gksu
在Ubuntu中设置为sudo-mode,所以这些应该是等效的。)
在没有控制非root终端的情况下以root身份运行gnome-terminal
terminal:
实际上,每个桌面环境都提供了运行命令的工具,而无需打开终端(如果关闭,则通常会导致命令终止)。
这通常通过Alt + F2实现。 将出现标记为“运行”命令 (或类似)的文本框,您可以输入命令。
例如,它在Unity中看起来像这样:
和MATE一样(GNOME Flashback / Fallback,Xfce,LXDE类似):
请注意, 这适用于gksu
和gksudo
因为它们使用图形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
的密码。
或者您可以通过在作业开始后暂停作业 ,以可能被称为传统方式的方式执行此操作:
- 从原始的非root图形终端运行
sudo -H gnome-terminal
terminal。 - 根据
sudo
提示输入您的密码。 图形终端将启动。 - 仍然在非root终端中 ,按Ctrl + Z暂停根终端。 根终端被挂起,你不能使用它; 它的界面不会响应您的操作。
- 退出控制非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
部分。