如何:非根QML前端和根特性的工作人员线程

how to: non-root qml frontend and root-privileged worker threads

本文关键字:工作人员 线程 非根 QML 前端 如何      更新时间:2023-10-16

i具有一个具有C /QT-BAKEND和基于QML的前端的应用程序。除了数据模型外,后端还包含一些工作线程(qthread(。工人线程必须高度特权才能完成工作(即文件操作(。到目前为止,我启动了Sudo的应用程序,以对工人获得高度的特权。由于sudo执行,整个应用程序以root的形式运行 - 因此,QML前端也很糟糕。因此,我的问题是,在使用基于QML的低特权前端(用户权利(的应用程序中获得高特权的工人线程的最佳方法是什么。

感谢您提前的帮助。

通常,您无法使用与应用程序的其余的用户一起运行线程。一个简单的原因是所有线程共享一个内存空间并写入特权线程的内存,您可以轻松地使其做任何您想做的事情。

现在,如何解决这个问题?要探索的第一件事是简单地设置资源权限,以便您不需要根。例如,创建一个组并使用普通Unix权限(chownchmod(或ACLS(setfacl(为组提供权限。然后,确保应用程序以作为组一部分的用户运行。

如果不可能,您仍然可以使用sudo启动后端,打开(!(所有必需的资源,然后删除特权。由于它们已经开放,因此您保留对它们的访问权限。如果您需要定期重新打开它们,至少您可以通过降低特权开始前端。