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

# Пользователи в Linux – как создать, удалить, посмотреть список и выдать sudo

Пользователи в Linux на VPS. Как создать пользователя командой adduser и useradd, задать пароль, выдать права sudo, посмотреть список пользователей и групп, переключиться на другого пользователя и удалить его. Проверено на Debian 12.

После заказа сервера вы входите на него под пользователем **root**, у которого нет никаких ограничений. Для первых шагов это удобно, но работать так постоянно небезопасно, а если сервером пользуются несколько человек, каждому нужна своя учётная запись. В этой статье разберём, как в Linux устроены пользователи и группы, как создать пользователя, выдать ему права администратора через `sudo`, посмотреть список пользователей и удалить лишних. Все команды мы проверили на тестовом сервере с Debian 12.

***

## Как устроены пользователи и группы

Linux с самого начала создавался как система, за которой одновременно работают много людей, поэтому каждое действие в ней выполняется от имени какого-то пользователя. Для системы пользователь это прежде всего число, **UID**. Имя вроде `ivan` нужно людям, а ядро проверяет права по номеру. Пользователь с UID 0 называется `root`, и ядро разрешает ему всё, независимо от прав на файлы. Обычные пользователи в Debian и Ubuntu получают номера начиная с 1000, а номера ниже заняты служебными учётными записями. Под ними работают программы, например веб-сервер или база данных, и войти под ними на сервер нельзя.

Сведения о пользователях хранятся в обычных текстовых файлах. В `/etc/passwd` для каждого пользователя записаны имя, UID, номер основной группы, домашняя папка и оболочка, которая запускается при входе. Пароли лежат отдельно в файле `/etc/shadow`, причём не сами пароли, а их хэши, и прочитать этот файл может только root. Такое разделение появилось потому, что `/etc/passwd` должен быть доступен для чтения всем программам, а хэши паролей показывать всем нельзя.

Группы позволяют выдавать права не каждому пользователю по отдельности, а сразу нескольким. Предположим, что папка с сайтом должна быть доступна для записи трём разработчикам. Вместо того чтобы настраивать права для каждого, их добавляют в одну группу и дают права этой группе. Тем же способом в Debian и Ubuntu выдают права администратора. Все участники группы `sudo` могут выполнять команды от имени root, если предварят их словом `sudo` и введут свой пароль. Это и есть главная причина заводить отдельного пользователя. Вы работаете с обычными правами и не сломаете систему случайной командой, а когда действительно нужно что-то изменить, сознательно пишете `sudo`. Кроме того, в журнале остаётся запись, кто и какую команду выполнил с правами администратора.

***

## Что понадобится

