我很按照这个 OpenLDAP 一步步教程:http://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=1 重要提示:我正在使用 CentOS 7
但当我在第一部分尝试slapd
以以下内容开始时systemctl start slapd
,它给了我一个错误我无法解决。
我在网络、StackOverflow 和 Server Fault 中查找,但任何人都遇到了同样的问题。
这是错误:
# systemctl start slapd
Job for slapd.service failed. See 'systemctl status slapd.service' and 'journalctl -xn' for details.
这里堆栈跟踪或当我检查时出现错误systemctl status
。
[root@localhost openldap]# systemctl status slapd -l
slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled)
Active: failed (Result: exit-code) since dv 2015-01-09 12:03:41 CET; 3min 9s ago
Process: 5507 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=1/FAILURE)
Process: 5492 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
gen 09 12:03:41 localhost.localdomain runuser[5495]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
gen 09 12:03:41 localhost.localdomain check-config.sh[5492]: Checking configuration file failed:
gen 09 12:03:41 localhost.localdomain check-config.sh[5492]: 54afb58d ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif"
gen 09 12:03:41 localhost.localdomain check-config.sh[5492]: 54afb58d unable to open file "/openldap/slapd.pid": 2 (No such file or directory)
gen 09 12:03:41 localhost.localdomain slapcat[5500]: DIGEST-MD5 common mech free
gen 09 12:03:41 localhost.localdomain slapd[5507]: @(#) $OpenLDAP: slapd 2.4.39 (Jun 9 2014 23:23:12) $
[email protected]:/builddir/build/BUILD/openldap-2.4.39/openldap-2.4.39/servers/slapd
gen 09 12:03:41 localhost.localdomain slapd[5509]: DIGEST-MD5 common mech free
gen 09 12:03:41 localhost.localdomain systemd[1]: slapd.service: control process exited, code=exited status=1
gen 09 12:03:41 localhost.localdomain systemd[1]: Failed to start OpenLDAP Server Daemon.
gen 09 12:03:41 localhost.localdomain systemd[1]: Unit slapd.service entered failed state.
我的问题是:我该怎么办?有什么解决办法吗?或者解决问题的指导原则是什么?
我该如何开始解决这个问题?
答案1
使用CentOS OpenLDAP 帮助页面。它非常简洁,没有废话。在执行此操作之前,请将所有配置文件恢复到其原始状态。可以通过以下方式确认:
# rpm -V openldap-server
如果上述命令显示任何文件被修改 - 请删除并重新安装 openldap-server 或从备份中获取文件。
答案2
我也使用该指南在 CentOS 7 上设置了 OpenLDAP。有一次我仅openldap-servers
在没有客户端的情况下进行安装,结果完全失败了;存在权限问题,并且 slapd 无法启动等。我同意其他人的建议,重新开始并严格按照说明进行操作。
但即便如此,指南中仍有一些问题需要记录下来:
- 如果您从指南复制粘贴到 ldif 文件中,请务必修复任何换行,它们会给我带来错误(
chdomain.ldif
特别是)。 - 在 中
basedomain.ldif
,o: Server World
和dc: Server
应该更改为正确的域,否则会收到此错误:ldap_add:命名违规(64)附加信息:单值命名属性“dc”的值与条目中的现有值冲突
- 最后的
ldapadd
命令也应该改为正确的域,否则您将收到无效凭据错误。
这些错误确实不是直观的,但我能够完成指南并配置 OpenLDAP。
答案3
您的配置文件中存在某种错误。至少,您在创建初始配置文件时犯了一个错误,并且可能更改了本教程中所述的内容:
教程指出:
pidfile /run/openldap/slapd.pid
但是 OpenLDAP 尝试创建/openldap/slapd.pid
,但它无法工作,因为/openldap
它不作为目录存在。
从头开始。