gpgはパイプの代わりに一時ファイルを使用します。

gpgはパイプの代わりに一時ファイルを使用します。

私は/root読み取り専用でインストールしました。gpg以下のように暗号化された電子メールを送信するスクリプトがあります。

echo "hello" | gpg --no-verbose -e -a -r [email protected] | mail [email protected]

しかし、エラーが発生します。

gpg: failed to create temporary file `/root/.gnupg/.#dkflsfj': Read-only file system

gpg一時ファイルを使用しないようにどうすればわかりますか?use-temp-filesオプションが見つかりました。マニュアルページ:

use-temp-files

    ほとんどのUnixファミリープラットフォームでは、GnuPGは最も効率的な方法であるパイプを介してキーサーバーヘルパーと通信します。このオプションは、GnuPGが通信に一時ファイルを使用することを強制します。 Win32やRISC OSなどの一部のプラットフォームでは、このオプションは常に有効になっています。

私の設定では、このオプションは有効になっていません。もちろん、デフォルトで設定されています。このオプションを「無効」にする方法はありますか?このオプションはno-use-temp-files何の効果もないようです。

echo "asdf" | gpg --keyserver-options no-use-temp-files -e -a -r [email protected]

それでも同じエラーが発生します。gpg: failed to create temporary file `/root/.gnupg/.#jkfjg': Read-only file systemと言うと--no-use-temp-filesエラーが発生しますgpg: Invalid option "--no-use-temp-files"

この問題を解決する他の方法はありますか?

答え1

ファイルのロックを--lock-never試みないようにするオプションを使用してこの問題を解決しました。gpg

答え2

これはk6ドキュメントでも見ることができます。https://k6.io/docs/getting-started/installation/troubleshooting/#error-importing-k6s-gpg-key:

ユーザーがgpgを初めて実行して/root/.gnupg/ディレクトリがまだ存在しない場合、これが発生する可能性があります。ディレクトリを作成するには、sudo gpg -kを実行してキーのインポートを再試行してください。

答え3

このオプションは、接頭辞 "no-" を追加することで無効にできます。

--keyserver-オプション-名前=値1

これは、キーサーバーのオプションを提供するスペースまたはカンマ区切りの文字列です。逆の意味を与えるために、オプションの前に「no-」を付けることができます。

答え4

考えられる解決策の1つは、/root/.gnupg読み取り/書き込みマウントファイルシステムの適切に保護された場所にディレクトリを移動し、その場所への/root/.gnupgシンボリックリンクを設定することです。

関連情報