У вас вопросы?
У нас ответы:) SamZan.net

Конспект лекций ЧАСТЬ 5 ФАЙЛОВЫЕ СИСТЕМЫ UNIX И NTFS 5

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.4.2025

ОПЕРАЦИОННЫЕ СИСТЕМЫ

Конспект лекций

ЧАСТЬ 5

ФАЙЛОВЫЕ СИСТЕМЫ UNIX И NTFS 5.0. 

КОНТРОЛЬ ДОСТУПА К ФАЙЛАМ 

Для студентов дистанционной формы обучения

специальности 220200 – Автоматизированные системы обработки

информации и управления

Екатеринбург 2005


УДК 681.3.06

Составитель  О.М. Зверева

Научный редактор: д-р техн. наук Л.Г. Доросинский

Операционные системы. Конспект лекций. Ч.5: Файловые системы UNIX и NTFS 5.0. Контроль доступа к файлам / О.М. Зверева. Екатеринбург: Изд-во УГТУ, 2005.

В книге приведено описание структуры файловой системы в ОС UNIX. Рассмотрены общие вопросы контроля доступа к файлам и каталогам. Затем контроль доступа к файлам описан на примере файловых систем в ОС UNIX и в файловой системе NTFS 5.0.

Библиогр.:  4 назв.   Табл. 11.      Рис.  24.   

Подготовлено кафедрой «Автоматизированные системы управления».

 ГОУ ВПО «Уральский Государственный Технический

Университет»-УПИ, 2005г.


15. ФАЙЛОВАЯ СИСТЕМА UNIX

Файловая система 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 типов файлов, различающихся по функциональному назначению  и действиям операционной системы при выполнении тех или иных операций над файлами:

  •  Обычный файл (regular file);
  •  Каталог (directory);
  •  Специальный файл устройства (special device file);
  •  FIFO или именованный канал (named pipe);
  •  Связь (link);
  •  Сокет.

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

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

На рис. 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-r—r-- 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 на базе сокетов реализована система межпроцессного взаимодействия, с помощью которой работают многие системные сервисы, например, система печати.

Структура файловой системы  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 

Большинство данных в операционной системе 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 вынуждены были выбирать одну файловую систему из нескольких возможных. Это неудобство было преодолено введением независимой или виртуальной файловой системы - архитектуры, позволяющей обеспечивать работу с несколькими  файловыми системами различных типов.

Базовая файловая система System V

Каждый жесткий диск состоит из одной или нескольких логических частей, называемых файловыми разделами (partitions). Расположение и размер раздела определяются при форматировании диска. В UNIX разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных.

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

Файловая система s5fs занимает раздел диска и состоит из трех основных компонентов, как показано на рис. 15.7.

  •  Суперблок (superblock). Содержит общую информацию о файловой системе, например, об ее архитектуре, общем числе блоков и индексных дескрипторов, или метаданных (inode).
  •  Массив индексных дескрипторов (ilist). Содержит метаданные всех файлов файловой системы. Индексный дескриптор содержит статусную информацию о файле и указывает на расположение данных этого файла. Ядро обращается к inode по индексу в массиве ilist. Один inode является корневым (root) inode файловой системы, через него обеспечивается доступ к структуре каталогов и файлов после монтирования файловой системы. Размер массива ilist является фиксированным и задается при создании файловой системы. Таким образом, файловая система s5fs имеет ограничение по числу файлов, которые могут храниться в ней, независимо от размера этих файлов.
  •  Блоки хранения данных. Данные обычных файлов и каталогов хранятся в блоках. Обработка файла осуществляется через inode, содержащего ссылки на блоки данных. Блоки хранения данных занимают большую часть дискового раздела, и их число определяет максимальный суммарный объем файлов данной файловой системы. Размер блока кратен 512 байтам, например, файловая система S51K SCO UNIX использует размер блока в 1 кбайт (отсюда и название).

Рассмотрим подробнее каждый из перечисленных компонентов.

Суперблок

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

Суперблок содержит следующую информацию:

  •  Тип файловой системы (s_type)
  •  Размер файловой системы в логических блоках, включая сам суперблок, ilist и блоки хранения данных (s_fsize)
  •  Размер массива индексных дескрипторов (s_isize)
  •  Число свободных блоков, доступных для размещения (s_tfree)
  •  Число свободных inode, доступных для размещения (s_t inode)
  •  Флаги (флаг модификации s_fmod, флаг режима монтирования
  •  s_fronly)
  •  Размер логического блока (512, 1024, 2048)
  •  Список номеров свободных inode
  •  Список адресов свободных блоков

Поскольку число свободных 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.

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

В версии 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 устройство точка_монтирования

Файлы устройств

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

