gpt4 book ai didi

linux - 验证 GTK 应用以 root 权限运行

转载 作者:IT王子 更新时间:2023-10-29 00:01:44 27 4
gpt4 key购买 nike

我有一个用于 Linux 的 UI 应用程序(使用 GTK)需要以 root 身份运行(它读取和写入/dev/sd*)。

我想知道应用程序是否可以使用操作系统提供的某些 API 来获取根权限,而不是要求用户每次启动我的应用程序时都手动打开根 shell 或使用“sudo”。 (注意:gtk 应用程序不能使用“setuid”模式,所以这不是这里的一个选项。)

这里的优势是工作流程更简单:用户可以从他的默认用户帐户,从桌面双击我的应用程序,而不必打开根终端并从那里启动它。

我问这个是因为 OS X 提供了这个:应用程序可以要求操作系统启动具有根权限的可执行文件 - 操作系统(而不是应用程序)然后要求用户输入他的凭据,验证它们然后启动根据需要定位。

我想知道 Linux(例如 Ubuntu)是否有类似的东西

澄清:

所以,在 PolicyKit 的提示之后,我想知道我是否可以使用它来获得对“/dev/sd...” block 设备的读/写访问权限。我发现文档很难理解,所以我想在我花几个小时试图理解它之前先问这是否可能。

更新:

该应用程序是为不熟练的 Linux 用户提供的远程操作磁盘修复工具,那些 Linux 新手不会对使用 sudo 甚至更改用户的组成员身份有太多了解,尤其是当他们的磁盘刚刚开始出现问题并且他们'我吓坏了。这就是为什么我寻求一种避免此类技术问题的解决方案。

最佳答案

旧方法,简单但现在被淘汰,是GKSu . Here是关于GKSu future 的讨论。

新方法是使用PolicyKit .我不太确定这是如何工作的,但我认为您需要使用 pkexec 命令启动您的应用。

更新:

查看 http://hal.freedesktop.org/docs/polkit/polkit-apps.html 上的示例代码, 似乎您可以使用 PolicyKit 获取某些 操作 的授权,这些操作由 /usr/share/polkit-1/actions< 中的 .policy 文件描述。以另一个用户身份执行程序的操作是 org.freedesktop.policykit.exec。我似乎找不到直接访问 block 设备的操作,但我不得不承认,PolicyKit 文档也让我伤透了脑筋。

因此,也许最简单的做法是将需要特权的磁盘处理代码分离到命令行实用程序中,然后使用 g_spawn_[a]sync()< 从 GUI 应用程序运行它pkexec。这样您就不必为请求操作和诸如此类的事情而烦恼。无论如何,以 root 身份运行整个 GUI 应用程序可能是一种不好的做法。

另一个建议是直接询问 PolicyKit 的作者 (David Zeuthen)。或者尝试将您的问题发布到 gtk-app-devel 列表。

关于linux - 验证 GTK 应用以 root 权限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2400965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com