Сервер OpenLDAP - это Ubuntu 18.04 с пакетом slapd версии 2.4.45 + dfsg-1ubuntu1.4.
Клиент - Ubuntu 18.04, использующий sssd 1.16.1-1ubuntu1.4 с бэкэндом LDAP.
я не использование открытых ключей SSH в LDAP; они просто находятся в файле authorized_keys на клиенте.
Я столкнулся с проблемой, из-за которой я не могу принудительно обновить пароль, если пользователь входит в систему с открытым ключом и обходит проверку пароля. Мне бы очень хотелось, чтобы PAM проверял с помощью SSSD / LDAP истекший пароль или для атрибута pwdReset, установленного на TRUE, и предлагал пользователю сбросить свой пароль. я не пытаюсь заблокировать учетные записи. Это не способ отключить учетные записи через определенное время. Пароль с истекшим сроком действия должен быть просто напоминанием о том, что им нужно установить новый пароль в соответствии с политикой паролей (я не придумал политику, не ненавидьте меня). Они должны установить новый пароль и продолжить свою работу.
В настоящее время, когда пользователи входят в систему с паролем и срок их действия истек (когда это происходит, используется maxPwdAge ppolicy), они получают стандартное приглашение UNIX passwd, и если они не меняют свой пароль, они загружаются из системы. Я бы хотел, чтобы такое поведение происходило и при входе в систему с открытыми ключами SSH.
Я понимаю, что когда они входят в систему с помощью ключа, они не привязываются к LDAP, их пароль не проверяется. Как лучше всего это сделать, используя стандартные PAM или SSSD или любые другие функции?
Я прочитал несколько веток, в которых обсуждались похожие проблемы; в 2013 году Брэд пытался выполнить аналогичную задачу http://www.openldap.org/lists/openldap-technical/201311/msg00237.html & https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org/thread/LGQSLF4ZJ2EWR7HJ2ZTMO53TXXLQ2KP2/ но встретил сопротивление и токсичность со стороны разработчиков с обеих сторон. Реализована ли эта функция с тех пор? Любая помощь приветствуется.
sssd.conf:
[domain/default]
enumerate = False
cache_credentials = True
ldap_search_base = dc=example,dc=org
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldap.example.org
ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt
ldap_id_use_start_tls = True
ldap_tls_reqcert = demand
[sssd]
services = nss, pam
config_file_version = 2
domains = default
[nss]
[pam]
[sudo]
[autofs]
[ssh]
[pac]
nsswitch.conf:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat systemd sss
group: compat systemd sss
shadow: compat sss
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files sss
ethers: db files
rpc: db files
netgroup: nis sss
sudoers: files sss