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

http://citforum.ru

http://en.wikipedia.org/wiki/Unix file-types

http://www.ibm.com/developerworks/ru

Все, что ни есть в системе UNIX, – это файл. И это не такое уж чрезмерное упрощение, как может показаться на первый взгляд. Когда разрабатывалась первая версия системы, еще до того, как она получила название, было решено сконцентрировать усилия на создании простой и удобной в использовании структуры файловой системы. И своему успеху и удобству применения UNIX в большой степени обязан именно файловой системе. Она представляет собой один из лучших примеров воплощения философии «простоты», показывая, какой мощи можно достичь аккуратной реализацией небольшого количества хорошо продуманных идей.

Brian W. Kernighan,

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

С точки зрения пользователя в операционной системе UNIX существуют два типа объектов: файлы и процессы. Все данные хранятся в виде файлов, доступ к периферийным устройствам осуществляется посредством чтения-записи в специальные файлы. Когда вы запускаете программу, ядро загружает соответствующий исполняемый файл, создает образ процесса и передает ему управление. Более того, во время выполнения процесс может считывать или записывать данные в файл. С другой стороны, вся функциональность операционной системы определяется выполнением соответствующих процессов. Работа системы печати или обеспечения удаленного доступа зависит от того, выполняются ли те или иные процессы в системе.

Строго говоря: Файл – это последовательность байтов (байт – фрагмент информации, состоящий из 8 бит), некий объем фиксированной, определенной, отмеченной.....информации на носителе данных - лента, ж.диски, flash, ..и тд. В UNIX файл -- очень удобная абстракция. С точки зрения UNIX файлом называется "что-нибудь", из чего можно считывать информацию или во что можно записывать информацию. Файл -- это всё, что предназначено для ввода или вывода информации, с точки зрения системы это простая неструктуированная последовательность байтов или символов. Предоставляемые системой примитивы позволяют получить доступ к отдельным байтам последовательно или в произвольном порядке. Не существует встроенных в файлы символов конца записи или конца файла, а также различных типов записей, которые нужно было бы согласовывать. Строка пути к файлу.

Файлы в UNIX играют ключевую роль, что не всегда справедливо для других операционных систем:

    • Файлы в обычном смысле: файлы, которые хранятся на жестком диске (можно считывать из них и запиcывать в них информацию);

    • Экран монитора: файл, в который можно выводить информацию (отобразится на экране монитора);

    • Клавиатура: файл, из которого можно считывать информацию;

    • Принтер: файл, в который можно выводить информацию (печать текста);

    • Модем: файл, из которого можно считывать информацию и в который можно записывать информацию (обмен информации по сети);

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

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

Как и во многих современных операционных системах, в UNIX файлы организованы в виде древовидной структуры (дерева), называемой файловой системой (filesystem). Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог (root directory), имеющий имя (/).Имена всех остальных файлов содержат путь — список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. В UNIX все доступное пользователям файловое пространство объединено в единое дерево каталогов, корнем которого является каталог (/).Таким образом, полное имя любого файла начинается с (/) и не содержит идентификатора устройства (дискового накопителя, CD-ROM или удаленного компьютера в сети), на котором он фактически хранится, следует помнить, что "имя файла" которое здесь имеется в виду это одна из абстракций удобная для использования, поскольку изначальное "имя" файла это его inode, для системы это и есть истинное имя, его внутреннее системное имя, а иерархия каталогов как раз и призвана дать предоставление удобных имен файлов, а суть этого "удобного имени" - жесткая ссылка.

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

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

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

Файловая система UNIX характеризуется:

  • иерархической структурой,

  • согласованной обработкой массивов данных,

  • возможностью создания и удаления файлов,

  • динамическим расширением файлов,

  • защитой информации в файлах,

  • трактовкой периферийных устройств (таких как терминалы и ленточные устройства) как файлов.

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

Формат файловой системы

Файловая система имеет следующую структуру.

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

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

  • Список индексов (inode) в файловой системе располагается вслед за суперблоком. Администраторы указывают размер списка индексов при генерации файловой системы. Ядро операционной системы обращается к inode, используя указатели в списке индексов. Один из индексов является корневым индексом файловой системы: это индекс, по которому осуществляется доступ к структуре каталогов файловой системы после выполнения системной операции mount (монтировать) .

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

Типы файлов

