Linux — это многопользовательская операционная система, это означает, что несколько пользователей могут одновременно работать на одной машине. Эффективное управление пользователями и их правами доступа является краеугольным камнем безопасности, стабильности и функциональности любой Linux-системы. В этой статье мы погрузимся в механизмы управления пользователями, рассмотрим ключевые конфигурационные файлы, изучим основные команды и обсудим лучшие практики для обеспечения безопасности.
Основы пользователей в Linux
Каждый процесс и файл в Linux связаны с определенным пользователем и группой. Это фундаментальный принцип, который позволяет системе контролировать, кто имеет доступ к ресурсам и какие действия он может выполнять.
Что такое пользователь?
В контексте Linux пользователь — это сущность, которая может входить в систему и взаимодействовать с ней. Каждый пользователь имеет свой уникальный идентификатор и набор прав, определяющих его возможности.
UID и GID: Идентификаторы Пользователей и Групп
Для внутренней работы система Linux идентифицирует пользователей и группы не по их именам, а по числовым идентификаторам:
- UID (User ID): Уникальный числовой идентификатор для каждого пользователя.
- GID (Group ID): Уникальный числовой идентификатор для каждой группы.
Каждый пользователь обязательно принадлежит к одной основной группе (primary group), которая определяется его GID. Помимо основной группы, пользователь может быть членом одной или нескольких дополнительных групп (supplementary groups). Группы используются для коллективного управления доступом к файлам и ресурсам. Например, если несколько пользователей работают над одним проектом, их можно добавить в одну группу, чтобы они могли совместно использовать файлы проекта.

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

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

/etc/groupУправление пользователями (команды)
Для управления пользователями в Linux используются специальные утилиты командной строки.
useradd — создание нового пользователя
Команда useradd используется для добавления новых пользователей в систему. Она создает новую запись в /etc/passwd, /etc/shadow и /etc/group (для основной группы пользователя).
sudo useradd [опции] имя_пользователяОсновные опции:
-m: Создать домашний каталог пользователя, если он не существует (рекомендуется).-s /путь/к/оболочке: Указать оболочку для пользователя (например,-s /bin/bash).-g основная_группа: Указать основную группу пользователя по GID или имени.-G дополнительная_группа1,дополнительная_группа2: Добавить пользователя в дополнительные группы.-c "Комментарий": Добавить комментарий (GECOS-поле).-u UID: Указать конкретный UID для пользователя.
Пример:
sudo useradd -m -s /bin/bash -G sudo,www-data -c "Джон Доу" johnЭта команда создаст пользователя john с домашним каталогом /home/john, оболочкой Bash, добавит его в группы sudo и www-data, и установит комментарий «Джон Доу».
passwd – установка и изменение пароля
После создания пользователя необходимо установить для него пароль.
sudo passwd имя_пользователяСистема запросит ввод нового пароля дважды.

usermod – изменение свойств пользователя
Команда usermod позволяет изменять свойства существующего пользователя.
sudo usermod [опции] имя_пользователяОсновные опции:
-l новое_имя: Изменить имя пользователя (логин).-d /новый/домашний/каталог: Изменить домашний каталог пользователя.-m: Переместить содержимое старого домашнего каталога в новый (используется с-d).-s /путь/к/оболочке: Изменить оболочку пользователя.-g новая_основная_группа: Изменить основную группу пользователя.-G дополнительная_группа1,дополнительная_группа2: Изменить дополнительные группы пользователя.
⚠️Важно: эта опция заменяет существующие дополнительные группы. Для добавления без удаления используйте-aG.-aG дополнительная_группа: Добавить пользователя в дополнительную группу, не удаляя текущие.-L: Заблокировать учетную запись пользователя.-U: Разблокировать учетную запись пользователя.-e YYYY-MM-DD: Установить дату истечения срока действия учетной записи.
Пример:
sudo usermod -aG developers john # Добавить пользователя john в группу developers
sudo usermod -s /bin/zsh john # Изменить оболочку john на zshuserdel – удаление пользователя
Команда userdel используется для удаления учетной записи пользователя.
sudo userdel [опции] имя_пользователяОсновные опции:
-r: Удалить домашний каталог пользователя и почтовый ящик вместе с учетной записью (рекомендуется).
Пример:
sudo userdel -r olduserЭта команда удалит пользователя olduser и его домашний каталог.
Управление группами (команды)
Управление группами не менее важно для организации прав доступа.
groupadd – создание новой группы
sudo groupadd [опции] имя_группыПример:
sudo groupadd project_alphagroupmod – изменение свойств группы
sudo groupmod [опции] имя_группыОсновные опции:
-n новое_имя: Изменить имя группы.-g GID: Изменить GID группы.
Пример:
sudo groupmod -n project_beta project_alphagroupdel – удаление группы
sudo groupdel имя_группыПример:
sudo groupdel old_groupgpasswd – управление членами группы
Эта команда позволяет добавлять и удалять пользователей из дополнительных групп.
sudo gpasswd [опции] имя_группыОсновные опции:
-a пользователь: Добавить пользователя в группу.-d пользователь: Удалить пользователя из группы.
Пример:
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), которые имеют соответствующие разрешения в этом файле.
Использование:
sudo командаПри первом использовании sudo в сессии система запросит пароль текущего пользователя, а не пароль root.
Редактирование /etc/sudoers:
Для редактирования /etc/sudoers всегда используйте команду visudo. Она проверяет синтаксис файла перед сохранением, предотвращая возможные ошибки, которые могут заблокировать доступ к sudo.
Пример записи в /etc/sudoers:
john ALL=(ALL:ALL) ALLЭта строка позволяет пользователю john выполнять любые команды от имени любого пользователя и группы на любом терминале.
su – переключение пользователя
Команда su (substitute user) позволяет переключиться на другого пользователя (включая root) в текущей сессии терминала.
su [имя_пользователя]Если имя_пользователя не указано, su по умолчанию пытается переключиться на root. Система запросит пароль пользователя, на которого вы переключаетесь.
Права доступа к файлам и каталогам
Каждый файл и каталог в Linux имеет набор прав доступа, которые определяют, кто может читать, записывать или выполнять его. Эти права делятся на три категории:
- Владелец (User): Права для пользователя, который владеет файлом/каталогом.
- Группа (Group): Права для пользователей, которые являются членами группы-владельца файла/каталога.
- Остальные (Others): Права для всех остальных пользователей в системе.
Для каждой категории определяются три типа разрешений:
- r (read): Чтение содержимого файла или списка содержимого каталога.
- w (write): Запись в файл или создание/удаление файлов в каталоге.
- x (execute): Выполнение файла (если это скрипт или программа) или вход в каталог.
Эти права могут быть представлены в символьном виде (rwx) или в восьмеричном (числовом) виде:
r= 4w= 2x= 1-= 0 (нет разрешения)

Команды для управления правами:
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-среде. Следуя лучшим практикам, вы сможете создать надежную и управляемую систему, готовую к любым задачам.
Дополнительный материал
- Атрибуты файлов в Linux
- Linux Scheduler: Автоматизация задач с Cron и Systemd Timers
- Структура каталогов Linux
Было ли это полезно?
0 / 0