如何:非根QML前端和根特性的工作人员线程
how to: non-root qml frontend and root-privileged worker threads
i具有一个具有C /QT-BAKEND和基于QML的前端的应用程序。除了数据模型外,后端还包含一些工作线程(qthread(。工人线程必须高度特权才能完成工作(即文件操作(。到目前为止,我启动了Sudo的应用程序,以对工人获得高度的特权。由于sudo执行,整个应用程序以root的形式运行 - 因此,QML前端也很糟糕。因此,我的问题是,在使用基于QML的低特权前端(用户权利(的应用程序中获得高特权的工人线程的最佳方法是什么。
感谢您提前的帮助。
通常,您无法使用与应用程序的其余的用户一起运行线程。一个简单的原因是所有线程共享一个内存空间并写入特权线程的内存,您可以轻松地使其做任何您想做的事情。
现在,如何解决这个问题?要探索的第一件事是简单地设置资源权限,以便您不需要根。例如,创建一个组并使用普通Unix权限(chown
,chmod
(或ACLS(setfacl
(为组提供权限。然后,确保应用程序以作为组一部分的用户运行。
如果不可能,您仍然可以使用sudo
启动后端,打开(!(所有必需的资源,然后删除特权。由于它们已经开放,因此您保留对它们的访问权限。如果您需要定期重新打开它们,至少您可以通过降低特权开始前端。
相关文章:
- C++为线程工作动态地分割例程
- 自 Windows 10 20H1 以来,具有单独线程的多个窗口停止工作
- 餐饮哲学家问题 - 只有 2 个线程工作
- 工作线程在执行太快后永久休眠
- 唤醒多个线程以在每个条件下工作一次
- Qt::D irectConnection在多线程环境中使用时如何工作?
- ZeroMQ 在使用 std::thread 创建工作线程时崩溃
- 工作线程一直在等待,condition_variable甚至调用了notify_all
- 使用 std::atomic 标志和 std::condition_variable 在工作线程上等待
- SIGABRT 和线程相关的异常,但在调试期间工作正常
- 将正常函数的工作分配给多个线程是否安全
- boost信号和插槽在不同的线程中不工作(使用boost::asio::io_service)
- tbb::enumerable_thread_specific在其他线程库中工作吗
- Qt-工作线程崩溃时将cv::Mat转换为QImage
- 无法将接口从主线程封送到工作线程
- 如何:非根QML前端和根特性的工作人员线程
- 为什么我的工作人员线程未收到此信号
- 信号处理程序和图书馆工作人员线程
- 非CS人员需要了解线程是如何工作的,因为它与多核处理器有关
- 我应该使用静态工作池还是动态工作池(线程)