スクリプトで使用するために、ターミナルのキーリングからパスワードを取得するにはどうすればよいですか?


28

LUKSコンピュータに暗号化されたドライブがある場合、Nautilusまたは小さなロックが付いたドライブとしてNemo表示されDevicesます。

クリックすると、パスワードを入力する必要があります。を選択するremember this password foreverと、キーリングに保存されます。次回起動時にドライブをクリックすると、すぐにマウントされます。

端末からパスフレーズがキーリングに保存されているドライブを「すぐにマウント」するにはどうすればよいですか?ログイン時にLUKSドライブをマウントする自動起動スクリプトが必要です。パスフレーズをスクリプトに保存したくありません。キーリングのパスフレーズを使用します。

に移動するとPasswords And Keys、名前のないキーがたくさんあります。プロパティにはgvfs-luks-uuid=xxxxxxxxxxxx、そのLUKSドライブのような説明とパスワードもあります。これはUbuntuが使用するものです。

私が考えたオプションの1つはpython-gnomekeyring、キー名とパスワードしか取得できないことです。uuidキー名は常に空であるため、特定のパスワードを取得するには、GUIで「技術的詳細」と呼ばれるものが必要です。

回答:


29

secret-toolsを使用して、キーリングからパスワードを保存および取得できます。

新しいパスワードを保存するには:

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

キーリングを確認してみましょう。検索するには(このコマンドはスクリプトに簡単に挿入できます):

secret-tool lookup drive mydrive

secret-toolの秘密は、例を実行するためにrootになることはできないことに注意してください!
ポールフリント

1
デッドリンク- launchpad.net/ubuntu/+source/libsecret - TL; DRapt-get install libsecret-tools
マシュー

9

唯一の答えはであると思いますが、python物事を難しくする2つのバグがあります。

  1. Pythonバージョンでは他のアプリケーションが使用する詳細を特定できないため、キー名(タツノオトシゴ:説明)を手動で指定する必要があります。ここにバグレポートを作成しました:https : //bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. LUKSキーの特定の場合、これらの説明はSeahorseでは空ですが、空の説明を変更すると実際にキーが変更されるため、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の例?
ルシッドアラム

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.