По сравнению с обычными файлами, файлы-устройства имеют три дополнительных атрибута, которые определяют тип устройства, приписанного к данному файлу:

  •  Класс устройства: либо b (ориентированное на блоки блочное устройство), либо с (ориентированное на байты символьное устройство). Устройства с ориентацией на блоки предназначены для сохранения данных. К каждому из сохраненных блоков возможен прямой доступ. Изменение блока не касается других данных на таком устройстве. Типичными примерами являются дисководы, жесткие диски и CD-ROM (даже если на них нельзя изменять данные). Все остальные устройства называются символьными. На них нельзя считывать данные с любого места или записывать данные куда угодно. Типичные примеры – принтер или привод магнитной ленты.
  •  Старший номер (Маjor number) обозначает тип устройства, например, дисковод или жесткий диск. Значение этого номера зависит от системы. В различных производных версиях UNIX  одни и те же устройства имеют, как правило, разные номера. Под  Linux используются номера в соответствии с табл. 15.3. В конкретных случаях можно проверить соответствующий текущий список в файле /usr/include/linux/major.h.
  •   Младший номер (Minor Number) применяется для нумерации устройств одного типа и с одинаковыми старшими номерами. Таким образом, комбинация всех трех типов информации (блочная или символьная ориентация, старший и младший номера) всегда точно характеризует устройство.

Старшие номера под 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, жесткий диск может быть разбит на разделы, это тоже учитывается в именовании устройств.

Полное имя устройства, принадлежащее разделу жесткого диска составляется из следующих элементов:

  1.  Имя устройства, относящееся к типу жесткого диска (/dev/hd для IDE, /dev/sd для SCSI ).
  2.  Номер жесткого диска, указанный строчной буквой a: для первого диска, b: - для второго и т.д. (К каждому контроллеру IDE подключается 2 диска (boot и slave), к контроллеру SCSI – до 15).
  3.  Номер раздела , указанный числом, начиная с 1 для первого раздела (0 зарезервировани для всего устройства в целом).

Точное распределение жестких дисков и их разделов       Таблица 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  тип_ФС] устройство [блоки]

  •  [ ] -  указывают на необязательность параметров;
  •  -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%          /

Монтирование разделов жесткого диcка: Linux и c файловой системой FAT

Разделы жесткого диска для 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 содержит несколько полей, разделенных пробелами или знаками табуляции.:

  •  Первое поле – имя монтируемой файловой системы. Оно обычно начинается с /dev, например, /dev/hda3, – третий раздел жесткого диска.
  •  Следующее поле – каталог в файловой структуре, к которому вы хотите присоединить файловую систему, находящуюся на данном устройстве.
  •  Третье поле – тип монтируемой файловой системы (основные типы перечислены в табл.15.2)
  •  Четвертое поле - опции команды mount (перечислены в табл.15.1).

В следующем примере показана строка файла fstab, оответствующая основному разделу жесткого диска для Linux. Он монтируется в корневом каталоге (/) и имеет тип ехt2:

/dev/hda3 ext2 defaults      0 1

В четвертом поле, следующем после типа файловой системы, указываются различные опции монтирования. Имеется стандартный набор опций, устанавливаемых по умолчанию, все их можно задать вводом одной опции defaults. Другие опции в списке разделяются запятыми (без пробелов). Опция defaults обозначает устройство как устройство чтения/записи, асинхронное, блок-ориентированное, без возможности монтирования для обычных пользователей, с возможностью выполнения на нем программ. Для СD-RОМ указываются всего две опции: ro и поаиtо. Опция показывает, что файлы, находящиеся на этом устройстве, предназначены только для чтения, 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, которая попросит вас ввести соответствующую информацию.

16. КОНТРОЛЬ ДОСТУПА К ФАЙЛАМ. ОБЩИЕ ПРИНЦИПЫ

Доступ к файлам как частный случай доступа к разделяемым  ресурсам

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

Во всех этих случаях действует общая схема: пользователи пытаются выполнить с разделяемым ресурсом определенные операции, а ОС должна решать, имеют ли пользователи на это право. Пользователи являются субъектами доступа, а разделяемые ресурсы – объектами. Пользователь осуществляет доступ к объектам операционной системы не непосредственно, а с помощью прикладных процессов, которые запускаются от его имени. Для каждого типа объектов существует набор операций, которые с ними можно выполнять. Например, для файлов это операции чтения, записи, удаления, выполнения; для принтера - перезапуск, очистка очереди документов, приостановка печати документа и т. д. Система контроля доступа ОС должна предоставлять средства для задания прав пользователей по отношению к объектам дифференцированно по операциям, например, пользователю может быть разрешена операция чтения и выполнения файла, а операция удаления - запрещена.

Во многих операционных системах реализованы механизмы, которые позволяют управлять доступом к объектам различного типа с единых позиций. Так, представление устройств ввода-вывода в виде специальных файлов в операционных системах UNIX  является примером такого подхода: в этом случае при доступе к устройствам используются те же атрибуты безопасности и алгоритмы, что и при доступе к обычным файлам и каталогам. Еще дальше продвинулась в этом направлении операционная система Windows NT\2000. В ней используется унифици- рованная структура - объект безопасности, которая создается не только для файлов и внешних устройств, но и для любых разделяемых (т.е. совместно используемых) ресурсов. Это позволяет использовать в Windows NT для контроля доступа к ресурсам любого вида общий модуль ядра – менеджер безопасности.

