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

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

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

有没有办法实现这个? 以前,一个版本的Ubuntu桌面具有开箱即用的function。

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

我将添加,我的用户帐户已添加到sudo组。 因此,我可以运行sudo geditsudo apt-get等命令,但我无法在Ubuntu软件中心安装软件。

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

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

Ubuntu中的大多数图形系统管理实用程序(包括软件中心)通常可以在没有sudo或任何非常类似的情况下运行。 你只需运行它们就像运行任何程序一样。

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

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

这听起来像你的描述,就像你的系统是一个没有GUI的Ubuntu Server系统,然后你安装了一个GUI。 可能是政策套件-1 安装policykit-1 和policykit-1-gnome 安装policykit-1-gnome 包尚未安装。 如果您安装了,polkit很可能会开始为Software Center和其他此类实用程序工作。

 sudo apt-get update sudo apt-get install policykit-1 policykit-1-gnome 

然后你应该能够运行:

 software-center 

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

如果你想要一个function齐全的Ubuntu桌面系统,我建议安装你希望将你的系统变成Ubuntu的“风味”的元数据包。 基本上,如果你想要一个普通的Ubuntu桌面系统,请安装ubuntu-desktop 安装ubuntu-desktop

 sudo apt-get update sudo apt-get install ubuntu-desktop 

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

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

sudo与图形认证。

如果你确实需要以root身份运行命令但是获得图形validation对话框,那么你要找的是gksudo ( 或gksu )。 这是由gksu提供的 安装gksu 包。 它是sudo的图形前端。

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

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

请注意,即使从终端运行图形应用程序,也应该考虑使用gksudo以root身份运行图形应用程序,因为像sudo ... where ...这样的sudo ...是图形应用程序实际上可以破坏非应用程序的每个应用程序配置root用户运行它们。 (幸运的是,这是可以修复的。) sudo gedit特别臭名昭着。

有关图形应用程序的sudo问题以及要执行的操作的详细信息,请参阅:

  • 为什么用户永远不会使用普通的sudo来启动图形应用程序?
  • Ubuntu中的RootSudo帮助维基
  • man sudo用于-H-i选项。 sudo -H ...sudo -i ...不以图形方式进行身份validation,但就像gksudo ...他们没有普通sudo ...的问题sudo ...

对于非图形命令,还有基于polkit的图形方式。

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

但另一种方法是使用polkit代替sudo而只能用于非图形程序,这是pkexec

例如,如果运行pkexec touch /root/foo.txt ,系统将提示您使用图形validation对话框,如果validation成功,请touch /root/foo.txt ,创建( 或刷新 ) foo.txt/root文件夹中。

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

sudo vs. polkit (一些技术细节,只有你感兴趣的时候)

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

PolicyKit通过提供允许用户进行身份validation的工具以及应用程序validation身份validation和授权信息来解决应用程序需要更高权限的问题。 应用程序必须以一种方式构造,即所有特权操作都由(优选地)小型D-Bus服务完成,该服务由非特权代码命令。 执行的所有“操作”都需要适当的授权,这是通过Policykit处理的。

4.为什么要保持gksu?

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

这些问题是我认为你所处的情况的基础:

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

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

  1. 将/ usr / share / applications /中的Gedit .desktop file in复制to 〜/ .local / share / applications`:

     cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop 

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

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

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

     Actions=Window;Document;gedit;Ubuntu Software Center; 
  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; 
  5. 关闭文件并将其拖到启动器上

现在您可以使用sudo权限运行gedit和Software Center:

在此处输入图像描述

在此处输入图像描述