# Работа с пользователями в Linux

Рассмотрим основные моменты, касающиеся работы с пользователями в системах Linux

Любая работа в Linux выполняется от имени какого-то пользователя, зарегистрированного и авторизованного в системе.

В Linux существуют три типа пользователей:&#x20;

* **Администраторы** — привилегированные пользователи с полным доступом к системе. По умолчанию на Linux-сервере после установки операционной системы всегда есть один такой пользователь — `root`.
* **Локальные пользователи** — непривилегированные пользователи. Их учётные записи создаёт администратор. Особенность таких аккаунтов в ограниченном доступе к серверу — они не могут пользоваться некоторыми системными утилитами, могут работать только с теми файлами и папками, к которым им открыт доступ. Тем не менее, можно повысить привилегии локального пользователя — ниже расскажем как.&#x20;
* **Системные пользователи** — учётные записи, автоматически создаваемые системой для работы внутренних процессов и служб. Например, после установки веб-сервера Apache, который входит в состав стека LAMP, на сервере появляется пользователь `www-data` (на CentOS `apache`), от имени которого потом работает веб-сервер. Такие пользователи нужны для повышения безопасности.&#x20;

Каждый пользователь имеет свой уникальный идентификатор пользователя, `UID`. Он отличается в зависимости от типа пользователя:&#x20;

* администратор — 0
* обычный пользователь — от 100
* системный пользователь — от 1 до 100

Чтобы упростить процесс настройки прав для новых пользователей, их объединяют в группы. Каждая группа имеет свой набор прав и ограничений. Любой пользователь, создаваемый или добавляемый в такую группу, автоматически их наследует. Если при добавлении пользователя для него не указать группу, то у него будет своя, индивидуальная группа — с именем пользователя. Один пользователь может одновременно входить в несколько групп.

Информацию о каждом пользователе сервера можно посмотреть в файле `/etc/passwd`. Пользователи в нём перечислены в следующем формате:

<pre><code><strong>test-user:x:1000:1000::/home/test-user:/<a data-footnote-ref href="#user-content-fn-1">bi</a>n/bash
</strong></code></pre>

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F7ywyhHhlOdcoNtSG4DPc%2Fimage.png?alt=media&#x26;token=f8de9eaf-eef9-4cb8-b4ae-1c2c731dca4c" alt=""><figcaption></figcaption></figure>

Для отображения только учетных записей пользователей можно ввести команду:

`users`

Если вам известно имя пользователя и вы хотите узнать о нём побольше, необязательно читать `/etc/passwd`. Всё то же самое в человекочитаемом виде можно посмотреть с помощью команды `pinky -l` :

```
pinky -l test-user
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FW6HSLMiCEvT7hf3Nol3u%2Fimage.png?alt=media&#x26;token=87db31ad-4d48-4c13-ae84-f49e8b526dfc" alt=""><figcaption><p>Вывод информации о пользователе</p></figcaption></figure>

Эта же команда без аргументов покажет вам всех авторизованных в текущий момент пользователей сервера, включая информацию о времени и источнике входа:

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FErfe2WeU02ETtjrlvcJW%2Fimage.png?alt=media&#x26;token=2a09c738-d2d8-4548-835c-e6dced3271ee" alt=""><figcaption><p>Вывод информации об авторизованных в текущий момент пользователях</p></figcaption></figure>

В качестве альтернативы можно использовать команду `w` — она тоже показывает всех авторизованных в текущий момент пользователей, включая создаваемую ими нагрузку на сервер:&#x20;

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F10j7ISOaNIN6jPE7Rxuv%2Fimage.png?alt=media&#x26;token=30522fa3-9234-45a0-9885-430baf32a572" alt=""><figcaption><p>Вывод информации об авторизованных в текущий момент пользователях с помощью команды w</p></figcaption></figure>

Узнать `UID` пользователя можно с помощью команды `id` :

```
id test-user
```

Мы должны увидеть что-то на подобие:

`uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)`

*\* учетная запись **username** существует, она находится в основной группе **username** и дополнительной **sudo**. Ее идентификатор **1001**.*

Также мы можем получить строку о пользователе из файла **/etc/passwd**:

`getent passwd username`

Мы увидим что-то такое:

`username:x:1001:1001::/home/username:/bin/sh`

*\* наш пользователь **username** имеет идентификатор пользователя и группы **1001**, его домашняя директория **/home/username**, командная оболочка **/bin/sh**.*

Для именования пользователей в Linux есть набор стандартных правил:&#x20;

* Имя пользователя может содержать только английские буквы `[a-z]` в верхнем и нижнем регистре, цифры, символ `«_»`, тире `«-»` и точку;&#x20;
* Имя пользователя может оканчиваться символом `«$»`;
* Имя пользователя не может начинаться с тире, содержать только цифры или состоять из `«.»` или `«..»`;
* Не рекомендуется использовать точку в начале имени пользователя;
* Имя пользователя может включать до 32 символов.

Теперь перейдём непосредственно к управлению пользователями.

### Создание пользователей <a href="#creation" id="creation"></a>

Процесс добавления пользователя состоит из двух шагов: создания пользователя и настройки пароля.&#x20;

На первом шаге используется команда `useradd` c набором опций для настройки нового пользователя и его именем (логином):

```
useradd <имя пользователя> [опции]
```

*\* опции не являются обязательными при создании пользователя.*

Эта команда имеет ряд настроек по умолчанию, которые задаются с помощью файлов `/etc/default/useradd` и `/etc/login.defs` Увидеть основные можно с помощью команды:

```
useradd -D
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fc1m1HYUYkGzN7Aen4YMA%2Fimage.png?alt=media&#x26;token=00ff624e-02e5-463c-9728-baff0817e462" alt=""><figcaption></figcaption></figure>

| `GROUP`             | `GID` группы, в которую пользователь будет добавлен после создания                                                                                      |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HOME`              | базовый каталог, в котором будет размещена директория пользователя                                                                                      |
| `INACTIVE`          | указывает время до блокировки пользователя, когда его пароль станет недействителен. Значение `«-1»` отключает опцию                                     |
| `EXPIRE`            | дата, до которой действителен аккаунт. По умолчанию не установлена — то есть без ограничений                                                            |
| `SHELL`             | используется для настройки доступа к командной оболочке                                                                                                 |
| `SKEL`              | содержит путь к директории, в которой хранятся файлы по умолчанию. После создания пользователя они будут автоматически скопированы в его домашнюю папку |
| `CREATE_MAIL_SPOOL` | определяет, нужно ли создать папку для писем этого пользователя в `/var/spool/mail/`                                                                    |

\
Все эти настройки применяются, если использовать самый простой вариант команды создания пользователя без параметров:

```
useradd test-user
```

Но обычно нам требуется добавить пользователя со специфическими настройками — для этого используется расширенный вариант этой команды. Перечислим основные опции:

| `-m`                    | создаёт указанную домашнюю директорию, если она ещё не существует                                                                                                                                                                                           |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-d /home/test-user`    | устанавливает `/home/test-user` в качестве домашней директории                                                                                                                                                                                              |
| `-c "Евграф Шматкунос"` | добавляет комментарий. Например, с именем пользователя                                                                                                                                                                                                      |
| `-g test`               | указывает группу, в которую попадёт пользователь после создания. Можно использовать с `GID` или именем группы. Указанная группа должна существовать. Используется в сочетании с ключом `-N` (отменяет автоматическое создание группы с именем пользователя) |
| `-G users,wheel`        | указывает список дополнительных групп пользователя. Они перечисляются через запятую без пробелов                                                                                                                                                            |
| `-s /bin/bash`          | позволяет настроить доступ к `shell`                                                                                                                                                                                                                        |
| `-r`                    | создаёт системного пользователя. Используется, когда вам нужно настроить службу на работу из-под конкретного пользователя. По умолчанию данные таких пользователей не вносятся в `/etc/shadow`, для них не создаётся домашняя папка                         |
| `-u`                    | позволяет указать свой `UID`, который будет присвоен новому пользователю. В качестве `UID` указывается положительное целое число. `UID` должен быть уникален                                                                                                |
| `-e 2021-01-01`         | указывает дату, до которой аккаунт будет активен. Дата задаётся в формате `YYYY-MM-DD`                                                                                                                                                                      |
| `-f 3`                  | указывает количество дней до блокировки пользователя, когда его пароль станет недействителен                                                                                                                                                                |
| `-b`                    | <p>Задает базовый каталог для домашнего каталога<br><em>useradd test-user -b /var/home</em></p>                                                                                                                                                             |
| `-D`                    | <p>Позволяет показать или изменить настройки по умолчанию, которые будут применяться при последующем создании пользователей<br><em>useradd test-user -Ds /bin/bash</em></p>                                                                                 |
| `-k`                    | <p>Путь к источнику скелета (файлы с шаблонами для нового пользователя)<br><em>useradd test-user -k /var/skel</em></p>                                                                                                                                      |
| `-M`                    | <p>Не создавать домашний каталог<br><em>useradd test-user -M</em></p>                                                                                                                                                                                       |
| `-N`                    | <p>Не создавать основную группу с таким же именем, как у пользователя<br><em>useradd test-user -N</em></p>                                                                                                                                                  |
| `-o`                    | <p>Разрешает создание учетной записи с повторяющимся UID<br><em>useradd test-user -u 15 -o</em></p>                                                                                                                                                         |
| `-p`                    | <p>Задает пароль<br><em>useradd test-user -p pass</em></p>                                                                                                                                                                                                  |
| `-R`                    | <p>Каталог, в который выполняется chroot<br><em>useradd test-user -R /var/chroot/home</em></p>                                                                                                                                                              |
| `-U`                    | <p>Имя группы будет таким же, как у пользователя<br><em>useradd test-user -U</em></p>                                                                                                                                                                       |

