gpt4 book ai didi

bash - 从脚本运行时避免 gpg-agent 出现问题 - gpg2

转载 作者:行者123 更新时间:2023-12-03 16:26:45 36 4
gpt4 key购买 nike

我正在尝试使用 gpg--clearsign来自脚本的文件(用于 debian 打包目的)。

我有一个导出的无密码 private-key.gpg文件并希望:

gpg --clearsign -o output input

我不想弄乱当前用户的 ~/.gnupg/run/user/$(id -u)/gnupg因为它们与我的脚本无关。此外,脚本可以同时在多个实例中运行,我不希望它们相互干扰。

我以为这很容易。设置 $GNUPGHOME到一个临时目录并完成它。但我不知道如何获得 gpg在脚本中运行而完全不影响用户的标准配置。看来 gpg已经竭尽全力避免 gpg-agentgpg-agent坚持使用全局/硬编码路径。

我可以将所有内容保留在 $GNUPGHOME 下吗? ?或者如何安全使用 gpg在不影响用户配置或使用 gpg 的情况下从 shell 脚本或我的脚本的其他实例?

细节

阅读 gpg docs我看到:
--use-agent
--no-use-agent

This is dummy option. gpg always requires the agent.

gpg-agent docs说:
--use-standard-socket
--no-use-standard-socket
--use-standard-socket-p

Since GnuPG 2.1 the standard socket is always used.
These options have no more effect. The command gpg-agent
--use-standard-socket-p will thus always return success.

这个“标准 socket ”大概在 /run/user/$(id -u)/gnupg - 所以看来我无法避免 gpg 弄乱用户对 gpg 的“正常”使用。

版本:Debian 9/stretch/stable 上的 gpg 2.1.18

最佳答案

如果您无法阻止 gpg 创建文件,那么给 gpg 一个放置它们的位置是否对当前进程来说是独一无二的会有帮助吗?

# Create a temporary directory for gpg.
dir="$(mktemp -d)"

# Remove the directory and its contents when the script exits.
trap '[[ ! -d "${dir}" ]] || rm -r "${dir}"' EXIT

# Put your private-key.gpg in the temporary directory.
$(your command here)

# Tell gpg to use the temporary directory.
gpg --homedir "${dir}" --clearsign -o output input

关于bash - 从脚本运行时避免 gpg-agent 出现问题 - gpg2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52611053/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com