Мегаобучалка Главная | О нас | Обратная связь


Реализация прав доступа в UNIX



2018-07-06 417 Обсуждений (0)
Реализация прав доступа в UNIX 0.00 из 5.00 0 оценок




• С каждым процессом UNIX связаны два идентификатора: пользователя, от имени которого был создан этот процесс, и группы, к которой принадлежит данный пользователь. Эти идентификаторы носят название реальных идентификаторов пользователя:RealUser ID, RUID и реальных идентификаторов группы:RealGroup ID, RGID.

• При проверке прав доступа к файлу используются так называемые эффективные идентификаторы пользователя:EffectiveUser ID, EUID и эффективные идентификаторы группы:EffectiveGroup ID, EGID.

• Файл имеет два признака разрешения смены идентификатора — SetUser ID onexecution (SUID) и SetGroup ID onexecution (SGID), которые разрешают смену идентификаторов пользователя и группы при выполнении данного файла.

 

Файловая система NTFS

Основными отличительными свойствами NTFS являются:

1. поддержка больших файлов и больших дисков объемом до 264 байт;

2. восстанавливаемость после сбоев и отказов программ и аппаратуры управления дисками за счет ведения журнала (журналирование);

3. высокая скорость операций, в том числе и для больших дисков;

4. низкий уровень фрагментации, в том числе и для больших дисков;

5. гибкая структура, допускающая развитие за счет добавления новых типов записей и атрибутов файлов с сохранением совместимости с предыдущими версиями ФС;

6. устойчивость к отказам дисковых накопителей;

7. поддержка длинных символьных имен;

8. контроль доступа к каталогам и отдельным файлам.

Структура тома NTFS

В отличие от разделов FAT и s5/ufs все пространство тома NTFS представляет собой либо файл, либо часть файла. Основой структуры тома NTFS является главная таблица файлов (MasterFileTable, MFT), которая содержит по крайней мере одну запись для каждого файла тома, включая одну запись для самой себя (рис 7. 11). Каждая запись MFT имеет фиксированную длину, зависящую от объема диска, - 1,2 или 4 Кбайт. Для большинства дисков, используемых сегодня, размер записи MFT равен 2 Кбайт, который мы далее будем считать размером записи по умолчанию.

Все файлы на томе NTFS идентифицируются номером файла, который определяется позицией файла в MFT. Этот способ идентификации файла близок к способу, используемому в файловых системах s5 и ufs, где файл однозначно идентифицируется номером его записи в области индексных дескрипторов.

В WindowsNT логический раздел принято называть томом. Весь том NTFS состоит из последовательности кластеров, что отличает эту файловую систему от рассмотренных ранее, где на кластеры делилась только область данных. Порядковый номер кластера в томе NTFS называется логическим номером кластера (LogicalClusterNumber, LCN). Файл NTFS также состоит из последовательности кластеров, при этом порядковый номер кластера внутри файла называется виртуальным номером кластера (VirtualClusterNumber, VCN).

 

Рис. 7. 11. Структура тома NTFS

Базовая единица распределения дискового пространства для файловой системы NTFS- непрерывная область кластеров, называемая отрезком.

В качестве адреса отрезка NTFS использует логический номер его первого кластера, а также количество кластеров в отрезке k, то есть пара (LCN, k). Таким образом, часть файла, помещенная в отрезок и начинающаяся с виртуального кластера VCN, характеризуется адресом, состоящим из трех чисел: (VCN, LCN, k).

Для хранения номера кластера в NTFS используются 64-разрядные указатели, что дает возможность поддерживать тома и файлы размером до 264 кластеров. При размере кластера в 4 Кбайт это позволяет использовать тома и файлы, состоящие из 64 миллиардов килобайт.

Загрузочный блок тома NTFS располагается в начале тома, а его ко-пия- в середине тома. Загрузочный блок содержит стандартный блок параметров BIOS, количество блоков в томе, а также начальный логический номер кластера основной копии MFT и зеркальную копию MFT.

Далее располагается первый отрезок MFT, содержащий 16 стандартных, создаваемых при форматировании, записей о системных файлах NTFS. Назначение этих файлов описано в табл. 3.

Таблица 3

Имя Описание
$MFT Сам MFT
$MFTmirr Зеркальная копия первых трех записей MFT
$LogFile Список транзакций, который используется для восстановления файловой системы после сбоев
$Volume Имя тома, версия NTFS и другая информация о томе
$AttrDef Таблица имен, номеров и описаний атрибутов
$. Индекс корневого каталога
$Bitmap Битовая карта кластеров
$Boot Загрузочный сектор раздела
$BadClus Файл плохих кластеров
$Quota Таблица квот
$Upcase Таблица преобразования регистра символов для кодировки Unicode
11 - 15 Зарезервированы для будущего использования Не используется

 

Структура файлов NTFS

