使用 sudo gpg 运行时无法使用我的密钥,即使它显示为 --list-secret-keys

使用 sudo gpg 运行时无法使用我的密钥,即使它显示为 --list-secret-keys

我正在开发一个 shell 脚本,需要以 root 身份运行(使用 sudo)并使用 gpg。加密工作正常,但解密由于某种原因拒绝使用我的密钥。

具体命令:

sudo gpg --homedir '/home/username/.gnupg' -d file.gpg

失败:

gpg: WARNING: unsafe ownership on homedir '/home/username/.gnupg'
gpg: encrypted with 2048-bit RSA key, ID XXX, created YYYY-MM-DD
      "John Doe <[email protected]>"
gpg: public key decryption failed: Permission denied
gpg: decryption failed: No secret key

然而,sudo gpg --homedir '/home/username/.gnupg' --list-secret-keys正确列出了密钥,并且我能够以普通用户身份使用 gpg 解密该文件(只是不能使用 sudo),因此密钥或文件没有任何问题。

我在 Manjaro 上运行 gpg 2.2.19。

答案1

事实证明,这是有关 pinentry 的权限问题,即输入密钥的密码。有两种解决方案/解决方法:

  1. --pinentry-mode loopback:这会导致终端中发生 pinentry,从而绕过权限问题。

  2. chmod o+rw $(tty):这会更改 tty 权限,以便 pinentry 可以正常进行。第一个解决方案可能是更可取的,因为它不需要弄乱任何权限(这至少在理论上可能会产生安全问题)。

答案2

跑步

screen

然后删除该密钥

相关内容