最近需要在我们的一台服务器上重新启动 OpenLDAP。当我重新启动服务时,命令提示符只是坐在那里等待某些东西。我从来没有得到[ OK ]. 如果我CTRL+C退出它,它会说
...killed.
/etc/openldap/cacerts/company.crt is not readable by "ldap[WARNING]
Run Code Online (Sandbox Code Playgroud)
为了证明一个观点,我/etc/openldap递归地生成了777。我仍然收到错误。
我没有看到任何/var/log改变来给我一些反馈。我需要在哪里解决这个问题?
这是一个运行 Fedora 8 的旧服务器(是的,我知道,怪以前的 IT 人员)。
这里有一些额外调试的想法。只有当您绝对肯定这不是许可问题时,这些才是必要的......
首先,尝试在调试模式下运行 slapd:
slapd -u ldap -g ldap -d 65
Run Code Online (Sandbox Code Playgroud)
请注意, -d 的参数是一个位字段,其值可以在slapd.conf手册页中找到(查找loglevel)。 65是 trace + config,对于这类问题,这通常是足够冗长的。这可能会也可能不会向您展示任何有用的东西。
如果这不起作用,我们可以使用strace(系统调用跟踪器)来准确找出发生了什么。slapd像这样运行:
strace -o /tmp/trace -f -s 1024 slapd -u ldap -g ldap -d 7
Run Code Online (Sandbox Code Playgroud)
当它死掉时,您将拥有一个/tmp/trace包含所有系统调用的文件slapd。出于好奇,-f使 strace 跟随 fork(在这种情况下并不是真正必要的,但这是我的默认设置),-s 1024并使 strace 在跟踪日志中打印最多 1024 个字节的字符串参数。
现在,grep用于company.crt在此文件中查找引用。从理论上讲,如果它们是权限问题,您会发现看起来像这样的东西:
open("/tmp/company.crt", O_RDONLY) = -1 EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)
如果文件丢失,或者类似这样的事情:
open("/tmp/company.crt", O_RDONLY) = -1 ENOENT (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
一个成功的打开看起来像这样:
open("/tmp/company.crt", O_RDONLY) = 3
Run Code Online (Sandbox Code Playgroud)
这3是 open 返回的文件描述符(并且可能是其他一些正整数)。
看一看,看看是否有明显的东西跳出来。如果这没有帮助,请告诉我。
| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |