Запуск ntpdate от имени пользователя root

Я пытаюсь написать код, который будет прослушивать сообщения и принудительно синхронизировать ntp (используя команду ntpdate) при каждом получении сообщения.

Код написан на c ++, в Ubuntu 14.04 и работает нормально. Но системная команда каждый раз терпит неудачу, потому что у нее нет привилегий root.

Предполагается, что этот код запускается автоматически при загрузке системы, поэтому я не могу просто запустить исполняемый файл с «sudo».
После поиска в Интернете единственное решение, которое я нашел, — войти в систему как пользователь root, но это поставит под угрозу безопасность.

Я знаю, что процесс демона ntp запускается с правами суперпользователя, но я не уверен, как он реализован.

Знаете ли вы, каким образом я могу запустить код C ++ с правами root без ущерба для безопасности?

0

Решение

  • Демон NTP работает с привилегиями root, потому что он запускается под учетной записью root.

  • Как правило, программы, которые запускаются как демоны, запускаются под учетной записью root; некоторые из них добровольно сбрасывают привилегии root, звоня setuid(), seteuid(), и т.п.

  • Вы всегда можете создать специальную учетную запись для программы и запустить ее под этой учетной записью,

    • либо сделав его setuid для этой учетной записи,
    • или с помощью sudo-u,
    • или, если вы начинаете свой демон с systemd файл модуля, указав user= а также group= в файле описания устройства.

    Затем вы можете редактировать /etc/sudoers чтобы разрешить запуск этой учетной записи ntpdate и только ntpdate как root без пароля.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]