0

我正在尝试使用 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 绑定。所以我的问题是

  1. 这个套接字究竟是如何初始化的?
  2. 有没有办法以其他用户的身份手动执行此操作?

补充一点,代理进程似乎对两个用户都运行得很好,但我有点模糊的是 gpg-preset-passphrase 是如何使用套接字的,如果它或者拒绝连接的代理S.gpg-agent 我也假设我不需要显式启动代理,但我想我会这样做,以便我可以在需要时设置任何值,例如 homedir。

4

1 回答 1

1

事实证明,该问题与gpg-agentand无关gpg-preset-passprhase

注意:这不是一个永久的解决方案,但它确实让我克服了我所面临的问题。

修改/etc/selinux/config并禁用 SE Linux 后,我不再遇到上述权限问题。SE Linux 是 Red Hat 开发的 Linux 内核安全模块(我目前在 RHEL7 上运行)。看来下一步可能是确保允许我的用户使用audit2allow. 更多信息:https ://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow

于 2019-12-05T14:56:54.833 回答