digiwhite 23.10.2009 22:56
Новичку — Краткий перевод описания стандарта иерархии файловой системы Unix-like ОС (Часть 1)
Наткнулся тут недавно на описание стандарта иерархии файловой системы для Unix подобных систем.Крайний стандарт датируется 29 января 2004 года и обозначен версией 2.3. Решил вот его немного перевести и чуть ужать. Собственно небольшая первая часть.
Введение
Собственно зачем нужен данный стандарт. А нужен он для того, чтобы:
софт мог определять, где находятся необходимые ему файлы и директории;
пользователь мог определять местоположение установленных файлов и директорий.
Таким образом, данный стандарт определяет:
предназначение каждой области файловой системы;
минимально необходимый набор файлов и директорий;
список исключений из правил формирования иерархии;
список ситуаций где могут случиться конфликты в силу исторических причин.
1. Файловая система
Стандарт предполагает, что операционная система, совместимая с описываемым стандартом, поддерживает базовые возможности обеспечения безопасности, которые можно обнаружить в большинстве файловых систем UNUX.
Так же, должно быть возможно провести разделение на две независимых группы, относящихся к файлам: "разделяемые и не "разделяемые", "изменяемые" и "статичные(не изменяемые)".
В основном это означает, что файлы, которые относятся к различным группам должны быть расположены в различных директориях. Такое разделение упрощает хранение файлов, предназначенных для различных целей в различных файловых системах.
Под "разделяемым" файлом подразумевается, что он может храниться на одном хосте и использоваться на других. Под "не разделяемым" файлом подразумевается, что файл используется только на том хосте, где он хранится. Например, файлы, располагаемые в домашней директории пользователя являются "разделяемыми", в то время как файлы "блокировки" устройств таковыми не являются.
Под "статичными" файлами понимают двоичные файлы, файлы библиотек, файлы документации и другие файлы, которые изменяются только в результате действий администратора системы.
Под "изменяемыми" файлами понимают же все остальные файлы, не относящиеся к "статичным".
Поясню вышеописанное на примере:
1 |
Разделяемые Не разделяемые
|
2. Корневая файловая система
2.1 Назначение и общая структура
Корневая файловая система должна обеспечивать возможность загрузки системы и ее восстановления.
Корневая файловая система должна содержать следующие директории или символические ссылки:
bin - необходимые двоичные командные файлы
boot - неизменяемые файлы загрузчика
dev - файлы устройств
etc - системные файлы конфигурации
lib - необходимые разделяемые библиотеки и модули ядра
media - точка монтирования для съемных устройств (CD\DVD-ROM диски, Flash диски и т.п.)
mnt - точка для временного монтирования файловых систем
opt - для хранения файлов различного прикладного ПО
sbin - необходимые системные двоичные файлы
srv - данные от служб, предоставляемых системой
tmp - временные файлы
usr - вторичная(или вторая) иерархия
var - для изменяемых данных
2.2 Дополнительные сведения
Следующие директории или символические ссылки так же должны находиться в корневой ФС, если конечно установлена и используется соответствующая подсистема:
home - директория для хранения личных данных пользователей (опционально)
lib - альтернативный формат необходимых разделяемых библиотек (опционально, например это может быть /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.2009 23:03 #
+ 0 -
Не пойму какой лучше блог подходит для этой записи
Я и сам задумался. Но т.к. это вроде как на основе стандарта и к структуре ФС относится, то фиг знает, как-то ИМХО больше к Linux internals :)
3.2 Требования, предъявляемые к /bin
кем предъявляемые? звучит как ультиматум)
В каталоге /bin не должно быть подкаталогов.
Следующие команды или символические ссылки на команды должны присутствовать в /bin:
Следующие команды или символические ссылки на команды должны присутствовать в /bin:
почему не должно быть?
почему должны присутствовать?
=)
Наткнулся тут недавно на описание стандарта иерархии файловой системы для Unix подобных систем.
Крайний стандарт датируется 29 января 2004 года и обозначен версией 2.3.
Потому что это стандарт.
Да-да, давай продолжение:) Сам недавно читал про эти стандарты, перевод примерно того же бородатого года, интересно будет прочитать дальше
Ну потихоньку буду. Там не так сложно, сколько много и немного мудотно :). Но ИМХО полезно :).
Очень хорошо. Новичкам полезно знать. ИМХО, давно такой статьи не хватало.
Ну потихоньку буду делать. Просто времени много отнимает, а его нету :(.