Я хотел бы выполнять свой скрипт оболочки при каждом сбое входа в систему. Для этого я обновил файл /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, active directory), он работает , но проблема с сервисом входа в систему. Если я введу неправильный пароль, скрипт будет выполнен, но вход в систему будет успешным. Я подозреваю, что результат модуля 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
мы хотим пропустить одну строку и перейти к нулю. Это лучший способ улучшить эту конфигурацию?
Спасибо за любую помощь.