usermod – это команда для изменения уже существующей учётной записи в Linux. С её помощью добавляют пользователя в группы, переименовывают его, переносят домашнюю папку, меняют оболочку и временно блокируют вход.
Все команды ниже выполняются от имени root или через sudo. Мы проверили их на Debian 12, на Ubuntu и в других дистрибутивах они работают так же.
Создать пользователя, а не изменить
Если пользователя ещё нет, сначала создайте его.
На Ubuntu и Debian это команда adduser имя.
На AlmaLinux и CentOS это useradd -m имя.
Пример с отдельным пользователем для входа по SSH есть в статье о входе по SSH-ключам.
Как посмотреть текущие настройки пользователя
Перед любыми изменениями полезно проверить, что сейчас настроено у пользователя.
# UID, основная группа и все дополнительные группы пользователя
id username
# Строка пользователя из /etc/passwd: домашняя папка и оболочка
getent passwd usernameДобавить пользователя в группу
Это самая частая задача, например чтобы выдать права администратора через sudo или доступ к Docker.
# Добавляем пользователя в группу sudo (на Ubuntu и Debian)
usermod -aG sudo username
# На AlmaLinux, CentOS и Oracle Linux администраторы входят в группу wheel
usermod -aG wheel username
# Несколько групп сразу перечисляем через запятую без пробелов
usermod -aG docker,www-data usernameНе забывайте ключ -a
Ключ -G без -a заменяет весь список дополнительных групп. Пользователь окажется только в указанных группах и потеряет остальные, например доступ к sudo. Для добавления всегда пишите -aG.
Новые группы начинают действовать при следующем входе пользователя. Если он сейчас подключён по SSH, пусть переподключится, а затем проверит результат командой id.
Убрать пользователя из группы
# Убираем пользователя из группы docker
gpasswd -d username dockerТого же результата можно добиться командой usermod -rG docker username, но вариант с gpasswd работает во всех дистрибутивах.
Сменить основную группу
У каждого пользователя есть одна основная группа. Её получают новые файлы, которые он создаёт.
# Делаем developers основной группой пользователя. Группа должна уже существовать
usermod -g developers usernameПереименовать пользователя
Ключ -l меняет только логин. Домашняя папка и личная группа при этом сохраняют старые имена, поэтому их обычно переименовывают вместе с логином.
# Меняем логин olduser на newuser
usermod -l newuser olduser
# Переносим домашнюю папку под новое имя вместе с содержимым
usermod -d /home/newuser -m newuser
# Переименовываем личную группу пользователя
groupmod -n newuser olduserПользователь не должен быть в системе
Переименовать пользователя, у которого запущены процессы, не получится. Попросите его выйти или завершите его сеансы, а затем повторите команду.
Перенести домашнюю папку
# Назначаем новую домашнюю папку и переносим в неё все файлы
usermod -d /data/home/username -m usernameБез ключа -m изменится только путь в настройках, а файлы останутся на старом месте.
Сменить оболочку
# Список оболочек, установленных в системе
cat /etc/shells
# Делаем bash оболочкой пользователя
usermod -s /bin/bash username
# Запрещаем вход в консоль, например для служебного пользователя
usermod -s /usr/sbin/nologin usernameЗаблокировать и разблокировать пользователя
# Блокируем вход по паролю
usermod -L username
# Снимаем блокировку
usermod -U username
# Полностью отключаем учётную запись, назначив дату окончания в прошлом
usermod -e 1 username
# Снимаем дату окончания
usermod -e "" usernameБлокировка пароля не закрывает вход по ключу
usermod -L запрещает только вход по паролю. Если у пользователя настроен SSH-ключ, он по-прежнему сможет войти. Чтобы закрыть доступ полностью, используйте usermod -e 1 или удалите его ключи из ~/.ssh/authorized_keys.
Сменить UID
# Назначаем пользователю UID 1050. Номер не должен быть занят
usermod -u 1050 usernameusermod сам поменяет владельца файлов в домашней папке пользователя. Файлы в других местах останутся со старым UID, найти и исправить их можно так.
# Вместо 1001 укажите старый UID пользователя
find / -xdev -user 1001 -exec chown -h username {} \;Шпаргалка
| Команда | Что делает |
|---|---|
usermod -aG группа имя | Добавить в дополнительную группу |
gpasswd -d имя группа | Убрать из группы |
usermod -g группа имя | Сменить основную группу |
usermod -l новое старое | Переименовать пользователя |
usermod -d путь -m имя | Перенести домашнюю папку |
usermod -s оболочка имя | Сменить оболочку |
usermod -L имя / -U | Заблокировать или разблокировать пароль |
usermod -e 1 имя | Полностью отключить учётную запись |
usermod -u UID имя | Сменить UID |
Частые вопросы
Добавил пользователя в группу, но права не появились
Группы применяются при входе в систему. Пользователю нужно выйти и подключиться заново, после чего команда id покажет новую группу.
Пишет, что группы не существует
Сначала создайте группу командой groupadd имя_группы, а затем снова выполните usermod. Список всех групп можно посмотреть командой getent group.
Не получается переименовать пользователя
Скорее всего, пользователь сейчас в системе или у него работают процессы. Посмотрите их командой ps -u username, завершите сеансы и повторите usermod -l.
Случайно выполнил usermod -G без -a
Пользователь остался только в указанных группах. Верните нужные группы той же командой с ключом -aG, например usermod -aG sudo username. Если это был ваш единственный администратор и доступ к sudo пропал, зайдите на сервер под root через кнопку Консоль в личном кабинете.
Наши ресурсы
Telegram-канал: https://t.me/f3cloud_news
Сайт хостинга: https://f3cloud.com