0

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

4

2 回答 2

2

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

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

(您也可以配置sudosuper非常仔细)

请注意,这setuid很棘手。我强烈建议阅读一些关于它的文档,特别是Advanced Unix ProgrammingAdvanced Linux Programming。并仔细阅读了几遍。另请仔细阅读execve(2)credentials(7)手册页(以及其他)。误解 setuid 是一个巨大的安全风险。

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

于 2012-09-27T03:59:10.713 回答
0

通常不会,不会。当 sudo 请求密码时,Linux 获取用户提供的密码,然后对其进行加密/散列,并针​​对存储在 /etc/shadow 中的散列对其进行测试。如果匹配,则授予权限。如果没有,没有布埃诺。

除非您设法向用户询问他们的密码(或后门登录或某种此类技术),否则您可能不会完成此特定活动。

于 2012-09-27T02:32:40.250 回答