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-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 很可能会开始为软件中心和其他此类实用程序工作。
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.
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提供的包裹。它是一个图形前端
sudo。
通常gksudo用于以 root 用户(或除启动它们的用户之外的其他用户)运行图形应用程序。但是您也可以使用它来运行非图形命令——前提是这些命令可以使用sudo.
您可以gksudo从终端运行,但不是必须的。您可以从Alt+ F2(运行命令)对话框中运行它,也可以将它放在文件的Exec=行中.desktop(或运行图形程序的任何其他方式)。
请注意,gksudo即使从终端运行图形应用程序,您也应该考虑使用以 root 身份运行图形应用程序,因为诸如sudo ...where ...is a graphics application 之类的命令实际上可能会破坏运行它们的非 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(和上游版本,带有屏幕截图),this answer和that answer了解一些细节。sudovs. polkit (一些技术细节,只有你感兴趣)一个新的gksu/gksudo将使用 polkit 而不是sudo完成它的工作,尽管这个版本还没有被广泛采用。我主要是在它的源代码(由Gustavo Noronha Silva编写)中提出来推荐该README文件,它解释了sudo和polkit之间的重要区别。简单引用一下:
PolicyKit 解决了应用程序需要更高权限的问题,提供了让用户验证自己和应用程序验证身份验证和授权信息的工具。应用程序的结构必须使所有特权操作都由(最好)小型 D-Bus 服务完成,该服务由非特权代码控制。执行的所有“操作”都需要适当的授权,这是通过 Policykit 处理的。
4、为什么要维护gksu?
因此,这实质上使 gksu 变得不必要,因为应用程序不再需要以特权用户身份运行,并且用户身份验证由 PolicyKit 的身份验证代理完成。但是应用程序需要重构以采用这种新结构,并且在某些情况下,您想要的确实是以 root 身份运行程序的东西。
这些问题构成了我认为您所处的情况的基础:
gksu/ gksudo。gksudo目前在 Ubuntu 中使用的是传统的sudo)。一种方便的方法是创建一个专用.desktop文件,或将您的命令添加到现有文件中,通过 GUI (gksu) 询问您的密码。在下面的示例中,我将使用 sudo 权限运行 Gedit 和软件中心的命令添加到 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
Run Code Online (Sandbox Code Playgroud)
并打开它进行编辑(将其拖到打开的 gedit 窗口中)
寻找这一行: Actions=Window;Document;
将您的命令名称添加到行中(这些不是您将在界面中看到的名称,仅用于文件中的内部参考)
Actions=Window;Document;gedit;Ubuntu Software Center;
Run Code Online (Sandbox Code Playgroud)在文件底部添加相应的部分:
[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)关闭文件并将其拖到启动器上
现在您可以使用 sudo 权限运行 gedit 和软件中心:


| 归档时间: |
|
| 查看次数: |
21733 次 |
| 最近记录: |