【问题标题】:Unlock gnome-keyring from a temp dbus session从临时 dbus 会话中解锁 gnome-keyring
【发布时间】:2018-11-22 00:45:34
【问题描述】:

我正在尝试编写一个 python 应用程序,该应用程序可以从纯文本系统(无头机器)解锁 gnome-keyring 并检索凭据。我在这台机器上安装了gnome-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-sessiondbus-launch 的原始手册页说对纯文本系统使用“dbus-run-session”。

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

【问题讨论】:

    标签: python subprocess dbus python-keyring gnome-keyring-daemon


    【解决方案1】:

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

    通常这将涉及:

    • 提供dbus-daemon 配置文件以供使用。
    • 正在运行dbus-daemon --config-file=path/to/config --address=path/to/socket --nofork
    • 在您的程序环境中设置DBUS_SESSION_BUS_ADDRESS=unix:path/to/socket,然后再对密钥环进行任何操作。
    • 用钥匙圈做任何你想做的事。
    • 终止dbus-daemon 子进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2018-05-01
      • 2011-02-19
      • 2012-11-03
      • 1970-01-01
      相关资源
      最近更新 更多