有桌面中立的 gksudo 吗?

Oli*_*Oli 19 sudo gksu

各种桌面都有各种工具,旨在以 root 身份运行图形应用程序。gksudokdesudoempower,等...

但是如果我正在编写一个可以在任何 Linux 桌面上使用的脚本呢?有没有xdg-sudo某种..?在桌面环境中获得 sudo 访问权限的标准?

Mes*_*ion 17

按照@Tachyons 的建议,我研究了很多pkexec,这太棒了

  • 它是PolicyKit 的一部分,这是一个广泛使用的包。
  • freedesktop.org主办和赞助
  • GnomeUnityMATECinnamonKDELXDEXFCE以及其他可能的默认设置
  • 通过 D-Bus 工作,因此它完全独立于桌面,具有明确定义的协议。
  • 在许多 DE 中,它用于多种服务,如登录屏幕、关机/重启、磁盘管理(udisks/自动挂载)等。

所以是的,它满足所有要求,我想这是“通用 gksudo”最接近的东西。

也就是说,pkexec是 PolicyKit 的命令行前端。有2种基本操作模式:

  • 只需像使用 一样运行它,就会sudo得到一个很好的 GUI 提示:

    $ pkexec rm -rf /

pkexec GUI 提示

  • 或者为您的应用程序创建一个 PolicyKit 授权文件,将其放入/usr/share/polkit-1/rules.d.等。您可以以惊人的粒度微调您的设置。


Pad*_*dau 6

更通用的方法是编写“帮助程序”。这样的程序会提示用户输入密码;如果您确定安装了 Zenity,则可以使用它,否则您需要用 Python 或其他可以与 GUI 交互的程序编写帮助程序。

阅读sudo的手册-A(“askpass”)和-S(标准输入)选项。

请记住,当您sudo从脚本运行时,您需要-H(home) 选项来模拟gksudo.

这种方法效果很好,但您需要彻底测试帮助程序以确保它没有错误。