Як отримати паролі від брелока в терміналі для використання в скриптах?


28

Коли у вас на комп’ютері LUKSзашифрований диск Nautilusабо Nemoвін відображатиметься в ньому Devicesяк накопичувач із невеликим замком на ньому.

При натисканні на нього потрібно ввести пароль. Якщо ви захочете remember this password forever, він зберігається у вашому брелоку. Наступне завантаження, натискання на диск буде негайно встановити його.

Як я "негайно змонтую" такий диск, для якого парольна фраза зберігається в брелоку, з терміналу? Я хочу мати сценарій автозапуску, який буде монтувати мою дисковод LUKS під час входу. Я не хочу зберігати свою парольну фразу в сценарії, я хочу використовувати парольну фразу з keyring:

Якщо ви переходите Passwords And Keys, є купа безіменних ключів. У їх властивостях ви можете знайти такий опис, як gvfs-luks-uuid=xxxxxxxxxxxxі пароль для цього диска LUKS. Це те, що використовує Ubuntu.

Я думав про один варіант, python-gnomekeyringале він може отримати лише ім'я ключа та пароль. Мені потрібно те, що графічний інтерфейс називає "Технічні відомості", щоб отримати пароль для певного, uuidоскільки ім'я ключа завжди порожнє.

Відповіді:


29

Можна використовувати секретні інструменти для зберігання та отримання пароля з брелока.

Щоб зберегти новий пароль:

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

Я дозволяю вам перевірити в брелоку, як це виглядає. Щоб переглянути його (цю команду можна легко вставити у ваш сценарій):

secret-tool lookup drive mydrive

Зауважте, що секрет для secret-tool полягає в тому, що ви не можете користуватися коштами для роботи з прикладами!
Пол Флінт

1
Мертве посилання - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Метью

9

Я думаю, що відповідь є єдиною python, але є два помилки, які ускладнюють справи.

  1. Вам потрібно вручну вказати імена ключів (Seahorse: Descriptions), оскільки ідентифікаційні дані, якими користуються інші програми, недоступні у версії python. Я створив тут звіт про помилки: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Ці описи порожні у Seahorse в конкретному випадку клавіш 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, будь ласка, повідомте нас про це.


1
Приклад python3?
Хуршид Алам

2

Використовуйте Python Keyring Lib

Він має зручний CLI для використання в сценаріях оболонок.

Установка

pip install keyring

Налаштування та отримання ключів

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.