Урок 2
Предыдущий урок был посвящен работе со встроенной в Windows NT 4.0 системой защиты. С ее помощью для разных групп пользователей устанавливается различный уровень доступа к ресурсам компьютера. Вы узнали, что для работы в Windows NT 4.0 необходимо указать имя и пароль, научились создавать бюджеты пользователей и распределять их по группам, устанавливать права доступа.
На этот раз мы обсудим свойства файловых систем FAT и NTFS. Windows NT 4.0 позволяет выбрать оптимальный для того или иного случая вариант организации данных на магнитном диске. Приведенные далее сведения позволят грамотно использовать эту возможность.
Что такое файловая система?
Под файловой системой понимают средство для организации хранения информации на каком-либо носителе. Но носитель информации - это устройство, которое позволяет производить запись, хранение и считывание информации. Зачем же нужны какие-то дополнительные "средства"? Рассмотрим в качестве примера наиболее распространенный в настоящее время носитель информации - магнитные диски.
Как известно, на дисковых накопителях информация хранится блоками (обычно по 512 байт), и само устройство выполняет лишь команды типа "считать блок номер такой-то". Лет двадцать назад при работе с компьютерами программисты сами, вручную, распределяли пространство на носителях для записи своей информации. Поэтому типичное задание для ЭВМ в переводе на простой язык в то время могло выглядеть так: "прочесть текст, записанный начиная с блока номер 678, отредактировать, а результат записать начиная с блока 376, но не более чем в 8 блоков (потому что в блок 384 уже записана некая важная информация)". После выполнения указанных действий программист делал в своих бумагах запись, что блоки диска с 376 по 383 заняты.
Сейчас вы используете значительно более удобное средство для хранения ваших данных - файл. Вы указываете только имя файла, а то, какие блоки магнитного диска соответствуют этому файлу, решает модуль операционной системы, называемый драйвером файловой системы (File System Driver).
Что происходит, когда пользователь подает в редакторе команду открыть определенный файл (рис. 1)? Для выполнения этой команды редактор направляет запрос операционной системе. В запросе сформулировано задание - считать информацию из файла с заданным именем. Он поступает к драйверу файловой системы. Тот обращается к своему справочнику, выясняет, какие блоки диска соответствуют указанному файлу, а затем передает запрос на считывание этих блоков драйверу диска. При выполнении команды "сохранить файл" у драйвера файловой системы работы еще больше. Необходимо найти на диске незанятые блоки, отметить их, как распределенные для вновь созданного файла и передать драйверу диска запросы на запись в эти блоки данных пользователя.
Итак, драйвер файловой системы представляет собой часть ОС, обеспечивающую, во-первых, доступ к информации, записанной на магнитный диск, по имени файла, а во-вторых, осуществляющую распределение пространства на магнитном диске между файлами. Для выполнения этих функций драйвер файловой системы должен хранить на диске не только информацию пользователя, но и свою собственную служебную, справочную информацию. В служебных областях диска хранится список всех файлов и папок, а также различные дополнительные справочные таблицы, служащие для повышения скорости работы драйвера файловой системы.
Различные операционные системы по-разному организуют служебные области диска. Говорят, что они образуют на диске различные файловые системы. Например, организация данных на диске, принятая в DOS, называется FAT. Благодаря тому что в Windows NT 4.0 драйвер файловой системы является отдельным модулем, эта ОС в принципе может работать с любой файловой системой на диске. В комплект Windows NT 4.0 входит два таких драйвера: для FAT и для новой файловой системы NTFS. Более того, если в одних разделах диска установлена FAT, а в других NTFS, то Windows NT 4.0 загружает в память оба драйвера файловой системы. Когда программа формирует файловый запрос, система, в зависимости от того, какой диск указан в запросе, передает его на обработку соответствующему драйверу файловой системы. В результате файлы, находящиеся как на FAT, так и на NTFS, становятся доступными для программ.
Зачем же нужно использовать различные файловые системы? Не достаточно ли одной, например, проверенной временем FAT? Для того чтобы ответить на этот вопрос, необходимо более детально разобраться, в чем между ними разница, и тогда станет понятно, в каких случаях более приемлема FAT, а в каких NTFS. Но вначале остановимся на том, как выбрать файловую систему.
Как выбрать файловую систему?
Выбор, какая файловая система - FAT или NTFS - формируется в том или ином разделе магнитного диска производится одним из трех способов: во время установки системы, форматированием или конвертированием существующей системы FAT в NTFS.
Во время установки ОС Windows NT 4.0 вы выбираете раздел магнитного диска, куда записываются системные файлы, а затем тип файловой системы в данном разделе. Причем программа установки предложит выбрать одно из следующих действий:
Format the partition using the FAT file system - установить файловую систему FAT (если в этом разделе были файлы, они будут уничтожены);
Format the partition using the NTFS file system - аналогично, установить файловую систему NTFS;
Leave the current file system intact (no changes) - остается прежняя файловая система (FAT или NTFS) и сохраняются имеющиеся файлы;
Convert the partition to NTFS - здесь также сохраняется вся имеющаяся на диске пользовательская информация, но системная информация перегруппировывается так, что файловая система FAT превращается в NTFS.
В процессе работы Windows NT 4.0 установить файловую систему на тот или иной диск можно, отформатировав его. Откройте пиктограмму My Computer, щелкните правой кнопкой на имени диска, который придется форматировать, и выберите в меню команду Format. В появившемся диалоговом окне (рис. 2) обратите внимание на две возможности. Первая - выбрать из ниспадающего списка любую файловую систему. Вторая - установить флажок Quick Format для формирования файловой системы без проверки на читаемость всех блоков диска. Сразу после форматирования диск готов к использованию, перезагрузки системы не требуется.
Наконец имеется возможность преобразовать существующую файловую систему FAT в NTFS. Преобразование происходит быстро и без потери данных, уже находящихся на диске. Но учтите, что обратно от NTFS к FAT вернуться так просто не удастся.
Преобразование осуществляется командой convert в режиме командной строки. Например, для преобразования файловой системы FAT, находящейся на диске D, следует дать команду
convert d: /fs:ntfs
Если ни одна из программ в данный момент этот диск не использует, произойдет захват диска, конвертирование файловой системы, а затем его освобождение. Система при этом не останавливается, однако все последующие файловые запросы к тому диску будет обрабатывать уже не драйвер FAT, а драйвер NTFS. Если же диск не может быть захвачен, он будет только отмечен для последующего преобразования. Реально, конвертирование произойдет при следующей загрузке ОС.
Сравнение FAT и NTFS
Для того чтобы сравнить свойства файловых систем, произведем небольшой эксперимент, показывающий, как эти системы используют пространство магнитного диска.
Один и тот же диск размером в 606 Мбайт отформатируем сначала под FAT, затем под NTFS. Сразу после этого пространство, доступное для размещения файлов, составит 605,8 и 601,7 Мбайт, соответственно. Как видим, FAT оставляет для данных пользователя на 4 Мбайт больше - разница, связанная с тем, что системные области NTFS изначально занимают больше места, чем системные области FAT. Следовательно, на небольшие диски рациональнее устанавливать файловую систему FAT. Более того, поскольку минимальный размер дискового пространства, резервируемый NTFS под свои нужды, составляет 1,2 Мбайт, дискеты вообще невозможно отформатировать под NTFS.
Попробуем теперь заполнить данный диск информацией. Например, перенесем на него папку I386 с дистрибутива Windows NT 4.0 (это около трех тысяч файлов), после чего на диске останется 488,6 Мбайт свободного пространства на файловой системе FAT и 516,5 Мбайт на NTFS. Теперь разница составляет 28 Мбайт в пользу последней файловой системы! Такой выигрыш объясняется большим размером кластера файловой системы FAT (в данном случае 16 Кбайт), так что на каждом записанном на этот диск файле теряется в среднем 8 Кбайт дискового пространства. В целом можно сказать, что чем больше диск, тем менее эффективно его использует FAT.
Скорость выполнения различных операций двух файловых систем в целом сопоставимы между собой. Алгоритмы, заложенные в NTFS гораздо эффективнее, и когда в каталоге содержится большое количество файлов, ее скорость в сравнении с FAT выше. Правда, одна особенность этой файловой системы несколько замедляет ее функционирование, но зато дает огромное преимущество, называемое отказоустойчивостью, или устойчивостью к сбоям. Мы говорим о механизме регистрации транзакций при выполнении операций, связанных с распределением дискового пространства. Дело в том, что при этом необходимо согласованно изменять содержимое различных системных таблиц, хранящихся на диске. Если же до полного окончания операции произойдет сбой в работе ОС (например, сбой питания компьютера), то файловая система может разрушиться. Дело осложняется еще и тем, что завершение операции порою занимает много времени, поскольку часто используемая справочная информация файловой системы остается надолго только в памяти компьютера, но не на магнитном диске. Регистрация транзакции в NTFS состоит в том, что на диск делается короткая запись об операции, позволяющая в случае сбоя произвести самовосстановление файловой системы. В результате NTFS оказывается практически нечувствительна к сбоям в питании компьютера.
Эффективность при работе с большими дисками, отказоустойчивость, конечно же, существенное преимущество, но, пожалуй, не самое главное. Гораздо важнее то, что каждый файл на NTFS имеет более богатый набор свойств. Свойства файла или папки можно увидеть, щелкнув на имени файла правой кнопкой и выбрав из меню пункт Properties. Пример окна со свойствами файла, находящегося на NTFS, изображен на рис. 3. Будет хорошо, если вы самостоятельно сравните его со свойствами файла на FAT. Вы нашли четыре отличия? В частности, эти отличия заключаются в том, что пользователь может управлять такими свойствами, как признак Compressed, имя владельца и список прав доступа.
Сжатие "на лету"
Когда говорят, что операционная система MS-DOS работает только с файловой системой FAT, это не совсем верно. Драйвер DRVSPACE, используемый для хранения данных в сжатом, упакованном виде, также является драйвером файловой системы. За счет DRVSPACE в DOS удается преодолеть такой недостаток FAT, как нерациональное использование пространства больших дисков. Windows NT 4.0 не поддерживает работу с дисками DRVSPACE, но NTFS предоставляет даже более гибкое средство. В этой файловой системе в списке свойств каждого файла имеется флажок Compressed (см. рис. 3); установка флажка приводит к тому, что драйвер файловой системы NTFS при записи в данный файл сжимает записываемую информацию (подобно известным архиваторам arj или pkzip), а при считывании восстанавливает ее. Небольшое задание: изучите рисунок и выясните, сколько места на магнитном диске занимает содержимое данного 321-килобайтного файла. Общее между этой возможностью NTFS и DRVSPACE то, что на упаковку и распаковку расходуется некоторое количество процессорного времени. Но в Windows NT 4.0 пользователь может указывать необходимость сжатия информации индивидуально для каждого файла, что дает значительно бо"льшую гибкость.
Установка флажка Compressed для папки означает сжатие всех существующих и вновь создаваемых в данной папке файлов. Соответственно, установка Compressed на диск приведет к сжатию всех файлов на этом диске.
Права доступа к файлу
Для файла на NTFS окно свойств имеет две закладки. Если на второй из них (Security) нажать кнопку Permissions, появится диалоговое окно для управления правами пользователей на доступ к данному файлу. В списке прав доступа каждая строка содержит некоторое разрешение или запрет для одного из пользователей или для группы (см. рис. 4). Список прав доступа для файла format.bmp имеет вид:
Administrators Full Control (All)
Everyone Read (RX)
Son (Костя) Change (RWXD)
Эти три строки указывают, что все пользователи (Everyone) имеют право читать из файла (Read), Костя (пользователь с бюджетом Son) может еще и изменять его (Change), а члены группы Administrators могут делать с ним все что угодно (Full Control). В этом примере перечислены все стандартные разрешения (Read, Change, Full Control), но в списке прав доступа в какой-либо из строк можно установить и запрет на доступ (No Access).
Когда запущенная пользователем программа пытается открыть файл для чтения или записи в него данных, Windows NT 4.0 использует список прав доступа для того, чтобы либо разрешить, либо запретить выполнение этой операции. Принимая решение, система просматривает список прав доступа строка за строкой и "складывает" разрешения из всех тех строк, где фигурирует бюджет пользователя или группа, в которую тот входит. Так, если в одной строке записано, что пользователь может читать из файла, а в другой, что может писать, то система разрешит и чтение, и запись. Однако если система встречает запрет на доступ (No Access), то он интерпретируется как исключение из общего правила, и в этом случае в доступе будет отказано.
Как вы думаете, что означают буквы (RWXD) после наименования типа доступа? Это обозначения для элементарных прав доступа. Дело в том, что четырьмя стандартными типами доступа - No Access, Read, Change, Full Control - перечень вариантов не ограничивается. В действительности разрешения строятся из отдельных элементарных прав. Всего их шесть, обозначаются они с помощью латинских букв и соответствуют разрешению выполнять следующие операции:
"R" (Read) - читать из файла,
"W" (Write) - записать в файл,
"X" (eXecute) - запустить исполняемый код из файла,
"D" (Delete) - уничтожить файл,
"P" (change Permissions) - изменить права доступа к файлу,
"O" (take Ownership) - стать владельцем файла.
При помощи пункта Special Access... вы можете задать любую комбинацию элементарных прав доступа. Например, для того чтобы запретить копирование вашей программы, установите на exe-файл только право "X". Ваши коллеги смогут запускать ее, но не смогут создавать ее копию.
Владелец файла
Список прав доступа к файлу поменять легко, но это не всегда кстати. Неопытный пользователь может случайно, или в качестве эксперимента полностью закрыть доступ к файлу. Достаточно очистить список прав доступа при помощи кнопки Remove и после этого нажать OK. Здорово! Никто, даже администратор, теперь не узнает содержимое файла, ни у кого нет прав удалять этот файл. Но как вернуть все назад? Или на диске так и останется бессмертная "черная дыра"?
Для решения данной проблемы у каждого файла на файловой системе NTFS имеется "владелец" (owner). Например, владелец файла format.bmp (рис. 4) имеет имя Administrators. У владельца файла по сравнению с остальными пользователями есть только одна, но существенная привилегия: он всегда может управлять правами доступа к файлу. Иными словами, он неявно обладает правом "P". Поэтому, даже если список прав по какой-то причине разрушен, владелец файла способен его восстановить и тем самым восстановить доступ к файлу.
Владельцем файла является тот, кто этот файл создал. Например, если вы копируете файл в свой каталог, то владельцем файла-копии вы и являетесь независимо от того, кто был владельцем файла-оригинала. Есть только одна операция в Windows NT 4.0, которая изменяет владельца файла. Она называется "стать владельцем" (take Ownership). Право выполнять данную операцию является элементарным правом и обозначается буквой "O".
Администратор Windows NT 4.0 точно так же подчиняется правилам системы защиты, как и все остальные пользователи. Например, если в первой строке списка прав доступа файла format.bmp для группы Administrators вместо Full Control будет указано No Access, то администратор не сможет узнать его содержимое. Тем не менее одна привилегия у него все же есть - администратор Windows NT 4.0 всегда может стать владельцем любого файла, а значит, все же получить к нему доступ. Правда, тут придется потрудиться. В данном случае администратор, во-первых, выполняет для указанного файла операцию "стать владельцем" (в окне свойств выбрать закладку Security и нажать кнопку Ownership). Во-вторых, как владелец он изменяет права доступа и возвращает в первой строке тип доступа Full Control. И наконец, пользуется полученными правами: выполняет команду Quick View и убеждается, что в этом файле содержится картинка, изображенная на рис. 2.
Права папок
Так же как и для файлов, с каждой папкой диска, который обслуживается драйвером файловой системы NTFS, и даже с самим диском связан список прав доступа. Однако для папок список прав доступа имеет более сложную структуру. Рассмотрим рис. 5. Во-первых, обращает на себя внимание более длинный список различных типов доступа. Но посмотрите, например, на третью строку в списке прав доступа к папке D:Temp:
Everyone Change (RWXD) (RWXD)
Почему аббревиатура (RWXD) повторяется здесь дважды? Потому, что вместе с папкой хранятся сразу два списка прав доступа. Первый из них определяет права на доступ к списку файлов. При этом используются те же самые элементарные права, обозначаемые буквами "R" (получение списка файлов в папке), "W" (добавление, переименование, уничтожение файлов в папке), "X" (открытие вложенной папки), "D" (уничтожение папки), "P" и "O". Второй же список прав доступа является "наследством", которое передается всем создаваемым в этой папке файлам.
Рассмотрим, например, что будет, если Костя станет работать с папкой, для которой установлен тип доступа
Everyone Add & Read (RWX) (RX)
Первая группа элементарных прав (RWX) говорит о том, что все пользователи могут просматривать содержимое папки и помещать в нее новые файлы. Предположим, Костя выполнил в редакторе Paint команду "Сохранить" (Save As) и произвел запись в папку файла game.bmp. Права доступа для вновь созданного файла будут получены по наследству и установлены так:
Everyone Read (RX)
В результате всем, включая и самого Костю, разрешено лишь просматривать содержимое файла, но не редактировать его. Заметим, однако, что владелец файла по-прежнему Костя, а значит, он может любым образом изменить права доступа к нему. Добавить, например, себе право уничтожить этот файл.
Итак, приведенная в качестве примера папка обладает тем свойством, что каждому разрешается положить туда файлы, но убирать или переименовывать можно только свои.
Приведем еще один более практичный пример. Пусть для папки D:Common установлены следующие права доступа:
CREATOR OWNER Full Control (All) (All)
Everyone Special Access (RWX) (Not specified)
Во второй строке указано, что все пользователи могут добавлять файлы в эту папку, а в первой строке использовано специальное имя CREATOR OWNER, которое обозначает права "на предъявителя". В процессе наследования CREATOR OWNER превращается в имя пользователя, выполняющего операцию. Например, созданный Костей файл D:Common fs.bmp получит список прав доступа из одной строки:
Son (Костя) Full Control (All)
Как видите, к файлам, помещаемым в папку несколькими пользователями смогут обращаться только владельцы этих файлов. А теперь вопрос для самоконтроля. Как сделать так, чтобы администратор системы всегда мог проанализировать содержимое данной папки и в случае необходимости почистить ее?
Наконец задание для самостоятельной работы: выясните, какие права доступа к файлам устанавливаются по умолчанию (для этого достаточно посмотреть на список прав доступа к диску, на котором установлена NTFS). Еще один рекомендуемый эксперимент: что происходит с правами при копировании и перемещении файлов?
Заключение
И все же, какая файловая система лучше? Думается, на разделах диска больше 120 Мбайт по всем показателям лучше NTFS. Хотя бы потому, что за счет меньшего размера кластера и возможности сжатия файлов, она более экономно использует дисковое пространство. NTFS ничуть не уступает FAT в производительности и обладает свойством отказоустойчивости. Только NTFS позволяет устанавливать различные права на доступ к файлу или папке для различных пользователей.
Пожалуй, единственным недостатком NTFS является то, что с этой файловой системой умеет работать только Windows NT 4.0. И здесь надо быть осторожным. Если вы на компьютере с DOS или Windows 95 в качестве эксперимента установили Windows NT 4.0, две операционные системы мирно сосуществуют между собой. Вам не понравилась новая система - нет проблем, удаляйте ее с жесткого диска. Понравилась и вы хотите задействовать все ее возможности - запускайте convert и преобразовывайте на системном диске FAT в NTFS. Но помните - с этого момента возврата уже нет! Теперь, для того чтобы вернуться к DOS, необходимо заново отформатировать весь диск.
Василий Сергеевич Люцарев - научный руководитель учебного центра компании "Весть". Контактный тел.: (095)115-60-01.