Come posso ottenere le password dal portachiavi nel terminale per l'utilizzo negli script?


28

Quando hai un'unità LUKScrittografata nel tuo computer Nautiluso Nemola mostrerai Devicescome unità con un piccolo lucchetto.

Quando fai clic su di esso, devi inserire una password. Se lo desideri remember this password forever, viene salvato sul tuo portachiavi. Al prossimo avvio, facendo clic sull'unità verrà montata immediatamente.

Come posso "montare immediatamente" tale unità per la quale la passphrase è memorizzata nel portachiavi, dal terminale? Voglio avere uno script di avvio automatico che monterà la mia unità LUKS quando eseguo l'accesso. Non voglio memorizzare la mia passphrase nello script, voglio usare la passphrase dal keyring:

Se vai a Passwords And Keys, c'è un mazzo di chiavi senza nome. Nelle loro proprietà puoi trovare una descrizione simile gvfs-luks-uuid=xxxxxxxxxxxxe anche la password per quell'unità LUKS. Questo è ciò che utilizza Ubuntu.

Un'opzione a cui ho pensato è python-gnomekeyringma può solo ottenere il nome chiave e la password. Ho bisogno di ciò che la GUI chiama "Dettagli tecnici" per ottenere la password per uno specifico uuidperché il nome chiave è sempre vuoto.

Risposte:


29

È possibile utilizzare strumenti segreti per archiviare e recuperare la password dal portachiavi.

Per memorizzare una nuova password:

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

Ti lascio controllare nel portachiavi come appare. Per cercarlo (questo comando può essere facilmente inserito nel tuo script):

secret-tool lookup drive mydrive

Nota che il segreto di secret-tool è che non puoi essere root per lavorare sugli esempi!
Paul Flint,

1
Dead link - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Matteo,

9

Penso che l'unica risposta sia attraverso python, ma ci sono due bug che rendono le cose difficili.

  1. È necessario assegnare manualmente i nomi delle chiavi (Seahorse: Descrizioni) poiché i dettagli identificativi utilizzati da altre applicazioni non sono disponibili nella versione Python. Ho creato una segnalazione di bug qui: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Queste descrizioni sono vuote in Seahorse nel caso specifico delle chiavi LUKS, ma cambiando la descrizione vuota si cambia il nome della chiave in modo da poterlo cercare in Python. Ho creato una segnalazione di bug qui: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

Se stai lavorando con script e portachiavi, tieni presente che anche questi bug influiscono su di te.

Per quanto riguarda la pythonparte, ecco un esempio:

#!/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()

Se conosci altri modi, ad esempio tramite semplici comandi bash, faccelo sapere.


1
Un esempio di python3?
Khurshid Alam,

2

Usa Python Keyring Lib

Ha una comoda CLI da utilizzare negli script di shell.

Installazione

pip install keyring

Impostare e ottenere le chiavi

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.