Dentro da pasta "/etc/ldap/schema/" do servidor encontramos uma lista de arquivos com extensão LDIF: core.ldif, cosine.ldif, inetorgperson.ldif, misc.ldif, nis.ldif e openldap.ldif. A documentação no endereço
8. Schema Specification, orienta que core.schema é requerido (required), enquanto cosine.schema e inetorgperson.schema são úteis (useful) e nis.schema é FYI (For Your Information ???).
Dessa forma, como primeiro passo devemos adicionar tais esquemas. Note que "core.ldif" já vem adicionado por padrão.
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/core.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=core,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: olcAttributeTypes: Duplicate attributeType: "2.5.4.2"
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"
Inicialmente devemos criar uma senha para o administrador da base de dados, utilizando para isso o comando "slappasswd", que exibe a senha criptografada mas não a grava em lugar algum. No exemplo, a senha escolhida foi "secret" e deve ser atribuída tanto ao parâmetro "olcRootPW" do arquivo "database.ldif", como ao parâmetro "userPassword" do arquivo "ldaproot.ldif".
# slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
Para a importação dos "backends" e para a criação da base de dados, crie o arquivo "/etc/ldap/database.ldif", lembrando de alterar o parâmetro "olcRootPW" para o valor obtido pelo "slappasswd".
Atenção: As linhas em branco porém comentadas ('#') devem ser substituídas por linhas em branco, pois elas, no contexto dos .ldif, são separadores de comando.
# Load dynamic backend modules
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: {0}back_hdb
#
# Create the database
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq
A importação do arquivo "/etc/ldap/database.ldif", pode ser realizada por meio do comando "ldapadd" e verificada pelo "ldapsearch".
# nano /etc/ldap/database.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/database.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module{0},cn=config"
adding new entry "olcDatabase={1}hdb,cn=config"
...
# ldapsearch -W -x -b dc=example,dc=com -D cn=admin,dc=example,dc=com