Я использую встроенный Linux. Необходимо знать из моего приложения, которое запускается не пользователем root, синхронизирован ли мой демон NTP.
Я попытался запустить ntpd, который поставляется с Busybox, следующим образом:
ntpd -n -p pool.ntp.org -q
но проблема в том, что для запуска требуются права суперпользователя, даже если я добавлю ntpd в /etc/busybox.conf
[SUID]
Затем я также попробовал chronyd & chronyc. Схожая проблема, chronyd запускается пользователем root. Из соображений безопасности я также отключил сокеты интернет-команд (cmdport 0), а затем запустил chronyc от имени пользователя без полномочий root следующим образом:
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