Наши клиенты (Ubuntu 14.04) могут входить в систему с входом LDAP. Как только у них нет сети, они не могут войти в систему с помощью LDAP.
Есть ли способ кэшировать эти пароли и имена пользователей, чтобы ноутбуки могли работать, если у них нет соединения LDAP?
Debian и Ubuntu предоставляют пакет libpam-ccreds, который кэширует учетные данные для входа в сеть. Из описания пакета:
Этот пакет предоставляет рабочие станции Linux средства для локальной аутентификации с использованием корпоративной идентификации, когда сеть недоступна. Используемый вместе с утилитой nss_updatedb, он обеспечивает механизм для автономного использования сетевых каталогов. Они предназначены для работы с libpam-ldap и libnss-ldap.
Вы можете использовать демон sssd.
У него есть функция учетных данных кеша в файле конфигурации:
cache_credentials = true
После входа в систему учетные данные пользователя кэшируются, чтобы он мог снова войти в систему без доступа к серверу LDAP.
Мой OpenLDAP был базовой настройкой без SSL или TLS, я думаю, это была проблема.
Я загрузил устройство для OpenLDAP через http://www.turnkeylinux.org/openldap и настройте его за считанные минуты. Это устройство поддерживает SSL и TLS на основе самоподписанного сертификата.
Теперь с настроенным TLS и самоподписанным сертификатом параметр ldap_tls_reqcert = never должен использоваться в файле sssd.conf.
Для кеширования учетных данных в Linux в основном используются две программы sssd и ccreds как упоминалось в других ответах. Я попытался sssd
но он установил большое количество дополнительных разделяемых библиотек и зависимых пакетов, которые мне не нужны. Поэтому я решил использовать легкий ccreds
. Но мне не удалось найти подробных инструкций, как ее использовать, в основном только общие советы по использованию этой программы. Итак, я уточню ответ @AndrewSchulman поделиться с сообществом, как мне это удалось. Я использую установку Debian Buster и работаю онлайн-система аутентификации / авторизации Kerberos / OpenLDAP. Я получаю действующий билет Kerberos с kinit
и при входе в систему.
Сначала установите необходимые программы:
~$ sudo apt install libnss-db nss-updatedb libpam-ccreds
С участием sudo pam-auth-update
Я установил параметры
[*] Ccreds credential caching - password saving
[*] Ccreds credential caching - password checking
В /etc/nsswitch.conf
Мне нужно изменить:
passwd: files ldap [NOTFOUND=return] db
group: files ldap [NOTFOUND=return] db
Теперь я могу проверить, созданы ли кеширующие базы данных:
~$ sudo nss_updatedb ldap
passwd... done.
group... done.
~$ ls -l /var/lib/misc/*.db
-rw-r--r-- 1 root root 8192 Feb 26 12:46 /var/lib/misc/group.db
-rw-r--r-- 1 root root 8192 Feb 26 12:46 /var/lib/misc/passwd.db
~$ su -l ingo
ingo: ~$ logout
~$ ls -l /var/cache/.security.db
-rw------- 1 root ingo 8192 Feb 26 12:55 /var/cache/.security.db
~$ sudo cc_dump
Credential Type User Service Cached Credentials
----------------------------------------------------------------------------------
Salted SHA1 ingo any c2da4cd14bd00bd7ecd72ab15e565e9149b46fd5
Нет, это не мои учетные данные SHA1 ;-) Поскольку я использую пароль в виде открытого текста в командной строке, я не буду кэшировать его в истории bash.
~$ history -a
~$ sudo cc_test -validate any ingo <password>
pam_cc_validate_credentials: Success
~$ history -c
~$ history -r
Вы должны найти пользователей и группы, которые определены только в каталоге LDAP, и у вас должна быть возможность войти в систему, даже если вы не в сети:
~$ sudo ip link set eth0 down
~$ getent passwd|group
~$ su -l ingo
ingo: ~$ logout
~$ sudo ip link set if up
Я заметил некоторые задержки после установки, но они исчезают после перезагрузки.
Ссылки:
ubuntu - PamCcredsHowto