- •Глава 7. Файловые системы
- •7.1. Иерархическая модель файловой системы
- •7.2. Логическая организация файлов. Интерфейсы
- •7.3. Логическая файловая система. Каталоги
- •7.4. Логическая файловая система. Системные вызовы
- •7.5. Базовая файловая система Дескриптор файла
- •Управление доступом
- •7.6. Физическая структура файлов
- •7.7. Пример
- •7.8. Целостность данных и файловой системы
- •7.9. Загружаемая файловая система
- •Контрольные вопросы
Управление доступом
В некоторых ОС одной из важнейших функций базовой ФС является контроль за доступом пользователей к файлам. Мы говорим "в некоторых", так как в ряде ОС проблема контроля доступа решается на общесистемном уровне и доступ к файлам – ее частный случай. Такие ОС рассматриваются нами в главе 10, здесь же мы остановимся на случае, когда доступ к файлам контролируется базовой ФС, и рассмотрим его на примере ОС Unix.
В Unix возможны следующие режимы доступа к файлам: r – чтение, w – запись, x – выполнение. Возможны также их комбинации.
Пользователи подразделяются на следующие категории:
владелец – пользователь, который создал файл;
группа – пользователи, входящие в ту же группу, что и владелец файла;
все остальные пользователи.
Для каждого файла определяется допустимый режим доступа для каждой из этих трех групп. Так, например, если для файла доступ закодирован в виде:
rwxr-x--x,
то это означает, что владелец имеет право читать, писать и выполнять файл (rwx), остальные члены группы владельца имеют право читать и выполнять файл (r-x), все другие пользователи – только читать (--x).
Идентификатор владельца и группы владельца входят в состав файлового дескриптора. Для кодировки прав доступа достаточно трех 3-битных позиционных кодов, которые также включаются в дескриптор.
Каждая активизация файлового дескриптора базовой ФС включает в себя проверку прав доступа. В ходе проверки определяется идентификатор владельца процесса, открывающего файл. Этот идентификатор сравнивается с идентификатором владельца файла и с идентификатором группы владельца файла. В зависимости от результатов сравнения определяется категория пользователя, открывающего файл, и выбирается соответствующий 3-битный код доступа. Режим доступа, запрашиваемый при открытии, сравнивается с кодом доступа и при несоответствии их происходит отказ в доступе.
Как мы отмечали выше, с точки зрения базовой ФС, каталоги практически ничем не отличаются от файлов, следовательно, все, что говорилось выше о правах доступа применимо и к каталогам.
Поскольку логическая ФС при поиске обращается к базовой ФС для чтения информации из каталогов, а базовая ФС производит при этом проверку прав доступа, то файл может быть доступен для данного пользователя только, если для него доступны все подкаталоги, входящие в путь к файлу.
Как определяется доступ к алиасам и косвенным файлам? Что касается алиасов, то ответ зависит от того, связываются ли права доступа с именем или с файлом. До сих пор мы говорили о том, что права доступа хранятся в файловом дескрипторе, поскольку физическому файлу соответствует единственный файловый дескриптор, права доступа к файлу по всем алиасам будут одинаковы. Возможно, однако, хранение прав доступа не в дескрипторе, а в элементе каталога, в этом случае разные алиасы могут обеспечивать разные права доступа к одному файлу. Возможны два варианта реализации прав доступа к косвенному файлу. В первом варианте в псевдодескрипторе, содержащем ссылку, указываются права доступа, как для обычного файла, при соответствии конкретного режима доступа этим правам проверка прав доступа заканчивается. Во втором случае проверка прав доступа продолжается и для всех каталогов, входящих в путь, указанный в ссылке.