Я пытаюсь написать код, который будет прослушивать сообщения и принудительно синхронизировать ntp (используя команду ntpdate) при каждом получении сообщения.
Код написан на c ++, в Ubuntu 14.04 и работает нормально. Но системная команда каждый раз терпит неудачу, потому что у нее нет привилегий root.
Предполагается, что этот код запускается автоматически при загрузке системы, поэтому я не могу просто запустить исполняемый файл с «sudo».
После поиска в Интернете единственное решение, которое я нашел, — войти в систему как пользователь root, но это поставит под угрозу безопасность.
Я знаю, что процесс демона ntp запускается с правами суперпользователя, но я не уверен, как он реализован.
Знаете ли вы, каким образом я могу запустить код C ++ с правами root без ущерба для безопасности?
Демон NTP работает с привилегиями root, потому что он запускается под учетной записью root.
Как правило, программы, которые запускаются как демоны, запускаются под учетной записью root; некоторые из них добровольно сбрасывают привилегии root, звоня setuid()
, seteuid()
, и т.п.
Вы всегда можете создать специальную учетную запись для программы и запустить ее под этой учетной записью,
sudo
-u
,systemd
файл модуля, указав user=
а также group=
в файле описания устройства.Затем вы можете редактировать /etc/sudoers
чтобы разрешить запуск этой учетной записи ntpdate
и только ntpdate
как root без пароля.
Других решений пока нет …