В итоге получится вот такая сборная солянка из настроек:

```
useradd -m -u 666 -d /home/users/test-user -c "Тестовый пользователь" -e 2060-01-01 -s /bin/bash test-user
```

В примере мы создаём тестового пользователя `test-user` с идентификатором `666`, домашней папкой в `/home/users/test-user`, комментарием `«Тестовый пользователь»` и доступом к командной оболочке. Учётная запись будет действительна до конца света по Ньютону.

Более подробную информацию о доступных опциях для `useradd` можно увидеть с помощью команды `man useradd`.

Очень важно после создания пользователя настроить для него надёжный пароль. Для этого нужно ввести следующую команду:

```
passwd test-user
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FriEvvr7bFOgLKxyjdqze%2Fimage.png?alt=media&#x26;token=4169cbe6-f178-4c9d-b009-703bfb827914" alt=""><figcaption><p>Настройка пароля пользователя после его создания</p></figcaption></figure>

Система предложит ввести и подтвердить пароль. На этом процесс создания пользователя можно считать завершённым.

### Изменение данных пользователей <a href="#change" id="change"></a>

Смена настроек для активного пользователя может привести к сбою системы. Поэтому перед изменением данных важно убедиться, что в текущий момент редактируемый пользователь не авторизован, под ним отсутствуют запущенные процессы, редактируемые файлы. Посмотреть список запущенных процессов пользователя `user` можно следующим образом:&#x20;

```
pgrep -l -u user
```

Проверить, авторизован ли пользователь, можно с помощью уже известной команды:

```
pinky user
```

Отредактировать данные существующего пользователя можно с помощью команды `usermod`. По структуре она похожа на предыдущую команду:

```
usermod <имя пользователя> [опции]
```

Набор параметров расширен дополнительными опциями:

| `-m`                           | создаёт новую директорию, указанную в качестве домашней (если её не существует), и переносит туда данные из старой    |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| `-d /home/users/new-test-user` | меняет домашнюю директорию пользователя на `/home/users/new-test-user`                                                |
| `-c "Чак Норрис"`              | меняет комментарий к пользователю                                                                                     |
| `-a -G users,wheel,sudo`       | добавляет пользователя в дополнительные группы                                                                        |
| `-s /bin/bash`                 | меняет командную оболочку пользователя                                                                                |
| `-u 100500`                    | изменяет `UID` пользователя                                                                                           |
| `-e 2060-01-01`                | меняет дату, до которой аккаунт будет активен                                                                         |
| `-f 7`                         | меняет количество дней до блокировки пользователя, когда его пароль станет недействителен                             |
| `-l new-test-user`             | меняет имя пользователя на `new-test-user`                                                                            |
| `-L`                           | блокирует аккаунт пользователя. Для этого в файле `/etc/shadow` перед хэшем пароля пользователя ставится символ `«!»` |
| `-U`                           | снимает блокировку с аккаунта (удаляет символ `«!»` из пароля в `/etc/shadow`)                                        |

&#x20;

То есть если мы захотим отредактировать данные пользователя `test-user`, созданного в примере выше, это будет выглядеть так:

```
usermod -l new-test-user -m -d /home/new-test-user -c "Чак Норрис" -u 100500 -e 3000-01-01 -f -1 test-user
```

В примере мы меняем логин — имя пользователя на `new-test-user`, изменяем домашнюю папку на `/home/new-test-user` с копированием файлов, меняем комментарий, `UID` пользователя, срок жизни аккаунта и отменяем блокировку в случае устаревания пароля.

При изменении данных пользователя система предпримет попытку автоматически указать новые данные для всех файлов и папок пользователя. Тем не менее, после редактирования нужно всё перепроверить и исправить права доступа, где они не изменились автоматически.

### Удаление пользователей <a href="#delete" id="delete"></a>

Как и в случае с редактированием, перед удалением пользователя нужно убедиться, что под ним отсутствуют активные процессы, не редактируются файлы. Иначе существует риск сбоя системы. В программу встроен механизм защиты, поэтому она не позволит удалить пользователя, если он авторизован или под ним работают какие-то службы.

Для удаления пользователей используется команда `userdel`. Её структура аналогична предыдущим:

```
userdel <имя пользователя> [опции]
```

Основных параметра два:&#x20;

| `-r` | удаляет папки пользователя: домашнюю директорию, почтовую очередь                                                                                                                                      |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-f` | отключает механизм защиты. При использовании этой опции пользователь будет удалён даже при наличии запущенных процессов и пр. Используется на свой страх и риск, так как может привести к сбою системы |