В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:

  • Обычный файл (regular file)

  • Каталог (directory)

  • Специальный файл устройства (special device file)

  • FIFO или именованный канал (named pipe)

  • Связь (link)

  • Сокет (socket)

regular file

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

directory

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

Текущий каталог

Каждая выполняющаяся программа, то есть каждый процесс, имеет текущий каталог и подразумевается, что все имена файлов начинаются с имени этого каталога, если только в начале имени не задан явно символ косой черты /. Следовательно, и у оболочки, в которую пользователь попадает при входе в систему, и например у команды ls есть текущий каталог. Текущий каталог является атрибутом процесса, а не пользователя или программы – у пользователей есть регистрационные каталоги, а у процессов – текущие. Если процесс порождает другой процесс, то потомок наследует текущий каталог своего родителя. Но если дочерний процесс переходит в другой каталог, на родителе это никак не отражается – его текущий каталог останется прежним, что бы ни делали его потомки. Понятие текущего каталога введено во многом для удобства обозначения, ведь оно позволяет значительно сократить объем вводимого текста, но его основное назначение – организационное.

special device file

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

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

named pipe

FIFO (First In, First Out) или именованный канал — это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм. Более подробно это рассмотривается при обсуждении системы межпроцессного взаимодействия.

Каналы (pipe).

link

Как уже говорилось, каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе (Данное утверждение верно лишь отчасти. Действительно, файлу "безразлично", какие имена он имеет в каталогах, но "небезразлично" число этих имен. Если ни одно из имен файловой системы не ссылается на файл - он должен быть удален (т. е. физически удалены его данные на диске)). Такая связь имени файла с его данными называется жесткой связью(hard link). Например, с помощью команды ln мы можем создать еще одно имя (second) файла, на который указывает имя first.

Жесткие связи абсолютно равноправны. В списках файлов каталогов, которые можно получить с помощью команды ls, файлы first и second будут отличаться только именем. Все остальные атрибуты файла будут абсолютно одинаковыми. С точки зрения пользователя это два разных файла. Изменения, внесенные в любой из этих файлов, затронут и другой, поскольку оба они ссылаются на одни и те же данные файла. Вы можете переместить один из файлов в другой каталог — все равно эти имена будут связаны жесткой связью с данными файла. Легко проверить, что удаление oдного из файлов (first или second) не приведет к удалению самого файла, т. е. его метаданных и данных (если это не специальный файл устройства).

Структура файловой системы после выполнения команды ln (жесткая связь имен с данными файла) По определению жесткие связи указывают на один и тот же индексный дескриптор inod. Поэтому проверить, имеют ли два имени файла жесткую связь, можно, вызвав команду ls с ключом -i.

$ ls -i /home/nobody/first /home/someone/second

12567 first

12567 second

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

$ ls -1 /home/someone

-rw r-- r-- 2 nobody staff 7245 jan 20 12:01 second

Во второй колонке листинга указано число жестких связей данного файла, жесткая связь является естественной формой связи имени файла с его метаданными и не принадлежит к особому типу файла. Особым типом файла является связь, позволяющая косвенно адресовать файл. В отличие от жесткой связи, символическая связь(symlink) адресует файл, который, в свою очередь, ссылается на другой файл. В результате, последний файл адресуется символической связью косвенно. Данные файла, являющегося символической связью, содержат только имя целевого файла. Проиллюстрируем эти рассуждения на примере. Команда ln с ключом -s позволяет создать символическую связь:

$ pwd

/home/nobody

$ ln -s first /home/someone/symfirst

$ cd /home/someone

$ ls -1

rwx rwx rwx 1 nobody staff 15 jan 20 12:10 symfirst->../nobody/first

Как видно из вывода команды файл symfirst (символическая связь) существенно отличается от файла second (жесткая связь). Во-первых, фактическое содержимое файла symfirst отнюдь не то же, что и у файла first или second, об этом говорит размер файла — 15 байт. На самом деле в этом файле хранится не что иное как имя файла, на которую символическая связь ссылается ../nobody/first - равно 15 байт. Во-вторых, файл symfirst не содержит никаких ограничений на доступ (символы в первой колонке).

Символическая связь является особым типом файла (об этом свидетельствует символ (1) в первой позиции вывода ls),и операционная система работает с таким файлом не так, как с обычным. Например, при выводе на экран содержимого файла symfirst появятся данные файла /home/nobody/first.

