Как создать пользователя в Linux?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Создание пользователя в 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 в репозиториях).
Ключевые файлы системы, изменяемые при создании пользователя
После выполнения команды изменения затрагивают:
/etc/passwd— добавляется запись с логином, UID, GID, комментарием, домашним директорием и shell./etc/shadow— добавляется хэш пароля (или поле!/*если пароль не задан)./etc/group— может быть добавлена новая группа (первичная), или пользователь будет включен в существующие группы./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 её применение часто встраивается в более широкие процессы автоматизации конфигурации, управления доступом и обеспечения безопасности инфраструктуры.