&#x20;

После удаления пользователей важно вручную проверить, что на сервере не осталось файлов или директорий, принадлежащих удалённому пользователю.

`man userdel`

### Группы пользователей <a href="#groups" id="groups"></a>

Информация о группах хранится в файле `/etc/group`. Работа с группами пользователей куда проще.&#x20;

Группы применяются для делегирования прав доступа на определённые файлы, папки, скрипты сразу нескольким пользователям. Живой пример: работа с FTP-сервером. Вы выбираете какую-то директорию для работы с файлами, создаёте группу пользователей и присваиваете ей выбранную папку. Теперь вам не нужно отдельно настраивать права каждому новому пользователю — достаточно добавить его в эту группу, и он автоматически получит доступ к FTP-каталогу.

### Блокировка <a href="#block" id="block"></a>

1\. Можно заблокировать пользователя, не удаляя его из системы:

`usermod -L <имя пользователя>`

Пример:

`usermod -L test-user`

Чтобы разблокировать пользователя, вводим:

`usermod -U <имя пользователя>`

2\. В некоторых системах Linux может использоваться pam-модуль tally. Он осуществляет подсчет количества неудачных попыток входа в систему. Также он может блокировать доступ при превышении данного количества.

Чтобы посмотреть счетчик для пользователя, вводим команду:

`pam_tally2 --user=admin`

> В версия постарее:
>
> `pam_tally --user=admin`

Для сброса счетчика (и блокировки, если она есть) вводим:

`pam_tally2 --user=admin --reset`

### Создание

Для создания групп используется команда `groupadd`:

```
groupadd new-group
```

Из параметров можно выделить следующие:

