假设我使用QProcess启动进程p1。进程p1需要root权限,因此我们可以在没有人为干预的情况下将密码传递给进程p1,当然密码是从某个位置读取的
答案 0 :(得分:2)
您可以考虑使用setuid技巧来创建一个帮助程序可执行文件,由您的应用程序启动,它是setuid root并运行相应的东西。
请注意,如果您不仔细编码,则存在安全风险。您应确保此内部帮助程序可执行文件仅由您的应用程序启动。 (它可以与之通信,例如通过管道或其他IPC)。
(您也可以非常仔细地配置sudo
或super
)
请注意setuid
很棘手。我强烈建议阅读几篇文章,
值得注意的是Advanced Unix Programming和Advanced Linux Programming。并仔细阅读并多次阅读。还要仔细阅读execve(2)和credentials(7)手册页(以及其他内容)。误解setuid是一个巨大的安全风险。
不要忘记使用setuid技巧最小化程序。特别是,不要让你的整个Qt应用程序setuid,只需制作一个小帮手程序setuid。
答案 1 :(得分:0)
通常不,不。当sudo请求密码时,Linux会获取用户提供的密码,然后对其进行加密/散列,并根据存储在/ etc / shadow中的散列对其进行测试。如果匹配,则授予权限。如果没有,没有bueno。
除非您设法询问用户他们的密码(或后门登录或某些技术),否则您可能无法实现此特定活动。