如何在没有命令行的情况下获得 GUI sudo 密码提示?

Sea*_*ean 11 sudo password policykit gksu gksudo

目前,对于需要 root 访问权限的所有命令,我必须在命令行中输入它们。

当需要 sudo 时,我希望 GUI 提示我输入密码,而不必从命令行输入命令。

有什么办法可以启用它吗?以前有一个版本的 Ubuntu 桌面具有开箱即用的功能。

这个版本的 Ubuntu(我现在正在运行)我是从服务器安装升级的。

我要补充的是,我的用户帐户已添加到 sudo 组。因此,我可以运行诸如sudo gedit或之类的命令,sudo apt-get但我无法在 Ubuntu 软件中心安装软件。

Eli*_*gan 13

TL;DR:尝试安装policykit-1policykit-1-gnome包。

您可能需要 polkit(又名 PolicyKit)。

Ubuntu 中的大多数图形系统管理实用程序,包括软件中心,通常可以在没有sudo它的情况下运行,也可以在没有它的情况下运行。您只需像运行任何程序一样运行它们即可。

当需要执行需要 root 权限的任务时,他们使用polkit来执行所需的操作。polkit 是一种独立于 sudo 的机制,允许管理员以 root 身份执行操作。它安装在桌面 Ubuntu 系统上,但默认情况下不是 Ubuntu Server 安装的一部分。

因此,软件中心的正常行为是您可以简单地调用它software-center,当时它不会提示您进行身份验证,但是当您告诉它安装或删除软件时,它会提示您(以图形方式)进行身份验证。

从您的描述中听起来,您的系统是作为没有 GUI 的 Ubuntu Server 系统启动的,然后您安装了 GUI。可能是policykit-1安装 policykit-1policykit-1-gnome安装 policykit-1-gnome尚未安装软件包。如果您安装了 ,polkit 很可能会开始为软件中心和其他此类实用程序工作。

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome
Run Code Online (Sandbox Code Playgroud)

然后你应该能够运行:

software-center
Run Code Online (Sandbox Code Playgroud)

(或以图形方式选择您安装的任何桌面环境所提供的软件中心。)

如果您想要一个功能齐全的 Ubuntu 桌面系统,我建议您为您想要将系统变成任何“风格”的 Ubuntu 安装元包。基本上,如果你想要一个普通的 Ubuntu 桌面系统,安装ubuntu-desktop安装 ubuntu 桌面.

sudo apt-get update
sudo apt-get install ubuntu-desktop
Run Code Online (Sandbox Code Playgroud)

这应该填补各种空白,比如没有 polkit,在你的服务器系统上安装一个更小的 GUI。另一方面,如果您更喜欢更小的 GUI,您可以只安装那些 polkit 包。

有关更多信息,请参阅如何使用 GUI 运行 Ubuntu Server?

sudo 带有图形身份验证。

如果您确实需要以 root 身份运行命令但获得图形身份验证对话框,那么您正在寻找的是gksudo(gksu)。这是由gksu提供的安装 gksu包裹。它是一个图形前端sudo

通常gksudo用于以 root 用户(或除启动它们的用户之外的其他用户)运行图形应用程序。但是您也可以使用它来运行非图形命令——前提是这些命令可以使用sudo.

您可以gksudo从终端运行,但不是必须的。您可以从Alt+ F2(运行命令)对话框中运行它,也可以将它放在文件的Exec=行中.desktop(或运行图形程序的任何其他方式)。

请注意,gksudo即使从终端运行图形应用程序,您也应该考虑使用以 root 身份运行图形应用程序,因为诸如sudo ...where ...is a graphics application 之类的命令实际上可能会破坏运行它们的非 root 用户的每个应用程序配置。(幸运的是,这是可以修复的。) sudo gedit尤其臭名昭著。

有关sudo图形应用程序问题的更多信息以及该怎么做,请参阅:

还有基于 polkit 的图形方式……用于非图形命令。

gksudo适用于运行图形和非图形程序。你可能应该使用它。

但是,使用 polkit 而不是sudo且仅适用于非图形程序的替代方法是pkexec.

例如,如果您运行pkexec touch /root/foo.txt,您将收到图形身份验证对话框的提示,如果身份验证成功,touch /root/foo.txt则运行、在文件夹中创建(或刷新)。foo.txt/root

  • pkexec如果无法创建图形对话框,将使用需要终端的非图形对话框。但是,如果您通过图形外壳或桌面环境提供的工具运行它,则不太可能发生这种情况。
  • 为什么pkexec只适用于图形程序?实际上,它也可以运行图形程序,但前提是 polkit 已被专门配置为允许它——通常不会这样做。如果您有兴趣,请参阅man pkexec(和上游版本,带有屏幕截图),this answerthat answer了解一些细节。

sudovs. polkit (一些技术细节,只有你感兴趣)

一个新的gksu/gksudo将使用 polkit 而不是sudo完成它的工作,尽管这个版本还没有被广泛采用。我主要是在它的源代码(由Gustavo Noronha Silva编写)中提出来推荐README文件,它解释了sudo和polkit之间的重要区别。简单引用一下:

PolicyKit 解决了应用程序需要更高权限的问题,提供了让用户验证自己和应用程序验证身份验证和授权信息的工具。应用程序的结构必须使所有特权操作都由(最好)小型 D-Bus 服务完成,该服务由非特权代码控制。执行的所有“操作”都需要适当的授权,这是通过 Policykit 处理的。

4、为什么要维护gksu?

因此,这实质上使 gksu 变得不必要,因为应用程序不再需要以特权用户身份运行,并且用户身份验证由 PolicyKit 的身份验证代理完成。但是应用程序需要重构以采用这种新结构,并且在某些情况下,您想要的确实是以 root 身份运行程序的东西。

这些问题构成了我认为您所处的情况的基础:

  • 软件中心旨在使用 polkit 进行权限提升,因此只需以 root 身份执行特定操作。为此,它需要 polkit,它在您的系统上丢失(或损坏)。
  • 因为它是为使用 polkit 而设计的,所以没有预先制作的启动器来以 root 身份启动软件中心。大多数情况下,polkit 不需要以 root 身份运行图形管理工具。
  • 但有时您确实需要以 root 身份运行图形程序。在这种情况下,您可以使用gksu/ gksudo
    (...最终可能会在幕后使用 polkit——但gksudo目前在 Ubuntu 中使用的是传统的sudo)。

  • 请注意,`gksu` 已被弃用并从 Ubuntu 18.04 中删除 (4认同)

Jac*_*ijm 5

一种方便的方法是创建一个专用.desktop文件,或将您的命令添加到现有文件中,通过 GUI (gksu) 询问您的密码。在下面的示例中,我将使用 sudo 权限运行 Gedit 和软件中心的命令添加到 Gedit 启动器。您需要gksu安装才能使用此设置:sudo apt-get install gksu

  1. 复制 Gedit .desktop file in/usr/share/applications/ to~/.local/share/applications`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    
    Run Code Online (Sandbox Code Playgroud)

    并打开它进行编辑(将其拖到打开的 gedit 窗口中)

  2. 寻找这一行: Actions=Window;Document;

  3. 将您的命令名称添加到行中(这些不是您将在界面中看到的名称,仅用于文件中的内部参考)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在文件底部添加相应的部分:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 关闭文件并将其拖到启动器上

现在您可以使用 sudo 权限运行 gedit 和软件中心:

在此处输入图片说明

在此处输入图片说明