В качестве субъектов доступа могут выступать как отдельные пользователи, так и группы пользователей. Определение индивидуальных прав доступа для каждого пользователя позволяет максимально гибко задать политику расходования разделяемых ресурсов в вычислительной системе. Однако этот способ приводит в больших системах к чрезмерной загрузке администратора рутинной работой по повторению одних и тех же операций для пользователей с одинаковыми правами. Объединение таких пользователей в группу и задание прав доступа в целом для группы является одним из основных приемов администрирования в больших системах.

У каждого объекта доступа существует владелец. Владельцем может быть как отдельный пользователь, так и группа пользователей. Владелец объекта имеет право выполнять с ним любые допустимые для данного объекта операции. Во многих операционных системах существует особый пользователь (root, superuser, администратор), который имеет все права по отношению к любым объектам системы, не обязательно являясь их владельцем. Под таким именем работает администратор системы, которому необходим полный доступ ко всем файлам и устройствам для управления политикой доступа.

Различают два основных подхода к определению прав доступа.

  •  Избирательный доступ имеет место, когда для каждого объекта сам владелец может определить допустимые операции с объектами. Этот подход называется также произвольным (от discretionary - предоставленный на собственное усмотрение) доступом, так как позволяет администратору и владельцам объектов определить права доступа произвольным образом, по их желанию. Между пользователями и группами пользователей в системах с избирательным доступом нет жестких иерархических взаимоотношений, то есть взаимоотношений, которые определены по умолчанию и которые нельзя изменить. Исключение делается только для администратора, по умолчанию наделяемого всеми правами.
  •  Мандатный доступ (от mandatory - обязательный, принудительный) - это такой подход к определению прав доступа, при котором система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен. От имени системы выступает администратор, а владельцы объектов лишены возможности управлять доступом к ним по своему усмотрению. Все группы пользователей в такой системе образуют строгую иерархию, причем каждая группа пользуется всеми правами группы более низкого уровня иерархии, к которым добавляются права данного уровня. Членам какой-либо группы не разрешается предоставлять свои права членам групп более низких уровней иерархии. Мандатный способ доступа близок к схемам, применяемым для доступа к секретным документам: пользователь может входить в одну из групп, отличающихся правом на доступ к документам с соответствующим грифом секретности, например, «для служебного пользования», «секретно», «совершенно секретно» и «государственная тайна». При этом пользователи группы «совершенно секретно» имеют право работать с документами «секретно» и «для служебного пользования», так как эти виды доступа разрешены для более низких в иерархии групп. Однако сами пользователи не распоряжаются правами доступа – этой возможностью наделен только особый чиновник учреждения.

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

Для определенности будем далее рассматривать механизмы контроля доступа к таким объектам, как файлы и каталоги, но необходимо понимать, что эти же механизмы могут использоваться в современных операционных системах для контроля доступа к объектам любого типа и отличия заключаются лишь в наборе операций, характерных для того или иного класса объектов.

Механизм контроля доступа 

