web-dev-qa-db-fra.com

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

Lorsque vous avez un lecteur LUKSsur votre ordinateur, Nautilusou Nemoapparaîtra sous Devicesen tant que lecteur avec un petit verrou.

Lorsque vous cliquez dessus, vous devez entrer un mot de passe. Si vous choisissez de remember this password forever, il sera enregistré dans votre trousseau de clés. Prochain démarrage, en cliquant sur le lecteur va immédiatement le monter.

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 souhaite disposer d'un script de démarrage automatique qui monte mon lecteur LUKS lorsque je me connecte. Je ne souhaite pas stocker ma phrase secrète dans le script. Je souhaite 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 telle que gvfs-luks-uuid=xxxxxxxxxxxx ainsi que le mot de passe de ce lecteur LUKS. C'est ce que Ubuntu utilise.

Une option à laquelle j'ai pensé est python-gnomekeyring mais 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 uuidcar le nom clé est toujours vide.

25
Redsandro

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

  1. Vous devez attribuer manuellement les noms de vos clés (Seahorse: Descriptions) car les informations d'identification utilisées par d'autres applications ne sont pas disponibles dans le python. version. 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 le fait de modifier la description vide modifie en réalité le nom de la clé afin que vous puissiez le rechercher en python. J'ai créé un rapport de bogue ici: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/11447

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

En ce qui concerne la partie python, 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 par de simples commandes bash, veuillez nous le faire savoir.

9
Redsandro

Vous pouvez utiliser secret-tools pour stocker et récupérer le mot de passe du trousseau de clés.

Pour stocker un nouveau mot de passe:

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

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

secret-tool lookup drive mydrive
27
Aurelien

Utilisez Python Keyring Lib

Il possède une interface de ligne de commande pratique à utiliser dans les scripts Shell.

Installation

pip install keyring

Réglage et obtention des clés

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