Answers:
TL; DR:尝试安装policykit-1
和policykit-1-gnome
软件包。
Ubuntu中的大多数图形系统管理实用程序,包括软件中心,通常都可以在没有sudo
或没有类似的情况下运行。您只需以与运行任何程序相同的方式运行它们。
当需要执行需要root特权的任务时,他们使用polkit执行所需的操作。polkit是与sudo不同的机制,用于允许管理员以root用户身份执行操作。它安装在桌面Ubuntu系统上,但默认情况下不是Ubuntu Server安装的一部分。
因此,软件中心的正常行为是您可以像那样简单地调用它software-center
,它当时不会提示您进行身份验证,但是当您告诉它安装或删除软件时,它将(以图形方式)提示您进行身份验证。
从您的描述中听起来像您的系统是从没有GUI的Ubuntu Server系统启动的,然后安装了GUI。可能尚未安装policykit-1和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。
sudo apt-get update
sudo apt-get install ubuntu-desktop
这应该填补在服务器系统上安装更小的GUI所带来的各种空白,例如没有polkit。另一方面,如果您希望使用更小的GUI,则只需安装这些polkit软件包。
有关更多信息,请参见如何使用GUI运行Ubuntu Server?
sudo
图形认证。如果您确实确实需要以root用户身份运行命令,但获得了图形验证对话框,那么您需要的是gksudo
(或gksu
)。这是由gksu软件包提供的。它是的图形前端sudo
。
通常gksudo
用于以root用户身份(或启动用户的其他用户)运行图形应用程序。但是,您也可以使用它来运行非图形命令-前提是可以使用运行命令sudo
。
您可以gksudo
从终端运行,但不必这样做。您可以从Alt+ F2(运行命令)对话框中运行它,或将其放在文件Exec=
行中.desktop
(或运行图形程序的任何其他方式)。
请注意,您应该考虑使用gksudo
运行图形应用程序,因为即使当你从一个终端运行它们的根,因为类似这样的命令sudo ...
,其中...
是一个图形应用程序实际上可以打破运行他们非root用户的每个应用程序的配置。(幸运的是,这是可以解决的。) sudo gedit
尤其臭名昭著。
有关sudo
图形应用程序问题及其替代方法的更多信息,请参见:
man sudo
对于-H
和-i
选项。sudo -H ...
并且sudo -i ...
不以图形方式进行身份验证,但是就像gksudo ...
它们没有plain的问题一样sudo ...
。gksudo
适用于同时运行图形和非图形程序。您可能应该使用它。
但是一种替代方法是使用polkit代替sudo
并且仅适用于非图形程序pkexec
。
例如,如果您运行pkexec touch /root/foo.txt
,则会出现图形身份验证对话框提示您,如果身份验证成功,则将在文件夹中touch /root/foo.txt
创建(或刷新)身份验证。foo.txt
/root
pkexec
如果无法创建图形对话框,它将使用非图形对话框,需要终端。但是,如果通过图形外壳程序或桌面环境提供的功能运行它,则不太可能发生。pkexec
只对非图形程序起作用?实际上,它也运行图形程序,但是只有在polkit经过特殊配置以允许它的情况下(通常不这样做)。如果有兴趣的话,请参阅man pkexec
(和上游版本,带屏幕截图),该答案和该答案以获取一些详细信息。sudo
vs. polkit (一些技术细节,仅在您感兴趣的情况下)一个新的gksu
/ gksudo
将使用polkit代替sudo
其工作,尽管该版本尚未得到广泛采用。我主要提出它来在其源代码中推荐该README
文件(由Gustavo Noronha Silva编写),该文件解释了sudo
和polkit 之间的重要区别。简要引用一下:
PolicyKit通过提供让用户进行身份验证以及让应用程序验证身份验证和授权信息的功能,解决了应用程序需要更高特权的问题。该应用程序的结构必须使所有特权操作都由(最好是)小型D-Bus服务完成,该服务由非特权代码命令。所有执行的“操作”都需要适当的授权,该授权通过Policykit处理。
4.为什么要维护gksu?
因此,从本质上讲,这使得gksu变得不必要,因为应用程序不再需要以特权用户身份运行,并且用户身份验证由PolicyKit的Auth Agent完成。但是需要重构应用程序以采用这种新结构,并且在某些情况下,您所需要的确实是一些以root用户身份运行程序的东西。
这些问题是我认为您所处的状况的基础:
gksu
/ gksudo
。gksudo
Ubuntu中当前使用的是传统的sudo
)。gksu
从Ubuntu 18.04
一种方便的方法是创建一个专用.desktop
文件,或将命令添加到现有文件,并通过GUI(gksu)询问密码。在下面的示例中,我向Gedit启动器添加了以sudo特权运行Gedit和软件中心的命令。您将需要gksu
安装才能使用此设置:sudo apt-get install gksu
复制Gedit .desktop file in
/ usr / share / applications / to
〜/ .local / share / applications`:
cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
并打开以进行编辑(将其拖到打开的gedit窗口中)
查找以下行:Actions = Window; Document;
将命令名称添加到该行(这些不是您将在界面中看到的名称,仅用于文件中的内部引用)
Actions=Window;Document;gedit;Ubuntu Software Center;
在文件底部添加相应的部分:
[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;
关闭文件并将其拖动到启动器上
现在,您可以使用sudo特权运行gedit和软件中心:
gksu
/的机制gksudo
。因此,您的答案既好又必要!我只是希望OP也可以安装/修复polkit,因为我认为这将使OS以他们想要的方式工作。