Как правильно использовать PAM для выполнения скрипта при неудаче входа в систему

Я пытаюсь использовать подключаемый модуль аутентификации для выполнения сценария при неудачной попытке входа в систему Arch Linux. Arch Linux не имеет файла common-auth, и я решил не создавать его. Вместо этого я обнаружил, что стек PAM использует файл system-auth для некоторых функций, и я решил его отредактировать.

Исходный файл system-auth был следующим:

#%PAM-1.0 auth required pam_unix.so try_first_pass nullok auth optional pam_permit.so auth required pam_env.so account required pam_unix.so account optional pam_permit.so account required pam_time.so password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_limits.so session required pam_unix.so session optional pam_permit.so 

Чтобы выполнить скрипт при неудачном входе в систему, я изменил блок auth следующим образом

 auth [success=1 default=ignore] pam_unix.so try_first_pass nullok auth optional pam_exec.so <path to the script file> auth optional pam_permit.so auth required pam_env.so account required pam_unix.so account optional pam_permit.so account required pam_time.so password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_limits.so session required pam_unix.so session optional pam_permit.so 

Команда sudo – это одна команда, которая использует этот файл system-auth в стеке PAM в моей системе. Однако, когда я пытаюсь использовать команду sudo после редактирования файла, как указано выше, команда sudo выполняется, даже если я ввожу неверный пароль.

Был бы признателен, если бы кто-нибудь мог сказать мне, что здесь происходит, и помочь мне исправить это

  • Почему pam_mount запрашивает пароль?
  • Как «заблокировать» мой Linux-ящик на несколько часов?
  • Что происходит, когда ваш пароль истекает, и вы используете проверку подлинности ключа?
  • /etc/pam.d/* Как отладить вывод pam_ldap?
  • Как аутентифицировать учетные записи Linux с помощью PAM с использованием PHP без предоставления тэга www-data
  • Аутентификация PAM и SSH-доступ на основе информации о пользователе, хранящейся в sqlite3
  • SLES 11SP4 LDAP - ошибка, пытающаяся связать как пользователь - (Недействительные учетные данные)
  • Не удается выполнить root после редактирования PAM-консолидации на ящике Rackspace Linux
  • One Solution collect form web for “Как правильно использовать PAM для выполнения скрипта при неудаче входа в систему”

    От man pam.d , описание required :

     required [success=ok new_authtok_reqd=ok ignore=ignore default=bad] 

    По default=ignore отказ от pam_unix больше не приводит к сбою аутентификации, так как ваш скрипт, а затем pam_permit.so будет использоваться, и pam_permit.so всегда будет успешным. pam_unix все равно должен иметь default=bad :

     bad this action indicates that the return code should be thought of as indicative of the module failing. If this module is the first in the stack to fail, its status value will be used for that of the whole stack. 
    Linux и Unix - лучшая ОС в мире.