Вот пример дистрибутивного файла pam_conf с моей системы:
auth required pam_env.so
auth requisite pam_faillock.so preauth
auth [success=1 default=ignore] pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail
auth optional pam_permit.so
Строчка с проверкой пароля содержит строку "success=1", которая означает "при успешной проверке пропустить одну строку". При неудачной запускается pam_faillock, который блокирует учётную запись пользователя на определённое время после определённого числа неудачных попыток, и default=die останавливает обработку, при успешной запускается pam_permit, разрешающий вход пользователя.
Если вам нужно запустить какую-то команду при неудачном вводе пароля, можно добавить pam_exec, увеличив счётчик пропускаемых строк на 1.
auth [success=2 default=ignore] pam_unix.so nullok try_first_pass
auth optional pam_exec.so <путь к программе, запускающейся при вводе неверного пароля>
auth [default=die] pam_faillock.so authfail
auth optional pam_permit.so