Сервер OpenLDAP - это Ubuntu 18.04, на котором работает пакет slapd версии 2.4.45 + dfsg-1ubuntu1.4
Клиент - это Ubuntu 18.04, использующий sssd 1.16.1-1ubuntu1.4 с бэкэндом LDAP.
Я не использую S SH publi c ключи в LDAP; они просто находятся в файле author_keys на клиенте.
Я столкнулся с проблемой, при которой я не могу принудительно установить обновления пароля, если пользователь входит в систему с помощью ключа publi c и обходит проверку пароля. Я хотел бы, чтобы PAM проверил с помощью SSSD / LDAP пароль с истекшим сроком действия или атрибут pwdReset, установленный в значение TRUE, и попросил бы пользователя сбросить свой пароль. Я не пытаюсь заблокировать учетные записи . Это не способ отключить учетные записи через определенное время. Пароль с истекшим сроком должен просто напоминать, что им нужно установить новый пароль, согласно политике паролей (я не придумал политику, не ненавидь меня). Они должны установить новый пароль и продолжить свою работу.
В настоящее время, когда пользователи входят в систему с паролем и срок действия их пароля истекает (maxPwdAge ppolicy определяет, когда это происходит), они получают стандартное приглашение UNIX passwd и если они не меняют свой пароль, они загружаются из системы. Я хотел бы, чтобы это происходило, когда они входят в систему с ключами S SH publi c.
Я понимаю, что когда они входят в систему с ключом, они не привязываются к LDAP, их пароль не проверен. Каков наилучший способ, используя стандартный PAM или SSSD или любые другие функции, чтобы сделать это?
Я прочитал несколько потоков, обсуждающих подобные проблемы; в 2013 году Брэд попытался выполнить sh аналогичную задачу 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