当我尝试启动 bind9 时,由于 chroot 和 openssl 而失败
/etc/init.d/bind9 start
日志消息;
Feb 17 08:26:27 ISTVS2024 named[2440]: initializing DST: openssl failure
Feb 17 08:26:27 ISTVS2024 named[2440]: exiting (due to fatal error)
Feb 17 08:26:27 ISTVS2024 kernel: [ 92.091098] type=1400 audit(1361082387.173:14): apparmor="DENIED" operation="file_mmap" parent=2439 profile="/usr/sbin/named" name="/var/named/run-root/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgost.so" pid=2440 comm="named" requested_mask="m" denied_mask="m" fsuid=108 ouid=0
如果我没有错过任何一点,Apparmor 会否认这一点;
我的 usr.sbin.named 文件已包含以下行:
/var/named/run-root/** rw,
/var/named/run-root/usr/** rw,
我也可以确认这个文件;
/var/named/run-root/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgost.so
存在于文件系统中。
说实话,我陷入了困境,我还有什么其他选择可以解决这个问题?
也许,完全移除 apparmor 是一个解决方案,但我不想这么做,
答案1
这是第一次遇到“初始化 DST:openssl 失败”的问题,这是我在将 ubuntu 从 lucid 升级到 precise 后 DNS 崩溃时遇到的错误,所以我想在这里提一下解决方案。
在我的例子中,这是由于 bind 依赖于不在其 chroot jail 中的 ssl 库。解决方案是:
mkdir -p /usr/lib/i386-linux-gnu/openssl-1.0.0/engines
cp -a /usr/lib/i386-linux-gnu/openssl-1.0.0/engines /var/lib/named/usr/lib/i386-linux-gnu/openssl-1.0.0/
当然,现在我需要保持这些文件是最新的,我不知道是否有更好的解决方案。
有关我如何解决这个问题的更多信息,请参见这里: https://darxus.livejournal.com/329621.html