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