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

Ric*_*ook 16 gpg

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

我已经在从用户的公钥和密钥环隔离此命令的操作(见我的红宝石宝石一些成功https://github.com/rcook/rgpg对我怎么做),这是最后剩下gpg我想阻止的行为。

lar*_*sks 12

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

GNUPGHOME=$(mktemp -d $HOME/.gnupgXXXXXX)
export GNUPGHOME
Run Code Online (Sandbox Code Playgroud)

然后在完成后清理:

gpg ...
rm -rfi $GNUPGHOME
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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

gpg --no-options  \
    --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Run Code Online (Sandbox Code Playgroud)

根据手册

--no-options

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

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

  • 我不相信这行得通。它阻止 gpg 尝试从主目录读取选项文件,但不阻止它尝试写入。如果 gpg 没有写入 HOME 的权限,它仍然会出错。`gpg:keyblock 资源`/home/u/.gnupg/pubring.gpg':文件打开错误 gpg:无法创建`/home/u/.gnupg/random_seed':没有那个文件或目录` (2认同)