Вопрос или проблема
Запускаю ISC KEA 2.0.2 на Ubuntu Server 22.04.5 LTS, недавно произошел сбой из-за разрешений на файл аренды KEA. Это было замечено через несколько часов после обновления (apt update; apt upgrade
). Не уверен, сломало ли обновление что-то или нет, но владение файлом аренды kea было перепутано (точно не помню как; я их исправил, чтобы процессы смогли запуститься).
В любом случае, позже я обнаружил, что использование keactrl для запуска процессов kea приводит к другому владельцу процесса, чем если бы я использовал systemctl, как показано здесь:
root# keactrl start
root# ps -eo euser,ruser,suser,fuser,f,comm | fgrep kea
root root root root 4 kea-dhcp4
root root root root 4 kea-dhcp-ddns
root root root root 4 kea-ctrl-agent
root# keactrl stop
root# systemctl start kea-dhcp4-server.service kea-dhcp-ddns-server.service kea-ctrl-agent.service
root# ps -eo euser,ruser,suser,fuser,f,comm | fgrep kea
_kea _kea _kea _kea 4 kea-ctrl-agent
_kea _kea _kea _kea 4 kea-dhcp-ddns
_kea _kea _kea _kea 4 kea-dhcp4
Но файлы аренды принадлежат _kea:
root# ls -l /var/lib/kea
total 20
-rw-rw-r-- 1 _kea _kea 41 Feb 16 10:50 kea-dhcp6-serverid
-rw-r--r-- 1 _kea _kea 732 Feb 16 10:54 kea-leases4.csv
-rw-r--r-- 1 _kea _kea 2342 Feb 16 09:09 kea-leases4.csv.2
При запуске (systemd) службы kea настроены на запуск от имени _kea. Поскольку я не могу войти как _kea, для использования keactrl мне нужно использовать sudo -u _kea keactrl
(что работает, но дает ошибки).
Программы kea не являются suid (например):
root# ls -l /usr/sbin/kea-dhcp4
-rwxr-xr-x 1 root root 996160 May 12 2023 /usr/sbin/kea-dhcp4
Что это все значит для меня, так это то, что keactrl не подходит для управления (или хотя бы для запуска) служб kea, но я практически ничего не нашел в сети об этом возможном источнике проблем при запуске ISC KEA. У кого-нибудь есть мысли о том, почему, кажется, существует это несоответствие или какой де-факто лучший способ установить и запустить ISC KEA? Может, я чего-то не понимаю?
Спасибо!
Ответ или решение
Для более глубокого понимания ситуации с запуском услуг KEA с использованием systemctl
и keactrl
на Ubuntu Server 22.04.5 LTS, рассмотрим теоретические аспекты, примеры из реальной ситуации и их применение к вашей проблеме.
Теория
1. Различия между systemctl и keactrl
Systemctl — это утилита командной строки, используемая для управления системами и службами, работающими на systemd. Systemd — популярная система инициализации в современных дистрибутивах Linux, которая управляет службами, процессами и другими аспектами системы.
Keactrl — это инструмент, предоставляемый ISC для управления демонами KEA. Он создан специально для удобства управления различными компонентами KEA, такими как DHCP4, DHCP6, DDNS и другими.
2. Права пользователей и работа служб
Когда речь идет о правах пользователя, важно понимать, что процессы могут запускаться от имени различных пользователей в зависимости от того, как они инициализируются. Это может влиять на права доступа к файлам и другим ресурсам.
3. Procdure UID (RUID, EUID, SUID)
- RUID (Real User ID) — это идентификатор реального пользователя. Обычно он соответствует пользователю, который инициировал процесс.
- EUID (Effective User ID) — идентификатор эффективного пользователя. Это тот идентификатор, который используется процессом для доступа к ресурсам.
- SUID (Saved User ID) используется при изменении прав доступа к процессам и обычно не влияет на повседневные операции.
Пример
Согласно вашей ситуации:
-
При использовании
keactrl start
, процессы KEA запускаются под пользователемroot
. Это потому, чтоkeactrl
запускается из-подroot
, и чтобы изменить пользователя, необходимо использоватьsudo -u _kea keactrl
. Это приводит к неправильным правам пользователя, так как сами исполняемые файлы не имеют суид-битов, чтобы изменить эффективный идентификатор пользователя. -
При запуске через
systemctl
, процессы функционируют под пользователем_kea
, что соответствует конфигурации systemd, где служба настраивается для работы от имени определенного пользователя для повышения безопасности.
Применение
1. Практика безопасной настройки
Запуск служб от имени пользователя _kea
, как это реализовано в Systemd, помогает ограничить доступ и улучшить безопасность, предотвращая то, чтобы службы имели более широкий доступ, чем необходимо.
2. Управление через systemctl
Основываясь на вашем опыте, целесообразно использовать systemctl
для управления службами KEA. Это обеспечивает согласованность в правах доступа и общей конфигурации. Также это позволяет воспользоваться преимуществами systemd, такими как автозапуск, управление зависимостями и логирование.
3. Устранение потенциальных проблем
Чтобы избежать подобных проблем в будущем, проверьте:
-
Конфигурационные файлы в
/etc/systemd/system/
для каждой службы KEA. -
Убедитесь, что для всех файлов, к которым обращаются службы KEA, установлены правильные права, чтобы они находились в собственности и под контролем пользователя
_kea
. -
Регулярно проверяйте лог-файлы для выявления любых ошибок или предупреждений.
Заключение
Несоответствие в правах пользователей при запуске KEA через разные механизмы связано с различиями в управлении процессами и их конфигурацией. Рекомендуется управлять службами KEA через systemd, используя systemctl
, чтобы избегать проблем с правами доступа и обеспечивать надежную и предсказуемую работу служб. Это также оправдано лучшими практиками в ИТ-администрировании, направленными на упрощение управления системами и повышение безопасности.