Модель пользователя в GNU/Linux #
Васильев Андрей Михайлович, 2024
Версии презентации
Истоки требований UNIX к безопасности #
Первоначально UNIX разрабатывался для больших мейнфремов:
- Большой и мощный вычислитель располагался в выделенном здании
- Пользователи получали доступ к нему с помощью небольших клиентов — терминалов
Необходимо было обеспечить, чтобы большое количество пользователей одновременно могли выполнять свои задачи
Истоки DOS #
Основа IBM PC — простой процессор, лишённый множества «сложных» функций для снижения цены
DOS разрабатывался как ОС для использования на персональном компьютере, для которого не нужны сложности, связанные с поддержкой работы нескольких пользователей одновременно
В рамках Windows NT в конце 90х была реализована полноценная поддержка разграничения прав пользователей
Многозадачная многопользовательская ОС #
Многопользовательская ОС #
Позволяет запускать процессы нескольким пользователям одновременно
- Локальный пользователь с графическим интерфейсом
- Удалённые пользователи с текстовым интерфейсом
- Системные пользователи для работы служб
Многозадачная ОС #
ОС позволяет выполнять или эмитировать выполнение нескольких задач одновременно с помощью одного процессора
- Достигается за счёт переключения процессора между активными задачами, быстрее чем человек может воспринять
- У задач может быть приоритет в зависимости от которого происходит выбор очередной задачи для исполнения
- Переключение контекста между задачами де-факто снижает эффективность работы вычислительной системы
Требования к многопользовательской ОС #
В многопользовательской среде необходимо решить следующие задачи
- Каждый пользователь должен управлять своими данными, другие пользователи по умолчанию не должны иметь возможность их изменять
- Данные пользователя в оперативной памяти также должны быть защищены от стороннего наблюдателя
- Обычный пользователь не должен иметь возможности влиять на настройку системы, т.к. это может повредить другим пользователям этой системы
- Пользователи должны иметь возможность работать над общими данными
- В современном мире добавляется задача по защите данных в оперативной памяти от других процессов
Сфера разграничения прав #
Требования необходимо обеспечить для:
- Файлов на файловой системе
- Данных процессов в оперативной памяти
Аутентификация и авторизация #
Физический пользователь должен выбрать учётную запись, идентификатор, и пройти процедуру аутентификации, введя, например, пароль
При работе с GNU/Linux вы постоянно выполняли эти действия:
- При входе в графический интерфейс
- При входе в псевдографический интерфейс
- При подключении к виртуальной машине по SSH
После прохождения аутентификации для учётной записи запускаются процессы:
- Графическая оболочка
- Интерпретатор терминала
В дальнейшем при попытке выполнения любой операции внутри ОС происходит авторизация: проверятеся может ли данная учётная система выполнить операцию
Процессы и пользователи #
- Процессом называется запущенный исполняемый код в конкретный момент исполнения, ассоциированный с ним набор ресурсов, находящийся под контролем операционной системы
- Каждый процесс, запущенный в рамках GNU/Linux, запускается от имени учётной записи (пользователя)
- Человек физически не может быть частью вычислительной системы (пока), поэтому вместо учётной записи применяется термин «пользователь»
- Де-факто человек всегда запускает новые процессы, чтобы реализовать возможности, доступные учётной записи (пользователю)
- Процесс может взаимодействовать только с теми файлами, для которых есть доступ у соответствующей учётной записи (пользователя)
Модель пользователей #
В UNIX-мире для формирования модели безопасности используются
- User ID, уникальный идентификатор пользователя
- Group ID, уникальный идентификатор группы
Представление пользователей #
- Каждому пользователю обязательно назначается его уникальный идентификатор, который не может быть передан другим пользователям
- Каждому пользователю обязательно назначается «группа по умолчанию»
- Пользователь также может входить в произвольное количество групп
Права текущего пользователя #
Для определения прав пользователя можно использовать приложение 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)