usermod — утилита для изменения параметров существующей учётной записи пользователя. В отличие от useradd (создание) и userdel (удаление), usermod работает с уже созданными аккаунтами и позволяет менять практически любые их атрибуты без пересоздания.
Требует прав суперпользователя. Все изменения вносятся напрямую в системные файлы /etc/passwd, /etc/shadow, /etc/group.
Синтаксис
usermod [опции] имя_пользователя
Изменить имя пользователя
sudo usermod -l newusername oldusername
Меняет только имя входа. Домашняя директория, UID и содержимое файлов остаются прежними. Если нужно переименовать и домашнюю папку — добавить флаг -d с -m:
sudo usermod -l newusername -d /home/newusername -m oldusername
-m (move) физически перемещает содержимое старой домашней директории в новую.
Изменить домашнюю директорию
Задать новый путь без переноса файлов:
sudo usermod -d /new/home/dir username
Задать новый путь и перенести файлы:
sudo usermod -d /new/home/dir -m username
Без -m директория просто прописывается в /etc/passwd, но физически не создаётся и не заполняется.
Добавить пользователя в группу
Добавить в дополнительную группу (не удаляя из текущих):
sudo usermod -aG groupname username
Флаг -a (append) обязателен — без него пользователь будет удалён из всех текущих групп и добавлен только в указанную.
Добавить в несколько групп сразу:
sudo usermod -aG sudo,docker,www-data username
Проверить текущие группы пользователя:
groups username
Или подробно:
id username
Важно: изменение групп вступает в силу при следующем входе пользователя в систему. В текущей сессии новые группы не активны. Для применения без перелогина:
newgrp groupname.
Изменить основную группу пользователя
sudo usermod -g newgroupname username
-g (строчная) меняет основную группу, -G (заглавная) — список дополнительных.
Изменить UID пользователя
sudo usermod -u 1500 username
Автоматически обновляет владельца файлов в домашней директории. Файлы за пределами домашней директории — обновить вручную:
find / -user старый_uid -exec chown -h username {} \;
Убедиться, что новый UID не занят:
grep 1500 /etc/passwd
Изменить оболочку пользователя
sudo usermod -s /bin/bash username
Список доступных оболочек:
cat /etc/shells
Распространённые варианты:
sudo usermod -s /bin/zsh username # zsh
sudo usermod -s /bin/sh username # sh (минимальная)
sudo usermod -s /usr/bin/fish username # fish
sudo usermod -s /sbin/nologin username # заблокировать вход в оболочку
/sbin/nologin — удобный способ создать системного пользователя для сервиса, которому не нужен интерактивный вход.
Заблокировать и разблокировать пользователя
Заблокировать (добавляет ! перед хешем пароля в /etc/shadow):
sudo usermod -L username
Разблокировать:
sudo usermod -U username
Проверить статус:
sudo passwd -S username
L в выводе — locked, P — active password.
Изменить срок действия аккаунта
Установить дату истечения:
sudo usermod -e 2025-12-31 username
Снять ограничение:
sudo usermod -e "" username
Изменить комментарий (GECOS)
Поле GECOS обычно содержит полное имя пользователя:
sudo usermod -c "Ivan Ivanov" username
Посмотреть текущий комментарий:
grep username /etc/passwd
Проверить изменения
После любых правок убедиться, что запись в /etc/passwd выглядит правильно:
grep username /etc/passwd
Формат записи:
username:x:1001:1001:Full Name:/home/username:/bin/bash
Поля по порядку: логин, пароль (x = в shadow), UID, GID, GECOS, домашняя директория, оболочка.
Шпаргалка
| Задача | Команда |
|---|---|
| Переименовать пользователя | sudo usermod -l newname oldname |
| Переименовать + перенести домашнюю папку | sudo usermod -l newname -d /home/newname -m oldname |
| Изменить домашнюю директорию | sudo usermod -d /new/path -m username |
| Добавить в группу | sudo usermod -aG groupname username |
| Добавить в несколько групп | sudo usermod -aG g1,g2,g3 username |
| Изменить основную группу | sudo usermod -g groupname username |
| Изменить UID | sudo usermod -u 1500 username |
| Изменить оболочку | sudo usermod -s /bin/bash username |
| Заблокировать пользователя | sudo usermod -L username |
| Разблокировать пользователя | sudo usermod -U username |
| Установить срок действия | sudo usermod -e 2025-12-31 username |
| Изменить GECOS | sudo usermod -c "Full Name" username |