User Tools

Site Tools


linux:security:keyring

This is an old revision of the document!


Linux Keyring

Here's a few tips on using the Linux Keyring.


secret-tool

Store and retrieve passwords from the keyring.

Install

  • sudo apt install libsecret-tools

Description

From man secret-tool

Each password is stored in an item. Items are uniquely identified by a set of attribute keys and values. When storing a password you must specify unique pairs of attributes names and values, and when looking up a password you provide the same attribute name and value pairs.

  • --label = Mainly for GUI programs but can be used to retrieve a given secret.
  • {attribute} = Used by the secret-tool for retrieving or deleting a given secret.
  • {value} = Used by the secret-tool for retrieving or deleting a given secret.

Usage

Add an entry

secret-tool store --label='My Label' {attribute} {value} {attribute2} {value2} [...]
Password:

Get a password

secret-tool lookup {attribute} {value} {attribute2} {value2} [...]
P4s$W0rd

Show entries with simialr key/values

secret-tool search --all {attribute} {value} {attribute2} {value2} [...]
[/org/freedesktop/secrets/collection/TestDB/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
label = test2
secret = P4s$W0rd
created = 2020-05-08 17:58:08
modified = 2020-05-08 21:16:04
schema = (null)
attribute.Path = /test2
attribute.Uuid = 04706d96b2404a2f96de02a8a76bf113
attribute.UserName = chuck
attribute.URL = 
attribute.Notes = 
attribute.Title = test2
attribute.Key1 = Value1
attribute.Key2 = Value2

Delete an entry

secret-tool clear {attribute} {value} {attribute2} {value2} [...]
# Popup from KeePassXC: 
Do you really want to move entry "test2" to the recycle bin?
                                            <MOVE> <CANCEL>

Additional search terms

Can create values and search them:

secret-tool search --all Title name
secret-tool search --all UserName name
secret-tool search --all URL https://www.url.com
secret-tool search --all Notes value
secret-tool search --all {attribute} {value} [...]

Tips

  • Set an alias in ~/.bash_aliases:
    alias get_password1='secret-tool lookup {attribute} {value} {attribute2} {value2}'
  • Use in docker:
    # "The operator can set any environment variable in the container by using one or more -e flags"
    docker run -it --rm \
      -e AWS_ACCESS_KEY_ID=$(aws-key-id) \
      -e AWS_SECRET_ACCESS_KEY=$(aws-key-secret) \
      local/aws-shell

keyring

Python-Keyring command-line utility: https://pypi.org/project/keyring/

Install

  • sudo apt install python3-keyring

Description

From man keyring

keyring provides a way to store, lookup and delete passwords in various backends supported by Python-Keyring.


Usage

Python

You can set/get entries from a Python script or from the Python terminal

Add an entry
keyring.set_password("system", "username", "password")

# Same as above but ask for the password
keyring.set_password('twitter', 'xkcd', getpass.getpass())
Get a password
keyring.get_password("system", "username")

CLI

You can set/get entries directly from the command line or from bash scripts, etc.

  • keyring --help
  • keyring set SERVICE USERNAME
  • keyring get SERVICE USERNAME
  • keyring del SERVICE USERNAME

Details

The commands above will set the following attributes on an entry:

  • For example, running:
    • keyring set twitter chuckn246
  • Will create an entry with the Title:
    • Password for 'chuckn246' on 'twitter'
  • Will set these attributes on the entry:
    • application: Python keyring library
    • service: twitter
    • username: chuckn246
Small Gotcha
  • Note that the attribute username is different than the entry UserName (Note capitalization).
    secret-tool search service twitter
    [/org/freedesktop/secrets/collection/TestDB/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
    label = Password for 'chuckn246' on 'twitter'
    secret = twitterpassword
    created = 2020-05-08 22:17:06
    modified = 2020-05-08 22:17:06
    schema = (null)
    attribute.Path = /Password for 'chuckn246' on 'twitter'
    attribute.Uuid = 3174d145b5e74435ab15cf45a5d805cb
    attribute.UserName = chuck
    attribute.service = twitter
    attribute.URL = 
    attribute.Notes = 
    attribute.application = Python keyring library
    attribute.username = chuckn246
    attribute.Title = Password for 'chuckn246' on 'twitter'

linux/security/keyring.1590420079.txt.gz · Last modified: by chuck