Yandex
Обновить настройки cookies

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

В современных операционных системах можно создавать несколько учетных записей, каждая из которых функционирует независимо, не влияет на работу других пользователей и запущенных программ. Учетные записи могут быть изменены, например, можно корректировать имена, идентификаторы и другие параметры. Рассмотрим управление пользователями в Linux на примере дистрибутива Ubuntu.

Где содержится информация о пользователях

В Linux-системах, независимо от того, был ли пользователь добавлен вручную или создан в процессе установки программного обеспечения, данные находятся в /etc/passwd.

Файл имеет следующую структуру: имя пользователя (логин):пароль:номер пользователя:номер группы пользователя:дополнительные сведения:путь к домашней директории:путь к командной оболочке.

Поля в passwd

Имя пользователя - этот параметр служит для идентификации в системе и используется при входе. Длина имени может варьироваться от 1 до 32 символов.

Пароль - в Linux не сохраняется в открытом виде, что делает систему более безопасной. Используется один из специальных символов:
  • x - пароль хранится в зашифрованном виде вместе с "солью" - случайным набором символов, который дописывается к хэш-сумме пароля во время его создания. Сам зашифрованный пароль находится в файле /etc/shadow.
  • \ - этот символ означает, что у пользователя нет разрешения на вход в систему.
Если в поле пароля нет ни одного из этих символов, это указывает на отсутствие пароля для данного пользователя.

Номер пользователя (UID) - каждому пользователю присваивается уникальный идентификатор в виде положительного числа.

0 - принадлежит пользователю root с максимальными привилегиями.
Числа от 1 до 499 зарезервированы для псевдо-пользователей, которые создаются вместе с установкой программ.

Для обычных пользователей применяются номера, начинающиеся с 500 или 1000, но в отличие от root их можно изменять.

Номер группы пользователя (GID) - при создании пользователя в Linux автоматически создается группа с таким же именем, и пользователю присваивается GID. Группы объединяют пользователей с целью назначения прав на доступ к системным объектам (файлы или директории). Каждый пользователь должен принадлежать минимум к одной группе. Как и UID, группам также присваиваются уникальные идентификаторы.

Дополнительная информация -  можно указать полное имя, адрес или номер телефона в учетной записи пользователя или оставить поля пустыми.

Полный путь до домашней директории - каждый пользователь имеет домашний каталог, который по умолчанию находится в /home. Можно выбрать другую директорию.

Полный путь до командной оболочки и запрет на подключение - пользователю может быть назначена командная оболочка, в которой он будет выполнять команды (чаще это bash или shell (sh)). Также можно поставить запрет на использование учетной записи для входа на сервер.

Root, sudo и административные права

В Linux существует два основных метода аутентификации пользователей: root и пользователь без прав root. Рекомендуется избегать использования root по умолчанию. Пользователь root может выполнять любые действия, и даже случайное удаление важных данных не будет сопровождаться предупреждением. Нужно входить в систему под обычной учетной записью, повышая привилегии до уровня root только тогда, когда это действительно необходимо. В большинстве случаев для выполнения стандартных пользовательских задач права root не требуются, но для определенных административных операций они необходимы.

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

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

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

В Linux пользовательская учетная запись не всегда соответствует конкретному человеку, который работает за компьютером. Это объект, созданный в системе Linux для предоставления определенных прав, необходимых для выполнения задач. Такие учетные записи могут быть связаны как с людьми, так и с различными сервисами.

Как добавить пользователя в Linux через useradd

Процесс добавления нового пользователя в Linux можно разделить на два этапа: создание пользователя и установка пароля для него.

Первый шаг заключается в использовании команды `useradd`:
useradd [опции создания] [логин]Эта команда опирается на ряд предустановленных настроек, которые определены в файлах `/etc/default/useradd` и `/etc/login.defs`. Чтобы просмотреть основные настройки, можно воспользоваться командой:
useradd -D

