gpg -d で tar アーカイブを復号化すると、-d フラグが機能しない

gpg -d で tar アーカイブを復号化すると、-d フラグが機能しない

私のOSはUbuntu 20.04.2 ltsです。

私は、ファイルとサブフォルダを含むディレクトリnoup1からtarアーカイブを作成しています。tar cf no1.tar noup1

で暗号化しますgpg -c no1.tar。これでno1.tar.gpgアーカイブができました。

で復号化しようとするとgpg -d no1.tar.gpg、ターミナルに波線がたくさん表示され、機能しません。

gpg no1.tar.gpgフラグなしでだけを使用すると-d、「コマンドが指定されていません。推測しようとしています...」という出力が表示されます。

gpg: WARNING: Kein Kommando angegeben. Versuche zu raten was gemeint ist ... gpg: AES256 verschlüsselte Daten gpg: Verschlüsselt mit einer Passphrase

アーカイブは暗号化されなくなりました。これでうまくいきました!しかし、どのようにして、そしてなぜ?

一方、-dフラグを使用して結果を tar にパイプすると成功します。

gpg -d no1.tar.gpg | tar xf -

tar と gpg を使用して圧縮暗号化アーカイブを作成する方法

そこで私は疑問に思うのです:

推測されたコマンド「それは実行されましたか?」

関連するすべてのチュートリアルで、ではなく-dを使用して tar アーカイブを復号化するように指示されているにもかかわらず、 フラグは機能せず、 tar にパイプすると機能するのはなぜですか?gpg -d <archive-name>gpg <archive-name>

いくつかのパッケージが不足しているか、gpg 設定に問題がある可能性はありますか?

答え1

に従ってマニュアルページgpgの場合、

-d

コマンドラインで指定されたファイル (ファイルが指定されていない場合は STDIN) を復号​​化し、STDOUT (または --output で指定されたファイル) に書き込みます。復号化されたファイルが署名されている場合は、署名も検証されます。このコマンドは、ファイルに含まれるファイル名に書き込むことはなく、暗号化されたメッセージで始まっていないファイルを拒否するため、デフォルトの操作とは異なります。

つまり、-d は正常に動作していましたが、ファイルを STDOUT に復号化していたため、大量のジャンク出力が表示されました。これは .tar ファイルのエンコードされたデータなので、意味不明な出力になるのは当然です。

シェルの出力ストリームではなくファイルに復号化したい場合は、--output <filename>出力をファイルに使用するか、ファイルにリダイレクトします。

私は(ドイツ語が読めませんが)ファイルに対してコマンドを実行したとき、次のようなコマンドを実行したと思います。

gpg -d no1.tar.gpg --output no1.tar

関連情報