* **Подключение к серверу по SSH** под пользователем `root`, например через [Termius](https://docs.f3cloud.com/ru/vps/termius-connection.md).
* **Сервер** с Debian или Ubuntu. Команды `adduser` и `deluser` в этой статье есть только в этих системах, для остальных мы приводим замену.

***

## 1. Создайте пользователя

В Debian и Ubuntu удобнее всего команда `adduser`. Она сама создаст домашнюю папку, скопирует в неё стандартные настройки и задаст вопросы о пароле.

```bash
adduser ivan
```

Команда попросит дважды ввести пароль. Символы при вводе не отображаются, это нормально. Затем она предложит указать полное имя, номер комнаты и телефоны. Эти поля можно оставить пустыми, просто нажимая <kbd>Enter</kbd>, а в конце подтвердить данные ответом `Y`.

<figure><img src="https://docs.f3cloud.com/img/linux-adduser.png" alt="Создание пользователя ivan командой adduser с вводом пароля и полного имени"><figcaption><p>adduser создал пользователя, группу и домашнюю папку</p></figcaption></figure>

> **Если команды adduser нет.**
>
> В других дистрибутивах, например AlmaLinux или Rocky Linux, пользователя создают командой `useradd`, а пароль задают отдельно. Параметр `-m` создаёт домашнюю папку, а `-s` назначает оболочку.
>
> ```bash
> useradd -m -s /bin/bash ivan
> passwd ivan
> ```

***

## 2. Выдайте права sudo

На наших серверах с Debian 12 программа `sudo` по умолчанию не установлена, поэтому сначала поставьте её. Если команда `sudo` на вашем сервере уже есть, этот шаг можно пропустить.

```bash
apt update && apt install -y sudo
```

Теперь добавьте пользователя в группу `sudo` и проверьте, что он в неё попал.

```bash
usermod -aG sudo ivan
id ivan
```

В выводе команды `id` в списке **groups** должна появиться группа `27(sudo)`. Чтобы убедиться, что права работают, переключитесь на нового пользователя и выполните любую команду через `sudo`.

```bash
su - ivan
sudo whoami
```

`sudo` попросит пароль пользователя `ivan`, а не root. Если команда вывела `root`, права администратора у пользователя есть. Вернуться обратно к root можно командой `exit`.

<figure><img src="https://docs.f3cloud.com/img/linux-sudo.png" alt="Добавление пользователя в группу sudo, вывод id и проверка sudo whoami"><figcaption><p>Пользователь в группе sudo, команда выполнилась от имени root</p></figcaption></figure>

Теперь можно подключаться к серверу по SSH под новым пользователем, например `ssh ivan@IP-адрес-сервера`. Мы проверили, что вход с паролем на нашем образе Debian 12 работает сразу. Подробнее о группах и о том, как убрать пользователя из `sudo`, рассказано в статье про [команду usermod](https://docs.f3cloud.com/ru/linux/usermod-command-guide.md).

> **Следующий шаг для безопасности.**
>
> Когда вход под новым пользователем проверен, настройте для него вход по SSH-ключу и запретите вход под root. Как это сделать, рассказано в статье про [SSH-ключи](https://docs.f3cloud.com/ru/vps/security/ssh-klyuchi.md).

***

## 3. Посмотрите, какие пользователи есть на сервере

Полный список учётных записей хранится в `/etc/passwd`, но вместе с людьми там перечислены десятки служебных пользователей. Чтобы увидеть только обычных, отберите строки с UID от 1000.

```bash
# Имя, UID, домашняя папка и оболочка обычных пользователей
awk -F: '$3>=1000 && $3<65534 {print $1, $3, $6, $7}' /etc/passwd

# Кто входит в группу sudo
getent group sudo
```

<figure><img src="https://docs.f3cloud.com/img/linux-users-list.png" alt="Список обычных пользователей из /etc/passwd и участники группы sudo"><figcaption><p>На сервере два обычных пользователя, права sudo только у ivan</p></figcaption></figure>

Ещё несколько полезных команд.

```bash
# Группы пользователя
groups ivan

# Кто сейчас подключён к серверу
who

# История входов на сервер
last -n 10
```

***

## 4. Смените пароль пользователя

Root может задать новый пароль любому пользователю. Обычный пользователь меняет свой пароль той же командой без имени.

```bash
# Пароль для пользователя ivan
passwd ivan

# Свой пароль
passwd
```

***

## 5. Удалите пользователя

Команда `deluser` с параметром `--remove-home` удалит пользователя вместе с его домашней папкой и заданиями cron.

```bash
deluser --remove-home anna
```

<figure><img src="https://docs.f3cloud.com/img/linux-deluser.png" alt="Удаление пользователя anna командой deluser с параметром --remove-home"><figcaption><p>Пользователь и его домашняя папка удалены</p></figcaption></figure>

В системах без `deluser` используется `userdel -r anna`. Если у пользователя нужно только отобрать права администратора, удалять его не обязательно. Достаточно убрать его из группы `sudo`.

```bash
deluser ivan sudo
```

> **Перед удалением сохраните нужные файлы.**
>
> `--remove-home` безвозвратно удаляет всё, что лежит в папке `/home/имя`. Если там остались проекты или ключи, сначала скопируйте их.

***

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

<details>

<summary>sudo: command not found</summary>

Программа `sudo` не установлена. Выполните от имени `root` команду `apt install -y sudo`. Если вы уже работаете под обычным пользователем, сначала переключитесь на root командой `su -` и введите пароль root.

</details>

<details>

<summary>ivan is not in the sudoers file</summary>

Пользователь не входит в группу `sudo`. Добавьте его командой `usermod -aG sudo ivan` от имени root. Изменение начинает действовать после нового входа, поэтому пользователю нужно выйти из сессии и подключиться заново.

</details>

<details>

<summary>Чем su отличается от sudo</summary>

`su - имя` полностью переключает вас на другого пользователя и спрашивает **его** пароль. `sudo команда` выполняет одну команду от имени root и спрашивает **ваш** пароль. Поэтому для работы с `sudo` не нужно никому сообщать пароль root, а сам вход под root можно вообще запретить.

</details>

<details>

<summary>Пользователь не может подключиться по SSH</summary>

1. Проверьте, что пароль задан, командой `passwd -S ivan`. Во второй колонке должно быть `P`.
2. Проверьте, что у пользователя обычная оболочка, а не `/usr/sbin/nologin`. Её видно в последнем поле строки пользователя в `/etc/passwd`.
3. Если в настройках SSH отключён вход по паролю, пользователю нужен SSH-ключ.

</details>

***

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

**Telegram-канал:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Официальный сайт:** [https://f3cloud.com](https://f3cloud.com/ru)
