gpg
パスフレーズ「test」を使用して「file」というファイルを実行するスクリプトを作成したいと思います。
通常、 を使用する場合はgpg
、単に実行するgpg -c file
とパスフレーズの入力を求められます。ただし、このスクリプトですべてを自動的に実行したいので、コマンドの一部としてパスフレーズを指定したいと思います。
ここで、 を使用しようとするとgpg -c file --passphrase test
、次のように出力されます。
使用方法: gpg [オプション] --symmetric [ファイル名]
これは、 を使用するgpg --passphrase test --symmetric file
ように要求しているように見えます。しかし、そうすると、使用するパスフレーズを要求するダイアログが表示されますが、これは私が望んでいることではありません。
引数を正しく設定するにはどうすればいいでしょうか?
答え1
GnuPG では、オプションはコマンドの前にある必要があるため、--passphrase
オプションは の前に来なければなりません--symmetric
。
ピン入力ウィンドウに関しては、いずれにしてもポップアップ表示されます ( を使用していますが--passphrase
)。おそらく、--batch
と一緒に使用する必要がある GnuPG 2 を既に使用しているのでしょう--passphrase
。man ページから引用します。
--passphrase string
Use string as the passphrase. This can only be used if only one
passphrase is supplied. Obviously, this is of very questionable
security on a multi-user system. Don't use this option if you
can avoid it. Note that this passphrase is only used if the
option --batch has also been given. This is different from
GnuPG version 1.x.
マルチユーザー システムでは、GnuPG の実行中に他のすべてのユーザーがコマンド ラインとパスフレーズを読み取ることができることに注意してください。--passphrase-*
ファイルまたはパイプから読み取る代わりに、他のオプションのいずれかを使用することをお勧めします。
答え2
を使用すると&--pinentry-mode loopback
と連携し、ファイル名が競合した場合に新しい情報を入力できるようになります。例:--passphrase
--passphrase-[file/fd]
File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg
--batch
すぐに失敗するだろうと言っている...failed: File exists
最初に詳細オプション ( -v
) を追加していた場合は、次のような表示がされるはずです。
$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]
-c
これは、 ( ) を最初に置くことについて何か気に入らない点があることをかなり明確に示しています--symmetric
。
--passphrase
が伴わない限りオプションを無視する gpg2 の動作は--batch
バグであると考えています。
答え3
レポートv2の場合はgpg --version
、オプションを追加する必要があります--batch
。
構文出力に基づくと、おそらく v1 を使用していると思われます。その場合、次の操作が必要になります。
gpg --passphrase PASS -c --no-use-agent FILE
オプションの順序は重要ではありませんが、ファイルは最後の引数にする必要があります。
答え4
次のように使用できます:
gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c
また、バッチの使用はバグではなく、ドキュメントに書かれていました。ここ: