Лаборатория Maint, настройка openldap 2.6 для Samba
Maint Laboratory

Лаборатория Maint

 
  Главная     Программы     RPM пакеты     Библиотеки     Документация     Заметки     Услуги     Контакты  

 

Дополнительные настройка openldap 2.6.x для работы Samba и Dovecot на Fedora 36



  Это небольшое дополнение к настройке openldap проследних версий по подключению к Samba 4 (в качестве контроллера домена (PDC)) и Dovecot. Подробная настройка была описана в ldap+samba и postfix+dovecot+ldap.html ..


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


dn: uid=root,ou=People,dc=example,dc=ru
uid: root
cn: root
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {crypt}x
loginShell: /bin/bash
uidNumber: 0
gidNumber: 0
homeDirectory: /root
gecos: root
 
......................

и сведений о группах Linux


dn: cn=root,ou=Group,dc=example,dc=ru
objectClass: posixGroup
objectClass: top
cn: root
userPassword: {crypt}x
gidNumber: 0
......................


выдавалась такая диагностика


ldapadd -xWD cn=root,dc=example,dc=ru -f passwd.ldif


Adding new entry "uid=root,ou=People,dc=example,dc=ru"
ldap_add: Invalid syntax (21)
   additional info: objectClass: value #0 invalid per syntax

 


ldapadd -xWD cn=root,dc=example,dc=ru -f group.ldif


Adding new entry "uid=root,ou=People,dc=example,dc=ru"
ldap_add: Invalid syntax (21)
   additional info: objectClass: value #0 invalid per syntax

 

Как видно, ошибка указывает в обоих случаях на objectClass. Значит такого описания в базе данных еще нет. После ковыряния в инете я узнал и просмотра базы я узнал, что таких objectClass просто нет. Но они есть в файле /etc/openldap/schema/nis.ldif. Видимо по умолчанию в базу они не попадают, не смотря что описаны в slapd.conf. Пришлось добавить и дополнительные файлы из-за зависимостей и выдачи подобных описанными выше ошибок.


$ ldapadd -c -Y EXTERNAL -Q -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
$ ldapadd -c -Y EXTERNAL -Q -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
$ ldapadd -c -Y EXTERNAL -Q -H ldapi:/// -f /etc/openldap/schema/nis.ldif
$ ldapadd -c -Y EXTERNAL -Q -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif



После этого добавление пользователей и групп прошло успешно.
Теперь нужно было добавить работу с samba. Файл, можно взять /usr/share/doc/samba/LDAP/samba.ldif и /usr/share/doc/samba/LDAP/samba.schema/


$ ldapadd -c -Y EXTERNAL -Q -H ldapi:/// -f /etc/openldap/schema/samba.ldif


Прошу заметить, что из всех вышеупомянутых утилит, в последних версиях ушел параметр -h hostname.

С samba на этом можно закончить. Все остальное по старой инструкции ldap+samba , не забывая убирать параметр -h hostname.

Теперь беремся за Dovecot. Вот вид входящего файла


dn: mailBox=root@example.ru,dc=example,dc=ru
mailBox: root@example.ru
status: enabled
objectClass: mailAccount
userPassword: {crypt}xxxxxxxxxxxxxxxxxxxxxxxxxx

 


  Для него у нас нет файла ldif для загрузки в базу, если уж openldap не берет из schema. В просторах интернета нашел , что делать

$ echo "/etc/openldap/schema/vmail.schema" > /tmp/dummy.conf
$ mkdir /tmp/dummy.d
$ slaptest -F /tmp/dummy.d -f /tmp/dummy.conf
config file testing succeeded


Заходим в каталог /tmp/dummy.d/cn=config/cn=schema. Там есть необходимый для нас файл cn={0}vmail.ldif, который нужно немного доработать. Нас интересуют первые три строчки и конец файла.


dn: cn={0}vmail
objectClass: olcSchemaConfig
cn: {0}vmail
 

заменяем на


dn: cn=vmail,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: vmail
 

В конце файла удаляем строки вида


structuralObjectClass: olcSchemaConfig
entryUUID: ff54fd44-bd0c-1031-8cd7-774f84d3cea3
creatorsName: cn=config
createTimestamp: 20221107095525Z
entryCSN: 20221107095525.479674Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20221107095525Z
 


Отредактированый файл копируем в /etc/openldap/schema/vmail.ldif.
Далее по накатаной


$ ldapadd -c -Y EXTERNAL -Q -H ldapi:/// -f /etc/openldap/schema/vmail.ldif



Остальное по старой инструкции postfix+dovecot+ldap.html

На этом все