我正在尝试使用 PAM 针对 2FA 验证 OpenVPN(不是重要信息)。这是我的 PAM 配置:
account required pam_permit.so
auth required pam_google_authenticator.so secret=/etc/openvpn/google-authenticator/${USER} user=root forward_pass nullok debug authtok_prompt=pin
我在第一行(或我放置它的任何位置)遇到了问题。使用如下所示的行会导致 PAM 配置中断,原因我不理解:
/var/log/auth.log:
: No such file or directoryrary /lib/security/pam_permit.so PAM unable to dlopen(/lib/security/pam_permit.so
2022-01-06 23:02:53 err openvpn(pam_google_authenticato[9]: PAM adding faulty module: /lib/security/pam_permit.so
但是,在该行末尾添加任何内容(即使是空格或任何虚拟文本)都会使我的 PAM 配置完美运行!换句话说,有这个account required pam_permit.so
(注意末尾的空格),或者这个account required pam_permit.so DUMMY
就可以了!
我不明白这是什么原因。有人能帮我理解这里的问题吗?
我在 Docker 容器中(高山图像)。
我观察到的另一个奇怪的行为是:将nullok
或debug
标志放在第二行末尾会导致配置无效,但将它们放在中间可以解决问题。发生了什么事?T
答案1
好吧,事实证明这两种奇怪行为的问题都出在 CRLF 字符上。
一旦我使用 LF,一切都开始按预期工作。