最近需要在我们的一台服务器上重启OpenLDAP.当我重新启动服务时,命令提示符就在那里等待某事.我从来没有得到[OK].如果我将CTRL C排除在外,它说
...killed. /etc/openldap/cacerts/company.crt is not readable by "ldap[WARNING]
为了证明一点,我递归地提出了/ etc / openldap 777.我仍然得到错误.
我没有在/ var / log中看到任何变化给我一些反馈.我需要在哪里解决此问题?
这是一台运行Fedora 8的旧服务器(我知道,归咎于以前的IT人员).
以下是其他调试的一些想法.这些只有在你绝对肯定的情况下才是必要的,这不是一个许可问题……
首先,尝试在调试模式下运行slapd:
slapd -u ldap -g ldap -d 65
请注意,-d的参数是一个位字段,其值可以在slapd.conf手册页中找到(查找loglevel). 65是跟踪配置,对于这类问题通常足够冗长.这可能会也可能不会显示任何有用的内容.
如果这不起作用,我们可以使用strace(系统调用跟踪器)来确切地知道发生了什么.像这样运行slapd:
strace -o /tmp/trace -f -s 1024 slapd -u ldap -g ldap -d 7
当它死亡时,你将有一个文件/ tmp / trace包含来自slapd的所有系统调用.对于好奇的-f make strace跟随分叉(在这种情况下不是必需的,但它是我的默认值),-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返回的文件描述符(可能是其他正整数).
看一看,看看是否有明显的东西跳出来.如果这没有用,请告诉我.