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

时间:2012-09-27 02:28:29

标签: c linux qt process root

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

2 个答案:

答案 0 :(得分:2)

您可以考虑使用setuid技巧来创建一个帮助程序可执行文件,由您的应用程序启动,它是setuid root并运行相应的东西。

请注意,如果您不仔细编码,则存在安全风险。您应确保此内部帮助程序可执行文件仅由您的应用程序启动。 (它可以与之通信,例如通过管道或其他IPC)。

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

请注意setuid很棘手。我强烈建议阅读几篇文章, 值得注意的是Advanced Unix ProgrammingAdvanced Linux Programming。并仔细阅读并多次阅读。还要仔细阅读execve(2)credentials(7)手册页(以及其他内容)。误解setuid是一个巨大的安全风险。

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

答案 1 :(得分:0)

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

除非您设法询问用户他们的密码(或后门登录或某些技术),否则您可能无法实现此特定活动。