Каждый пользователь и каждая группа пользователей обычно имеют символьное имя, а также уникальный числовой идентификатор. При выполнении процедуры логического входа в систему пользователь сообщает свое символьное имя и пароль, а операционная система определяет соответствующие числовые идентификаторы пользователя и групп, в которые он входит. Все идентификационные данные, в том числе имена и идентификаторы пользователей и групп, пароли пользователей, а также сведения о вхождении пользователя в группы хранятся в специальном файле (файл /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.

17. ОРГАНИЗАЦИЯ КОНТРОЛЯ ДОСТУПА В ОС UNIX 

Владельцы файлов

Файлы в UNIX имеют двух владельцев: пользователя (user owner) и группу (group owner). Группой называется определенный список пользователей системы. Пользователь системы может быть членом нескольких групп, одна из которых является первичной (primary), остальные — дополнительными (supplementary).

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

Для определения владельца файла достаточно посмотреть подробный листинг команды ls –l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы соответственно:

1 2 3 4 5 6 7 8

-rw-r—r-- 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

Операционная система производит проверку прав доступа при создании, открытии (для чтения или записи), запуске на выполнение или удалении файла. При этом выполняются следующие проверки:

  •  Если операция запрашивается суперпользователем, доступ разрешается. Никакие дополнительные проверки не производятся. Это позволяет администратору иметь неограниченный доступ ко всей файловой системе.
  •  Если операция запрашивается владельцем файла, то:
    •  если требуемое право доступа определено (например, при операции чтения файла установлено право на чтение для владельца-пользователя данного файла), доступ разрешается,
    •  в противном случае доступ запрещается.
  •  Если операция запрашивается пользователем, являющимся членом группы, которая является владельцем файла, то:
    •  если требуемое право доступа определено, доступ разрешается,
    •  в противном случае доступ запрещается.
  •  Если требуемое право доступа для прочих пользователей (other) установлено, доступ разрешается, в противном случае доступ запрещается.

Система проводит проверки в указанной последовательности. Например, если пользователь является владельцем файла, то доступ определяется исключительно из прав владельца-пользователя, права владельца-группы не проверяются, даже если пользователь является членом владельца-группы. Чтобы проиллюстрировать это, рассмотрим следующее:

----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


18. ФАЙЛОВАЯ СИСТЕМА NTFS 5.0

Файловая система NTFS 5.0 впервые появилась в ОС         Windows 2000 и продолжает и развивает принципы файловой системы NTFS, разработанной для Windows NT.  В файловых системах NTFS впервые появилась возможность установки прав доступа на локальные файлы и папки.

Устанавливая пользователям определенные разрешения для файлов и каталогов (папок), администраторы системы могут зашищать конфиденциальную информацию от несанкционированного доступа. Каждый пользователь должен иметь определенный набор разрешений на доступ к конкретному объекту файловой системы. Кроме того, он может быть владельцем файла или папки, если сам их создает. Администратор может назначить себя владельцем любого объекта файловой системы (файла или папки). Следует, однако, помнить, что обратная передача владения от администратора к пользователю невозможна. Администратор должен зарегистрироваться в системе под именем того пользователя, которому он хочет передать владение файлом или папкой, а затем стать владельцем нужного объекта.

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

Следует все же заметить, что правило сложения разрешений с помощью логического ИЛИ не выполняется, когда пользователь имеет определенное разрешение, а группе, в которую он входит, отказано в этом разрешении (или наоборот). В этом случае отказ в разрешении имеет более высокий приоритет над предоставлением разрешения, т. е. в результате пользователь не будет иметь данного разрешения. Происходит это потому что в списке контроля доступа сначала идут отказы на доступ, и система при просмотре списка, найдя такой элемент, дальше список не просматривает.

В файловой системе NTFS 5.0 существуют следующие основные типы разрешений на доступ (рис.18.1):

  •  полный доступ (Full control);
  •  изменить (Modify);
  •  чтение и выполнение (Read&Execute);
  •  чтение (Read);
  •  запись (Write).

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

Можно разрешить некоторый вид доступа или отказать в нем (запретить). Появление возможности отказа пользователю или группе в разрешении для файлов и каталогов сделало ненужным разрешение «Нет доступа» (No Access), применявшееся в Windows NT 4.0. Теперь для отказа пользователю в разрешении на доступ к какому-либо файлу или папке следует включить пользователя в группу, которой отказано в разрешении «Полный доступ» (Full Соntrol) для данного объекта файловой системы.

Назначение разрешений для файлов

Для назначения пользователю или группе разрешения на доступ к определенному файлу:

  1.  Укажите файл мышью и нажмите правую кнопку. Выберите команду Свойства (Ргореrties) контекстного меню. В появившемся окне свойств файла перейдите на вкладку Безопасность (Security) (рис. 18.1).
  2.  В группе Имя (Name) показан список пользователей и групп, которым уже предоставлены разрешения для данного файла. Для того чтобы добавить или удалить пользователей или группы, нажмите кнопку Добавить (Add) или Удалить (Remove). При добавлении пользователей появится окно диалога Выбор: Пользователи, Компьютеры или Группы (Select Users, Computers or Groups) (рис.18.2).
  3.  Выделите нужный объект в группе Имя и нажмите кнопки Добавить (Add) и OK, чтобы вернуться на вкладку Безопасность.
  4.  В группе Разрешения (Permissions) можно назначить или запретить стандартные разрешения для файлов, о которых уже говорилось (Полный доступ, Изменить, Чтение и выполнение, Чтение, Запись). На вкладке также присутствует кнопка Дополнительно (Advanced) и флажок Переносить наследуемые  от родительского объекта  разрешения  на этот объект (Allow inheritable permissions from parent to propagate to this object).

Примечание. Отказ в одном из разрешений в группе Разрешения может вызвать отказ во множестве разрешений. Например, если отказать в разрешении Полный доступ, это приведет к отказу во всех остальных разрешениях.  

Каждое из перечисленных выше стандартных разрешений состоит из набора более специальных (особых) разрешений, задающих возможность выполнения того или иного конкретного действия с файлами или каталогами. В табл. 18.1 показано соответствие стандартных и специальных разрешений. Более детально специальные разрешения рассмотрены ниже.

Соответствие стандартных и специальных разрешений для файлов

Таблица 18.1

Специальные

разрешения

Стандартные разрешения

Полный

доступ

Изменить

Чтение и выполнение

Чтение

Запись

Обзор папок/

Выполнение файлов

х

х

х

Содержание папок/ Чтение данных

х

х

х

х

Чтение атрибутов

х

х

х

х

Чтение дополнительных атрибутов

х

х

х

х

Создание файлов / Запись данных

х

х

х

Создание папок / Дозапись данных

х

х

х

Запись атрибутов

х

х

х

Запись дополнительных атрибутов

х

х

х

Удаление подпапок  и файлов

х

Удаление

х

х

Чтение разрешений

х

х

х

х

Смена разрешений

х

Смена владельца

х

Синхронизация

х

х

х

х

Для более тонкой настройки доступа к файлу:

  •  Нажмите кнопку Дополнительно. Появится окно диалога Параметры управления доступом (Access Control Settings) , на вкладке Разрешения которого будет отображен список управления доступом для данного файла (рис. 18.3) с именами пользователей или групп, которым предоставлены разрешения для данного объекта и сами эти разрешения.
  •  Чтобы отредактировать строку в окне Параметры управления доступом, сделайте  на ней двойной щелчок, либо нажмите кнопку Показать/Изменить (View/Edit). Появится окно Элемент разрешения (Permission Entry), где можно предоставить одно или несколько специальных разрешений для файла (или отказать в разрешении), не объединенных в стандартное разрешение             (табл. 18.2).

Специальные разрешения

Таблица 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)

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

