gpg --passphrase-file 不能以 root 身份工作?

gpg --passphrase-file 不能以 root 身份工作?

我正在尝试使用 GnuPG 作为管道来加密我们的备份(从标准输入读取并写入标准输出)。密码是从文件中读取的。命令示例:

echo "mysecret" | gpg --passphrase-file password.key --batch --symmetric --cipher-algo AES256 > test.gpg

当我以普通用户身份运行它时,它工作正常。但如果我以 root 身份运行它,我得到:

gpg: gpg-agent is not available in this session
gpg: can't query passphrase in batch mode
gpg: error creating passphrase: invalid passphrase
gpg: symmetric encryption of `[stdin]' failed: invalid passphrase

我怎样才能获得--passphrase-fileroot 权限?

我无法--passphrase-fd 0按照建议使用这里因为stdin是要加密的数据。我正在使用 GPG 1.4.20(来自 Ubuntu 16.04.5 LTS)

答案1

我找到了一个解决方法,它利用额外的文件描述符进行输入:

exec {FD}<password.key
echo "mysecret" | gpg --passphrase-fd ${FD} --batch --symmetric --cipher-algo AES256 > test.gpg

答案2

我想建立在另一个答案的基础上,其中涉及首先将密码写入文件系统。您可以将 printf 命令的输出捕获为文件描述符:

passphrase="topsecret"
exec {pw_fd}< <(printf "$passphrase")
echo "a total secret" | gpg --passphrase-fd ${pw_fd} --batch --symmetric --cipher-algo aes > test.gpg
exec {pw_fd}<&-

然后测试:

gpg -d --passphrase -i test.gpg
gpg: AES.CFB encrypted data
gpg: encrypted with 1 passphrase
a total secret

相关内容