Я разработал приложение, которое использует NTP для изменения времени в сети, для синхронизации двух моих компьютеров. Он работает как root
, поскольку только последний может изменять время и дату в Linux (я думаю).
Теперь я хочу запустить его как пользователь. Но мне нужно получить доступ ко времени.
- Является ли хорошей практикой запуск демона под учетной записью пользователя без полномочий root?
- Должен ли я дать моему приложению такую возможность , как
CAP_SYS_TIME
? - Разве это не представляет уязвимость безопасности?
- Есть ли способ лучше?
security
daemon
access-control
Anonymous12223
источник
источник
ntp
учетной записи пользователя (по крайней мере, в системах Linux), поэтому вам не нужно вносить это изменение. Какой пакет NTP вы установили?Ответы:
Да, и это распространено. Например, Apache запускается как root, а затем разветвляет новый процесс как www-data (по умолчанию).
Как было сказано ранее, если ваша программа взломана (например, внедрение кода), злоумышленник не получит root-доступ, но будет ограничен привилегиями, которые вы дали этому конкретному пользователю.
Это хорошая идея, так как вы избегаете использования setuid и ограничиваете права доступа к этой специфической возможности.
Вы можете повысить безопасность, например:
источник
USER
в каталог, вы используетеchroot
(запустите его от имени пользователя root). Однако вы должны создать и инициализировать тюрьму (каталог) раньше. Короче говоря, вы должны поместить библиотеки и двоичные файлы, которые нужны вашему процессу, в эту тюрьму, а затем вызватьchroot <path/to/jail> <command>
. Хороший учебник с некоторыми примерами, которые вам нужны, доступен здесьЕсли у вас нет веских, неопровержимых причин, вам следует просто использовать пакет NTP, который входит в ваш дистрибутив GNU / Linux. Стандартному демону NTP потребовались годы, и он обладает такими сложными функциями, как замедление или ускорение часов вашей системы для синхронизации с сетью или часами GPS. Он предназначен для синхронизации часов, поэтому, скорее всего, это лучший инструмент для этой цели.
ntpd
все еще поддерживается, судя по последним обновлениям (на момент написания этого поста). Если вам нужны дополнительные функции, я бы посоветовал вам напрямую связаться с разработчиками, поверьте, что они скажут об этом.источник
Если у вас есть программа, которая должна иметь возможность выполнять функцию X (например, манипулировать часами), и вы можете дать ей привилегию / право выполнять функцию X и ничего больше, это лучше, чем дать ей всю банку алфавита суп. Это известно как принцип наименьших привилегий . Подумайте, что если в вашей программе есть ошибка - обычная программная ошибка или уязвимость в уязвимости, которую можно использовать. Если он работает как «root», он может удалить все файлы или отправить их злоумышленнику. Если единственное, что может сделать программа, это манипулировать часами (и непривилегированными функциями, такими как манипулирование файлами в заблокированном каталоге), то это может случиться хуже всего, если программа станет мошеннической.
источник