我正在尝试使用 gpg 代理设置 gpg 预设密码缓存,以便我可以自动化我的文件加密过程。为了让 gpg-agent 运行并正确缓存密码,似乎需要有一个位于 ~/.gnupg/ 目录中的S.gpg-agent套接字,当我设置 gpg 和gpg 代理。
我所做的(过去似乎可行)是我将以 root 身份启动所有内容,并将 /.gnupg 目录的内容复制给我的特权较低的用户,并将对该套接字和目录的权限授予用户。我为启动 gpg-agent 守护进程和缓存密码而运行的命令:
gpg-agent --homedir /home/<user>/.gnupg --daemon
/usr/libexec/gpg-preset-passphrase --preset --passphrase <passphrase> <keygrip>
gpg-agent 进程似乎运行得很好,但我从第二行得到以下错误:
gpg-preset-passphrase: can't connect to `/home/<user>/.gnupg/S.gpg-agent': Connection refused
gpg-preset-passphrase: caching passphrase failed: Input/output error
我已确保套接字存在于具有适当权限的目录中,并且此过程以 root 身份运行。即使我复制和修改权限,这个套接字似乎仍然与 root 绑定。所以我的问题是
- 这个套接字究竟是如何初始化的?
- 有没有办法以其他用户的身份手动执行此操作?
补充一点,代理进程似乎对两个用户都运行得很好,但我有点模糊的是 gpg-preset-passphrase 是如何使用套接字的,如果它或者拒绝连接的代理S.gpg-agent
我也假设我不需要显式启动代理,但我想我会这样做,以便我可以在需要时设置任何值,例如 homedir。