Модель пользователя в GNU/Linux

Модель пользователя в GNU/Linux #

Васильев Андрей Михайлович, 2024

Версии презентации


Истоки требований UNIX к безопасности #

Первоначально UNIX разрабатывался для больших мейнфремов:

  • Большой и мощный вычислитель располагался в выделенном здании
  • Пользователи получали доступ к нему с помощью небольших клиентов — терминалов

Необходимо было обеспечить, чтобы большое количество пользователей одновременно могли выполнять свои задачи

Истоки DOS #

Основа IBM PC — простой процессор, лишённый множества «сложных» функций для снижения цены

DOS разрабатывался как ОС для использования на персональном компьютере, для которого не нужны сложности, связанные с поддержкой работы нескольких пользователей одновременно

В рамках Windows NT в конце 90х была реализована полноценная поддержка разграничения прав пользователей


Многозадачная многопользовательская ОС #

Многопользовательская ОС #

Позволяет запускать процессы нескольким пользователям одновременно

  • Локальный пользователь с графическим интерфейсом
  • Удалённые пользователи с текстовым интерфейсом
  • Системные пользователи для работы служб

Многозадачная ОС #

ОС позволяет выполнять или эмитировать выполнение нескольких задач одновременно с помощью одного процессора

  • Достигается за счёт переключения процессора между активными задачами, быстрее чем человек может воспринять
  • У задач может быть приоритет в зависимости от которого происходит выбор очередной задачи для исполнения
  • Переключение контекста между задачами де-факто снижает эффективность работы вычислительной системы

Требования к многопользовательской ОС #

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

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

Сфера разграничения прав #

Требования необходимо обеспечить для:

  • Файлов на файловой системе
  • Данных процессов в оперативной памяти

Аутентификация и авторизация #

Физический пользователь должен выбрать учётную запись, идентификатор, и пройти процедуру аутентификации, введя, например, пароль

При работе с GNU/Linux вы постоянно выполняли эти действия:

  • При входе в графический интерфейс
  • При входе в псевдографический интерфейс
  • При подключении к виртуальной машине по SSH

После прохождения аутентификации для учётной записи запускаются процессы:

  • Графическая оболочка
  • Интерпретатор терминала

В дальнейшем при попытке выполнения любой операции внутри ОС происходит авторизация: проверятеся может ли данная учётная система выполнить операцию


Процессы и пользователи #

  • Процессом называется запущенный исполняемый код в конкретный момент исполнения, ассоциированный с ним набор ресурсов, находящийся под контролем операционной системы
  • Каждый процесс, запущенный в рамках GNU/Linux, запускается от имени учётной записи (пользователя)
  • Человек физически не может быть частью вычислительной системы (пока), поэтому вместо учётной записи применяется термин «пользователь»
  • Де-факто человек всегда запускает новые процессы, чтобы реализовать возможности, доступные учётной записи (пользователю)
  • Процесс может взаимодействовать только с теми файлами, для которых есть доступ у соответствующей учётной записи (пользователя)

diagram


Модель пользователей #

В UNIX-мире для формирования модели безопасности используются

  • User ID, уникальный идентификатор пользователя
  • Group ID, уникальный идентификатор группы

Представление пользователей #

  • Каждому пользователю обязательно назначается его уникальный идентификатор, который не может быть передан другим пользователям
  • Каждому пользователю обязательно назначается «группа по умолчанию»
  • Пользователь также может входить в произвольное количество групп

diagram


Права текущего пользователя #

Для определения прав пользователя можно использовать приложение id

$ id --help
Использование: id [КЛЮЧ]… [ПОЛЬЗОВАТЕЛЬ]
Выводит информацию о пользователе и группе для заданного
ПОЛЬЗОВАТЕЛЯ, или о текущем пользователе (если ничего не указано).
$ id
uid=1001(andrey) gid=1001(andrey) группы=1001(andrey),27(sudo)
  • uid — уникальный идентификатор текущего пользователя и назначенное ему имя
  • gid — уникальный идентификатор основной группы пользователя и её имя
  • groups — список дополнительных групп, которым принадлежит пользователь

Информация о пользователях #

Система получает информацию о пользователях через подсистемы NSS (Name Service Switch) и PAM (Pluggable Authencitation Modules). Первый описывает источники данных для имён (пользователей, групп, доменных имён и т.д.), а второй предоставляет инфраструктуру для авторизации пользователей

Настройка источников данных для NSS находится в файле /etc/nsswitch.conf

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

  • /etc/passwd содержит описание локальных пользователей
  • /etc/group содержит список групп и входящих в них пользователей
  • /etc/shadow содержит пароли локальных пользователей

Для наполнения информационных баз могут быть использованы сетевые службы, например LDAP (Lightweight Directory Access Protocol), NIS (Network Information Services) или AD (Active Directory)

© A. M. Васильев, 2025, CC BY-SA 4.0, andrey@crafted.su