В NTFS файл целиком размещается в записи таблицы MFT, если это позволяет сделать его размер. В том же случае, когда размер файла больше размера записи MFT, в запись помещаются только некоторые атрибуты файла, а остальная часть файла размещается в отдельном отрезке тома (или нескольких отрезках). Часть файла, размещаемая в записи MFT, называется резидентной частью, а остальные части -нерезидентными.

Адресная информация об отрезках, содержащих нерезидентные части файла, размещается в атрибутах резидентной части.

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

Каждый файл и каталог на томе NTFS состоит из набора атрибутов. Важно отметить, что имя файла и его данные также рассматриваются как атрибуты файла, то есть в трактовке NTFS, кроме атрибутов, у файла нет никаких других компонентов.

Каждый атрибут файла NTFS состоит из полей: тип атрибута, длина атрибута, значение атрибута и, возможно, имя атрибута. Тип атрибута, длина и имя образуют заголовок атрибута.

Имеется системный набор атрибутов, определяемых структурой тома NTFS. Системные атрибуты имеют фиксированные имена и коды их типа, а также определенный формат. Могут применяться также атрибуты, определяемые пользователями. Их имена, типы и форматы задаются исключительно пользователем. Атрибуты файлов упорядочены по убыванию кода атрибута, причем атрибут одного и того же типа может повторяться несколько раз. Существуют два способа хранения атрибутов файла - резидентное хранение в записях таблицы MFT и нерезидентное хранение вне ее, во внешних отрезках. Таким образом, резидентная часть файла состоит из резидентных атрибутов, а нерезидентная - из нерезидентных атрибутов. Сортировка может осуществляться только по резидентным атрибутам.

Системный набор включает следующие атрибуты:

- AttributeList (список атрибутов) -список атрибутов, из которых состоит файл; содержит ссылки на номер записи MFT, где расположен каждый атрибут; этот редко используемый атрибут нужен только в том случае, если атрибуты файла не умещаются в основной записи и занимают дополнительные записи MFT;

- FileName (имя файла) - этот атрибут содержит длинное имя файла в формате Unicode, а также номер входа в таблице MFT для родительского каталога; если этот файл содержится в нескольких каталогах, то у него будет несколько атрибутов типа FileName; этот атрибут всегда должен быть резидентным;

- MS-DOSName (имя MS-DOS) -этот атрибут содержит имя файла в формате 8.3;

- Version (версия) -атрибут содержит номер последней версии файла;

- SecurityDescriptor (дескриптор безопасности) - этот атрибут содержит информацию о защите файла: список прав доступа (AccessControl
List – ACL) и поле аудита, которое определяет, какого рода операции над этим файлом нужно регистрировать;

- VolumeVersion (версия тома) - версия тома, используется только в системных файлах тома;

- VolumeName (имя тома) -имя тома;

- Data (данные) – содержит обычные данные файла;

- MFTbitmap (битовая карта MFT) - этот атрибут содержит карту использования блоков на томе;

- IndexRoot (корень индекса) -корень В-дерева, используемого для поиска файлов в каталоге;

- IndexAllocation (размещение индекса) -нерезидентные части индексного списка В-дерева;

- StandardInformation (стандартная информация) -этот атрибут хранит всю остальную стандартную информацию о файле, которую трудно связать с ка­ким-либо из других атрибутов файла, например, время создания файла, вре­мя обновления и другие.

Файлы NTFS в зависимости от способа размещения делятся на небольшие, большие, очень большие и сверхбольшие.

Небольшие файлы (small). Если файл имеет небольшой размер, то он может целиком располагаться внутри одной записи MFT, имеющей, например, размер 2 Кбайт. Небольшие файлы NTFSсостоят по крайней мере из следующих атрибутов:

- стандартнаяинформация (SI - standard information);

- имяфайла (FN - file name);

- данные (Data);

- дескрипторбезопасности (SD - security descriptor).

Из-за того что файл может иметь переменное количество атрибутов, а также из-за переменного размера атрибутов нельзя наверняка утверждать, что файл уместится внутри записи. Однако обычно файлы размером менее 1500 байт помещаются внутри записи MFT (размером 2 Кбайт).

Рис. 7.20.Небольшой файл NTFS

 

Большие файлы (large). Если данные файла не помещаются в одну запись MFT, то этот факт отражается в заголовке атрибута Data, который содержит признак того, что этот атрибут является нерезидентным, то есть находится в отрезках вне таблицы MFT. В этом случае атрибут Dataсодержит адресную информацию (LCN, VCN, k) каждого отрезка данных.

Рис. 7.21. Большой файл

Очень большие файлы (huge). Если файл настолько велик, что его атрибут данных, хранящий адреса нерезидентных отрезков данных, не помещается в одной записи, то этот атрибут помещается в другую запись MFT, а ссылка на такой атрибут помещается в основную запись файла (рис. 7.22). Эта ссылка содержится в атрибуте AttributeList. Сам атрибут данных по-прежнему содержит адреса нерезидентных отрезков данных.

 

Рис. 7.22.Очень большой файл

