kea services ruid, euid различаются при запуске с systemctl и keactrl

Вопрос или проблема

Запускаю 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, чтобы избегать проблем с правами доступа и обеспечивать надежную и предсказуемую работу служб. Это также оправдано лучшими практиками в ИТ-администрировании, направленными на упрощение управления системами и повышение безопасности.

Оцените материал
Добавить комментарий

Капча загружается...