| Стандарт побудови файлової системи | Квітень, 12, 2000 | |
| Вперед | Що де є | Назад |
Цей розділ розповідає про структуру кореневого (root) каталогу. Наповнення кореневої файлової системи має бути достатнім для завантаження, відновлення, відбудови та/або ремонту системи.:
/usr, /opt та /var задумані так, що можуть бути розташовані на іншому розділі або іншій файловій системі.Головне, що допоможе дотримуватися балансу в цьому розгляді, який підштовхує розмістити багато чого в кореневій файловій системі, є мета утримувати кореневу файлову систему настільки малою як це розумно можливо. З окремих причин бажано тримати її малою:
Програмне забезпечення не повинно створювати або потребувати спеціальних файлів чи каталогів в кореневому каталозі. Інші місця в СПФС структурі забезпечують більш ніж достатньо гнучкості для будь-якого пакету.
Початок обгрунтування
Є декілька резонів, чому створення нового підкаталогу в кореневій файловій системі забороняється:
Закінчено обгрунтування
/-- кореневий каталог|- binВажливі двійкові командні файли|- bootПостійні файли для завантаження системи|- devФайли пристроїв|- etcВласні файли налаштувань системи|- home"Домашні" каталоги користувачів|- libВажливі загальні бібліотеки та модулі ядра|- mntТочки монтування для додаткових файлових систем|- optДодаткові пакети програм|- root"Домашній" каталог керуючого системою|- sbinВажливі системні двійкові файли|- tmpТимчасові файли|- usrВторинна структура|- varЗмінні данні
Кожен каталог, що його перелічено вище, в подробицях пояснюється нижче в окремих підпунктах. /usr та /var кожен мають повний розділ в цьому документі через їх складність.
Ядро операційної системи має знаходитися або в / або в /boot. Додаткові відомості відносно розташування ядра можно знайти нижче,
в пункті про /boot, .
/bin: Важливі двійкові командні файли користувача (для всіх користувачів)/bin містить команди, що можуть використовуватися і керуючим системою і користувачами, але ті що потрібні коли ще жодна інша файлова система не примонтована (наприклад, в режимі одного користувача). Також там можуть знаходитися команди, що використовуються через сценарії.
В межах /bin не повинно бути підкаталогів.
Двійкові команди, що не достатньо важливі для розміщення в /bin мають бути натомість розташовані в /usr/bin. Команди, що потрібні тільки звичайним користувачам (X Window System, chsh і т.і.), зазвичай, не достатньо важливі для розміщення в кореневому розділі.
Необхідні для /bin файли:
Наступні команди мають знаходитися тут через їх виняткову важливість, виключаючи декілька, що знаходяться тут з історичних причин.
{cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, ed, false, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, setserial, sh, stty, su, sync, true, umount, uname}
Коли /bin/sh є Bash, /bin/sh має бути символічним або жорстким зв'язком до /bin/bash оскільки Bash поводиться інакше коли викликається як sh а не bash. pdksh, що може бути /bin/sh на диску встановлення, має так само бути обіграним через символічний зв'язок з /bin/sh до /bin/ksh. Використання символічного зв'язку в цьому випадку дозволить користувачам легко побачити, що /bin/sh не є справжньою оболонкою Борна.
Фактичне стандартне місце розташування C-shell - /bin/csh. Оболонка С або рівнозначна (така як tcsh), коли вона доступна в системі, має розміщуватися в /bin/csh. /bin/csh може бути символічним зв'язком до /bin/tcsh або /usr/bin/tcsh.
Примітка: Команди [ та test вбудовані в більшість часто використованих оболонок замінників оболонки Борна (/bin/sh). Ці дві команди не повинні розміщуватися в /bin, вони можуть бути розташовані в /usr/bin. Вони повинні знаходитися як двійкові файли в любій Unix або Unix подібній системі для забезбечення узгодженості з стандартом POSIX.2.
Ці команди додано щоб зробити можливим відновлення системи (за умови, що / не ушкоджено).
{tar, gzip, gunzip (зв'язка до gzip), zcat (зв'язка до gzip)}
Коли резервування системи виконувалося не з gzip чи tar, в кореневому каталозі треба розмістити мінімально необхідний набір засобів відновлення. Наприклад, багато систем повинні мати cpio, оскільки це другий за вжитком після tar інструмент резервування.
Відповідно, коли ви не збираєтесь ніколи відновлювати систему з кореневого каталогу, то ці команди можуть виключатися (наприклад, кореневий розділ записано на мікросхему пам'яті, /usr монтується через NFS) Коли відновлення системи планується через мережу, то ftp чи tftp (разом з усім необхідним для забезпечення з'єднання) має бути доступним на кореневому розділі.
Не дуже суттєві команди відновлення можуть знаходитися або в /bin або в /usr/bin на різних системах.
Тут мають бути тількі необхідні команди, що їх користувачі або керуючий будуть повинні або захочуть виконати, інші ніж в /usr/bin або в /usr/local/bin.
{ domainname, hostname, netstat, ping }
/boot: Постійні файли завантажувача системиЦей каталог містить все необхідне для процесу завантаження, за виключенням файлів налаштувань та встановлювача мапи. Таким чином, /boot зберігає данні, що використовуються до того як ядро почне виконувати програми режиму користувача. Це можуть бути: збережений сектор початкового завантаження, файли мап секторів та інші данні, що не редагуються вручну. Програми, необхідні для налаштування процесу завантаження, мають бути в /sbin. Файли налаштувань, для початкових завантажувачів, мають бути в /etc.
Ядро операційної системи може бути або в / або в /boot.
Примітка: На деяких 386 машинах, може бути необхідним розташувати /boot на окремому розділі в межах нижче 1024 циліндру пристрою завантаження, що пов'язано з обмеженнями апаратних засобів.
Деякі MIPS системи потребують щоб /boot монтувався як файлова система MS-DOS або якась інша файлова система, що підтримується вбудованими програмами. Це може накладати обмеження на можливі назви файлів в/boot (тільки для відповідних систем).
/dev: Файли пристроївКаталог /dev - місце для розташування спеціальних файлів та файлів пристроїв.
Коли можливо, щоб пристрої створювалися в /dev вручну, в /dev повинна знаходитися команда MAKEDEV, яка може створювати пристрої за потребою. В ньому може бути також MAKEDEV.local, для будь-яких місцевих пристроїв.
Коли треба, MAKEDEV повинна мати умови для створення будь-яких пристроїв, що їх може бути знайдено в системі, не тільки тих, що встановлює конкретний виріб.
/etc: Налаштування для конкретної системи/etc містить файли налаштувань та каталоги, що є особливими для певної системи.
В структурі /etc не повинно бути двійкових файлів.
/etc-- Налаштування для конкретної системи|-X11Налаштування для X Window System|-optНалаштування для/opt
Наступний розділ частково призначено щоб висвітити опис змісту /etc разом з прикладами, це не є вичерпний перелік.
Необхідні для /etc файли:
{ adjtime, csh.login, disktab, fdprm, fstab, gettydefs, group, inittab, confissue, ld.so.conf, lilo.conf, motd, mtab, mtools, passwd, profile, securetty, shells, syslog.conf, ttytype }
{ exports, ftpusers, gateways, host.conf, hosts, hosts.allow, hosts.deny, hosts.equiv, hosts.lpd, inetd.conf, networks, printcap, protocols, resolv.conf, rpc, services }
Примітка:
Встановлення командного сценарію, що потрібен під час завантаження, може наслідувати System V або BSD моделі. Подальші визначення в цій області можуть бути додані до майбутніх версій цього стандарту.
Системи, що використовують тіньові паролі, будуть мати додаткові файли налаштувань в /etc(/etc/shadow та інші) та програми в /usr/sbin(useradd, usermod та інші).
/etc/X11: Налаштування для X Window System/etc/X11 - це рекомендоване місце для всіх налаштувань певної машини, що стосуються X11. Цей каталог потрібний щоб дозволити місцеве керування коли /usr змонтовано тільки на читання. Файли, що повинні знаходитися в цьому каталозі - Xconfig (та/або XF86Config) та Xmodmap.
Підкаталоги /etc/X11 можуть містити такі для xdm та для будь-яких інших програм (деякі розпорядники вікон, наприклад), що їх потребують. Ми рекомендуємо щоб розпорядники вікон з єдиним файлом налаштунків, що стандартно є файл .*wmrc називали його system.*wmrc (коли не існує іншої загально визнаної назви) і не використовували підкаталоги. Будь-які підкаталоги розпорядників вікон повинні мати назви, що співпадають з назвою двійкового файлу розпорядника вікон.
/etc/X11/xdm зберігає файли налаштувань для xdm. Більшість файлів, що звичайно зберігається в /usr/lib/X11/xdm. Деякі змінні данні для xdm зберігаються в /var/lib/xdm.
/etc/opt: Файли налаштувань для /opt Файли налаштувань для додаткових програм, що стосуються тільки цієї машини, повинні встановлюватися в межах підкаталогу /etc/opt/<package>, де <package> - назва піддерева в /opt в якому встановлено постійні данні цього пакету. Не встановлено правил на внутрішню організацію /etc/opt/<package>.
Коли файл налаштування повинен розміщуватися в іншому місці, щоб забезпечити роботу пакету або системи, він може бути розташований не в /etc/opt/<package>.
Початок обгрунтування
Дивіться обгрунтування для /opt.
Закінчено обгрунтування
/home: Каталоги користувачів (за потребою)/home - взагалі то стандартне поняття, але це є файлова система чисто конкретної машини. Встановлення буде різним на різних машинах. Цей пункт описує тільки рекомендоване місце розміщення для домашніх каталогів користувачів; проте, ми рекомендуємо щоб всі комплекти, що узгоджені з СПФС, використовували його як стандартне місце для каталогів користувачів.
На невеликих системах, каталог кожного користувача є підкаталогом в /home як то:/home/smith, /home/torvalds, /home/operator і т.і.
На великих системах (особливо, коли /home каталоги використовуються спільно багатьма машинами через NFS) корисно розділяти домашні каталоги на групи. Групи можуть бути обрані, наприклад, такі: /home/staff, /home/guests, /home/students і т.і.
Різні люди полюбляють розташовувати рахунки користувачів в різних місцях. Отже, програма не повинна покладатися на їх певне місце знаходження. Коли вам потрібно знайти домашній каталог користувача, треба використовувати бібліотеку getpwent (3), а не покладатися на /etc/passwd, бо відомості про користувачів можуть зберігатися окремо з використанням таких систем як NIS.
/lib: Важливі загальні бібліотеки та модулі ядраВ каталозі /lib розташовані ті загальні бібліотеки, що потрібні при завантаженні системи та виконання команд в кореневій файловій системі.
/lib-- важливі спільні бібліотеки та модулі ядра |--modulesмодулі ядра для завантаження
Тут розміщено /lib/lib.so.*, /lib/libm.so.*, загальний динамічний зв'язувач /lib/ld.so та інші загальні бібліотеки, що потрібні двійковим з /bin та /sbin.
Загальним бібліотекам, що необхідні тільки двійковим з /usr (таким як всі двійкові X Window), не місце в /lib. Тут мають бути загальні бібліотеки, що необхідні для запуску двійкових тільки з /bin та /sbin. Бібліотеку libm.so.* можна помістити в /usr/lib коли вона не потрібна ні для чого з /bin та /sbin.
З міркувань сумісності, /lib/cpp повинно існувати як посилання на C допроцесор встановлений в системі. Звичайно, місце для нього /usr/lib/gcc-lib/<target>/<version>/cpp. /lib/cpp може вказувати на цей файл або на будьяке посилання на цей файл, що є в файловій системі. (Наприклад, /usr/bin/cpp також часто використовується).
Визначення для /lib/modules буде в майбутньому
/mnt: Точка монтування для файлових систем, що їх монтують тимчасовоЦей каталог забезпечує наглядачу за системою можливість тимчасово монтувати файлові системи за необхідністю. Зміст його є приватною справою та не повинен ніяк впливати на роботу програм.
Ми не рекомендуємо використовувати цей каталог в програмах встановлення, та пропонуємо замість того використовувати придатний тимчасовий каталог, що не використовується системою.
/opt: Додаткові прикладні програмні пакети/opt-- Додаткові прикладні програмні пакети |--<package>Постійні об'єкти пакета
/opt зарезервовано для встановлення додаткових прикладних програмних пакетів.
Пакет, що встановлюється в /opt, має розмістити власні постійні файли в окремому дереві каталогів/opt/<package>, де <package> - назва, що описує програмний пакет.
Програми, що викликаються користувачами, повинні розміщуватися в каталозі /opt/<package>/bin. Коли пакет має сторінки допомоги для UNIX, вони повинні розміщуватися в /opt/<package>/man з використанням тієї ж структури як в /usr/share/man.
Каталоги /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib та /opt/man зарезервовані для використання місцевим наглядачем за системою. Пакети можуть мати "лицьові" файли призначені для розміщення в (копіюванням чи встановленням зв'язків) ці зарезервовані каталоги місцевим наглядачем за системою, але вони повинні працювати нормально і за відсутності цих каталогів.
Файли пакетів, що змінюються під час роботи пакету повинні бути встановлені в /var/opt. Дивись текст для /var/opt за додатковими поясненнями.
Файли налаштувань для конкретної системи повинні розміщуватися в /etc/opt. Дивись текст для /etc за додатковими поясненнями.
Файли пакету не повинні розміщуватися за межами /opt, /var/opt та /etc/opt структур виключаючи ті файли пакету, що мають знаходитися в певних місцях файлової системи для її вірного функціонування. Наприклад, файли контролю пристроїв повинні знаходитися в /var/lock і пристрої повинні бути в /dev.
Комплекти можуть встановлювати програми в /opt, але не повинні змінювати або видаляти програми встановлені місцевим наглядачем без його згоди.
Початок обгрунтування
Використання /opt для додаткового програмного забезпечення є добре відомою практикою в співтоваристві UNIX. System V Applicatoin Binary Interface [AT&T 1990], що базується на System V Interface Definition (третя редакція), подає для /opt структуру дуже близьку до визначеної тут.
Intel Binary Compatibility Standard v.2 (iBCS2) також подає схожу структуру для /opt.
Зазвичай, всі данні, що необхідні для підтримки пакету в системі, повинні знаходитися в межах /opt/<package>, включаючи файли, що їх треба копіювати в /etc/opt/<package> та /var/opt/<package> так само як з резервованих каталогів в /opt.
Другорядні обмеження на розповсюдження з використанням /opt необхідні через можливість конфліктів між програмами встановленими з комплектів та місцево, особливо у випадку сталих шляхів знайдених в деяких двійкових програмах.
Закінчено обгрунтування
/root: Домашній каталог для наглядача за системою (root user), за бажанням/ - традиційно є домашнім каталогом для рахунку root в UNIX системах. /root використовується на багатьох Linux та деяких UNIX системах (для зменшення метушні в каталозі /). Домашній каталог для рахунку root може бути визначеним розробником або місцевими уподобаннями. Можливі варіанти включають /, /root, та /home/root.
Коли домашній каталог для рахунку наглядача не розміщений на кореневому розділі, то необхідно виконати щоб стандартно таким призначався /, якщо його неможливо знайти.
Зауважимо: Ми заперечуємо проти використання рахунку наглядача для таких світських справ як новини та листи та рекомендуємо використовувати його тільки для керування системою. З цих міркувань, ми рекомендуємо щоб такі підкаталоги як Mail та News не з'являлися в каталозі наглядача, а листи для тих хто виконує обов'язки наглядача, керуючого поштою та майстра павутини скеровувалися відповідним користувачам.
/etc) Засоби, що потрібні для керування системою (та інші команди тільки для наглядача), зберігаються в /sbin, /usr/sbin та /usr/local/sbin. В /sbin, звичайно, розміщують додатково до двійкових в /bin двійкові, що важливі для завантаження системи. Все, що буде виконуватися після того як змонтовано /usr (коли з цим немає проблем), має бути розташовано в /usr/sbin. Двійкові, що потрібні тільки місцевому наглядачу, повинні знаходитися в /usr/local/sbin.
Визначити, що повинно бути розміщено в каталогах "sbin", дость просто: якщо звичайний користувач (не наглядач за системою) буде коли-небудь використовувати це напряму - воно повинно знаходитися в одному з каталогів "bin" Звичайний користувач не повинен мати каталогів sbin серед своїх шляхів.
Зауважимо: Наприклад, файли, такі як chfn, що їх користувач запускає тільки час від часу, всеж таки повинні знаходитися в /usr/bin. ping, напроти, дуже потрібний наглядачу (відновлення роботи мережи та її перевірка) часто використовується користувачами і повинен, зважаючи на це, жити в /bin.
Ми рекомендуємо щоб користувачі мали можливість читати та виконувати все, що знаходиться в /sbin, виключаючи, звичайно, програми setuid та setgid. Розмежування між /bin та /sbin було зроблено не з міркувань безпеки або заборони користувачу дивитись операційну систему, а лише щоб забезпечити краще розмежування між двійковими для загального користування та призначиними лише для нагляду за системою. Не існує ніяких переваг безпеки, якщо зробити /sbin закритим для користувачів.
Файли необхідні для /sbin:
Загальні команди:
{ hwclock, getty, init, update, mkswap, swapon, swapoff }
{ fastboot, fasthalt, halt, reboot, shutdown }
(Або будьякі їх комбінації, поки shutdown присутня.)
{ fdisk, fsck, fsck.*, mkfs, mkfs.* }
* = одна або більше ext, ext2, minix, msdos, xia та можливо інші
{ ifconfig, route }
/tmp: Тимчасові файлиКаталог /tmp повинен бути доступним для програм, що потребують тимчасових файлів.
Крім того, данні, що зберігаються в /tmp, можуть знищуватися за місцевими політиками, рекомендується знищувати каталоги та файли розміщені в /tmp під час кожного завантаження системи.
Пргограми не повинні очікувати, що файли або каталоги в /tmp будуть збережені між викликами програми.
Початок обгрунтування
Стандарт IEEE P1003.2(POSIX, частина 2) ставить подібні вимоги.
СПФС додає рекомендацію щоб /tmp очищувався перед кожним завантаженням, базуючись на історичних прецендентах та загальній практиці, але не ставить це як вимогу, бо нагляд за системою не є предметом цього стандарту.
Закінчено обгрунтування
Перекладено А. М. Добровольським © 2000 р.
| Вперед | Що де є | Назад |