Стартовое руководство пользователя описывает концепцию прав доступа к файлам, а также понятия владельца файла, но в действительности для файловых систем UNIX (это относится и к GNU/Linux' ext2fs) требуется, чтобы мы ввели определение файла.
В данном случае, “всё” действительно означает всё. Жесткий диск, разделы на жестком диске, параллельные порты, подключение к web-сайтам, Ethernet карточка, все они являются файлами. Даже каталоги - это файлы. В GNU/Linux существует много типов файлов в дополнение к стандартным файлам и каталогам. Обратите внимание, здесь под типом файла, мы не подразумеваем содержимое файла: в GNU/Linux и любой другой UNIX системах, файл, будь это текст, или PNG картинка, или двоичный файл, или что-то подобное, является только потоком байтов. Разделение файлов согласно их содержанию оставлено приложениям.
Если вы помните, при вводе команды ls -l, символ перед правами доступа идентифицирует тип файла. Мы уже видели два типа файлов: обычный файл (-) и каталог (d). Блуждая по диску, вы также можете встретить и другие типы файлов:
Символьные файлы: это любые специальные системные файлы (типа /dev/null, который мы уже обсуждали), или периферийные устройства (последовательные или параллельные порты), которые разрешают совместное использование своего содержания без буферизации (их значение не сохраняется в памяти). Такие файлы идентифицированы символом c.
Файлы блочного доступа: Эти файлы - являются периферийными устройствами, и, в отличие от символьных файлов, их содержание - буферизируется. В эту категорию входят такие файлы, как например: жесткие диски, разделы на жестком диске, дисководы для гибких дискет, CD-ROM, и так далее. Примерами файлов блочного доступа могут служить файлы /dev/hda, /dev/sda5. В результате выполнения команды ls -l, они идентифицированы символомb.
Символические ссылки: эти файлы очень широко используется в Mandrake Linux, например в процедуре запуска системы (см. главу Глава 11. Файлы загрузки: init sysv). Название этих файлов отражает цель. Символические ссылки связаны с файлом символическим способом, что означает, что такие файлы могут указывать на существующий файл. Подробнее об этом позже в этой главе. Символические ссылки очень часто (и неправильно, что будет показано позже) называют “мягкими (soft) ссылками”. Такие файлы идентифицируются символом 'l'.
Именованные каналы (pipes): очень похожи на каналы, используемые в shell, фактически разница только в том, что такие каналы имеют название. Именованные каналы очень редки. Маловероятно, что вы встретите хотя-бы один во время исследования файлового дерева. На всякий случай сообщаем что символ, идентифицирующий их - 'p'. Чтобы узнать больше об этом, взгляните сюда : “ Анонимные Каналы и Именованные Каналы”.
Сокеты (socket: розетка, разъем): Этот тип файла для всех сетевых подключений. Только некоторые из них имеют названия. Нужно заметить, что сокеты бывают нескольких типов, но эта тема выходит за рамки данной книги. Такие файлы идентифицированы символом 's'.
Вот примеры каждого типа файлов:
$ ls -l /dev/null /dev/sda /etc/rc.d/rc3.d/S20random /proc/554/maps \ /tmp/ssh-queen/ssh-510-agent crw-rw-rw- 1 root root 1, 3 May 5 1998 /dev/null brw-rw---- 1 root disk 8, 0 May 5 1998 /dev/sda lrwxrwxrwx 1 root root 16 Dec 9 19:12 /etc/rc.d/rc3.d/ S20random -> ../init.d/random* pr--r--r-- 1 queen queen 0 Dec 10 20:23 /proc/554/maps| srwx------ 1 queen queen 0 Dec 10 20:08 /tmp/ssh-queen/ ssh-510-agent= $ |
Inode является, вместе с принципом “Все есть файл”, фундаментальной частью файловой системы UNIX. Слово “inode” это сокращение от Information NODE (Информационный УЗЕЛ).
Inodes хранятся на диске в inode table (таблице информационных узлов). Они существуют для всех типов файлов, которые могут храниться в файловой системе, и это включает каталоги, именованные каналы, файлы символьного режима и так далее. Что приводит к другому известному выражению: “inode есть файл”. При помощи inode UNIX идентифицирует файл уникальным способом.
Иначе говоря UNIX не идентифицирует файл по его имени. Вместо этого используется номер [18] из таблицы inode. Причина для этого заключается в том, что файл может иметь несколько названий, или вообще не иметь никакого названия. Имя файла в UNIX, является только указателем на inode. Такой указатель называется link (линк или ссылка). Давайте рассмотрим ссылки более подробно.
[18] Важно: обратите внимание, что номер inode уникален в пределах файловой системы, что означает, что inode с тем же самым номером может существовать на другой файловой системе. Это приводит к различию между дисковым inode и inode в оперативной памяти. Два дисковых inode могут иметь один и тот же номер, если они находятся на двух различных файловых системах. В оперативной памяти inode имеет уникальный номер на всю систему.