Как правильно использовать 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 выполняется, даже если я ввожу неверный пароль.

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

  • Изменение пароля через linux PAM без запуска приложения как root
  • Запретить изменение пароля root в ldap - debian
  • Что определяет хеширование паролей pam?
  • Почему sudo -i не устанавливает XDG_RUNTIME_DIR для целевого пользователя?
  • hard vs - in limits.conf
  • Не удалось определить ваше имя tty в Debian Wheezy на ARM
  • Как отключить пользовательские tmpfs / run / user / 1000, tmpfs
  • Как система Linux синхронизирует wtmp и / var / run / utmp?
  • 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 - лучшая ОС в мире.