我尝试设置 Kerberos 服务器,但遇到了配置消息方面的某种问题。不幸的是,守护进程拒绝告诉我出了什么问题;它告诉我“查看日志文件”,但从未提及什么日志档案。
# service krb5-kdc start
krb5kdc: cannot initialize realm EXAMPLE.COM - see log file for details
# ls /var/log/k*
/var/log/kern.log
# krb5kdc
krb5kdc: cannot initialize realm EXAMPLE.COM - see log file for details
# strace krb5kdc 2>&1 | grep write
write(2, "krb5kdc: cannot initialize realm"..., 72krb5kdc: cannot initialize realm EXAMPLE.COM - see log file for details
#
这是在骗我吗?日志文件真的存在吗?
答案1
/var/log/auth.log
。我永远不会去那里看。
以下是我的发现:
- 注意到 strace 的输出中有一个
sendto
以日期/时间开头的内容,就像日志一样。 将其隔离:
# strace krb5kdc -n 2>&1 | grep sendto sendto(3, "<35>Feb 13 17:43:41 krb5kdc[2400"..., 115, MSG_NOSIGNAL, NULL, 0) = 115
搜索对 的调用
socket
,以查看其去向。# strace krb5kdc -n 2>&1 | grep 'socket\|connect' socket(PF_FILE, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 connect(3, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
弄清楚
/dev/log
去哪里了,但我此时正在弄清楚系统记录器:# netstat -xp | grep /dev/log unix 5 [ ] DGRAM 7731 671/rsyslogd /dev/log
实际上没有告诉我在哪里,但是回到原来
strace
,我们可以要求strace
不要截断字符串:# strace -s 1000 krb5kdc -n 2>&1 | grep sendto sendto(3, "<35>Feb 13 17:47:05 krb5kdc[24194]: LDAP bind dn value missing - while initializing database for realm EXAMPLE.COM", 115, MSG_NOSIGNAL, NULL, 0) = 115
rsyslog
可能正在某处记录/var/log
,我现在有日志消息。仅供grep
参考:# cd /var/log && grep -R * -e 'LDAP bind dn' «tons of hits in auth.log»
答案2
KDC 的日志记录通常在/etc/krb5kdc/kdc.conf
(有时/var/lib/krb5kdc/…
)或全局中配置/etc/krb5.conf
。(实际上哪个并不重要。)krb5.conf
和kdc.conf
都有手册页。
[logging]
kdc = SYSLOG
# kdc = STDERR
我的第一个猜测是你还没有创建一个领域,使用kdb5_util create
。