====== OpenLDAP ====== {{:openldap:ldapworm.gif|}} [[https://www.openldap.org/images/headers/LDAPworm.gif|Оригинал]] OpenLDAP — открытая реализация сервера каталогов [[ldap:ldap|LDAP]]. http://www.openldap.org :!: В OpenLDAP 2.3 и более новых версиях осуществлён переход к использованию механизма ''динамической конфигурации времени исполнения'', этот механизм также называется ''cn=config (OLC)''. \\ При использовании этого механизма сервер хранит свои конфигурационные данные в базе данных ''LDIF'', обычно в папке ''/etc/openldap/slapd.d'' и позволяет менять все настройки ''slapd'' на сразу, не требуя перезагрузки демона ''slapd'' для вступления изменений в силу. \\ Все приведённые ниже примеры и настройки даны для ''cn=config (OLC)'' и формата БД: ''[[openldap:backends#MDB|MDB]]''. Примеры которые здесь приведены могут быть использованы для настройки следующих решений: * [[roundcube:ldap#Адресная книга|Адресная книга в Roundcube]] * [[isc-dhcp-server:isc-dhcp-server#LDAP|ISC DHCP сервер]] * [[powerdns:powerdns#LDAP|Настройка сервера PowerDNS]] Примеры: * [[openldap:examples|OpenLDAP: Примеры]] * [[samba:examples_ldap|Примеры структур Samba LDAP]] ====== Установка ====== apt-get install slapd ldap-utils При первоначальной настройке пакета потребуется ввести пароль администратора LDAP сервера (''admin'') Если после установки пакета нужно задать имя домена, для этого нужно использовать следующие команды: - :!: При выполнении этой команды происходит удаление БД, будьте внимательны ! dpkg-reconfigure slapd - Запуск сервера: service slapd start Статус сервера и список активных соединений: #!/bin/bash echo "Статус:" netstat -tulpn |grep slapd echo "Активные соединения:" sockstat|grep :389 ====== Настройка ====== Файл настройки запуска сервера: ''/etc/default/slapd'' Запуск на всех интерфейсах: SLAPD_SERVICES="ldap:/// ldapi:///" Только на ''localhost'': SLAPD_SERVICES="ldap://127.0.0.1:389/ ldapi:///" ====== Одиночный сервер ====== - [[#Добавление схем|Добавление схем]] - [[#Создание пользователей|Создание пользователей]] - [[#Настройка прав доступа|Настройка прав доступа]] - [[#Индексы|Индексы]] ====== Репликация ====== Ниже описан пример с репликацией данных между серверами: * Один главный сервер, несколько подчиненных. * Изменение данных происходит только на главном сервере. * Подчиненные серверах предоставляют данные **только для чтения**. Такое решение удобно использовать для распределения нагрузки между серверами. [[openldap:examples#Схема репликации|Пример схемы репликации]] ===== Главный сервер ===== - [[#Добавление схем|Добавление схем]] - [[#Создание пользователей|Создание пользователей]] - [[#Настройка прав доступа|Настройка прав доступа]] - [[#Индексы|Индексы]] - [[#Наложение для реплики на главном сервере|Наложение для реплики на главном сервере]] - [[#Настройка лимитов|Настройка лимитов]] ===== Подчинённый сервер ===== Это решение можно использовать и для нескольких DIT Порядок настройки: - [[#Добавление схем|Добавление схем]] - [[#Создание нового DIT|Создание нового DIT]] - [[#Настройка прав доступа|Настройка прав доступа]] - [[#Индексы|Индексы]] - [[#Настройка соединения с главным сервером|Настройка соединения с главным сервером]] Перед выполнением перечисленных ниже процедур, в файлах ''.ldif'' нужно установить соответствующий номер БД. (в примерах используется ''{1}''): * [[#Создание нового DIT|Создание нового DIT]] * [[#Настройка прав доступа|Настройка прав доступа]] * [[#Настройка соединения с главным сервером|Настройка соединения с главным сервером]] :!: Для большей безопасности на отдельных серверах можно использовать следующее решение: [[#srvs|Пользователь для чтения всех данных кроме паролей]] :!: При необходимости реплику можно удалить: [[#Удаление соединения с главным сервером|Удаление соединения с главным сервером]] ====== Инициализация ====== :!: Эта последовательность команд полностью удаляет БД ! #!/bin/bash service slapd stop rm -r /var/lib/ldap/* dpkg-reconfigure slapd service slapd start ====== Добавление схем ====== :!: Команды выполняются от имени пользователя ''root'' * [[postfix:postfix#Работа с OpenLDAP|Postfix]] * [[isc-dhcp-server:isc-dhcp-server#LDAP|ISC DHCP сервер]] * [[powerdns:powerdns#LDAP|Сервер PowerDNS]] * [[samba:samba#LDAP|Сервер Samba]] * [[asterisk:ldap#OpenLDAP|Asterisk]] * [[freeradius:freeradius#OpenLDAP|FreeRADIUS]] ===== Qmail ===== :!: Схема Qmail не совместима с схемой [[#Misc|Misc]] {{:openldap:qmail.ldif|qmail.ldif}} ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/qmail.ldif ===== Misc ===== :!: Схема Misc не совместима с схемами [[postfix:postfix#Работа с OpenLDAP|Postfix]] и [[#Qmail|Qmail]] dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: mailLocalAddress eq - add: olcDbIndex olcDbIndex: rfc822MailMember eq ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f olcDbIndex_misc.ldif ===== inetorgperson ===== ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif ====== Создание пользователей ====== Во всех примерах пароль: ''ПАРОЛЬ'' ===== Создание хеша пароля ===== slappasswd -h '{SSHA}' -s 'ПАРОЛЬ' ===== repl ===== Пользователь для репликации. Фактически этому пользователю доступны все поля в режиме "только чтение". dn: cn=repl,dc=domain objectClass: simpleSecurityObject objectClass: organizationalRole cn: repl description: replicator userPassword: {SSHA}8qlXsh1GzfvkLoOI8x19QF1/7KaN+Qo8 ldapadd -Y EXTERNAL -H ldapi:/// -f repl.ldif ===== srvs ===== Пользователь для чтения всех данных кроме паролей. Если настройка прав доступа к серверу выполнена по описанию: [[#Настройка прав доступа|Настройка прав доступа]], то можно создать специального пользователя, например ''srvs'', для выполнения репликации всех данных кроме паролей. dn: cn=srvs,dc=domain objectClass: simpleSecurityObject objectClass: organizationalRole cn: srvs description: services userPassword: {SSHA}8qlXsh1GzfvkLoOI8x19QF1/7KaN+Qo8 ldapadd -Y EXTERNAL -H ldapi:/// -f srvs.ldif ===== addressbook ===== Пользователь для [[roundcube:ldap#Адресная книга|Адресной книги в Roundcube]]. dn: cn=addressbook,dc=domain objectClass: simpleSecurityObject objectClass: organizationalRole cn: addressbook description: addressbook user userPassword: {SSHA}8qlXsh1GzfvkLoOI8x19QF1/7KaN+Qo8 ldapadd -Y EXTERNAL -H ldapi:/// -f addressbook.ldif ====== olcRootPW ====== olcRootPW — пароль администратора LDAP сервера (admin). ===== Создание olcRootPW ===== Используется при [[#Создание нового DIT|создании нового DIT]] Нужно создать [[#Создание хеша пароля|хеш пароля]] и заменить значение ''olcRootPW'' на полученный в файле ''olcRootPW.ldif''. Пример: dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}rxcXIxAZM40zRAIrwt1Q8l/KNlV7Br4a ldapadd -Y EXTERNAL -H ldapi:/// -f olcRootPW.ldif ===== Изменение olcRootPW ===== Нужно создать [[#Создание хеша пароля|хеш пароля]] и заменить значение ''olcRootPW'' на полученный в файле ''olcRootPW.ldif''. Пример: dn: olcDatabase={1}mdb,cn=config changetype: modify delete: olcRootPW dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}rxcXIxAZM40zRAIrwt1Q8l/KNlV7Br4a ldapadd -Y EXTERNAL -H ldapi:/// -f olcRootPW.ldif ====== Настройка прав доступа ====== В этом примере к стандартным полям добавлены права на: * [[samba:samba|Samba]]: ''sambaLMPassword'',''sambaNTPassword'',''sambaPwdLastSet'' * [[roundcube:ldap#Адресная книга|Адресная книга в Roundcube]] Пользователи: * ''admin'' — все права. Первоначально пароль задаётся при выполнении [[#Инициализация|инициализации]], возможно [[#Изменение olcRootPW]] * ''repl'' — [[#repl|Репликатор]] (все объекты только для чтения) * ''srvs'' — [[#srvs|Пользователь для чтения всех данных кроме паролей]], используется для служб DNS, DHCP * ''addressbook'' — [[#addressbook|Пользователь]] для [[roundcube:ldap#Адресная книга|Адресной книги в Roundcube]] dn: olcDatabase={1}mdb,cn=config changetype: modify delete: olcAccess dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to dn.subtree="ou=addressbook,dc=domain" by dn="cn=addressbook,dc=domain" write by * read dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {1}to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPwdLastSet by self write by anonymous auth by dn="cn=admin,dc=domain" write by dn="cn=repl,dc=domain" read by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {2}to dn.one="ou=users,dc=domain" by self write by dn="cn=repl,dc=domain" read by dn="cn=srvs,dc=domain" read by anonymous read dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {3}to dn.one="ou=groups,dc=domain" by self write by dn="cn=repl,dc=domain" read by dn="cn=srvs,dc=domain" read by anonymous read dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {4}to dn.regex="(.+,)?(uid=[^,]+,ou=users,dc=domain)$" by dn.exact,expand="$2" write by dn="cn=repl,dc=domain" read by self write dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {5}to dn.subtree="ou=dhcp,dc=domain" by dn="cn=srvs,dc=domain" read by dn="cn=repl,dc=domain" read by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {6}to dn.subtree="ou=dns,dc=domain" by dn="cn=srvs,dc=domain" read by dn="cn=repl,dc=domain" read by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {7}to dn.subtree="ou=aliases,dc=domain" by dn="cn=srvs,dc=domain" read by dn="cn=repl,dc=domain" read by anonymous auth by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {8}to dn.subtree="ou=computers,dc=domain" by dn="cn=srvs,dc=domain" read by dn="cn=repl,dc=domain" read by anonymous auth by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {9}to dn.subtree="ou=idmap,dc=domain" by dn="cn=srvs,dc=domain" read by dn="cn=repl,dc=domain" read by anonymous auth by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {10}to dn.base="cn=admin,dc=domain" by dn="cn=repl,dc=domain" read by anonymous auth by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {11}to dn.base="cn=srvs,dc=domain" by dn="cn=repl,dc=domain" read by anonymous auth by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {12}to dn.base="cn=repl,dc=domain" by dn="cn=repl,dc=domain" read by anonymous auth by * none dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {13}to * by self write by dn="cn=admin,dc=domain" write by dn="cn=repl,dc=domain" read by * read dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {14}to dn.base="" by * none ldapadd -Y EXTERNAL -H ldapi:/// -f olcAccess.ldif ====== Индексы ====== :!: Нужно выполнить [[#Индексирование]], чтобы избежать ошибок типа: slapd: <= bdb_equality_candidates: (mailLocalAddress) not indexed ===== Удаление всех индексов ===== При использовании [[openldap:backends#MDB|MDB]] нельзя только удалить все индексы, нужно создать какие-то, поэтому в этот файл включено также //создание индексов по умолчанию//: dn: olcDatabase={1}mdb,cn=config changetype: modify delete: olcDbIndex - add: olcDbIndex olcDbIndex: cn eq,pres,sub - add: olcDbIndex olcDbIndex: sn eq,pres,sub - add: olcDbIndex olcDbIndex: uid eq,pres,sub - add: olcDbIndex olcDbIndex: objectClass eq - add: olcDbIndex olcDbIndex: uidNumber,gidNumber eq - add: olcDbIndex olcDbIndex: member,memberUid eq ldapadd -Y EXTERNAL -H ldapi:/// -f olcDbIndex_delete.ldif ===== Создание общих индексов ===== dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: default sub - add: olcDbIndex olcDbIndex: ou eq,pres,sub - add: olcDbIndex olcDbIndex: o eq,pres,sub - add: olcDbIndex olcDbIndex: givenname eq,pres,sub - add: olcDbIndex olcDbIndex: loginShell eq,pres - add: olcDbIndex olcDbIndex: uniqueMember eq - add: olcDbIndex olcDbIndex: entryUUID eq - add: olcDbIndex olcDbIndex: entryCSN eq - add: olcDbIndex olcDbIndex: displayName pres,sub,eq - add: olcDbIndex olcDbIndex: telephoneNumber eq,pres,sub - add: olcDbIndex olcDbIndex: mobile eq,pres,sub - add: olcDbIndex olcDbIndex: homePhone eq,pres,sub - add: olcDbIndex olcDbIndex: mail eq,pres,sub - add: olcDbIndex olcDbIndex: maildrop eq,pres,sub - add: olcDbIndex olcDbIndex: description eq,pres,sub ldapadd -Y EXTERNAL -H ldapi:/// -f olcDbIndex_common.ldif ===== Индексирование ===== sudo -u openldap -g openldap slapindex -F /etc/ldap/slapd.d/ ====== Наложение для реплики на главном сервере ====== dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpCheckpoint: 100 10 olcSpSessionlog: 100 ldapadd -Y EXTERNAL -H ldapi:/// -f replica_Master.ldif ====== Настройка лимитов ====== dn: olcDatabase={-1}frontend,cn=config changetype: modify delete: olcSizeLimit dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcSizeLimit olcSizeLimit: unlimited ldapadd -Y EXTERNAL -H ldapi:/// -f limit_Master.ldif ====== Настройка соединения с главным сервером ====== :!: Важно на каждом подчинённом сервере установить уникальный ''rid'' (Replica ID), это уникальное трёхзначное число, идентифицирующее данную реплику. \\ Подробный пример описан в главе:[[openldap:examples#Схема репликации|Схема репликации]] dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcSyncRepl olcSyncrepl: rid=1 provider="ldap://ldap0.domain.ru:389/" type=refreshAndPersist retry="60 30 300 +" searchbase="dc=domain" bindmethod=simple binddn="cn=repl,dc=domain" credentials=ПАРОЛЬ ldapadd -Y EXTERNAL -H ldapi:/// -f replica_Slave.ldif ====== Удаление соединения с главным сервером ====== dn: olcDatabase={1}mdb,cn=config changetype: modify delete: olcSyncRepl ldapadd -Y EXTERNAL -H ldapi:/// -f replica_Slave_delete.ldif ====== Создание нового DIT ====== FIXME Directory Information Tree, информационное дерево каталога (также известное как naming-context). DIT — это иерархия объектов, составляющих структуру локального каталога. Одним LDAP-сервером может поддерживаться более одного DIT. Эта информация предоставляется Root DSE. Дополнительная информация [[https://pro-ldap.ru/tr/zytrax/apa/dits.html|здесь]]. https://pro-ldap.ru/tr/zytrax/apd/index.html#dit Домен создаётся при [[#Инициализация|инициализации пакета]]. Далее описано как создать новый домен в дополнение к существующим: - Сначала нужно создать папку для БД: #!/bin/bash DIR=/var/lib/ldap/domain2 mkdir $DIR chown openldap:openldap $DIR chmod 755 $DIR - В файле ''domain2.ldif'' нужно установить соответствующий номер БД, в данном примере используется ''{2}'' Также нужно создать [[#Создание хеша пароля|хеш пароля]] и заменить значение ''olcRootPW'' dn: olcDatabase=mdb,cn=config objectClass: olcDatabaseConfig objectClass: olcMdbConfig olcDatabase: mdb olcDbCheckpoint: 512 30 olcDbMaxSize: 1073741824 olcDbIndex: objectClass eq olcDbDirectory: /var/lib/ldap/domain2 olcSuffix: dc=domain2 olcRootDN: cn=admin,dc=domain2 olcRootPW:: {SSHA}rxcXIxAZM40zRAIrwt1Q8l/KNlV7Br4a dn: dc=domain2 objectClass: top objectClass: dcObject objectClass: organization o: Домен2 dc: domain2 ldapadd -Y EXTERNAL -H ldapi:/// -f domain2.ldif - [[#Создание olcRootPW|Создать olcRootPW для нового DIT]] ====== Удаление DIT ====== :!: Этот способ удаления предусматривает перезагрузку ''slapd'' \\ К сожалению нам известен только такой способ удаления. Пример удаления DIT с номером {2} #!/bin/bash service slapd stop rm /etc/ldap/slapd.d/cn=config/olcDatabase={2}mdb.ldif rm -r /var/lib/ldap/domain2 service slapd start ====== Преобразование схем ====== Преобразование схем из формата ''schema'' в формат ''ldif'' ===== Извлечение схемы ===== Пример: zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema ===== Создание ldif файла ===== Сначала нужно создать фиктивный файл ''/tmp/dummy.conf'', в нем должны быть перечислены все схемы, в том числе и новые: include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/qmail.schema include /etc/ldap/schema/postfix.schema include /etc/ldap/schema/samba.schema Затем нужно создать фиктивную папку: ''/tmp/dummy.d'' и выполнить преобразование: mkdir /tmp/dummy.d slaptest -F /tmp/dummy.d -f /tmp/dummy.conf ===== Изменение ldif файла ===== Нужно выполнить действия по образцу, на примере схемы [[#qmail|qmail]]: - Скопировать схему: cp /tmp/dummy.d/cn=config/cn=schema/cn={5}qmail.ldif /etc/ldap/schema/qmail.ldif - Заменить стоки: ^''cn={5}qmail.ldif''^''qmail.ldif''^ | dn: cn={5}qmail objectClass: olcSchemaConfig cn: {5}qmail | dn: cn=qmail,cn=schema,cn=config objectClass: olcSchemaConfig cn: qmail | - Удалить из ''cn={5}qmail.ldif'' строки: structuralObjectClass: olcSchemaConfig entryUUID: a8f199bc-2bcf-1032-8ece-d70658724f78 creatorsName: cn=config createTimestamp: 20130328084600Z entryCSN: 20130328084600.309604Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20130328084600Z ===== Добавление схемы ===== ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/qmail.ldif ===== Удаление схемы ===== Пример удаления схемы [[#qmail|qmail]]: #!/bin/sh service slapd stop rm /etc/ldap/slapd.d/cn=config/cn=schema/*qmail* service slapd start {{anchor:emptygroupofnames}} ====== Пустая группа groupOfNames ====== Используется для использования [[roundcube:ldap#Группы адресов|групп адресов в RoundCube]]. Если для создания группы нужно/можно ввести только имя тогда, нужно изменить свойства объекта ''groupOfNames'' в схеме ''core'', в результата получится **LDAP schema member-less group**. Порядок действий: - В исходной схеме нужно найти: objectclass ( 2.5.6.9 NAME 'groupOfNames' DESC 'RFC2256: a group of names (DNs)' SUP top STRUCTURAL MUST ( member $ cn ) MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) ) и заменить на: objectclass ( 2.5.6.9 NAME 'groupOfNames' DESC 'RFC2256: a group of names (DNs)' SUP top STRUCTURAL MUST cn MAY ( member $ businessCategory $ seeAlso $ owner $ ou $ o $ description ) ) - Выполнить для этой схемы действия описанные в разделе [[#Преобразование схем|Преобразование схем]] - Установить правильные права на новый файл: chown openldap:openldap cn=\{0\}core.ldif - Скопировать изменённый файл в папку ''/etc/ldap/slapd.d/cn=config/cn=schema'' :!: Перед применением изменений сервер [[openldap:openldap|ОpenLDAP]] нужно остановить service slapd stop а затем запустить service slapd start {{:openldap:core_schema.tar.gz|Архив с готовыми и исходными файлами}} (источник ''core.schema'' — файл ''slapd_2.4.44+dfsg-5+deb9u2_amd64.deb'') Готовый скрипт для выполнения всех перечисленных выше действий: #/bin/bash service slapd stop chown openldap:openldap cn=\{0\}core.ldif cp -f cn=\{0\}core.ldif /etc/ldap/slapd.d/cn=config/cn=schema/ service slapd start ======= Резервное копирование ======= Простой вариант: slapcat -l OpenLDAP_Backup.ldif Скрипт для копирования в файл, в имени которого присутствует номер дня недели: #!/bin/bash backup_path=/root/Backup/ wd=`date '+%u'` slapcat -l /etc/ldap/OpenLDAP_$wd.ldif tar -cvzf $backup_path`hostname`_OpenLDAP_$wd.tar.gz /etc/ldap FIXME Резервное копирование БД №2: slapcat -n 2 -l OpenLDAP_Backup_2.ldif ======= Восстановление ======= Если восстановление выполняется после выполнении процедуры [[#Инициализация]] и требуется восстановить настройки с другого сервера, то перед выполнением восстановления данных нужно сначала выполнить процедуры [[#Одиночный сервер]] или [[#Репликация]] соответственно. #!/bin/bash service slapd stop slapadd -l ldap.ldif chown -R openldap:openldap /var/lib/ldap chown -R openldap:openldap /etc/ldap/slapd.d service slapd start ====== Восстановление контрольной суммы CRC32 LDIF-файла в конфигурации cn=config ====== FIXME [[https://pro-ldap.ru/books/diving/app2/crc32.html|Восстановление контрольной суммы CRC32 LDIF-файла в конфигурации cn=config]] ====== Использование атрибута c ====== Для использования атрибута ''c'' (''country'') нужно, чтобы у объекта был класс (objectClass): ''extensibleObject'' Значение атрибута: двухбуквенный код страны. ---- [[https://stackoverflow.com/a/21996393|java - LDAP - Not able to create a new person with country - Stack Overflow]] ====== autofs-ldap ====== FIXME LDAP map support for autofs Autofs controls the operation of the automount daemons. The automount daemons automatically mount filesystems when they are used and unmount them after a period of inactivity. This is done based on a set of pre-configured maps. The kernel automounter implements an almost complete SunOS style automounter under Linux. A recent version of the kernel autofs4 module (builtin or separate) is required. http://www.kernel.org/pub/linux/daemons/autofs/v5/ https://wiki.debian.org/LDAP/AutoFSSetup ====== Ссылки ====== [[http://blog.remibergsma.com/2012/03/05/howto-solve-openldap-bdb_equality_candidates-errors/|HOWTO solve OpenLDAP bdb_equality_candidates errors]] [[http://www.openldap.org/lists/openldap-technical/201106/msg00050.html|Re: ldapsearch and sambaAcctFlags]] [[https://pro-ldap.ru/tr/man/slapcat.8.html|pro-ldap.ru: slapcat - утилита генерации LDIF из базы данных SLAPD]] [[https://pro-ldap.ru/books/openldap-ubuntu-in-practice/backup.html|pro-ldap.ru: OpenLDAP и Ubuntu на практике > Резервное копирование и восстановление сервера OpenLDAP]] [[https://pro-ldap.ru/books/openldap-ubuntu-in-practice/repl.html|pro-ldap.ru: OpenLDAP и Ubuntu на практике > Репликация сервера OpenLDAP]] **[[https://pro-ldap.ru/tr/zytrax/ch2/#model|pro-ldap.ru: LDAP для учёных-ракетчиков. 2.4 Информационная модель (модель данных или объектная модель) LDAP]]** [[https://devopsideas.com/openldap-self-service-password-adhoc-ldap-utilities/|openLDAP - Self Service Password and Adhoc LDAP utilities]] {{tag>LDAP}}