当我们要运行一个程序,我们使用root sudo
,gksu
,gksudo
等现在的问题是我们如何可以运行一个终端在终端的root用户?
我尝试使用gksudo terminal
,gksu terminal
但没有任何反应。通过运行sudo terminal
我得到错误sudo: terminal: command not found
。
sudo -i
?
当我们要运行一个程序,我们使用root sudo
,gksu
,gksudo
等现在的问题是我们如何可以运行一个终端在终端的root用户?
我尝试使用gksudo terminal
,gksu terminal
但没有任何反应。通过运行sudo terminal
我得到错误sudo: terminal: command not found
。
sudo -i
?
Answers:
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软件包,因此可以gnome-terminal
使用以下任一命令以root身份运行:
gksu gnome-terminal
gksudo gnome-terminal
(由于gksu
默认情况下在Ubuntu中将其设置为sudo-mode,因此它们应该等效。)
gnome-terminal
以root身份运行而没有控制非root终端:几乎每个桌面环境都提供了一种无需打开终端即可运行命令的功能(如果关闭终端,通常会导致命令终止)。
通常用Alt+ 实现F2。将出现一个标有“运行命令”(或类似命令)的文本框,您可以输入命令。
例如,在Unity中如下所示:
并在MATE中这样(GNOME Flashback / Fallback,Xfce,LXDE相似):
请注意,这与gksu
和gksudo
一起使用,因为它们使用图形验证对话框。如果按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
。
或者,您可以通过在作业开始后挂起作业来以传统方式进行操作:
sudo -H gnome-terminal
从原始的非根图形终端。sudo
。图形终端将启动。exit
。图形根终端作业将自动被非根终端取消挂起和取消所有权。简而言之:
sudo -H gnome-terminal
^Z
exit
但是假设您也想继续使用原始的非root终端。然后,您可以运行,在哪里是图形根终端的作业号,以在后台恢复作业。您可以运行查找,但您不必这样做-该数字显示为按+时的数字。例如:bg N
N
jobs
N
[N]
CtrlZ
ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek:
^Z
[1]+ Stopped sudo -H gnome-terminal
ek@Ilex:~$
xterm
。Ubuntu中有多少个终端?
简短答案:
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
)等。
sudo x-terminal-emulator
呢?
如前所述,您询问如何以root用户身份运行Terminal,但实际上您更可能希望以普通用户身份运行图形Terminal应用程序,并在其中以root用户身份登录的地方启动root shell。这样,图形终端应用程序不会被授予根特权。先前的答案似乎并没有给出清晰的命令行来使用,因此这就是我的用法。
xterm -bg black -fg red -e sudo -i
'-e sudo -i'告诉xterm在会话中切换到根目录,而颜色只是很明显地表明它是根外壳。
gnome-terminal -- sudo -i
转到键盘设置,使用快捷方式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大屏幕。一旦开始运行带有危险后果的不同配置文件以避免发生事故(例如,本地根,远程客户端的计算机,远程客户端根),对终端进行颜色编码是一个很好的主意。
还有另一种方法可以在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,并且自安装以来未对任何文件系统进行重大更改。
gnome-terminal
。所以尝试一下sudo gnome-terminal
。