У меня есть система Centos-7.6, использующая PAM для аутентификации пользователей LDAP. Мне удалось заставить пользователя LDAP изменить свой пароль, установив для shadowLastChange значение 0, поэтому его пароль должен быть изменен.
Но если я действую как этот пользователь или зарегистрируюсь в системе приветствия, он примет любой пароль на запрос «текущий (UNIX) пароль: приглашение». Конечно, это приглашение приходит после уже введя пароль пользователя, что естественно при использовании su или greeter.
Password:
You are required to change your password immediately (root enforced)
need a new password
Changing password for test_user.
(current) UNIX password: <--------- anything you type here will be accepted
New password:
При использовании ssh test_user @ centos7server я все равно вынужден изменить пароль, но в этом случае пароль проверяется правильно, а неверные пароли не допускаются.
You are required to change your password immediately (root enforced)
need a new password
Last login: Tue Sep 3 15:42:36 2019
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user test_user.
Changing password for test_user.
(current) UNIX password: <---------- password is properly verified
passwd: Authentication token manipulation error
ПРИМЕЧАНИЕ: использование аналогичных настроек в системе Centos-6.10 не позволяет использовать неверный пароль, поэтому он работает правильно.
Вот моя установка /etc/pam.d на машине Centos-7:
/etc/pam.d/system-auth:
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_access.so accessfile=/etc/security/access.netgroup.conf
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
/etc/pam.d/password-auth идентичен system-auth (см. выше)
/etc/pam.d/sshd:
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
account required pam_access.so accessfile=/etc/security/access.netgroup.conf
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
/etc/pam.d/login:
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth substack system-auth
auth include postlogin
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
/etc/pam.d/su:
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
Любая помощь будет принята с благодарностью. Спасибо