Shell 读写 Gnome 密钥环,不影响现有客户端的方法
2024-03-01 19:10:09
从 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
步骤详解
-
检查密钥环状态:
首先,检查你的密钥环是否已解锁。如果解锁,则 dbus 命令将返回成功消息。
-
运行私有 gnome-keyring-daemon 实例:
如果密钥环已锁定或不存在,运行此命令以启动一个私有 gnome-keyring-daemon 实例。
-
设置环境变量:
设置环境变量以指定私有 gnome-keyring-daemon 实例的进程 ID 和 D-Bus 会话总线地址。
-
使用 secret-tool:
secret-tool 可以让你与私有 gnome-keyring-daemon 实例进行交互。使用 store 命令存储密码,使用 lookup 命令检索密码。
-
关闭私有 gnome-keyring-daemon 实例:
完成后,关闭私有实例以释放资源。
提示
- 确保你的 shell 会话具有访问私有实例所需的权限。
- 避免同时运行多个 gnome-keyring-daemon 实例。
- 可以在 shell 脚本中自动化这些步骤。
常见问题解答
-
如何设置主密码?
设置主密码需要使用 seahorse 或其他 GUI 工具,无法通过本文的方法实现。
-
我的密码是否安全?
密码存储在 gnome-keyring-daemon 管理的安全存储中,但与任何其他存储一样,安全性取决于系统和用户的整体安全性。
-
我可以从其他计算机访问密码吗?
否,本文的方法仅适用于本地计算机上的 shell 会话。
-
为什么我无法在 shell 会话中使用现有密码?
Gnome 密钥环管理器旨在保护密码免受未经授权的访问,因此你需要使用本文描述的方法解锁或创建私有实例才能访问密码。
-
是否可以使用其他工具来实现此目的?
有其他工具可以与 gnome-keyring-daemon 交互,但本文重点介绍了一种不干扰现有客户端的方法。