特定のオプションでgpg-agentを起動してください

特定のオプションでgpg-agentを起動してください

GPG(Cでlibgpgmeを使用)を使用するシステムユーザーがサービスとして実行するアプリケーションがあります。このユーザーにはホームディレクトリがなく、パスワードキャッシュを削除したいと思います。

だから私はgpg-agentから始めたいです--homedir=/opt/myapp/.gnupg --default-cache-ttl 0

gpg-agent(1)説明する:

エージェントは、必要に応じてgpg、gpgsm、gpgconf、またはgpg-connect-agentによって自動的に起動されます。したがって、手動で起動する理由はありません。

これにより、いくつかの質問が生じます。

  1. gpg-agent特定のコマンドラインオプションを使用して特定のホームディレクトリを起動するにはどうすればよいですか?
  2. すでに実行している場合はgpg-agent変更できますかhomedirdefault-cache-ttlそれとも既存のエージェントを終了する必要がありますか?
  3. 既存のユーザーを殺すと、他のgpg-agent(システムではなく)ユーザーに影響を与えますか?

質問1の場合:そのhomedirを使用してgpg-connect-agent --homedir /opt/myapp/.gnupg /bye新しいgpg-agentエージェントが作成されますが、他のエージェントは引き続き実行されます。gpg-agent署名するときはどれを使用しますか?

質問2:以下を試しました。ただしhomedir、オプションとして表示されず--list-options gpg-agent、その間に新しい値が更新されるのを見ても、--list-optionsパスワードなしでファイルに署名できます。

echo "default-cache-ttl::0" | gpgconf --change-options gpg-agent
echo "max-cache-ttl::0" | gpgconf --change-options gpg-agent

答え1

特定のコマンドラインオプションを使用して、特定のホームディレクトリに対してgpg-agentをどのように起動できますか?

サービスファイルで.を使用するEnvironment=GNUPGHOME=/opt/myapp/.gnupg(または必要な機能を使用するとき)、gpg-agent自動的に起動します。設定すると、/ 呼び出しが既存の呼び出しに関連付けられている場合、または適切な呼び出しがまだ存在しない場合は、新しい呼び出しが作成されます。gpglibgpgme$GNUPGHOMEgpggpgmegpg-agent--homedir=/opt/myapp/.gnupggpg-agent

gpg-agentがすでに実行されている場合は[...] default-cache-ttlを変更できますか?または、既存のエージェントを終了する必要がありますか?

送信者gpgconf(1): "gpgconfは、ホームディレクトリの..nupgの設定ファイルを自動的に合理的かつ安全に照会および変更できるユーティリティです。ユーザーが手動で呼び出さないように設計されています..."

実際に設定する必要があるのは、その項目が存在し含まれていることを default-cache-ttl確認することです。新しいインスタンスを作成する前に存在する必要があります。これは、このファイルがアプリケーションと共にインストールされていることを確認したり、このファイルを設定したりするサービスです。$GNUPGHOME/gpg-agent.confdefault-cache-ttl 0gpg-agentExecStartPre=

既存のgpg-agentを終了すると、他の(システムではない)ユーザーに影響しますか?

殺す必要はありませんgpg-agent。サービス内で実行されるため、生成されたすべてのgpg-agentsはサービスのcgroupから分離されます。サービスが停止すると、生成されたgpg-agentsはsystemdによって終了します。

注:私は上記の段落についてのみ確信しています。私はsystemdgpg-connect-agentでテストしたときにcgroupにまだ存在し、終了したExecStartPre=警告が発生したことがわかりました。gpg-agent

関連情報