Comment puis-je obtenir des mots de passe du trousseau de clés dans le terminal pour les utiliser dans des scripts?

28

Lorsque vous avez un LUKSlecteur chiffré dans votre ordinateur, Nautilusou que vous Nemol'afficherez en Devicestant que lecteur avec un petit verrou dessus.

Lorsque vous cliquez dessus, vous devez saisir un mot de passe. Si vous le souhaitez remember this password forever, il est enregistré dans votre trousseau de clés. Au prochain démarrage, cliquer sur le lecteur le montera immédiatement.

Comment «monter immédiatement» un tel lecteur pour lequel la phrase secrète est stockée dans le trousseau de clés, à partir du terminal? Je veux avoir un script de démarrage automatique qui montera mon lecteur LUKS lorsque je me connecte. Je ne veux pas stocker ma phrase secrète dans le script, je veux utiliser la phrase secrète du trousseau de clés:

Si vous allez à Passwords And Keys, il y a un tas de clés sans nom. Dans leurs propriétés, vous pouvez trouver une description comme gvfs-luks-uuid=xxxxxxxxxxxxet aussi le mot de passe pour ce lecteur LUKS. C'est ce qu'Ubuntu utilise.

Une option à laquelle j'ai pensé est, python-gnomekeyringmais elle ne peut obtenir que le nom de clé et le mot de passe. J'ai besoin de ce que l'interface graphique appelle «Détails techniques» pour obtenir le mot de passe pour un uuidfichier spécifique car le nom de clé est toujours vide.

Redsandro
la source

Réponses:

29

Vous pouvez utiliser des outils secrets pour stocker et récupérer le mot de passe à partir du trousseau de clés.

Pour enregistrer un nouveau mot de passe:

secret-tool store --label='Password for mydrive' drive mydrive

Je vous laisse vérifier dans le trousseau de clés comment il apparaît. Pour le rechercher (cette commande peut facilement être insérée dans votre script):

secret-tool lookup drive mydrive
Aurelien
la source
Notez que le secret de secret-tool est que vous ne pouvez pas être root pour travailler les exemples!
Paul Flint
1
Lien mort - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Matthew
9

Je pense que la seule réponse est à travers python, mais il y a deux bugs qui rendent les choses difficiles.

  1. Vous devez donner manuellement les noms de vos clés (Seahorse: Descriptions) car les détails d'identification que les autres applications utilisent ne sont pas disponibles dans la version python. J'ai créé un rapport de bogue ici: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Ces descriptions sont vides dans Seahorse dans le cas spécifique des clés LUKS, mais la modification de la description vide modifie en fait le nom de la clé afin que vous puissiez la rechercher en python. J'ai créé un rapport de bogue ici: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

Si vous travaillez avec des scripts et des trousseaux de clés, veuillez mentionner que ces bogues vous affectent également.

Quant à la pythonpartie, voici un exemple:

#!/usr/bin/env python

import gnomekeyring as gk

keyring = 'login'
keyItems = gk.list_item_ids_sync(keyring)

for keyItem in keyItems:
    key = gk.item_get_info_sync(keyring, keyItem)
    if  key.get_display_name() == 'KeyName you are looking for':
        # Your script here using key.get_secret()
        print "Password:", key.get_secret()

Si vous connaissez un autre moyen, par exemple via des commandes bash simples, veuillez nous le faire savoir.

Redsandro
la source
1
Un exemple python3?
Khurshid Alam
2

Utilisez Python Keyring Lib

Il dispose d'une interface de ligne de commande pratique à utiliser dans les scripts shell.

Installation

pip install keyring

Définition et obtention des clés

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
HarlemSquirrel
la source