Gnupg GPG Can';t连接到S.gpg-agent:连接被拒绝

Gnupg GPG Can';t连接到S.gpg-agent:连接被拒绝,gnupg,pgp,gpg-agent,Gnupg,Pgp,Gpg Agent,我正在尝试使用gpg代理设置gpg预设密码短语缓存,以便自动执行文件加密过程。为了让gpg代理运行并正确缓存密码短语,似乎需要在设置gpg和gpg代理时在根目录中生成的~/.gnupg/目录中有一个S.gpg-agent套接字 我所做的(在过去似乎是有效的)是,我将以root身份启动所有内容,并将/.gnupg目录的内容复制给权限较低的用户,并将该套接字和目录的权限授予该用户。我为启动gpg代理守护程序和缓存密码短语而运行的命令: gpg-agent --homedir /home/<us

我正在尝试使用gpg代理设置gpg预设密码短语缓存,以便自动执行文件加密过程。为了让gpg代理运行并正确缓存密码短语,似乎需要在设置gpg和gpg代理时在根目录中生成的~/.gnupg/目录中有一个S.gpg-agent套接字

我所做的(在过去似乎是有效的)是,我将以root身份启动所有内容,并将/.gnupg目录的内容复制给权限较低的用户,并将该套接字和目录的权限授予该用户。我为启动gpg代理守护程序和缓存密码短语而运行的命令:

gpg-agent --homedir /home/<user>/.gnupg --daemon
/usr/libexec/gpg-preset-passphrase --preset --passphrase <passphrase> <keygrip>
gpg代理--homedir/home//.gnupg--守护进程
/usr/libexec/gpg预置密码短语--预置--密码短语
gpg代理进程似乎运行得很好,但我从第二行得到以下错误:

gpg-preset-passphrase: can't connect to `/home/<user>/.gnupg/S.gpg-agent': Connection refused
gpg-preset-passphrase: caching passphrase failed: Input/output error
gpg预设密码短语:无法连接到“/home/.gnupg/S.gpg-agent”:连接被拒绝
gpg预设密码短语:缓存密码短语失败:输入/输出错误
我已确保该套接字存在于具有适当权限的目录中,并且该进程以root用户身份运行。即使我复制和修改了权限,这个套接字似乎仍然固有地绑定到root。所以我的问题是

  • 这个套接字是如何初始化的
  • 是否有其他用户手动执行此操作的方法
  • 另外,代理进程似乎对两个用户都运行得很好,但我不太清楚gpg预设密码短语是如何使用套接字的,以及是该套接字还是拒绝连接到
    S.gpg-agent的代理
    
    我还假设我不需要显式启动代理,但我想我可以这样做,以便在需要时设置任何值,如homedir。

    结果表明问题与
    gpg代理
    gpg预设passprhase
    无关

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


    在修改
    /etc/selinux/config
    并禁用SE Linux之后,我不再遇到上述权限问题。SE Linux是由Red Hat开发的Linux内核安全模块(我目前正在RHEL7上运行)。似乎下一步可能是确保允许我的用户使用
    audit2allow
    访问这些二进制文件和包。这里有更多信息:

    gpg代理通常应作为守护进程运行,而不是手动调用。见和。提示:您的gpg.conf文件中是否有指令
    use-agent
    ?另一个提示:GNOME Keyring可能正在您的系统上运行并干扰。谢谢,我相信默认情况下它将使用代理。我查看了一下,并没有发现任何keyring运行的实例,另外,当我以root身份运行时,gpg代理似乎能够使用该套接字。这看起来仍然像是权限问题吗?我认为它与root一起工作,因为它在自己的shell和上下文中运行。但是我会检查/home/.gnupg/中所有文件的权限。确保在主目录中以root用户身份运行gpg代理时,没有添加具有root权限的文件。您可以只擦除S.gpg-agent。尝试了几种删除套接字并重新创建它的方法,以及.gnupg目录。我以root用户身份安装了gpg包,这可能与此有关,root用户拥有我的用户试图访问的某些二进制文件的所有权?您使用的是GnuPG v1还是v2?
    gpg代理--version
    gpg--version
    的输出是什么?