Материал: 6261

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

131

5.2 Разграничение прав пользователей

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

работают автономно и не мешают друг другу, кроме системного администратора.

Это достигается двумя основными мерами:

•каждый пользователь имеет право работать только с теми файлами, директориями и файловыми системами, к которым он имеет доступ;

•пользователь root, с идентификатором UID=0, может делать абсолютно все.

На самом деле, имя пользователя имеет вспомогательное второстепенное значение. Главным показателем пользователя является его идентификатор UID: с увеличением номера UID права пользователя уменьшаются.

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

Условно, все пользователи разделяются на две категории:

•системные пользователи — root, sysadm и другие администраторы;

•обычные пользователи — те, которые используют прикладное программное

обеспечение ОС и не занимаются администрированием.

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

Со временем, разработчики прикладного ПО стали столь интенсивно использовать идентификаторы, что было принято решение:

•системные пользователи — UID < 999;

•пользователь live-дистрибутива — UID=999 и GID=999;

•обычные пользователи — UID > 999.

Замечание

Хотя часто, при создании нового пользователя, обычно создается и группа с таким же именем и GID=UID, - это не является обязательным требованием:

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

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

Как правило, обычному пользователю доступны:

•все файлы и каталоги его домашней директории, положение которой задано системной переменной HOME;

•права записи в каталоги /tmp и /var/tmp;

•права монтирования и демонтирования внешних устройств, которые прописаны в файле /etc/fstab с опцией user.

Временная смена прав доступа на права другого пользователя достигпется командой:

132

su [-] [username]

при этом, ему придется набрать пароль того пользователя, под чьим именем он собирается работать:

•Если присутствует первый аргумент команды su, то произойдет смена домашней директории и выполнятся скрипты входа типа ~/.profile.

•Если второй аргумент не указан, то подразумевается пользователь root.

Выполнене команд от имени пользователя root, для обычного пользователя,

выполняется командой:

sudo список_команд;

при этом, ему придется набрать свой собственный пароль.

Замечание

Если пользователю необходимо уточнить под чьими именами и идентификаторами он работает, можно воспользоваться командами whoami и id.

Смена прав пользователя ОС связана с его действиями в системе.

Действия пользователя в системе определяется работой программ (процессов), которые пользователь запускает. Чтобы определить, с какими правами работает процесс, вводятся дополнительные понятия, связанные с реальными и эффективными идетификаторами пользователя.

Действительные (реальные) ID пользователя и ID группы — это числовые (двухбайтовые) значения UID и GID, записанные в файлах /etc/passwd и /etc/group во время создания пользователя в системе.

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

•дочерний процесс, создаваемый системным вызовом fork(…), получает эффективные ID от своего родителя;

•процесс, модифицируемый одним из системных вызовов exec(…), устанавли-

вает эффективные ID в зависимости от значений битов SUID и SGID, присутствующих в поле i_mode индексного десткриптора файла (см. подраздел 4.5, таблицы 4.9 и 4.10): если биты SUID и SGID - установлены, то эффективные ID берутся из дескриптора файла, а если нет, то устанавливаются в значения

дейтсвительных (реальных) ID пользователя, запустившего процесс.

Сохраненные ID пользователя и ID группы — это числовые (двухбайтовые) значения первоначальных эффективных ID, которые сохранены в памяти процесса с помощью системных вызовов getuid(...) и getgid(...), сразу же после завершения системного вызова exec(...).

Замечание

Установка новых значений эффектиных ID выполняется с помощью системных вы-зовов setuid(...) и setgid(...).

На рисунке 5.1, представлен вывод эффектиных идентификаторов процесса shell,

133 запущенного пользователем upk в окне терминала.

Рисунок 5.1 — Вывод эффективных ID пользователя upk

5.3 Login и система доступа Linux-PAM

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

Врезультате регистрации:

•имена, идентификаторы и пароли будут записаны в соответствующие файлы: /etc/passwd, /etc/group, /etc/shadow и /etc/gshadow;

•в директории /home будет создана директория с именем пользователя;

•в директорию /home будут перенесены директории и файлы, находящиеся в

директории /etc/skel, которые составляют начальный скелет рабочей области любого пользователя.

После загрузки ОС и перехода ее в многопользовательский режим, запускается процесс «Манеджер сеанса», который контролирует и обеспечивает процедуры входа пользователя в систему:

