返回

Shell 读写 Gnome 密钥环,不影响现有客户端的方法

Linux

从 Shell 读写 Gnome 密钥环管理器中的密码,不破坏现有客户端

问题

如何在不影响现有 Gnome 密钥环管理器客户端的情况下,从 shell 会话读取或存储保存在可能被锁定的密钥环中的密码?

解决方案:

1. 检查密钥环状态

dbus-send --system --print-reply --dest=org.freedesktop.secrets /org/freedesktop/secrets org.freedesktop.secrets.Manager.CheckPasswd

2. 运行私有 gnome-keyring-daemon 实例

gnome-keyring-daemon --daemonize --no-daemonize-on-exit --single-process

3. 设置环境变量

export GNOME_KEYRING_PID=$(pidof gnome-keyring-daemon)
export DBUS_SESSION_BUS_ADDRESS=$(dbus-launch --auto-syntax)

4. 使用 secret-tool

secret-tool store --label "My Password" user/my_password
secret-tool lookup user/my_password

5. 关闭私有 gnome-keyring-daemon 实例

kill $GNOME_KEYRING_PID

步骤详解

  1. 检查密钥环状态:

    首先,检查你的密钥环是否已解锁。如果解锁,则 dbus 命令将返回成功消息。

  2. 运行私有 gnome-keyring-daemon 实例:

    如果密钥环已锁定或不存在,运行此命令以启动一个私有 gnome-keyring-daemon 实例。

  3. 设置环境变量:

    设置环境变量以指定私有 gnome-keyring-daemon 实例的进程 ID 和 D-Bus 会话总线地址。

  4. 使用 secret-tool:

    secret-tool 可以让你与私有 gnome-keyring-daemon 实例进行交互。使用 store 命令存储密码,使用 lookup 命令检索密码。

  5. 关闭私有 gnome-keyring-daemon 实例:

    完成后,关闭私有实例以释放资源。

提示

  • 确保你的 shell 会话具有访问私有实例所需的权限。
  • 避免同时运行多个 gnome-keyring-daemon 实例。
  • 可以在 shell 脚本中自动化这些步骤。

常见问题解答

  1. 如何设置主密码?

    设置主密码需要使用 seahorse 或其他 GUI 工具,无法通过本文的方法实现。

  2. 我的密码是否安全?

    密码存储在 gnome-keyring-daemon 管理的安全存储中,但与任何其他存储一样,安全性取决于系统和用户的整体安全性。

  3. 我可以从其他计算机访问密码吗?

    否,本文的方法仅适用于本地计算机上的 shell 会话。

  4. 为什么我无法在 shell 会话中使用现有密码?

    Gnome 密钥环管理器旨在保护密码免受未经授权的访问,因此你需要使用本文描述的方法解锁或创建私有实例才能访问密码。

  5. 是否可以使用其他工具来实现此目的?

    有其他工具可以与 gnome-keyring-daemon 交互,但本文重点介绍了一种不干扰现有客户端的方法。