OpenLDAP 无法启动,并且不会记录原因

OpenLDAP 无法启动,并且不会记录原因

最近需要在我们的一台服务器上重新启动 OpenLDAP。当我重新启动服务时,命令提示符只是在那里等待某事。我从来没有得到[ OK ]。如果我CTRL+C退出它,它会说

...killed.
/etc/openldap/cacerts/company.crt is not readable by "ldap[WARNING]

为了证明这一点,我/etc/openldap递归地执行了 777。但仍然出现错误。

我没有看到任何/var/log可以给我反馈的更改。我需要在哪里修复此问题?

这是一台运行 Fedora 8 的旧服务器(是的,我知道,这要怪之前的 IT 人员)。

答案1

以下是一些额外调试的想法。只有当您绝对肯定这不是权限问题时,这些才是必要的……

首先,尝试在调试模式下运行 slapd:

slapd -u ldap -g ldap -d 65

请注意,-d 的参数是一个位字段,其值可以在slapd.conf手册页中找到(查找loglevel)。 65是 trace + config,对于此类问题,它通常足够详细。这可能会或可能不会显示任何有用的信息。

如果这不起作用,我们可以使用strace(系统调用跟踪器)来查明到底发生了什么。slapd像这样运行:

strace -o /tmp/trace -f -s 1024 slapd -u ldap -g ldap -d 7

当它死掉时,你会得到一个/tmp/trace包含所有系统调用的文件slapd。好奇的人-f会让 strace 跟踪 fork(在这种情况下不是必需的,但这是我的默认设置),并-s 1024让 strace 在跟踪日志中打印最多 1024 字节的字符串参数。

现在,使用grep查找company.crt此文件中的引用。理论上,如果存在权限问题,您将找到类似以下内容的内容:

open("/tmp/company.crt", O_RDONLY)      = -1 EACCES (Permission denied)

或者如果文件丢失则类似以下内容:

open("/tmp/company.crt", O_RDONLY)      = -1 ENOENT (No such file or directory)

成功打开后如下所示:

open("/tmp/company.crt", O_RDONLY)      = 3

其中,这3是 open 返回的文件描述符(并且可能是其他正整数)。

看一下,看看是否有明显的发现。如果没有帮助,请告诉我。

答案2

您不应将 /etc/openldap 设置为 777。有时需要权限才能使一切正常工作。我建议将其改回 755。

您可能拥有错误的用户或 cacerts 权限

drwxr-xr-x 3 root root 4096 2007 年 4 月 19 日 cacerts/

相关内容