назад

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

Файловая система представляет собой иерархическую структуру («дерево») каталогов, в каждом каталоге могут находиться вложенные каталоги и файлы.

В ОС, ведущих свою историю от MS DOS каждое устройство хранения информации (логический диск) обозначается буквой латинского алфавита (именно поэтому DOS получила название «дисковая операционная система»). В отличии от этого в ОС UNIX все устройства представляются как ветви единого дерева каталогов. Каждое устройство подключается к дереву в качестве каталога. Процесс подключения устройства к дереву каталогов называется монтированием файловой системы, а каталог к которому происходит подключение – точкой монтирования. Подробнее монтирование файловой системы изучается в последующих работах.

В виде файлов в ОС UNIX представляются различные объекты:

В именах файлов и каталогов допустимы буквы латинского алфавита, цифры и символы, за исключением символов “ ‘ * ? $. Заглавные и строчные буквы различаются. Для удобства после символа «.» обычно указывают расширение (набор символов, указывающий на содержимое файла), но в отличии от DOS расширение не влияет на способ работы ОС с этим файлом. Если имя файла начинается с символа «.», то он является скрытым (по умолчанию не отображается при просмотре каталога соответствующей командой).

В общем случае при указании имени файла или каталога необходимо указать полный путь к нему, начиная от корневого каталога. Каталоги находящиеся на пути к объекту перечисляются через символ “/” например путь к файлу passwd находящемуся в каталоге etc, находящемуся корневом каталоге записывается так: /etc/passwd.

Если путь к объекту не указан, то берется объект из текущего каталога.

Ссылки на файлы

Существуют два типа ссылок: жесткие и мягкие. Жесткая ссылка на файл это его имя, которое представляет файл в файловой системе. Один и тот же файл может иметь несколько имен, находящихся в разных каталогах, то есть имена /var/log/myfile.log и /home/user/file1 могут указывать на один и тот же файл. Если у файла имеется только одно имя (одна жесткая ссылка), то удаление этого файла приводит к удалению данных. Если ссылок несколько, то удаление файла по одной из его ссылок приводит только к удалению ссылки.

Мягкие ссылки представляют собой файл, содержащий путь к другому файлу и интерпретируемый оболочкой как указатель на этот файл. Мягкие ссылки подобны ярлыкам в ОС Windows.

Назначение каталогов

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

Каталог

Содержимое

/bin

Внешние команды системы

/dev

Специальные файлы устройств, являющиеся интерфейсом взаимодействия команд и драйверов

/etc

Файлы конфигурации

/etc/rc.d

Сценарии инициализации системы, автоматически выполняемые при запуске

/boot

Файлы с исполняемым кодом ядра операционной системы

/lib

Коды библиотек языков программирования

/lost+found

«Потерянные» файлы, то есть совокупности данных, на которые в следствии ошибки файловой системы не ссылается ни одно имя

/mnt

К подкаталогам этого каталога обычно подключают файловые системы дополнительных устройств хранения данных (CD-ROM, гибкий диск и т. п.)

/home

Домашние каталоги пользователей

/usr

Служебные данные различных подсистем

/usr/src

Исходные коды программ, в том числе ядра Linux

/var

Для хранения различных дбанных – электронных почтовых ящиков пользователей; каталогов, к которым осуществляется доступ по FTP и через веб-сервер, и т. п.

/var/log

Файлы с протоколом работы системы

/var/www

Каталог веб-сервера, в котором хранятся публикуемые веб-страницы

/root

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

/tmp

Каталог для временных файлов, доступен всем пользователям системы

Команды для работы с файлами и каталогами

Для запуска файла программы нужно ввести в качестве команды полный путь к этому файлу. Если запускается файл из текущего каталога, то перед именем файла нужно поставить символы «./» в (символ «.» в качестве названия каталога означает «текущий каталог»). Например для запуска файла myprog из текущего каталога набрать

./myprog

