我已将其/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
为该位置的符号链接。