gpg

gpg使用临时文件而不是管道

我将我的 /root 安装为只读。 gpg 发送加密电子邮件的脚本;类似于以下内容:

echo "hello" | gpg --no-verbose -e -a -r martin.com | mail martin.com

但我得到一个错误。

gpg: failed to create temporary file `/root/.gnupg/.#dkflsfj':只读文件系统

如何告诉 gpg 不要使用临时文件?我在手册页中找到了一个选项 use-temp-files

use-temp-files

    在大多数类 Unix 平台上,GnuPG 通过管道与 keyserver 帮助程序通信,这是最有效的方法。此选项强制 GnuPG 使用临时文件进行通信。在某些平台(如 Win32 和 RISC OS)上,此选项始终处于启用状态。

我的配置中没有启用此选项。显然,它是默认设置的。有什么办法可以“否定”这个选项?选项 no-use-temp-files 似乎没有任何效果:

echo "asdf" | gpg --keyserver-options no-use-temp-files -e -a -r martin.com

我仍然得到同样的错误: gpg: failed to create temporary file `/root/.gnupg/.#jkfjg': Read-only file system ,如果我说 --no-use-temp-files ,我得到一个错误: gpg: Invalid option "--no-use-temp-files"

有什么其他方法可以解决这个问题吗?


我通过使用 --lock-never 选项解决了这个问题,它可以防止 gpg 尝试锁定文件。




该选项可以通过添加前缀 "no-"来禁用。

--keyserver-options name=value1

这是一个以空格或逗号分隔的字符串,为钥匙服务器提供选项。选项的前缀可以是 "no-",以表示相反的意思。