最近需要在我们的一台服务器上重新启动 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/