Работа с группами
В атомарной системе управление группами пользователей имеет свои особенности. На этой странице описано, как работает механизм групп в ALT Atomic и как добавить пользователя в нужные группы.
Как устроены пользователи и группы в атомарной системе
В классической системе все пользователи и группы хранятся в /etc/passwd и /etc/group. В атомарной системе на базе bootc директория /etc является персистентной (сохраняется между обновлениями), а /usr — иммутабельной (заменяется целиком при обновлении образа).
Это создает проблему: когда в новом образе появляется системный пользователь (например, пакет добавляет пользователя для своего сервиса), он не попадает автоматически в персистентный /etc/passwd.
NSS altfiles
Для решения этой проблемы используется модуль NSS altfiles. Он разделяет хранение на два источника:
/lib/passwdи/lib/group— системные пользователи и группы из образа (иммутабельные, обновляются вместе с образом)/etc/passwdи/etc/group— локальные пользователи и группы (персистентные, создаются на конкретной машине)
При любом запросе пользователя или группы (например, getent group docker) система ищет сначала в /etc, затем в /lib. Таким образом, системные учетные записи всегда актуальны из образа, а локальные пользователи сохраняются между обновлениями.
Настройка altfiles выполняется через /etc/nsswitch.conf:
passwd: files altfiles systemd
shadow: tcb files systemd
group: files [SUCCESS=merge] altfiles [SUCCESS=merge] systemd roleAPM автоматически настраивает altfiles во время сборки любого образа при выполнении условий: атомарная система, присутствует пакет libnss-altfiles
Добавление пользователя в группы
APM предоставляет команду sync-groups, которая добавляет пользователей в указанные группы на основе YAML-конфигов.
Конфигурация
Конфиги читаются из двух директорий:
/usr/share/apm/grpconf.d/— конфиги из образа (добавляются при сборке)/etc/apm/grpconf.d/— пользовательские конфиги (можно добавить на конкретной машине)
Формат конфига (файлы .yaml или .yml):
sync:
groups:
- docker
- libvirt
- audio
- video
users:
- dm
- testuser- groups — список групп, в которые нужно добавить пользователей
- users — список пользователей (опционально)
Если users не указан, APM автоматически добавит всех пользователей из группы wheel с UID в диапазоне 1000-60000.
Применение
Синхронизация групп:
apm system image sync-groupsКоманда:
- Читает все
.yaml/.ymlфайлы из/usr/share/apm/grpconf.d/и/etc/apm/grpconf.d/ - Проверяет, что указанные пользователи существуют в системе
- Добавляет пользователей в группы, исправляя GID если он расходится с образом
- Операция идемпотентна — повторный запуск ничего не сломает
Автоматический запуск
При загрузке системы sync-groups выполняется автоматически через systemd-сервис sync-users.service. Это гарантирует, что после обновления образа пользователи окажутся в правильных группах.
Добавление пользовательского конфига
Если вам нужно добавить пользователя в группу, которая не покрыта конфигами из образа:
- Создайте файл
/etc/apm/grpconf.d/my-groups.yaml:
sync:
groups:
- docker
- wireshark- Примените изменения:
apm system image sync-groupsКонфиги из /etc/apm/grpconf.d/ переживают обновления образа, поэтому ваши настройки сохранятся.