socket

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

В системах, ветви BSD UNIX реализована система межпроцессного взаимодействия, с помощью которой работают многие системные сервисы, например, система печати:

Межпроцессное взаимодействие в BSD UNIX.

Разработчики системы межпроцессного взаимодействия BSD UNIX руководствовались рядом соображений:

Во-первых, взаимодействие между процессами должно быть унифицировано, независимо от того, выполняются ли они на одном компьютере или на разных хостах сети. Наиболее оптимальная реализация межпроцессного взаимодействия, удовлетворяющего этому требованию, должна иметь модульную структуру и базироваться на общей подсистеме поддержки сети UNIX. При этом могут быть использованы различные схемы адресации объектов, их расположение, протоколы передачи данных и т. д. В этой связи было введено понятие коммуникационный домен (communication domain), описывающее набор обозначенных характеристик взаимодействия. Для обозначения коммуникационного узла, обеспечивающего прием и передачу данных для объекта (процесса), был предложен специальный объект — (socket). Сокеты создаются в рамках определенного коммуникационного домена, подобно тому как файлы создаются в рамках файловой системы. Сокеты имеют соответствующий интерфейс доступа в файловой системе UNIX, и так же как обычные файлы, адресуются некоторым целым числом дескриптором. Однако в отличие от обычных файлов, представляют собой виртуальный объект, который существует, пока на него ссылается хотя бы один из процессов.

Во-вторых, коммуникационные характеристики взаимодействия должны быть доступны процессам в некоторой унифицированной форме. Другими словами, приложение должно иметь возможность затребовать определенный тип связи, например, основанный на виртуальном канале (virtual circuit) или датаграммах (datagram), причем эти типы должны быть согласованы для всех коммуникационных доменов. Все сокеты условно можно разделить на несколько типов, в зависимости от предоставляемых коммуникационных характеристик. Полный набор этих характеристик включает:

  • Упорядоченную доставку данных

  • Отсутствие дублирования данных

  • Надежную доставку данных

  • Сохранение границ сообщений

  • Поддержку передачи экстренных сообщений

  • Предварительно установление соединения

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

В BSD UNIX реализованы следующие основные типы сокетов:

  • Сокет датаграм (datagram socket), через который осуществляется теоретически ненадежная, несвязная передача пакетов.

  • Сокет потока (stream socket), через который осуществляется надежная передача потока байтов без сохранения границ сообщений. Этот тип сокетов поддерживает передачу экстренных данных.

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

  • Сокет низкого уровня (raw socket), через который осуществляется непосредственный доступ к коммуникационному протоколу.

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

Структура

http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html

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

/bin Содержит исполняемые программы, которые являются частью операционной системы Unix- Linux, многие команды и утилиты, такие как cat,cp,ls,more,tar, (наиболее часто употребляемые и как правило общие)...находятся в /bin

/boot – Содержит ядро Linux и другие файлы, необходимые для менеджеров загрузки LILO, GRUB.

/dev Содержит все файлы устройств, представленные специальными файлами являющимися интерфейсом доступа к периферийным устройствам . Все такие файлы находятся в /dev

/etc Содержит большинство файлов конфигурации системы и скрипты инициализации.Среди наиболее важных файлов — скрипты инициализации системы. Эти скрипты хранятся в каталогах

/etc/rcØ.d,/etc/rc1.d,/etc/rc2.d и т. д, соответствующих уровням выполнения системы (run level), и управляются скриптами /etc/rcØ,/etc/rc1,/etc/rc2 и т. д.

/home ~Домашний каталог пользователя.

/lib Содержит файлы библиотек, в том числе загружаемых модулей драйверов, необходимых для загрузки системы.

/lost+found Каталог "потерянных" файлов. Ошибки целостности файловой системы, возникающие при неправильном останове UNIX или аппаратных сбоях, могут привести к появлению "безымянных" файлов — структура и содержимое файла являются правильными, однако для него отсутствует имя в каком-либо из каталогов. Программы проверки и восстановления файловой системы помещают такие файлы в каталог под системными числовыми именами..

/media Каталог для монтажа файловых систем съемных носителей, таких как CD-ROM дисков, дискет и Zip дисков.

/mnt Каталог''временно'' (по скольку все временно) смонтированных файловых систем.

/opt Дополнительные пакеты программного обеспечения

