Estou respondendo a minha própria pergunta porque queria saber como resolver o problema ao usar o novo backend slapd.d/dynamic/cn=config
e não queria voltar para o método slapd.conf
. (Quase ninguém está fazendo isso, AFAICT)
Quando tento adicionar o novo esquema usando o 'ldapadd, sempre recebo o seguinte erro:
ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f mozillaabpersonalpha.ldif
ldap_add: Insufficient access (50)
Portanto, o BindDN
que eu estava usando não tem esses privilégios. Eu precisaria configurar uma ACL ou usar o rootDN
para essa operação.
Eu não sei porque, mas ao configurar o pacote slapd
debian, ele me permitiu criar uma conta de administrador para o meu no DIT, mas não mencionou nada sobre o rootDN
. Depois de alguma navegação, encontrei este Blog que explica como definir a senha do rootDN
ao usar o esquema cn=config
.
Então, editamos o arquivo /etc/ldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif
e adicionamos o seguinte:
olcRootDN: cn=admin,cn=config
olcRootPW: mypassword
Eu tive que reiniciar o slapd para que as mudanças entrassem em vigor (não deveria ser necessário, mas ...). Para testá-lo, executei o seguinte comando:
ldapwhoami -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword
E funcionou! A próxima etapa foi carregar o esquema mozillaAbPersonAlpha
no formato ldif usando ldapadd
:
ldapadd -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword -f mozillaabpersonalpha.ldif
A resposta foi bem sucedida
adding new entry "cn=mozillaabpersonalpha,cn=schema,cn=config"
Por fim, adicionar um usuário que depende do mozillaABPersonAlpha
schema agora é possível. Por exemplo, o arquivo newuser.ldif
tem isso:
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: [email protected]
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude
E adicioná-lo ao novo diretório (não usando a conta rootDN
) funciona agora:
ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f usertest.ldif
Enter LDAP Password:
adding new entry "uid=somedude,cn=SomeGroup,cn=whatever,dc=test,dc=com