<分区>
我需要在我的程序中管理 Linux 用户帐户,因此我实际上需要某种 root 访问权限,但为该程序提供 root 权限并不是最佳解决方案。
我怎样才能以一种保存的方式管理它。至少我不知道多进程架构。
对于整个“通用的东西”,我使用 Qt。只有操作系统特定的东西是我自己的。
<分区>
我需要在我的程序中管理 Linux 用户帐户,因此我实际上需要某种 root 访问权限,但为该程序提供 root 权限并不是最佳解决方案。
我怎样才能以一种保存的方式管理它。至少我不知道多进程架构。
对于整个“通用的东西”,我使用 Qt。只有操作系统特定的东西是我自己的。
最佳答案
实现权限分离的“经典”解决方案是这样工作的:
结果将是您的主进程没有特殊权限,但您有一个具有 root 权限的子进程,它通过这些套接字连接到您的主进程。这些套接字是“未命名的”,这意味着没有其他程序可以访问它们。
当然,您仍然有些容易受到攻击。即使您的代码在您到达 fork() 之前是“安全的”,攻击者仍然可以稍后进入您的主程序,并向特权进程发送命令。即使子进程擅长验证其输入并且不会受到损害,攻击者发出有效命令时仍然会导致问题 - 就像您的情况一样,攻击者可能会创建新帐户,甚至可能是具有 uid 的帐户0.
关于c++ - 处理应该能够管理 linux 用户帐户的程序的用户权限的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746777/
相关文章:
c - 如何修复 Ubuntu 15 上 libudev 的链接器错误
c++ - QObject* 列表的内存管理导致 QML 中出现 "Cannot read property X of null"错误
c - OpenCV cvHaarDetectObject 错误
c++ - 如何将图标设置为 QDialogButtonBox 中的新按钮?
C++应用程序仅在使用本地Windows调试器时运行,而不是哪个exe文件
c++ - 如果从 dlopen 的库中调用 dlopen() 是否存在负载泄漏?
linux - unix - chmod 文件的默认 future 权限
c++ - Visual Studio 生成 "Error: uninitialized local variable ' x' "而在线编译器不生成 - 为什么?