我想在 chroot 环境中配置 ntp 守护进程。我使用的操作系统是 Debian 9.1,内核为 3.16.0-4-686-pae
服务运行如下:/usr/sbin/ntpd -p /var/run/ntpd.pid -i /var/chroot/ntp -u ntp:ntp -l /var/log/ntpd.log
我面临的问题是:
1) ntp 守护程序无法解析 DNS 名称,但其使用 IP 地址时可按预期工作。我在 chroot 路径中是否遗漏了任何特殊文件?
ntpd[2936]: retrying DNS 1.gr.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 1.europe.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 0.europe.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 0.gr.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 0.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 1.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 2.pool.ntp.org: Name or service not known (-2)
ntpd[2936]: retrying DNS 3.pool.ntp.org: Name or service not known (-2)
2) 尽管 ntp 服务器以“-i /var/chroot/ntp”启动,但 ntpd.conf 内并非所有路径都与此目录相关。例如:
ntp配置文件:
漂移文件变量/lib/ntp/ntp.drift
日志档案/var/chroot/ntp/var/log/ntpd.log
日志文件需要完整路径;ntpd 是否应该能够访问 chroot 目录之外的文件?
答案1
在 chroot 中运行软件时,需要在 chroot 中安装必要的系统库和设置,以使软件正常运行。例如,链接库需要位于 chroot 中。可以使用 来ldd -v
显示特定应用程序使用哪些库。
如果您运行chroot
,则 chroot 目录为/var/chroot/ntp
,那么该目录将是/
chroot 内的目录。例如,logfile /var/chroot/ntp/var/log/ntpd.log
将指向/var/chroot/ntp/var/chroot/ntp/var/log/ntpd.log
主文件系统中的 。
因此,根据您的情况,您需要设置logfile /var/log/ntpd.log
。
答案2
问题是部分更改 /etc/nsswitch.conf 后解决
从
主办方: 文件域名系统
到
主机:dns
现在 DNS 查询可以正常工作。第二个问题仍然存在:PID 文件和日志必须更改为绝对路径,而不是与 chroot 目录相关。
ntp 守护进程在创建日志文件后是否会放弃权限?