23.10.09 22:56 digiwhite

НовичкуКраткий перевод описания стандарта иерархии файловой системы Unix-like ОС (Часть 1)

Наткнулся тут недавно на описание стандарта иерархии файловой системы для Unix подобных систем.
Крайний стандарт датируется 29 января 2004 года и обозначен версией 2.3. Решил вот его немного перевести и чуть ужать. Собственно небольшая первая часть.

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

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


    Таким образом, данный стандарт определяет:
  • предназначение каждой области файловой системы;

  • минимально необходимый набор файлов и директорий;

  • список исключений из правил формирования иерархии;

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

1. Файловая система
    Стандарт предполагает, что операционная система, совместимая с описываемым стандартом, поддерживает базовые возможности обеспечения безопасности, которые можно обнаружить в большинстве файловых систем UNUX.
    Так же, должно быть возможно провести разделение на две независимых группы, относящихся к файлам: "разделяемые и не "разделяемые", "изменяемые" и "статичные(не изменяемые)".
    В основном это означает, что файлы, которые относятся к различным группам должны быть расположены в различных директориях. Такое разделение упрощает хранение файлов, предназначенных для различных целей в различных файловых системах.
    Под "разделяемым" файлом подразумевается, что он может храниться на одном хосте и использоваться на других. Под "не разделяемым" файлом подразумевается, что файл используется только на том хосте, где он хранится. Например, файлы, располагаемые в домашней директории пользователя являются "разделяемыми", в то время как файлы "блокировки" устройств таковыми не являются.
    Под "статичными" файлами понимают двоичные файлы, файлы библиотек, файлы документации и другие файлы, которые изменяются только в результате действий администратора системы.
Под "изменяемыми" файлами понимают же все остальные файлы, не относящиеся к "статичным".

    Поясню вышеописанное на примере:
1
2
3
4
5
6
7
8

                              Разделяемые      Не разделяемые
Статичные файлы               /usr             /etc
                              /opt             /boot

Изменяемые файлы              /var/mail        /var/run
                              /var/spool/news  /var/lock
 


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

2.1 Назначение и общая структура
    Корневая файловая система должна обеспечивать возможность загрузки системы и ее восстановления.
    Корневая файловая система должна содержать следующие директории или символические ссылки:
  • bin - необходимые двоичные командные файлы

  • boot - неизменяемые файлы загрузчика

  • dev - файлы устройств

  • etc - системные файлы конфигурации

  • lib - необходимые разделяемые библиотеки и модули ядра

  • media - точка монтирования для съемных устройств (CD\DVD-ROM диски, Flash диски и т.п.)

  • mnt - точка для временного монтирования файловых систем

  • opt - для хранения файлов различного прикладного ПО

  • sbin - необходимые системные двоичные файлы

  • srv - данные от служб, предоставляемых системой

  • tmp - временные файлы

  • usr - вторичная(или вторая) иерархия

  • var - для изменяемых данных

2.2 Дополнительные сведения
    Следующие директории или символические ссылки так же должны находиться в корневой ФС, если конечно установлена и используется соответствующая подсистема:
  • home - директория для хранения личных данных пользователей (опционально)

  • lib[qual] - альтернативный формат необходимых разделяемых библиотек (опционально, например это может быть /lib32 на 64 разрядных системах для хранения 32 разрядных разделяемых библиотек)

  • root - директория для хранения личных данных суперпользователя (опционально)

3. /bin: необходимые двоичные командные файлы (используется всем пользователями)

3.1 Назначение
    /bin содержит команды, которые могут быть использованы как администратором системы, так и рядовым пользователем, но которые требуются тогда, когда не подмонтированы другие файловые системы (например в однопользовательском режиме). Директория так же может содержать команды, которые используются скриптами не напрямую.