/proc Специальный каталог в виртуальной файловой системе. Он содержит информацию о различных аспектах системы.

/root Home directory of the root user.

/sbin Содержит административные двоичные файлы. Такие команды, как mount, shutdown, umount, reside here.

/srv Contains data for services (HTTP, FTP, etc.) offered by the system.

/sys Специальный каталог, который содержит информацию системных устройствах , как как

их видит ядро системы.

/tmp Временный каталог. Содержание этого каталога очищается каждый раз при загрузке системы. Обычно этот каталог открыт на запись для всех пользователей системы.

/usr Содержит подкаталоги для многих программ, таких как X Window System.

/usr/bin Содержит исполняемые файлы для многих команд. Не является частью основной операционной системы.

/usr/include Содержит файлы заголовков для С и С ++ языков программирования

/usr/lib Содержит библиотеки для C и C ++ языков программирования.

/usr/local Содержит локальные файлы.

/usr/sbin Содержит административные команды.

/usr/share Содержит файлы, которые являются общими, такие как файлы конфигурации по умолчанию, изображения, документацию и т.д.

/usr/src Содержит исходный код для ядра Linux.

/var Содержит различные системные файлы, такие как журнал, mail directories, print spool, и т.д., которые имеют тенденцию к изменению в численности и размере в течение времени.

/var/cache Storage, для кэширования данных приложений.

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

/var/lock Содержит файлы блокировки, которые проверяются приложениями, что бы ресурс мог быть использован только одним приложением.

/var/log Содержит файлы журнала для differenct приложений.

/var/mail Содержит электронную почту пользователей.

/var/opt Содержит переменные данные для пакетов, хранящихся в каталоге /opt.

/var/run Содержит данные, описывающие систему, так как она была загружена.

/var/spool Содержит данные, ожидающие какого-либо вида обработки.

/var/tmp Содержит временные файлы, сохраняемые между перезагрузками системы.

Структура и описание каталогов Linux


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

.. ссылка на родительский каталог. Данный элемент есть в каждом каталоге файловой структуры. (в корне - / данный элемент указывает на саму корневую систему)

/ корневой каталог ФС, сюда "завязаны" все остальные подкаталоги первого уровня

/bin/ Бинарные программы, основные программы для работы в системе: командные оболочки, файловые утилиты и.т.д.

/boot/ статичные файлы загрузчика (образ ядра, файлы GRUB, LILO)

|-- /grub/ Каталог конфигурационных файлов загрузчика GRUB

|-- /lilo/ Каталог конфигурационных файлов загрузчика LILO

| config-kern_ver файл текущей конфигурации ядра

| initrd.img-kern_ver загрузочный образ инициализации initrd

| vmlinuz-kern_ver образ ядра Linux

/dev/ каталог, содержащий файлы устройств.

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

|-- /pts/ фиктивная файловая система, представляющая собой файловую структуру, которая отражает псевдотерминалы пользователей вошедших в систему

| |-- 0 устройство псевдотерминала pts/0

| |-- 1 устройство псевдотерминала pts/1

| --- n устройство псевдотерминала pts/n

|-- null т.н. "черная дыра" или "урна для битов". Вся информация, отправляемая на данное устройства - пропадает/уничтожается.

--- zero "генератор нулей"

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

|-- /default/ содержит системные Файлы конфигураций в дистрибутивах Debian (аналог /etc/sysconfig/ в RedHat)

|-- /logrotate.d/ директория конфигурационных файлов демона автоматической обработки логов;

| |-- apache конфигурация логирования apache

| |-- squid конфигурация логирования apache

| |-- syslog конфигурация логирования системных логов

| --- ...

|-- /pam.d/ каталог содержит файлы конфигурации PAM (указывают методы аутентификации в приложениях, использующих PAM)

|-- /ppp/ директория содержит конфигурации PPP-соединений:

| |-- options содержит общую для всех PPP-соединений конфигурацию;

| |-- options.* конфигурация конкретно взятого соединения (например модемное options.ttyS1)

| |-- ip-up скрипт выполняемый при/для соединения (демоном pppd);

| --- ip-down скрипт выполняемый при/для разъединении (демоном pppd).

|-- /rc.d/ директория системы инициализации init (в стиле UNIX) (содержит сценарии инициализации)

| |-- /init.d/ содержит скрипты, для управления системными демонами (сервисами);

