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

Автор работы: Пользователь скрыл имя, 04 Января 2012 в 20:10, статья

Краткое описание

В статье рассказывается о разработанном в рамках проекта Open Source стандарте на структуру каталоговUNIX-подобных операционных систем (подразумеваются Linux и BSD-системы).

Содержимое работы - 1 файл

Иерархия каталогов и файловых систем в Linux.docx

— 80.73 Кб (Скачать файл)

Единственная  команда, которая обязательно должна присутствовать в /sbin, это команда shutdown - команда остановки системы.

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

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

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

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

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

Каталог /temp

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

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

Каталоговая структура /usr

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

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

bin Это основное место  для размещения исполняемых файлов системы.

/usr/bin/X11 должен быть символической ссылкой на /usr/X11R6/bin если последний существует.

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

  • perl - Язык Perl (The Practical Extraction and Report Language)
  • python - Интерпретирующий язык Python
  • tclsh - Оболочка интерпретатора Tcl
  • wish - Оболочка Tcl/Tk
  • expect - Программа для организации интерактивного диалога

Поскольку интерпретаторы скриптов оболочки (вызываемые командой вида #!<path> в первой строке скрипта) не могут полностью полагаться на эту строку, имеет смысл стандартизовать их расположение. Размещение интерпретаторов оболочек Борна и C-shell уже зафиксировано в каталоге /bin, но интерпретаторы языков Perl, Python и Tcl часто размещаются в самых разных местах. В каталоге /usr/bin можно оставить только символические ссылки на действительное местоположение интерпретаторов.

include Это место, где  должны быть размещены все системные  подключаемые файлы общего пользования  для языка программирования C, в  частности файлы заголовков (header files), включаемые в программы на языке C.

Символическая ссылка /usr/include/X11 должна указывать на/usr/X11R6/include/X11, если только последний существует.

lib Каталог /usr/lib содержит объектные файлы, библиотеки и внутренние исполняемые файлы, которые не могут вызываться непосредственно пользователями из командной строки или скриптов оболочки. (Различные архитектурно-зависимые статические файлы и подкаталоги, специфичные для отдельных приложений, должны размещаться в/usr/share. )

Приложения могут  использовать отдельные подкаталоги  в /usr/lib. Если приложение использует подкаталог, все архитектурно-зависимые данные, используемые только этим приложением, должны размещаться внутри этого подкаталога. (Например, подкаталогperl5 для модулей и библиотек Perl 5.)

По историческим причинам /usr/lib/sendmail должен быть символической ссылкой на /usr/sbin/sendmail, если последний существует. (Некоторые исполняемые команды, такие как makewhatis и sendmail тоже по традиции размещаются в/usr/libmakewhatis - это внутреннй исполняемый файл и должен размещаться в подкаталоге для бинарных файлов; пользователям предоставляется доступ только кcatman. Исполняемые файлы последних версий sendmail теперь по умолчанию располагаются в /usr/sbin. Кроме того, системы, использующие sendmail-совместимые агенты передачи почты, должны делать /usr/sbin/sendmailсимволической ссылкой к соответствующему исполняемому файлу.)

Если /lib/X11 существует, /usr/lib/X11 должен быть символической ссылкой на/lib/X11, либо на тот каталог, на который ссылается /lib/X11. (Специфичные для каждого хоста данные для системы X Window не должны размещаться в/usr/lib/X11. Специфичные для хоста конфигурационные файлы, такие как Xconfigили XF86Config должны храниться в /etc/X11. Это требование относится и к таким фонфигурационным данным, как system.twmrc, даже если это только символическая ссылка на более общий конфигурационный файл, вероятно в /usr/X11R6/lib/X11).

local Каталоговая структура  для локально устанавливаемого программного обеспечения (пустая непосредственно  после инсталляции системы)
sbin Этот каталог  содержит системные команды, используемые исключительно системным администратором, не являющиеся жизненно-важными для  системы. Программы для выполнения задач системного администрирования, которые необходимы для восстановления системы, монтирования /usr, или для других самых важных системных задач, должны размещаться в /sbin. (Локально устанавливаемые программы для системного администрирования должны размещаться в /usr/local/sbin.)
share Архитектурно-независимые  данные
X11R6 Эта каталоговая  структура зарезервирована для  системы X Window System, version 11 release 6, и относящихся  к ней файлов.

Для некоторого упрощения и сохранения совместимости XFree86 с системой X Window для других типов  операционных систем должны быть созданы  следующие символические ссылки, если только каталог /usr/X11R6 существует:

/usr/bin/X11 -> /usr/X11R6/bin

/usr/lib/X11 -> /usr/X11R6/lib/X11

/usr/include/X11 -> /usr/X11R6/include/X11

В общем случае программное обеспечение не должно использовать перечисленные символические  ссылки при инсталляции или в  целях управления. Они предназначены  только для пользователей. Трудности  связаны с версиями выпусков системы X Window -- в переходный период невозможно узнать, какая версия X11 используется.

Специфичные для  каждого хоста данные в каталоге /usr/X11R6/lib/X11 должны использоваться только в демонстрационных целях. Приложения, которым необходима информация о текущей конфигурации хоста, должны искать ее в каталоге /etc/X11, куда могут быть сделаны ссылки из каталога /usr/X11R6/lib. (Примерами таких конфигурационных файлов могут служить XconfigXF86Config илиsystem.twmrc.)

games Игры и обучающие  программы
lib<qual> Библиотеки  для альтернативных форматов
src Исходные коды программного обеспечения.

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

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

/usr/spool -> /var/spool

/usr/tmp -> /var/tmp

/usr/spool/locks -> /var/lock

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

·  /usr/local : Каталог для локального ПО

Каталоговая структура /usr/local используется системным администратором в тех случаях, когда он устанавливает программное обеспечение, которое будет использоваться локально в рамках данного хоста. Этот каталог не должен перезаписываться при обновлениях системного программного обеспечения. Он может использоваться для программ и данных, не попавших в каталог /usr, доступ к которым разрешен с других хостов.

Локально  устанавливаемое программное обеспечение  должно располагаться не в /usr, а в /usr/local,если только его установка производится не в целях замены или обновления ПО в /usr. (Программное обеспечение, расположенное в или /usr может быть перезаписано при обновлениях системы (хотя мы рекомендуем, чтобы дистрибутивы не перезаписывали данные в /etc в таких обстоятельствах). По этой причине локально устанавливаемое программное обеспечение не должно размещаться за пределами каталога /usr/local без достаточных на то оснований. )

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

  • bin - Локальные исполняемые файлы
  • games - Локально установленные игровые приложения
  • include - Локальные заголовочные файлы для C
  • lib - Локальные библиотеки
  • man - Локальные онлайновые руководства
  • sbin - Локальные системные исполняемые файлы
  • share - Архитектурно-независимые структура каталогов для локального ПО
  • src - Локально установленные исходные коды.

Никаких каталогов, кроме перечисленных  выше, не должно быть в /usr/local после первой установки FHS-совместимой системы.

/usr/share : Архитектурно-независимые  данные

Структура каталогов /usr/share предназначена для всех файлов, которые предназначены только для чтения и не зависят от архитектуры. Так, например, компьютеры на платформах i386, Alpha и PPC могут поддерживать один общий каталог /usr/share, который монтируется на остальных компьютерах. Заметим, однако, что/usr/share обычно рассчитан на одну версию ОС и не предназначен для того, чтобы быть разделяемым различными операционными системами или различными версиями одной и той же ОС. Примерами файлов, которые размещаются в этом каталоге, могут служить файлы документации (mandocили базы данных(dictterminfozoneinfo). Любая программа или пакет, который содержит или требует данных, не подлежащих модификации, должны хранить эти данные в каталоге /usr/share (или /usr/local/share, если пакет установлен локально). Рекомендуется использовать для этих целей подкаталоги каталога/usr/share.

Информация о работе Иерархия каталогов и файловых систем в Linux