Интерфейс файловой системы
Разделы диска. Операция монтирования
В ОС Windows принято разбивать диски на логические диски (это низкоуровневая операция), иногда называемые разделами (partitions). Бывает, что, наоборот, объединяют несколько физических дисков в один логический диск. На разделе или логическом диске хранится корневой каталог данного и все вложенные в него каталоги, а задание пути к файлу начинается с имени логического диска или "буквы" диска.
Имена логических дисков хранятся в каталоге "\??" пространства имен объектов, которые и осуществляют связь логического диска и реального устройства. Указав букву диска, прикладная программа получает доступ к его файловой системе.
По аналогии с Unix операционная система Windows позволяет пользователю создать точку монтирования - связать какой-либо пустой каталог с каталогом логического диска. В случае успешного завершения операции содержимое этих каталогов будет соответствовать друг другу.
Эксперимент. Монтирование логического диска с помощью штатной утилиты mountvol
Чтобы смонтировать логический диск, нужно выполнить команду
>mountvol [<диск>:]<путь> <имя тома>
Здесь параметр <путь> задает имя пустого каталога, а имя тома задается в виде \\?\Volume{код_GUID}\, где GUID - глобальный уникальный идентификатор.
Например
>mountvol f:\tmp1 \\?\Volume\{2eca078d-5cbc-43d3-aff8-7e8511f60d0e}\}
Имена глобальных уникальных идентификаторов и их связь с буквами диска можно узнать, дав команду
>mountvol /?
Монтирование также можно выполнить с помощью панели управления дисками системной панели управления, если выбрать пункт "изменение буквы диска и пути диска".
Наконец, смонтировать диск можно программным образом с помощью Win32-функции SetVolumeMountPoint.
Защита файлов
Защита файлов от несанкционированного использования основана на том, что доступ к файлу зависит от идентификатора пользователя. Система контроля доступа предполагает наличие у каждого файла дескриптора защиты, содержащего список прав доступа, который формирует владелец файла и который входит в состав атрибута SecurityAttributes файла. Каждый процесс имеет маркер доступа, который содержит права пользователя, запустившего процесс.
Список прав доступа содержит набор идентификаторов пользователей, имеющих право на доступ к файлу, и их права в отношении этого файла. Маркер доступа содержит идентификатор владельца процесса. Система контроля доступа в момент открытия файла проверяет соответствие прав владельца процесса с теми, которые перечислены в списке прав доступа к файлу. В результате доступ может быть разрешен или отклонен.
Во время выполнения операций чтения, записи и других, проверок прав доступа уже не производится.
В новых версиях NTFS дескрипторы защиты всех файлов хранятся в отдельном файле метаданных \$Secure, который описывается 9-й записью главной файловой таблицы тома MFT (консолидированная защита).
Более подробно защита от несанкционированного доступа описана в части V данного курса.
Заключение
Файл - единица внешней памяти, поэтому обычно данные, записанные на диск, находятся в составе какого-нибудь файла. Файловая система решает задачи именования и типизации файлов, организации доступа к файлам, защиты, поиска файлов и ряд других. В системе на каждом разделе диска поддерживается иерархическая система каталогов. Для эффективного доступа к файлам могут быть организованы асинхронное чтение и запись.