3.2 Требования, предъявляемые к /bin
    В каталоге /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 - командный интерпретатор Bourne (The Bourne command shell)

  • stty - утилита для изменения или печати строки настроек терминала

  • su - утилита для смены идентификатора пользователя

  • sync - утилита для сброса содержимого буфера файловой системы на носитель

  • true - утилита которая ничего не делает, возвращает истинное значение

  • umount - утилита для размонтирования примонтированных файловых систем

  • uname - утилита для вывода системной информации


    Если /bin/sh в действительности не является командны интерпретатором Bourne, то /bin/sh должно быть символической или жесткой ссылкой на реальный командный интерпретатор.
    Команды [ и test должны располагаться как в /bin так и в /usr/bin.

3.3 Дополнительные сведения
    Следующие программы или символические ссылки на них должны находиться в /bin, если они установлены:
  • csh - оболочка C (опционально)

  • ed - редактор "ed" (опционально)

  • tar - утилита архивирования tar (опционально)

  • cpio - утилита архивирования cpio (опционально)

  • gzip - GNU утилита сжатия(упаковки) (опционально)

  • gunzip - GNU утилита распаковки

  • zcat - GNU утилита распаковки

  • netstat - утилита отображающая сетевую статистику

  • ping - утилита проверки сети по протоколу ICMP


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


4. /boot: неизменяемые файлы загрзчика

4.1 Назначение
    Данная директория содержит все, что необходимо для процесса загрузки, за исключением конфигурационных файлов, не требуемых во время загрузи и отображения инсталятора. Таким образом /boot хранит данные, которые используются перед тем, как ядро начнет выполнять программы из пространства пользователя. Эти данные могут включать в себя сохраненую главную загрузочную запись (MBR) или файл карты секторов.

4.2 Дополнительные сведения
    Ядро операционной системы должно быть расположено как в / так и в /boot.


5. /dev: файлы устройств

5.1 Назначение
    Директория /dev предназначена для хранения специальных файлов или файлов устройств.

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



Перевод и трактовка - моя :).

Ссылка на полное описание стандарта (англ.): http://www.pathname.com/fhs/.

Надеюсь, продолжение следует :).


Теги:

exelens 23.10.09 23:03 # +0
Не пойму какой лучше блог подходит для этой записи
digiwhite 23.10.09 23:05 # +0
Я и сам задумался. Но т.к. это вроде как на основе стандарта и к структуре ФС относится, то фиг знает, как-то ИМХО больше к Linux internals :)
xT 23.10.09 23:07 # +-1
3.2 Требования, предъявляемые к /bin

кем предъявляемые? звучит как ультиматум)

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

почему не должно быть?
почему должны присутствовать?

=)
digiwhite 23.10.09 23:13 # +0

Наткнулся тут недавно на описание стандарта иерархии файловой системы для Unix подобных систем.
Крайний стандарт датируется 29 января 2004 года и обозначен версией 2.3.


Потому что это стандарт.
ner_uto 23.10.09 23:30 # +0
Да-да, давай продолжение:) Сам недавно читал про эти стандарты, перевод примерно того же бородатого года, интересно будет прочитать дальше
digiwhite 23.10.09 23:35 # +0
Ну потихоньку буду. Там не так сложно, сколько много и немного мудотно :). Но ИМХО полезно :).
kstep 24.10.09 23:47 # +0
Очень хорошо. Новичкам полезно знать. ИМХО, давно такой статьи не хватало.
digiwhite 24.10.09 23:48 # +0
Таки это еще не конец :)
kstep 25.10.09 00:07 # +0
Дык, +1 за продолжение =) Мне бы с своё время такой мануал...
digiwhite 25.10.09 12:43 # +0
Ну потихоньку буду делать. Просто времени много отнимает, а его нету :(.
Username 27.10.09 12:08 # +0
статейка - мастхэв для нуба
Посты Комментарии
Последние посты
Посты Комментарии
Последние комментарии
Посты Комментарии
Изменения
Посты Комментарии Изменения Черновики Избранное
Черновики (все)
Посты Комментарии Изменения Черновики Избранное
Избранное (всё)
Посты Комментарии Изменения Черновики Избранное
Лучшие блоги (все 127)
Элита (все 2421 из 196 городов)
welinux.ru