Пользователи в Linux

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

Определяем своего пользователя

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

приглашение командной строки (промт)

Если у вас приглашение командной строки не содержит имя пользователя, то узнать его можно из системной переменной USER:

$ echo $USER
alex

Или с помощью команды whoami:

$ whoami
alex

Свойства пользователя

А ещё, чтобы узнать под кем вы работаете в данный момент, вы можете выполнить команду id. Она покажет не только имя вашего пользователя, но и группы, в которых он состоит. А также вы увидите уникальный идентификатор вашего пользователя (UID) и уникальные идентификаторы групп (GID).

$ id
uid=1000(alex) gid=1000(alex) группы=1000(alex),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),106(netdev)

Из вывода понятно что мы работаем под пользователем alex, его uid=1000. Его основная (первичная) группа alex, её gid=1000. И пользователь состоит в других группах, точно также видны их GID.

Чтобы посмотреть информацию о другом пользователе просто укажите его. Например посмотрим на свойства пользователя root:

$ id root
uid=0(root) gid=0(root) группы=0(root)

Список всех пользователей можно посмотреть в файле /etc/passwd. В этом файле каждая строка определяет каждого пользователя, например посмотрим на пользователя alex и root:

$ grep alex /etc/passwd
alex:x:1000:1000:alex,,,:/home/alex:/bin/bash

$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

Строка описывает пользователя и состоит из следующих полей:

  • Имя пользователя.
  • Пароль. Если вместо пароля используется символ «x», значит пароль хранится в виде хэша в файле /etc/shadow.
  • Уникальный номер пользователя (UID).
  • Уникальный номер основной (первичной) группы (GID).
  • Комментарий (произвольное поле, часто используется для ФИО).
  • Домашний каталог пользователя.
  • Командная оболочка.

То-есть пользователи Linux имеют разные свойства:

  • имя пользователя;
  • уникальный идентификатор (UID);
  • в каких группах он состоит;
  • домашний каталог;
  • командная оболочка.

Создание нового пользователя

В Linux пользователи создаются с помощью двух команд: useradd и adduser. Они выполняют одну и ту же задачу, но с разным уровнем удобства и автоматизации. Ещё стоит заметить что создание нового пользователя, как и его удаление требует прав администратора.

useradd — это базовая команда, которая просто создаёт учётную запись пользователя без дополнительных настроек. Эта команда имеет следующие особенности:

  • требует ручного указания параметров (домашний каталог, оболочка, группа и т. д.);
  • не создаёт пароль (нужно отдельно использовать команду passwd).

Пример использования:

$ sudo useradd -m -s /bin/bash -U username  # создаёт пользователя alice с домашним каталогом и группой
$ sudo passwd username  # задаёт пароль вручную

Разбор параметров:

  • -m — создать домашний каталог;
  • -s <оболочка> — указать командную оболочку;
  • -U — создать группу с тем же именем что и у пользователя.

Пароль ещё можно создать с помощью параметра -p <пароль>, но он не будет зашифрованным, поэтому так делать категорически не рекомендуется.

adduser — это Perl-скрипт, обёртка над useradd, который делает процесс создания нового пользователя интерактивным. То есть, при создании нового пользователя у вас будут запрошены: пароль, имя пользователя и другие данные. Скрипт автоматически создаст домашний каталог пользователя, группу. А также копирует файлы из /etc/skel в домашний каталог.

Пример использования:

$ sudo adduser username # запускает интерактивный процесс создания пользователя

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

  1. useradd — для скриптов и автоматизации.
  2. adduser — для удобства ручного добавления пользователей.

Переключение на другого пользователя

Для переключения на другого пользователя используется команда su (от англ. «switch user»). Эта команда переключает на указанного пользователя, а если мы не укажем пользователя, то переключимся на пользователя root:

$ su username # переключимся на пользователя username
$ su # переключимся на пользователя root

После ввода команды система запросит пароль пользователя. А если мы выполняем su от имени root, то пароль не запрашивается и сразу происходит переключение на указанного пользователя.

Кроме этого, команда su позволяет выполнять команды от имени другого пользователя без входа в сессию:

$ su -c "whoami" username

По умолчанию команда su — сохраняет текущее окружение (переменные, рабочий каталог). То есть выполнив su alice, вы переключитесь на пользователя alice, но останетесь в том каталоге, в котором были, все переменные окружения у вас останутся от старого пользователя. Чтобы изменить это поведение нужно использовать su -. Это создаёт новую сессию с окружением целевого пользователя (как при обычном входе в систему). Примеры:

$ su - alice # переключение на пользователя alice (с заменой всех переменных)
$ su - # переключение на пользователя root (с заменой всех переменных)

Для использования su нужно знать пароль целевого пользователя. Но в некоторых системах (например, Ubuntu по умолчанию) пароль root не задан, и вместо su используют sudo. Про sudo вы можете почитать статью [Использование sudo]. Команда su — удобный инструмент для администрирования, но в современных системах часто предпочитают sudo для более гибкого управления правами.

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

$ su - alice # переключение на пользователя alice
$ exit # вернулись к предыдущему пользователю

Удаление пользователя

Для удаления пользователя в Linux используется команда userdel. Она часто используется с двумя опциями:

  • -r — удаляет домашнюю директорию и почтовый ящик пользователя.
  • -f — принудительное удаление (завершает все процессы запущенные под этим пользователем).
$ sudo userdel -rf username

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

Команда passwd — стандартный способ изменения пароля пользователя в Linux. Для изменения своего пароля не нужно указывать имя пользователя:

$ passwd

Система запросит ваш текущий пароль и затем попросит ввести новый пароль дважды для подтверждения.

Для смены пароля другого пользователя (требуются права root) нужно указать имя этого пользователя:

$ sudo passwd username

При вводе пароля символы не отображаются — это нормально. Система может отвергать слишком простые пароли, но пользователь root может установить любой пароль без проверки сложности.

Помимо пользователей в Linux есть группы, подробнее про них в статье [Группы в Linux].


Если понравилась статья, подпишись на мой канал в VK или Telegram.

Оставьте комментарий