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


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

我已经成功地从用户的公钥和密钥环中隔离了这个命令的操作(参见我的Ruby gem at https://github.com/rcook/rgpg 我怎么做这个)这是最后剩下的行为 gpg 我想阻止。


12
2017-08-02 20:13






答案:


你可以通过它 --homedir 论证或使用 GNUPGHOME 环境变量让它使用另一个目录而不是 .gnupg。如果您正在编写脚本,则可以创建一个临时目录:

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

完成后清理:

gpg ...
rm -rfi $GNUPGHOME

7
2017-08-02 20:28



完善!谢谢。 - Richard Cook


“如何防止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 会抑制这些。但是,请注意,即使打印了密钥信息,在这种情况下命令的退出代码也可能不为零。


4
2017-08-24 10:31



我不相信这是有效的。它可以防止gpg尝试从主目录中读取选项文件,但不会阻止它尝试写入它。如果gpg没有写入HOME的权限,它仍然会出错。 gpg: keyblock resource /home/u/.gnupg/pubring.gpg':文件打开错误gpg:无法创建 /home/u/.gnupg/random_seed': No such file or directory - voxobscuro
@voxobscuro:文档是正确的;错误可以忽略,命令仍然有效。我会更新这个答案。 - kkm