Основные параметры useradd

  • GROUP: указывает идентификатор GID группы, в которую будет добавлен новый пользователь.
  • HOME: определяет базовый каталог, в котором будет размещена домашняя директория пользователя.
  • INACTIVE: задает количество дней до блокировки учетной записи после того, как пароль станет недействительным. Значение «-1» отключает эту опцию.
  • EXPIRE: указывает дату, до которой учетная запись будет активна. Если эта опция не задана, учетная запись будет действовать без ограничений.
  • SHELL: задает командную оболочку, которая будет использоваться пользователем.
  • SKEL: путь к директории, хранящей шаблонные файлы, которые копируются в домашнюю директорию нового пользователя при его создании.
  • CREATE_MAIL_SPOOL: определяет, следует ли создавать почтовую директорию для нового пользователя в `/var/spool/mail`.
Если использовать `useradd` без дополнительных параметров, то будет создан пользователь с настройками по умолчанию:
useradd test-userЕсли требуется настроить пользователя с определенными параметрами - следует использовать расширенные опции команды `useradd`.
  • `-m`: создает домашнюю директорию, если она еще не существует.
  • `-d /home/tester-user`: указывает домашнюю директорию, которая будет назначена пользователю.
  • `-c "Иван Петров"`: добавляет комментарий к учетной записи, например, имя и фамилию.
  • `-g tester`: указывает основную группу, к которой будет принадлежать пользователь. Можно указать как GID, так и имя группы, которая должна уже существовать в системе. Эта опция может использоваться вместе с ключом `-N`, отменяющим автоматическое создание группы с именем пользователя.
  • `-G users, wheel`: задает список дополнительных групп, к которым будет добавлен пользователь. Группы указываются через запятую без пробелов.
  • `-s /bin/bash`: задает командную оболочку, которая будет применяться пользователем.
  • `-r`: создает системного пользователя для запуска служб. Для него по умолчанию не создается домашняя директория, и данные не добавляются в `/etc/shadow`.
  • `-u`: указывает уникальный UID (идентификатор пользователя). UID должен быть положительным целым числом и не должен повторяться среди других пользователей.
  • `-e 2025-02-01`: указывает дату, до которой учетная запись будет активна. Дата задается в формате `YYYY-MM-DD`.
  • `-f 3`: задает количество дней до блокировки учетной записи после истечения срока действия пароля.
Команда может выглядеть следующим образом:
useradd -m -u 777 -d /home/users/tester-userer -c "Тестер" -e 2025-01-01 -s /bin/bash tester-userВ этом примере создается пользователь `tester-user` с UID 777, домашней директорией `/home/users/tester-user`, комментарием "Тестер" и доступом к командной оболочке `bash`. Учетная запись будет активна до 01.01.2025.

После создания учетной записи пользователя важно настроить надежный пароль. Для этого используется команда: passwd tester-user.

Если требуется изменить данные пользователя `tester-user`, команда будет выглядеть примерно  так:
usermod -l tester-user2 -m -d /home/tester-user2 -c "Terminator" -u 1945 -e 2025-02-02 -f -1 tester-userВ этом примере мы меняем логин на `tester-user2`, указываем новую домашнюю директорию `/home/tester-user2` с переносом файлов, обновляем комментарий, UID, срок действия аккаунта и отменяем блокировку, если пароль устарел.

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

Создание пользователя через adduser

Useradd - это утилита низкого уровня для добавления пользователей в Linux.  Adduser - более удобный инструмент, который фактически является оболочкой над командами useradd, groupadd и usermod. Не во всех дистрибутивах Linux она есть, но если в вашем она доступна - рекомендуется использовать именно ее.

Вместо ivanov вставьте имя нового пользователя:
adduser ivanovПосле выполнения команды необходимо задать пароль для нового пользователя и  ввести дополнительную информацию. Эти данные вводить не обязательно - просто нажимайте Enter, чтобы пропустить шаг. 

