Jak uzyskać hasła z kluczy w terminalu do użytku w skryptach?

28

Gdy masz LUKSzaszyfrowany dysk w komputerze Nautiluslub Nemopokażesz go Devicesjako dysk z małą blokadą.

Po kliknięciu musisz wprowadzić hasło. Jeśli zdecydujesz remember this password forever, zostanie zapisany w twoim breloku. Kolejny rozruch, kliknięcie dysku spowoduje natychmiastowe zamontowanie go.

Jak „natychmiast zamontować” taki dysk, dla którego hasło jest przechowywane w breloczku, z terminala? Chcę mieć skrypt autostartu, który zamontuje dysk LUKS po zalogowaniu. Nie chcę przechowywać hasła w skrypcie, chcę użyć hasła z klucza:

Jeśli pójdziesz do Passwords And Keys, jest kilka bezimiennych kluczy. W ich właściwościach można znaleźć opis, gvfs-luks-uuid=xxxxxxxxxxxxa także hasło do tego dysku LUKS. Tego używa Ubuntu.

Jedną z opcji, o której myślałem, jest python-gnomekeyringto, że można uzyskać tylko klucz i hasło. Potrzebuję tego, co GUI nazywa „Szczegóły techniczne”, aby uzyskać hasło do konkretnego, uuidponieważ nazwa klucza jest zawsze pusta.

Redsandro
źródło

Odpowiedzi:

29

Możesz użyć tajnych narzędzi do przechowywania i odzyskiwania hasła z kluczy.

Aby zapisać nowe hasło:

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

Pozwalam ci sprawdzić, jak wygląda brelok. Aby to sprawdzić (to polecenie można łatwo wstawić do skryptu):

secret-tool lookup drive mydrive
Aurelien
źródło
Zauważ, że sekretem tajnego narzędzia jest to, że nie możesz być rootem, aby pracować z przykładami!
Paul Flint
1
Dead link - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Matthew
9

Wydaje mi się, że jedyną odpowiedzią jest odpowiedź python, ale są dwa błędy, które utrudniają pracę.

  1. Musisz ręcznie podać nazwy kluczy (konik morski: opisy), ponieważ dane identyfikacyjne używane przez inne aplikacje nie są dostępne w wersji python. Utworzyłem tutaj raport o błędzie: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Te opisy są puste w koniku morskim w konkretnym przypadku kluczy LUKS, ale zmiana pustego opisu w rzeczywistości zmienia nazwę klucza, dzięki czemu można go wyszukać w pythonie. Utworzyłem tutaj raport o błędzie: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

Jeśli pracujesz ze skryptami i brelokami, pamiętaj, że te błędy również na ciebie wpływają.

Jeśli chodzi o pythonczęść, oto przykład:

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

Jeśli znasz inny sposób, np. Za pomocą prostych poleceń bash, daj nam znać.

Redsandro
źródło
1
Przykład python3?
Khurshid Alam
2

Użyj biblioteki kluczy Python Lib

Posiada wygodny interfejs CLI do użytku w skryptach powłoki.

Instalacja

pip install keyring

Ustawianie i pobieranie kluczy

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
Harlem Wiewiórka
źródło