Гид по технологиям

Управление группами пользователей в Linux

• 6 min read • Linux • Обновлено 29 Nov 2025
Управление группами пользователей в Linux
Управление группами пользователей в Linux

Управление пользователями в Linux с помощью групп

Зачем использовать группы в Linux

Группы позволяют назначать права не отдельным пользователям, а целым коллекциям аккаунтов. Это снижает число ошибок, упрощает аудит и ускоряет изменение прав при смене обязанностей. Термины:

  • Primary group — основная группа пользователя; влияет на создаваемые файлы (uid:gid).
  • Secondary groups — дополнительные группы; дают дополнительные права.

Важно: группа — это только механизм принадлежности; права на файлы и ресурсы всё ещё устанавливаются через владельцев, группы и ACL.

Создание групп в Linux

Команда для создания группы — groupadd. Базовая форма:

groupadd [опции] имя_группы

Пример: создать группу writers:

groupadd writers

Команда добавит запись в /etc/group и /etc/gshadow. Просмотреть можно через:

cat /etc/group
cat /etc/gshadow

Требуются привилегии root. Выполняйте команды с sudo или под root.

Обработка ошибок и флаги

Если группа уже существует, вы увидите:

groupadd: group 'writers' already exists

Чтобы подавить ошибку и сделать операцию идемпотентной, используйте –force (-f):

groupadd --force writers

Задание конкретного GID

Система назначает GID автоматически. Чтобы явно указать идентификатор, применяйте -g:

groupadd -g 600 writers

Если GID занят, появится:

groupadd: GID '600' already exists

Флаг -o (–non-unique) разрешает использовать уже существующий GID. Это редко рекомендуется, так как может вызвать путаницу.

groupadd -o -g 600 writers

Практика: для системных групп используйте диапазоны GID, зарезервированные дистрибутивом, а для пользовательских — другой диапазон.

Пароль у группы

groupadd поддерживает флаг -p, но он ожидает зашифрованную строку пароля, а не открытый текст. Не передавайте plaintext!

Генерация хеша (SHA-512) через OpenSSL:

openssl passwd -6 'секрет'    # вернёт хеш, который можно передать в -p
groupadd -p '$6$...hash...' writers

Однако на практике пароли групп используются редко. Вместо этого применяют механизмы контроля доступа (sudo, ACL, PAM, LDAP). Для управления паролями групп эффективнее использовать gpasswd:

gpasswd writers        # интерактивно задаёт/убирает пароль
gpasswd -r writers     # удаляет пароль у группы

Системные группы

Системные группы — для сервисных аккаунтов и операций (например, backup). Создавайте с флагом -r:

groupadd -r hardwareteam

Системные группы обычно получают GID из малого диапазона и служат для изоляции сервисов.

Получение списка членов группы

Узнать членов группы можно через getent:

getent group writers

Вывод — строка из /etc/group с перечислением членов. Для машин в домене LDAP getent покажет объединённый список (локальные + каталог).

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

Для модификации существующего пользователя используйте usermod. Базовый синтаксис для добавления в группы:

usermod -a -G группа пользователь
  • -G задаёт список вспомогательных групп (через запятую).
  • -a добавляет (append); без -a вы перезаписываете список вспомогательных групп.

Примеры:

usermod -a -G writers randomuser
usermod -a -G writers,admin,owner randomuser

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

useradd позволяет задать вспомогательные группы при создании:

useradd -G writers randomuser
useradd -G writers,admin,owner randomuser

Учтите, что у разных дистрибутивов могут отличаться умолчания (домашний каталог, shell). Проверяйте man useradd.

Удаление пользователей из группы

Чтобы удалить пользователя из одной из вспомогательных групп, перезапишите список -G без удаляемой группы. Пример: у пользователя random есть admin (primary), writers и editors (вспомогательные). Чтобы убрать editors:

usermod -G writers random

Важно: всегда сохраняйте хотя бы одну основную группу для пользователя. Чтобы сменить основную группу, применяется -g.

Удаление групп

Удаляется через groupdel:

groupdel writers

Если группы нет, получите ошибку:

groupdel: group 'writers' does not exist

Перед удалением проверьте, что в группе нет активных требований от сервисов и пользователей.

Дополнительные утилиты и способы

  • gpasswd — управление паролем группы и админами группы. Позволяет добавлять/удалять участников и назначать админов группы:
gpasswd -a user group    # добавить
gpasswd -d user group    # удалить
  • vigr/vigr -s — безопасное редактирование /etc/group и /etc/gshadow. Используйте вместо прямого редактирования файла в текстовом редакторе.
  • PRAGMA: не редактируйте /etc/group напрямую без блокировки/резервных копий.

Масштабирование: что делать при тысячах пользователей

