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

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Понимание управления пользователями — ключ к безопасности и эффективности вашей системы.

📌 О чём эта статья?

В Linux каждая операция выполняется от имени пользователя. Правильное управление пользователями и группами — основа безопасности, изоляции и удобства администрирования.

В этой статье вы узнаете:

  • Как устроены пользователи и группы в Linux
  • Как создавать, изменять и удалять учётные записи
  • Как управлять правами через группы и sudo
  • Где хранятся данные о пользователях
  • Практические примеры и лучшие практики

🧩 Как устроены пользователи в Linux?

В Linux существуют два основных типа пользователей: пользователи-люди (human users) и системные пользователи (system users). Системные пользователи создаются для работы различных служб и приложений, таких как базы данных или веб-серверы (например, www-data, mysql).

Каждый пользователь в Linux имеет:

  • UID (User ID) — числовой идентификатор
  • Имя пользователя (username)
  • Домашнюю директорию (обычно /home/username)
  • Оболочку по умолчанию (например, /bin/bash)
  • Пароль (или его хэш)
  • Группы, в которые он входит

NOTE

Ядро Linux работает только с UID, а не с именами. Имена нужны только для удобства администраторов.
Источник: The Linux Programming Interface, Michael Kerrisk


🔢 UID: что это и как работает

Диапазон UIDНазначение
0root — суперпользователь
1–999Системные пользователи (демоны)
1000+Обычные пользователи

WARNING

UID 0 имеет полный доступ к системе. Никогда не создавайте обычных пользователей с UID 0 (кроме root).


📁 Где хранятся данные о пользователях?

Основные файлы в /etc: gateway

ФайлНазначение
/etc/passwdСписок пользователей (без паролей!)
/etc/shadowХэши паролей (только для root)
/etc/groupСписок групп
/etc/gshadowПароли групп (редко используется)

🔍 /etc/passwd — структура записи

Пример:

alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash

Разделено двоеточиями:

  1. Имя пользователя (alice)
  2. Пароль (x — означает, что хэш в /etc/shadow)
  3. UID (1001)
  4. GID (основная группа, 1001)
  5. Описание (GECOS) (Alice Smith)
  6. Домашняя директория (/home/alice)
  7. Оболочка (/bin/bash)

INFO

Подробнее: man 5 passwd


🔐 /etc/shadow — хранение паролей

Пример:

alice:$6$salt$hash:19123:0:99999:7:::

Поля:

  1. Имя пользователя
  2. Хэш пароля (в формате $id$salt$hash)
    • $6$ — SHA-512 (современный стандарт)
  3. Дни с 1970-01-01 до последней смены пароля
  4. Минимальный возраст пароля (в днях)
  5. Максимальный возраст
  6. Предупреждение перед истечением
  7. Неиспользуемые поля

WARNING

Файл /etc/shadow доступен только для root. Его утечка — критическая уязвимость.


🧩 /etc/group — группы пользователей

Как и пользователи, группы являются ключевым элементом многопользовательской среды Linux. Каждая группа имеет уникальный идентификатор группы (Group ID, GID). Пользователь может быть членом одной основной группы и нескольких дополнительных групп.

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

Пример:

developers:x:1002:alice,bob

Поля:

  1. Имя группы (developers)
  2. Пароль (x — редко используется)
  3. GID (Group ID)
  4. Список пользователей (через запятую)

INFO

Подробнее: man 5 group


🛠️ Основные команды управления пользователями

✅ Создание пользователя

Для создания новых учетных записей пользователей в большинстве дистрибутивов Linux используются команды useradd или adduser. Команда useradd является низкоуровневой командой для создания пользователей, в то время как adduser может быть более удобной.

При создании новой учетной записи пользователя, как правило, создается его домашний каталог. В этот домашний каталог копируется набор файлов по умолчанию, таких как .bashrc, .profile и .bash_history. Эти файлы могут содержать сценарии входа в систему и файлы конфигурации оболочки, и их шаблоны по умолчанию хранятся в каталоге /etc/skel.

Для изменения настроек существующей учетной записи используется команда usermod, а для удаления — userdel или deluser. Пароли пользователей устанавливаются или изменяются с помощью команды passwd. Также важно знать о сроках действия паролей и работе команды chage для повышения безопасности.

sudo useradd -m -s /bin/bash alice

Флаги:

  • -m — создать домашнюю директорию
  • -s — указать оболочку
  • -c — добавить описание: -c "Alice Smith"

TIP

Используйте adduser в Debian/Ubuntu — это дружелюбная обёртка:

sudo adduser alice

🔐 Установка пароля

sudo passwd alice

WARNING

Пароль должен быть надёжным. Используйте менеджер паролей (например, Bitwarden).


📝 Изменение пользователя

