Skip to content

Работа с группами

В атомарной системе управление группами пользователей имеет свои особенности. На этой странице описано, как работает механизм групп в 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 role

APM автоматически настраивает altfiles во время сборки любого образа при выполнении условий: атомарная система, присутствует пакет libnss-altfiles

Добавление пользователя в группы

APM предоставляет команду sync-groups, которая добавляет пользователей в указанные группы на основе YAML-конфигов.

Конфигурация

Конфиги читаются из двух директорий:

  • /usr/share/apm/grpconf.d/ — конфиги из образа (добавляются при сборке)
  • /etc/apm/grpconf.d/ — пользовательские конфиги (можно добавить на конкретной машине)

Формат конфига (файлы .yaml или .yml):

yaml
sync:
  groups:
    - docker
    - libvirt
    - audio
    - video
  users:
    - dm
    - testuser
  • groups — список групп, в которые нужно добавить пользователей
  • users — список пользователей (опционально)

Если users не указан, APM автоматически добавит всех пользователей из группы wheel с UID в диапазоне 1000-60000.

Применение

Синхронизация групп:

bash
apm system image sync-groups

Команда:

  1. Читает все .yaml/.yml файлы из /usr/share/apm/grpconf.d/ и /etc/apm/grpconf.d/
  2. Проверяет, что указанные пользователи существуют в системе
  3. Добавляет пользователей в группы, исправляя GID если он расходится с образом
  4. Операция идемпотентна — повторный запуск ничего не сломает

Автоматический запуск

При загрузке системы sync-groups выполняется автоматически через systemd-сервис sync-users.service. Это гарантирует, что после обновления образа пользователи окажутся в правильных группах.

Добавление пользовательского конфига

Если вам нужно добавить пользователя в группу, которая не покрыта конфигами из образа:

  1. Создайте файл /etc/apm/grpconf.d/my-groups.yaml:
yaml
sync:
  groups:
    - docker
    - wireshark
  1. Примените изменения:
bash
apm system image sync-groups

Конфиги из /etc/apm/grpconf.d/ переживают обновления образа, поэтому ваши настройки сохранятся.

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное.