这可能是一个 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_*
提供密码的设施,而不是提示用户输入密码?
如果这是不可能的,我如何从程序中为用户授权给定的密码或密钥?