【问题标题】:Passing password from GUI to CLI on Linux.在 Linux 上将密码从 GUI 传递到 CLI。
【发布时间】:2013-02-05 18:08:03
【问题描述】:

我使用 C 语言在 Linux 中开发了一个具有命令行界面的应用程序。它完全是一个独立的应用程序。现在我也在使用 gtk 库在 C 中为它制作一个 GUI 界面。在 CLI 中,在某个操作之前,我的 CLI 应用程序等待密码(就像他们在 linux 中的 useradd 命令行实用程序中那样)。为此,我将创建一个带有密码字段的窗口,要求在 GUI 中输入密码。

我的问题是如何将密码从 GUI 传输到在 CLI 中等待密码的应用程序?我可以将从 GUI 获取的密码重定向到 CLI 进程的标准输入吗?

另外请告诉我我的方法是否正确或标准的做法是什么?

任何帮助将不胜感激。

【问题讨论】:

  • 您可以通过管道输入输入(如果 CLI 应用程序期望以这种方式输入),也可以将参数作为命令行参数输入。
  • 我不想将密码作为命令行参数的参数,因为它可能会危及安全性。
  • 您总是可以传入密码的加盐哈希。此外,作为命令行参数发送的未加密密码与通过管道传输到 CLI 应用程序的未加密密码一样存在安全漏洞。

标签: c linux user-interface command-line-interface stdin


【解决方案1】:

当然可以。我对 GTK 了解不多,但您可以简单地使用popen,这是肯定的。对于双向通信,请查看Can popen() make bidirectional pipes like pipe() + fork()?

【讨论】:

  • 谢谢。我已经阅读了 popen() 的手册页。如果我的理解有误,请纠正我:我将调用我的 CLI 应用程序作为来自 popen 的 shell 命令,并在其 'type' 参数中给出“w”作为参数,然后将密码写入此写入管道。
  • 没错。但是,更清楚地考虑您的用例,我认为您可能在某些时候需要双向通信,无论出于何种原因。如果是这样的话,看看stackoverflow.com/questions/3884103/…
  • 我认为你是对的。在这种情况下,我可能需要双向通信。
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 2012-10-02
  • 2018-03-14
相关资源
最近更新 更多