PAM 配置在每次登录失败时执行 shell 脚本

PAM 配置在每次登录失败时执行 shell 脚本

我想在每次登录失败时执行我的 shell 脚本。为此,我更新了文件/etc/pam.d/common-auth:来自(原始正文):

auth    required    pam_env.so
auth    required    pam_unix2.so

到:

auth    required    pam_env.so
auth    sufficient  pam_unix2.so
auth    optional    pam_exec.so seteuid /root/handle_failure.sh

对于大多数 PAM 服务(如 ssh、活动目录),它可以工作,但问题在于登录服务。如果我输入错误的密码,脚本将被执行,但登录也会成功。我怀疑pam_unix2由于将标志从必需更改为足够而忽略了模块的结果。

为了解决这个问题,我决定将 PAM 配置更改为新配置:新的正文/etc/pam.d/common-auth

auth    required    pam_env.so
auth    [success=1 new_authtok_reqd=ok ignore=ignore default=bad]  pam_unix2.so
auth    optional    pam_exec.so /root/handle_failure.sh
auth    optional    pam_exec.so /bin/true

这按预期工作,但我不喜欢最后一行auth optional pam_exec.so /bin/true。如果没有这一行,登录将无法工作,因为根据success=1,我们想跳过一行,然后就跳转到任何内容。有没有更好的方法来改进该配置?

相关内容