Как заставить пользователей обновить пароль с истекшим сроком действия (ppolicy), когда они входят в систему с ключами S SH? - PullRequest
0 голосов
/ 11 февраля 2020

Сервер 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
...