Блог

  • Директория /etc — системная конфигурация для конкретного хоста

    В директории /etc находятся файлы конфигурации. Файл конфигурации — это локальный текстовый файл, предназначенный для управления работой программы. Он должен быть статичным и не может быть исполняемым исполняемым двоичным файлом.

    Рекомендуется размещать файлы конфигурации в подкаталогах директории /etc, а не непосредственно в ней.

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

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

    • Конфигурация для /opt

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

    X11 Настройка системы X Window (необязательно)
    sgml Настройка для SGML (необязательно)
    xml Настройка XML (необязательно)

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

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

  • Каталог /dev: файлы устройств

    В каталоге /dev расположены специальные файлы и файлы устройств.

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

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

  • Директория /boot: статические файлы загрузчика

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

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

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

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

  • Каталог /bin — основные пользовательские двоичные файлы команд

    В директории /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 Утилита для редактирования потоков.

    sh Командная оболочка, соответствующая стандарту POSIX.

    stty Утилита для изменения и отображения настроек терминала.

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

    sync Утилита для очистки буферов файловой системы.

    true Утилита, выполняющая успешную операцию, не возвращающую ошибки.

    umount Утилита для размонтирования файловых систем.

    uptime Утилита для отображения системной информации.

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

    Команды [ и test следует размещать в директориях /bin или /usr/bin.

    Разные оболочки ведут себя по-разному, когда их вызывают как sh, чтобы сохранить совместимость с POSIX. При этом, если необходимо, можно вносить изменения или дополнения в стандарт.

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

    csh Оболочка C (необязательна)/

    ed Редактор ed (необязателен)/

    tar Утилита для архивирования (необязательна)/

    cpio Утилита для архивирования (по желанию)/

    gzip Утилита сжатия GNU (необязательна)/

    gunzip Утилита для распаковки GNU (необязательна)/

    zcat Утилита для распаковки GNU (необязательна)/

    netstat Утилита для сбора сетевой статистики (необязательна)/

    ping Утилита для тестирования сети ICMP (необязательна) |

    Обратите внимание, что /bin/csh может быть символической ссылкой на /bin/tcsh или /usr/bin/tcsh.

    Rоманды tar, gzip и cpio позволяют восстановить систему в случае повреждения корневого раздела. Однако если восстановление с корневого раздела не предполагается, эти утилиты можно не устанавливать. Например, если корневой раздел находится на микросхеме ПЗУ и монтируется через NFS, то tar, gzip и cpio могут быть необязательны.

    Если же восстановление системы планируется по сети, то на корневом разделе должны быть доступны ftp или tftp, а также все необходимые инструменты для подключения по этим протоколам.

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

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

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

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

    1. Корневую файловую систему часто монтируют на небольших носителях.
    2. Корневой каталог содержит множество специфичных файлов конфигурации, таких как ядро системы и имя хоста, что делает его непригодным для совместного использования в сетевых системах.
    3. Ограничение размера корневой файловой системы на серверах в сетевых системах позволяет уменьшить потери дискового пространства из-за файлов, недоступных для сетевого использования.
    4. Это также позволяет использовать рабочие станции с меньшими локальными дисками.
    5. Даже если у вас большая корневая файловая система, найдутся пользователи с меньшими разделами. Избыточное количество файлов может вызвать проблемы совместимости с другими системами, использующими корневые файловые системы меньшего размера.
    6. Для разработчиков важно учитывать, что ошибки на диске, повреждающие корневую файловую систему, могут привести к серьезным проблемам. Небольшая корневая файловая система менее подвержена повреждениям при сбоях системы.

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

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

    1. Это занимает место в корневом разделе, которое системный администратор может захотеть сделать компактным и простым в использовании для повышения производительности или безопасности.
    2. Это противоречит правилам распределения стандартных файловых иерархий по различным томам, которые мог установить системный администратор.
    3. Дистрибутивы должны тщательно анализировать возможные последствия создания новых каталогов в корневой иерархии, включая влияние на переносимость приложений.

    bin — Основные двоичные файлы команд

    boot — Статические файлы загрузчика

    dev — Файлы устройств

    etc — Конфигурация системы для конкретного хоста

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

    media — Точка крепления для съемных носителей

    mnt — Точка подключения для временного монтирования файловой системы

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

    run — Данные, относящиеся к запущенным процессам

    sbin — Основные системные двоичные файлы

    srv — Данные об услугах, предоставляемых этой системой

    tmp — Временные файлы

    usr — Вторичная иерархия

    var — Переменные данные

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

    home — Домашние каталоги пользователей (необязательно)
    lib — Необходимые разделяемые библиотеки альтернативного формата (необязательно)
    root — Домашняя директория для пользователя root (необязательно)

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

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

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

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

    Статические файлы включают двоичные файлы, библиотеки, документацию и другие файлы, которые изменяются только с разрешения системного администратора. Переменные файлы не относятся к статическим.

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

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

    В предыдущих версиях файловых систем, таких как UNIX, статические и изменяемые файлы располагались как в каталоге /usr, так и в /etc. Для реализации упомянутых преимуществ была создана иерархия /var, и все изменяемые файлы были перемещены из /usr в /var. Теперь /usr можно монтировать только для чтения (при условии, что это отдельная файловая система). Изменяемые файлы из /etc постепенно перемещались в /var по мере развития технологий.

  • Стандарт файловой системы FHS

    Стандарт файловой системы FHS

    Рабочая группа LSB, The Linux Foundation Версия 3.0

    Авторские права © 2015 The Linux Foundation

    Авторские права © 1994–2004 Дэниел Куинлан

    Авторские права © 2001–2004 Пол «Расти» Рассел

    Авторские права © 2003–2004 Кристофер Йео

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

    Допускается создавать и распространять точные копии данного стандарта при условии сохранения авторских прав и текущего разрешения на всех копиях.

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

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

    Дата: 19 марта 2015 года.

    Краткое содержание

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

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

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

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

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

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