Назначение разрешений для папок

Для назначения разрешения на доступ к папке (каталогу) пользователю или группе:

  1.  Укажите папку и нажмите правую кнопку мыши. Выберите команду Свойства контекстного меню. Выберите команду Свойства контекстного меню. В появившемся окне свойств папки перейдите на вкладку Безопасность (рис.18.4).
  2.  Как и в случае установки разрешений для файлов, предоставление и удаление разрешений пользователям и группам выполняется с помощью кнопок Добавить и Удалить. Список стандартных разрешений в группе Разрешения для папки несколько отличается от набора разрешений для файла. Кроме того, нужно помнить, что разрешения для папок распространяются на находящиеся в них файлы.
  3.  В группе Разрешения можно назначить или запретить стандартные разрешения для папок, аналогичные разрешениям для файлов (см. предыдущий раздел), а также разрешение Список содержимого папки (List Folder Contents). По умолчанию подпапки наследуют разрешения пользователя от родительской папки. Если наследование разрешений следует запретить, нужно снять флажок Переносить наследуемые от родительского объекта разрешения на этот объект в окне свойств папки.
  4.  Каждое из стандартных разрешений состоит из набора специальных (особых) разрешений (табл. 18.3).
  5.  Чтобы выполнить более тонкую настройку доступа к папке, нажмите кнопку Дополнительно. Появится окно диалога Параметры управления доступом, в котором будет отображен список управления доступом к данной папке.
  6.  Чтобы отредактировать строку в окне Параметры управления доступом, сделайте на ней двойной щелчок, либо нажмите кнопку Показать/Изменить. Появится окно Элемент разрешения, где можно установить специальные разрешения и указать область их действия (список Применять (Apply onto)):
  •  Только для этой папки (this folder only)
  •  Для этой папки, ее подпапок и файлов (this folder, subfolders and files)
  •  Для этой папки и ее файлов (this folder and files)
  •  Только для подпапок и файлов (subfolders and files only)
  •  Только для подпапок (subfolders only)
  •  Только для файлов (files only)

Если не установлен флажок Применять эти разрешения к объектам и контейнерам только внутри этого контейнера (Apply these permissions to object and/or containers within this container only), установленные вами разрешения будут распространяться не только на объекты, определенные полем Применять, но и на все объекты, находящиеся ниже по дереву.

Соответствие стандартных и специальных разрешений для папок

Таблица 18.3

Специальные разрешения

Стандартные разрешения

Пол-ный до-ступ

Изменение

Чтение и выпол-нение

Список содер-жимого папки

Чте-ние

За-пись

Обзор папок/ Выполнение файлов

Х

Х

Х

Х

Содержание папок/ Чтение данных

Х

Х

Х

Х

Х

Чтение атрибутов

Х

Х

Х

Х

Х

Чтение дополнитель-ных атрибутов

Х

Х

Х

Х

Х

Создание файлов / Запись данных

Х

Х

Х

Создание папок / Дозапись данных

Х

Х

Х

Запись атрибутов

Х

Х

Х

Запись дополнитель-ных атрибутов

Х

Х

Х

Удаление подпапок  и файлов

Х

Удаление

Х

Х

Чтение разрешений

Х

Х

Х

Х

Х

Х

Смена разрешений

Х

Смена владельца

Х

Синхрониза-ция

Х

Х

Х

Х

Х

Х

19. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ NTFS 5.0

Квоты дискового пространства

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

Как правило, в больших организациях дерево папок весьма разветвлено, поэтому визуальный контроль расходования дискового пространства пользователями отнимает у администраторов много времени и усилий.

Подобная проблема просто решается с помощью введения квот на дисковое пространство, доступное для работы каждому пользователю. В предыдущих версиях операционной системы Windows NT не было штатных возможностей ввести квоту на доступное дисковое пространство, поэтому любой пользователь мог распоряжаться всем пространством жестких дисков сервера. В Windows 2000 администратор может квотировать дисковое пространство по каждому тому и для каждого пользователя.

Windows 2000 учитывает пространство, занимаемое файлами, владельцем которых является контролируемый пользователь: если пользователь владеет файлом, размер последнего добавляется к общей сумме занимаемого пользователем дискового пространства. Важно отметить, что, поскольку квотирование выполняется по каждому тому, не имеет значения, находятся ли тома на одном физическом жестком диске или на различных устройствах.

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

Устанавливать и просматривать квоты на диске можно только в разделе с NTFS 5.0 и при наличии необходимых полномочий (задаваемых с помощью локальных или доменных групповых политик) у пользователя, устанавливающего квоты.

Для установки квоты:

Укажите мышью конфигурируемый том и нажмите правую кнопку мыши. В появившемся контекстном меню выберите команду Свойства. Появится окно свойств тома. Перейдите в нем на вкладку Квота (Quota) (рис. 19.1).

  1.  Установив флажок Включить управление квотами (Enable quota management), вы включите квотирование конфигурируемого тома. В этом случае будет установлен мягкий режим контроля используемого дискового пространства. Если вы хотите задать более жесткий режим, при котором пользователю в случае превышения квоты будет отказано в доступе к тому, установите флажок Не выделять место на диске при превышении квоты (Deny disk space to users exceeding quota limit). На этой же вкладке можно установить размер выделяемой квоты (Выделять на диске не более (Limit disk space to)) и порог, превышение которого вызывает запись предупреждения в журнал событий (Порог выдачи предупреждений (Set warning level to)). Эти параметры устанавливаются по умолчанию для всех пользователей.

Чтобы узнать, какие пользователи превысили выделенную им квоту (в мягком режиме), нажмите кнопку Записи квот (Quota Entries). Появится окно Записей квот (рис. 19.2), где будет отображен список пользователей с параметрами их квот и объемом используемого ими дискового пространства.

Учетные записи пользователей, которые превысили установленную для них квоту, отмечены специальным значком в столбце Состояние (Status).

В окне Записей квот можно изменить параметры квоты, задаваемой для конкретного пользователя. Для этого выделите конфигурируемую строку и дважды щелкните на ней - появится окно диалога Параметры квоты (Quota Settings).

Передача права владения 

В предыдущих версиях Windows NT право владения файлом или папкой являлось характеристикой, жестко привязанной к создателю данного объекта. Пользователь, создавший файл или папку, становился владельцем этого объекта. Право владения не могло быть передано другому пользователю. Единственное исключение составлял администратор, который мог стать владельцем файла или папки. Сам пользователь не мог передать право владения папкой или файлом другому пользователю.

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

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

Для передачи владения объектом файловой системы или для просмотра текущего владельца файла или папки откройте соответствующее окно свойств, перейдите на вкладку Безопасность, затем нажмите кнопку Дополнительно. Появится окно Параметры управления доступом (рис. 19.2). Перейдите на вкладку Владелец (Owner) этого окна.

Текущий владелец объекта виден в поле Текущий владелец этого элемента (Current owner of this item). В списке Изменить владельца на (Change owner) можно просмотреть учетные записи, обладающие правом получения во владение данного объекта файловой системы. Выделите учетную запись пользователя, которому вы хотите передать право владения и нажмите кнопки Применить (Арр1у) и ОК.

Сжатие файлов и папок

Рано или поздно пользователь сталкивается с проблемой нехватки дискового пространства. Для решения этой проблемы существует несколько путей:

  •  покупка нового дискового устройства;
  •  использование программ-архиваторов (наиболее известные – WinRAR, WinZIP и др);
  •  использование специальных программ – дисковых компрессоров (программы DriveSpace, DoubleSpace и др.).

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

Этот недостаток программ-архиваторов устраняют программы-дисковые компрессоры. Они находятся резидентно в памяти. При записи данных на диск, программа их сжимает, при чтении с сжатого диска дисковый компрессор автоматически распаковывает данные в оперативной памяти. Недостатком этих программ можно считать занятие центрального процессора при сжатии и распаковке информации и расход оперативной памяти для хранения кода программы–компресора. Интерфейс таких программ также не прозрачен. В системе после сжатия диска появляется дополнительный несущий диск. Программы –компрессоры нуждаются в конфигурировании и в запуске (часто в файле автозапуска типа файла autoexec.bat). Пользователь должен помнить  о том, что он работает на сжатом диске, и не все программы могут работать с такими данными (особенно сторонние утилиты, не входящие в состав данной ОС).

Начиная с файловой системы NTFS 4.0, возможность сжатия файлов встроена в саму файловую систему.

Для сжатия файла выполните следующую последовательность действий:

Щелкните файл или папку, которую нужно сжать, правой кнопкой мыши.

Выберите Свойства в контекстном меню.

На вкладке Общие нажмите кнопку Другие. Появится окно  Дополнительные атрибуты (рис.19.3).

Установите флажок Сжимать содержимое для экономии места на диске.

Если выбрано сжатие папки, будет предложено выбрать нужный параметр для подтверждения изменений атрибутов.

  1.  Следует помнить, что:
  •  Допускается сжатие файлов и папок только на дисках с файловой системой NTFS. Если кнопка Другие не отображается, значит выбранная папка или файл находятся не на диске NTFS.
  •  При добавлении или копировании файла в сжатую папку его сжатие производится автоматически. При перемещении файла с другого диска NTFS в сжатую папку также производится его сжатие.
  •   Сжатые файлы и папки не шифруются.

Существует возможность выделения при просмотре сжатых файлов и папок. Для этого:

Откройте объект Свойства папки на панели управления.

Выберите вкладку Вид (рис.19.4).

Установите флажок Отображать сжатые файлы и папки другим цветом.

Примечание. Чтобы открыть приложение панели управления, нажмите кнопку Пуск, выберите команды Настройка и Панель управления и дважды щелкните по соответствующему значку. Это диалоговое окно можно также открыть, если в меню Сервис программы Проводник выбрать пункт Свойства папки.

Команда Compact

Эта команда выполняет вывод информации или изменение сжатия  файлов или папок (каталогов) в разделе NTFS.

Синтаксис:  compact [/c|/u] [/s[:каталог]] [/a] [/q] [/i] [/f] [имя_файла[...]]

Параметры команды:

  •  Запущенная без параметров, команда 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

Точки соединения NTFS

Точки соединения (link) представляют собой новое средство, позволяющее отображать целевую папку в пустую папку, находящуюся в пространстве имен файловой системы NTFS 5.0 локального компьютера. Целевой папкой может служить любой допустимый путь Windows 2000. Точки соединения NTFS поддерживаются только в NTFS 5.0.

Примечание. Создание точек соединения NTFS аналогично монтированию некоторой файловой системы на пустой каталог в файловых системах UNIX .

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

Однако пользователям, работавшим ранее в других ОС (производства других фирм), такое количество дисков может показаться непривычным. Им удобнее работать в одной файловой системе, не разделенной на диски. Чтобы осуществить такой плавный переход на единую файловую систему и были разработаны точки соединения NTFS. На файловой системе FAT такое проделать не удастся.

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

Работа с точками соединения NTFS 

Утилита mountvol

С помощью утилиты mountvol.ехе можно:

  •  Отобразить корневую папку локального тома в некоторую папку NTFS 5.0 (другими словами, подключить том).
  •  Вывести на экран информацию о целевой папке точки соединения 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:\

  1.   С помощью утилиты тоипtvol подключите тома СD-ROM и D: к точкам соединения:

mkdir CD

mountvol CD \\?\Volume{fccfe1d1-932a-11d5-bba4-806d6172696f}\

mkdir MoreDiskSpace

mountvol CD \\?\Volume{fccfe1d3-932a-11d5-bba4-806d6172696f}\

  1.  Для проверки работоспособности созданных точек соединения выполните команду dir в двух новых папках. Вы должны увидеть содержимое целевых томов. Теперь полученные соединения могут быть использованы для доступа к целевым томам.
  2.  Для того чтобы узнать, какие целевые тома соответствуют точкам соединения, с клавиатуры введите следующие команды:

mountvol CD /L

mountvol MoreDiskSpace /L

Теперь можно провести еще одно, весьма «суровое» испытание работоспособности точки соединения NTFS, поскольку после подключения тома к точке соединения вы больше не нуждаетесь в имени тома. Поэтому, запустив оснастку Управление дисками (Disk Management), можно удалить имя устройства D: и СD-RОМ. Несмотря на исчезновение имен устройств, вы все же можете получить доступ к ним, используя созданные точки соединения. Конечно, вам следует внимательно следить за тем, чтобы не нарушить работу пользователей и программ, напрямую обращающихся к тому с помощью его имени.

Удаление точки соединения. Для удаления точки соединения введите с клавиатуры следующие команды:

mountvol CD /d

Mountvol MoreDiskSpace /d

Управление точками соединения с помощью оснастки   Управление дисками (Disk Management)

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

Запустите оснастку Управление дисками.

  1.  Укажите нужный том файловой системы и нажмите правую кнопку мыши. В появившемся контекстном меню выберите команду Изменение буквы диска и пути диска (Change Drive Letter and Path).
  2.  В появившемся окне диалога нажмите кнопку Добавить (Add). Откроется окно диалога Добавление новой буквы диска или пути диска (Add New Drive Letter or Path).
  3.  Выберите положение переключателя Подключить как следующую папку NTFS (Mount in this NTFS folder) и в текстовом поле укажите новый путь к тому.
  4.  Нажмите кнопку ОК. Все окна диалога, открывшиеся из первого Управление дисками, закроются. Теперь доступ к информации тома можно получить с помощью указанного нового пути.

