Назад | Перейти на главную страницу

Пользователи OpenLDAP в Arch Linux не могут изменить пароль

Я открыл офис, и мне НУЖНЫ централизованный вход и домашние каталоги для работы. Поскольку все рабочие станции будут работать с Arch и возникнут проблемы с разными версиями LDAP, я в конце концов пришел к выводу, что серверу LDAP также нужен Arch.

Я выполнил полностью чистую установку Arch на сервере и на рабочей станции. У обоих есть группы пакетов Arch "base" и "base-devel", установлены NTP, OpenSSH и OpenLDAP, на сервере также есть nss-pam-ldapd. Вот и все прямо сейчас.

  1. Я следил за https://wiki.archlinux.org/index.php/OpenLDAP но мне пришлось сделать следующее (а я еще не настроил SSL или TLS):
    • Прежде чем я скопировал DB_CONFIG.example, я запустил updateb и использовал locate DB_CONFIG
    • Мне пришлось запустить slaptest с параметром -u, чтобы подавить предупреждения базы данных
    • После запуска slaptest я сделал chown -R ldap: ldap на /etc/openldap/slap.d
    • systemctl start slapd не работает, как и sudo slapd -u ldap -g ldap, но sudo slapd работает.
    • После запуска sudo slapd я убил slapd и chown -R ldap: ldap / var / lib / openldap, но systemctl start slapd все еще не удался.
    • после chown -R ldap: ldap / etc / openldap я наконец смог использовать systemctl start slapd ... я предполагаю, что это была папка схемы, которую ldap не смог прочитать при запуске с пользователем ldap.
  2. Подписан https://wiki.archlinux.org/index.php/LDAP_Authentication
    • Я не запускал и не включал nscd
  3. Теперь я могу войти в систему с пользователями LDAP на рабочей станции, и я могу обновить каталог, используя свой rootdn.

Проблема: пользователи не могут изменить пароль с помощью passwd. LPAD возвращает:

password change failed: Insufficient access

/etc/slapd.conf (на сервере):

include     /etc/openldap/schema/core.schema
include     /etc/openldap/schema/cosine.schema
include     /etc/openldap/schema/inetorgperson.schema
include     /etc/openldap/schema/nis.schema
pidfile     /run/openldap/slapd.pid
argsfile    /run/openldap/slapd.args
access to attrs=userPassword
    by self write
    by anonymous auth
    by * none
access to *
    by self write
    by * read
database    bdb
suffix      "dc=testing,dc=com"
rootdn      "cn=Manager,dc=testing,dc=com"
rootpw      {SSHA}ntsD5qrvHJtMflarQPhJzapiEEnqH2/L
directory   /var/lib/openldap/openldap-data
index   objectClass eq
index   uid             pres,eq
index   mail            pres,sub,eq
index   cn              pres,sub,eq
index   sn              pres,sub,eq
index   dc              eq

/etc/openldap/ldap.conf (на клиенте):

BASE   dc=testing,dc=com
URI    ldap://192.168.1.50

/etc/nslcd.conf (на клиенте):

uid nslcd
gid nslcd
uri ldap://192.168.1.50/
base dc=testing,dc=com

/etc/pam.d/system-auth (на клиенте):

auth      sufficient  pam_ldap.so
auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so
account   sufficient  pam_ldap.so
account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so
password  sufficient  pam_ldap.so
password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so
session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_ldap.so
session   optional  pam_permit.so

/etc/pam.d/passwd (на клиенте):

password    sufficient  pam_ldap.so
password    required    pam_unix.so sha512 shadow nullok

Итак, наконец, мои вопросы:

  1. Во-первых, где лучше всего почитать об этом?
  2. Во-вторых, как мне отлаживать себя? Arch использует systemd, где системный журнал для систем на основе systemd?
  3. Что представляет собой пакет mlocate с updateb и locate? Мне нужно его использовать? Он не упоминается в Archwiki, но упоминается во многих других местах.
  4. И актуальный вопрос: почему мои пользователи не могут менять пароли с помощью passwd

на клиенте вы должны раскомментировать /etc/nslcd.conf как это :

rootpwmoddn cn = admin, dc = example, dc = com

и измените cn и dc как rootdn в slapd.conf на сервере