← Назад к вопросам

Как создать пользователя в Linux?

1.0 Junior🔥 231 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Создание пользователя в Linux: базовые и расширенные методы

В Linux создание пользователя — фундаментальная задача администрирования, выполняемая с помощью команды useradd или ее более дружелюбного аналога adduser (в некоторых дистрибутивах). Процесс включает не только добавление записи в системные файлы (/etc/passwd, /etc/shadow, /etc/group), но и создание домашнего директория, настройку окружения и установку прав.

Основные команды и их различия

  • useradd — стандартная утилита, доступная во всех дистрибутивах. Она предоставляет точный контроль над параметрами, но требует явного указания многих настроек.
  • adduser — интерактивный, более "умный" скрипт (часто встречается в Debian/Ubuntu), который автоматически выполняет дополнительные шаги: создаёт домашнюю директорию, копирует скелетные файлы (/etc/skel) и может запрашивать пароль.

Базовый пример создания пользователя с useradd

Самый простой способ создать пользователя с домашним директорием:

sudo useradd -m newusername

После этого необходимо установить пароль командой:

sudo passwd newusername

Расширенное использование useradd с ключевыми параметрами

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

sudo useradd -m -d /home/customdir -s /bin/bash -G developers,sudo -c "Full Name" newusername
  • -m (--create-home) — создаёт домашнюю директорию (обычно /home/newusername).
  • -d (--home) — задаёт путь к домашнему директорию (если отличается от стандартного).
  • -s (--shell) — определяет командную оболочку пользователя (например, /bin/bash, /bin/sh, /usr/bin/zsh).
  • -G (--groups) — список дополнительных (secondary) групп, в которые будет включен пользователь (через запятую без пробелов). Важно: пользователь всегда принадлежит своей первичной группе (с именем как у пользователя), создаваемой автоматически.
  • -c (--comment) — комментарий, обычно используемый для указания полного имени.
  • -u (--uid) — явное задание UID (User ID). Используется для сохранения уникальности при синхронизации между системами.
  • -p (--password) — не рекомендуется для командной строки, так пароль передаётся в виде хэша и может быть виден в истории. Используйте passwd после создания.

Практический пример создания разработчика с доступом к Docker

Частая задача в DevOps — создание пользователя для разработчика с необходимыми привилегиями:

# Создаём пользователя devuser с домашней директорией, shell bash и в группах 'developers' и 'docker'
sudo useradd -m -s /bin/bash -G developers,docker devuser

# Устанавливаем пароль
sudo passwd devuser

# Проверяем результат (UID, GID, группы)
id devuser

Результат команды id покажет UID, первичную группу (GID) и список всех групп пользователя, подтверждая успешное добавление.

Автоматизация и скрипты для массового создания

В DevOps для подготовки среды (например, в Dockerfile или при оркестрации виртуальных машин) пользователей часто создают автоматически:

#!/bin/bash
# Скрипт для создания пользователя с предопределёнными настройками
USERNAME="appuser"
HOME_DIR="/opt/$USERNAME"

sudo useradd -m -d $HOME_DIR -s /bin/bash -G appgroup -c "Application Service Account" $USERNAME
sudo chown -R $USERNAME:appgroup $HOME_DIR
# Установка пароля из переменной окружения (для автоматизации в CI/CD)
if [ -n "$APP_USER_PASSWORD" ]; then
    echo "$USERNAME:$APP_USER_PASSWORD" | sudo chpasswd
fi

Внимание к безопасности: Использование chpasswd с переменной окружения допустимо в автоматизированных сценариях, но необходимо следить за безопасностью этих переменных (например, не хранить в plain-text в репозиториях).

Ключевые файлы системы, изменяемые при создании пользователя

После выполнения команды изменения затрагивают:

  1. /etc/passwd — добавляется запись с логином, UID, GID, комментарием, домашним директорием и shell.
  2. /etc/shadow — добавляется хэш пароля (или поле !/* если пароль не задан).
  3. /etc/group — может быть добавлена новая группа (первичная), или пользователь будет включен в существующие группы.
  4. /etc/skel/ — файлы из этой директории копируются в новый домашний директорий (если используется флаг -m и существует adduser или useradd с соответствующими настройками).

Рекомендации и лучшие практики для DevOps

  • Использование первичных и дополнительных групп для управления правами (на файлы, Docker, sudo) вместо прямого редактирования sudoers для каждого пользователя.
  • Создание сервисных аккаунтов без возможности логина (-s /usr/sbin/nologin) и без домашней директории для запуска демонов.
  • В Docker-контейнерах часто пользователи создаются с явным UID/GID для корректного маппинга файловых прав между контейнером и host-системой.
  • Для аутентификации в корпоративной среде интеграция с LDAP или Active Directory через sssd или pam_ldap предпочтительнее локального создания пользователей.

Таким образом, команда useradd является основным инструментом, но в контексте DevOps её применение часто встраивается в более широкие процессы автоматизации конфигурации, управления доступом и обеспечения безопасности инфраструктуры.

Как создать пользователя в Linux? | PrepBro