Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.




Стандарт на структуру каталогов файловой системы. (Filesystem Hierarchy Standard). 1 часть

Автор : П.Рассел (Paul \'Rusty\' Russell) и Д.Квинлан (Daniel Quinlan)
Перевод : В.А.Костромин

1 Введение

1.1 Назначение

Этот стандарт необходим для того, чтобы:

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

Мы достигаем этих целей тем, что

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

Настоящий стандарт используется для того, чтобы

  • независимые поставщики программного обеспечения могли создавать приложения, совместимые со стандартом FHS, и работать с FHS-совместимыми дистрибутивами,
  • создатели операционных систем разрабатывали системы, совместимые с FHS, и
  • пользователи понимали и поддерживали FHS-совместимость систем.

1.2 Обозначения

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

Компоненты имен файлов, которые могут изменяться, представляются описанием соответствующего компонента, заключенным угловые скобки "<" и ">", <вот так>. Адреса электронной почты тоже заключаются в "<" и ">", но они изображаются обычным шрифтом.

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

Произвольная подстрока в имени каталога или файла обозначается символом "*".

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

В настоящем стандарте предполагается, что операционная система, использующая FHS-совместимую файловую систему, поддерживает обычные для большинства UNIX-систем средства обеспечения безопасности (the same basic security features found in most UNIX filesystems).

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

Разделяемые данные - это те, к которым может быть разрешен доступ с различных хостов; неразделяемые - те, которые являются специфическими для данного хоста. Например, домашние каталоги пользователей содержат разделяемые данные, а файлы блокирования устройств (device lock files) являются неразделяемыми.

Неизменяемые (или статические) данные - это исполняемые файлы, библиотеки, документация, и все, что не должно изменяться без вмешательства системного администратора; изменяемые данные - это все, что может изменяться без участия системного администратора.

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

Начало пояснений

Различать разделяемые и неразделяемые файлы необходимо по следующим причинам:

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

Выделение "разделяемых" данных может использоваться, например, для:

  • монтирования (в режиме "только для чтения") раздела /usr (или части /usr) по сети (используя NFS).
  • монтирования раздела /usr (или части раздела /usr) с носителя, допускающего только чтение. CD-ROM является одним из возможных примеров того, как одна копия файловой системы может использоваться другими FHS-совместимыми файловыми системами через "сеть" некоего рода.

Различие между "статическими" и "изменяемыми" данными оказывает влияние на структуру файловой системы по двум основным направлениям:

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

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

Разделяемые Неразделяемые
Статические /usr /etc
/opt /boot
Изменяемые /var/mail /var/run
/var/spool/news /var/lock

Таблица 2.1

3 Корневая файловая система

3.1 Назначение

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

  • Для загрузки системы необходимо, чтобы в корневом разделе диска было все необходимое для монтирования других файловых систем. Здесь же должны быть необходимые утилиты, файлы конфигурации, информация, необходимая загрузчику, и другие данные, используемые на этапе старта системы. Содержимое каталогов /usr, /opt и /var формируется таким образом, чтобы они могли размещаться в других разделах или даже в файловых системах других типов.
  • Для того, чтобы обеспечить возможность восстановления системы после сбоев, в корневой файловой системе должны присутствовать все утилиты, необходимые опытному администратору для диагностирования проблем и реконструкции системы после любой аварийной ситуации.
  • Для восстановления системы с резервной копии в корневой файловой системе должны иметься все утилиты, необходимые для работы с резервными носителями (дискетами, магнитными лентами и так далее).
НАЧАЛО ПОЯСНЕНИЙ

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

  • Она может располагаться на носителях очень малого объема.
  • Корневая файловая система содержит много конфигурационных файлов с данными, относящимися только к данной конкретной системе. Примерами таких данных может служить ядро, которое является специфичным для данной системы, индивидуальное имя хоста и так далее. Отсюда следует, что корневая файловая система не должна быть разделяемой, то есть доступной с других компьютеров сети. Поддержание малого размера корневой файловой системы на серверах сети минимизирует количество потерь дискового пространства, возникающих из-за необходимости хранить неразделяемые по сети файлы. Кроме того, появляется возможность использовать рабочие станции с малыми по объему локальными жесткими дисками.
  • Даже если вы имеете возможность разместить корневую файловую систему в большом разделе диска, и можете заполнить ее любыми данными по своему усмотрению, стоит помнить и о том, что у некоторых людей корневой раздел имеет меньший размер. Если у вас в ней установлено много файлов, вы можете натолкнуться на несовместимость с другими системами, в которых корневая файловая система размещена в разделе меньшего объема. Если вы разработчик, тогда вы можете превратить ваше допущение в проблему для большого числа пользователей.
  • Сбои диска, вследствие которых разрушается корневая файловая система, представляют бОльшую проблему, чем сбой в любом другом разделе. Малая корневая файловая система менее подвержена разрушению в результате системных сбоев.

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

Существует несколько причин, по которым создание нового подкаталога в корневой файловой системе запрещено:

  • Создание каталога требует выделения пространства в корневом разделе диска, а системный администратор может иметь желание поддерживать этот раздел малым и по возможности простым, либо из соображений безопасности, либо для повышения производительности.
  • Это приводит к тому, что разрушает порядок, который системный администратор заводит для того, чтобы иметь возможность устанавливать единую структуру каталогов на монтируемых томах. (It evades whatever discipline the system administrator may have set up for distributing standard file hierarchies across mountable volumes.)

3.2 Требования

Следующие каталоги или символические ссылки на каталоги должны иметься в /.

"/"
bin
boot
dev
etc
lib
mnt
opt
sbin
tmp
usr
var
"Корневой каталог"
Основные исполняемые команды
Статические файлы для загрузчика
Специальные файлы устройств
Специфичные для данного хоста конфигурационный данные
Основные разделяемые библиотеки и модули ядра
Точка монтирования для временно подключаемых файловых систем
Дополнительные пакеты программного обеспечения
Основные системные утилиты
Временные файлы
Каталоговая структура второго уровня
Переменные данные

3.3 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны иметься в /, если соответствующие подсистемы установлены:

"/"
home
lib
root
"Корневой каталог"
Домашние каталоги пользователей (optional)
Основные разделяемые библиотеки для альтернативных форматов (optional)
Домашний каталог пользователя root (optional)

3.4 /bin : Основные исполняемые файлы (доступные всем пользователям)

3.4.1 Назначение

Каталог /bin содержит команды, которые могут использоваться как системным администратором, так и рядовыми пользователями, причем только те команды, которые необходимы, когда никакая другая файловая система еще не смонтирована (например, в одно-пользовательском режиме). В этом каталоге могут также содержаться команды, которые используются не напрямую пользователем, а через скрипты.[примечание 1]

3.4.2 Требования

В каталоге /bin не должно быть подкаталогов.

В /bin должны иметься следующие команды или символические ссылки на соответствующие команды:

cat утилита для конкатенации файлов с отображением результата на стандартный вывод
chgrp утилита для изменения атрибута принадлежности файла группе
chmod утилита для изменения прав доступа к файлу
chown утилита для изменения владельцев файла
cp утилита для копирования файлов и каталогов
date утилита для вывода или изменения системной даты и времени
dd утилита для для преобразования и копирования файлов
df утилита, информирующая об использовании дискового пространства в файловых системах
dmesg утилита для вывода сообщений, записанных в буфере ядра
echo утилита для отображения строки текста
false утилита, не выполняющая никаких действий и возвращающая статус завершения "не успешно"
hostname утилита, показывающая или устанавливающая системное имя хоста
kill утилита для посылки сигналов процессам
ln утилита для задания ссылок на файлы
login утилита, открывающая сессию работы пользователя в системе
ls утилита для вывода списка файлов в каталоге
mkdir утилита для создания каталогов
mknod утилита для создания специальных файлов устройств блочного или символьного типов
more утилита для постраничного вывода текста
mount утилита для монтирования файловых систем
mv утилита для перемещения/переименования файлов
ps утилита, возвращающая статус выполняющихся процессов
pwd утилита, возвращающая имя текущего рабочего каталога
rm утилита удаления файлов или каталогов
rmdir утилита удаления пустых каталогов
sed потоковый редактор `sed'
sh командная оболочка Борна
stty утилита для изменения установок или вывода информации об установках терминальной линии
su утилита смены идентификатора пользователя
sync утилита для сброса на диск содержимого буферов кеш-памяти
true утилита, не выполняющая никаких действий и возвращающая статус завершения "успешно"
umount утилита для размонтирования файловых систем
uname утилита для получения информации о системе

Таблица 3.4.2.1

Если /bin/sh не является настоящей оболочкой Борна, это должна быть жесткая или символическая ссылка на реальную программу оболочки.

Обе команды [ и test должны быть расположены вместе, либо в каталоге /bin, либо в /usr/bin.

НАЧАЛО ПОЯСНЕНИЙ

Команда bash работает по-разному в зависимости от того, была ли она вызвана как sh или как bash. Кроме того, использование символической ссылки позволяет пользователям легко увидеть, что /bin/sh не является настоящей оболочкой Борна.

Требование того, чтобы команды [ и test включались в этот каталог как отдельные исполняемые файлы (даже если они реализованы как встроенные команды оболочки) присутствует также в стандарте POSIX.2.

КОНЕЦ ПОЯСНЕНИЙ

3.4.3 Рекомендации

Следующие программы или символические ссылки на программы должны находиться в каталоге /bin если только соответствующие пакеты установлены в системе:

csh оболочка C-shell (optional)
ed редактор `ed' (optional)
tar утилита архивации tar (optional)
cpio утилита архивации cpio (optional)
gzip утилита сжатия (компрессии), разработанная в рамках проекта GNU (optional)
gunzip утилита декомпрессии, разработанная в рамках проекта GNU (optional)
zcat утилита декомпрессии, разработанная в рамках проекта GNU (optional)
netstat утилита сетевой статистики (optional)
ping утилита тестирования сети с помощью протокола ICMP (optional)

Таблица 3.4.3.2

Если файлы gunzip и zcat существуют, они должны быть символическими или жесткими ссылками на gzip. /bin/csh может быть символической ссылкой либо на /bin/tcsh, либо на /usr/bin/tcsh.

НАЧАЛО ПОЯСНЕНИЙ

Команды tar, gzip и cpio необходимы для восстановления системы (в предположении, что каталог / доступен).

Если же необходимость восстановления системы из корневого раздела отсутствует (например, в случае загрузки бездисковых рабочих станций, когда каталог /usr монтируется посредством протокола NFS) эти команды могут отсутствовать и в каталоге /bin. Если восстановление системы планируется проводить по сети, то файлы программ ftp или tftp (вместе со всем, что необходимо для установления соединения по протоколу ftp) должны быть размещаться в корневом разделе диска.

3.5 /boot : Статические файлы для системного загрузчика

3.5.1 Назначение

Этот каталог содержит все, что необходимо в процессе загрузки, исключая конфигурационные файлы и the map installer. Таким образом, в /boot хранятся данные, которые используются до того, как ядро начинает исполнять программы пользователя. Здесь же находятся резервные сохраненные копии главной загрузочной записи (master boot sectors), sector map files, и другие данные, которые не подлежат прямому редактированию. [примечание 2]

3.5.2 Specific Options

Ядро операционной системы должно быть расположено либо в корневом каталоге /, либо в /boot.[примечание 3]

[2] Программы, необходимые загрузчику для организации загрузки файлов, должны быть расположены в /sbin. Конфигурационные файлы загрузчика должны размещаться в /etc.

[3] На некоторых i386 компьютерах в силу аппаратных ограничений может оказаться необходимым разместить каталог /boot на отдельном разделе диска, расположенном целиком в пределах первых 1024 цилиндров загрузочного диска.

Certain MIPS systems require a /boot partition that is a mounted MS-DOS filesystem or whatever other filesystem type is accessible for the firmware. This may result in restrictions with respect to usable filenames within /boot (only for affected systems).

3.6 /dev : Специальные файлы устройств

3.6.1 Назначение

Каталог /dev - это место расположения специальных файлов устройств.

3.6.2 Рекомендации

Если может потребоваться создавать файлы устройств в /dev вручную, каталог /dev должен содержать команду MAKEDEV, которая может создать файл устройства в случае необходимости. Он может также содержать MAKEDEV.local для любых локальных устройств.

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

3.7 /etc : Специфичная для данного хоста конфигурационная информация

3.7.1 Назначение

Каталог /etc содержит конфигурационные файлы и каталоги, специфичные для данной конкретной системы.[прим. 4]

3.7.2 Требования

В каталоге /etc не должно быть бинарных файлов.

Следующие каталоги или символические ссылки на каталоги должны быть расположены в /etc:

"/etc"
opt
"Конфигурационная информация для данного хоста"
Конфигурация для /opt

Дерево 3.7.2.1

3.7.3 Рекомендации

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

"/etc"
X11
sgml
"Конфигурационная информация для данного хоста"
Конфигурация системы X Window (optional)
Конфигурация для SGML и XML (optional)

Дерево 3.7.3.2

Следующие файлы либо символические ссылки на них должны быть расположены в /etc, если соответствующие пакеты установлены в системе: [примечание 5]

csh.login Общесистемный инициализационный файл для оболочки C-shell (optional)
exports Список контроля доступа для сетевой файловой системы NFS (optional)
fstab Постоянная информация для монтирования файловых систем (optional)
ftpusers Список контроля доступа для демона FTP (optional)
gateways Файл, содержащий список шлюзов для демона routed (optional)
gettydefs Установки терминала, используемые демоном getty (optional)
group Файл, определяющий списки групп пользователей в системе (optional)
host.conf Файл конфигурации для системы разрешения имен (optional)
hosts Постоянная информация об именах хостов (optional)
hosts.allow Список хостов, с которых разрешен доступ в систему (optional)
hosts.deny Список хостов, с которых запрещен доступ в систему (optional)
hosts.equiv Список доверенных хостов для rlogin, rsh, rcp (optional)
hosts.lpd Список доверенных (разрешенных) имен хостов для демона печати lpd (optional)
inetd.conf Конфигурационный файл для демона inetd (optional)
inittab Конфигурационный файл для init (optional)
issue Сообщение, выдаваемое системой до регистрации пользователя (optional)
ld.so.conf Список дополнительных каталогов для поиска разделяемых библиотек (optional)
motd Сообщение, выдаваемое системой после регистрации пользователя (optional)
mtab Динамически изменяющаяся информация о смонтированных файловых системах (optional)
mtools.conf Конфигурационный файл для mtools (optional)
networks Статическая информация о сетевых именах (optional)
passwd Файл паролей (optional)
printcap База данных с настройками принтеров для lpd (optional)
profile Общесистемный файл инициализации для оболочки, запускаемой при входе пользователя в систему (optional)
protocols Перечень IP-протоколов (optional)
resolv.conf Конфигурационный файл для системы разрешения имен (optional)
rpc Перечень протоколов удаленного вызова процедур (RPC) (optional)
securetty Файл со списком устройств, с которых может заходить пользователь root (optional)
services Имена портов для сетевых сервисов (optional)
shells Список путей доступа для имеющихся в системе оболочек (optional)
syslog.conf Конфигурационный файл для демона syslogd (optional)

Таблица 3.7.3.1

Файл mtab не соответствует неизменяемой природе файлов, размещенных в /etc: он помещен в данный каталог в виде исключения по историческим причинам.[примечание 6]

3.7.4 /etc/opt : Конфигурационные файлы для /opt

3.7.4.1 Назначение

Специфичные для данного хоста конфигурационные файлы для дополнительных пакетов прикладного программного обеспечения должны устанавливаться в каталоги /etc/opt/, где - имя поддерева в /opt, в котором хранятся статические данные для этого пакета.

3.7.4.2 Требования

Никаких ограничений на внутреннюю структуру каталога /etc/opt/ не накладывается.

Если конфигурационный файл должен располагаться в ином месте для того, чтобы пакет или система функционировали должным образом, этот файл может помещаться в каталог, отличный от /etc/opt/.

НАЧАЛО ПОЯСНЕНИЙ

Смотри пояснения к /opt.

КОНЕЦ ПОЯСНЕНИЙ


3.7.5 /etc/X11 : Конфигурация для системы X Window (optional)

3.7.5.1 Назначение

/etc/X11 - это место размещения всех конфигурационных данных для X11, специфичных для данного хоста. Эта директория необходима для того, чтобы обеспечить локальное управление системой X Window в том случае, когда файловая система /usr монтируется только на чтение.

3.7.5.2 Рекомендация

Следующие файлы или символические ссылки должны находиться в /etc/X11, если только соответствующая система установлена:

Xconfig Конфигурационный файл для ранних версий XFree86 (optional)
XF86Config Конфигурационный файл для XFree86 версий 3 и 4 (optional)
Xmodmap Глобальный файл модификации клавиатуры в X11 (optional)

Таблица 3.7.5.2.2

Среди подкаталогов в /etc/X11 могут находиться отдельные подкаталоги с конфигурационной информацией для xdm и других программ (например, для оконных менеджеров), которые в такой информации нуждаются. [примечание 7]

3.7.6 /etc/sgml : Конфигурационные файлы для SGML и XML (optional)

3.7.6.1 Назначение

Здесь устанавливаются исходные конфигурационные файлы, определяющие параметры верхнего уровня SGML- или XML-систем. Файлы с именами *.conf - это исходные (generic) конфигурационные файлы. Файлы с именами *.cat - это DTD-специфичные централизованные (centralized) каталоги, содержащие ссылки ко всем другим каталогам, необходимым для использования какого-то конкретного DTD. Файл супер-каталога catalog содержит ссылки на все централизованные каталоги.

[4] Размещение командных скриптов запуска может осуществляться в соответствии с моделями, принятыми в System V, BSD, или какими-то другими моделями. Более точные спецификации в этой области могут быть установлены будущими версиями настоящего стандарта.

[5] Системы, в которых используются теневые пароли, создают дополнительные конфигурационные каталоги и файлы в /etc (/etc/shadow и другие), а также размещают программы в каталоге /usr/sbin (useradd, usermod и другие).

[6] В некоторых Linux-системах это может быть символическая ссылка на /proc/mounts; в этом случае исключение не требуется.

[7] /etc/X11/xdm содержит конфигурационные файлы для xdm. В большинстве случаев это файлы, которые раньше размещались в /usr/lib/X11/xdm. Некоторые локальные переменные данные для xdm хранятся в /var/lib/xdm. Мы рекомендуем, чтобы оконные менеджеры с одним единственным конфигурационным файлом, который обычно по умолчанию имеет имя .*wmrc, переименовали его в system.*wmrc (если только нет общепринятого альтернативного названия) и не использовать подкаталог. Любой подкаталог для оконного менеджера должен называться так же, как называется исполняемый файл оконного менеджера.

3.8 /home : Домашние каталоги пользователей (optional)

3.8.1 Назначение

Наличие каталога /home - это достаточно стандартное решение, очевидно только, что этот каталог является специфичным для каждого отдельного компьютера.[примечание 8]

[8] Разные люди предпочитают размещать пользовательские каталоги в разных местах. Данная секция описывает только предлагаемые варианты размещения домашних каталогов пользователей; тем не менее мы рекомендуем, чтобы все FHS-совместимые дистрибутивы использовали именно каталог /home как место размещения домашних каталогов.

В маленьких системах каждый пользовательский каталог является одним из многих подкаталогов каталога /home, таких как /home/smith, /home/torvalds, /home/operator и так далее. В больших системах (особенно когда каталоги /home являются разделяемыми между многими хостами посредством NFS) полезно объединить домашние каталоги в группы, введя подкаталоги групп такие как /home/staff, /home/guests, /home/students и так далее. Но как бы то ни было структура домашних каталогов различается от хоста к хосту. Следовательно, никакая программа не должна полагаться на какие-то предположения о структуре домашних каталогов.[примечание 9]

[9] Если вы хотите разыскать домашний каталог пользователя, вы должны использовать библиотечную функцию getpwent(3), а не полагаться на запись в /etc/passwd, потому что информация о пользователях может храниться на удаленных хостах, используя такие системы, как NIS.

3.9 /lib : Основные разделяемые библиотеки и модули ядра

3.9.1 Назначение

Каталог /lib содержит те разделяемые библиотеки, которые необходимы для загрузки системы и запуска команд, расположенных в корневой файловой системе, то есть в каталогах /bin и /sbin. [примечание 10]

3.9.2 Требования

По крайней мере один из файлов, соответствующих каждому из следующих шаблонов, должен найтись в данном каталоге (это могут быть либо реальные файлы, либо символические ссылки):

libc.so.* Динамически подсоединяемые библиотеки C (optional)
ld* Компоновщик/загрузчик времени выполнения (The execution time linker/loader) (optional)

Таблица 3.9.2.1

Если препроцессор языка Си установлен, /lib/cpp должен быть ссылкой на него, по историческим причинам.[примечание 11]

3.9.3 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны находиться в /lib, если соответствующая подсистема установлена:

"/lib"
modules
"Основные разделяемые библиотеки и модули ядра"
Загружаемые модули ядра (optional)

Дерево 3.9.3.1

[10] Разделяемые библиотеки, которые необходимы только исполняемым файлам, расположенным в /usr (таким как бинарные файлы системы X Window) НЕ должны располагаться в /lib. Только те разделяемые библиотеки, которые необходимы для запуска программ из /bin и /sbin могут располагаться здесь. В частности, библиотека libm.so.* может быть расположена в /usr/lib, если она не требуется никаким программам из /bin или /sbin.

[11] Обычное местоположение этого бинарного файла - /usr/lib/gcc-lib///cpp. /lib/cpp может быть либо прямой ссылкой на этот файл, либо ссылкой на любой другой указатель этого файла, существующий в файловой системе. (Например, часто используется /usr/bin/cpp).

3.10 /lib : Основные разделяемые библиотеки альтернативных форматов (optional)

3.10.1 Назначение

Более одного варианта каталога /lib может существовать в системах, поддерживающих более одного формата исполняемых файлов, когда для каждого формата требуется свой отдельный вариант разделяемых библиотек. [примечание 12]

3.10.2 Требования

Если одна или несколько таких директорий существует, требования к их содержимому те же самые, что и к обычному каталогу /lib, за исключением того, что /lib/cpp не требуется.[примечание 13]

[12] Обычно это используется для поддержки 64-битного или 32-битного формата в системах, поддерживающих несколько форматов исполняемых файлов, и требующих библиотек с одним и тем же названием. В этом случае /lib32 и /lib64 могут быть библиотечными каталогами, а /lib - символической ссылкой на один из них.

[13] Наличие /lib/cpp все же допускается: тем самым допускаются случаи, когда /lib и /lib есть фактически одно и то же (один из них является символической ссылкой на другой).

3.11 /mnt : Точка монтирования для временно монтируемых файловых систем

3.11.1 Назначение

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

Этот каталог не должен использоваться программами инсталляции: для создания и хранения временных файлов на этапе инсталляции ПО должны использоваться временные каталоги, не используемые системой.

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

3.12.1 Назначение

Каталог /opt зарезервирован для установки дополнительных пакетов программного обеспечения.

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

3.12.2 Требования

"/opt"

"Дополнительные пакеты программного обеспечения"
Статические объекты пакета

Дерево 3.12.2.1

Каталоги /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib и /opt/man зарезервированы для использования локальным системным администратором. Пакеты могут предоставлять "front-end" файлы, которые локальный системный администратор может разместить в этих зарезервированных каталогах (либо путем копирования, либо установив ссылку), но любой пакет должен нормально функционировать и в случае отсутствия этих зарезервированных директорий.

Программы, вызываемые на исполнение пользователем, должны располагаться в каталоге /opt//bin. Если пакет ПО содержит в своем составе страницы обычного в UNIX интерактивного руководства man, они должны устанавливаться в каталог /opt//man, который должен иметь такую же структуру, как и каталог /usr/share/man.

Файлы пакета, которые являются переменными (изменяемыми при выполнении стандартных операций), должны устанавливаться в /var/opt. Дополнительную информацию ищите в разделе о каталоге /var/opt.

Специфичные для хоста конфигурационные данные должны устанавливаться в /etc/opt. Дополнительную информацию ищите в разделе о каталоге /etc.

Никакие файлы пакета не должны размещаться вне каталогов /opt, /var/opt и /etc/opt, кроме тех файлов, которые должны оказаться в других местах по той причине, что иначе пакет не сможет функционировать нормально. Например, файлы блокирования устройств должны располагаться в /var/lock, а файлы устройств должны располагаться в /dev.

Дистрибутивы могут устанавливать программное обеспечение в каталог /opt, но не должны модифицировать или удалять ПО, установленное местным системным администратором, без разрешения этого самого администратора.

НАЧАЛО ПОЯСНЕНИЯ

Использование каталога /opt для дополнительного ПО является широко распространенной практикой в сообществе UNIX. The System V Application Binary Interface [AT&T 1990], основанный на System V Interface Definition (Third Edition), предлагает придерживаться для /opt структуры очень похожей на ту, которая определена здесь.

Стандарт Intel Binary Compatibility Standard v. 2 (iBCS2) тоже предполагает подобную структуру для /opt.

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

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

3.13 /root : Домашний каталог пользователя root (optional)

3.13.1 Назначение

Домашний каталог пользователя root может быть задан разработчиком или определен при инсталляции системы, но рекомендуемое место его расположения по умолчанию - каталог /root.[примечание 14]

[14] Если домашний каталог суперпользователя расположен не в корневом разделе диска, необходимо убедиться, что если он не будет найден, то по умолчанию таковым будет назначен каталог /. (Примечание переводчика. Я не совсем уверен, что вышеприведенное предложение является правильным переводом следующего текста: "If the home directory of the root account is not stored on the root partition it will be necessary to make certain it will default to / if it can not be located.")

Мы не рекомендуем использовать бюджет пользователя root для выполнения задач, которые могут быть выполнены непривилегированным пользователем. Бюджет суперпользователя должен использоваться исключительно для системного администрирования. По этой причине мы не рекомендуем размещать подкаталоги для почты и других приложений в домашнем каталоге пользователя root. Почта для таких администраторских ролей как root, postmaster и webmaster должна пересылаться соответствующему пользователю.

3.14 /sbin : Системные утилиты

3.14.1 Назначение

Утилиты для выполнения задач системного администрирования (и другие команды, используемые только пользователем root) размещаются в /sbin, /usr/sbin и /usr/local/sbin. Каталог /sbin содержит исполняемые файлы, необходимые для загрузки системы и ее восстановления в различных ситуациях (restoring, recovering, and/or repairing the system) и не попавшие в каталог /bin.[примечание 15]

3.14.2 Требования

Следующие команды или символические ссылки обязательно должны присутствовать в /sbin.

shutdown Команда остановки системы.

Таблица 3.14.2.1

3.14.3 Рекомендации

Следующие команды или символические ссылки должны быть размещены в /sbin, если только соответствующие пакеты установлены в системе:

fastboot Команда перезагрузки системы без проверки дисков (optional)
fasthalt Команда остановки системы без проверки дисков (optional)
fdisk Программа переразбиения диска (optional)
fsck Утилита для проверки и восстановления файловых систем (optional)
fsck.* Утилиты для проверки и восстановления отдельных типов файловых систем (optional)
getty Программа getty (optional)
halt Команда остановки системы (optional)
ifconfig Утилита конфигурирования сетевых интерфейсов (optional)
init Первоначальный процесс (optional)
mkfs Команда создания файловой системы (optional)
mkfs.* Команда создания файловой системы конкретного типа (optional)
mkswap Команда создания файла или раздела подкачки (swap-раздела) (optional)
reboot Команда перезагрузки системы (optional)
route Утилита определения таблицы статической IP-маршрутизации (optional)
swapon Утилита подключения механизма свопинга (optional)
swapoff Утилита отключения свопинга (optional)
update Демон периодической очистки системных буферов (optional)

Таблица 3.14.3.2

[15] Когда-то исполняемые файлы, размещаемые теперь в /sbin, помещались в /etc. Программы, которые выполняются после того, когда смонтирован каталог /usr (если монтирование прошло без проблем) обычно размещаются в /usr/sbin. Локально устанавливаемые программы для системного администрирования должны быть размещены в /usr/local/sbin. [примечание 16]

[16] Принять решение о том, какие программы разместить в каталогах "sbin", довольно просто: если обычный пользователь (не системный администратор) когда-либо запускает программу, она должна размещаться в одном из каталогов "bin". Обычные пользователи не должны указывать каталоги sbin в списке путей, просматриваемых по умолчанию (в своей переменной PATH).

Такие, к примеру, файлы, как chfn, которые пользователи запускают очень редко и только в особых случаях, должны, тем не менее, размещаться в /usr/bin. Команда ping, хотя она абсолютно необходима суперпользователю для решения задач сетевой диагностики и восстановления сети, часто используется и рядовыми пользователями, и по этой причине должна размещаться в /bin.

Мы рекомендуем предоставить всем пользователям право на чтение и выполнение для всех файлов, расположенных в /sbin, кроме, может быть тех программ, для которых установлены биты setuid и setgid. Разделение каталогов /bin и /sbin делается не из соображений безопасности и не для того, чтобы лишить пользователей возможности видеть системные утилиты. Целью такого деления является установление явного различия между исполняемыми файлами, которые используются всеми, и теми утилитами, которые в основном используются для решения административных задач. С точки зрения безопасности нет никаких преимуществ в том, чтобы сделать /sbin недоступным для пользователей.

3.15 /tmp : Временные файлы

3.15.1 Назначение

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

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

НАЧАЛО ПОЯСНЕНИЙ

Стандарт IEEE P1003.2 (POSIX, part 2) выдвигает требования, аналогичные сформулированным выше.

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

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

КОНЕЦ ПОЯСНЕНИЙ

Обсудить данную тему на нашем форуме "Все о Linux"