Filesystem Hierarchy Standard

Практическая работа № 18, 19, 20

Тема: Работа с файлами и каталогами в ОС Linux.

Цель: Приобрести базовые навыки работы с файлами и каталогами в ОС Linux.

Теоретический материал

Иерархия файловой системы

Файловая система – это основная часть любой операционной системы. Она отвечает за организацию хранимых ресурсов (файлов). По сути – это часть ядра управляющая доступом к файлам и каталогам.

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

В UNIX-like системах используется слеш (“slash”) – символ / в путях файлов и каталогов, в то время как в Windows системах бекслеш (“backslash”) – символ \

В UNIX/Linux-системах регистр играет роль (В отличие от Windows). То есть файлы file.txt и FILE.txt будут совершенно разными файлами, и они спокойно могут находиться в одном каталоге.

Имя каталога в файловой системе ограничено 255 символами а отдельно взятое путевое имя 1023 символами.

Filesystem Hierarchy Standard

Чаще всего в Linux используется Filesystem Hierarchy Standard (FHS) для структуры файловой системы. Он определяет имена, расположение и права доступа для многих типов файлов и каталогов. Файловая система в Linux никогда не была хорошо упорядочена так как использовалось большое количество правил именования файлов. Filesystem Hierarchy Standard эту проблему решает.

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

Файлы в файловой системе разбиты на две логические категории:

1. Доступные для общего доступа и не доступные (shareable и unshareable);

Файлы с общим доступом доступны как с локальной машины так и по сети.

Файлы не доступные для общего доступа, доступны только локально.

2. Изменяемые и статические файлы.

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

Такое разделение файлов позволяет соотнести функции файлов с правами на директории, которые эти файлы хранят. То как пользователи будут взаимодействовать с файлами определяется каталогами, смонтированы ли они в read only режиме или в read write, и какие права доступа у пользователя на этот файл.

Типы файлов

В большинстве файловых систем поддерживается семь типов файлов:

1. Обычные файлы;

Это просто последовательность байтов. К обычным файлам возможен как прямой так и последовательный доступ. Файл можно создать текстовым редактором или перенаправлением вывода, а удалить – командой rm.

2. Каталоги;

Каталоги содержат именованные ссылки на другие файлы. Помимо самих каталогов, также существуют ссылки «.» и «..», которые обозначают текущий и родительский каталог соответственно. Удалить их нельзя. Поскольку у корня нет родителя то ссылка «..» в нем эквивалентна «.». Каталоги создаются командой mkdir, а удаляются командой rm -rf (полные каталоги) или rmdir (пустые каталоги).

3. Файлы байт-ориентированных (символьных) устройств;

Байт-ориентированные устройства, например, принтер и модем, передают данные посимвольно, не как отдельные блоки, а как непрерывный поток байтов. Файлы устройств можно создавать командой mknod, а удалять – командой rm.

4. Файлы блок-ориентированных (блочных) устройств;

Блок-ориентированные устройства, например жесткий диск, передают данные блоками. Файлы устройств можно создавать командой mknod, а удалять – командой rm.

5. Сокеты;

Сокеты инкапсулируют соединения между процессами, позволяя им взаимодействовать, не подвергаясь влиянию других процессов. Сокеты создаются с помощью системного вызова socket. Когда с обеих сторон соединение закрыто, сокет можно удалить командой rm или системным вызовом unlink.

6. Именованные каналы (named pipe);

Подобно сокетам, именованные каналы обеспечивают взаимодействие двух процессов, выполняемых на одном компьютере. Именованные каналы можно создавать командой mknod, а удалять – командой rm.

7. Ссылки.

Символическая, или “мягкая” ссылка обеспечивает возможность вместо путевого имени файла указывать псевдоним. Когда ядро при поиске файла сталкивается с символической ссылкой то оно извлекает из нее путевое имя. Для пользователя такой файл в большинстве ситуаций неотличим от того, на который он ссылается: операции чтения, записи и пр. над символьной ссылкой работают так, как если бы они производились непосредственно над тем файлом, на который указывает ссылка. Другой тип ссылки – “жесткий“. Разница между “мягкими” и “жесткими” ссылками состоит в том, что “жесткая” ссылка является прямой, то есть указывает непосредственно на индексный дескриптор файла в то время как “мягкая” указывает на файл по имени. Жесткие ссылки создаются командой ln, мягкие (символические ссылки) создаются с помощью команды ln -s. Удалить ссылки можно командой unlink или rm.