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

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




Основы пользователей в Linux

Каждый процесс и файл в Linux связаны с определенным пользователем и группой. Это фундаментальный принцип, который позволяет системе контролировать, кто имеет доступ к ресурсам и какие действия он может выполнять.

Что такое пользователь?

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

UID и GID: Идентификаторы Пользователей и Групп

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

  • UID (User ID): Уникальный числовой идентификатор для каждого пользователя.
  • GID (Group ID): Уникальный числовой идентификатор для каждой группы.

Каждый пользователь обязательно принадлежит к одной основной группе (primary group), которая определяется его GID. Помимо основной группы, пользователь может быть членом одной или нескольких дополнительных групп (supplementary groups). Группы используются для коллективного управления доступом к файлам и ресурсам. Например, если несколько пользователей работают над одним проектом, их можно добавить в одну группу, чтобы они могли совместно использовать файлы проекта.

Как UID и GID определяют пользователя и его принадлежность к группам в Linux.

Системные vs. Обычные Пользователи

В Linux существуют два основных типа пользователей:

  • Системные пользователи (System Users): Эти пользователи создаются автоматически при установке операционной системы и различных пакетов программного обеспечения. Они предназначены для запуска системных служб и приложений (например, daemon, bin, mail, www-data). Их UID обычно находятся в диапазоне от 1 до 999 (на современных системах). Системные пользователи обычно не имеют интерактивной оболочки и домашнего каталога, поскольку они не предназначены для прямого входа в систему.
  • Обычные пользователи (Regular Users): Это пользователи, создаваемые администратором или самой системой для взаимодействия с человеком. Их UID обычно начинаются с 1000 и выше. Каждый обычный пользователь имеет свой домашний каталог и интерактивную оболочку (shell), такую как Bash, Zsh и т.д.

Особое место занимает пользователь root:

  • root (UID 0): Это суперпользователь, обладающий неограниченными правами в системе. Пользователь root может выполнять любые действия, читать и изменять любые файлы, устанавливать программы и управлять всеми аспектами системы. Из-за этого крайне не рекомендуется использовать учетную запись root для повседневной работы; вместо этого следует использовать sudo для повышения привилегий.

Файлы конфигурации пользователей

Информация о пользователях и группах хранится в нескольких ключевых текстовых файлах, расположенных в каталоге /etc/.

/etc/passwd

Этот файл содержит основную информацию о каждом пользователе в системе, за исключением пароля. Он доступен для чтения всем пользователям. Каждая строка в /etc/passwd представляет собой запись о пользователе и состоит из семи полей, разделенных двоеточием (:):

INI
имя_пользователя:x:UID:GID:комментарий:домашний_каталог:оболочка

Разберем каждое поле:

  • имя_пользователя: Уникальное имя пользователя (логин).
  • x: Заглушка, указывающая на то, что хеш пароля хранится в файле /etc/shadow для повышения безопасности. В старых системах здесь мог храниться сам хеш пароля.
  • UID: Уникальный идентификатор пользователя.
  • GID: GID основной группы, к которой принадлежит пользователь.
  • комментарий: Поле для произвольной информации о пользователе (например, полное имя, номер телефона). Часто называется GECOS-полем.
  • домашний_каталог: Абсолютный путь к домашнему каталогу пользователя. Это место, куда пользователь попадает после входа в систему.
  • оболочка: Путь к интерпретатору командной строки (shell), который будет запускаться при входе пользователя в систему (например, /bin/bash, /bin/zsh, /bin/sh). Если здесь указано /sbin/nologin или /bin/false, это означает, что пользователь не может получить интерактивную сессию входа.
Пример содержимого /etc/passwd

/etc/shadow

Этот файл хранит зашифрованные пароли пользователей и информацию о сроке действия паролей. Он доступен для чтения только пользователю root для максимальной безопасности. Каждая строка в /etc/shadow также состоит из девяти полей, разделенных двоеточием (:):

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

Ключевые поля:

  • имя_пользователя: Соответствует имени пользователя в /etc/passwd.
  • хеш_пароля: Зашифрованный пароль пользователя. Начинается с $id$ где id указывает на алгоритм хеширования (например, $6$ для SHA-512, $5$ для SHA-256). Если поле пустое или содержит * или !, это означает, что учетная запись заблокирована или не имеет пароля.
  • дата_последнего_изменения: Количество дней с 1 января 1970 года, когда пароль был изменен в последний раз.
  • минимальный_срок_действия: Минимальное количество дней, которое должно пройти до того, как пользователь сможет снова изменить свой пароль.
  • максимальный_срок_действия: Максимальное количество дней, после которого пароль должен быть изменен.
  • срок_предупреждения: Количество дней до истечения срока действия пароля, когда пользователь начнет получать предупреждения.
  • срок_неактивности: Количество дней после истечения срока действия пароля, в течение которых учетная запись остается активной. После этого срока учетная запись блокируется.
  • срок_истечения_учетной_записи: Количество дней с 1 января 1970 года, после которого учетная запись будет полностью заблокирована.
