是否有桌面中性的 gksudo?

是否有桌面中性的 gksudo?

有各种适用于各种桌面的工具,旨在以 root 身份运行图形应用程序。,,,gksudo等等......kdesudoempower

但是,如果我编写的脚本可以在任何 Linux 桌面上使用,该怎么办?是否有xdg-sudo某种...?在桌面环境中获取 sudo 访问权限的标准?

答案1

根据@Tachyons的建议,我做了很多研究,结果pkexec如下惊人的

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

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

  • 只需像运行一样运行它sudo,您就会得到一个漂亮的 GUI 提示:

    $ pkexec rm -rfX /

pkexec GUI 提示符

  • 或者为您的应用程序创建一个 PolicyKit 授权文件,将其放入/usr/share/polkit-1/rules.d,它将允许大量自定义和安全相关的选项,例如仅对某些操作进行 root 访问,其他操作不需要密码,访问仅限于某些路径等。您可以以惊人的粒度微调您的设置。

答案2

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

阅读sudo手册以了解-A(“askpass”)和-S(stdin)选项。

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

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

答案3

不,没有任何标准的方式来获取 root(或任何其他用户)的权限。

如果您希望与尽可能多的系统兼容,请不要采取任何假设,而是告诉用户她/他必须以特定用户身份运行您的脚本。然后由用户/管理员配置系统,以便以正确的方式运行您的脚本。

对如何使用最常见的身份验证系统(如 su、sudo 和 ConsoleKit)提出一些建议会很好。

相关内容