| --- /rcX.d/ директории уровней запуска X, содержат ссылки на скрипты в init.d;

|-- /samba/ содержит файлы конфигурации samba:

| |-- smb.conf главный конфигурационный файл SAMBA;

| |-- smbusers описывает соответствие SAMBA пользователей к системным пользователям;

| --- smbpasswd содержит хеши пользователей SAMBA, пароли устанавливаются утилитой smbpasswd.

|-- /ssh/ Каталог конфигурации демона sshd

| |-- ssh_config Конфигурационный файл ssh клиента

| --- sshd_config Конфигурационный файл ssh - сервера

|-- /sysconfig/ содержит системные Файлы конфигураций в дистрибутивах RedHat (аналог /etc/default/ в Debian)

| |-- keyboard описание текущей раскладки клавиатуры;

| |-- desktop установки графической среды (KDE,GNOME..);

| |-- network файл конфигурации сетевой подсистемы

| --- i18n конфигурация общесистемной локали (локаль отдельных пользователей может содержаться в {home}/i18n);

|-- /security/ содержит Файлы описывающие безопасность системы:

| |-- console.perms правила изменения прав доступа к устройствам, при аутентификации;

| |-- limits.conf конфигурация лимитов пользователей.

| --- network конфигурация сети;

|-- /skel/ шаблон директории пользователя (в момент создания пользователя содержимое директории пользователя копируется отсюда), своеобразный аналог каталога C:\Documents and settings\Default User\ в Windows.

|-- /xinetd.d/ директория содержит файлы конфигураций отдельных сервисов для суперсервера xinetd;

|-- /X11/ /fs/config содержит перечень каталогов со шрифтами для X;

| |-- XF86Config Файл конфигурации X (XFree86);

| --- xorg.conf Файл конфигурации X (XOrg);

|-- at.allow Список пользователей, разрешающий (allow) или запрещающий (deny) выполнение утилиты at

|-- at.deny

|-- cron.allow Список пользователей, разрешающий (allow) или запрещающий (deny) выполнение утилиты cron

|-- cron.deny

|-- anacrontab конфигурация задач выполняемых anacron;

|-- crontab конфигурация задач выполняемых cron;

|-- ethers Файл соответствия аппаратных MAC адресов сетевым IP адресам в сети, в случае несоответствия доступ для хоста будет закрыт;

|-- export конфигурация NFS-ресурсов доступных извне;

|-- filesystems список ФС, поддерживаемых ядром (отсюда берется ФС, если она не указана в /etc/fstab)

|-- fstab список ФС, монтирующихся автоматически при загрузке

|-- group база данных групп пользователей в ОС

|-- gshadow файл паролей групп пользователей

|-- hostname текущее имя машины;

|-- hosts перечень хостов и соответствующих им IP-адресов;

|-- host.allow список хостов которым вход разрешен;

|-- host.deny список хостов которым вход запрещен (для libc ver 5);

|-- host.conf указывает где и в каком порядке искать имена хостов (для libc ver 6);

|-- inittab конфигурация последовательности загрузки (для процесса init);

|-- inputrc конфигурация ресурсов ввода с клавиатуры;

|-- issue сообщение, выводимое при локальном подключении к системе

|-- issue.net сообщение, выводимое при удаленном подключении к системе

|-- ld.so.conf файл конфигурации, содержащий список каталогов, в которых ld.so ищет библиотечные файлы, кроме указанных путей, компоновщик ищет в каталогах /lib и /usr/lib

|-- ld.so.cache кэш библиотечных файлов, для более быстрого поиска библиотек (своеобразный индекс)

|-- login.defs описывает поведение login и su;

|-- logrotate.conf конфигурация демона автоматической обработки логов (ротация, упаковка, удаление);

|-- lilo.conf конфигурация boot-загрузчика LILO;

|-- man.conf конфигурация системы страниц помощи, команда man;

|-- motd сообщение, выводимое всем пользователям после ввода пароля и перед запуском интерпретатора, т.н. "сообщение дня"

|-- mtab Список текущих примонтированных ФС. Обычно, этот файл должен создаваться, как только монтируется новая файловая система.

|-- netgroup файл определяет сетевые группы, используемые для проверки прав доступа при выполнении удаленного входа.

|-- nologin наличие этого файла запрещает пользователям входить в систему с выдачей сообщения в файле;

