2017-02-05 16 views
0

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

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

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

Я знаю, что процесс ntp daemon работает с привилегиями root, но я не уверен, как он реализован.

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

+0

Написать демон и запустить его при запуске, он будет запускаться с привилегиями root по умолчанию. – rustyx

ответ

0
  • НПТ демон запускается с привилегиями суперпользователя, поскольку он запускается под учетной записи суперпользователя.

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^