如何确定非root用户的NTP通信状态

时间:2019-04-05 05:58:27

标签: embedded-linux yocto ntp

我正在运行嵌入式Linux。如果我的NTP守护程序已同步,则需要从不是root用户运行的应用程序中知道。

我尝试如下运行Busybox随附的ntpd:

ntpd -n -p pool.ntp.org -q

但是问题是,即使我将ntpd添加到/etc/busybox.conf [SUID]

,它也需要root特权才能运行。

然后,我也尝试了chronyd和chronyc。类似的问题,chronyd由root运行。出于安全原因,我还禁用了Internet命令套接字(cmdport 0),然后我以非root用户身份运行chronyc,如下所示:

chronyc waitsync

收到以下错误消息:

506 Cannot talk to daemon

检查了ntpstat代码,但似乎与chronyc或ntpd交互。

我想知道此任务是否有可用的解决方案?或者,如果没有,则建议如何完成。也许可以通过C代码以某种方式完成?但是该解决方案应满足以下关键要求:

1) work with no root privileges
2) be compact and easy implemented on Embedded Linux system
3) robust

脚本,工具或C代码应该给我两个输出:

   synchronized -> wthe hen clock has already been synchronized with NTP server
   not synchronized -> otherwise

1 个答案:

答案 0 :(得分:0)

如何放置

ntpd -n -p pool.ntp.org -q

进入init例程(您需要一次root访问)。

(本来应该在评论中注明,但没有足够的积分。)