Bagaimana cara mendapatkan kata sandi dari keyring di terminal untuk digunakan dalam skrip?

28

Ketika Anda memiliki LUKSdrive terenkripsi di komputer Anda, Nautilusatau Nemoakan menampilkannya di bawah Devicessebagai drive dengan sedikit kunci di atasnya.

Ketika Anda mengkliknya, Anda harus memasukkan kata sandi. Jika Anda memilih untuk remember this password forever, itu akan disimpan ke keyring Anda. Boot berikutnya, mengklik drive akan segera memasangnya.

Bagaimana saya 'segera me-mount' drive seperti itu yang frasa sandi disimpan di keyring, dari terminal? Saya ingin memiliki skrip autostart yang akan memasang drive LUKS saya ketika saya masuk. Saya tidak ingin menyimpan frasa sandi saya dalam skrip, saya ingin menggunakan frasa sandi dari keyring:

Jika Anda pergi ke Passwords And Keys, ada banyak kunci tanpa nama. Di properti mereka, Anda dapat menemukan deskripsi seperti gvfs-luks-uuid=xxxxxxxxxxxxdan juga kata sandi untuk drive LUKS itu. Inilah yang digunakan Ubuntu.

Salah satu opsi yang saya pikirkan adalah python-gnomekeyringtetapi hanya bisa mendapatkan keyname dan kata sandi. Saya membutuhkan apa yang disebut GUI 'Rincian Teknis' untuk mendapatkan kata sandi untuk spesifik uuidkarena keyname selalu kosong.

Redsandro
sumber

Jawaban:

29

Anda dapat menggunakan alat rahasia untuk menyimpan dan mengambil kata sandi dari keyring.

Untuk menyimpan kata sandi baru:

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

Saya membiarkan Anda memeriksa keyring bagaimana tampilannya. Untuk mencarinya (perintah ini dapat dengan mudah dimasukkan dalam skrip Anda):

secret-tool lookup drive mydrive
Aurelien
sumber
Perhatikan bahwa rahasia ke alat rahasia adalah bahwa Anda tidak dapat menjadi root untuk mengerjakan contoh!
Paul Flint
1
Tautan mati - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Matthew
9

Saya pikir satu-satunya jawaban adalah melalui python, tetapi ada dua bug yang membuat semuanya sulit.

  1. Anda perlu secara manual memberikan nama kunci Anda (Seahorse: Deskripsi) karena mengidentifikasi detail yang digunakan aplikasi lain tidak tersedia dalam versi python. Saya telah membuat laporan bug di sini: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. Deskripsi ini kosong di Kuda Laut dalam kasus kunci LUKS tertentu, tetapi mengubah deskripsi kosong benar-benar mengubah nama kunci sehingga Anda dapat mencarinya dengan python. Saya telah membuat laporan bug di sini: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

Jika Anda bekerja dengan skrip dan keyrings, harap sebutkan bahwa bug ini juga memengaruhi Anda.

Adapun pythonbagian, berikut adalah contohnya:

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

Jika Anda mengetahui cara lain, misalnya melalui perintah bash sederhana, beri tahu kami.

Redsandro
sumber
1
Contoh python3?
Khurshid Alam
2

Gunakan Python Keyring Lib

Ini memiliki CLI nyaman untuk digunakan dalam skrip shell.

Instalasi

pip install keyring

Pengaturan dan pengambilan kunci

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