当我们想以 root 身份运行程序时,我们使用、、sudo
等。现在我的问题是,我们如何在终端中以 root 用户身份运行终端?gksu
gksudo
我尝试使用gksudo terminal
,gksu 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
因为你有堪萨斯州立大学软件包安装后,你可以gnome-terminal
以 root 身份运行以下任一操作:
gksu gnome-terminal
gksudo gnome-terminal
(由于gksu
Ubuntu 中默认设置为 sudo 模式,因此这些应该是等效的。)
以 root 身份运行,gnome-terminal
无需控制非 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-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
。
或者你可以用所谓的传统方式来做,作业启动后暂停:
sudo -H gnome-terminal
从原始非root图形终端运行。- 根据提示输入密码
sudo
。图形终端将启动。 - 仍在非root终端,按Ctrl+Z暂停根终端。根终端暂停时,您无法使用它;其界面不会响应您的操作。
- 使用 退出控制非 root 终端
exit
。图形 root 终端作业将自动取消挂起,并被非 root 终端放弃。
简而言之:
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:~$
答案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,并且自安装以来没有对任何文件系统进行重大更改。