Локальные /etc/group плохо масштабируют. Альтернативы:

  • LDAP/Active Directory + SSSD — централизованная база пользователей/групп, кэширование и единое управление.
  • Configuration management (Ansible/Chef/Puppet) — для согласованного создания пользователей и групп на серверах.
  • IdM/FreeIPA — если нужна интеграция аутентификации, авторизации и политики.

Пример фрагмента Ansible для создания группы и добавления пользователя:

- name: Ensure group exists
  ansible.builtin.group:
    name: writers
    gid: 600
    state: present

- name: Ensure user exists and is member of groups
  ansible.builtin.user:
    name: randomuser
    groups: writers,admin
    append: yes
    state: present

Mental model и эвристики

  • Отдавайте приоритет группе над индивидуальными правами: меньше уникальных правил = проще аудит.
  • Разделяйте системные группы (для сервисов) и рабочие группы (для людей).
  • Для критичных сервисов используйте отдельные GID-диапазоны и документируйте их.

Безопасность и лучшие практики

  • Не храните открытые пароли в скриптах и репозиториях. Для groupadd -p передавайте только хеш.
  • Используйте /etc/gshadow для безопасного хранения паролей групп; редактируйте через vigr.
  • Отслеживайте, какие группы имеют привилегии sudo, доступ к критичным ресурсам и записям в ACL.
  • Применяйте аудит: регулярно выгружайте список групп и сопоставление с ролями.

Пример команды для экспорта групп и членов:

getent group > groups-$(date +%F).txt

Когда групп недостаточно или когда они не работают

  • Для гибких правил доступа используйте POSIX ACL или SELinux/AppArmor, если нужен finer-grained control.
  • Для распределённых авторизаций и SSO используйте LDAP/SSSD или внешние провайдеры.
  • Если группы приводят к конфликтам GID при миграции, спланируйте маппинг GID и используйте non-unique только в исключительных случаях.

Чек-листы по ролям

Администратор сервера:

  • Создать документ по GID-диапазонам.
  • Использовать vigr для правок /etc/group.
  • Регулярно выводить и проверять списки членов групп.

DevOps:

  • Автоматизировать создание групп/пользователей через CM.
  • Интегрировать с LDAP/IdM для масштабирования.
  • Настроить мониторинг изменений в /etc/group и /etc/gshadow.

Служба поддержки/Helpdesk:

  • Проверять первичную группу пользователя перед изменением.
  • Информировать о влиянии изменений на доступ к файлам и сервисам.

Справочник команд (cheat sheet)

ДействиеКоманда
Создать группуgroupadd writers
Создать системную группуgroupadd -r hardwareteam
Создать с GIDgroupadd -g 600 writers
Создать с хеш-паролемgroupadd -p ‘$6$hash’ writers
Добавить в группу (существ. пользователь)usermod -a -G writers randomuser
Добавить при создании пользователяuseradd -G writers randomuser
Просмотреть членов группыgetent group writers
Удалить из группыusermod -G writers user (перезаписать список)
Удалить группуgroupdel writers
Редактировать безопасноvigr (для /etc/group)
Управлять паролями группыgpasswd -a/-d/-r

Простая методология внедрения групп

  1. Определите роли и карты доступа (who needs access to what).
  2. Спроектируйте набор групп, минимально достаточный для ролей.
  3. Выберите GID-политику и задокументируйте её.
  4. Автоматизируйте создание через CM и проверяйте idempotence.
  5. Настройте аудит и предупреждения на изменения групп.
  6. Проводите ревью прав регулярно.

Решение: локальные группы или каталог

flowchart TD
  A[Небольшая сеть '<100 пользователей'?] -->|Да| B[Использовать локальные /etc/group с CM]
  A -->|Нет| C[Централизованный каталог 'LDAP/AD/IdM']
  C --> D{Нужна SSO и политики?}
  D -->|Да| E[FreeIPA/AD + SSSD]
  D -->|Нет| F[LDAP + SSSD]

Критерии приёмки

  • Группы созданы в соответствии с документированной политикой GID.
  • Каждый изменённый аккаунт имеет минимум одну основную группу.
  • Изменения прогнаны через систему конфигурации (если применимо).
  • Проведён тест доступа к ресурсам (файлы/сервисы) после изменения.

Глоссарий

  • GID — идентификатор группы (число).
  • Primary group — основная группа пользователя.
  • Secondary groups — дополнительные группы.
  • SSSD — System Security Services Daemon для подключения к каталогам.

Итог

Группы — основной инструмент для управления доступом в Linux. Для одиночных серверов достаточно groupadd/usermod/groupdel и vigr. При росте числа пользователей переходите на централизованные каталоги и автоматизацию. Всегда документируйте политику групп, контролируйте GID и применяйте меры безопасности (не передавайте открытые пароли, используйте gshadow и аудиты).

Important: проверяйте последствия изменений на тестовой среде перед применением в продакшн.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро