![从命令行或其他程序使用 OpenBSD /usr/libexec/auth/login_*](https://linux22.com/image/214491/%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%88%96%E5%85%B6%E4%BB%96%E7%A8%8B%E5%BA%8F%E4%BD%BF%E7%94%A8%20OpenBSD%20%2Fusr%2Flibexec%2Fauth%2Flogin_*.png)
这可能是一个 xy 问题,请随时为我指出其他方向。
我正在尝试使用 Lua 插件或 CheckPassword 程序为 dovecot 的 passdb 编写登录机制。最终目标是能够使用专门用于 dovecot 的 yubikey OTP,而不是强制以用户身份进行所有登录。
我发现这里的设施/usr/libexec/auth
似乎很有用。具体来说,我可以打电话/usr/libexec/auth/login_yubikey -d username
并得到密码提示。成功授权后,程序将打印authorize
到终端并以 0 状态退出。
现在,从另一个程序使用这些设施似乎很困难。login_*
使用的设施不是readpassphrase(3)
从 读取stdin
,而是从/dev/tty
(我必须承认,这里的区别让我困惑)。
我如何调用/usr/libexec/auth/login_*
提供密码的设施,而不是提示用户输入密码?
如果这是不可能的,我如何从程序中为用户授权给定的密码或密钥?