Сверхбольшие файлы (extremelyhuge). Для сверхбольших файлов в атрибуте AttributeList можно указать несколько атрибутов, расположенных в дополнительных записях MFT (рис. 7.23). Кроме того, можно использовать двойную косвенную адресацию, когда нерезидентный атрибут будет ссылаться на другие нерезидентные атрибуты, поэтому в NTFS не может быть атрибутов слишком большой для системы длины.

 

Рис. 7.23. Сверхбольшой файл

 

5. 7. 3. Каталоги NTFS

 

Каждый каталог NTFS представляет собой один вход в таблицу MFT, который содержит атрибут IndexRoot. Индекс содержит список файлов, входящих в каталог. Индексы позволяют сортировать файлы для ускорения поиска, основанного на значении определенного атрибута. Обычно в файловых системах файлы сортируются по имени. NTFS позволяет использовать для сортировки любой атрибут, если он хранится в резидентной форме. Имеются две формы хранения списка файлов.

Небольшие каталоги (smallindexes). Если количество файлов в каталоге невелико, то список файлов может быть резидентным в записи в MFT, являющейся каталогом (рис. 5. 14).

 

 

Рис. 7. 12. Небольшой каталог

 

Для резидентного хранения списка используется единственный атрибут -IndexRoot. Список файлов содержит значения атрибутов файла. По умолчанию – это имя файла, а также номер записи MTF, содержащей начальную запись файла.

Большие каталоги (largeindexes). По мере того как каталог растет, список файлов может потребовать нерезидентной формы хранения. Однако начальная часть списка всегда остается резидентной в корневой записи каталога в таблице MFT. Имена файлов резидентной части списка файлов являются узлами так называемого В-дерева (двоичного дерева). Остальные части списка файлов размещаются вне MFT. Для их поиска используется специальный атрибут IndexAllocation, представляющий собой адреса отрезков, хранящих остальные части списка файлов каталога. Одни части списков являются листьями дерева, а другие являются промежуточными узлами, то есть содержат наряду с именами файлов атрибут IndexAllocation, указывающий на списки файлов более низких уровней.

Узлы двоичного дерева делят весь список файлов на несколько групп. Имя каждого файла-узла является именем последнего файла в соответствующей группе. Считается, что имена файлов сравниваются лексикографически, то есть сначала принимаются во внимание коды первых символов двух сравниваемых имен. При этом имя считается меньшим, если код его первого символа имеет меньшее арифметическое значение. При равенстве кодов первых символов сравниваются коды вторых символов имен и т. д. Например, файл f1.exe, являющийся первым узлом двоичного дерева (поле IR), показанного на рис. 5. 15, имеет имя, лексикографически большее имен avia.exe, az.exe,... , emax.exe, образующих первую группу списка имен каталога. Соответственно файл ltr.exe имеет наибольшее имя среди всех имен второй группы, а все файлы с именами, большими ltr.exe, образуют третью и последнюю группу.

Рис. 7.25. Большой каталог

 

Поиск в каталоге уникального имени файла, которым в NTFS является номер основной записи о файле в MFT, по его символьному имени происхо­дит следующим образом. Сначала искомое символьное имя сравнивается с именем первого узла в резидентной части индекса. Если искомое имя меньше, то это означает, что его нужно искать в первой нерезидентной группе, для чего из атрибута IndexAllocationизвлекается адрес отрезка (VCNj, LCNj, Kj), хранящего имена файлов первой группы. Среди имен этой группы поиск осуществляется прямым перебором имен и сравнением до пол­ного совпадения всех символов искомого имени с хранящимся в каталоге именем. При совпадении из каталога извлекается номер основной записи о файле в MFT и остальные характеристики файла берутся уже оттуда.

Если же искомое имя больше имени первого узла резидентной части ин­декса, то его сравнивают с именем второго узла, и если искомое имя меньше, то описанная процедура применяется ко второй нерезидентной группе имен, и т. д. В результате вместо перебора большого количества имен (в худшем случае - всех имен каталога) выполняется сравнение с гораздо меньшим ко­личеством имен узлов и имен в одной из групп каталога.

Если одна из групп каталога становится слишком большой, то ее также делят на группы, последние имена каждой новой группы оставляют в исход­ном нерезидентном атрибуте IndexRoot, а все остальные имена новых групп переносят в новые нерезидентные атрибуты типа IndexRoot(на рисунке этот случай не показан). К исходному нерезидентному атрибуту IndexRootдобав­ляется атрибут размещения индекса, указывающий на отрезки индекса новых групп. Если теперь при поиске искомого имени в нерезидентной части ин­декса первого уровня какое-либо сравнение показывает, что искомое имя оказывается меньше, чем одно из хранящихся там имен, то это говорит о том, что в данном атрибуте точного сравнения имени уже быть не может и нужно перейти к подгруппе имен следующего уровня дерева.

 



2018-07-06 417 Обсуждений (0)
Реализация прав доступа в UNIX 0.00 из 5.00 0 оценок









Обсуждение в статье: Реализация прав доступа в UNIX

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (417)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)