|-- nsswitch.conf конфигурация последовательности поиска имен по различным источникам;

|-- passwd база данных пользователей Linux

|-- printcap Файл конфигурации принтеров;

|-- profile сценарий-профиль для интерпретатора BASH (выполняется после регистрации в системе и используется для всех пользователей системы);

|-- protocols файл описывает номера протоколов, названия и описания.

|-- resolv.conf конфигурация резолвера имён, содержит список DNS-серверов;

|-- rpc файл описывает службы RPC (соответствие имя сервера RPC, номер программы RPC и псевдонимы)

|-- services содержит сопоставления номеров портов/сокетов именам служб

|-- shadow файл зашифрованных паролей пользователей

|-- sysctl.conf содержит команды для автоматической инициализации sysctl-параметров ядра;

|-- syslog.conf конфигурация демона системного логера (syslogd);

|-- sudoers указание на то какие пользователи и какие программы могут быть запущены с привилегиями root используя sudo.

--- xinetd.conf конфигурация суперсервера Internet (централизованное управление сокетами/портами);

/home/{имя} каталог, содержащий подкаталоги пользователей (настройки интерфейса, личные файлы)

|-- .bashrc профиль конкретного пользователя для BASH (запускается при запуске bash или запуске копии bash );

|-- .cshrc профиль конкретного пользователя для TCSH;

|-- .bash_profile профиль конкретного пользователя для BASH (запускается при каждом входе в систему).

|-- .inputrc конфигурация ресурсы ввода с клавиатуры конкретного пользователя.

|-- .Xauthority файл авторизации для запуска X-приложений удаленно, файлы на удаленных машинах должны соответствовать;

|-- .xinitrc сценарий загрузки X сервера конкретного пользователя;

--- .plan

.project

.forward данные файлы используются утилитой finger для вывода информации о пользователе

/lib/ Системные библиотеки, необходимые для программ и модули ядра. (В Windows библиотеки представляют собой dll модули)

/lost+found В lost+found скидываются файлы, на которых не было ссылок ни в одной директории, хотя их inod не были помечены как свободные.

/media/ Каталог для монтирования съемных носителей (CD, Flash)

|-- /cdrom/

/mnt/ В каталоге содержаться временные точки монтирования для устройств

/opt/ Дополнительные пакеты программ. Если программа установленная сюда больше не нужна, то достаточно удалить ее каталог без процедуры денсталляции. Сюда могут устанавливается программы не являющиеся частью дистрибутива. (например /opt/openoffice.org).

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

|-- /net/

| -- arp текущая arp-таблица

|-- /sys/kernel/

| |-- cap-bound управление дополнительными пра, как сделано в последней строке для дискеты.tr сценарий-профиль для интерпретатора BASH (выполняетсtd/tdtda name="proc"я после регистрации в системе и используется для всех пользователей системы);вами (root) (0 – root права аннулируются);

| |-- hostname текущее имя Компьютера

| |-- domainname Имя домена компьютера

| |-- osrelease версия ядра системы;

| |-- ostype тип ОС (Linux, *BSD, ...);

| --- version дата сборки ядра.

|-- cpuinfo Текущая информация о процессоре

|-- cmdline список параметров, переданных ядру при загрузке

|-- devices системные устройства

|-- dma Задействованные в данный момент DMA каналы

|-- interrupts Счетчики количества прерываний IRQ в архитектуре i386.

|-- ioports порты ввода/вывода

|-- filesystems поддерживаемые ФС

|-- loadvg информация о загруженности системы

|-- kcore содержимое физической памяти в текущий момент

|-- kmsg сообщения, выдаваемые ядром (копия syslog)

|-- mdstat отображение статистики программных RAID массивов

|-- meminfo информация о памяти

|-- modules загруженные модули ядра

|-- mounts смонтированные ФС

|-- partitions информация о разделах дисков

|-- pci Полный список всех PCI-устройств, найденных во время инициализации ядра, а также их конфигурация.

|-- swaps информация о всех своп-разделах, подключенных к системе

|-- uptime время работоспособности

|-- version версия ядра

|-- /цифровые/ каталоги, содержащие в названии наборы цифр, соответствуют GID -номеру процесса и содержат в себе информацию о работающем процессе, GIDу которого соответствует.

