Я установил и настроил LDAP, установил и настроил Kerberos для использования LDAP в качестве бэкэнда, как показано ниже:
[dbdefaults]
ldap_kerberos_container_dn = dc=voltage,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=voltage,dc=com"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=voltage,dc=com"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees
ldap_service_password_file = /etc/krb5kdc/service.keyfile
ldap_servers = ldap://ldap.voltage.com
ldap_conns_per_server = 5
}
Однако, когда я захожу в kadmin.local и пытаюсь:
addprinc -x dn="uid=sam,ou=ssn,dc=voltage,dc=com" sam
я получил
add_principal: Unsupported argument "dn=uid=sam,ou=ssn,dc=voltage,dc=com" for db2 while creating "sam@VOLTAGE.COM".
это означает, что kadmin пытается добавить принципала в db2, а не в бэкэнд LDAP, верно?
Я также сделал:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com create -subtrees \
dc=example,dc=com -r EXAMPLE.COM -s -H ldap://ldap01.example.com
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \
/etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com
после переименования примера в напряжение, конечно, и обе команды работали успешно и показали, что новый REALM был создан
Любая помощь приветствуется
Я получал ту же ошибку, пока не обновил как /etc/krb5.conf, так и /var/kerberos/krb5kdc/kdc.conf, добавив database_module в раздел realms и добавив разделы dbdefaults и dbmodules. Я использую RHEL 6. Ниже приведены примеры, основанные на моих krb5.conf и kdc.conf.
/etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = VOLTAGE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] VOLTAGE.COM = { kdc = server1.voltage.com admin_server = server1.voltage.com default_domain = voltage.com database_module = openldap_ldapconf } [domain_realm] .voltage.com = VOLTAGE.COM voltage.com = VOLTAGE.COM [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } [dbdefaults] ldap_kerberos_container_dn = dc=voltage,dc=com [dbmodules] openldap_ldapconf = { db_library = kldap ldap_kdc_dn = "cn=admin,dc=voltage,dc=com" ldap_kadmind_dn = "cn=admin,dc=voltage,dc=com" ldap_service_password_file = /var/kerberos/krb5kdc/service.keyfile ldap_servers = ldaps://ldap.voltage.com ldap_conns_per_server = 5 }
/var/kerberos/krb5kdc/kdc.conf
[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] VOLTAGE.COM = { database_module = openldap_ldapconf master_key_type = aes256-cts key_stash_file = /var/kerberos/krb5kdc/.k5.VOLTAGE.COM acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal } [dbdefaults] ldap_kerberos_container_dn = dc=voltage,dc=com [dbmodules] openldap_ldapconf = { db_library = kldap ldap_kdc_dn = "cn=admin,dc=voltage,dc=com" ldap_kadmind_dn = "cn=admin,dc=voltage,dc=com" ldap_service_password_file = /var/kerberos/krb5kdc/service.keyfile ldap_servers = ldaps://ldap.voltage.com ldap_conns_per_server = 5 }
Затем перезапустите процесс сервера Kerberos и добавьте свои пользовательские принципы.
Надеюсь, это поможет!
Возможно, вам не хватает "database_module = openldap_ldapconf" в вашем мире
[realms]
BEISPIEL.DE = {
kdc = kdc01.beispiel.de
kdc = kdc02.beispiel.de
admin_server = kdc01.beispiel.de
admin_server = kdc02.beispiel.de
default_domain = beispiel.de
database_module = openldap_ldapconf # MISSING!?!?!?!
}