- Home »

Управление пользователями: useradd, usermod, userdel и другие
Когда дело доходит до управления сервером — будь то облако, VPS, выделенка или даже Docker-контейнер — одним из первых и фундаментальных навыков становится грамотное управление пользователями. Это как знать, где у тебя лежит ключ от квартиры: вроде бы мелочь, но без него — никуда. В этой статье разберёмся, как работают инструменты useradd
, usermod
, userdel
и их собратья, чтобы не только добавить пользователя, но и не наломать дров с доступами и безопасностью. Всё — на практике, с примерами, лайфхаками и антипаттернами.
Зачем вообще возиться с пользователями?
Если ты держишь сервер для себя, можно, конечно, жить под рутом (не делай так!), но стоит только захотеть раздать доступ коллегам, клиентам или просто грамотно изолировать процессы — тут без нормального управления пользователями не обойтись. Это не только про безопасность, но и про автоматизацию, удобство и масштабируемость.
- Разграничение прав: не все должны видеть всё.
- Управление доступом: быстро выдать или отозвать права.
- Логирование: кто что сделал, кто куда зашёл.
- Изоляция: процессы и файлы разных пользователей не должны пересекаться.
Особенно актуально для хостеров, девопсов, тех, кто гоняет проекты в Docker, и вообще для всех, кто не хочет потом разгребать хаос.
Как это работает? Алгоритмы и структура
В Unix-подобных системах (Linux, BSD и т.д.) каждый пользователь — это не просто имя, а целый набор параметров, которые хранятся в системных файлах:
- /etc/passwd — основной список пользователей (имя, UID, GID, домашняя директория, shell и т.д.).
- /etc/shadow — пароли пользователей (захэшированы, доступен только root).
- /etc/group — группы пользователей.
- /etc/gshadow — пароли групп (если такие есть).
Когда ты добавляешь пользователя через useradd
, система создаёт запись во всех нужных файлах, генерирует домашнюю директорию (если надо), прописывает shell, назначает группы. Управление пользователями — это не магия, а просто грамотная работа с этими файлами через обёртки-команды.
Основные команды и их роль
useradd
— создать нового пользователя.usermod
— изменить параметры существующего пользователя.userdel
— удалить пользователя.groupadd
,groupmod
,groupdel
— то же самое, но для групп.passwd
— задать или изменить пароль пользователя.chage
— управление политиками смены пароля.
Как быстро и просто всё настроить? Практические советы и схемы
Погнали по шагам — от простого к сложному.
1. Добавление пользователя
Самый базовый вариант:
sudo useradd ivan
Но на практике такой пользователь будет без домашней директории и пароля. Лучше сразу:
sudo useradd -m -s /bin/bash ivan
sudo passwd ivan
-m
— создать домашнюю директорию (/home/ivan
).-s /bin/bash
— указать shell (по умолчанию может быть/bin/sh
или даже/usr/sbin/nologin
).
2. Добавление в группу (например, sudo)
sudo usermod -aG sudo ivan
-a
— добавить, не заменяя другие группы.-G
— список групп (через запятую).
Теперь ivan
может использовать sudo
.
3. Удаление пользователя
sudo userdel -r ivan
-r
— удалить домашнюю директорию и почту пользователя.
Без -r
останутся “хвосты” в /home/ivan
.
4. Изменение shell или домашней директории
sudo usermod -d /srv/ivan -m ivan
sudo usermod -s /bin/zsh ivan
-d
— новая домашняя директория.-m
— переместить файлы из старой директории в новую.-s
— сменить shell.
5. Добавить пользователя в несколько групп
sudo usermod -aG www-data,docker ivan
Теперь ivan
может работать с веб-сервером и Docker-контейнерами.
Примеры, кейсы и сравнение (таблица)
Сценарий | Что делать | Команда | Комментарий |
---|---|---|---|
Добавить пользователя для SSH-доступа | Создать пользователя, задать пароль, добавить в sudo |
|
Базовый сценарий для разработчика |
Удалить пользователя полностью | Удалить учётку и домашнюю папку | sudo userdel -r olduser |
Внимание: удалятся все файлы в /home/olduser |
Ограничить shell (запретить вход по SSH) | Изменить shell на /usr/sbin/nologin | sudo usermod -s /usr/sbin/nologin testuser |
Пользователь не сможет войти в систему |
Добавить пользователя в Docker-группу | Дать право запускать контейнеры без sudo | sudo usermod -aG docker devuser |
Безопасно только если доверяешь пользователю |
Поменять домашнюю директорию | Перенести все файлы в новое место | sudo usermod -d /srv/dev -m devuser |
Не забудь про права доступа! |
Ошибки новичков и мифы
- Забывают про
-m
при создании пользователя — и потом удивляются, почему нет домашней директории. - Заменяют группы вместо добавления — не используют
-a
сusermod -G
, и пользователь теряет все остальные группы. - Удаляют пользователя без
-r
— остаются файлы, которые потом никто не чистит. - Дают shell
/bin/bash
сервисным пользователям — лучше использовать/usr/sbin/nologin
или/bin/false
. - Дают всем подряд права sudo — а потом ловят rootkit или случайные rm -rf /.
Похожие решения и альтернативные утилиты
adduser
— более дружелюбный скрипт (в Debian/Ubuntu), задаёт больше вопросов, сам создаёт директорию и прописывает параметры.deluser
— аналогuserdel
с опциями для удаления группы, чистки файлов и т.д.- GUI-утилиты —
gnome-system-tools
,KUser
(для десктопов, редко на серверах). - LDAP, FreeIPA — для больших инфраструктур, когда пользователей сотни или тысячи.
Статистика и сравнение
useradd/usermod/userdel — стандарт де-факто для большинства Linux-дистрибутивов. Работают быстро, не требуют дополнительных зависимостей, легко автоматизируются в скриптах и Ansible/chef/puppet.
adduser/deluser — удобнее для ручной работы, но под капотом всё равно используют useradd
и userdel
.
FreeIPA/LDAP — мастхэв для корпоративных сред, но для обычного VPS или Docker-контейнера избыточны.
Docker — внутри контейнеров часто используют adduser
+ usermod
для настройки пользователя приложения и прав доступа к томам.
Интересные факты и нестандартные способы использования
- Можно создавать пользователей без домашней директории и shell — для сервисов (например,
useradd -r -s /usr/sbin/nologin nginx
). - UID и GID можно задавать вручную (
-u
,-g
), чтобы синхронизировать права между несколькими серверами или при работе с Docker-томами. - Можно создавать системные группы и пользователей с UID/GID ниже 1000 (
-r
), чтобы отделить их от обычных юзеров. - В скриптах удобно использовать
getent passwd
иgetent group
для поиска пользователей и групп без парсинга файлов вручную. - Можно через
usermod
временно отключить пользователя, заблокировав ему пароль (sudo usermod -L username
).
Новые возможности для автоматизации и скриптов
Управление пользователями через командную строку идеально ложится в CI/CD пайплайны, Ansible-плейбуки, shell-скрипты для автоматизации развёртывания и миграции серверов. Примеры:
- Автоматическое создание пользователей при развертывании новых серверов.
- Массовое добавление пользователей из CSV-файла или API.
- Скрипты для временного блокирования/разблокирования доступа.
- Интеграция с системами мониторинга (например, оповещение при появлении нового пользователя).
- Бэкап и восстановление пользовательских данных и прав (парсинг
/etc/passwd
,/etc/shadow
,/etc/group
).
# Пример: добавить пользователей из списка
for user in $(cat users.txt); do
sudo useradd -m -s /bin/bash $user
echo "$user:$(openssl rand -base64 12)" | sudo chpasswd
done
Где ещё это пригодится?
- На VPS и выделенных серверах для управления доступом (VPS, выделенные серверы).
- В Docker-контейнерах для изоляции процессов и монтирования томов с нужными правами.
- В облачных хостингах для автоматизации развёртывания окружения под каждого клиента или проект.
- В образовательных и тестовых средах — быстро создать/удалить пользователей для практики.
Официальные ресурсы и документация
Выводы и рекомендации
Управление пользователями через useradd
, usermod
, userdel
— это must-have навык для любого, кто работает с серверами. Эти команды просты, предсказуемы, легко автоматизируются и позволяют держать систему под контролем. Главное — не забывай про безопасность, не давай лишних прав, всегда проверяй группы и не оставляй “мертвые души” на сервере. Автоматизируй всё, что можно, и используй официальную документацию — там много полезных нюансов.
Если нужен VPS или выделенный сервер для экспериментов — вот VPS и выделенные сервера. А для автоматизации — не стесняйся писать свои скрипты, использовать Ansible или другие инструменты.
Не бойся экспериментировать — но всегда делай бэкапы и думай о безопасности!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.