Wie erhalte ich Passwörter vom Schlüsselbund im Terminal zur Verwendung in Skripten?

27

Wenn Sie ein LUKSverschlüsseltes Laufwerk in Ihrem Computer haben Nautilusoder Nemoes Devicesals Laufwerk mit einem kleinen Schloss darunter anzeigen.

Wenn Sie darauf klicken, müssen Sie ein Passwort eingeben. Wenn Sie dies wünschen, remember this password foreverwird es auf Ihrem Schlüsselbund gespeichert. Wenn Sie beim nächsten Start auf das Laufwerk klicken, wird es sofort gemountet.

Wie kann ich ein solches Laufwerk, für das die Passphrase im Schlüsselbund gespeichert ist, vom Terminal aus sofort "mounten"? Ich möchte ein Autostart-Skript haben, das mein LUKS-Laufwerk beim Anmelden einbindet. Ich möchte meine Passphrase nicht im Skript speichern, sondern die Passphrase aus dem Schlüsselring verwenden:

Wenn Sie gehen Passwords And Keys, gibt es eine Reihe von namenlosen Schlüsseln. In ihren Eigenschaften finden Sie eine Beschreibung wie gvfs-luks-uuid=xxxxxxxxxxxxund auch das Passwort für das LUKS-Laufwerk. Dies ist, was Ubuntu verwendet.

Eine Option, über die ich nachgedacht habe, ist python-gnomekeyring, dass nur der Schlüsselname und das Kennwort abgerufen werden können. Ich benötige das, was die GUI "Technische Details" nennt, um das Passwort für eine bestimmte zu erhalten, uuidda der Schlüsselname immer leer ist.

Redsandro
quelle

Antworten:

28

Sie können geheime Tools verwenden , um das Kennwort auf dem Schlüsselring zu speichern und abzurufen.

So speichern Sie ein neues Passwort:

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

Ich lasse Sie im Schlüsselbund überprüfen, wie es aussieht. Zum Nachschlagen (dieser Befehl kann einfach in Ihr Skript eingefügt werden):

secret-tool lookup drive mydrive
Aurelien
quelle
Beachten Sie, dass das Geheimnis zu Geheimnis-Tool ist, dass Sie nicht root sein können, um die Beispiele zu arbeiten!
Paul Flint
1
Toten Link - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Matthew
9

Ich denke, die einzige Antwort ist durch python, aber es gibt zwei Fehler, die die Dinge schwer machen.

  1. Sie müssen Ihren Schlüsselnamen manuell zuweisen (Seahorse: Descriptions), da in der Python-Version keine Details zur Identifizierung anderer Anwendungen verfügbar sind. Ich habe hier einen Fehlerbericht erstellt: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Diese Beschreibungen sind in Seahorse im speziellen Fall von LUKS-Schlüsseln leer. Wenn Sie jedoch die leere Beschreibung ändern, ändert sich auch der Schlüsselname, sodass Sie in Python danach suchen können. Ich habe hier einen Fehlerbericht erstellt: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

Wenn Sie mit Skripten und Schlüsselringen arbeiten, erwähnen Sie bitte, dass diese Fehler auch Sie betreffen.

Zum pythonTeil hier ein Beispiel:

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

Wenn Sie eine andere Möglichkeit kennen, z. B. durch einfache Bash-Befehle, teilen Sie uns dies bitte mit.

Redsandro
quelle
1
Ein Python3-Beispiel?
Khurshid Alam
2

Verwenden Sie Python Keyring Lib

Es verfügt über eine komfortable CLI zur Verwendung in Shell-Skripten.

Installation

pip install keyring

Schlüssel setzen und holen

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