•в случае положительного завершения процедры входа в систему, дополни-

тельно контролируется содержимое директории /home/$USER и, случае необходимости, в нее добавляются нужные файлы или модифицируются старые, а также устанавливаются эффективные идентификаторы для процессов санса пользователя;

•в случае негативного завершения процедры входа в систему или негативного

контроля содержимого директории /home/$USER, выполняются дополнительные процедуры, которые заканчиваются перезапуском «Менеджера сеансов».

Замечание

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

134

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

В любом случае, требуется набрать имя и пароль, а возможно и другие сведения, например, домен или язык работы с системой. Это зависит от настроек «Менеджера сеансов».

После ввода необходимой информации начинается процедура login, которая подразделяется на:

•идентификацию (аутентификацию), подразумевающую совпадение имени и пароля, зарегистрированных в системе;

•авторизацию, подразумевающую создание среды для работы программ поль-

зователя и фиксирование прав, которыми пользователь обладает. Фактически, авторизация не заканчивается завершением процедуры login. Она проводится постоянно, когда пользователь обращается к файлам или взаимодействует с процессами.

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

В 1995 году, OSF (Open Software Foundation) — фонд открытого программного обеспечения - приступил к разработке системы PAM (Pluggable Authentication Modules) — заменяемые модули идентификации.

Замечание

К середине 90-х годов, проблема безопасности ОС стала столь критичной, что поставила под сомнение архитектурные принципы различных систем.

Система PAM разрабатывалась для UNIX-подобных систем. MS Windows имеет свою оригинальную систему защиты.

Система PAM введена для создания дополнительного уровня защиты между приложениями и различными протоколами и способами идентификации и авторизации. Модули PAM — это динамически загружаемые библиотеки, которые находятся в директориях /lib/x86_64-linux-gnu/security или /usr/lib/x86_64-linux-gnu/security.

Все приложения используют универсальный интерфейс, PAM API, а уже модули PAM выбирают стратегию поведения и протоколы согласно файлам конфигурации:

/etc/pam.conf либо /etc/pam.d/....

Замечание

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

Технологическая концепция модулей PAM предполагает разделение их на четыре типа:

 

135

auth

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

 

является именно тем, кем он представился в системе.

account

Разрешают или запрещают конкретному пользователю вход в систему.

 

Это решение может зависеть от даты, времени суток, системных

 

ресурсов и т.д.

session

Осуществляют действия, которые должны быть выполнены до или

 

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

 

файлы, монтирование устройств и т.д.

passwd

Изменяют пароль пользователя.

Практическая реализация этой концепции предполагает централизованное исполь-зование файлов конфигурации.

Сейчас, файлы конфигурации Linux-PAM находятся в директории /etc/pam.d, в которой находятся файлы, как правило совпадающие с именами файлов приложений. Например, для программы sudo, файл конфигурации: /etc/pam.d/sudo.

Каждый файл конфигурации состоит из отдельных строк, содержащих поля:

тип_модуля

управляющий_флаг имя_модуля

аргументы

тип_модуля

Один из четырех типов: auth, account, session, passwd.

управляющий_флаг

Флаг, контролирующий поведение PAM в случае успеш-

 

ного или безуспешного результата работы модуля:

 

•

required - успешное завершение работы модуля

 

 

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

 

 

ошибочном завершении не будет сообщено до

 

 

окончания работы всех модулей.

 

 

 

•

requisite — успешное завершение работы модуля

 

 

необходимо для успеха всего запроса. Ошибочное

 

 

завершение приводит к немедленному возврату

 

 

управления приложению.

 

 

 

 

• sufficient — в случае

успешного

завершения,

 

 

управление немедленно

передается

приложению.

 

 

Ошибочное завершение модуля не учитывается.

 

• optional — результат работы

этого модуля не

 

 

учитывается.

 

 

 

имя_модуля

Имя файла, которое должно быть указано с полным путем

 

к нему.

 

 

 

аргументы

Командная строка, передаваемая модулю.

 

Таким образом, система PAM позволяет разрабатывать систему безопасности без переделки самих приложений.

Замечание

Чтобы узнать, какие библиотеки PAM использует приложение, лучше воспользоваться командой ldd. Например, для приложения su, имеем:

Источник: https://studfile.net/preview/16438529/