usermod: группы, переименование, блокировка и смена оболочки
Шпаргалка по usermod в Linux: добавить в группу без потери остальных, переименовать пользователя, перенести домашнюю папку, сменить оболочку и UID, заблокировать вход. Ubuntu, Debian, AlmaLinux.

usermod меняет уже существующую учётную запись: добавляет в группы, переименовывает, переносит домашнюю папку, меняет оболочку, блокирует вход. Все команды ниже выполняются от root или через sudo; на Ubuntu, Debian и RHEL-системах они одинаковы, различаются только имена групп администраторов.
Если пользователя ещё нет, его сначала надо создать — см. пользователи в Linux.
1. Посмотрите текущие настройки
Перед любым изменением проверьте, что есть сейчас:
# UID, основная группа и все дополнительные группы
id username
# Строка из /etc/passwd: домашняя папка и оболочка
getent passwd username
2. Добавьте в группу
Самая частая задача — выдать права администратора или доступ к Docker.
# Группа администраторов на Ubuntu и Debian
usermod -aG sudo username
# На AlmaLinux, Rocky, CentOS, Oracle Linux администраторы в группе wheel
usermod -aG wheel username
# Несколько групп сразу, через запятую без пробелов
usermod -aG docker,www-data username
Не забывайте
-a.-Gбез-aзаменяет весь список дополнительных групп. Пользователь останется только в перечисленных и потеряет остальные, включаяsudo. Для добавления всегда пишите-aG.
Новые группы действуют со следующего входа. Если пользователь сейчас подключён по SSH — пусть переподключится и проверит через id.
3. Уберите из группы
gpasswd -d username docker
usermod -rG docker username делает то же самое, но ключ -r есть не во всех версиях; gpasswd работает везде.
4. Смените основную группу
Основная группа одна, её получают все файлы, которые пользователь создаёт. Группа должна существовать заранее.
usermod -g developers username
5. Переименуйте пользователя
-l меняет только логин. Домашняя папка и личная группа остаются со старыми именами, поэтому обычно переименовывают всё вместе:
# Меняем логин olduser на newuser
usermod -l newuser olduser
# Переносим домашнюю папку под новое имя вместе с содержимым
usermod -d /home/newuser -m newuser
# Переименовываем личную группу
groupmod -n newuser olduser
Пользователь не должен быть в системе. Если у него запущены процессы,
usermodоткажется. Посмотрите ихps -u olduser, завершите сеансы и повторите.
6. Перенесите домашнюю папку
usermod -d /data/home/username -m username
Без -m изменится только путь в /etc/passwd, файлы останутся на старом месте.
7. Смените оболочку
# Оболочки, установленные в системе
cat /etc/shells
# bash для пользователя
usermod -s /bin/bash username
# Запрет входа в консоль, например служебному пользователю
usermod -s /usr/sbin/nologin username
8. Заблокируйте или разблокируйте
# Заблокировать вход по паролю
usermod -L username
# Снять блокировку
usermod -U username
# Отключить учётную запись полностью: дата окончания в прошлом
usermod -e 1 username
# Убрать дату окончания
usermod -e "" username
-Lне закрывает вход по ключу. Блокировка пароля — это именно блокировка пароля. Если у пользователя есть SSH-ключ, он войдёт как ни в чём не бывало. Чтобы закрыть доступ целиком, используйтеusermod -e 1или удалите строки из~/.ssh/authorized_keys.
9. Смените UID
# Номер не должен быть занят
usermod -u 1050 username
Владельца файлов в домашней папке usermod поменяет сам. Файлы в других местах останутся со старым 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.
group 'x' does not exist. Создайте её: groupadd имя_группы, список всех групп — getent group.
Не переименовывается. Пользователь в системе или у него есть процессы: ps -u username, завершить, повторить.
Выполнил -G без -a и потерял sudo. Верните группы той же командой с -aG. Если это был единственный администратор и sudo больше нет ни у кого — откройте консоль сервера в кабинете tanaka.host и зайдите под root.
Дальше: права доступа chmod и chown, вход по SSH-ключу.