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

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

我已将其/root安装为只读。我有一个使用gpg;发送加密电子邮件的脚本像下面这样:

echo "hello" | gpg --no-verbose -e -a -r [email protected] | mail [email protected]

但我收到一个错误:

gpg: failed to create temporary file `/root/.gnupg/.#dkflsfj': Read-only file system

我怎样才能告诉gpg不要使用临时文件?我找到了一个use-temp-files选项手册页:

use-temp-files

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

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

echo "asdf" | gpg --keyserver-options no-use-temp-files -e -a -r [email protected]

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

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

答案1

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

答案2

k6 文档中也有这个https://k6.io/docs/getting-started/installation/troubleshooting/#error-importing-k6s-gpg-key:

如果这是用户第一次运行 gpg ,因此目录 /root/.gnupg/ 尚不存在,则会发生这种情况。要创建目录,请运行 sudo gpg -k 并尝试再次导入密钥。

答案3

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

--keyserver-选项名称=值1

这是一个空格或逗号分隔的字符串,为密钥服务器提供选项。选项可以加上“no-”前缀以给出相反的含义。

答案4

一种可能的解决方案是将/root/.gnupg目录移动到以读写方式安装的文件系统上某个适当受保护的位置,然后设置/root/.gnupg为该位置的符号链接。

相关内容