假设我使用 QProcess 启动了一个进程 p1。进程 p1 需要 root 权限,所以我们可以在没有人为干预的情况下将密码传递给进程 p1,当然密码是从某个位置读取的
最佳答案
您可以考虑使用 setuid可能有一个辅助可执行文件的技巧,由您的应用程序启动,它是 setuid root 并运行适当的东西。
这样做时要小心,如果您不小心编码,就会存在安全风险。您应该确保此内部帮助程序可执行文件仅由您的应用程序启动。 (它可以与之通信,例如通过管道或其他 IPC)。
(您也可以非常小心地配置 sudo
或 super
)
请注意 setuid
很棘手。我强烈建议阅读有关它的几个文档,
特别是 Advanced Unix Programming和 Advanced Linux Programming .并仔细阅读它们数次。也仔细阅读execve(2)和 credentials(7)手册页(和其他)。对 setuid 的误解是一个巨大的安全隐患。
不要忘记使用 setuid 技巧来最小化程序。特别是,不要让整个 Qt 应用程序设置 setuid,只需设置一个小的帮助程序 setuid。
关于c - 是否可以将密码传递给需要 root 权限的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613232/