> Полный список статей есть в [llms.txt](https://docs.f3cloud.com/llms.txt). Markdown-версия есть у каждой страницы, достаточно добавить .md к её адресу. Эта страница в Markdown: [https://docs.f3cloud.com/ru/linux/usermod-command-guide.md](https://docs.f3cloud.com/ru/linux/usermod-command-guide.md).

# Usermod в Linux: Управление пользователями

Как пользоваться командой usermod в Linux. Добавление пользователя в группу sudo и docker, смена имени, домашней папки, оболочки и UID, блокировка учётной записи, шпаргалка и частые ошибки.

**usermod** – это команда для изменения уже существующей учётной записи в Linux. С её помощью добавляют пользователя в группы, переименовывают его, переносят домашнюю папку, меняют оболочку и временно блокируют вход.

Все команды ниже выполняются от имени **root** или через `sudo`. Мы проверили их на Debian 12, на Ubuntu и в других дистрибутивах они работают так же.

> **Создать пользователя, а не изменить.**
>
> Если пользователя ещё нет, сначала создайте его.\
> На Ubuntu и Debian это команда `adduser имя`.\
> На AlmaLinux и CentOS это `useradd -m имя`.
>
> Пример с отдельным пользователем для входа по SSH есть в статье [о входе по SSH-ключам](https://docs.f3cloud.com/ru/vps/security/ssh-klyuchi.md).

***

## Как посмотреть текущие настройки пользователя

Перед любыми изменениями полезно проверить, что сейчас настроено у пользователя.

```bash
# UID, основная группа и все дополнительные группы пользователя
id username

# Строка пользователя из /etc/passwd: домашняя папка и оболочка
getent passwd username
```

***

## Добавить пользователя в группу

Это самая частая задача, например чтобы выдать права администратора через `sudo` или доступ к Docker.

```bash
# Добавляем пользователя в группу 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`.

***

## Убрать пользователя из группы

```bash
# Убираем пользователя из группы docker
gpasswd -d username docker
```

Того же результата можно добиться командой `usermod -rG docker username`, но вариант с `gpasswd` работает во всех дистрибутивах.

***

## Сменить основную группу

У каждого пользователя есть одна основная группа. Её получают новые файлы, которые он создаёт.

```bash
# Делаем developers основной группой пользователя. Группа должна уже существовать
usermod -g developers username
```

***

## Переименовать пользователя

Ключ `-l` меняет только логин. Домашняя папка и личная группа при этом сохраняют старые имена, поэтому их обычно переименовывают вместе с логином.

```bash
# Меняем логин olduser на newuser
usermod -l newuser olduser

# Переносим домашнюю папку под новое имя вместе с содержимым
usermod -d /home/newuser -m newuser

# Переименовываем личную группу пользователя
groupmod -n newuser olduser
```

> **Пользователь не должен быть в системе.**
>
> Переименовать пользователя, у которого запущены процессы, не получится. Попросите его выйти или завершите его сеансы, а затем повторите команду.

***

## Перенести домашнюю папку

```bash
# Назначаем новую домашнюю папку и переносим в неё все файлы
usermod -d /data/home/username -m username
```

Без ключа `-m` изменится только путь в настройках, а файлы останутся на старом месте.

***

## Сменить оболочку

```bash
# Список оболочек, установленных в системе
cat /etc/shells

# Делаем bash оболочкой пользователя
usermod -s /bin/bash username

# Запрещаем вход в консоль, например для служебного пользователя
usermod -s /usr/sbin/nologin username
```

***

## Заблокировать и разблокировать пользователя

```bash
# Блокируем вход по паролю
usermod -L username

# Снимаем блокировку
usermod -U username

# Полностью отключаем учётную запись, назначив дату окончания в прошлом
usermod -e 1 username

# Снимаем дату окончания
usermod -e "" username
```

> **Блокировка пароля не закрывает вход по ключу.**
>
> `usermod -L` запрещает только вход по паролю. Если у пользователя настроен SSH-ключ, он по-прежнему сможет войти. Чтобы закрыть доступ полностью, используйте `usermod -e 1` или удалите его ключи из `~/.ssh/authorized_keys`.

***

## Сменить UID

```bash
# Назначаем пользователю UID 1050. Номер не должен быть занят
usermod -u 1050 username
```

`usermod` сам поменяет владельца файлов в домашней папке пользователя. Файлы в других местах останутся со старым UID, найти и исправить их можно так.

```bash
# Вместо 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 |

***

## Частые вопросы

<details>

<summary>Добавил пользователя в группу, но права не появились</summary>

Группы применяются при входе в систему. Пользователю нужно выйти и подключиться заново, после чего команда `id` покажет новую группу.

</details>

<details>

<summary>Пишет, что группы не существует</summary>

Сначала создайте группу командой `groupadd имя_группы`, а затем снова выполните `usermod`. Список всех групп можно посмотреть командой `getent group`.

</details>

<details>

<summary>Не получается переименовать пользователя</summary>

Скорее всего, пользователь сейчас в системе или у него работают процессы. Посмотрите их командой `ps -u username`, завершите сеансы и повторите `usermod -l`.

</details>

<details>

<summary>Случайно выполнил usermod -G без -a</summary>

Пользователь остался только в указанных группах. Верните нужные группы той же командой с ключом `-aG`, например `usermod -aG sudo username`. Если это был ваш единственный администратор и доступ к `sudo` пропал, зайдите на сервер под root через кнопку <kbd>Консоль</kbd> в личном кабинете.

</details>

***

## Наши ресурсы

**Telegram-канал:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Сайт хостинга:** [https://f3cloud.com](https://f3cloud.com/ru)
