如何防止 gpg 在用户主目录中创建 .gnupg 目录

如何防止 gpg 在用户主目录中创建 .gnupg 目录

我正在尝试使用该gpg工具来加密和解密文件,我想知道是否可以在不改变用户全局状态的情况下运行此工具。具体来说,gpg首次以给定用户身份运行会导致它.gnupg在用户的主目录中创建一个目录和其他工件。

我已经成功地将该命令的操作与用户的公钥和私钥环隔离开来(请参阅我的 Ruby gemhttps://github.com/rcook/rgpggpg关于我如何做到这一点),这是我想要阻止的最后一个行为。

答案1

您可以向其传递参数--homedir或使用GNUPGHOME环境变量让其使用另一个目录而不是.gnupg。如果您正在编写此脚本,则可以创建一个临时目录:

GNUPGHOME=$(mktemp -d $HOME/.gnupgXXXXXX)
export GNUPGHOME

完成后进行清理:

gpg ...
rm -rfi $GNUPGHOME

答案2

“如何防止 gpg 创建 .gnupg 目录”

在检查只读安装磁盘上的一些密钥指纹时,我遇到了与问题标题中描述的相同的问题。

我使用的解决方案是将--no-options标志添加到gpg命令中:

gpg --no-options  \
    --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

按照手动的

--no-options

--options /dev/null 的快捷方式。在尝试打开选项文件之前会检测此选项。使用此选项还将阻止创建 ~/.gnupg homedir。

如果 gpg 仍然打印无法读取用户的公钥和私钥环的错误,则重定向2>/dev/null将抑制这些错误。但请注意,在这种情况下,即使打印了密钥信息,命令的退出代码也可能为非零。

答案3

--no-options 不起作用。它仍然会创建 .gnupg 文件夹。但是,您可以简单地使用这个技巧来使其工作 - 将 GNUPGHOME 指向“/dev/null”

export GNUPGHOME="/dev/null"

然后运行任何 gpg 命令,它根本不会创建 .gnupg。

相关内容