| `-f`          | если группа с указанным именем или GID уже существует, опция прерывает выполнение команды без соответствующей ошибки                                                                                                                                                                                  |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-g 100500`   | позволяет назначить свой GID для создаваемой группы                                                                                                                                                                                                                                                   |
| `-r`          | создаёт системную группу                                                                                                                                                                                                                                                                              |
| `-p p@ssw0rd` | <p>Устанавливает для группы пароль <code>p\@ssw0rd</code>. Пароль запрашивается системой при попытке входа в группу с помощью команды <code>newgrp</code>.</p><p>Не рекомендуется к использованию из-за проблем с безопасностью. Настроенный таким образом пароль можно увидеть в истории команд.</p> |

#### Редактирование

Для редактирования групп используется команда **`groupmod`**. Список изменений задаётся с помощью параметров:

| `-g 100500`       | меняет `GID` группы на `100500`     |
| ----------------- | ----------------------------------- |
| `-n another-name` | меняет имя группы на `another-name` |

&#x20;

Например, если нам нужно изменить имя группы `test-group` на имя `named-group`, команда будет выглядеть так:

```
groupmod -n named-group test-group
```

#### Удаление

Нельзя удалить группу, если она указана в качестве основной для какого-то существующего пользователя. Сначала нужно предварительно удалить этого пользователя из группы.

Само удаление группы выполняется одной командой:

```
groupdel test-group
```

Как и в случае удаления пользователей, нужно вручную проверить, что на сервере не осталось данных, принадлежащих удалённой группе.

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

Базовым инструментом для управления группами является утилита `gpasswd`. Она имеет несколько параметров, но с одной особенностью — в отличие от предыдущих примеров, здесь большинство параметров (кроме `-A` и `-M`) не сочетаются. То есть в команде может быть только один параметр за раз.

Структура команды проста:

```
gpasswd [что сделать] [в какой группе]
```

Рассмотрим опции команды подробнее:&#x20;

| `-a new-user`        | Добавляет пользователя new-user в группу                                                                                           |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `-d bad-user`        | Удаляет пользователя bad-user из группы                                                                                            |
| `-A user1,user2,...` | Доступна для использования привилегированным пользователям (с правами root). Назначает список пользователей-администраторов группы |
| `-M user1,user2,...` | Доступна для использования привилегированным пользователям. Назначает список участников группы                                     |
| `-r`                 | Отключает пароль группы. После этого только члены группы смогут использовать команду newgrp для подключения к группе               |
| `-R`                 | Отключает внешний доступ к группе. После этого только члены группы смогут использовать команду newgrp для подключения к группе     |

&#x20;

То есть если нам потребуется добавить пользователя в новую группу, достаточно будет использовать следующую команду:&#x20;

```
gpasswd -a new-user test-group
```

Также для добавления пользователей в новую группу используется описанная выше команда `usermod`. Следующий пример добавляет пользователя `test-user` в группу `new-group`:&#x20;

```
usermod -a -G new-group test-user
```

Или, если нужно указать группу `new-group` в качестве основной группы пользователя `test-user`:

```
usermod -g new-group test-user
```

Помимо этого, любой пользователь может сам авторизоваться и добавиться в новую группу с помощью команды:&#x20;

```
newgrp new-group
```

Эта команда позволяет переключить группу пользователя в рамках текущей сессии, а также автоматически добавляет запрошенную группу в список групп пользователя.

Для определения в каких группах состоит пользователь, необходимо воспользоваться командой **groups**:

```
user@ubuntu:~$ groups
user adm cdrom sudo dip plugdev lxd lpadmin sambashare
```

Из этого примера видно, что пользователь user состоит в группах user, adm, cdrom, sudo, dip, plugdev, lxd, lpadmin, sambashare. Если вы хотите посмотреть, в каких группах состоит другой пользователь, то передайте его имя в качестве аргумента.

```
user@ubuntu:~$ groups root
root : root
```

### Привилегии суперпользователя. Sudo <a href="#sudo" id="sudo"></a>

{% content-ref url="rabota-s-polzovatelyami-v-linux/redaktirovanie-faila-sudoers" %}
[redaktirovanie-faila-sudoers](https://antons-organization-1.gitbook.io/administrirovanie-linux/bazovye-zadachi/rabota-s-polzovatelyami-v-linux/redaktirovanie-faila-sudoers)
{% endcontent-ref %}

### &#x20;Список пользователей

Посмотреть список пользователей можно в файле /etc/passwd:

`cat /etc/passwd`

Мы увидим что-то на подобие:

```
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
...
```

Как правило, большая часть данных пользователей является системными — их UID меньше **1000** и больше **60000**.

Более функциональная команда для отображения содержимого файла passwd — **getent**:

`getent passwd`

Можно найти пользователя по идентификатору:

`getent passwd 1000`

Получить список не системных пользователей:

`getent passwd {1000..60000}`

Получить только список логинов не системных учетных записей:

`getent passwd {1000..60000} | awk -F: '{ print $1}'`

### Примеры работы с учетными записями <a href="#examples" id="examples"></a>

Рассмотрим несколько утилит, с помощью которых можно управлять учетными записями в Linux.

#### useradd

1\. Создать пользователя, добавить его в группу и создать домашнюю директорию:

`useradd test-user -G printer -m`

2\. Создать учетную запись с возможностью получения привилегий суперпользователя (командой **sudo su**):

`useradd test-user -G wheel -m`

*\* для систем RPM.*

`useradd test-user -G sudo -m`

*\* для систем DEB.*

3\. Создать пользователя с определенными UID и GID (соответственно идентификаторы пользователя и группы):

`useradd test-user -u 900 -g 950`

*\* группа с используемым идентификатором (в данном примере **950**) уже должна быть создана заранее с использованием команды **groupadd**.*

4\. Создать пользователя и указать путь к домашней директории:

`useradd test-user -d /home/newdmosk`

5\. Создать учетную запись без возможности входа в систему:

`useradd test-user -s /sbin/nologin`

#### usermod

1\. Потребовать сменить пароль при следующем входе в систему:

`chage -d 0 test-user`

2\. Поменять пользователю основную группу:

`usermod test-user -g kdonewgroup`

3\. Задать пользователю дополнительную группу с правами root:

`usermod test-user -G sudo`

4\. Добавить пользователя в группу:

`usermod -a -G group test-user`

*\* в данном примере мы добавим пользователя **dmosk** в группу **group**.*

5\. Сменить домашнюю директорию:

`usermod -d /var/www/dmosk test-user`

*\* данной командой мы меняем для пользователя **dmosk** домашнюю директорию на **/var/www/dmosk**.*

#### chage

1\. Автоматическая блокировка учетной записи:

`chage -E 2023-05-01 test-user`

*\* данной командой мы указали, что учетная запись* test-user *перестанет действовать после 1 мая 2023 года.*

Чтобы посмотреть информацию о дате окончания срока действия учетной записи вводим:

`chage -l test-user`

Сделать учетную запись бессрочной:

`chage -E -1 test-user`

### Возможные ошибки <a href="#errors" id="errors"></a>

#### sudo must be owned by uid 0 and have the setuid bit set

При попытке получить привилегии командой:

`sudo su`

... система возвращает ошибку:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

**Причина:** эта ошибка возникает, когда утилита sudo не имеет правильных прав доступа на вашей системе. В частности, она происходит, когда владелец файла /usr/bin/sudo не является пользователем root или когда установлен неправильный бит setuid на файле.

**Решение:** убедитесь, что вы вошли в систему с учетной записью, имеющей права администратора. Это можно сделать, войдя напрямую под пользователем root.

Выполняем команду, чтобы проверить права файла sudo:

`ls -l /usr/bin/sudo`

Если владелец не является пользователем root, выполните следующую команду, чтобы изменить владельца файла:

`chown root:root /usr/bin/sudo`

Убедитесь, что установлен правильный бит setuid на файле sudo, выполнив следующую команду:

`chmod u+s /usr/bin/sudo`

С управлением пользователями разобрались, идём дальше. Как было сказано выше, чтобы локальный пользователь мог начать работу на сервере, администратор (`root` или пользователь c привилегиями `sudo`) должен настроить права доступа к файлам и папкам, которые понадобятся этому пользователю.

### Доп. команды

```
whoami #показать имя текущего пользователя
who #показать кто сейчас в системе 
w #показать кто сейчас в системе и что делает
last #показать последние логины
```

{% embed url="<https://zalinux.ru/?p=5589>" %}

{% embed url="<https://zalinux.ru/?p=4748>" %}

{% embed url="<https://itsecforu.ru/2020/09/14/%F0%9F%90%9A-%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C-%D0%BA%D0%B0%D0%BA%D1%83%D1%8E-%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D1%83-%D0%B2%D1%8B-%D0%B8%D1%81%D0%BF/>" %}

{% embed url="<https://blog.sedicomm.com/2020/03/20/polnoe-rukovodstvo-po-komande-useradd-v-linux/>" %}

[^1]:
