Имя метафайла Описание
$Quota Файл, в котором записаны права пользователей на использование
дискового пространства (этот файл начал использоваться лишь в Windows 2000 с системой NTFS 5.0)
$Upcase Файл с таблицей соответствия строчных и прописных букв в именах файлов.
В NTFS имена файлов записываются в кодировке Unicode (всего доступно 65 тысяч различных символов, поэтому искать сточные и прописные эквиваленты символов — нетривиальная задача)
Итак, все файлы тома представлены в таблице MFT. За исключением собственно данных, в этой структуре хранится вся информация о файлах: имя файла, размер, положение на диске отдельных фрагментов и т. д. Если для информации не хватает одной записи MFT, то используются несколько записей, причем не обязательно последовательных. Если файл имеет не очень большой размер, тогда в ход идет довольно удачное решение: данные файла хранятся прямо в соответствующей записи таблицы MFT в оставшемся от служебных данных месте. Таким образом, файлы, занимающие не более сотни байтов, обычно не имеют своего «физического» воплощения в основной файловой области — все данные таких файлов хранятся прямо в таблице MFT.
Файл на томе в системе NTFS идентифицируется так называемой файловой ссылкой (file reference), которая представляется как 64-разрядное число. Файловая ссылка состоит из номера файла, который соответствует позиции его файловой записи в таблице MFT, и номера последовательности. Последний увеличивается всякий раз, когда данная позиция в MFT используется повторно, что позволяет файловой системе NTFS выполнять внутренние проверки целостности.
Каждый файл на диске в системе NTFS представлен с помощью потоков данных (streams)1, то есть у файла нет «просто данных», а есть «потоки данных». Чтобы правильнее понять эту сущность (поток данных), достаточно знать, что один из потоков имеет привычный нам смысл — это собственно данные файла. Кстати, большинство атрибутов файла (за исключением основных) — это тоже потоки данных. Таким образом, получается, что основой файла является номер записи в таблице MFT, а все остальное, включая его потоки данных, не обязательно. Данный подход довольно удобен. Так, файлу можно назначить еще один поток данных, записав в него любые данные, например информацию об авторе и содержании файла, как это сделано в Windows 2000 (эта информация представлена на одной из вкладок диалогового окна свойств файла). Здесь имеется определенная аналогия с расширенными атрибутами в HPFS. Интересно, что эти дополнительные потоки не видны стандартными средствами для работы с файлами операционной системы: наблюдаемый размер файла — это лишь размер потока основных (традиционных) данных. Можно, к примеру, удалить файл нулевой длины, и при этом освободится несколько мегабайтов свободного места — просто потому, что какая-нибудь «хитрая» программа или технология назначила ему поток дополнительных (альтернативных) данных такого большого размера. Однако на самом деле опасаться
' Не путать с потоками выполнения (threads).
194 Глава 6. Файловые системы
подобных ситуаций не следует (хотя гипотетически они возможны), поскольку пока механизм потоков данных в полной мере не используются. Просто необходимо иметь в виду, что файл в системе NTFS — это более глубокое и глобальное понятие, чем мы себе представляем.
Стандартные атрибуты файлов и каталогов на томе NTFS имеют фиксированные имена и коды типа (табл. 6.7).
Таблица 6.7.Атрибуты файлов в системе NTFS Системный атрибут Описание атрибута
Стандартная Традиционные атрибуты («только для чтения», «скрытый»,
информация о файле «архивный», «системный»), отметки времени, включая время
создания или последней модификации, число каталогов,
ссылающихся на файл
Список атрибутов Список атрибутов файла и файловая ссылка на запись в таблице MFT,
в которой расположен каждый из атрибутов. Файловая ссылка используется, если файлу необходимо более одной записи в MFT
Имя файла Имя файла в кодировке Unicode, файл может иметь несколько имен,
подобно тому как это имеет место в UNIX. Это случается, когда имеется связь POSIX к данному файлу или если у файла есть автоматически сгенерированное имя в формате 8.3
Дескриптор защиты Структура данных, соответствующая списку управления доступом (ACL) и предохраняющая файл от несанкционированного доступа. Дескриптор защиты определяет, кто владелец файла и кто имеет те или иные разрешения доступа к нему
Данные Собственно данные файла, его содержимое. В NTFS у файла
по умолчанию есть один безымянный атрибут данных и могут быть дополнительные именованные атрибуты данных. У каталога нет атрибута данных по умолчанию, но он может иметь необязательные именованные атрибуты данных
Корень индекса, Атрибуты, используемые для индексов имен файлов в больших
размещение индекса, каталогах битовая карта (только для каталогов)
Расширенные Атрибуты, используемые для реализации расширенных атрибутов
атрибуты HPFS HPFS для подсистемы OS/2, а также OS/2-клиентов файл-серверов
Windows NT
Разрешения NTFS
Разрешения NTFS (NTFS permissions) — это набор специальных расширенных атрибутов файла или каталога (папки), заданных для ограничения доступа пользователей к этим объектам. Они имеются только на томах, где установлена файловая система NTFS. Разрешения обеспечивают гибкую защиту, так как их можно применять и к каталогам, и к отдельным файлам; они распространяются как на локальных пользователей (работающих на компьютерах, где находятся защищенные папки и файлы), так и на пользователей, подключающихся к ресурсам по сети.
Файловая система NTFS______________________________________________ 195
Не следует путать разрешения с правами. Это совершенно разные понятия; подробнее об этом написано в подразделе «Модель безопасности Windows NT/2000/ ХР». К сожалению, в технической литературе да и в обиходе часто путают эти термины. Истоком этого прежде всего являются ошибки перевода оригинальных англоязычных материалов.
Разрешения NTFS служат, прежде всего, для защиты ресурсов от локальных пользователей, работающих за компьютером, па котором располагается ресурс. Однако их можно использовать и для удаленных пользователей, подключающихся к общей папке по сети. Очевидно, что в этом случае на пользователей действуют два механизма ограничения в доступе к ресурсам: сначала сетевой, а уже затем локальный, файловый. Поэтому итоговые разрешения на доступ будут определяться как минимальные из сетевых и файловых разрешений. Здесь необходимо сказать, что итоговые сетевые разрешения на доступ к ресурсам, которыми будет обладать пользователь при работе в сети, вычисляются как максимум разрешений в списке разрешений доступа, поскольку пользователь может быть членом нескольких групп, которые упомянуты в списке. Аналогично и для разрешений NTFS: пользователь получает максимальные разрешения, перечисленные в списке управления доступом, и только разрешение No Access (нет доступа)1 может перечеркнуть все остальные разрешения.
Разрешения NTFS обеспечивают высокую избирательность защиты: для каждого файла в папке можно установить свои разрешения. Например, одному пользователю можно позволить считывать и изменять содержимое файла, другому только считывать, третьему вообще запретить доступ. Заметим, однако, что настоятельно рекомендуется устанавливать разрешения в списках ACL, используя не учетные записи отдельных пользователей, а учетные записи групп пользователей.
Итак, каждый файловый объект имеет свой список управления доступом. Этот список имеет приоритет над списком управления доступом того каталога, в котором находится файловый объект. Подобно корневому каталогу файл-каталог, в отличие от простого файла, является объектом контейнерного типа, то есть он может содержать другие файловые объекты. При создании нового файлового объекта он наследует разрешения NTFS. Поэтому при копировании файловых объектов они получают разрешения доступа, совпадающие с родительскими. Однако при перемещении файлов и каталогов в пределах одного диска списки управления доступом не меняются. Объясняется этот факт просто. Списки управления доступом являются одним из потоков данных файлового объекта, и доступ к ним осуществляется через элемент каталога. Поэтому изменение информации о местонахождении файла никак не должно влиять ни на один из потоков данных файла. Если же файлы (и подкаталоги) переместить с одного диска с NTFS на другой, то на новом диске создаются новые элементы каталогов и они должны унаследовать разрешения доступа того контейнера, в котором они создаются. Это очень важное обстоятельство, и при работе с разрешениями NTFS не следует о нем забывать.
' В Windows 2000/XP вместо стандартного разрешения No Access устанавливается запрет (deny) на соответствующее разрешение.
196___________________________________________ Глава 6. Файловые системы
Мы уже упоминали про списки ACL. Они могут быть у многих объектов. В NTFS у каждого файлового объекта на самом деле имеется два списка. Первый называется DACL (Discretionary ACL — дискреционный список управления доступом). Именно этот список описывает ограничения на доступ к файловому объекту, перечисляя группы и пользователей и указывая те операции, которые разрешены и запрещены. Этот список может изменить любой пользователь, имеющий разрешение на изменение разрешений (change permissions) для данного файлового объекта. Такое разрешение обычно обозначается буквой Р (от permissions — разрешения).
Второй список называется SACL (System ACL — системный список управления доступом). Этот список предназначен для аудита, и его могут составлять и редактировать только администраторы системы. Изначально списки SACL пусты, но их можно сформировать. В зависимости от того, успех или отказ в той или иной операции над файловым объектом необходимо проконтролировать, администратор формирует список SACL. Элементами такого списка являются записи типа:
SID - разрешение - успех/отказ
Здесь аббревиатура SID означает Security Identifier (идентификатор безопасности). Напомним, что во многих операционных системах для аутентификации и авторизации пользователей используются учетные записи (см. главы 1 и 11). Учетные записи бывают групповыми и пользовательскими. В системах класса Windows NT (2000/ХР) каждой учетной записи поставлен в однозначное соответствие ее идентификатор (в данном случае — SID).
Обрабатываться элементы списка SACL будут только в том случае, если в системе включен аудит на доступ к файловым объектам. Если в системе разрешен аудит файловых операций, то операционная система при их выполнении сравнивает записи в SACL с запросом и с записями в списке DACL и фиксирует в журнале безопасности соответствующие события.
Нас, прежде всего, должны интересовать списки DACL, которые и определяют разрешения на доступ к файлам и каталогам.
Каждый файловый объект имеет так называемую маску доступа (access mask). Маска доступа включает стандартные (standard), специфичные (specific) и родовые (generic) права доступа. Мы называем их здесь правами, чтобы отличать от тех разрешений, которые перечисляются в пользовательском интерфейсе. - Стандартные права доступа определяют операции, которые являются общими для всех защищенных объектов. Право Read_Control позволяет прочитать информацию из дескриптора безопасности объекта. Право Write_DAC дает возможность изменить дискреционный список прав доступа. Право Write_Owner позволяет записать (изменить) владельца объекта. Право Synchronize дает возможность использовать объект для синхронизации. Наконец, есть право Delete, которое позволяет удалить объект.
- Специфичные права доступа указывают основные права, характерные для файловых объектов. Так, например, специфичные права Read_Data, Write_Data и Append_Data позволяют прочитать данные, записать информацию и, соответственно, добавить данные к файлу. Права Read_Attributes, Write_Attributes
Файловая система NTFS_______________________________________________ 197
и Read_EA, Write_EA позволяют, соответственно, прочитать или записать атрибуты или расширенные атрибуты файла или каталога. Наконец, такое специфичное право доступа, как Execute, позволяет запустить файл на выполнение.
□ Родовые права доступа используются системой; они определяют комбинации стандартных и специфичных прав. Например, родовое право доступа Generic_Read, примененное к файлу, включает в себя следующие специфичные и стандартные права: Read_Control, File_Read_Data, FiLe_Read_Attributes, File_Read_EA, Synchronize.
На основе рассмотренных выше прав доступа, которые используются при программировании, для пользователей, работающих с файлами, создан механизм разрешений. Дело в том, что управлять доступом пользователей к файлам и каталогам на основе маски доступа, то есть путем указания соответствующих битов, неудобно. Поэтому для практического администрирования применяются разрешения NTFS, которые позволяют скрыть от пользователя низкоуровневый механизм прав доступа.
Поскольку операционные системы Windows 2000/XP нынче становятся основными для персональных компьютеров, а в дисциплинах учебного плана многие очень важные вопросы, касающиеся практической работы в этих системах, к сожалению, не изучаются, мы изложим не только основные теоретические вопросы работы с разрешениями NTFS, но и осветим некоторые детали интерфейса.
Итак, разрешения NTFS по-разному представлены в операционных системах Windows NT 4.0 и семействе систем Windows 2000/XP. Отличия эти, прежде всего, касаются интерфейса, то есть программа Проводник (Explorer) по-разному отображает те разрешения, которые на самом деле присвоены файловому объекту в виде разрешений доступа и обрабатываются на программном уровне. Разрешения в Windows 2000/XP ближе к тем специфичным, стандартным и родовым правам доступа, о которых мы говорили выше, однако для управления доступом к файлам они не так удобны, как разрешения Windows NT 4.0.
Для начала рассмотрим механизм разрешений NTFS для систем Windows NT 4.0. Во многих отношениях он является более простым и, соответственно, более понятным.
Дата добавления: 2016-09-20; просмотров: 618;