krb5_ldap_util está realmente tentando me informar que não adicionei o esquema Kerberos ao servidor LDAP. Infelizmente, isso está longe de ser trivial.
O melhor guia que tenho até agora é este do MIT , embora as direções estejam um pouco fora. Vou repetir mais aqui, mas corrigido para o que parece ser o estado moderno do mundo:
-
Você precisa extrair os arquivos de esquema. Eles estão em
/usr/share/doc/krb5-kdc-ldap/kerberos.ldif.gze/usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz. Para extraí-los, execute:gunzip -c /usr/share/doc/krb5-kdc-ldap/kerberos.ldif.gz > /etc/ldap/schema/kerberos.ldif gunzip -c /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz > /etc/ldap/schema/kerberos.schema -
Agora estamos na etapa 1 do guia, portanto, em um diretório em algum lugar, crie um arquivo com:
include /etc/ldap/schema/kerberos.schemaSalve em algum lugar. Estou chamando meu
/tmp/ldap-kerberos/schema_convert.conf. -
Crie um diretório para armazenar os resultados, por exemplo,
mkdir /tmp/ldap-kerberos/krb5_ldif -
Executar:
slaptest -f /tmp/ldap-kerberos/schema_convert.conf -F /tmp/ldap-kerberos/krb5_ldif -
Isso produzirá um monte de coisas em
/tmp/ldap-kerberos/krb5_ldif. Abra/tmp/ldap-kerberos/krb5_ldif/cn=config/cn=schema/cn={0}kerberos.ldifem$EDITOR. Como o guia sugere, substitua:dn: cn={0}kerberos cn: {0}kerberoscom
dn: cn=kerberos,cn=schema,cn=config cn: kerberosOlhe a parte inferior do arquivo para algo como:
structuralObjectClass: olcSchemaConfig entryUUID: ... creatorsName: cn=config createTimestamp: ... entryCSN: ... modifiersName: cn=config modifyTimestamp: ...e remova-o.
-
Adicione ao servidor:
ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap-kerberos/krb5_ldif/cn=config/cn=schema/cn={0}kerberos.ldifVocê deve ver:
adding new entry "cn=kerberos,cn=schema,cn=config"
krb5_ldif não deve mais reclamar. Além disso, observe que o Kerberos, AFAICT, deve ter um nome com uma senha para vincular. Ele não pode fazer "peer authentication", que é o que estamos fazendo quando fazemos -Y EXTERNAL -H ldapi:/// : que se conecta através de um socket Unix, e o LDAP pode perguntar ao socket qual é o nosso UID e confiar em nós baseado nisso. Você precisa criar um nome com uma senha e usá-lo. Eu já fiz isso; o meu é cn=admin,dc=example,dc=com , visível no comando da questão. O Kerberos armazenará a senha para esse nome em um arquivo, portanto, apenas gere uma senha aleatória longa e defina as permissões adequadamente.