Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Для студентов дистанционной формы обучения
специальности 220200 Автоматизированные системы обработки
информации и управления
Екатеринбург 2005
УДК 681.3.06
Составитель О.М. Зверева
Научный редактор: д-р техн. наук Л.Г. Доросинский
Операционные системы. Конспект лекций. Ч.5: Файловые системы UNIX и NTFS 5.0. Контроль доступа к файлам / О.М. Зверева. Екатеринбург: Изд-во УГТУ, 2005.
В книге приведено описание структуры файловой системы в ОС UNIX. Рассмотрены общие вопросы контроля доступа к файлам и каталогам. Затем контроль доступа к файлам описан на примере файловых систем в ОС UNIX и в файловой системе NTFS 5.0.
Библиогр.: 4 назв. Табл. 11. Рис. 24.
Подготовлено кафедрой «Автоматизированные системы управления».
ГОУ ВПО «Уральский Государственный Технический
Университет»-УПИ, 2005г.
Файловая система UNIX характеризуется:
Файловая система организована в виде дерева с одной исходной вершиной, которая называется корнем (записывается: "/"); каждая вершина в древовидной структуре файловой системы, кроме листьев, является каталогом файлов, а файлы, соответствующие дочерним вершинам, являются либо каталогами, либо обычными файлами, либо файлами устройств. Имени файла предшествует указание пути поиска, который описывает место расположения файла в иерархической структуре файловой системы наклонной чертой (/).
Имя пути поиска необязательно должно начинаться с корня, так же как и в системах Windows, можно указывать маршрут относительно текущего для выполняемого процесса каталога, при этом предыдущие символы «наклонная черта» в имени пути опускаются. Так, например, если мы находимся в каталоге "/dev", то путь "tty01" указывает файл, полное имя пути поиска для которого "/dev/tty01". Так же как и в Windows, вы можете использовать символы . (точка) для текущего каталога и .. (две точки) для родительского каталога. Как увидите дальше в описании каталогов, записи для этих символов включены в каждый каталог.
Программы, выполняемые под управлением системы UNIX, не содержат никакой информации относительно внутреннего формата, в котором ядро хранит файлы данных, данные в программах представляются как бесформатный поток байтов. Программы могут интерпретировать поток байтов по своему желанию, при этом любая интерпретация никак не будет связана с фактическим способом хранения данных в операционной системе. Так, синтаксические правила, определяющие задание метода доступа к данным в файле, устанавливаются системой и являются едиными для всех программ, однако семантика данных определяется конкретной программой. Например, программа форматирования текста troff ищет в конце каждой строки текста символы перехода на новую строку, а программа учета системных ресурсов acctcom работает с записями фиксированной длины.
Обе программы пользуются одними и теми же системными средствами для осуществления доступа к данным в файле как к потоку байтов, и внутри себя преобразуют этот поток по соответствующему формату. Если любая из программ обнаружит, что формат данных неверен, она принимает соответствующие меры.
Каталоги похожи на обычные файлы в одном отношении; система представляет информацию в каталоге набором байтов, но эта информация включает в себя имена файлов в каталоге в объявленном формате для того, чтобы операционная система и программы, такие как ls (выводит список имен и атрибутов файлов), могли их обнаружить. Права доступа к файлу регулируются установкой специальных битов разрешения доступа, связанных с файлом. Устанавливая биты разрешения доступа, можно независимо управлять выдачей разрешений на чтение, запись и выполнение для трех категорий пользователей: владельца файла, группового пользователя и прочих. Пользователи могут создавать файлы, если разрешен доступ к каталогу. Вновь созданные файлы становятся листьями в древовидной структуре файловой системы.
Для пользователя система UNIX трактует устройства так, как если бы они были файлами. Устройства, для которых назначены специальные файлы устройств, становятся вершинами в структуре файловой системы. Обращение программ к устройствам имеет тот же самый синтаксис, что и обращение к обычным файлам; семантика операций чтения и записи по отношению к устройствам в большой степени совпадает с семантикой операций чтения и записи обычных файлов. Способ защиты устройств совпадает со способом защиты обычных файлов: путем соответствующей установки битов разрешения доступа к ним (файлам). Поскольку имена устройств выглядят так же, как и имена обычных файлов, и поскольку над устройствами и над обычными файлами выполняются одни и те же операции, большинству программ нет необходимости различать внутри себя типы обрабатываемых файлов.
Внутреннее представление файла описывается в индексе, который содержит описание размещения информации файла на диске и другую информацию, такую как владелец файла, права доступа к файлу и время доступа. Термин «индекс», или «индексный дескриптор», (inode) широко используется в литературе по системе UNIX. Каждый файл имеет один индекс, но может быть связан с несколькими именами, которые все отражаются в индексе. Каждое имя является указателем. Когда процесс обращается к файлу по имени, ядро системы анализирует по очереди каждую компоненту имени файла, проверяя права процесса на просмотр входящих в путь поиска каталогов, и в конце концов возвращает индекс файла.
Например, если процесс обращается к системе:
open("/fs2/mjb/rje/sourcefile", 1);
ядро системы возвращает индекс для файла "/fs2/mjb/rje/sourcefile". Если процесс создает новый файл, ядро присваивает этому файлу неиспользуемый индекс. Индексы хранятся в файловой системе (и это мы еще увидим), однако при обработке файлов ядро заносит их в таблицу индексов в оперативной памяти.
Ядро поддерживает еще две информационные структуры, таблицу файлов и пользовательскую таблицу дескрипторов файла. Таблица файлов выступает глобальной структурой ядра, а пользовательская таблица дескрипторов файла выделяется под процесс. Если процесс открывает или создает файл, ядро выделяет в каждой таблице элемент, корреспондирующий с индексом файла. Элементы в этих трех структурах - в пользовательской таблице дескрипторов файла, в таблице файлов и в таблице индексов - хранят информацию о состоянии файла и о доступе пользователей к нему. В таблице файлов хранится смещение в байтах от начала файла до того места, откуда начнет выполняться следующая команда пользователя read или write, а также информация о правах доступа к открываемому процессу. Таблица дескрипторов файла идентифицирует все открытые для процесса файлы. На рис.15. 1 показаны таблицы и связи между ними.
Обычные файлы и каталоги хранятся в системе UNIX на устройствах ввода-вывода, таких как магнитные ленты или диски блоками. Для простоты, тем не менее, в последующем тексте подразумевается использование дисков. В системе может быть несколько физических дисков, на каждом из которых может размещаться одна и более файловых систем. Разбивка диска на несколько файловых систем облегчает администратору управление хранимыми данными. На логическом уровне ядро имеет дело с файловыми системами, а не с дисками, при этом каждая система трактуется как логическое устройство, идентифицируемое номером. Преобразование адресов логического устройства (файловой системы) в адреса физического устройства (диска) и обратно выполняется дисковым драйвером. Термин «устройство» в этой главе используется для обозначения логического устройства, кроме специально оговоренных случаев.
Файловая система состоит из последовательности логических блоков длиной 512, 1024, 2048 или другого числа байт, кратного 512, в зависимости от реализации системы. Размер логического блока внутри одной файловой системы постоянен, но может варьироваться в разных файловых системах в данной конфигурации. Использование логических блоков большого размера увеличивает скорость передачи данных между диском и памятью, поскольку ядро сможет передать больше информации за одну дисковую операцию, и сокращает количество продолжительных операций. Например, чтение 1 кбайта с диска за одну операцию осуществляется быстрее, чем чтение 512 байт за две. Однако, если размер логического блока слишком велик, полезный объем памяти может уменьшиться, это будет показано далее. Для простоты термин «блок» будет использоваться для обозначения логического блока, при этом подразумевается логический блок размером 1 кбайт, кроме специально оговоренных случаев.
В общем случае файловая система имеет структуру, показанную на рис.15.2
Блок загрузки располагается в начале пространства, отведенного под файловую систему, обычно в первом секторе, и содержит программу начальной загрузки, которая считывается в машину при загрузке или инициализации операционной системы. Хотя для запуска системы требуется только один блок загрузки, каждая файловая система имеет свой (пусть даже пустой) блок загрузки.
Суперблок описывает состояние файловой системы - какого она размера, сколько файлов может в ней храниться, где располагается свободное пространство, доступное для файловой системы, и другая информация.
Список индексов в файловой системе располагается вслед за суперблоком. Администраторы указывают размер списка индексов при генерации файловой системы. Ядро операционной системы обращается к индексам, используя указатели в списке индексов. Один из индексов является корневым индексом файловой системы: это индекс, по которому осуществляется доступ к структуре каталогов файловой системы после выполнения системной операции mount (монтировать).
Информационные блоки располагаются сразу после списка индексов и содержат данные файлов и управляющие данные. Отдельно взятый информационный блок может принадлежать одному и только одному файлу в файловой системе.
Как уже было замечено в предыдущем разделе, каждый файл в системе UNIX имеет уникальный индекс. Индекс содержит информацию, необходимую любому процессу для того, чтобы обратиться к файлу, например, права собственности на файл, права доступа к файлу, размер файла и расположение данных файла в файловой системе. Процессы обращаются к файлам, используя четко определенный набор системных вызовов и идентифицируя файл строкой символов, выступающих в качестве составного имени файла. Каждое составное имя однозначно определяет файл, благодаря чему ядро системы преобразует это имя в индекс файла.
Индексы существуют на диске в статической форме и ядро считывает их в память прежде, чем начать с ними работать. Дисковые индексы включают в себя следующие поля:
В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:
Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся текстовые файлы, бинарные данные, исполняемые программы и т. п.
Каталог. С помощью каталогов формируется логическое дерево файловой системы. Каталог это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию метаданные, позволяющие операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. Любая задача, имеющая право на чтение каталога, может прочесть его содержимое, но только ядро имеет право на запись в каталог.
На рис. 15.3 в качестве примера приведена упрощенная структура каталога. По существу каталог представляет собой таблицу, каждая запись которой соответствует некоторому файлу. Первое поле каждой записи содержит указатель на метаданные (индекс, о котором речь пойдет далее), а второе - определяет имя файла.
Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
Символьные файлы устройств используются для небуферизированного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.
FIFO или именованный канал это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм.
Связь. Как уже говорилось, каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе (такое утверждение верно лишь отчасти. Действительно, файлу «безразлично», какие имена он имеет в каталогах, но «небезразлично» число этих имен. Если ни одно из имен файловой системы не ссылается на файл - он должен быть удален, т.е. физически удалены его данные на диске). Такая связь имени файла с его данными называется жесткой связью (hard link) (см. рис.15.4). Например, с помощью команды 1п мы можем создать еще одно имя (например, second) файла, на который указывает имя first .
$ln first /home/sergey/second
Жесткие связи абсолютно равноправны. В списках файлов каталогов, которые можно получить с помощью команды ls(l), файлы first и second будут отличаться только именем. Все остальные атрибуты файла будут абсолютно одинаковыми. С точки зрения пользователя - это два разных файла. Изменения, внесенные в любой из этих файлов, затронут и другой, поскольку оба они ссылаются на одни и те же данные файла. Вы можете переместить один из файлов в другой каталог - все равно эти имена будут связаны жесткой связью с данными файла. Легко проверить, что удаление одного из файлов (first или second) не приведет к удалению самого файла, т. е. его метаданных и данных (если это не специальный файл устройства).
По определению, жесткие связи указывают на один и тот же индексный дескриптор inode. Поэтому проверить , имеют ли два имени файла жесткую связь, можно, вызвав команду ls с ключом i:
$ ls i /home/andrey/first /home/sergey/second
12567 first
12567 second
Информацию о наличии у файла нескольких имен, связанных с ним жесткими связями, можно получить, просмотрев подробный листинг файлов с помощью команды ls -l:
$ ls l /home/sergey
…
-rw-rr-- 2 andrey staff 7245 Jan 17 8:05 second
Во второй колонке листинга указано число жестких связей данного файла. Сразу оговоримся, что жесткая связь является естественной формой связи имени файла с его метаданными и не принадлежит к особому типу файла. Особым типом файла является символическая связь, позволяющая косвенно адресовать файл. В отличие от жесткой связи, символическая связь адресует файл, который, в свою очередь, ссылается на другой файл. В результате, последний файл адресуется символической связью косвенно (рис. 15.5). Данные файла, являющегося символической связью, содержат только имя целевого файла.
Проиллюстрируем эти рассуждения на примере. Команда 1n(1) с ключом -s позволяет создать символическую связь:
$ pwd
/home/andrey
$ ln s first /home/sergey/symfirst
$ cd /home/sergey
$ ls l
…
lrwxrwxrwx 1 andrey staff 15 Jan 17 8:05 symfirst->../andrey/first
Как видно из вывода команды ls, файл symfirst (символическая связь) существенно отличается от файла second (жесткая связь). Во-первых, фактическое содержимое файла symfirst отнюдь не то же, что и у файла first или second, об этом говорит размер файла - 15 байт. На самом деле в этом файле хранится не что иное как имя файла, на которое символическая связь ссылается - ../andrei/first - ровно - 15 байт. Во-вторых, файл symfirst не содержит никаких ограничений на доступ (2-10 символы в первой колонке).
Символическая связь является особым типом файла (об этом свидетельствует символ Т в первой позиции вывода ls, и операционная система работает с таким файлом не так, как с обычным. Например, при выводе на экран содержимого файла symfirst появятся данные файла /home/andrey/first.
Сокеты
Сокеты предназначены для взаимодействия между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP. В системах, ветви BSD UNIX на базе сокетов реализована система межпроцессного взаимодействия, с помощью которой работают многие системные сервисы, например, система печати.
Использование общепринятых имен (см. рис.15.6) основных файлов и структуры каталогов существенно облегчает работу в операционной системе, ее администрирование и переносимость. Эта структура используется в работе системы, например, при ее инициализации и конфигурировании, при работе почтовой системы и системы печати. Нарушение этой структуры может привести к неработоспособности системы или отдельных ее компонентов. Приведем краткое описание основных каталогов.
Корневой каталог
Корневой каталог «/» является основой любой файловой системы UNIX. Все остальные файлы и каталоги располагаются в рамках структуры, порожденной корневым каталогом, независимо от их физического происхождения.
/bin
В каталоге /bin находятся наиболее часто употребляемые команды и утилиты системы , как правило, общего пользования.
/dev
Каталог /dev содержит специальные файлы устройств, являющиеся интерфейсом доступа к периферийным устройствам. Каталог /dev может содержать несколько подкаталогов, группирующих специальные файлы устройств одного типа. Например, каталог /dev/dsk содержит специальные файлы устройств для доступа к гибким и жестким дискам системы.
/etc
В этом каталоге находятся системные конфигурационные файлы и многие утилиты администрирования. Среди наиболее важных файлов - скрипты инициализации системы. Эти скрипты хранятся в каталогах /etc/rc0.d, /etc/rcl.d, /etc/rc2.d и т. д, соответствующих уровням выполнения системы (run level), и управляются скриптами /etc/rc0, /etc/rcl, /etc/rc2 и т. д. Во многих версиях BSD UNIX указанные каталоги отсутствуют, и загрузка системы управляется скриптами /etc/rc.boot, /etc/rc и /etc/rc.local. В UNIX System V здесь находится подкаталог default, где хранятся параметры многих команд (например, /etc/default/su содержит параметр команды su(lМ)). В UNIX System V большинство исполняемых файлов перемещены в каталог /sbin или /usr/sbin.
/lib
В каталоге /lib находятся библиотечные файлы языка С и других языков программирования. Стандартные названия библиотечных файлов имеют вид libx.a (или libx.so), где х - это один или более символов, определяющих содержимое библиотеки. Например, стандартная библиотека С называется libc.a, библиотека системы Х Window System имеет имя libXll.a. Часть библиотечных файлов также находится в каталоге /usr/lib.
/lost+found
Каталог «потерянных» файлов. Ошибки целостности файловой системы, возникающие при неправильном останове UNIX или аппаратных сбоях, могут привести к появлению т. н. «безымянных» файлов - структура и содержимое файла являются правильными, однако для него отсутствует имя в каком-либо из каталогов. Программы проверки и восстановления файловой системы помещают такие файлы в каталог /lost+found под системными числовыми именами.
/mnt
Стандартный каталог для временного связывания (монтирования) физических файловых систем к корневой для получения единого дерева логической файловой системы. Обычно содержимое каталога /mnt пусто, поскольку при монтировании он перекрывается связанной файловой системой
/и или/home
Общеупотребительный каталог для размещения домашних каталогов пользователей. Например, имя домашнего каталога пользователя andrey будет, скорее всего, называться /home/andrey или /u/andrey. В более ранних версиях UNIX домашние каталоги пользователей размещались в каталоге /usr.
/usr
В этом каталоге находятся подкаталоги различных сервисных подсистем - системы печати, электронной почты и т. д. (/usr/spool), исполняемые файлы утилит UNIX (/usr/bin), дополнительные программы, используемые на данном компьютере (/usr/local), файлы заголовков (/usr/include), электронные справочники (/usr/man) и т. д.
В UNIX System V этот каталог является заменителем каталога /usr/spool, используемого для хранения временных файлов различных сервисных подсистем - системы печати, электронной почты и т. д.
/tmp
Каталог хранения временных файлов, необходимых для работы различных подсистем UNIX. Обычно этот каталог открыт на запись для всех пользователей системы.
Для изменения владельца файла используется команда chown. В качестве параметров команда принимает имя владельца-пользователя и список файлов, для которых требуется изменить данный атрибут. Например, следующая команда установит пользователя sergey владельцем файлов client.с и server.c:
$ chown sergey client.c server.c
Изменение владельцагруппы производится командой chgr. ). Как и chown, в качестве параметров команда принимает имя владельца-группы и список файлов, для которых требуется изменить данный атрибут. Например, для установки группы staff в качестве владельца всех файлов текущего каталога необходимо задать следующую команду:
$ chgr staff *
Большинство данных в операционной системе UNIX хранится в файлах, в виде дерева и расположенных на некотором носителе. Обычно это локальный (т. е. расположенный на том же компьютере, что и сама операционная система) жесткий диск, хотя специальный тип файловой системы - NFS (Network File System) обеспечивает возможность располагаться на CD-ROM, дискетах и других типах носителей, однако для простоты изложения сначала мы рассмотрим традиционную файловую систему UNIX, расположенную на обычном жестком диске компьютера.
Исконной файловой системой UNIX System V является s5fs. Файловая система, разработанная в Беркли, FFS, появилась позже, в версии 4.2BSD UNIX. По сравнению с s5fs она обладает лучшей производительностью, функциональностью и надежностью. Файловые системы современных версий UNIX имеют весьма сложную архитектуру, различную для разных версий. Несмотря на это, все они используют базовые идеи, заложенные разработчиками UNIX в AT&T и Калифорнийском университете в Беркли. Поэтому мы проиллюстрируем основные принципы организации файловой системы UNIX на примере базовых систем System V (s5fs) и BSD (FFS), которые, кстати, и сегодня поддерживаются в большинстве версий UNIX.
Когда появилась файловая система FFS, архитектура UNIX поддерживала работу только с одним типом файловой системы. Таким образом, создатели различных версий операционной системы UNIX вынуждены были выбирать одну файловую систему из нескольких возможных. Это неудобство было преодолено введением независимой или виртуальной файловой системы - архитектуры, позволяющей обеспечивать работу с несколькими файловыми системами различных типов.
Каждый жесткий диск состоит из одной или нескольких логических частей, называемых файловыми разделами (partitions). Расположение и размер раздела определяются при форматировании диска. В UNIX разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных.
Например, диск может состоять из четырех разделов, каждый из которых содержит свою файловую систему. В разделе может располагаться только одна файловая система, которая не может занимать несколько разделов. В другой конфигурации диск может состоять только из одного раздела, позволяя создание весьма емких файловых систем.
Файловая система s5fs занимает раздел диска и состоит из трех основных компонентов, как показано на рис. 15.7.
Рассмотрим подробнее каждый из перечисленных компонентов.
Суперблок содержит информацию, необходимую для монтирования и управления работой файловой системы в целом (например, для размещения новых файлов). В каждой файловой системе существует только один суперблок, который располагается в начале раздела. Суперблок считывается в память при монтировании файловой системы и находится там до ее отключения (размонтирования).
Суперблок содержит следующую информацию:
Поскольку число свободных inode и блоков хранения данных может быть значительным, хранение двух последних списков целиком в суперблоке непрактично. Например, для индексных дескрипторов хранится только часть списка. Когда число свободных inode в этом списке приближается к 0, ядро просматривает ilist и вновь формирует список свободных inode. Для этого ядро анализирует поле di_mode индексного дескриптора, которое равно 0 у свободных inode.
К сожалению, такой подход неприменим в отношении свободных блоков хранения данных, поскольку по содержимому блока нельзя определить, свободен он или нет. Поэтому необходимо хранить список адресов свободных блоков целиком. Список адресов свободных блоков может занимать несколько блоков хранения данных, но суперблок содержит только один блок этого списка. Первый элемент этого блока указывает на блок хранящий продолжение списка и т. д., как это показано на рис. 15.7.
Выделение свободных блоков для размещения файла производится с конца списка суперблока. Когда в списке остается единственный элемент, ядро интерпретирует его как указатель на блок, содержащий продолжение списка. В этом случае содержимое этого блока считывается в суперблок и блок становится свободным. Такой подход позволяет использовать дисковое пространство под списки, пропорциональное свободному месту в файловой системе. Другими словами, когда свободного места практически не остается список адресов свободных блоков целиком помещается в суперблоке.
Индексный дескриптор, или inode, содержит информацию о файле, необходимую для обработки данных, т. е. метаданные файла. Каждый файл ассоциирован с одним inode, хотя может иметь несколько имен в системе, каждое из которых указывает на один и тот же inode.
Индексный дескриптор не содержит:
При открытии файла ядро помещает копию дискового inode в таблицу in-core inode, которая содержит несколько дополнительных полей. Структура дискового inode (struct dinode) приведена на рис. 15.8. Основные поля дискового inode следующие:
di_mode |
Тип файла, дополнительные атрибуты выполнения и првава доступа |
di_nlinks |
Число ссылок на файл, т.е. количество имен, которые имеет файл в файловой системе |
di_uid, di_gid |
Идентификаторы владельца-пользователя и владельца-группы. |
di_size |
Размер файла в байтах. Для специальных файлов это поле содержит старший и младший номер устройства. |
di_atime |
Время последнего доступа к файлу. |
di_mtime |
Время последней модификации. |
di_ctime |
Время последней модификации inode (кроме модификации полей di_atime, di_mtime). |
di_addr[13] |
Массив адресов дисковых блоков хранения данных. |
Поле di_mode хранит несколько атрибутов файла: тип файла (IFREG - для обычных файлов, IFDIR - для каталогов, IFBLK или IFCHR для специальных файлов блочных и символьных устройств соответственно); права доступа к файлу для трех классов пользователей и дополнительные атрибуты выполнения (SUID, SGID и sticky bit), значения этих атрибутов будут рассмотрены позднее.
Заметим, что в индексном дескрипторе отсутствует информация о времени создания файла. Вместо этого inode хранит три значения времени: последнего доступа (di_atime), время последней модификации содержимого файла (di_mtime) и время последней модификации метаданных файла (di_ctime). В последнем случае не учитываются модификации полей di_atime и di_mtinie. Таким образом, di_ctime изменяется, когда изменяется размер файла, владелец, группа или число связей.
Индексный дескриптор содержит информацию о расположении данных файла. Поскольку дисковые блоки хранения данных файла в бщем случае располагаются не последовательно, inode, должен хранить физические адреса всех блоков, принадлежащих данному файлу. В индексном дескрипторе эта информация хранится в виде массива, каждый элемент которого содержит физический адрес дискового блока, а индексом массива является номер логического блока файла. Массив имеет фиксированный размер и состоит из 13 элементов. При этом первые 10 элементов адресуют непосредственно блоки хранения данных файла. Одиннадцатый элемент адресует блок, в свою очередь содержащий адреса блоков хранения данных файла. Двенадцатый элемент указывает на дисковый блок, также хранящий адреса блоков, каждый из который адресует блок хранения данных файла. И, наконец, тринадцатый элемент используется для тройной косвенной адресации, когда для нахождения адреса блока хранения данных файла используются три дополнительных блока.
Такой подход позволяет при относительно небольшом фиксированном размере индексного дескриптора поддерживать работу с файлами, размер которых может изменяться от нескольких байтов до десятка мегабайтов. Для относительно небольших файлов (до 10 Кбайт при размере блока 1024 байтов) используется прямая индексация, обеспечивающая максимальную производительность. Для файлов, размер которых не превышает 266 кбайт (10 кбайт + 256х1024), достаточно простой косвенной адресации. Наконец, при использовании тройной косвенной адресации можно обеспечить доступ к 16777216 блокам (256х256х256).
Размещение данных файла в произвольно расположенных дисковых блоках позволяет эффективно использовать дисковое пространство, поскольку ядро может использовать любой свободный дисковый блок для размещения данных. Однако в файловой системе s5f's блок может использоваться только одним файлом, поэтому последний блок файла используется, как правило, не полностью. К тому же такой подход с течением времени приводит к увеличению фрагментации системы, когда данные файла оказываются произвольно разбросанными по диску, что, в свою очередь, увеличивает время доступа к файлу и уменьшает производительность обмена данными. Единственным способом уменьшения фрагментации файловой системы является создание полной резервной копии на другом носителе (или в другой файловой системе) и затем ее восстановление. При этом запись файлов будет производиться последовательно без фрагментации.
Как мы уже видели, ни метаданные, ни тем более блоки хранения данных, не содержат имени файла. Имя файла хранится в файлах специального типа - каталогах. Такой подход позволяет любому файлу, т. е. фактическим данным, иметь теоретически неограниченное число имен (названий) в файловой системе. При этом несколько имен файлов будут соответствовать одним и тем же метаданным и данным и являться жесткими связями.
Каталог файловой системы s5fs представляет собой таблицу, каждый элемент которой имеет фиксированный размер в 16 байтов: 2 байта хранят номер индексного дескриптора файла, а 14 байтов его имя. Это накладывает ограничение на число inode, которое не может превышать 65 535. Также ограничена и длина имени файла: его максимальный размер - 14 символов. Первые два элемента каталога адресуют сам каталог (текущий каталог) под "." и родительский каталог под именем "..".
При удалении имени файла из каталога (например, с помощью команды rm), номер inode соответствующего элемента устанавливается равным 0. Ядро обычно не удаляет такие свободные элементы, поэтому размер каталога не уменьшается даже при удалении файлов. Это является потенциальной проблемой для каталогов, в которые временно было помещено большое количество файлов. После удаления большинства из них размер каталога останется достаточно большим, поскольку записи удаленных файлов будут по-прежнему существовать.
Файловая система s5fs привлекательна благодаря своей простоте. Однако обратной стороной медали является низкая надежность и производительность.
С точки зрения надежности слабым местом этой файловой системы является суперблок. Суперблок несет основную информацию о файловой системе в целом, и при его повреждении файловая система не может использоваться в дальнейшем. Поскольку в файловой системе s5fs суперблок хранится в единственном экземпляре, вероятность возникновения ошибок достаточно велика.
Относительно низкая производительность связана с размещением компонентов файловой системы на диске. Метаданные файлов располагаются в начале файловой системы, а далее следуют блоки хранения данных. При работе с файлом происходит обращение как к его метаданным, так и к дисковым блокам, содержащим его данные. Поскольку эти структуры данных могут быть значительно разнесены в дисковом пространстве, необходимость постоянного перемещения головки диска увеличивает время доступа и, как следствие, уменьшает производительность файловой системы в целом. К этому же эффекту приводит фрагментация файловой системы, поскольку отдельные блоки файла оказываются разбросанными по всему разделу диска.
Использование дискового пространства также не оптимально. Для увеличения производительности файловой системы более предпочтительным является использование блоков больших размеров. Это позволяет считывать большее количество данных за одну операцию ввода/вывода. Так, например, в UNIX SVR2 размер блока составлял 512 байтов, а в SVR3 - уже 1024 байтов. Однако поскольку блок может использоваться только одним файлом, увеличение размера блока приводит к увеличению неиспользуемого дискового пространства за счет частичного заполнения последнего блока файла. В среднем для каждого файла теряется половина блока.
Массив inode имеет фиксированный размер, задаваемый при создании файловой системы. Этот размер накладывает ограничение на максимальное число файлов, которые могут существовать в файловой системе. Расположение границы между метаданными файлов и их данными (блоками данных) может оказаться неоптимальным, приводящим либо к нехватке inode, если файловая система хранит файлы небольшого размера, либо к нехватке дисковых блоков для хранения файлов большого размера. Поскольку динамически изменить эту границу невозможно, всегда останется неиспользованное дисковое пространство либо в массиве inode, либо в блоках хранения данных.
Наконец, ограничения, накладываемые на длину имени файла (14 символов) и общее максимальное число inode (65535) также являются слишком жесткими.
Все эти недостатки привели к разработке новой архитектуры файловой системы, которая появилась в версии 4.2BSD UNIX под названием Berkeley Fast File System, или FSS.
В версии 4.3BSD UNIX были внесены существенные улучшения в архитектуру файловой системы, повышающие как ее производительность, так и надежность. Новая файловая система получила название Berkeley Fast File System (FFS), в других системах UNIX ее разновидности называют ufs (Unix File System).
Файловая система FFS, обладая полной функциональностью системы s5fs, использует те же структуры данных ядра. Основные изменения затронули расположение файловой системы на диске, дисковые структуры данных, алгоритмы размещения свободных блоков.
Как и в случае файловой системы s5fs, суперблок содержит общее описание файловой системы и располагается в начале раздела. Однако в суперблоке не хранятся данные о свободном пространстве файловой системы, такие как массив свободных блоков и inode. Поэтому данные остаются неизменными на протяжении всего времени существования файловой системы. Поскольку данные суперблока жизненно важны для работы всей файловой системы, он дублируется для повышения надежности.
Организация файловой системы предусматривает логическое деление дискового раздела на одну или несколько групп цилиндров (cylinder group). Группа цилиндров представляет собой несколько последовательных дисковых цилиндров. Каждая группа цилиндров содержит управляющую формацию, включающую резервную копию суперблока, массив inode, данные о свободных блоках и итоговую информацию об использовании дисковых блоков в группе (рис. 15.9).
Для каждой группы цилиндров при создании файловой системы выделяется место под определенное количество inode. При этом обычно на каждые 2 кбайт блоков хранения данных создается один inode. Поскольку размеры группы цилиндров и массива inode фиксированы, в файловой системе BSD UNIX присутствуют ограничения, аналогичные s5fs.
Идея такой структуры файловой системы заключается в создании кластеров inode, распределенных по всему разделу, вместо того, чтобы группировать все inode в начале. Тем самым уменьшается время доступа к данным конкретного файла, поскольку блоки данных располагаются ближе к адресующим их inode. Такой подход также повышает надежность файловой системы, уменьшая вероятность потери всех индексных дескрипторов в результате сбоя.
Управляющая информация располагается с различным смещением от начала группы цилиндров. В противном случае, например, при размещении в начале группы цилиндров, информация всех групп оказалась бы физически расположенной на одной пластине диска и могла бы быть уничтожена при выходе из строя этой пластины. Это смещение выбирается равным одному сектору относительно предыдущей группы, таким образом для соседних групп управляющая информация начинается на различных пластинах диска. В этом случае потеря одного сектора, цилиндра или пластины не приведет к потере всех копий суперблоков.
Производительность файловой системы существенным образом зависит от размера блока хранения данных. Чем больше размер блока, тем большее количество данных может быть прочитано без поиска и перемещения дисковой головки. Файловая система FFS поддерживает размер блока до 64 Кбайт. Проблема заключается в том, что типичная файловая система UNIX состоит из значительного числа файлов небольшого размера. Это приводит к тому, что частично занятые блоки используются неэффективно, что может привести к потере до 60 % полезной емкости диска.
Этот недостаток был преодолен с помощью возможности фрагментации блока. Каждый блок может быть разбит на два, четыре или восемь фрагментов. В то время как блок является единицей передачи данных в операциях ввода/вывода, фрагмент определяет адресуемую единицу хранения данных на диске. Таким образом был найден компромисс между производительностью ввода/вывода и эффективностью хранения данных. Размер фрагмента задается при создании файловой системы, его максимальное значение определяется размером блока (0,5 размера блока), а минимальный - физическими ограничениями дискового устройства, а именно: минимальной единицей адресации диска - сектором.
Информация о свободном пространстве в группе хранится не в виде списка свободных блоков, а в виде битовой карты блоков. Карта блоков, связанная с определенной группой цилиндров, описывает свободное пространство в фрагментах для определения того, свободен данный блок или нет, ядро анализирует биты фрагментов, составляющих блок. На рис. 15.10 приведен пример карты свободных блоков и соответствия между битами карты, фрагментами и блоками группы цилиндров.
Существенные изменения затронули алгоритмы размещения свободных блоков и inode, влияющие на расположение файлов на диске. В файловой системе s5fs используются весьма примитивные правила размещения. Свободные блоки и inode просто выбираются из конца соответствующего списка, что со временем приводит, как уже обсуждалось, к значительному разбросу данных файла по разделу диска.
В отличие от s5fs, файловая система FFS при размещении блоков использует стратегию, направленную на увеличение производительности. Некоторые из принципов приведены ниже:
Таким образом, правила размещения свободных блоков, с одной стороны, направлены на уменьшение времени перемещения головки диска, т. е. на локализацию данных в одной группе цилиндров, а с другой - на равномерное распределение данных по диску. От разумного баланса между этими двумя механизмами зависит, в конечном итоге, производительность системы. Например, в предельном варианте, когда все данные локализованы в одной большой группе цилиндров, мы получаем типичную файловую систему s5fs.
Описанная архитектура является весьма эффективной с точки зрения надежности и производительности. К сожалению, эти параметры файловой FSS начинают значительно ухудшаться по мере уменьшения свободного места. В этом случае системе не удается следовать вышеприведенным правилам и размещение блоков далеко от оптимального. Практика показывает, что FSS имеет удовлетворительные характеристики при наличии более 10 % свободного места.
Структура каталога файловой системы FFS была изменена для поддержки длинных имен файлов (до 255 символов). Вместо записей фиксированной длины запись каталога FFS представлена структурой, имеющей следующие поля:
d_ino |
Номер inode (номер в массиве ilist) |
d_reclen |
Длина записи |
d_namelen |
Длина имени файла |
d_name[] |
Имя файла |
Имя файла имеет переменную длину, дополненную нулями до 4-байтной границы. При удалении имени файла принадлежавшая ему запись присоединяется к предыдущей, и значение поля d_reclen увеличивается на соответствующую величину. Удаление первой записи выражается в присвоении нулевого значения полю d_ino.
Как было показано, различные типы файловых систем существенно отличаются по внутренней архитектуре. В то же время современные версии UNIX обеспечивают одновременную работу с несколькими типами файловых систем. Среди них можно выделить локальные файловые системы различной архитектуры, удаленные и даже отличные от файловой системы UNIX, например, FAT. Такое сосуществование обеспечивается путем разделения каждой системы на зависимый и независимый от реализации уровни, последний из которых является общим и представляет для остальных подсистем ядра некоторую абстрактную файловую систему. Независимый уровень также называется виртуальной файловой системой (рис. 15.11). При этом дополнительные файловые системы различных типов могут быть встроены в ядро UNIX подобно тому, как это происходит с драйверами устройств.
Хотя все файлы в системе UNIX логически соединены в одно общее дерево, сами файлы размещаются на различных запоминающих устройствах, например на жестких дисках и СD-RОМ. Файлы, записанные на запоминающих устройствах, организованы в отдельные файловые системы. Дерево каталогов UNIX может охватывать несколько файловых систем, каждая из которых располагается на отдельном устройстве. Сами файлы организованы в единое файловое дерево, вершиной которого является корневой каталог. Несмотря на то, что файловая система с корневым каталогом расположена в одном из разделов жесткого диска, всегда существует путь к файлам, расположенным в файловой системе, размещенной на компакт-диске.
Файлы той или иной файловой системы остаются отделенными от дерева каталогов до тех пор, пока вы явно не присоедините их к этому дереву. В каждой файловой системе файлы организованы в отдельное дерево каталогов. Это дерево можно рассматривать как поддерево, которое необходимо присоединить к основному дереву каталогов. Например, на дискете с файлами ОС UNIX свое дерево каталогов. Это поддерево нужно присоединить к основному дереву, расположенному в разделе жесткого диска. Пока это не сделано, доступа к файлам на дискете у вас не будет.
Присоединение файловой системы, расположенной на запоминающем устройстве, к основному дереву каталогов называется монтированием устройства (об этом уже говорилось ранее).
Монтирование устройства осуществляется командой mount.1 Для того, чтобы получить возможность работать с файлами, записанными на CD-ROM, это устройство нужно сначала смонтировать. Операция монтирования предполагает присоединение дерева каталогов, находящегося на устройстве памяти, к указанному пользователем каталогу. Лишь после этого можно перейти в присоединенный каталог и обращаться к его файлам. Монтировать файловые системы может только привилегированный пользователь, root. Эта задача относится к функциям системного администратора, и обычный пользователь ее выполнять не может. Для того чтобы монтировать файловую систему, нужно войти в систему в качестве привилегированного пользователя. В табл. 15.1 перечислены основные опции команды mount.
Команда mount
Таблица 15.1
Опции |
Назначение |
-w |
Монтирует файловую систему с правом на чтение и запись |
-r |
Монтирует файловую систему с правом только на чтение |
-t тип |
Задает тип монтируемой файловой системы, основные типы файловых систем представлены в таблице 15.2 |
-a |
Монтирует все файловые системы, перечисленные в файле /etc/fstab |
Типы файловых систем, используемые в команде mount
Таблица 15.2
Опции |
Файловая система |
ext2 |
Стандартная файловая система Linux |
msdos |
Файловая система FAT |
nfs |
Cетевая файловая система, монтируемая из удаленных систем |
swap |
Раздел подкачки ОС Linux |
sysv |
Файловая система UNIX System V |
iso9660 |
Файловая система для монтирования CD-ROM |
Команда mount принимает два аргумента: имя устройства, через которое Linux получает доступ к файловой системе, и каталог в файловой структуре, к которому присоединяется новая файловая система. Точка моняирования это каталог, к которому вы хотите присоединить файлы, находящиеся на запоминающем устройстве. Устройство это специальный файл устройства, с помощью которого система получает доступ к аппаратным устройствам. Команда mount имеет следующий синтаксис:
$ mount устройство точка_монтирования
Для каждого из подключенных к компьютеру устройств существует один или несколько специальных файлов. За ними стоит операционная система, оптимально настроенная на соответствующий компьютер. Например, если вы записываете текст в файл-устройство для принтера, то операционная система принимает на себя дальнейшее перемещение файлов на принтер.
По сравнению с обычными файлами, файлы-устройства имеют три дополнительных атрибута, которые определяют тип устройства, приписанного к данному файлу:
Старшие номера под Linux Таблица 15.3
Номер |
Описание |
1 |
Оперативная память |
2 |
Дисковод для гибких дисков |
3 |
Первый контроллер для жестких дисков IDE |
4 |
Терминалы |
5 |
Терминалы |
6 |
Жесткие диски SCSI |
10 |
Мыши для шины |
11 |
SCSI CD-ROM |
14 |
Звуковые карты |
22 |
Второй контроллер для жестких дисков IDE |
Файлы устройств находятся в каталогах /dev и обычно имеют сокращенные имена, которые заканчиваются номером устройства. Например, fd0, как правило, обозначает первый дисковод гибких дисков, присоединенный к системе (под Windows обозначаемый как А:), fd1 будет обозначать второй дисковод для гибких дисков и т.д. (поддерживается до 4 дисководов для гибких дисков). В версии Debian использовать и другое имя для дисковода гибких дисков - /dev/fd0u1440, которое сразу содержит и определение емкости диска для этого дисковода. Именно это имя используется в команлде низкоуровневого форматирования для гибкого диска fdformat /dev/fd0u1440.
С жесткими дисками все несколько сложнее. Различным типам управления жесткими дисками IDE и SCSI присвоены различные имена. Кроме того, как и в системах Windows, жесткий диск может быть разбит на разделы, это тоже учитывается в именовании устройств.
Полное имя устройства, принадлежащее разделу жесткого диска составляется из следующих элементов:
Точное распределение жестких дисков и их разделов Таблица 15.4
Тип |
Старший номер |
Жесткий диск |
Младший номер |
Раздел |
Файл устройства |
IDE |
3 |
Первый |
0 |
Все устройство |
/dev/hda |
1 |
Первый раздел |
/dev/hda1 |
|||
2 |
Второй раздел |
/dev/hda2 |
|||
… |
Следующее |
… |
|||
Второй |
64 |
Все устройство |
/dev/hdb |
||
65 |
Первый раздел |
/dev/hdb1 |
|||
… |
Следующие |
…. |
|||
SCSI |
8 |
Первый |
0 |
Все устройство |
|
1 |
Первый раздел |
||||
2 |
Второй раздел |
||||
… |
Следующие |
||||
Второй |
16 |
Все устройство |
|||
17 |
Первый раздел |
||||
18 |
Второй раздел |
||||
… |
Следующие |
||||
Третий |
32 |
Все устройство |
|||
Первый раздел |
|||||
… |
Следующие |
||||
Другие |
… |
Как уже говорилось, для того чтобы к файловой системе был возможен доступ, она должна быть смонтирована. Даже файловую систему, расположенную в разделе жесткого диска, нужно монтировать командой mount. Следует отметить, однако, что при инсталляции Linux и создании на жестком диске раздела Linux система автоматически конфигурируется на монтирование файловых систем при каждом запуске. Для дискет и компакт-дисков возможность не предусмотрена, и их придется монтировать явно.
# mount /dev/fd0 /mydir
Перед монтированием новой дискеты ее нужно отформатировать как файловую систему Linux. Для такого высокоуровневого форматирования дискеты используется команда mkfs (так же, как и для создания файловых ситем в разделах жесткого диска). Обычно для этого необходимо знать число блоков на данном устройстве (или в разделе). Linux поддерживает блоки размером 1 кбайт. На диске емкостью 1,44 Мбайта таких блоков 1400.
Синтаксис команды:
# mkfs [t тип_ФС] устройство [блоки]
Пример форматирования дискеты на 1,44 Мбайта:
# mkfs t ext2 /dev/fd0 1400
Перед тем как останавливать систему, необходимо демонтировать смонтированные файловые системы. Основные файловые системы демонтируются автоматически. Если, однако, вы хотите заменить смонтированную файловую систему другой, сначала нужно демонтировать первую. Скажем, вы смонтировали файлы, содержавшиеся на дискете, а теперь хотите работать с другой дискетой. Для этого нужно сначала демонтировать файловую систему установленной дискеты. Файловая система демонтируется командой umount. В качестве аргументов эта команда использует имя устройства и каталог, в котором оно было смонтировано. Вот синтаксис команды:
# umount устройство | точка_монтирования
Вы указываете устройство или точку монтирования.
В следующем примере демонтируется гибкий диск, смонтированный в каталоге /туdir:
# umount /dev/fd0
или
# umount /mydir
Для команды итоипt установлено одно существенное ограничение. Нельзя демонтировать файловую систему, в которой вы работаете в данный момент. Если вы перейдете в какой-либо каталог файловой системы и затем попытаетесь демонтировать ее, то получите сообщение об ошибке вас уведомят о том, что файловая система занята. Сначала нужно выйти из каталога этой файловой системы, а затем демонтировать ее.
Файловые системы на всех запоминающих устройствах занимают весь выделенный для них объем. Например, файловая система может занимать раздел жесткого диска размером 300 Мбайт. Файлы, инсталлируемые и создаваемые в этой файловой системе, будут занимать лишь часть пространства, а остальная часть будет свободна для новых файлов и каталогов этой системы. Определить, сколько свободного пространства имеется в файловой системе, можно с помощью команды df. Она выдает список всех файловых систем по именам устройств, сообщает их размер и точки монтирования.
Например:
$ df
File system 1K-blocks Used Available Capacity Mounted on
/dev/hda3 2403348 466572 1814684 20% /
/dev/hda1 4994432 3789796 1204636 76% /mnt/dos
Команду df можно использовать и для получения информации о том, к какой файловой системе относится тот или иной каталог. Для этого команду df нужно ввести с именем каталога (для текущего каталога . ).
Например:
$ df .
File system 1K-blocks Used Available Capacity Mounted on
/dev/hda3 2403348 466572 1814684 20% /
Проверка работоспособности файловой системы осуществляется с помощью команды fsck. Аргументом команды является имя устройства, на котором находится файловая система. В следующем примере проверяются дискета и раздел жесткого диска.
# fsck /dev/fd0
# fsck /dev/hda1
File system 1K-blocks Used Available Capacity Mounted on
/dev/hda3 2403348 466572 1814684 20% /
Разделы жесткого диска для Linux и с файловой системой FAT (Linux определяет эту систему как файловую систему MS-DOS) можно монтировать с помощью команды mount (см. соответствующий раздел). Удобнее, однако, монтировать их автоматически с помощью файла /etc/fstab (см. следующий подпараграф). Те разделы жесткого диска, которые были созданы во время инсталляции, монтируются автоматически.
Для того чтобы смонтировать раздел жесткого диска для Linux введите команду mount c именем раздела и каталог, в котором вы хотите смонтировать данный раздел. В следующем примере раздел жесткого диска для Linux монтируется на устройстве /dev/hda3 в каталоге /mnt.
# mount t ext2 /dev/hda3 /mnt
Можно смонтировать и раздел Windows (FAT раздел). Здесь также используется команда mount, но нужно указать, что тип данной файловой системы MS-DOS. Для этого используйте опцию -t и введите тип файловой системы msdos. В следующем примере пользователь монтирует FAT-раздел жесткого диска, /dev/hda1, в файловую структуру ОС Linux в каталоге /mnt/dos. Каталог /mnt/dos стандартная точка монтирования для файловых систем FAT, но, в принципе, их можно монтировать в любом каталоге. Проверьте, создан ли уже этот каталог.
# mount t msdos /dev/hda1 /mnt/dos
Если вы хотите включить в файловую структуру новый раздел, вначале нужно создать этот раздел с помощью команды fdisk или команды cfdisk, а затем отформатировать его посредством команды mkfs. После этого раздел можно монтировать. Для начала введите в командной строке fdisk или cfdisk. Вы войдете в интерактивную программу создания раздела Linux. Эти программы подобны fdisk под Windows, описанной ранее. Использовать эти программы следует очень осторожно, так как они могут привести к уничтожению всего содержимого жесткого диска.
Вводя в Linux-систему новый раздел жесткого диска, пользователь, конечно, хотел бы, чтобы он автоматически монтировался при запуске и демонтировался при останове. В противном случае этот раздел придется при каждой загрузке и каждом останове системы монтировать и демонтировать явно. Для того чтобы ОС Linux автоматически монтировала файловую систему, существующую в новом разделе жесткого диска, нужно добавить ее имя в файл fstab. Это можно сделать вручную либо с помощью команды fstool. Файл fstab расположен в каталоге /еtc. В нем перечислены файловые системы, которые монтируются командой mount с опцией -а. Эта команда находится в файле /еtc/гс.d/гс.bооt. Команды данного файла выполняют операции по инициализации системы. Они выполняются при каждой загрузке системы. При останове системы выполняется команда umount -а, которая демонтирует все файловые системы, перечисленные в файле fstab. Команда итоипt -а находится в файле /еtc/гс.d/init/halt, который содержит команды, выполняемые при каждом останове системы. Таким образом, все файловые системы, которые вы указываете в файле /еtс/fstab, автоматически монтируются при запуске системы и демонтируются при ее закрытии. В других системах, например RedHat, команда mount -а может находиться в файле /еtс/гс.d/гс.sysinit.
Элемент файла fstab содержит несколько полей, разделенных пробелами или знаками табуляции.:
В следующем примере показана строка файла fstab, оответствующая основному разделу жесткого диска для Linux. Он монтируется в корневом каталоге (/) и имеет тип ехt2:
/dev/hda3 ext2 defaults 0 1
В четвертом поле, следующем после типа файловой системы, указываются различные опции монтирования. Имеется стандартный набор опций, устанавливаемых по умолчанию, все их можно задать вводом одной опции defaults. Другие опции в списке разделяются запятыми (без пробелов). Опция defaults обозначает устройство как устройство чтения/записи, асинхронное, блок-ориентированное, без возможности монтирования для обычных пользователей, с возможностью выполнения на нем программ. Для СD-RОМ указываются всего две опции: ro и поаиtо. Опция rо показывает, что файлы, находящиеся на этом устройстве, предназначены только для чтения, noauto что оно автоматически не монтируется. Опция поаиtо используется как для СD-RОМ, так и для дискет, чтобы они не монтировались автоматически, поскольку вы не знаете, будут ли они установлены при запуске. В то же время в записях файла, относящихся и к CD-ROM, и к дискетам, указывается, в каком каталоге они будут монтироваться при запуске, если вы все же решите монтировать их.
Последние два поля содержат целочисленные значения. Первое используется командой dитр для определения периодичности резервного копирования файловой системы. Последнее используется командой fsck для определения необходимости проверки системы и порядка возможной проверки. Если значение поля 1, то это корневой раздел. Значение 0 говорит о том, что проверять файловую систему при загрузке не нужно.
Ниже приведена копия файла /еtc/fstab. Первая его строка комментарий. Все строки комментариев начинаются со знака #. Файловая система /ргос это специальная файловая система, которую операционная система Linux использует для управления системными процессами. Никакому реальному устройству она не соответствует.
/etc/fstab
#<device> <mountpoint> <filesystemtype> <options> <dump> <fsckorder>
/dev/hda3 / ext2 defaults 0 1
/dev/hda2 none swap sw 0 0
/proc /proc proc defaults 0 0
/dev/fd0 /floppy auto defaults, noauto 0 0
/dev/cdrom /cdrom iso9660 defaults, ro, noauto 0 0
Чтобы указать в файле /еtc/fstab новую файловую систему, можно либо отредактировать его вручную, либо воспользоваться утилитой fstool, которая попросит вас ввести соответствующую информацию.
Файлы это частный, хотя и самый популярный, вид разделяемых ресурсов, доступ к которым операционная система должна контролировать. Существуют и другие виды ресурсов, с которыми пользователи работают в режиме совместного использования. Прежде всего это различные внешние устройства: принтеры, модемы, графопостроители и т. п. Область памяти, используемая для обмена дан- ными между процессами, также является примером разделяемого ресурса. Да и сами процессы в некоторых случаях выступают в этой роли, например, когда пользователи ОС посылают процессам сигналы, на которые процесс должен реагировать.
Во всех этих случаях действует общая схема: пользователи пытаются выполнить с разделяемым ресурсом определенные операции, а ОС должна решать, имеют ли пользователи на это право. Пользователи являются субъектами доступа, а разделяемые ресурсы объектами. Пользователь осуществляет доступ к объектам операционной системы не непосредственно, а с помощью прикладных процессов, которые запускаются от его имени. Для каждого типа объектов существует набор операций, которые с ними можно выполнять. Например, для файлов это операции чтения, записи, удаления, выполнения; для принтера - перезапуск, очистка очереди документов, приостановка печати документа и т. д. Система контроля доступа ОС должна предоставлять средства для задания прав пользователей по отношению к объектам дифференцированно по операциям, например, пользователю может быть разрешена операция чтения и выполнения файла, а операция удаления - запрещена.
Во многих операционных системах реализованы механизмы, которые позволяют управлять доступом к объектам различного типа с единых позиций. Так, представление устройств ввода-вывода в виде специальных файлов в операционных системах UNIX является примером такого подхода: в этом случае при доступе к устройствам используются те же атрибуты безопасности и алгоритмы, что и при доступе к обычным файлам и каталогам. Еще дальше продвинулась в этом направлении операционная система Windows NT\2000. В ней используется унифици- рованная структура - объект безопасности, которая создается не только для файлов и внешних устройств, но и для любых разделяемых (т.е. совместно используемых) ресурсов. Это позволяет использовать в Windows NT для контроля доступа к ресурсам любого вида общий модуль ядра менеджер безопасности.
В качестве субъектов доступа могут выступать как отдельные пользователи, так и группы пользователей. Определение индивидуальных прав доступа для каждого пользователя позволяет максимально гибко задать политику расходования разделяемых ресурсов в вычислительной системе. Однако этот способ приводит в больших системах к чрезмерной загрузке администратора рутинной работой по повторению одних и тех же операций для пользователей с одинаковыми правами. Объединение таких пользователей в группу и задание прав доступа в целом для группы является одним из основных приемов администрирования в больших системах.
У каждого объекта доступа существует владелец. Владельцем может быть как отдельный пользователь, так и группа пользователей. Владелец объекта имеет право выполнять с ним любые допустимые для данного объекта операции. Во многих операционных системах существует особый пользователь (root, superuser, администратор), который имеет все права по отношению к любым объектам системы, не обязательно являясь их владельцем. Под таким именем работает администратор системы, которому необходим полный доступ ко всем файлам и устройствам для управления политикой доступа.
Различают два основных подхода к определению прав доступа.
Мандатные системы доступа считаются более надежными, но менее гибкими, обычно они применяются в специализированных вычислительных системах с повышенными требованиями к защите информации. В универсальных системах используются, как правило, избирательные методы доступа, о которых речь пойдет дальше.
Для определенности будем далее рассматривать механизмы контроля доступа к таким объектам, как файлы и каталоги, но необходимо понимать, что эти же механизмы могут использоваться в современных операционных системах для контроля доступа к объектам любого типа и отличия заключаются лишь в наборе операций, характерных для того или иного класса объектов.
Каждый пользователь и каждая группа пользователей обычно имеют символьное имя, а также уникальный числовой идентификатор. При выполнении процедуры логического входа в систему пользователь сообщает свое символьное имя и пароль, а операционная система определяет соответствующие числовые идентификаторы пользователя и групп, в которые он входит. Все идентификационные данные, в том числе имена и идентификаторы пользователей и групп, пароли пользователей, а также сведения о вхождении пользователя в группы хранятся в специальном файле (файл /etc/passwd в UNIX) или специальной базе данных (в Windows NT).
Вход пользователя в систему порождает процесс-оболочку, который поддерживает диалог с пользователем и запускает для него другие процессы. Процесс-оболочка получает от пользователя символьное имя и пароль и находит по ним числовые идентификаторы пользователя и его групп. Эти идентификаторы связываются с каждым процессом, запущенным оболочкой для данного пользователя. Говорят, что процесс выступает от имени данного пользователя и данных групп пользователей. В наиболее типичном случае любой порождаемый процесс наследует идентификаторы пользователя и групп от процесса родителя.
Определить права доступа к ресурсу значит, определить для каждого пользователя набор операций, которые ему разрешено применять к данному ресурсу. В разных операционных системах для одних и тех же типов ресурсов может быть определен свой список дифференцируемых операций доступа. Для файловых объектов этот список может включать следующие операции:
Набор файловых операций ОС может состоять из большого количества элементарных операций, а может включать всего несколько укрупненных операций. Приведенный выше список является примером первого подхода, который позволяет весьма тонко управлять правами доступа пользователей, но создает значительную нагрузку на администратора. Пример укрупненного подхода демонстрируют операционные системы семейства UNIX, в которых существуют всего три операции с файлами и каталогами: читать (read, r), писать (write, w) и вы полнить (execute, x). Хотя в UNIX для операций используется всего три названия, в действительности им соответствует гораздо больше операций. Например, содержание операции выполнить зависит от того, к какому объекту она применяется. Если операция выполнить файл интуитивно понятна, то операция выполнить каталог интерпретируется как поиск в каталоге определенной записи. Поэтому администратор UNIX, по сути, располагает большим списком операций, чем это кажется на первый взгляд.
В ОС Windows NT разработчики применили гибкий подход - они реализовали возможность работы с операциями над файлами на двух уровнях: по умолчанию администратор работает на укрупненном уровне (уровень стандартных операций), а при желании может перейти на элементарный уровень (уровень индивидуальных операций).
В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой столбцы соответствуют всем файлам системы, строки - всем пользователям, а на пересечении строк и столбцов указываются разрешенные операции (рис. 16.1).
modern.txt |
Игра.exec |
class.dbf |
unix.ppt |
|
Olga |
читать |
выполнять |
нет доступа |
выполнять |
Andrey |
читать |
выполнять |
нет доступа |
выполнять читать |
Victor |
читать |
нет доступа |
нет доступа |
выполнять читать |
Vassya |
читать писать |
нет доступа |
создать |
нет доступа |
Практически во всех операционных системах матрица прав доступа хранится «по частям», то есть для каждого файла или каталога создается так называемый список управления доступом (Аccess Control List, ACL), в котором описываются права на выполнение операций пользователей и групп пользователей по отношению к этому файлу или каталогу. Список управления доступа является частью характеристик файла или каталога и хранится на диске в соответствующей области, например в индексном дескрипторе inode файловой системы ufs (FFS). Не все файловые системы поддерживают списки управления доступом, например, его не поддерживает файловая система FАТ, так как она разрабатывалась для однопользовательской однопрограммной операционной системы МS-DOS, для которой задача защиты от несанкционированного доступа не актуальна.
Обобщенно формат списка управления доступом можно представить в виде набора идентификаторов пользователей и групп пользователей, в котором для каждого идентификатора указывается набор разрешенных операций над объектом (рис. 16.2). Говорят, что список АСL состоит из элементов управления доступом (Ассess Сопtrol Е1етепts, АСЕ), при этом каждый элемент соответствует одному идентификатору. Список АСЕ с добавленным к нему идентификатором владельца называют характеристиками безопасности. В Windows NT создается специальная структура, содержащая эти характеристики безопасности, которая называется дескриптор защиты.
В приведенном примере процесс, который выступает от имени пользователя с идентификатором 3 и групп с идентификаторами 14, 52 и 72, пытается выполнить операцию записи (w) в файл. Файлом владеет пользователь с идентификатором 17. Операционная система, получив запрос на запись, находит характеристики безопасности файла (на диске или в буферной системной области) и последовательно сравнивает все идентификаторы процесса с идентификатором владельца файла и идентификаторами пользователей и групп в элементах АСЕ. В данном примере один из идентификаторов группы, от имени которой выступает процесс, а именно 52, совпадает с идентификатором одного из элементов АСЕ. Так как пользователю с идентификатором 52 разрешена операция записи (признак W имеется в наборе операций этого элемента), то ОС разрешает процессу выполнение операции.
Описанная обобщенная схема хранения информации о правах доступа и процедуры проверки имеет в каждой операционной системе свои особенности, которые рассматриваются далее на примере операционных систем UNIX и Windows 2000.
Файлы в UNIX имеют двух владельцев: пользователя (user owner) и группу (group owner). Группой называется определенный список пользователей системы. Пользователь системы может быть членом нескольких групп, одна из которых является первичной (primary), остальные дополнительными (supplementary).
Важной особенностью является то, что владелец-пользователь может не являться членом группы, владеющей файлом. Это дает гибкость в организации доступа к файлам. Совместное пользование файлами можно организовать практически для любого состава пользователей, создав соответствующую группу и установив для нее права на требуемые файлы. При этом для того чтобы некий пользователь получил доступ к этим файлам, достаточно включить его в группу, и наоборот - исключение из группы автоматически изменяет для пользователя права доступа к файлам.
Для определения владельца файла достаточно посмотреть подробный листинг команды ls l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы соответственно:
1 2 3 4 5 6 7 8
-rw-rr-- 1 andy group 235520 Dec 22 19:13 p1.txt
-rw-rwr-- 1 andy student 3450 Apr 1 12:00 joke
Владельцемпользователем вновь созданного файла является пользователь, который создал файл. Порядок назначения владельца-группы зависит от версии UNIX. Например, в SCO UNIX владельцем-группой является первичная группа пользователя, создавшего файл, а в Digital UNIX владелец-группа наследуется от владельца группы - каталога, в котором создается файл.
Владение файлом определяет тот набор операций, который пользователь может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла (табл. 17.1), может осуществлять только владелец (или суперпользователь), другие операции, такие как чтение, запись и запуск на выполнение (для исполняемых файлов) дополнительно контролируются правами доступа.
Операции изменения владельцев файла Таблица 17.1
Операция |
Команда |
Имеет право выполнить |
|
В системе BSD |
В системе SVR4 |
||
Изменение владельца - пользователя |
chown |
суперпользователь |
Владелец файла |
Изменение владельца - группы |
chgr |
суперпользователь |
Владелец файла только для группы, к которой сам принадлежит |
В операционной системе UNIX существуют три базовых класса доступа к файлу, в каждом из которых установлены соответствующие права доступа:
User access (u) |
Для владельца пользователя файла |
Group access (g) |
Для членов группы, являющейся владельцем файла |
Other access (o) |
Для остальных пользователей (кроме суперпользователя) |
UNIX поддерживает три типа прав доступа для каждого класса: на чтение (read, обозначается символом г), на запись (write, обозначается символом w) и на выполнение (execute, обозначается символом х).
С помощью команды Is -l можно получить список прав доступа к файлу:
…
-rw--r--r-- 1 andy group 36482 Dec 22 17:06 report.txt
drwxr-xr-- 2 andy group 64 Aug 15 11:00 temp
-rwxr-xr-- 1 andy group 4668 May 10 17:00 a.out
…
Права доступа листинга отображаются в первой колонке (за исключением первого символа, обозначающего тип файла). Наличие права доступа обозначается соответствующим символом, а отсутствие - символом '-'. Рассмотрим, например, права доступа к файлу a.out.
Тип файла |
Права владельца- пользователя |
Права владельца - группы |
Права остальных пользователей |
- |
rwx |
r-x |
r-- |
Обычный файл |
Чтение, запись, выполнение |
Чтение и выполнение |
Только чтение |
Права доступа могут быть изменены только владельцем файла или суперпользователем (superuser) - администратором системы. Для этого используется команда chmod. Ниже приведен общий формат этой команды.
Chmod file1 file2
В качестве аргументов команда принимает указание классов доступа (u владелец-пользователь, g владелец-группа, o - остальные пользователи, a - все классы пользователей), права доступа ('г - чтение, 'w' - запись, 'х' - выполнение) и операцию, которую необходимо произвести (+ - добавить, '-' - удалить и '=' - присвоить) для списка файлов file 1, file2 и т.д. Например, команда
$ chmod g-wx ownfile
лишит членов группы-владельца файла ownfile права на запись и выполнение этого файла.
В одной команде можно задать различные права для нескольких классов доступа, разделив их запятыми.
Приведем несколько примеров:
$ chmod a+w text |
Предоставить право на запись для всех пользователей |
$ chmod go=r text |
Установить право на чтение для всех пользователей за исключением владельца |
$ chmod g+x-w runme |
Добавить для группы право на выполнение файла runme |
$ chmod u+w, og+r-w t1 t2 |
Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на запись для всех пользователей, исключая владельца |
Последний пример демонстрирует достаточно сложную установку прав доступа. Вы можете установить сразу все девять прав доступа, используя числовую форму команды chmocl(l):
$ chmod 754 *
Число определяется следующим образом: нужно представить права доступа в двоичном виде (0 - отсутствие соответствующего права, 1 - его наличие) и каждую триаду, соответствующую классу доступа, в свою очередь преобразовать в десятичное число.
Владелец |
Группа |
Остальные |
r w x |
r - x |
r - - |
1 1 1 |
1 0 1 |
1 0 0 |
7 |
5 |
4 |
Таким образом, приведенный пример эквивалентен следующей символьной форме chmod(l):
$ chmod u=rwx, g=rx, o=r
Значение прав доступа различно для разных типов файлов. Для файлов операции, которые можно производить, следуют из самих названий прав доступа. Например, чтобы просмотреть содержимое файла командой cat, пользователь должен иметь право на чтение (г). Редактирование файла, т. е. его изменение, предусматривает наличие права на запись (w). Наконец, для того чтобы запустить некоторую программу на выполнение, вы должны иметь соответствующее право (х). Исполняемый файл может быть как скомпилированной программой, так и скриптом командного интерпретатора shell. В последнем случае вам также понадобится право на чтение, поскольку при выполнении скрипта командный интерпретатор должен иметь возможность считывать команды из файла. Все сказанное, за исключением, пожалуй, права на выполнение, имеющего смысл лишь для обычных файлов и каталогов, справедливо и для других типов файлов: специальных файлов устройств, именованных каналов и сокетов. Например, чтобы иметь возможность распечатать документ, вы должны иметь право на запись в специальный файл устройства, связанный с принтером. Для каталогов эти права имеют другой смысл, а для символических связей они вообще не используются, поскольку контролируются целевым файлом.
Права доступа для каталогов не столь очевидны. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталог; (например, подробный листинг команды Is -l), системе придется «заглянуть» в метаданные файлов, что требует права на выполнения для каталога. Право на выполнения также потребуется для каталога, в который вы захотите перейти (т. е. сделать его текущим) с помощью команды cd (1). Это же право нужно иметь для доступа ко всем каталогам на пути к указанному. Например, если вы установите право на выполнения для всех пользователей в одном из своих подкаталогов, он все равно останется недоступным, пока ваш домашний каталог не будет иметь такого же права.
Права г и х действуют независимо, право х для каталога не требует наличия права г, и наоборот. Комбинацией этих двух прав можно добиться интересных эффектов, например, создания «темных» каталогов, файлы которых доступны только в случае, если пользователь заранее знает их имена, поскольку получение списка файлов таких каталогов запрещено. Данный прием, кстати, используется при создании общедоступных архивов в сети (FTP-серверов), когда некоторые разделы архива могут использоваться только «посвященными», знающими о наличии того или иного файла в каталоге. Приведем пример создания «темного» каталога.
$ pwd # Где мы находимся ?
/home/andrey
$ mkdir darkroom # Создадим каталог
$ ls -l # Получим его атрибуты
…
drwxr--r-- 2 andy group 65 jun 23 21:00 darkroom
$ chmod a-r+x darkroom #Превратим darkroom в темный каталог
$ ls -l # Получим его атрибуты
…
d-wx--x--x 2 andy group 65 jun 23 21:00 darkroom
$ cp file1 darkroom # Поместим в каталог darkroom некоторый #файл
$ cd darkroom # Перейдем в этот каталог
$ ls -l darkroom # Попытаемся получить листинг каталога
##permission denied # Попытка не удалась
$ cat file1 # Тем не менее с файлом можно работать…
Особого внимания требует право на запись для каталога. Создание и удаление файлов в каталоге требуют изменения его содержимого, и, следовательно, права на запись в этот каталог. Самое важное, что при этом не учитываются права доступа для самого файла. То есть для того, чтобы удалить некоторый файл из каталога, не обязательно иметь какие-либо права доступа к этому файлу, важно лишь иметь право на запись для каталога, в котором находится этот файл. Имейте в виду, что право на запись в каталог дает большие полномочия, и предоставляйте это право с осторожностью. Правда, существует способ несколько обезопасить себя в случае, когда необходимо предоставить право на запись другим пользователям, - установка флага Sticky bit на каталог. Но об этом будет сказано чуть позже.
В табл. 17.2 приведены примеры некоторых действий над файлами и минимальные права доступа, необходимые для выполнения этих операций.
Примеры прав доступа Таблица 17.2
Команда |
Смысл действия |
Минимальные права доступа |
|
Для обычного файла |
Для каталога, содержащего файл |
||
cd /u/andrey |
Перейти в каталог /u/andrey |
__ |
x |
ls /u/andrey/*.c |
Вывести все файлы с расширением с этого каталога |
__ |
r |
ls -s /u/andrey/*.c |
Вывести дополнительную информацию об этих файлах (размер) |
__ |
rx |
cat report.txt |
Вывести на экран содержимое файла report.txt |
r |
x |
cat >>report.txt |
Добавить данные в файл report.txt |
w |
x |
runme.sh |
Выполнить скрипт командного интерпретатора runme.sh |
x |
x |
runme |
Выполнить программу runme |
rx |
x |
rm runme |
Удалить файл runme в текущем каталоге |
__ |
xw |
Операционная система производит проверку прав доступа при создании, открытии (для чтения или записи), запуске на выполнение или удалении файла. При этом выполняются следующие проверки:
Система проводит проверки в указанной последовательности. Например, если пользователь является владельцем файла, то доступ определяется исключительно из прав владельца-пользователя, права владельца-группы не проверяются, даже если пользователь является членом владельца-группы. Чтобы проиллюстрировать это, рассмотрим следующее:
----rw-r-- 2 andy group 65 Dec 22 19:13 filel
Даже если пользователь andy является членом группы group, он не сможет ни прочитать, ни изменить содержимое файла filel. В то же время все остальные члены этой группы имеют такую возможность. В данном случае, владелец файла обладает наименьшими правами доступа к нему. Разумеется, рассмотренная ситуация носит гипотетический характер, поскольку пользователь andy в любой момент может изменить права доступа к данному файлу как для себя (владельца), так и для группы, и всех остальных пользователей в системе.
Мы рассмотрели основные атрибуты, управляющие доступом к файлу. Существует еще несколько атрибутов, изменяющих стандартное выполнение различных операций. Как и в случае прав доступа, эти атрибуты по-разному интерпретируются для каталогов и других типов файлов.
Дополнительные атрибуты также устанавливаются утилитой chmod, но вместо кодов «г», «w» или «х» используются коды из табл.17.3. Например, для установки атрибута SGID для файла file1 необходимо выполнить команду
$ chmod g+s file1
В табл. 17.3 приведены дополнительные атрибуты для файлов, и показано, как они интерпретируются операционной системой.
Дополнительные атрибуты для обычных файлов
Таблица 17.3.
Код |
Название |
Значение |
t (1000) |
Sticky bit |
Сохранить образ выполняемого файла в памяти после завершения выполнения |
s (4000) |
Set UID, SUID |
Установить UID процесса при выполнении |
s (2000) |
Set GID, SGID |
Установить GID процесса при выполнении |
1 |
Блокирование |
Установить обязательное блокирование файла |
Примечание. В таблице в столбце «Код» в скобках указано числовое представление данного бита.
Установка атрибута Sticky bit (действительное название - save text mode) редко используется в современных версиях UNIX для файлов. В ранних версиях этот атрибут применялся с целью уменьшить время загрузки наиболее часто запускаемых программ (например, редактора или командного интерпретатора). После завершения выполнения задачи ее образ (т. е. код и данные) оставались в памяти, поэтому последующие запуски этой программы занимали значительно меньше времени.
Атрибуты (или флаги) SUID и SGID позволяют изменить права пользователя при запуске на выполнение файла, имеющего эти атрибуты. При этом привилегии будут изменены (обычно расширены) лишь на время выполнения и только в отношении этой программы.
Обычно запускаемая программа получает права доступа к системным ресурсам на основе прав доступа пользователя, запустившего программу. Установка флагов SUID и SGID изменяет это правило, назначая права доступа исходя из прав доступа владельца файла. Таким образом, запущенный исполняемый файл, которым владеет суперпользователь, получает неограниченные права доступа к системным ресурсам, независимо от того, кто его запустил. При этом установка SUID приведет к наследованию прав владельца-пользователя файла, а установка SGID - владельца-группы.
В качестве примера использования этого свойства рассмотрим утилиту passwd, позволяющую пользователю изменить свой пароль. Очевидно, что изменение пароля должно привести к изменению содержимого определенных системных файлов (файла пароля /etc/passwd или /etc/shadow, или базы данных пользователей, если используется дополнительная защита системы). Понятно, что предоставление права на запись в эти файлы всем пользователям системы является отнюдь не лучшим решением. Установка SUID для программы passwd (точнее, на файл /usr/bin/passwd - исполняемый файл утилиты passwd) позволяет изящно разрешить это противоречие. Поскольку владельцем файла /usr/bin/passwd является суперпользователь (его имя в системе - root), то кто бы ни запустил утилиту passwd на выполнение, во время работы данной программы он временно получает права суперпользователя, т.е. может производить запись в системные файлы, защищенные от остальных пользователей.
$ -lFa /usr/bin/passwd
-r-sr-sr-x 3 root sys 15688 Oct 25 1999 /usr/bin/passwd*
Понятно, что требования по безопасности для такой программы должны быть повышены. Утилита passwd должна производить изменение пароля только пользователя, запустившего ее, и не позволять никакие другие операции (например, вызов других программ).
Блокирование файлов позволяет устранить возможность конфликта, когда две или более задачи одновременно работают с одним и тем же файлом.
Однако вернемся к обсуждению дополнительных атрибутов для каталогов.
Дополнительные атрибуты для каталогов
Таблица 17.4.
Код |
Название |
Значение |
t (1000) |
Sticky bit |
Позволяет пользователю удалять только файлы, которыми он владеет или имеет права на запись |
s (4000) |
Set GID, SGID |
Позволяет изменить правило установки владельца-группы создаваемых файлов, аналогично реализованному в BSD UNIX |
При обсуждении прав доступа отмечалось, что предоставление права на запись в каталог дает достаточно большие полномочия. Имея такое право, пользователь может удалить из каталога любой файл, даже тот, владельцем которого он не является и в отношении которого не имеет никаких прав. Установка атрибута Sticky bit для каталога позволяет установить дополнительную защиту файлов, находящихся в каталоге. Из такого каталога пользователь может удалить только файлы, которыми он владеет, или на которые он имеет явное право доступа на запись, даже при наличии права на запись в каталог. Примером может служить каталог /tmp, который является открытым на запись для всех пользователей, но в котором может оказаться нежелательной возможность удаления пользователем чужих временных файлов.
Атрибут SGID также имеет иное значение для каталогов. При установке этого атрибута для каталога вновь созданные файлы этого каталога будут наследовать владельца-группу по владельцу-группе каталога. Таким образом для UNIX версии System V удается имитировать поведение систем версии BSD, для которых такое правило наследования действует по умолчанию.
Посмотреть наличие дополнительных атрибутов можно с помощью подробного списка файлов:
$ ls -I
…
drwxrwxrwt 5 sys sys 367 Dec 19 20:30 /tmp
-r-sr-sr-x 3 root sys 15688 Oct25 1998 /usr/bin/passwd
Файловая система NTFS 5.0 впервые появилась в ОС Windows 2000 и продолжает и развивает принципы файловой системы NTFS, разработанной для Windows NT. В файловых системах NTFS впервые появилась возможность установки прав доступа на локальные файлы и папки.
Устанавливая пользователям определенные разрешения для файлов и каталогов (папок), администраторы системы могут зашищать конфиденциальную информацию от несанкционированного доступа. Каждый пользователь должен иметь определенный набор разрешений на доступ к конкретному объекту файловой системы. Кроме того, он может быть владельцем файла или папки, если сам их создает. Администратор может назначить себя владельцем любого объекта файловой системы (файла или папки). Следует, однако, помнить, что обратная передача владения от администратора к пользователю невозможна. Администратор должен зарегистрироваться в системе под именем того пользователя, которому он хочет передать владение файлом или папкой, а затем стать владельцем нужного объекта.
Разрешения пользователя на доступ к объектам файловой системы работают по принципу дополнения (аддитивности). Это значит, что действующие разрешения, то есть те разрешения, которые пользователь реально имеет в отношении конкретного каталога или файла, образуются из всех прямых и косвенных разрешений, назначенных пользователю для данного объекта с помощью логической функции ИЛИ. Например, если пользователь имеет прямо назначенное разрешение для каталога на чтение, а косвенно через членство в группе ему дано разрешение на запись, то в результате пользователь сможет читать информацию в файлах каталога и записывать в них данные.
Следует все же заметить, что правило сложения разрешений с помощью логического ИЛИ не выполняется, когда пользователь имеет определенное разрешение, а группе, в которую он входит, отказано в этом разрешении (или наоборот). В этом случае отказ в разрешении имеет более высокий приоритет над предоставлением разрешения, т. е. в результате пользователь не будет иметь данного разрешения. Происходит это потому что в списке контроля доступа сначала идут отказы на доступ, и система при просмотре списка, найдя такой элемент, дальше список не просматривает.
В файловой системе NTFS 5.0 существуют следующие основные типы разрешений на доступ (рис.18.1):
Кроме этого верхнего уровня стандартных разрешений, можно перейти на более низкий (элементарный уровень) и детализировать каждое из разрешений.
Можно разрешить некоторый вид доступа или отказать в нем (запретить). Появление возможности отказа пользователю или группе в разрешении для файлов и каталогов сделало ненужным разрешение «Нет доступа» (No Access), применявшееся в Windows NT 4.0. Теперь для отказа пользователю в разрешении на доступ к какому-либо файлу или папке следует включить пользователя в группу, которой отказано в разрешении «Полный доступ» (Full Соntrol) для данного объекта файловой системы.
Для назначения пользователю или группе разрешения на доступ к определенному файлу:
Примечание. Отказ в одном из разрешений в группе Разрешения может вызвать отказ во множестве разрешений. Например, если отказать в разрешении Полный доступ, это приведет к отказу во всех остальных разрешениях.
Каждое из перечисленных выше стандартных разрешений состоит из набора более специальных (особых) разрешений, задающих возможность выполнения того или иного конкретного действия с файлами или каталогами. В табл. 18.1 показано соответствие стандартных и специальных разрешений. Более детально специальные разрешения рассмотрены ниже.
Соответствие стандартных и специальных разрешений для файлов
Таблица 18.1
Специальные разрешения |
Стандартные разрешения |
||||
Полный доступ |
Изменить |
Чтение и выполнение |
Чтение |
Запись |
|
Обзор папок/ Выполнение файлов |
х |
х |
х |
||
Содержание папок/ Чтение данных |
х |
х |
х |
х |
|
Чтение атрибутов |
х |
х |
х |
х |
|
Чтение дополнительных атрибутов |
х |
х |
х |
х |
|
Создание файлов / Запись данных |
х |
х |
х |
||
Создание папок / Дозапись данных |
х |
х |
х |
||
Запись атрибутов |
х |
х |
х |
||
Запись дополнительных атрибутов |
х |
х |
х |
||
Удаление подпапок и файлов |
х |
||||
Удаление |
х |
х |
|||
Чтение разрешений |
х |
х |
х |
х |
|
Смена разрешений |
х |
||||
Смена владельца |
х |
||||
Синхронизация |
х |
х |
х |
х |
Для более тонкой настройки доступа к файлу:
Специальные разрешения
Таблица 18.2
Специальное разрешение |
Описание |
Обзор папок/ Выполнение файлов (Traverse Folder/Execute File) |
Разрешение Обзор папок определяет возможность перемещения по папкам файловой системы вне зависимости от того, имеет или не имеет пользователь разрешение для пересекаемых в процессе перемещения подпапок. На работу этого разрешения влияет параметр групповых политик Обход перекрестной проверки (Bypass Traverse Checking). Разрешение Выполнение файлов определяет возможность исполнения программы. |
Содержание папок/ Чтение данных (List Folder/Read Data) |
Разрешение Содержание папки определяет возможность просмотра имен файлов и подпапок данной папки (относится только к папке). Разрешение Чтение данных определяет возможность просмотра данных файла |
Чтение атрибутов (Read Attributes) |
Определяет возможность просмотра атрибутов файла или папки. Сами атрибуты определяются ОС Windows 2000 |
Чтение дополнительных атрибутов (Read Extended Attributes) |
Определяет возможность просмотра дополнительных атрибутов файла или папки. Сами дополнительные атрибуты определяются ОС Windows 2000 |
Создание файлов / Запись данных (Create Files/ Write data) |
Разрешение Создание файлов определяет возможность создания файлов внутри папки (относится только к папкам). Разрешение Запись данных определяет возможность изменения содержимого файлов или перезаписи существующих данных файла новой информацией (относится только к файлам) |
Создание папок / Дозапись данных (Create Folders/ Append Data) |
Разрешение Создание папок определяет возможность создания подпапок внутри данной папки (относится только к папкам). Разрешение Дозапись данных определяет возможность присоединения новых данных к существующему файлу без изменения, уничтожения или перезаписи существующей информации (относится только к файлам) |
Запись атрибутов (Write Attributes) |
Определяет возможность изменение атрибутов файла или папки. Атрибуты определяются ОС Windows 2000 |
Запись дополнительных атрибутов (Write Extended Attributes) |
Определяет возможность изменение дополнительных атрибутов файла или папки. Дополнительные атрибуты определяются программой и могут быть ею изменены |
Удаление подпапок и файлов (Delete Subfolders and Files) |
Определяет возможность удаления подпапок и файлов, находящихся в данной папке |
Удаление (Delete) |
Определяет возможность удаления файла или папки. Если вам отказано в разрешении Удаление для данной папки или файла, вы все же сможете удалить их, получив разрешение Удаление подпапок и файлов на родительскую папку |
Чтение разрешений (Read Permissions) |
Определяет возможность чтения таких разрешений для файлов и папок, как Полный доступ, Чтение и т.д. |
Смена разрешений (Change Permissions) |
Определяет возможность изменения таких разрешений для файлов и папок, как Полный доступ, Чтение и т.д. |
Смена владельца (Take Ownership) |
Определяет возможность вступления во владение данным файлом или папкой. Владелец файла или папки может всегда изменить разрешение к этому объекту, независимо от других разрешений |
Синхронизация (Synchronize) |
Определяет возможность потоков переходить в состояние ожидания на обработчике данного файла или папки и синхронизироваться с другими потоками, запрашивающими синхронизацию. Данное разрешение относится только к многопоточным и многопроцессным приложениям |
Для назначения разрешения на доступ к папке (каталогу) пользователю или группе:
Если не установлен флажок Применять эти разрешения к объектам и контейнерам только внутри этого контейнера (Apply these permissions to object and/or containers within this container only), установленные вами разрешения будут распространяться не только на объекты, определенные полем Применять, но и на все объекты, находящиеся ниже по дереву.
Соответствие стандартных и специальных разрешений для папок
Таблица 18.3
Специальные разрешения |
Стандартные разрешения |
|||||
Пол-ный до-ступ |
Изменение |
Чтение и выпол-нение |
Список содер-жимого папки |
Чте-ние |
За-пись |
|
Обзор папок/ Выполнение файлов |
Х |
Х |
Х |
Х |
||
Содержание папок/ Чтение данных |
Х |
Х |
Х |
Х |
Х |
|
Чтение атрибутов |
Х |
Х |
Х |
Х |
Х |
|
Чтение дополнитель-ных атрибутов |
Х |
Х |
Х |
Х |
Х |
|
Создание файлов / Запись данных |
Х |
Х |
Х |
|||
Создание папок / Дозапись данных |
Х |
Х |
Х |
|||
Запись атрибутов |
Х |
Х |
Х |
|||
Запись дополнитель-ных атрибутов |
Х |
Х |
Х |
|||
Удаление подпапок и файлов |
Х |
|||||
Удаление |
Х |
Х |
||||
Чтение разрешений |
Х |
Х |
Х |
Х |
Х |
Х |
Смена разрешений |
Х |
|||||
Смена владельца |
Х |
|||||
Синхрониза-ция |
Х |
Х |
Х |
Х |
Х |
Х |
Администрирование больших компьютерных сетей, где серверы поддерживают работу сотен пользователей, сопряжено с рядом сложностей. Одна из них - учет дискового пространства сервера, занятого файлами сотрудников компании. Как правило, пользователи, хранящие свои файлы на сервере, мало заботятся об актуальности информации и об уничтожении устаревших или ненужных данных. Множество временных файлов и копий одного и того же файла, находящиеся в различных папках, лишь усугубляют ситуацию. В результате в считанные месяцы даже на больших жестких дисках сервера может не оказаться необходимого для работы свободного пространства.
Как правило, в больших организациях дерево папок весьма разветвлено, поэтому визуальный контроль расходования дискового пространства пользователями отнимает у администраторов много времени и усилий.
Подобная проблема просто решается с помощью введения квот на дисковое пространство, доступное для работы каждому пользователю. В предыдущих версиях операционной системы Windows NT не было штатных возможностей ввести квоту на доступное дисковое пространство, поэтому любой пользователь мог распоряжаться всем пространством жестких дисков сервера. В Windows 2000 администратор может квотировать дисковое пространство по каждому тому и для каждого пользователя.
Windows 2000 учитывает пространство, занимаемое файлами, владельцем которых является контролируемый пользователь: если пользователь владеет файлом, размер последнего добавляется к общей сумме занимаемого пользователем дискового пространства. Важно отметить, что, поскольку квотирование выполняется по каждому тому, не имеет значения, находятся ли тома на одном физическом жестком диске или на различных устройствах.
После установки квот дискового пространства пользователь сможет хранить на томе ограниченный объем данных, в то время как на этом томе может оставаться свободное пространство. Если пользователь превышает выданную ему квоту, в журнал событий вносится соответствующая запись. Затем, в зависимости от конфигурации системы, пользователь либо сможет записать информацию на том (более мягкий режим), либо ему будет отказано в записи из-за отсутствия свободного пространства.
Устанавливать и просматривать квоты на диске можно только в разделе с NTFS 5.0 и при наличии необходимых полномочий (задаваемых с помощью локальных или доменных групповых политик) у пользователя, устанавливающего квоты.
Для установки квоты:
Укажите мышью конфигурируемый том и нажмите правую кнопку мыши. В появившемся контекстном меню выберите команду Свойства. Появится окно свойств тома. Перейдите в нем на вкладку Квота (Quota) (рис. 19.1).
Чтобы узнать, какие пользователи превысили выделенную им квоту (в мягком режиме), нажмите кнопку Записи квот (Quota Entries). Появится окно Записей квот (рис. 19.2), где будет отображен список пользователей с параметрами их квот и объемом используемого ими дискового пространства.
Учетные записи пользователей, которые превысили установленную для них квоту, отмечены специальным значком в столбце Состояние (Status).
В окне Записей квот можно изменить параметры квоты, задаваемой для конкретного пользователя. Для этого выделите конфигурируемую строку и дважды щелкните на ней - появится окно диалога Параметры квоты (Quota Settings).
В предыдущих версиях Windows NT право владения файлом или папкой являлось характеристикой, жестко привязанной к создателю данного объекта. Пользователь, создавший файл или папку, становился владельцем этого объекта. Право владения не могло быть передано другому пользователю. Единственное исключение составлял администратор, который мог стать владельцем файла или папки. Сам пользователь не мог передать право владения папкой или файлом другому пользователю.
Операционная система Windows 2000 обеспечивает более гибкое пользование таким средством обеспечения безопасности информации, как право владения объектом файловой системы. Теперь любой пользователь может назначить себя владельцем какого-либо объекта файловой системы. Естественно, что для этого он должен иметь необходимые разрешения. Кроме того, с помощью локальных или доменных групповых политик можно указывать, какие пользователи всегда могут становиться владельцами файлов или других объектов (по умолчанию такое право имеют только администраторы), при этом они могут даже не иметь никаких разрешений для этого объекта.
Примечание. Из вышесказанного следует принцип восстановления разрешений для любого объекта (в том числе для объектов, у которых ошибочно удалены все разрешения): нужно стать его владельцем, а затем установить нужные разрешения для других пользователей и групп.
Для передачи владения объектом файловой системы или для просмотра текущего владельца файла или папки откройте соответствующее окно свойств, перейдите на вкладку Безопасность, затем нажмите кнопку Дополнительно. Появится окно Параметры управления доступом (рис. 19.2). Перейдите на вкладку Владелец (Owner) этого окна.
Текущий владелец объекта виден в поле Текущий владелец этого элемента (Current owner of this item). В списке Изменить владельца на (Change owner) можно просмотреть учетные записи, обладающие правом получения во владение данного объекта файловой системы. Выделите учетную запись пользователя, которому вы хотите передать право владения и нажмите кнопки Применить (Арр1у) и ОК.
Рано или поздно пользователь сталкивается с проблемой нехватки дискового пространства. Для решения этой проблемы существует несколько путей:
У каждого варианта есть свои достоинства и свои недостатки. Например, при использовании программ-архиваторов вам придется самостоятельно производить сжатие файлов, а при необходимости использовать информацию в них содержащуюся, вы должны произвести распаковку этих файлов. Процесс сжатия и распаковки не автоматизирован.
Этот недостаток программ-архиваторов устраняют программы-дисковые компрессоры. Они находятся резидентно в памяти. При записи данных на диск, программа их сжимает, при чтении с сжатого диска дисковый компрессор автоматически распаковывает данные в оперативной памяти. Недостатком этих программ можно считать занятие центрального процессора при сжатии и распаковке информации и расход оперативной памяти для хранения кода программыкомпресора. Интерфейс таких программ также не прозрачен. В системе после сжатия диска появляется дополнительный несущий диск. Программы компрессоры нуждаются в конфигурировании и в запуске (часто в файле автозапуска типа файла autoexec.bat). Пользователь должен помнить о том, что он работает на сжатом диске, и не все программы могут работать с такими данными (особенно сторонние утилиты, не входящие в состав данной ОС).
Начиная с файловой системы NTFS 4.0, возможность сжатия файлов встроена в саму файловую систему.
Для сжатия файла выполните следующую последовательность действий:
Щелкните файл или папку, которую нужно сжать, правой кнопкой мыши.
Выберите Свойства в контекстном меню.
На вкладке Общие нажмите кнопку Другие. Появится окно Дополнительные атрибуты (рис.19.3).
Установите флажок Сжимать содержимое для экономии места на диске.
Если выбрано сжатие папки, будет предложено выбрать нужный параметр для подтверждения изменений атрибутов.
Существует возможность выделения при просмотре сжатых файлов и папок. Для этого:
Откройте объект Свойства папки на панели управления.
Выберите вкладку Вид (рис.19.4).
Установите флажок Отображать сжатые файлы и папки другим цветом.
Примечание. Чтобы открыть приложение панели управления, нажмите кнопку Пуск, выберите команды Настройка и Панель управления и дважды щелкните по соответствующему значку. Это диалоговое окно можно также открыть, если в меню Сервис программы Проводник выбрать пункт Свойства папки.
Эта команда выполняет вывод информации или изменение сжатия файлов или папок (каталогов) в разделе NTFS.
Синтаксис: compact [/c|/u] [/s[:каталог]] [/a] [/q] [/i] [/f] [имя_файла[...]]
Параметры команды:
Уплотняет заданный каталог или файл.
Разуплотняет заданный каталог или файл.
Задает выполнение операции (уплотнения или разуплотнения) во всех подкаталогах заданного или текущего каталога.
Отображает скрытые и системные файлы.
Включает в отчет только существенные сведения.
Игнорирует ошибки.
Принудительно уплотняет или разуплотняет каталог или файл. Используется в случае, когда предыдущая операция над данным каталогом или файлом была прервана сбоем системы. Для полного уплотнения частично уплотненного файла используются ключи /c и /f и задается имя такого файла.
Задает имя файла или каталога. Может быть использовано несколько имен папок и шаблоны (* и ?).
Примеры использования
Для уплотнения файлов в текущем каталоге и всех подкаталогах и установки атрибута уплотнения в текущем каталоге и всех его подкаталогах используется следующая команда: compact /c /s
Для уплотнения всех файлов с расширением .bmp в каталоге \Tmp и его подкаталогах : compact /c /s \tmp *.bmp
Для окончательного уплотнения файла Zebra.bmp, который был частично уплотнен до сбоя системы, применяется следующая команда: compact /c /f zebra.bmp
Для удаления атрибута уплотнения в каталоге C:\Tmp, но без изменения уплотнения файлов в этом каталоге, можно использовать следующую команду:
compact /u c:\tmp
Точки соединения (link) представляют собой новое средство, позволяющее отображать целевую папку в пустую папку, находящуюся в пространстве имен файловой системы NTFS 5.0 локального компьютера. Целевой папкой может служить любой допустимый путь Windows 2000. Точки соединения NTFS поддерживаются только в NTFS 5.0.
Примечание. Создание точек соединения NTFS аналогично монтированию некоторой файловой системы на пустой каталог в файловых системах UNIX .
Исторически фирма Microsoft при создании своих файловых систем использовала понятие логического диска. Таких логических дисков в системе можно создать 26 штук. Существование таких дисков оправдано тем, что необходимо каким-то образом наводить порядок в том количестве информации, которое хранится на персональном компьютере. Например, на диске С: обычно хранится системная информация, на другом диске можно хранить программы и данные, относящиеся к производственной деятельности, на третий диск можно поместить игровые программы и т.д. Можно выбрать и другую идеологию. Если на персональном компьютере работают несколько человек, то каждому можно выделить отдельный диск.
Однако пользователям, работавшим ранее в других ОС (производства других фирм), такое количество дисков может показаться непривычным. Им удобнее работать в одной файловой системе, не разделенной на диски. Чтобы осуществить такой плавный переход на единую файловую систему и были разработаны точки соединения NTFS. На файловой системе FAT такое проделать не удастся.
Точки соединения NTFS прозрачны для приложений. Исключение составляет случай, когда информация об определенной точке соединения необходима программе для работы. Прозрачность в данном случае означает, что приложение или пользователь, осуществляющий доступ к локальной папке NTFS, автоматически перенаправляются к другой папке.
С помощью утилиты mountvol.ехе можно:
Применяя утилиту mountvol, можно избежать использования большого количества имен устройств, поскольку обращение к необходимому тому происходит через корневую папку. Утилита mountvol создает неизменные связи с корневыми папками локального тома файловой системы. Она применяет в работе новую технологию, гарантируюшую, что при изменениях в параметрах оборудования целевая папка не изменяется.
Синтаксис вызова утилиты тоипtvol:
mountvol [устройство:]путь имя_тома,
где
[устройство:]путь определяет существующую папку NTFS 5.0, являющуюся точкой подключения тома; имя_тома определяет имя подключаемого тома.
Параметры утилиты тоипtvol:
/D уничтожение существующей точки подключения у указанной папки.
/L отображение списка томов, подключенных к данной папке.
Подключение тома к точке соединения. Предположим, что на жестком диске компьютера Windows 2000 создано два тома (С: и D:). На этом же компьютере установлено устройство СD-RОМ (Е:). Том С: отформатирован под NTFS, поэтому на нем можно расположить несколько точек соединения NTFS. В приведенных здесь примерах предполагается, что все необходимые для работы с точками соединения NTFS инструменты находятся в папке %SystemRoot%\System32, поэтому их можно запустить, находясь в любом месте дерева папок файловой системы. Все описанные ниже команды выполняются из командной строки.
Для того чтобы создать соединение с корневой папкой тома файловой системы:
Введите с клавиатуры команду тоипtvol и просмотрите список имен внутренних устройств, назначенных томам данной машины. Предположим, что получен следующий результат:
Возможные значения Имени_Тома вместе с текущими точками подключения:
\\?\Volume{fccfe1d2-932a-11d5-bba4-806d6172696f}\
C:\
\\?\Volume{fccfe1d3-932a-11d5-bba4-806d6172696f}\
D:\
\\?\Volume{fccfe1d1-932a-11d5-bba4-806d6172696f}\
E:\
\\?\Volume{fccfe1d0-932a-11d5-bba4-806d6172696f}\
A:\
mkdir CD
mountvol CD \\?\Volume{fccfe1d1-932a-11d5-bba4-806d6172696f}\
mkdir MoreDiskSpace
mountvol CD \\?\Volume{fccfe1d3-932a-11d5-bba4-806d6172696f}\
mountvol CD /L
mountvol MoreDiskSpace /L
Теперь можно провести еще одно, весьма «суровое» испытание работоспособности точки соединения NTFS, поскольку после подключения тома к точке соединения вы больше не нуждаетесь в имени тома. Поэтому, запустив оснастку Управление дисками (Disk Management), можно удалить имя устройства D: и СD-RОМ. Несмотря на исчезновение имен устройств, вы все же можете получить доступ к ним, используя созданные точки соединения. Конечно, вам следует внимательно следить за тем, чтобы не нарушить работу пользователей и программ, напрямую обращающихся к тому с помощью его имени.
Удаление точки соединения. Для удаления точки соединения введите с клавиатуры следующие команды:
mountvol CD /d
Mountvol MoreDiskSpace /d
Для работы с точками соединения можно использовать оснастку Управление дисками, имеющую графический интерфейс. Для создания точки соединения:
Запустите оснастку Управление дисками.
Для удаления точки соединения:
Операционная система не всегда располагает информацию файлов и папок в одном непрерывном пространстве. Фрагменты данных могут находиться в различных кластерах жесткого диска. В результате при удалении файлов освобождающееся дисковое пространство также становится фрагментированным. Чем выше степень фрагментации жесткого диска, тем ниже производительность файловой системы. Причем фрагментации подвержены обе файловые системы Windows NT/2000 FAT и NTFS.
Для решения этой проблемы в состав операционной системы Windows 2000 включена оснастка Дефрагментация диска (Disk Defragmenter). В процессе дефрагментации кластеры диска организуются таким образом, чтобы файлы, папки и свободное пространство по возможности располагались непрерывно. В результате значительно повышается производительность файловой системы, поскольку сокращается количество операций ввода/вывода, необходимое для чтения определенного объема информации, уменьшается количество перемещений магнитной головки диска. Следует отметить, что при дефрагментации свободное пространство не объединяется в одну непрерывную область, а располагается в нескольких областях. Это значительно сокращает время выполнения дефрагментации и практически не уменьшает производительность файловой системы, получаемую после дефрагментации.
Поскольку операционная система Windows 2000 резервирует в начале жесткого диска пространство для системных файлов, оснастка Дефрагментация диска не помещает файлы в зарезервированную область жесткого диска, а переносит их за ее пределы.
Оснастка Дефрагментация диска работает с томами жесткого диска, сформатированными для файловых систем FAT, FAT32 и NTFS. Она осуществляет выполнение двух отдельных операций анализ и дефрагментацию. В процессе анализа на томе жесткого диска не выполняются никакие изменения. Все необходимые перемещения информации производятся при дефрагментации. В определенный момент времени дефрагментации может быть подвергнут только один том.
Для запуска оснастки Дефрагментация диска:
В окне Мой компьютер или Проводник укажите дефрагментируемый том и нажмите правую кнопку мыши.
В открывшемся контекстном меню выберите команду Свойства.
Появится окно свойств тома. Перейдите на вкладку Сервис (Tools).
В открывшемся окне нажмите кнопку Выполнить дефрагментацию (Defragment Now).
В результате запустится оснастка Дефрагментация диска. В верхней части ее окна находится список томов жесткого диска, которые можно проанализировать или дефрагментировать. В нижней части окна находятся указатели, отображающие скорость и степень завершенности процессов анализа или дефрагментации. Цветами показано состояние устройства:
Для выполнения анализа жесткого диска:
Для выполнения дефрагментации жесткого диска:
С самой первой версии NTFS позволяла одному файлу иметь несколько потоков. К сожалению, этот весьма удобный механизм использовался очень слабо, хотя применение потоков позволяет изящно решать многие проблемы.
Например, вы создаете файл. Для него необходимо сформировать и сохранить эскиз (уменьшенное изображение содержимого файла, предназначенное для предварительного просмотра) (thumbnail), который, как правило, записывается в конец файла. Для вывода эскиза надо открыть файл, считать информацию заголовка, найти начало нужной вам информации и только после этого считать данные. Можно хранить эскиз в отдельном файле, но в этом случае велика вероятность того, что сам файл будет перенесен в другое место без соответствующего ему эскиза.
Подобную проблему можно решить с использованием нескольких потоков. При создании файла основные данные следует записать в неименованный поток. Затем необходимо создать внутри того же файла именованный поток, предназначенный для данных образа. Теперь один файл будет содержать два потока.
Проведем следующий эксперимент. На машине Windows откроем окно командной строки. Перейдем в раздел NTFS и введем следующую команду:
DIR >t1.txt:Stream1
В результате выполнения этой команды система создаст файл t1.txt. Он будет содержать два потока: неименованный, в котором находится 0 байт, и именованный (с именем Stream1), где будет находиться результат выполнения команды DIR (в нашем примере содержимое папки Архивы). Доступ к именованному потоку можно получить, обратившись к нему по имени через двоеточие после имени файла.
К сожалению, многие утилиты, входящие в состав Windows 2000, не могут работать с именованными потоками. Рассмотрим следующий пример:
DIR t1.txt
Очевидно, что команда DIR не видит именованный поток, поэтому она показывает, что размер файла t1.txt равен 0. Однако это не так: DIR показывает только неименованный поток. Размер именованного потока пользователю не показывается.
Проведем еще один эксперимент:
DIR t1.txt:Stream1
Результат показан на рис. 19.6.
Из этого эксперимента видно, что команда DIR не обладает средствами обращения к именованным потокам. Для просмотра содержимого именованного потока выполните следующую команду:
Результат выполнения команды показан на рис.19.7.
Существует еще одно применение потоков. Предположим, что вы разрабатываете текстовый процессор. Корректируя файл, вы наверняка создадите временный файл, запишете туда все изменения, затем, когда наступит момент сохранить их, уничтожите оригинальный файл, его имя присвоите временному файлу и перенесете этот файл туда, где был расположен оригинальный файл. Весь процесс выглядит довольно просто. Однако следует помнить о том, что новый файл должен иметь то же время создания (time stamp creation), что и оригинальный файл. Кроме того, новый файл должен обладать теми же атрибутами, что и оригинальный файл. При сохранении изменений очень легко изменить один из атрибутов.
При использовании потоков все эти проблемы легко разрешаются. Все потоки в пределах одного файла имеют одни и те же атрибуты (время создания, безопасность и т. д.). Можно записывать изменения не во временный файл, а в именованный поток. Затем, при записи изменений достаточно переименовать именованный поток в неименованный, после чего с помощью средств NTFS удалить старый неименованный поток. Переименование потока должно быть выполнено в соответствии с принципом «все или ничего» (в виде транзакции либо выполняются все операции, либо все остается в исходном состоянии).
Следует отметить, что при копировании файла, содержащего потоки, в файловую систему, не поддерживающую их (например, FAT на гибком диске), скопированы будут только данные неименованного потока.
Олифер В.Г., Олифер Н.А. Сетевые операционные системы. СПб.: Питер, 2001. 544 с.
Дейтел Г. Введение в операционные системы: В 2 т.: Пер. с англ. М.: Мир, 1987.
Петцке К. Linux от организации к применению: Пер с нем. М. ДМК, 2000. 576 с.
Андреев А.Г. и др. Microsoft Windows 2000 Server. Русская версия/ Под общ ред. А.Н. Чекмарева и Д.Б. Вишнякова. СПб.: БХВ-Петербург, 2001. 960 с.
[1] ОПЕРАЦИОННЫЕ СИСТЕМЫ [1.1] Конспект лекций [2] ЧАСТЬ 5 [3] ФАЙЛОВЫЕ СИСТЕМЫ UNIX И NTFS 5.0. [4] КОНТРОЛЬ ДОСТУПА К ФАЙЛАМ [5] 15. ФАЙЛОВАЯ СИСТЕМА UNIX [5.1] Внутреннее представление файлов [5.2] Типы файлов [5.3] Структура файловой системы UNIX [5.4] Разновидности файловых систем в UNIX [5.5] Базовая файловая система System V [5.5.1] Суперблок [5.5.2] Индексные дескрипторы [5.5.3] Имена файлов [5.5.4] Недостатки и ограничения [5.6] Файловая система BSD UNIX [5.6.1] Каталоги [5.6.2] Архитектура виртуальной файловой системы [5.7] Использование нескольких файловых систем [5.7.1] Файлы устройств [5.7.2] Монтирование файловой системы [5.7.3] Команды работы с файловыми системами [5.7.4] Монтирование разделов жесткого диcка: Linux и c файловой системой FAT [5.7.5] Автоматическое монтирование файловых систем [6] 16. КОНТРОЛЬ ДОСТУПА К ФАЙЛАМ. ОБЩИЕ ПРИНЦИПЫ [6.1] Доступ к файлам как частный случай доступа к разделяемым ресурсам [6.2] Механизм контроля доступа [7] 17. ОРГАНИЗАЦИЯ КОНТРОЛЯ ДОСТУПА В ОС UNIX [7.1] Владельцы файлов [7.2] Права доступа к файлу [7.3] Дополнительные атрибуты файла [8] 18. ФАЙЛОВАЯ СИСТЕМА NTFS 5.0 [8.1] Назначение разрешений для файлов [8.2] Назначение разрешений для папок [9] 19. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ NTFS 5.0 [9.1] Квоты дискового пространства [9.2] Передача права владения [9.3] Сжатие файлов и папок [9.3.1] Команда Compact [9.4] Точки соединения NTFS [9.5] Работа с точками соединения NTFS [9.5.1] Утилита mountvol [9.5.2] Управление точками соединения с помощью оснастки Управление дисками (Disk Management) [9.6] Дефрагментация диска [9.7] Потоки [9.7.1] MORE <New_Streams.txt:New_Stream
[10]
[11] [11.0.1] Совпадение [11.0.1.1] W |
1
Все дальнейшие описания приводятся для системы Linux (разновидность UNIX системы).
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Пользовательская таблица дескрипторов файла
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Таблица файлов
Таблица файлов
Таблица файлов
Таблица файлов
Таблица файлов
Таблица файлов
Таблица файлов
Таблица файлов
Таблица индексов
Рис.15.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Рис.**.1. Таблицы файлов, дескрипторов файла и индексов
Рис.**. Таблицы файлов, дескрипторов файла и индексов
Блок
загрузки
Суперблок
Список индексов
Информационные блоки
Рис. 15.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
Рис. **.2. Формат файловой системы
Рис. *.*. Формат файловой системы
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
10245 .
12432 ..
8672 file.txt
12567 first
19678 www.doc
Номер индекса
Номер индекса
Номер индекса
Номер индекса
Номер индекса
Номер индекса
Номер индекса
Номер индекса
Имя файла
Имя файла
Имя файла
Имя файла
Имя файла
Имя файла
Имя файла
Имя файла
Рис. 15. 3. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис. **. 2. Упрощенная структура каталога
Рис.15. 4. Жесткая связь в файловой системе
Рис.**. 3. Жесткая связь в файловой сиdi_addr[5]
**. 3. Жесткая связь в файловой системе
Рис.**. 3. Жесткая связь в файловой системе
Рис.**. 3. Жесткая связь в файловой системе
Рис.**. 3. Жесткая связь в файловой сиdi_addr[5]
**. 3. Жесткdi_addr[0]
файловой системе
Рис.**. 3. Жесткая связь в файловой системе
andrey
andrey
andrey
andrey
andrey
andrey
andrey
andrey
second
second
second
second
second
second
second
second
a.out
a.out
a.out
a.out
a.out
a.out
a.out
a.out
w.doc
w.doc
w.doc
w.doc
w.doc
w.doc
w.doc
w.doc
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
first
first
first
first
first
first
first
first
sergey
sergey
sergey
sergey
sergey
sergey
sergey
sergey
andrey
andrey
andrey
andrey
andrey
andrey
andrey
andrey
home
home
home
home
home
home
home
home
/
/
/
/
/
/
/
/
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
Данные файла
Данные файла
Данные файла
Данные файла
Данные файла
Данные файла
Данные файла
Данные файла
Индекс файла
Индекс файла
Индекс файла
Индекс файла
Индекс файла
Индекс файла
Индекс файла
Индекс файла
12567
12567
12567
12567
12567
12567
12567
12567
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
12563 .
12432 ..
9672 a.out
12567 second
Рис.19.1. Вкладка Quota (Квота) окна свойств тома
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
12567
12567
12567
12567
12567
12567
12567
12567
Рис.15. 5. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Рис.**. 4. Символическая связь в файловой системе
Символическая связь
Символическая связь
Символическая связь
Символическая связь
Символическая связь
Символическая связь
Символическая связь
Символическая связь
andrey
andredi_addr[0]
y
andrey
andredi_addr[0]
y
andrey
andredi_addr[0]
y
andrey
andredi_addr[0]
y
a.out
a.out
a.out
a.out
a.out
a.out
a.out
a.out
symfirst
symfirst
symfirst
symfirst
symfirst
symfirst
symfirst
symfirst
w.doc
w.doc
w.doc
w.doc
w.doc
w.doc
w.doc
w.doc
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
F1.txt
first
first
first
first
first
first
first
first
sergey
sergey
sergey
sergey
sergey
sergey
sergey
sergey
andrey
andrey
andrey
andrey
andrey
andrey
andrey
andrey
home
home
home
home
home
home
home
home
/
/
/
/
/
/
/
/
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/sergey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
/home/andrey
../andrey/first
../andrey/first
../andrey/first
../andrey/first
../andrey/first
../andrey/first
../andrey/first
../andrey/first
Индекс файлов
Индекс файлов
Индекс файлов
Индекс файлов
Индекс файлов
Индекс файлов
Индекс файлов
Индекс файлов
19763
19763
19763
19763
19763
19763
19763
19763
12563 .
12432 ..
9672 a.out
19763 symfirst
.
12432 ..
9672 a.out
19763 symfirst
12563 .
12432 ..
9672 a.out
19763 symfirst
12563 .
12432 ..
9672 a.out
19763 symfirst
12563 .
12432 ..
9672 a.out
19763 symfirst
12563 .
12432 ..
9672 a.out
19763 symfirst
12563 .
12432 ..
9672 a.out
19763 symfirst
12563 .
12432 ..
9672 a.out
19763 symfirst
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
10245 .
12432 ..
8672 F1.txt
12567 first
19678 w.doc
Рис.15.6. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
Рис.**. 5. Типичная файловая система UNIX
default
default
default
default
default
default
default
default
rc3.d
rc3.d
rc3.d
rc3.d
rc3.d
rc3.d
rc3.d
rc3.d
rc0.d
rc0.d
rc0.d
rc0.d
rc0.d
rc0.d
rc0.d
rc0.d
rc2.d
rc2.d
rc2.d
rc2.d
rc2.d
rc2.d
rc2.d
rc2.d
init.d
init.d
init.d
init.d
init.d
init.d
init.d
init.d
auth
auth
auth
auth
auth
auth
auth
auth
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
dsk
dsk
dsk
dsk
dsk
dsk
dsk
dsk
mqueue
mqueue
mqueue
mqueue
mqueue
mqueue
mqueue
mqueue
uucp
uucp
uucp
uucp
uucp
uucp
uucp
uucp
cron
cron
cron
cron
cron
cron
cron
cron
X11
X11
X11
X11
X11
X11
X11
X11
lp
lp
lp
lp
lp
lp
lp
lp
X11
X11
X11
X11
X11
X11
X11
X11
lib
lib
lib
lib
lib
lib
lib
lib
bin
bin
bin
bin
bin
bin
bin
bin
local
local
local
local
local
local
local
local
include
include
include
include
include
include
include
include
spool
spool
spool
spool
spool
spool
spool
spool
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
dsk
dsk
dsk
dsk
dsk
dsk
dsk
dsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
rdsk
dsk
dsk
dsk
dsk
dsk
dsk
dsk
dsk
var
var
var
var
var
var
var
var
tmp
tmp
tmp
tmp
tmp
tmp
tmp
tmp
lost+found
lost+found
lost+found
lost+found
lost+found
lost+found
lost+found
lost+found
lib
lib
lib
lib
lib
lib
lib
lib
dev
dev
dev
dev
dev
dev
dev
dev
usr
usr
usr
usr
usr
usr
usr
usr
mnt
mnt
mnt
mnt
mnt
mnt
mnt
mnt
home
home
home
home
home
home
home
home
etc
etc
etc
etc
etc
etc
etc
etc
bin
bin
bin
bin
bin
bin
bin
bin
/
/
/
/
/
/
/
/
Рис. 18.4. Вкладка Безопасность окна свойств папки
Рис. 18.2. Окно диалога Выбор: Пользователи, Компьютеры или Группы.
Рис.18.1. Вкладка Безопасность окна свойств файла
Рис.16.2. Проверка прав доступа
…
R
W
ID=52
ID=14
ID=3
Пользователь
Процесс
Рис.16.1. Матрица прав доступа
Рис.15.11. Архитектура виртуальной файловой системы
Сеть
Принтер
Монитор
Дисковые накопители
Файловая система NFS
Файловая система specfs
Файловая система FAT
Файловая система
FFS
Файловая система s5fs
Интерфейс виртуальной файловой системы, vfs
Интерфейс системных вызовов
read(), write()…
Процесс
R
X
R
O
P
X
W
R
ID=106
ID=52
ID=31
ACE
ACE
ACE
ID=17
Рис.15.8. Структура дискового inode
256
…
256
…
256
…
256
…
256
…
256
…
256
…
256
…
Рис.15.9. Структура файловой системы FFS
группа цилиндров
…
Блоки хранения данных
…
di_addr[10]
di_addr[12]
di_addr[11]
ilist
Суперблок
Массив свободных блоков и inode
di_addr[3]
di_addr[2]
di_addr[1]
di_addr[0]
di_mode
di_nlinks
di_uid
di_gid
di_size
di_atime
di_mtime
di_ctime
…
…
Массив свободных блоков и inode
Суперблок
Рис. 15.7. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
Рис. **.6. Структура файловой системы s5fs
о
о
о
о
о
о
о
о
Блоки хранения данных
Блоки хранения данных
Блоки хранения данных
Блоки хранения данных
Блоки хранения данных
Блоки хранения данных
Блоки хранения данных
Блоки хранения данных
Список свободных блоков
Список свободных блоков
Список свободных блоков
Список свободных блоков
Список свободных блоков
Список свободных блоков
Список свободных блоков
Список свободных блоков
Список свободных inode
Список свободных inode
Список свободных inode
Список свободных inode
Список свободных inode
Список свободных inode
Список свободных inode
Список свободных inode
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
s_type
s_fsize
s_isize
s_tfree
s_inode
s_fmod
…
Массив индексных дескрипторов
Массив индексных дескрипторов
Массив индексных дескрипторов
Массив индексных дескрипторов
Массив индексных дескрипторов
Массив индексных дескрипторов
Массив индексных дескрипторов
Массив индексных дескрипторов
Суперблок
Суперблок
Суперблок
Суперблок
Суперблок
Суперблок
Суперблок
Суперблок
…
…
…
…
…
…
…
…
ACE (владельца)
Файл
Запрос «запись» (W)
ID=72
Группа
Группа
Группа
Рис. 15.10. Карта свободных блоков
Блоки хранения данных
Карта свободных блоков / фрагментов
1 1 1 0 0 0 0 1 1 1 0 0 0 1 1
Адреса блоков/ фрагментов
Рис.19.2. Вкладка Владелец (Owner)
Рис. 19.3. Окно Дополнительные атрибуты
Рис.19.4. Окно Свойства папки
Рис.19.5. Окно оснастки Дефрагментация диска
Рис.19.7. Содержимое именованного потока файла
Рис.18.3. Окно параметры управления доступом
Рис. 19.6