ฉันจะรับรหัสผ่านจากพวงกุญแจในเทอร์มินัลเพื่อใช้ในสคริปต์ได้อย่างไร


28

เมื่อคุณมีLUKSไดรฟ์เข้ารหัสในคอมพิวเตอร์ของคุณNautilusหรือNemoจะแสดงไว้ภายใต้Devicesเป็นไดรฟ์ที่มีการล็อคเล็กน้อย

เมื่อคุณคลิกคุณจะต้องป้อนรหัสผ่าน หากคุณเลือกremember this password foreverมันจะถูกบันทึกไว้ในพวงกุญแจของคุณ บูตครั้งต่อไปการคลิกที่ไดรฟ์จะเป็นการติดตั้งทันที

ฉันจะ 'ติดตั้งไดรฟ์' ในทันทีเช่นไดรฟ์ที่เก็บข้อความรหัสผ่านไว้ในพวงกุญแจได้อย่างไรจากเครื่องเทอร์มินัล ฉันต้องการสคริปต์ autostart ที่จะติดตั้งไดรฟ์ LUKS ของฉันเมื่อฉันเข้าสู่ระบบฉันไม่ต้องการเก็บข้อความรหัสผ่านของฉันในสคริปต์ฉันต้องการใช้ข้อความรหัสผ่านจากพวงกุญแจ:

หากคุณไปที่Passwords And Keysนั่นมีกุญแจนิรนาม ในคุณสมบัติของพวกเขาคุณสามารถค้นหาคำอธิบายเช่นgvfs-luks-uuid=xxxxxxxxxxxxและรหัสผ่านสำหรับไดรฟ์ LUKS นั้น นี่คือสิ่งที่อูบุนตูใช้

ตัวเลือกหนึ่งที่ฉันคิดถึงคือpython-gnomekeyringแต่จะได้รับชื่อและรหัสผ่านเท่านั้น ฉันต้องการสิ่งที่ GUI เรียกว่า 'รายละเอียดทางเทคนิค' เพื่อรับรหัสผ่านเฉพาะuuidเนื่องจากชื่อคีย์ว่างเปล่าเสมอ

คำตอบ:


29

คุณสามารถใช้เครื่องมือลับในการจัดเก็บและดึงรหัสผ่านจากพวงกุญแจ

วิธีจัดเก็บรหัสผ่านใหม่:

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

ฉันให้คุณตรวจสอบในพวงกุญแจว่ามันจะปรากฏขึ้น หากต้องการค้นหา (สามารถแทรกคำสั่งนี้ในสคริปต์ของคุณได้อย่างง่ายดาย):

secret-tool lookup drive mydrive

โปรดทราบว่าความลับต่อเครื่องมือลับคือคุณไม่สามารถรูทเพื่อทำงานตัวอย่างได้!
พอลฟลินท์

1
ลิงก์เสีย - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
Matthew

9

ฉันคิดว่าคำตอบเดียวคือผ่านpythonแต่มีข้อบกพร่องสองอย่างที่ทำให้สิ่งต่าง ๆ ยาก

  1. คุณต้องตั้งชื่อคีย์ด้วยตนเอง (ซีฮอร์ส: คำอธิบาย) เนื่องจากการระบุรายละเอียดที่แอปพลิเคชันอื่น ๆ ใช้ไม่สามารถใช้ได้ในเวอร์ชั่นหลาม ฉันได้สร้างรายงานข้อผิดพลาดที่นี่: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. คำอธิบายเหล่านี้ว่างเปล่าในซีฮอร์สในกรณีเฉพาะของคีย์ LUKS แต่การเปลี่ยนคำอธิบายที่ว่างเปล่าจริงๆแล้วเปลี่ยนชื่อคีย์เพื่อให้คุณสามารถค้นหาได้ในไพ ธ อน ฉันได้สร้างรายงานข้อผิดพลาดที่นี่: 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
ตัวอย่างหลาม 3?
Khurshid Alam

2

ใช้Python Keyring Lib

มี CLI ที่สะดวกสำหรับใช้ในเชลล์สคริปต์

การติดตั้ง

pip install keyring

การตั้งค่าและรับกุญแจ

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.