| |-- /fd/* содержит указатели на все, открытые процессом файлы

| |-- cmdline полную командную строку запуска процесса до тех пор, пока процесс не будет "выгружен" или не станет "зомби"

| |-- cwd символьная ссылка на текущий рабочий каталог процесса

| |-- environ содержит окружение процесса

| |-- exe содержит мягкую ссылку на бинарник процесса

| |-- limits содержит информацию о лимитах процесса (например, лимит открытых файлов, приоритет процесса и т.п.)

| |-- root мягкая ссылка на каталог пользователя root для процесса

| --- status Информация о процессе, представленная в довольно удобном для просмотра виде. Она содержит, в частности, следующие строки:

Имя исполняемого файла процесса в скобках;

Статус процесса;

Идентификатор процесса

Идентификатор родительского процесса

Идентификатор группы процессов процесса

и др.

/root/ домашний каталог пользователя root, данный каталог должен быть в корневой ФС, чтобы администратор мог войти в нее.

/sbin/ В данном каталоге содержаться основные системные бинарники, команды для системного администрирования, а также программы, выполняемые в ходе загрузки ОС. Здесь находятся элементы, запускаемые в фоновом режиме, в каком то смысле данный каталог является аналогом папки c:\Windows\system\ и c:\Windows\system32\.

--- shutdown утилита остановки системы

/srv/ данные предоставляемых сервисов от ОС

/sys/ это директория, к которой примонтирована виртуальная файловая система sysfs, которая добавляет в пространство пользователя информацию ядра Linux о присутствующих в системе устройствах и драйверах. (В версии ядра ниже 2.6 не использовалась)

|-- /block/ каталог содержит подкаталоги всех блочных устройств, присутствующих в данный момент в системе.

|-- /bus/ В этом каталоге находится список шин, определенных в ядре Linux (eisa, pci и т.д.).

--- /class/ Каталог содержит список группированных устройств по классам (printer, scsi-devices и т.д.).

/tmp/ Временные файлы. Данный каталог аналогичен c:\Windows\temp. Обычно Linux очищает этот каталог во время загрузки.

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

|-- /bin/ Директория дополнительных программ для всех учетных записей.

|-- /include/ Заголовочные файлы С++.

|-- /lib/ Системные библиотеки для программ, расположенных в каталоге/usr

| /local/ По стандарту /usr должен быть общим для нескольких компьютеров и смонтирован по сети, а /usr/local должен содержать установленные пакеты программы только на локальной машине (к примеру, /usr - бюджет семьи, а /usr/local - личный кошелек каждого). Но чаще всего директория /usr/local используется для установки программ, которые не предназначены для конкретного дистрибутива (к примеру для пакетного дистрибутива Ubuntu в /usr находятся "родные" установленные пакеты, а /usr/local находятся собранные пакеты из исходников).

| |-- /bin/

| |-- /lib/

| |-- ...

|-- /sbin/ Дополнительные системные программы.

|-- /share/ Общие данные установленных программ.

| |-- /icons/ В каталоге находятся все иконки системы.

| --- /doc/ Директория, в которой обычно находится справочная документация по установленным программам.

|-- /src/ Каталог содержит исходные коды (например, здесь располагаются исходные коды ядра).

|-- /X11R6/bin/ Х ссылка на текущий X сервер;

|-- magic.mime файлы, хранящие "магическое число". Данное число описывает тип файла для утилиты file.

--- magic

/var Здесь находятся часто меняющиеся данные (журналы операционной системы, системные log-файлы, cache-файлы и т. д.)

|-- /cache В этом месте хранятся все кэшированные данные различных программ.

|-- /lib Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.).

| --- /rpm/ база данных пакетного менеджера RPM

|-- /lock Здесь лежат lock-файлы, указывающие на занятость некоторого ресурса.

|-- /log/ в данном каталоге лежат все лог файлы системы

| |-- wtmp (бинарный формат) содержит удачные попытки входа и выхода в систему

| |-- utmp (бинарный формат) содержит текущих вошедших пользователей в систему

| |-- lastlog (бинарный формат) содержит, когда каждый пользователь последний раз входил

| -- btmp (бинарный формат) содержит НЕ удачные попытки входа/выхода в систему

|-- /spool Задачи, ожидающие обработки (например, очереди печати, непрочитанные или не отправленные письма, задачи cron и т. д.).

--- /www В этом месте размещаются Web-страницы для сервера Apache.