Файл /etc/shadow: безопасное хранение хешей паролей и политики их использования.

/etc/group

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

INI
имя_группы:x:GID:члены_группы
  • имя_группы: Уникальное имя группы.
  • x: Заглушка, аналогично /etc/passwd, указывающая, что хеш пароля группы (если таковой есть) хранится в файле /etc/gshadow.
  • GID: Уникальный идентификатор группы.
  • члены_группы: Список пользователей, которые являются дополнительными членами этой группы, разделенные запятыми. Пользователи, для которых эта группа является основной, здесь не перечисляются.
Пример содержимого /etc/group

Управление пользователями (команды)

Для управления пользователями в Linux используются специальные утилиты командной строки.

useradd — создание нового пользователя

Команда useradd используется для добавления новых пользователей в систему. Она создает новую запись в /etc/passwd, /etc/shadow и /etc/group (для основной группы пользователя).

Bash
sudo useradd [опции] имя_пользователя

Основные опции:

  • -m: Создать домашний каталог пользователя, если он не существует (рекомендуется).
  • -s /путь/к/оболочке: Указать оболочку для пользователя (например, -s /bin/bash).
  • -g основная_группа: Указать основную группу пользователя по GID или имени.
  • -G дополнительная_группа1,дополнительная_группа2: Добавить пользователя в дополнительные группы.
  • -c "Комментарий": Добавить комментарий (GECOS-поле).
  • -u UID: Указать конкретный UID для пользователя.

Пример:

Bash
sudo useradd -m -s /bin/bash -G sudo,www-data -c "Джон Доу" john

Эта команда создаст пользователя john с домашним каталогом /home/john, оболочкой Bash, добавит его в группы sudo и www-data, и установит комментарий «Джон Доу».

passwd – установка и изменение пароля

После создания пользователя необходимо установить для него пароль.

Bash
sudo passwd имя_пользователя

Система запросит ввод нового пароля дважды.

Создание пользователя и установка пароля

usermod – изменение свойств пользователя

Команда usermod позволяет изменять свойства существующего пользователя.

Bash
sudo usermod [опции] имя_пользователя

Основные опции:

  • -l новое_имя: Изменить имя пользователя (логин).
  • -d /новый/домашний/каталог: Изменить домашний каталог пользователя.
  • -m: Переместить содержимое старого домашнего каталога в новый (используется с -d).
  • -s /путь/к/оболочке: Изменить оболочку пользователя.
  • -g новая_основная_группа: Изменить основную группу пользователя.
  • -G дополнительная_группа1,дополнительная_группа2: Изменить дополнительные группы пользователя.
    ⚠️Важно: эта опция заменяет существующие дополнительные группы. Для добавления без удаления используйте -aG.
  • -aG дополнительная_группа: Добавить пользователя в дополнительную группу, не удаляя текущие.
  • -L: Заблокировать учетную запись пользователя.
  • -U: Разблокировать учетную запись пользователя.
  • -e YYYY-MM-DD: Установить дату истечения срока действия учетной записи.

Пример:

Bash
sudo usermod -aG developers john # Добавить пользователя john в группу developers
sudo usermod -s /bin/zsh john    # Изменить оболочку john на zsh

userdel – удаление пользователя

Команда userdel используется для удаления учетной записи пользователя.

Bash
sudo userdel [опции] имя_пользователя

Основные опции:

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

Пример:

Bash
sudo userdel -r olduser

Эта команда удалит пользователя olduser и его домашний каталог.


Управление группами (команды)

Управление группами не менее важно для организации прав доступа.

groupadd – создание новой группы

Bash
sudo groupadd [опции] имя_группы

Пример:

Bash
sudo groupadd project_alpha

groupmod – изменение свойств группы

Bash
sudo groupmod [опции] имя_группы

Основные опции:

  • -n новое_имя: Изменить имя группы.
  • -g GID: Изменить GID группы.

Пример:

Bash
sudo groupmod -n project_beta project_alpha

groupdel – удаление группы

Bash
sudo groupdel имя_группы

