Назад | Перейти на главную страницу

Срок действия пароля PAM Winbind истек

У нас есть настройка 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
  • Если числовой uid <= 10000000 и член группы AD_Admins, стек учетной записи завершится с успешной строкой 2.
  • Если у пользователя есть запись в /etc/passwd Помимо LDAP, стек учетных записей успешно завершится на строке 6.
  • Если числовой uid <500, стек учетной записи будет успешно завершен на строке 7. (это маловероятно, потому что ваша проверка> = 500 в auth стек)

Все вышеперечисленные сценарии приведут к закрытию стека счетов до проведения бухгалтерских проверок pam_krb5.so и pam_windbind.so.