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

问题描述 投票:2回答:1

我正在运行嵌入式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
embedded-linux yocto ntp
1个回答
0
投票

怎么样的

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

进入init-routine(你需要root-access一次)。

(本来会把它放在评论中,但没有足够的学分。)

© www.soinside.com 2019 - 2024. All rights reserved.