Хорошей практикой является запуск демона под учетной записью пользователя без полномочий root?

Я разработал приложение, которое использует NTP для изменения сетевого времени, для синхронизации двух моих компьютеров. Он работает от имени root , поскольку только последнему разрешено изменять время и дату в Linux (я думаю).

Теперь я хочу запустить его как пользователь. Но мне нужно получить доступ к времени.

  • Хорошей практикой является запуск демона под учетной записью пользователя без полномочий root?
  • Должен ли я предоставить моему приложению такие возможности , как CAP_SYS_TIME ?
  • Разве это не приводит к уязвимости безопасности?
  • Есть ли способ лучше?

3 Solutions collect form web for “Хорошей практикой является запуск демона под учетной записью пользователя без полномочий root?”

Хорошей практикой является запуск демона под учетной записью пользователя без полномочий root?

Да, и это распространено. Например, Apache запускается с правами root, а затем запускает новый процесс как www-data (по умолчанию).
Как говорилось ранее, если ваша программа взломана (например, инъекция кода), злоумышленник не получит права доступа root, но будет ограничен привилегиями, которые вы предоставили этому конкретному пользователю.

Должен ли я дать «Способность», например «CAP_SYS_TIME»?

Это хорошая идея, так как вы избегаете использования setuid и ограничиваете разрешения этой специфической возможностью.

Должен ли я использовать другой способ сделать так, чтобы это считалось «хорошей практикой»?

Вы можете повысить безопасность, например:

  • Запустите службу как непривилегированный пользователь без оболочки.
  • Используйте chroot, чтобы заблокировать пользователя в его домашнем каталоге.
  • Должен ли я использовать другой способ сделать так, чтобы это считалось «хорошей практикой»?

Если у вас нет серьезных, неопровержимых причин, вы должны просто использовать пакет NTP, который поставляется вместе с вашим дистрибутивом GNU / Linux. Стандартный демон NTP занял много лет, чтобы созреть и оснащен сложными функциями, такими как замедление или ускорение часов вашей системы, чтобы синхронизировать его с сетью или GPS-часами. Он предназначен для синхронизации часов, поэтому, скорее всего, это лучший инструмент для этой цели.

ntpd по-прежнему поддерживается, судя по последним обновлениям (на момент написания этой публикации). Если вам нужно больше возможностей, я бы посоветовал вам напрямую связаться с разработчиками, доверять тому, что они могут сказать об этом.

Если у вас есть программа, которая должна иметь возможность выполнять функцию X (например, манипулировать часами), и вы можете дать ей привилегию / силу для выполнения функции X и ничего больше, это лучше, чем дать ей целую азбуку суп. Это называется принципом наименьших привилегий . Учтите, что, если ваша программа имеет ошибку – либо обычную ошибку программирования, либо уязвимость, связанную с безопасностью. Если он работает как «root», он может удалить все файлы – или отправить их злоумышленнику. Если единственное, что может сделать программа, это манипулировать часами (и непривилегированными функциями, такими как манипулирование файлами в заблокированном каталоге), то это самое худшее, что может случиться, если программа станет изгоем.

  • Как я могу устранить SELinux, не позволяя законным программам использовать доступ к моей системе?
  • Как заставить конфликт зависимости для контрольных показателей?
  • Сумма% в столбце CPU не соответствует общей сумме CPU%
  • Элементы управления Parentals?
  • Может ли пользователь перетаскивать список каталогов без разрешения на чтение в каталоге?
  • Это делает sudo более безопасным при индексировании всех команд по их контрольным суммам SHA-2?
  • Безопасное использование неизвестных приложений
  • Как обнаружить и остановить пользователя от удаления определенного файла в Linux?
  • Как можно контролировать монитор?
  • PBS-эквивалент команды «верхний»: не запускать «qstat» повторно
  • Как защитить паролем скрипт от Linux?
  • Linux и Unix - лучшая ОС в мире.