我正在运行嵌入式Linux。如果我的NTP守护程序已同步,则需要从我的应用程序中了解,该应用程序由非root用户运行。
我尝试运行Busybox附带的ntpd,如下所示:
ntpd -n -p pool.ntp.org -q
但问题是,它需要root权限才能运行,即使我将ntpd添加到/etc/busybox.conf
[SUID]
然后,我也试过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
怎么样的
ntpd -n -p pool.ntp.org -q
进入init-routine(你需要root-access一次)。
(本来会把它放在评论中,但没有足够的学分。)