sudo usermod -s /bin/zsh alice     # Сменить оболочку
sudo usermod -d /new/home alice    # Сменить домашнюю директорию
sudo usermod -aG docker alice      # Добавить в группу (важно: -aG, не -G!)

NOTE

-aG — добавить к существующим группам.
-Gперезаписать список групп!


❌ Удаление пользователя

sudo userdel alice                 # Удалить пользователя
sudo userdel -r alice              # Удалить пользователя и домашнюю директорию

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

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

sudo groupadd developers

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

sudo usermod -aG developers alice

Просмотр групп пользователя

groups alice
id alice

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

# Нет прямой команды, но можно переназначить:
sudo gpasswd -d alice developers

🔐 Управление правами: sudo и wheel

Суперпользователь root

В любой системе Linux всегда присутствует привилегированная учетная запись root, также называемая суперпользователем. Эта учетная запись имеет идентификатор UID, равный 0, и обладает практически неограниченными административными полномочиями в системе. Пользователь root может открывать любые файлы, запускать любые программы, устанавливать программное обеспечение и управлять другими учетными записями. Ограничить права пользователя root практически невозможно.

В ранних дистрибутивах Linux существовала возможность авторизоваться непосредственно под учетной записью root, что давало полные административные права. Однако из-за возможных злоупотреблений и рисков безопасности разработчики дистрибутивов часто отключают учетную запись root по умолчанию. Вместо этого для выполнения операций, требующих административных полномочий, используется команда sudo. Пользователю, выполнившему команду sudo, становятся доступны те же полномочия, что и пользователю root. Первый пользователь, созданный при установке системы, обычно также обладает полномочиями root через sudo.

Приглашение командной строки для обычного пользователя обычно выглядит как $ (знак доллара), а для суперпользователя — как # (знак фунта, решетки).

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

sudo usermod -aG sudo alice    # Debian/Ubuntu
sudo usermod -aG wheel alice   # CentOS/RHEL, Fedora, Arch

INFO

Группа sudo (Debian) и wheel (Red Hat) дают права на использование sudo.
Конфигурация: /etc/sudoers


🔧 Настройка /etc/sudoers

Никогда не редактируйте напрямую! Используйте:

sudo visudo

Пример добавления:

alice ALL=(ALL:ALL) ALL

Формат:

Пользователь  Машина=(Кто) Права

WARNING

Ошибка в /etc/sudoers может заблокировать доступ к sudo.
Всегда используйте visudo — он проверяет синтаксис. Visudo — утилита в операционной системе Linux, которая безопасно редактирует файл /etc/sudoers.


🧪 Практические примеры

Пример 1: Создание пользователя

# Создаём пользователя
sudo useradd -m -s /bin/bash media
 
# Устанавливаем пароль
sudo passwd media
 
# Добавляем в группу docker (если используем Docker)
sudo usermod -aG docker media
 
# Проверяем
id media

Пример 2: Создание группы разработчиков

sudo groupadd devs
sudo usermod -aG devs alice
sudo usermod -aG devs bob
 
# Проверяем
groups alice

🔒 Лучшие практики безопасности

WARNING

Следуйте этим правилам, особенно на публичных серверах.

  1. Не используйте root для повседневной работы
  2. Отключите вход root по SSH:
    # /etc/ssh/sshd_config
    PermitRootLogin no
  3. Используйте sudo вместо su
  4. Регулярно удаляйте неиспользуемые учётные записи
  5. Настройте истечение паролей:
    sudo chage -M 90 alice   # Пароль истекает через 90 дней
  6. Используйте SSH-ключи вместо паролей

📊 Диагностика и проверка

whoami                    # Кто я?
id                        # UID, GID, группы
users                     # Кто вошёл в систему
last                      # История входов
w                         # Кто онлайн и что делает
sudo -l -U alice          # Какие права у пользователя alice

🔄 Современные альтернативы: LDAP, SSSD, NIS

Для управления пользователями в сетях используются централизованные решения:

  • LDAP — для аутентификации в корпоративных средах
  • SSSD — System Security Services Daemon (интеграция с LDAP, Active Directory)
  • NIS — устаревший, но ещё используется

INFO

Для домашних серверов достаточно локальных учётных записей.


📚 Рекомендуемые ресурсы


✅ Заключение

Управление пользователями — не просто техническая задача, а основа безопасности и удобства. Теперь вы можете:

  • Создавать и настраивать пользователей
  • Управлять группами и правами
  • Настроить sudo и отключить небезопасные практики
  • Понимать, где хранятся данные о пользователях

QUOTE

“Хороший администратор — это тот, кто никогда не входит под root.”
— Старое системное поверье

Источники: man7.org, tldp.org, archwiki.org, sudo.ws, nist.gov (рекомендации по паролям)