Cn = config do OpenLDAP adiciona usuário separado para replicação de “olcDatabase = {0} config, cn = config”

1

Espero não estar fazendo uma pergunta idiota. Eu sou novo em criar meu próprio serviço LDAP.

Para meu banco de dados mdb regular, é fácil adicionar vários administradores. Como ele contém um olcSuffixatributo, é possível adicionar uma nova UO, adicionar olcAccessregras e tudo, para que a replicação possa ser configurada para usar um usuário dedicado.

Mas não encontrei uma maneira de fazer algo semelhante ao replicar a configuração:

olcDatabase={0}config,cn=config

Não posso adicionar ou's ao cn=configdn. Eu recebo o seguinte erro:

could not add entry dn="ou=admins,cn=config" (line=825)

Alguma recomendação?


ATUALIZAÇÃO 20180828

Aqui eu adiciono mais detalhes sobre o que eu tentei.

Quando tento importar, o servidor reclama:

# ldapadd -c -x -H "ldap://localhost" -D "cn=admin,cn=config" -W -f test.ldif
Enter LDAP Password:
adding new entry "ou=admins_group,dc=config"
ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

adding new entry "uid=u1,ou=admins_group,dc=config"
ldap_add: Server is unwilling to perform (53)
        additional info: no global superior knowledge

O conteúdo de test.ldif é:

dn: ou=admins_group,dc=config
objectClass: organizationalUnit
ou: admins_group

dn: uid=u1,ou=admins_group,dc=config
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: securityPrincipal
uid: u1
cn: u1
sAMAccountName: u1
objectSid: u1
userPassword:: e1NTSEF9VVN6MVpuRmx5bWVmN2w5Tmp5WmJtb3duKzMwSEtXREc=
shadowLastChange: 15969
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1300
gidNumber: 1300
homeDirectory: /home/admin/u1

Quase o mesmo que eu uso para adicionar usuários ao banco de dados mdb

Elysch
fonte
Existe um código de retorno ou motivo que acompanha o erro?
Hogstrom

Respostas:

3

Esse erro específico significa que não há banco de dados com um prefixo correspondente aos DNs de suas entradas. Lembre-se de que o back-end de configuração usa cn=config, não dc=config. (dc significaria que é um componente de domínio DNS que não é.)

Mas mesmo se você acertar o prefixo, receberá apenas um erro diferente (violação do esquema). No final, cn = config não pode ter entradas estranhas, isso é imposto pelo back-end.

A boa notícia é que a conta do usuário não precisa estar em cn = config; pode estar em qualquer lugar do banco de dados. As regras syncrepl e olcAccess não se importam nem um pouco com o sufixo DN de seus usuários; basta adicionar a conta ao banco de dados mdb principal - ou reutilizar o existente.

Por exemplo, esta é minha própria configuração:

dn: olcDatabase = {0} config, cn = config
olcAccess: {0} para dn.sub = "cn = config"
  por dn = "cn = Réplica, ou = Sistema, dc = exemplo, dc = org" lido
  por grupo = "cn = Administradores, ou = Grupos, dc = exemplo, dc = org" gerenciar
  por * nenhuma quebra
...

Desde que o usuário possa efetuar login no servidor, você pode listá-lo nas ACLs e usá-lo para replicação. (Na verdade, certificado ou SASL / Kerberos logins pode gerar DNs que não existem no diretório em tudo , e aqueles que ainda estão perfeitamente utilizável.)

gravidade
fonte
Obrigado pela sua resposta. Será necessário adicionar uma olcAccessregra para permitir permissões de leitura e gravação na configuração para o usuário especificado. Direito?
elysch
Sim. Tudo permanece o mesmo. (Embora em uma nota separada, syncrepl é sempre puxar-base para que o usuário réplica só precisa de 'ler' as permissões.)
grawity