Почему этот вопрос важен для разработчиков и фриланс‑специалистов
Работая с виртуальными серверами, контейнерами или локальными тестовыми средами, вам часто требуется быстро добавить нового системного пользователя. Неправильный выбор команды может привести к неожиданным настройкам домашнего каталога, группы или прав доступа, что в свою очередь усложнит дальнейшую автоматизацию и безопасность проекта.
1. Что такое useradd
useradd - это штатный бинарный файл, поставляемый практически со всеми дистрибутивами Linux (часто входит в пакет shadow).
Он читает глобальные параметры из файлов /etc/login.defs и /etc/default/useradd и на их основе создаёт учётную запись.
Характеристики:
- Низкоуровневый: работает напрямую с системными файлами
/etc/passwd,/etc/shadow. - Универсальный: одинаково функционирует в большинстве дистрибутивов, включая RHEL, CentOS, Fedora, openSUSE.
- Опции задаются полностью в командной строке; если что‑то не указано, берётся значение по умолчанию из конфигураций.
Пример базового вызова:
sudo useradd -m -s /bin/bash newuser
-m - создать домашний каталог, -s - задать оболочку.
2. Что такое adduser
adduser - оболочка над useradd. В разных семействах Linux она реализована по‑разному.
2.1. Debian‑производные (Ubuntu, Linux Mint, Kali и др.)
Здесь adduser - скрипт на Perl, который внутри вызывает useradd.
Он ориентирован на человека, а не на скрипт:
- выводит понятные сообщения о назначенных UID/GID, месте домашнего каталога;
- интерактивно запрашивает пароль, полное имя и другие параметры, если их не задали в командной строке;
- автоматически создаёт пользовательскую группу с тем же именем, что и пользователь.
Пример интерактивного запуска:
sudo adduser newuser
После нескольких вопросов система создаст учётную запись со всеми типичными настройками.
2.2. Red Hat‑производные (RHEL, CentOS, Fedora)
В этих системах adduser - обычная символьная ссылка на бинарник useradd. Функционально они полностью совпадают, и выбор команды не влияет на результат.
2.3. openSUSE
В официальных репозиториях adduser отсутствует, поэтому используется только useradd.
3. Как решить, какую команду применять
| Дистрибутив | Что доступно | Когда стоит предпочесть adduser |
|---|---|---|
| Debian, Ubuntu, Mint | useradd + adduser (Perl‑скрипт) |
Нужно быстро создать учётку без изучения всех флагов useradd. |
| RHEL, CentOS, Fedora | useradd, adduser - ссылка |
Любая команда, предпочтительно useradd для согласованности с другими скриптами. |
| openSUSE | только useradd |
Использовать useradd. |
Практический совет: если вы пишете скрипт, который будет работать на разных серверах, лучше явно вызывать useradd с полным набором параметров. Если же задача одноразовая и вы работаете в Debian‑семье, adduser сэкономит время и уменьшит количество ошибок.
4. Примеры использования в реальных сценариях
4.1. Автоматическое создание пользователя в CI/CD‑pipeline
#!/bin/bashUSERNAME=$1sudo useradd -m -s /bin/bash "$USERNAME"echo "User $USERNAME created"
Почему useradd: скрипт запускается в разных окружениях (Ubuntu‑builder, CentOS‑runner), где adduser может вести себя иначе.
4.2. Быстрый ручной ввод на локальном ноутбуке (Ubuntu)
sudo adduser devops
Плюс adduser: интерактивный ввод пароля, указание полного имени и дополнительные вопросы упрощают процесс для новичка.
5. Лучшие практики при работе с пользователями
- Проверяйте наличие домашней директории (
-mвuseraddили автоматическое создание вadduser). - Явно задавайте оболочку (
-s /bin/bash) - иначе может быть назначена/bin/sh, что не всегда удобно. - Создавайте отдельную группу (
-gилиadduserделает это автоматически). - Не забывайте ставить пароль через
passwd usernameпосле создания учётки, если нужен интерактивный вход. - Документируйте параметры в своих playbook‑ах или скриптах, чтобы коллеги быстро понимали, какие флаги используются.
6. Выводы
useradd- базовый, всегда присутствующий в системе инструмент; идеально подходит для скриптов и кросс‑дистрибутивных решений.adduser- надстройка, предоставляющая более дружелюбный интерфейс в Debian‑производных и просто псевдоним в Red Hat‑семье.- Выбор зависит от контекста: ручная работа →
adduser; автоматизация →useradd.
Овладев обоими вариантами, вы сможете без проблем управлять пользователями в любой Linux‑среде, сохраняя безопасность и предсказуемость настроек.
Помните: при переходе между дистрибутивами всегда читайте man useradd и man adduser - небольшие различия в параметрах могут влиять на конечный результат.
