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


10

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

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

有什么办法可以做到这一点?以前,Ubuntu桌面的一个版本开箱即用。

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

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

Answers:


10

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很可能会开始在Software Center和其他此类实用程序中工作。

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

然后您应该可以运行:

software-center

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

如果您想要一个功能齐全的Ubuntu桌面系统,建议您为想要将系统变成Ubuntu的任何“风味”安装metapackage。基本上,如果需要常规的Ubuntu桌面系统,请安装 ubuntu-desktop安装ubuntu-desktop

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

这应该填补在服务器系统上安装更小的GUI所带来的各种空白,例如没有polkit。另一方面,如果您希望使用更小的GUI,则只需安装这些polkit软件包。

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

sudo 图形认证。

如果您确实确实需要以root用户身份运行命令,但获得了图形验证对话框,那么您需要的是gksudogksu)。这是由gksu安装gksu软件包提供的。它是的图形前端sudo

通常gksudo用于以root用户身份(或启动用户的其他用户)运行图形应用程序。但是,您也可以使用它来运行非图形命令-前提是可以使用运行命令sudo

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

请注意,您应该考虑使用gksudo运行图形应用程序,因为即使当你从一个终端运行它们的根,因为类似这样的命令sudo ...,其中...是一个图形应用程序实际上可以打破运行他们非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(和上游版本,带屏幕截图),该答案该答案以获取一些详细信息。

sudovs. polkit (一些技术细节,仅在您感兴趣的情况下)

一个新的gksu/ gksudo将使用polkit代替sudo其工作,尽管该版本尚未得到广泛采用。我主要提出它来在其源代码中推荐README文件(由Gustavo Noronha Silva编写),该文件解释了sudo和polkit 之间的重要区别。简要引用一下:

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

4.为什么要维护gksu?

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

这些问题是我认为您所处的状况的基础:

  • Software Center设计为使用polkit进行特权提升,因此仅特定的操作需要作为root用户执行。为此,它需要polkit,它在您的系统上丢失(或损坏)。
  • 因为它被设计为使用polkit,所以没有预制的启动器可以以root身份启动Software Center。polkit消除了大多数情况下以root用户身份运行图形管理工具的需求。
  • 但是有时候您确实确实需要以root用户身份运行图形程序。在这种情况下,您可以使用gksu/ gksudo
    (...最终可能会在幕后使用polkit,但gksudoUbuntu中当前使用的是传统的sudo)。

1
嗨,Eliah,是的,这是一台没有GUI的服务器,我只是在尝试ubuntu GUI,我运行了命令sudo apt-get install ubuntu-desktop im,不确定是否安装了策略工具包。无论如何都会尝试安装它。当前从12.04升级到14.04。
肖恩

我遇到了一种情况,我有一个GUI应用程序要正常运行(非root用户),但只需要从root用户拥有的串行端口读取即可。无法仅授予该程序一个特权真的很烦人(换句话说,我想要一个完整的对象功能系统)。
CMCDragonkai,2016年

3
请不要gksu从Ubuntu 18.04
Nathan F.

5

一种方便的方法是创建一个专用.desktop文件,或将命令添加到现有文件,并通过GUI(gksu)询问密码。在下面的示例中,我向Gedit启动器添加了以sudo特权运行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
    

    并打开以进行编辑(将其拖到打开的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和软件中心:

在此处输入图片说明

在此处输入图片说明


确实。我没有异议。我评论USC的原因是,问题的主要部分是关于OP如何使通过服务器安装创建的系统像普通的Ubuntu桌面系统一样工作,以图形方式验证管理任务。我的答案集中于此,并以图形方式解释以root身份运行程序的一般性。这样,它就会忽略gksu/的机制gksudo。因此,您的答案既好又必要!我只是希望OP也可以安装/修复polkit,因为我认为这将使OS以他们想要的方式工作。
伊利亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.