我发现这篇文章是关于从命令行从gnome密钥环获取密码的(我如何从终端的密钥环获取密码以在脚本中使用?),并且发现秘密工具是解决之道。我可以使用secret-tool存储密码是很棒的,但是我似乎无法弄清楚如何查找使用seahorse存储的现有密码,这是我真正希望做的。我不知道我将需要使用什么属性和值来查询它们,并且手册页对于这些可能是什么还很含糊。
我发现这篇文章是关于从命令行从gnome密钥环获取密码的(我如何从终端的密钥环获取密码以在脚本中使用?),并且发现秘密工具是解决之道。我可以使用secret-tool存储密码是很棒的,但是我似乎无法弄清楚如何查找使用seahorse存储的现有密码,这是我真正希望做的。我不知道我将需要使用什么属性和值来查询它们,并且手册页对于这些可能是什么还很含糊。
Answers:
好吧,在进一步研究之后,似乎海马没有为“存储的密码”分配任何属性(我敢肯定,秘密工具无法在没有任何属性的情况下找不到密码)。我认为是这样的原因是,在海马中创建一个后,我查看了properties-> details,没有任何细节(即属性)。不过,我在海马中发现了其他一些详细信息,并且可以使用这些属性在秘密工具中查找它们。
看来,解决方案是使用secret-tool创建密码,为以后的唯一查找分配适当的属性。由于它们都在后台使用gnome-keyring,因此在密码工具中创建新密码后,新密码就会出现在海马中。
侏儒密钥似乎很乐意用相同的标签创建多个密码(只是不完全相同的属性,如果它们完全相同,它将替换它),所以一旦重新创建,就可以删除来自海马的旧的没用的。
$ secret-tool store --label=DomainPassword user sjohnson domain some.domain
Password: thisismypa$$w0rd
$ secret-tool lookup user sjohnson domain some.domain
thisismypa$$w0rd
我最初不想使用密码工具存储密码的原因是,我不知道如何通过密码工具将其作为登录密码(登录时可用)。看起来,只要“登录”是您的默认密钥库,秘密工具就会将其存储在其中。
我制作了一个实用程序lssecret,它使用libsecret列出了所有项,包括所有GNOME Keyring项。看起来libsecret会自动为每个项目添加一个键值对,但是Seahorse不在GUI中显示它们。这是lssecret的一些示例输出:
Collection: Login
Item: Test Password
Secret: Tr0ub4dor&3
Key: xdg:schema
Value: org.gnome.keyring.Note
Item: secret-tool item
Secret: s3cret-t00l
Key: my key
Value: my value
Key: xdg:schema
Value: org.freedesktop.Secret.Generic
Item: Unlock password for: cueball@xkcd.com
Secret: correct horse battery staple
Key: unique
Value: ssh-store:/home/cueball/.ssh/id_rsa
Key: xdg:schema
Value: org.freedesktop.Secret.Generic
Item: Network secret for GenericSSID/802-1x/password
Secret: S3cureW1f1Passw0rd
Key: setting-name
Value: 802-1x
Key: connection-uuid
Value: 6a762552-04b3-cd05-45ba-586688e0a029
Key: xdg:schema
Value: org.freedesktop.NetworkManager.Connection
Key: setting-key
Value: password
GNOME密钥环将每个密钥环存储为秘密服务中的集合。您可以在输出中看到默认的密钥环Login。这些项目代表:
secret-tool --label="secret-tool item" "my key" "my value"
,然后在提示中键入“ s3cret-t00l”。如您所见,使用Seahorse添加到密钥环的密码的密钥值对为“ xdg:schema”和“ org.gnome.keyring.Note”。您可以使用将它们全部列出secret-tool search --all xdg:schema org.gnome.keyring.Note
。