У нас есть настройка Winbind / Kerberos на RHEL для аутентификации AD. Работает нормально, однако я заметил, что, когда срок действия пароля истек, мы получаем предупреждение, но доступ к оболочке все еще предоставляется.
Как правильно с этим справиться? Можно ли сказать PAM закрыть сеанс, как только он увидит, что срок действия пароля истек?
Пример:
login as: ad-user
ad-user@server.domain.com's password:
Warning: password has expired.
[ad-user@server ~]$
Содержимое /etc/pam.d/system-auth:
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.so
account [default=2 success=ignore] pam_succeed_if.so quiet uid >= 10000000
account sufficient pam_succeed_if.so user ingroup AD_Admins debug
account requisite pam_succeed_if.so user ingroup AD_Developers debug
account required pam_access.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_krb5.so
account [default=bad success=ok user_unknown=ignore] pam_winbind.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_krb5.so use_authtok
password sufficient pam_winbind.so use_authtok
password required pam_deny.so
session [default=2 success=ignore] pam_succeed_if.so quiet uid >= 10000000
session sufficient pam_succeed_if.so user ingroup AD_Admins debug
session requisite pam_succeed_if.so user ingroup AD_Developers debug
session optional pam_mkhomedir.so umask=0077 skel=/etc/skel
session optional pam_keyinit.so revoke
session required pam_limits.so
session optional pam_mkhomedir.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_krb5.so
Нам нужно знать числовой uid
пользователя, от которого вы входите, чтобы знать наверняка. Далее следует предположение.
Блокировки авторизации обычно происходят в account
стек, так что давайте начнем с поиска там. Сразу подозреваются записи, завершающие стек модуля. Я не вижу done
где-нибудь здесь, поэтому строки с sufficient
это те, на которых нам нужно сосредоточиться. Это позволяет нам сосредоточиться на этих строках в верхней части стека:
account [default=2 success=ignore] pam_succeed_if.so quiet uid >= 10000000
account sufficient pam_succeed_if.so user ingroup AD_Admins debug
account requisite pam_succeed_if.so user ingroup AD_Developers debug
account required pam_access.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
/etc/passwd
Помимо LDAP, стек учетных записей успешно завершится на строке 6.auth
стек)Все вышеперечисленные сценарии приведут к закрытию стека счетов до проведения бухгалтерских проверок pam_krb5.so
и pam_windbind.so
.