c - 是否可以将密码传递给需要 root 权限的进程

标签 c linux qt process root

假设我使用 QProcess 启动了一个进程 p1。进程 p1 需要 root 权限,所以我们可以在没有人为干预的情况下将密码传递给进程 p1,当然密码是从某个位置读取的

最佳答案

您可以考虑使用 setuid可能有一个辅助可执行文件的技巧,由您的应用程序启动,它是 setuid root 并运行适当的东西。

这样做时要小心,如果您不小心编码,就会存在安全风险。您应该确保此内部帮助程序可执行文件仅由您的应用程序启动。 (它可以与之通信,例如通过管道或其他 IPC)。

(您也可以非常小心地配置 sudosuper)

请注意 setuid 很棘手。我强烈建议阅读有关它的几个文档, 特别是 Advanced Unix ProgrammingAdvanced Linux Programming .并仔细阅读它们数次。也仔细阅读execve(2)credentials(7)手册页(和其他)。对 setuid 的误解是一个巨大的安全隐患。

不要忘记使用 setuid 技巧来最小化程序。特别是,不要让整个 Qt 应用程序设置 setuid,只需设置一个小的帮助程序 setuid。

关于c - 是否可以将密码传递给需要 root 权限的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613232/

相关文章:

linux - 逻辑地址(虚拟地址空间)而不是物理地址空间的原因

c++ - 如何使用 c++ 使用 v4l2 API 连续捕获 h264 视频?

qt - 将外部SQLite数据库导入我的项目

c++ - movetothread 可访问

c++ - 为什么我能够创建一个复制构造函数并重载 QObject 子类的赋值运算符?

c - 游程代码解码中数组的奇怪行为

java - 在函数调用中,入口日志的数量远少于导出日志的数量。这是为什么?

linux - 自定义 bash 完成的提示

c - C中使用指针从字符串中提取子字符串

java - 为什么我们不应该在用户消息中提供用户提供的数据?可能存在任何威胁/攻击吗?