Создастся пользователь с указанным именем, группа, его домашняя папка в каталоге /home/имя_пользователя, в которую продублируются файлы из директории /etc/skel.

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

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

Для удаления учетных записей используется команда `userdel`. Ее синтаксис аналогичен другим командам:
userdel [что удаляем] [кого]Команда имеет два основных параметра.
  • `-r`: Удаляет домашнюю директорию пользователя и его почтовую очередь.
  • `-f`: Отключает механизм защиты. При активации этой опции пользователь будет удален даже в случае наличия активных процессов и других потенциальных конфликтов.
После удаления пользователя следует вручную убедиться, что на сервере не осталось никаких файлов или директорий, принадлежащих ему. Это поможет избежать возможных проблем, связанных с оставшимися следами удаленного аккаунта.

Группы пользователей в Linux

Информация о группах хранится в файле `/etc/group`. Группы применяются для делегирования прав доступа на файлы, каталоги или скрипты одновременно нескольким пользователям. Например, работа с FTP-сервером. Если вы выбрали каталог для работы с файлами, можно создать группу и выдать ей права на эту папку. Впоследствии, добавляя новых пользователей в группу, вы автоматически предоставляете им доступ к FTP-каталогу, без необходимости настраивать права для каждого пользователя в отдельности.

Создание групп

Для создания новой группы используется команда `groupadd` с параметрами.
  • `-f`: Если группа уже существует - команда завершится без ошибки.
  • `-g`: Назначает уникальный GID для новой группы.
  • `-r`: Создает системную группу.
  • `-p`: Устанавливает пароль для группы, который требуется при входе в группу с помощью команды `newgrp`. Однако этот параметр не рекомендуется использовать по соображениям безопасности, так как пароль просматривается в истории команд.

Изменение групп

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

`-g`: Изменяет GID группы.
`-n`: Переименовывает группу, присваивая ей новое имя.

Если необходимо изменить имя группы с `group1` на `new-group`, то команда будет выглядеть следующим образом:
groupmod -n new-group group1

Удаление групп

Удаление группы невозможно, если она является основной для какого-либо существующего пользователя. В таком случае сначала нужно удалить всех пользователей из этой группы. Сам процесс удаления осуществляется с помощью команды:
groupdel group1После удаления важно проверить, что на сервере не осталось файлов и данных, принадлежащих этой группе. Это необходимо для предотвращения возможных конфликтов в системе.

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

Осуществляется утилитой `gpasswd`. Она предоставляет несколько полезных параметров, но в одной команде можно использовать только один параметр.

gpasswd [что сделать] [в какой группе]
  • `-a`: В Linux добавить пользователя в группу.
  • `-d`: Удаляет пользователя из группы.
  • `-A пользователь1, пользователь2`: Этот параметр доступен только пользователям с правами администратора (`root`). Назначает список администраторов группы.
  • `-M пользователь1, пользователь2`: Также доступен только администраторам. Назначает список участников группы.
  • `-r`: Отключает пароль для группы и позволяет использовать команду `newgrp` только членам группы для подключения.
  • `-R`: Отключает внешний доступ к группе, ограничивает использование команды `newgrp` только членами группы.

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

Достаточно выполнить следующую команду:
gpasswd -a new-user test-groupили воспользоваться командой:
usermod -a -G new-group tester-userЕсли же нужно назначить `new-group` в качестве основной группы для пользователя `tester-user`, команда будет выглядеть так:
usermod -g new-group tester-userЛюбой пользователь может самостоятельно авторизоваться и подключиться к новой группе с помощью команды newgrp.

Заключение

Мы рассмотрели основные способы создания, удаления и модификации пользователей и групп, а также примеры использования команд. Их грамотное применение повышает безопасность и стабильность работы серверов, обеспечивает эффективное администрирование.
11 Sep 2024, 18:29:31