假设我使用 QProcess 启动一个进程 p1。进程 p1 需要 root 权限,所以我们可以在没有人为干预的情况下将密码传递给进程 p1,当然密码是从某个位置读取的
问问题
188 次
2 回答
2
您可能会考虑使用setuid技巧来获得一个由您的应用程序启动的帮助程序可执行文件,它是 setuid root 并运行适当的东西。
这样做时要小心,如果您不非常仔细地编码,则会存在安全风险。您应该确保此内部辅助程序可执行文件仅由您的应用程序启动。(它可以与它通信,例如通过管道或其他 IPC)。
(您也可以配置sudo
或super
非常仔细)
请注意,这setuid
很棘手。我强烈建议阅读一些关于它的文档,特别是Advanced Unix Programming和Advanced 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 回答