我正在编写一个跨平台应用程序,我想在基于 Linux 的操作系统(如 Fedora 和 Ubuntu)上运行。我使用QSerialPort
它,它工作正常。我可以QSerialPortInfo
用来获取系统中的串行端口列表,并将它们呈现给可以选择他/她想要使用的用户。
但是,在 Linux 系统上,默认情况下用户没有串行端口的权限。我知道运行我的应用程序是错误的,而且我也知道每次使用应用程序时sudo
要求用户手动在串行端口上运行是不友好的。chmod 666
所以我环顾四周,在我看来 polkit 是答案,但是我找不到任何可以告诉我如何做到这一点的示例。
你能告诉我如何使用 polkit(以前称为 policykit)来请求我的应用程序使用特定串行端口的权限吗?
编辑:
我正在寻找的是一种方法:
- 检查用户是否可以访问串口
- 如果没有,弹出一个请求权限的对话框(例如 Gnome 设置应用程序)
- 如果用户成功通过身份验证,则使串行端口可用于应用程序。
还有一些想法
- 我不想设置一个允许每个串行端口的 udev 规则
- 我不想让用户运行脚本
- 我不希望我的应用以超级用户身份运行
- 我不希望以 root 身份执行任何其他操作,只是串行端口访问
是的,我找到了官方的 polkit 文档,但他们对如何做到这一点不是很清楚。