Пример:

Bash
sudo groupdel old_group

gpasswd – управление членами группы

Эта команда позволяет добавлять и удалять пользователей из дополнительных групп.

Bash
sudo gpasswd [опции] имя_группы

Основные опции:

  • -a пользователь: Добавить пользователя в группу.
  • -d пользователь: Удалить пользователя из группы.

Пример:

Bash
sudo gpasswd -a alice developers # Добавить alice в группу developers
sudo gpasswd -d bob developers   # Удалить bob из группы developers

Создание новой группы и добавление пользователя в нее.

Привилегии и безопасность

Управление пользователями тесно связано с управлением привилегиями и общей безопасностью системы.

sudo – делегирование административных прав

sudo (superuser do) — это наиболее распространенный и безопасный способ выполнения команд с правами root без необходимости входить в систему как root. Пользователи, которым разрешено использовать sudo, должны быть перечислены в файле /etc/sudoers или входить в специальные группы (например, sudo или wheel), которые имеют соответствующие разрешения в этом файле.

Использование:

Bash
sudo команда

При первом использовании sudo в сессии система запросит пароль текущего пользователя, а не пароль root.

Редактирование /etc/sudoers:

Для редактирования /etc/sudoers всегда используйте команду visudo. Она проверяет синтаксис файла перед сохранением, предотвращая возможные ошибки, которые могут заблокировать доступ к sudo.

Пример записи в /etc/sudoers:

INI
john ALL=(ALL:ALL) ALL

Эта строка позволяет пользователю john выполнять любые команды от имени любого пользователя и группы на любом терминале.

su – переключение пользователя

Команда su (substitute user) позволяет переключиться на другого пользователя (включая root) в текущей сессии терминала.

Bash
su [имя_пользователя]

Если имя_пользователя не указано, su по умолчанию пытается переключиться на root. Система запросит пароль пользователя, на которого вы переключаетесь.

Права доступа к файлам и каталогам

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

  • Владелец (User): Права для пользователя, который владеет файлом/каталогом.
  • Группа (Group): Права для пользователей, которые являются членами группы-владельца файла/каталога.
  • Остальные (Others): Права для всех остальных пользователей в системе.

Для каждой категории определяются три типа разрешений:

  • r (read): Чтение содержимого файла или списка содержимого каталога.
  • w (write): Запись в файл или создание/удаление файлов в каталоге.
  • x (execute): Выполнение файла (если это скрипт или программа) или вход в каталог.

Эти права могут быть представлены в символьном виде (rwx) или в восьмеричном (числовом) виде:

  • r = 4
  • w = 2
  • x = 1
  • - = 0 (нет разрешения)
Обозначения прав доступа к файлам в Linux.

Команды для управления правами:

chmod: Изменяет права доступа к файлам и каталогам.

  • Пример (восьмеричный): chmod 755 script.sh (владелец: rwx, группа: rx, остальные: rx)
  • Пример (символьный): chmod u+x,g-w file.txt (добавить владельцу право на выполнение, удалить у группы право на запись)

chown: Изменяет владельца файла или каталога.

  • Пример: sudo chown john:developers project_file.txt (владелец john, группа developers)

chgrp: Изменяет группу-владельца файла или каталога.

  • Пример: sudo chgrp sales report.pdf

Лучшие практики безопасности

Принцип наименьших привилегий (Principle of Least Privilege): Предоставляйте пользователям и службам только те права, которые абсолютно необходимы для выполнения их функций.

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

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

Аудит и логирование: Регулярно просматривайте системные журналы (/var/log/auth.log или journalctl) для выявления подозрительной активности, связанной с аутентификацией и повышением привилегий.

Блокировка неиспользуемых учетных записей: Удаляйте или блокируйте учетные записи, которые больше не используются.

Ограничение интерактивных оболочек: Для системных пользователей, не требующих входа в систему, устанавливайте оболочку /sbin/nologin или /bin/false.


Заключение

Управление пользователями и правами в Linux — это не просто набор команд, а комплексный подход к обеспечению безопасности и эффективной работы системы. Понимание структуры файлов /etc/passwd, /etc/shadow, /etc/group, а также умелое использование команд useradd, usermod, userdel, groupadd, groupmod, groupdel, gpasswd, sudo, su, chmod, chown и chgrp позволит вам поддерживать порядок и безопасность в любой Linux-среде. Следуя лучшим практикам, вы сможете создать надежную и управляемую систему, готовую к любым задачам.


Дополнительный материал

Было ли это полезно?

0 / 0

Добавить комментарий 0