А) Внутренние механизмы разграничения доступа (атрибуты субъектов и объектов ОС), структура и назначение, участие в процедуре получения субъектом доступа к объектам ОС
Б) Учетные записи пользователей и групп, файлы учетных записей пользователей и групп (/etc/passwd, /etc/group) – назначение и внутренняя структура, файлы теневых паролей (/etc/shadow, /etc/gshadow) – назначение и внутренняя структура, классическая атака по сбросу и модификации пароля пользователя, противодействие атаки.
В) Подмена пользователя, утилиты su и sudo, назначение и правила применения, типичные ситуации использования.
Г) ФС, три метода доступа к объектам ФС (чтение, запись, исполнение), отличие действия методов доступа на файлы и директории, атрибуты доступа для объектов ФС (для владельца, для группы владельца, для всех остальных пользователей), проверка прав при обращении к объекту ФС, дополнительные атрибуты ФС (SUID, SGID, Sticky bit) – действие на файлы и директории, стандартные случаи использования SUID в ОС Linux.
А) В операционной системе UNIX используется достаточно простая модель доступа, основанная на субъект-субъектной модели и статической авторизации. В современных версиях UNIX помимо общей схемы можно также использовать списки доступа.
Пользователи и группы
В UNIX роль номинального субъекта безопасности играет пользователь. Каждому пользователю выдается (обычно — одно) входное имя (login). Каждому входному имени соответствует единственное число, идентификатор пользователя (User IDentifier, UID). Это число и есть ярлык субъекта (номинальный субъект), которым система пользуется для определения прав доступа.
Каждый пользователь входит в одну или более групп. Группа — это список пользователей системы, имеющий собственный идентификатор (Group IDentifier, GID). Поскольку группа объединяет несколько пользователей системы, в терминах политики безопасности она соответствует понятию множественный субъект. Значит, GID — это ярлык множественного субъекта, которых у номинального субъекта может быть более одного. Таким образом, одному UID соответствует список GID.
Роль действительного (работающего с объектами) субъекта играет процесс. Каждый процесс снабжен единственным UID: это идентификатор запустившего процесс номинального субъекта, т. е. пользователя. Процесс, порожденный некоторым процессом пользователя, наследует его UID. Таким образом, все процессы, запускаемые по желанию пользователя, будут иметь его идентификатор. Вообще говоря с процессами связано 4 идентификатора реальный и эффективный пользовательский (UID), а также реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов, а эффективные для определения прав доступа к процессам. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы, а также изменять приоритет. Об эффективных и реальный UID/GID будет сказано позже.
Права доступа
Роль основного объекта доступа в UNIX играют объекты файловой системы. В архитектуре UNIX в файловой системе представлены не только обычные файлы с данными, там присутствуют и специальные файлы для устройств, каналов, сокетов и т. д. Благодаря этому регулирование доступа к файлам позволяет покрыть очень широкий спектр ситуаций доступа и служит основным средством организации политики доступа в UNIX.
В соответствии с субъект-субъектной моделью каждый файл снабжен ярлыком, в котором хранятся идентификаторы номинальных субъектов, которые вправе распоряжаться доступом к данному файлу. В случае UNIX — это идентификатор пользователя-владельца (UID) и идентификатор группы-владельца (GID). Обратите внимание, что файл может принадлежать только одной группе, в то время как пользователь может входить в несколько групп.
На уровне файловой системы в UNIX определяются три вида доступа: чтение (read, r), запись (write, w) и использование (execution, x). Право на чтение из файла дает доступ к содержащейся в нем информации, а право записи — возможность ее изменять. Право использования трактуется по-разному в зависимости от типа файла. В случае обычного файла оно означает возможность исполнения файла, т. е. запуска программы или командного сценария, содержащихся в этом файле. Для каталога использование — это возможность доступа к файлам этого каталога (точнее говоря, к атрибутам этих файлов — имени, правам доступа и т. п.).
При каждом файле имеется ярлык, в котором зафиксированы права доступа к нему. Права доступа включают список из девяти пунктов (три тройки): по три вида доступа для трех групп — пользователя-владельца, группы-владельца и всех остальных. Каждый пункт в этом списке может быть либо разрешён, либо запрещён (равен 0 либо 1). Таким образом, для хранения этой информации о правах доступа достаточно 9 бит.
При обращении процесса к файлу (с запросом доступа определённого вида, т. е. на чтение, запись или исполнение) система проверяет совпадение идентификаторов владельцев процесса и владельцев файла в определённом порядке, и в зависимости от результата, применяет ту или иную группу прав.