Если путь (или символ «.») не указан, оболочка ищет требуемый файл в каталогах, , имена которых содержатся в переменной среды PATH.

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

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

Ниже приведен краткий справочник по командам. Реально большинство приведенных здесь команд имеет более десяти параметров, подробно о них можно узнать в [1] или в справочной системе.

Команды для работы с файлами и каталогами

pwd

Выводит имя текущего каталога

cd [directory]

Переход к указанному каталогу ( к домашнему каталогу, если каталог не указан)

mkdir directory

Создает новый каталог

ls [-a] [-l] [directory]

Выводит список файлов в каталоге (если каталог не задан, используется текущий каталог).

–a вывод сведений о всех файлах, включая скрытые (имена которых начинаются с точки);

–l вывод сведений о файлах в длинном формате ( включая информацию о владельцах файлов, дате создания и пр.)

cp source destination

Создает копию файла source с именем destination

cp source directory

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

rm [-f] file

Удаляет указанный файл (файлы), если не указана опция –f, для каждого удаления требуется подтверждение

rmdir

Удаляет пустые каталоги

cat [file]

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

ln [-s] target linkname

Создает ссылку с именем linkname на файл с именем target. Если ключ –s не указан, создается жесткая ссылка, если указан – мягкая.

touch [–t [[CC]YY]MMDDhhmm.[ss]] file

Изменяет время доступа и модификации указанного файла, на заданные опцией –t (век, год, месяц, день, час, минуты, секунды). Если опция –t не указана, используется текущее время. Если файл не существует, он создается.

Права на доступ к файлам и каталогам

В UNIX каждому объекту файловой системы (файлу или каталогу) сопоставлен пользователь-владелец и группа-владелец. Права на доступ к файлу отдельно задаются для пользователя-владельца; для пользователей, входящих в группу-владельца; для остальных пользователей. Для каждой из этих трех категорий указывается наличие/отсутствие разрешения на чтение, на запись (изменение) и на исполнение файла (то есть может ли он быть запущен как программа). Таким образом права на доступ к файлу описываются девятью двоичными цифрами, что соответствует трем восьмеричным цифрам. Куоманда ls с опцией –l позволяет узнать пользователя-владельца, группу-владельца и заданные права доступа для файлов (каталогов). При этом права на доступ к объекту указываются в виде девяти символов, например:

-rw-r-----

drwxrwxrwx

-rwxr-x---

Первый символ показывает является ли объект файловой системы файлом (-) или каталогом (d)

Второй-четвертый символы показывают состояние битов прав доступа для пользователя владельца (символ «-» означает что бит не установлен, буква (r – read, w- write, x – execute) – бит установлен (имеется соответствующее право доступа).

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

Право на чтения для каталога означает возможность просмотреть его содержимое. Право на запись в каталог означает возможность записывать в него файлы и удалять их (даже если права на запись в эти файлы у пользователя нет!). Право на исполнение для каталога интерпретируется как право доступа к вложенным каталогам. Предположим что пользователь имеет право на чтение и запись для каталога /home/user/cat1/cat2/, но не имеет такого права для /home/user/cat1/. Если он имеет право на исполнение для /home/user/cat1/, то он сможет просматривать каталог /home/user/cat1/cat2/ и записывать в него файлы.

Для смены пользователя-владельца, группы-владельца и управления правами доступа используются следующие команды:

chown username|UID file

Задает указанного пользователя в качестве пользователя-владельца файла (нескольких файлов)

chgrp groupname|GID file

Задает указанную группу в качестве группы-владельца файла (нескольких файлов)

chmod mode file

Задает указанные права доступа для файла (нескольких файлов). Права доступа могут быть указаны трехзначным восьмеричным числом, или в символьном формате:

Программа Midnight Commander

Программа Midnight Commander представляет собой аналог программы Norton Commander для UNIX. Запуск программы осуществляется с помощью команды mc.

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

Расширенное меню, вызываемое по клавише F9 позволяет задавать права доступа к файлам и изменять данные о владельцах.