相关疑难解决方法(0)

验证GTK应用程序以使用root权限运行

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

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

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

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

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

澄清:

所以,在PolicyKit的提示后,我想知道我是否可以使用它来获得对"/ dev/sd ..."块设备的r/w访问.我觉得这篇文章很难理解,所以我想在我花费数小时试图理解它之前我先问这是否可能.

更新:

该应用程序是一个远程操作的磁盘修复工具,为不称职的Linux用户,这些Linux新手不会太多了解使用sudo甚至更改其用户的组成员身份,特别是如果他们的磁盘刚开始表现,他们吓坏了.这就是为什么我寻求避免像这样的技术性的解决方案.

linux gtk permissions root

12
推荐指数
1
解决办法
4119
查看次数

在Linux上为Qt应用程序获取root访问权的正确方法

美好的一天

背景:

我正在为Linux系统创建一个OpenVPN包装器应用程序,该应用程序即将完成.我遇到了一些障碍.

OpenVPN需要root访问权来修改路由表(添加和删除路由).这是事情变得模糊和混乱的地方.

希望通过扩展这个问题,可以分享一些行业标准答案和解决方案.

文档:

因此,经过几个小时的搜索,我编制了一个获取root访问权限的可能方法列表,但是似乎没有一个是官方的,也没有任何真正可靠的指导来获得这个SU特权.

让我们考虑以下方法.


1.使用pkexec和polkits

在此处此处查找官方freedesktop polkit文档,以获取有关最佳实践的一些信息

使用pkexec和polkits在线发现了一些教程 - 这里,这有助于我创建我的polkit文件.- SO Thread - 和一个可爱的Qt应用程序小教程

简要解释(我的理解)关于pkexecpolkits:

  • polkits:

polkits由行动和规则组成(参见深入阅读和解释的文件).它定义了应用程序的操作以及与之关联的规则.规则可以定义为属于特定组的用户,其中操作查询规则,成功传递规则,用户自动进行身份验证(没有弹出密码提示),否则他们需要输入管理员密码

  • pkexec:

用于与polkit操作进行交互并对应用程序进行身份验证以获取root访问权限的应用程序.

这些需要在其中添加动作/usr/share/polkit-1/actions//usr/share/polkit-1/rules.d/(在其他目录中,请参阅所有位置的文档)

这种方法似乎很好用(但需要更多的解释才能轻松理解,imo)

注意:有qt-polkit可供使用的库,请参阅其 github存储库

对于简单的TL; DR版本,请参阅此内容

我创建的polkit文件(注意这可能不正确,但它对我有用):

可以找到/添加的位置(还有其他位置)

/usr/share/polkit-1/actions
Run Code Online (Sandbox Code Playgroud)

策略工具包文件名:com.myappname.something.policy // .policy是必需的

注意:

com.myappname.something
Run Code Online (Sandbox Code Playgroud)

被称为政策的命名空间(阅读文档,这将不清楚)

政策套件内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
<policyconfig>
  <vendor>My App …
Run Code Online (Sandbox Code Playgroud)

c++ linux qt sudo root

5
推荐指数
1
解决办法
1047
查看次数

标签 统计

linux ×2

root ×2

c++ ×1

gtk ×1

permissions ×1

qt ×1

sudo ×1