У меня есть ванильная Научная установка Linux 6.6 (по существу RHEL 6.6), который я пытаюсь настроить как сервер LDAP. Я установил openldap-servers
и запустил slapd с service slapd start
. Это значение по умолчанию создает, прибывают конфигурационные файлы в /etc/openldap/slapd.d/
который, насколько я понимаю более новый формат конфигурации.
Для добавления пользователя root и пароля, я создал файл rootuser.ldif как (пароли, измененные, конечно):
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}n/y444ydfghRfgOzTGwh4A47Ih4Ek9fg
dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}n/y444ydfghRfgOzTGwh4A47Ih4Ek9fg
-
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=com
-
replace: olcSuffix
olcSuffix: dc=example,dc=com
и работал ldapmodify -a -Q -Y EXTERNAL -H ldapi:/// -f test.ldif
(на основе ответа при Основной установке openldap с помощью slapd.d конфигурацию), в то время как зарегистрированный как корень на сервере.
Это работает и возвращается:
modifying entry "olcDatabase={0}config,cn=config"
modifying entry "olcDatabase={2}bdb,cn=config"
Чтобы проверить, что это работало, я могу сделать ldapsearch -Y EXTERNAL -H ldapi:/// -b "olcDatabase={2}bdb,cn=config" olcRootDN
который возвращается:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
# extended LDIF
#
# LDAPv3
# base <olcDatabase={2}bdb,cn=config> with scope subtree
# filter: (objectclass=*)
# requesting: olcRootDN
#
# {2}bdb, config
dn: olcDatabase={2}bdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Однако, если я хочу искать использование ldap://протокол (поскольку я должен буду при соединении удаленно от клиентов или соединить phpldapadmin), я получаю ошибку. Выполнение ldapsearch -D "cn=admin,dc=example,dc=com" -W
и ввод пароля как ранее просто дает:
ldap_result: Can't contact LDAP server (-1)
Прибавление -d5 -v
к ldapsearch
команда дает целую загрузку вывода:
ldap_initialize( <DEFAULT> )
ldap_create
Enter LDAP Password:
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP localhost:389
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying ::1 389
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({i) ber:
ber_flush2: 78 bytes to sd 3
ldap_result ld 0x7bc270 msgid 1
wait4msg ld 0x7bc270 msgid 1 (infinite timeout)
wait4msg continue ld 0x7bc270 msgid 1 all 1
** ld 0x7bc270 Connections:
* host: localhost port: 389 (default)
refcnt: 2 status: Connected
last used: Fri Feb 6 13:29:49 2015
** ld 0x7bc270 Outstanding Requests:
* msgid 1, origid 1, status InProgress
outstanding referrals 0, parent count 0
ld 0x7bc270 request count 1 (abandoned 0)
** ld 0x7bc270 Response Queue:
Empty
ld 0x7bc270 response count 0
ldap_chkResponseList ld 0x7bc270 msgid 1 all 1
ldap_chkResponseList returns ld 0x7bc270 NULL
ldap_int_select
read1msg: ld 0x7bc270 msgid 1 all 1
ber_get_next
ldap_err2string
ldap_result: Can't contact LDAP server (-1)
ldap_free_request (origid 1, msgid 1)
ldap_free_connection 1 1
ldap_free_connection: actually freed
Я вполне уверен, что сервер работает на порте 389 как telnet localhost 389
дает:
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Если я работаю slapd
вручную и набор -d-1
затем я вижу следующий вывод, когда я пытаюсь получить доступ к нему через ldap://
54d4dfec daemon: activity on 1 descriptor
54d4dfec daemon: activity on:54d4dfec
54d4dfec slap_listener_activate(7):
54d4dfec daemon: epoll: listen=7 busy
54d4dfec daemon: epoll: listen=8 active_threads=0 tvp=zero
54d4dfec >>> slap_listener(ldap:///)
54d4dfec daemon: listen=7, new connection on 12
54d4dfec daemon: activity on 1 descriptor
54d4dfec daemon: activity on:54d4dfec
54d4dfec daemon: epoll: listen=7 active_threads=0 tvp=zero
54d4dfec daemon: epoll: listen=8 active_threads=0 tvp=zero
54d4dfec fd=12 DENIED from unknown (127.0.0.1)
54d4dfec daemon: closing 12
Есть ли, возможно, некоторый ACL, который я должен настроить для разрешения olcRootDN
быть позволенным запросить базу данных?
Թվում է, որ խնդիրն առաջացել է /etc/hosts.allow
- ի կողմից: Այդ ֆայլի վերջում ես ավելացրի
slapd: 127.0.0.1
-ը, և փոխարենը ես ստանում եմ «Անվավեր վկայականներ» սխալ, որն, ամենայն հավանականությամբ, այլ խնդիր է: