Как мне получить пароли от связки ключей в терминале для использования в скриптах?

Если на вашем компьютере есть зашифрованный диск LUKS, Nautilus или Nemo отобразит его в разделе Devices как диск с небольшой блокировкой.

Когда вы щелкаете по нему, вам нужно ввести пароль. Если вы выберете remember this password forever, он будет сохранен в вашем наборе ключей. При следующей загрузке щелчок по диску сразу же смонтирует его.

Как мне «немедленно смонтировать» такой терминал, для которого фраза-пароль хранится в связке ключей из терминала? Я хочу иметь сценарий автозапуска, который будет монтировать мой диск LUKS при входе в систему. Я не хочу сохранять свою фразу-пароль в сценарии, я хочу использовать эту фразу-пароль из набора ключей:

Passwords And Keys, есть куча безымянных ключей. В их свойствах вы можете найти описание, например gvfs-luks-uuid=xxxxxxxxxxxx, а также пароль для этого диска LUKS. Это то, что использует Ubuntu.

Один вариант, о котором я подумал, это python-gnomekeyring, но он может получить только имя и пароль. Мне нужно то, что в GUI называется «Техническая информация», чтобы получить пароль для конкретного uuid, потому что имя ключа всегда пусто.

26
задан 1 March 2013 в 19:33

3 ответа

Использовать Python Keyring Lib

Имеет удобный CLI для использования в скриптах оболочки.

Установка

pip install keyring

Установка и получение ключей

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
0
ответ дан 1 March 2013 в 19:33

Вы можете использовать секретные инструменты для хранения и извлечения пароля из набора ключей.

Чтобы сохранить новый пароль:

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

Я позволю вам проверить, как он выглядит. Чтобы найти его (эту команду легко вставить в ваш скрипт):

secret-tool lookup drive mydrive
0
ответ дан 1 March 2013 в 19:33

Я думаю, что единственный ответ - через python, но есть две ошибки, которые усложняют ситуацию.

  1. Вам необходимо вручную дать имена ваших ключей (Seahorse: Describes), потому что идентифицирующие детали, которые используют другие приложения, недоступны в версии Python. Я создал отчет об ошибке здесь: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Эти описания пусты в Морской конек в конкретном случае ключей LUKS, но изменение пустого описания действительно меняет имя ключа , так что вы можете искать его в python. Я создал отчет об ошибке здесь: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

Если вы работаете со скриптами и брелоки, пожалуйста, отметьте, что эти ошибки влияют и на вас.

Что касается части python Вот пример:

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

Если вам известен какой-либо другой способ, например с помощью простых команд bash, пожалуйста, дайте нам знать.

0
ответ дан 1 March 2013 в 19:33

Другие вопросы по тегам:

Похожие вопросы: