Механизмы защиты файлов и изменение прав доступа

Файловая система UNIX обеспечивает возможность совместного использования файлов различными пользователями и обеспечивает защиту файлов от несанкционированного доступа. При этом пользователей делят на три категории:

- владелец файла

- член группы, к которой принадлежит владелец

- прочие пользователи.

В UNIX существует три типа доступа к файлам:

1. чтение из файла, т.е. смотреть содержание

2.запись в файл, т.е. менять содержимое

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

Для обозначения прав доступа используются символы:

r – разрешение на чтение

w – разрешение на запись

x – разрешение на выполнение

– – отсутствие разрешения

Определение прав доступа

Информация о правах доступа получается с помощью команды ls – l

$ ls – l

-rw------2

drw-w----1

Здесь первый символ определяет тип файла:

-обычный файл

d каталог

b блок-ориентированный специальный файл

с байт-ориентированный файл

Механизмы защиты файлов и изменение прав доступа - student2.ru Следующие 9 символов определяют права доступа

Следующие символы означают:

- число связей файла;

- имя владельца;

- размер файла в байтах;

- дата;

- время последней модификации;

- имя файла.

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

В ОС UNIX большинство данных хранится в файлах, расположенных на том же местном диске, что и сама ОС. Хотя специальный тип файловой системы NFS (Network File System) обеспечивает хранение файлов на удаленном компьютере. Файловая система также может располагаться на CD-ROM, дискетах и других типах носителей.

Исконной файловой системой UNIX s5fs. Файловая система, разработанная в Беркли, FFS, появилась позже в версии 4.2BSD и UNIX. По сравнению с s5fs она обладает лучшей производительностью, функциональностью и надежность. Файловые системы современных версий имеют весьма сложную архитектуру, различную для разных версий, тем не мене все они используют базовые идеи, законченные разработчиками UNIX. Когда появилась FFS, создатели различных версий ОС UNIX вынуждены были выбирать одну из двух базовых файловых систем s5fs или FFS. Это неудобство было преодолено введением виртуальной файловой системы – архитектуры, позволяющей обеспечивать работу с файловыми системами различных типов. VFS была разработана фирмой Sun Microsystems.

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

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

1) Суперблок (superblock).

2) Массив индексных дескрипторов или метаданные

3) Блоки хранения данных

Файловая система представляется в виде последовательности блоков. Размер блока кратен 512 байтам.

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

1. Тип файловой системы

2. Размер файловой системы в блоках, включая сам суперблок, массив индексных дескрипторов и блоки хранения данных

3. Размер массива индексных дескрипторов

4. Число свободных блоков, доступных для размещения

5. Число свободных индексных дескрипторов, доступных для размещения

6. Флаги (флаг модификации и флаг монтирования)

7. Размер логического блока ( 512, 1024, 2048)

8. Список номеров свободных индексных дескрипторов

9. Список адресов свободных блоков.

Индексные дескрипторы

Индексный дескриптор, или inode, содержит информацию о файле, необходимую для обработки данных т.е. метаданные файла. Каждый файл связан, ассоциирован с одним индексным дескриптором, хотя может иметь несколько имен в файловой системе, каждое из которых указывает на один и тот же индексный дескриптор. При открытии файла ядро помещает копию дискового дескриптора в память в соответствующую таблицу (in-core inode), которая содержит несколько дополнительных полей.

Основные поля дискового индексного дескриптора следующие

di_mode – тип файла, дополнительные атрибуты выполнения и права доступа

di_nlinks – число ссылок на файл, т.е. количество имен, которые имеет файл в файловой системе

di_nid, di_gid – идентификаторы владельца-пользователя и владельца-группы

di_size – размер файла в байтах. Для специальных файлов это поле содержит старший и младший номер устройства

di_atime – время последнего доступа к файлу

di_mtime – время последней модификации

di_etime – время последней модификации индексного дескриптора

di_addr[13] – массив адресов дисковых блоков хранения данных

Каталог

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

Это позволяет любому файлу иметь теоретически неограниченное число имен в файловой системе.

Каталог файловой системы s5fs представляет собой таблицу, каждый элемент которой имеет размер в 16 байтов: 2 байта хранят номер индексного дескриптора файла, а 14 байт – его имя. Это накладывает ограничение на число индексных дескрипторов, которое не может превышать 65536. Такое ограничение и длина имени файла: его максимальный размер – 14 символов.

Первые два элемента каталога адресует сам каталог (текущий каталог) под именем «.» и родительский каталог под именем «..».

При удалении имени файла из каталога (например, с помощью команды rm) номер индексного дескриптора соответствующего элемента устанавливается равным 0. Ядро обычно не удаляет такие свободные элементы, поэтому размер каталога не уменьшается даже при удалении файлов.

Наши рекомендации