Для удаления точки соединения:

  1.  Запустите оснастку Управление дисками.
  2.   Укажите нужный том файловой системы и нажмите правую кнопку мыши. В открывшемся контекстном меню выберите команду Изменение буквы диска и пути диска.
  3.  В открывшемся окне диалога выберите нужный путь и нажмите кнопку Удалить (Remove).
  4.  В открывшемся окне подтвердите правильность выполняемого действия. Теперь доступ к данным тома с помощью точки соединения становится невозможен.

Дефрагментация диска

Операционная система не всегда располагает информацию файлов и папок в одном непрерывном пространстве. Фрагменты данных могут находиться в различных кластерах жесткого диска. В результате при удалении файлов освобождающееся дисковое пространство также становится фрагментированным. Чем выше степень фрагментации жесткого диска, тем ниже производительность файловой системы. Причем фрагментации подвержены обе файловые системы Windows NT/2000 FAT и NTFS.

Для решения этой проблемы в состав операционной системы Windows 2000 включена оснастка Дефрагментация диска (Disk Defragmenter). В процессе дефрагментации кластеры диска организуются таким образом, чтобы файлы, папки и свободное пространство по возможности располагались непрерывно. В результате значительно повышается производительность файловой системы, поскольку сокращается количество операций ввода/вывода, необходимое для чтения определенного объема информации, уменьшается количество перемещений магнитной головки диска. Следует отметить, что при дефрагментации свободное пространство не объединяется в одну непрерывную область, а располагается в нескольких областях. Это значительно сокращает время выполнения дефрагментации и практически не уменьшает производительность файловой системы, получаемую после дефрагментации.

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

Оснастка Дефрагментация диска работает с томами жесткого диска, сформатированными для файловых систем FAT, FAT32 и NTFS. Она осуществляет выполнение двух отдельных операций – анализ и дефрагментацию. В процессе анализа на томе жесткого диска не выполняются никакие изменения. Все необходимые перемещения информации производятся при дефрагментации. В определенный момент времени дефрагментации может быть подвергнут только один том.

Для запуска оснастки Дефрагментация диска:

В окне Мой компьютер или Проводник укажите дефрагментируемый том и нажмите правую кнопку мыши.

В открывшемся контекстном меню выберите команду Свойства.

Появится окно свойств тома. Перейдите на вкладку Сервис (Tools).

В открывшемся окне нажмите кнопку Выполнить дефрагментацию (Defragment Now).

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

  •  красным – фрагментированные области;
  •  темно-синим – нефрагментированные области;
  •  белым – свободное пространство тома;
  •  зеленым – системные файлы, которые не могут быть перемещены оснасткой Дефрагментация диска, поскольку являются частью операционной системы Windows 2000. Зеленым цветом области выделяются только на томах NTFS.

Для выполнения анализа жесткого диска:

  •  В окне оснастки Дефрагментация диска (рис.19.5) выделите анализируемое устройство и нажмите кнопку Анализ (Аnalyze). После завершения анализа появится окно диалога, запрашивающее необходимость выполнения дефрагментации. Остановить или прервать процесс анализа можно с помощью кнопок Пауза (Pause) и Остановка (Stop) соответственно.

Для выполнения дефрагментации жесткого диска:

  •  В окне оснастки Дефрагментация диска выделите дефрагментируемый диск и нажмите кнопку Дефрагментация (Defragment). Сначала выполнится анализ тома, затем начнется собственно дефрагментация. Остановить или прервать процесс дефрагментации можно с помощью кнопок Пауза и Остановка, соответственно.

Потоки

С самой первой версии 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 не обладает средствами обращения к именованным потокам. Для просмотра содержимого именованного потока выполните следующую команду:

MORE <New_Streams.txt:New_Stream

Результат выполнения команды показан на рис.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

mail

mail

mail

mail

mail

mail

mail

mail

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




1. тематического обеспечения Прикладное программноматематич обеспечение может быть классифицируемослед об
2. а- добровольный ~ А Соглашение сторон; Б Брачный договор
3. темах составляющих его закономерностях его функционирования и развития социальных институтах отношени.html
4. ТЕМАТИЧЕСКИХ МЕТОДОВ И МОДЕЛЕЙ Л А Б О Р А Т О Р Н А Я Р А Б О Т А по э к о н о м е т р и к е Вариан
5. Расчет привода и редуктора
6. Тема гри безпосередньо для нашої команди звучить так Соціальні мережі сприяють розбудові громадянського с
7. Ультрофіолетове опромінення аутокрові у лікуванні гнійно-запальних процесів додатків матки
8. Дивидендная политика предприятия
9. Сатира в повести Собачье сердц
10. Бухгалтерский учет в зарубежных странах