我想在每次登录失败时执行我的 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
,我们想跳过一行,然后就跳转到任何内容。有没有更好的方法来改进该配置?