USBドライブの場合バージョン 2.6.4それから

USBドライブの場合バージョン 2.6.4それから

現在暗号化されているサムドライブをマウントするには、次の手順を実行します。

# Works!
pass thumbdrive-password | # get device password entry from password manager
    head -n 1 | # get the device password itself
    sudo cryptsetup luksOpen /dev/sdb thumbdrive # unlock device
udisksctl mount -b /dev/mapper/thumbdrive # mount device

私はこのようなことをしたい:

# Does not work!
pass thumbdrive-password |
    head -n 1 |
    udisksctl unlock -b /dev/sdb # unlock device
udisksctl mount -b /dev/mapper/luks-foobar # mount device with uuid "foobar"

これにより、半権限を持つユーザー(org.freedesktop.udisks2.filesystem-mountpolkitの権限を持つ)がsudoを使用せずに暗号化されたファイルシステムをマウントできます。 Udiskはインタラクティブなパスワードプロンプトを使用するため、このパイプ方法は許可されません。udisksctl unlock手動で入力せずにデバイスパスワードを入力するにはどうすればよいですか?

ベストアンサー1

USBドライブの場合バージョン 2.6.4それから

メモ:私はこれをテストしていません。 udisk 2.6.4を取得すると、そうなります(いつでもhttps://github.com/NixOS/nixpkgs/pull/41723NixOS安定版としてバックポートされています)。

修正する:これでudisks 2.8.0があるので、ソリューションをテストできます。私が逃した唯一のことはpass (...) | head (...)。これを切り捨てるには、-nフラグを使用するか、echo出力| tr -d '\n'に追加します。head私はこれを以下の2つの解決策に反映しました。

一般(安全でない)ソリューション

この--key-fileフラグを使用し、キーファイルをパスワード文字列に置き換えます。/dev/sdbパスワードによるロック解除hunter2

udisksctl unlock --block-device /dev/sdb --key-file <(echo -n "hunter2")

コマンドラインを介して機密データを直接渡すことは安全ではないため、この方法は避けるべきです。

pass実装する

代わりに、パスワード文字列を検索しpass thumbdrive-password | head -n 1、末尾の改行を切り取り、次を使用してそれをキーファイルに置き換えます。

udisksctl unlock \
    --block-device /dev/sdb \
    --key-file <(pass thumbdrive-password | head -n 1 | tr -d '\n')

おすすめ記事