コンテキスト:起動時に表示されるパスワードをUSBドングルに保存されているキーファイルに置き換えました。私の質問には次のステップが含まれます
# cryptsetup luksAddKey /path/to/mykeyfile
。私が生成した追加キーは次のように生成されました
dd if=/dev/urandom of=mykeyfile bs=512 count=4
。**私の目標はbashで実行することです(動作します...)。出るパスワードプロンプトが表示され、最後にプロンプトが0になります。 **私の質問:
- 似たようなことができますか
cryptsetup luksAddKey -passphrase "Hello, my name is Jolly Roger" /path/to/mykeyfile
? - それとも、少なくともスクリプト呼び出しにパラメータとしてパスワードを渡すことはできますか?
# sh myscript.sh -passphrase "Jolly..."
これはSSHに存在します
sshpass
。
/etc/crypttab
セキュリティ上の注意:パスワードはキーファイルに置き換えられているため、スクリプトにパスワードを書き込むことはまったく気にしません。また、機密の内部メンバーもスクリプトを使用できます。これはプライベートです。
答え1
キーに改行文字が含まれていない場合は、単にパイプで接続できます。
# cryptsetup luksFormat foobar.img originalkey
WARNING!
========
This will overwrite data on foobar.img irrevocably.
Are you sure? (Type uppercase yes): YES
# cryptsetup luksAddKey foobar.img newkey < originalkey
残念ながら、cryptsetup
キーファイルの処理にはいくつかのモードがあり、改行文字などはそのモードによって異なります。特殊文字キーの場合、パイプは機能しません。
# cryptsetup luksAddKey foobar.img newkey < originalkey
No key available with this passphrase.
この場合、keyfileオプションが必要です。
# cryptsetup luksAddKey --key-file=originalkey foobar.img newkey
またはまだパイプを使用したい場合は、
# cryptsetup luksAddKey --key-file=- foobar.img newkey < originalkey
混乱していますか? 512文字以下のASCII専用キーを使用して印刷できない文字が含まれていない場合は、あいまいさを避けるため、ピンチで手動で入力できます。
可能であれば、このようなことは避けるべきです--password=xyz
。この情報は公開され、プロセスリスト、シェル履歴、その他の場所にあなたのパスワードが公開されることがあります。常に適切に制限された読み取り権限を持つパイプまたはファイルを使用してください。
答え2
あなたの質問に答えるにはstdin
:
zenity --password | cryptsetup luksAddKey /dev/mydevice /path/to/my/keyfile
詳細については、--key-file
ファイルをデバイスのロック解除キーとして指定できます。 --key-file=- を使用して、標準入力の情報を使用できます。ただし、このファイルはキーファイルでなければなりません。あなたのパスワードを含むファイルではありません。
例:
cat /tmp/fileContainingPassword | cryptsetup luksAddKey /dev/mydevice /path/to/my/new/keyfile
そして
cat /path/to/keyfile | cryptsetup luksAddKey --key-file=- /dev/mydevice /path/to/my/new/keyfile
は違います。まず、デバイスのロックを解除するためにパスワードを読みますstdin
。
2番目は、デバイスのロックを解除するためにキーファイルを読み取りますstdin
。
cryptsetupはキーファイルとパスワードを異なる方法で処理します。
その他の情報:この--key-file
オプションは、デバイスのロックを解除し、新しいキーを追加するためにデバイスに割り当てられたキーファイルのみを読み取ります。新しいキーを割り当てるには、ファイルのみを指すことができます。-
読み取りオプションはありませんstdin
。ファイルシステムに何も残したくないが、プロンプトに何も入力しなかった場合(ロック解除パスワードまたは新しいパスワードの両方)、名前付きパイプを使用する必要があります。
mkfifo /tmp/mytmpkey
# Here we put the process in the background with &,
# otherwise, it would block until
# cryptsetup read the value from /tmp/mytmpkey
dd if=/dev/urandom of=/tmp/mytmpkey bs=512 count=4 &
cryptsetup luksAddKey --key-file /path/to/unlockKey /tmp/mytmpkey
rm /tmp/mytmpkey