Как изменить пароль openldap в качестве пользователя в CentOS?

Исходный

Я использую систему аутентификации openldap-2.4.40 и хочу, чтобы пользователь мог изменить свой пароль самостоятельно. При динамической конфигурации (это означает, что я использую не slapd.conf для конфигурации, а файлы в каталоге cn = config ), я попытался изменить пароль с помощью

ldappasswd -x -D "uid=<my_user>,ou=Users,dc=<some>,dc=<dc>" -W -A -S

. Это подсказывает мне для моего старого пароля (дважды) и для нового, а затем запрашивает пароль LDAP, заканчивая сообщением об ошибке: ldap_bind: Invalid credentials (49) .

  1. Почему команда запрашивает у меня пароль Пароль LDAP. Стандартный пользователь не должен знать этот пароль
  2. Почему программа завершается с недопустимыми учетными данными?

В моем /etc/openldap/slapd.d/cn=config/olcDatabase= {0} config.ldif У меня есть следующие настройки для olcAccess :

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none

Что мне нужно сделать, чтобы пользователь мог изменить свой пароль?

Изменить

В ответ на ответ Саймона Шюрга я добавляю содержимое /etc/pam.d/passwd :

auth       include      system-auth
account    include      system-auth
password   substack     system-auth
-password   optional    pam_gnome_keyring.so use_authtok
password   substack     postlogin

Если я изменю пароль с помощью passwd , все будет работать нормально, и я могу войти в систему с новым паролем, но только на машине с запущенным сервером LDAP. Я не могу войти в систему на всех других машинах («клиенты LDAP»).

Edit2

ldapsearch для пользователя или группы на сервере и клиентских машинах обеспечивает тот же результат. Однако вывод authconfig --test отличается, если выполняется как root или как пользователь:

Выполняется как root:

nss_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://10.0.0.254"
 LDAP base DN = "dc=example,dc=com"

pam_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://10.0.0.254"
 LDAP base DN = "dc=example,dc=com"
 LDAP schema = "rfc2307"

Выполняется как пользователь:

nss_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = ""
 LDAP base DN = ""

pam_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = ""
 LDAP base DN = ""
 LDAP schema = "rfc2307"

Если какая-либо информация для ответа отсутствует, сообщите мне, и я отредактирую вопрос и предоставлю вам информацию.

2
задан 4 October 2016 в 08:55
1 ответ

Если вы включите глобальную аутентификацию LDAP через PAM и сконфигурируете / etc / pam. d / passwd , пользователи могут изменить свой собственный пароль LDAP с помощью команды passwd , как это обычно бывает для локальных учетных записей Unix.

Я полагаю, вы уже можете войти в систему с пользователями ldap.

Чтобы разрешить изменение пароля с помощью команды passwd, вам необходимо отредактировать /etc/pam.d/passwd и добавить

password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

------ edit ------

Вместо редактирования файлов конфигурации вручную вы также можете использовать authconfig для настройки ldap на клиенте centos. Следующая команда настраивает аутентификацию LDAP таким образом, что пользователи могут изменять свой пароль с помощью общей команды passwd .

authconfig \
  --enableldap \
  --enableldapauth \
  --ldapserver='ldap://example.com/' \
  --ldapbasedn='dc=example,dc=com' \
  --update

Возможно, вы также захотите использовать следующие флаги для сохранения локальной аутентификации и автоматического создания несуществующего дома каталоги при входе в систему.

  --enablemkhomedir \ 
  --enableshadow \
  --enablelocauthorize \
  --passalgo=sha256 \

После предыдущей команды запустите authconfig --test , чтобы проверить настройки.
Проверьте следующие части вывода:

nss_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://example.com/"
 LDAP base DN = "dc=example,dc=com"

pam_unix is always enabled
 shadow passwords are enabled
 password hashing algorithm is sha256

pam_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://example.com/"
 LDAP base DN = "dc=example,dc=com"
 LDAP schema = "rfc2307"

pam_mkhomedir or pam_oddjob_mkhomedir is enabled (umask=0077)
Always authorize local users is enabled ()

Сменить пароль для пользователей теперь просто:

ldapuser@centos ~ % passwd
Changing password for user ldapuser.
(current) LDAP Password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
ldapuser@centos ~ %
4
ответ дан 3 December 2019 в 09:59

Теги

Похожие вопросы