0

我正在尝试编写一个可以从纯文本系统(无头机器)解锁并检索凭据的python应用程序。gnome-keyringgnome-keyring在这台机器上安装了这个包。

基本上,我的应用程序将:

  1. 开始一个新的 dbus 会话
  2. 在该 dbus 会话中解锁 gnome-keyring
  3. 从密钥环中提取凭据
  4. 销毁 dbus 会话总线

我正在尝试遵循本教程:https ://pypi.org/project/keyring/#using-keyring-on-headless-linux-systems

我尝试阅读:Python DBUS SESSION_BUS - X11 dependency但是,OP 使用dbus-launch而不是dbus-run-session. 原始手册页dbus-launch说将“dbus-run-session”用于纯文本系统。

如果我使用 python 的子进程启动一个新的 dbus 会话,我如何在同一个 dbus 会话中运行步骤 #2?

4

1 回答 1

0

您将需要在下面的项目中生成第二个程序dbus-run-session,或者您需要使用除dbus-run-session运行您自己的会话总线之外的其他程序。dbus-run-session旨在在自己的总线上运行单个程序;一旦该程序终止,总线就会关闭。dbus-daemon因此,要么您需要提供第二个程序来执行计划中的第 2 步和第 3 步,要么您需要更明确地从顶级程序中设置和拆除您自己的实例,复制dbus-run-session.

通常这将涉及:

  • 提供dbus-daemon要使用的配置文件。
  • 运行dbus-daemon --config-file=path/to/config --address=path/to/socket --nofork
  • DBUS_SESSION_BUS_ADDRESS=unix:path/to/socket在对密钥环进行任何操作之前先在​​程序环境中进行设置。
  • 用钥匙圈做任何你想做的事。
  • 终止dbus-daemon子进程。
于 2018-11-22T08:20:43.657 回答