使用 PAM 解锁密码(gpg-preset-passphrase)

使用 PAM 解锁密码(gpg-preset-passphrase)

我在用着经过作为我的密码管理器浏览器通行证插件和密码菜单。目前,我必须在控制台中手动解锁我的 GPG 密钥,然后才能在网站上使用该插件(否则它会失败并出现错误,指出它无法解密密码文件)或 passmenu(失败而没有错误)。

我希望在登录时自动解锁我的 GPG 密钥,以便无缝使用密码。从我的研究中,我收集了以下内容:

我已经创建/usr/local/bin/gpg-pam-exec

#!/usr/bin/env bash

# read pam provided password token
read token

su $PAM_USER -c "/usr/local/bin/gpg-preset-passphrase" <<< "$token"

/usr/local/bin/gpg-preset-passphrase

#!/usr/bin/env bash

# read pam provided password token
read token

# get the keygrips of my GPG keys
fingerprints=($(gpg -K --fingerprint --with-colons | sed -nr '/fpr/,+1{s/^grp:+(.*):$/\1/p}'))

# preset each fingerprint
for fingerprint in "${fingerprints[@]}"
do
    /usr/libexec/gpg-preset-passphrase -v -c "$fingerprint" <<< "$token"
done

并使它们可执行chmod a+x。然后我附加了

session     optional    pam_exec.so log=/var/log/pam_exec.log expose_authtok /usr/local/bin/gpg-pam-exec

/etc/pam.d/slim确保我已经allow-preset-passphrase~/.gnupg/gpg-agent.confuse-agent~/.gnupg/gpg.conf

手动运行/usr/local/bin/gpg-preset-passphrase可获得所需结果。但是,重新启动并登录后,我看到以下内容/var/log/pam_exec.log

*** Thu May  2 10:49:38 2019
gpg-preset-passphrase: caching passphrase failed: Not implemented
gpg-preset-passphrase: caching passphrase failed: Not implemented

我真的不知道接下来该怎么做。我已经确信脚本是以正确的用户身份运行的 ( echo $(id -un)),这让我相信gpg-agent忽略配置文件。

我尝试添加

gpgconf --kill gpg-agent
gpg-agent --options /home/$PAM_USER/.gnupg/gpg-agent.conf --daemon 

/usr/local/bin/gpg-preset-passphrase但这也不起作用。

非常感谢任何指点。

答案1

似乎有一个项目正是这样做的:cruegge/pam-gnupg

这里还有一个简单的脚本:阿普苏/5893348这似乎是作为使者- 看这个问题

相关内容