Linux documentation Project (CS) / Průvodce správce operačního systému Linux
Previous Content Next Up

 

3. Přehled struktury adresářů

Dva dny nato seděl Pooh na své větvi, pohupoval nohama a tam, vedle něj, stály čtyři hrníčky medu. . .

(A. A. Milne)

    Kapitola popisuje důležité části standardní struktury adresářů operačního systému Linux, která je založená na systému souborů standardu FSSTND. Načrtneme v ní také běžný způsob rozdělení struktury adresářů do samostatných souborových systémů (svazků) s odlišnými účely a tento způsob rozdělení zdůvodníme. Naznačíme i některé alternativní způsoby rozdělení.

3.1 Základy

    Tato kapitola volně vychází z normy "Standard systému souborů operačního systému Linux FSSTND, verze 1.2ie (viz bibliografie [Qui95]), který je pokusem zavést jisté konvence do organizace adresářového stromu operačního systému Linux. Výhodou přijetí takovéto normy je, že když bude vše na svém obvyklém místě, bude jednodušší psát programy a přenášet na Linux software z jiných platforem. Zároveň to ulehčí správu počítačů, na kterých běží operační systém Linux. I když neexistuje autorita, která by vývojáře, programátory a distributory donutila přizpůsobit se této normě, je její podpora v současnosti součástí většiny (ne-li všech) distribucí Linuxu. Není vhodné se neřídit standardem FSSTND, nejsou-li pro to velmi závažné důvody. Norma FSSTND se snaží sledovat tradice Unixu i současné trendy jeho vývoje.

Motivací je snaha o usnadnění přechodu na Linux pro uživatele, kteří mají zkušenosti s jinými systémy Unix a naopak.

Tato kapitola není tak detailní jako FSSTND. Správce systému - chce-li plně proniknout do problematiky systémů souborů - by si měl přečíst i normu FSSTND.

    Kapitola rovněž nepopisuje podrobnosti týkající se všech typů souborových systémů. Nebylo také cílem popsat všechny adresáře a konfigurační soubory, ale nabídnout čtenáři přehled o celém systému z perspektivy systému souborů. Podrobnější informace o popisovaných souborech jsou k dispozici na jiných místech této knihy, případně na manuálových stránkách.

    Celou stromovou strukturu adresářů je možné rozdělit na menší části, tzv. svazky. Každá z těchto částí může být umístněna na vlastním disku nebo samostatné diskové oblasti - logické sekci. Tak se lze jednoduše přizpůsobit omezením velikosti disků a zároveň usnadnit zálohování i ostatní úkoly spojené se správou systému. Nejdůležitější z těchto částí jsou souborový systém "root" (kořenový svazek), dále souborové systémy /usr, /var a /home (viz obrázek 3.1). Každý systém souborů má jiné určení. Adresářová stromová struktura byla navržená tak, aby fungovala i v síti počítačů s operačním systémem Linux. Uživatelé a programy tak mohou pomocí sítě sdílet některé části systémů souborů, a to buď prostřednictvím zařízení určených pouze pro čtení (např. CD.ROM), nebo pomocí sítě se systémem NFS.

    Určení takto vymezených částí adresářové struktury je popsané v dalším textu. Souborový systém "root! (kořenový svazek) je specifický pro každý počítač. Obecně je uložen na lokálním disku (avšak může to být i virtuální disk v paměti RAM - tzv. "ramdisk", nebo síťová disková jednotka). Kořenový svazek obsahuje soubory nutné pro zavedení systému a jeho uvedení do stavu, ve kterém mohou být připojené ostatní souborové systémy. Obsah kořenového souborového systému postačuje pro práci v jednouživatelském režimu. Na tomto svazku jsou rovněž uloženy nástroje pro opravy poškozeného souborového systému a pro obnovení ztracených souborů ze záloh.

    Souborový systém "/" (kořenový svazek) je specifický pro každý počítač. Obecně je uložen na lokálním disku (avšak může to být i virtuální disk v paměti RAM - tzv. "ramdisk", nebo síťová disková jednotka). Kořenový svazek obsahuje soubory nutné pro zavedení systému a jeho uvedení do stavu, ve kterém mohou být připojené ostatní souborové systémy. Obsah kořenového souborového systému postačuje pro práci v jednouživatelském režimu. Na tomto svazku jsou rovněž uloženy nástroje pro opravy poškozeného souborového systému a pro obnovení ztracených souborů ze záloh.

    Souborový systém /usr obsahuje všechny příkazy, knihovny, manuálové stránky a jiné soubory, jejichž obsah se nemění a které uživatel potřebuje při běžném provozu. Žádný ze souborů svazku /usr by neměl být specifický pro některý počítač. Rovněž by se neměl při normálním provozu měnit. Tyto podmínky zaručují, že soubory uložené v souborovém systému /usr bude možné efektivně sdílet v síti. Sdílení tohoto svazku je vhodné dohledávat v rámci celého systému soubory určitého typu, například manuálové stránky aplikací uložené na mnoha různých místech. Programátory by jistě strašila noční můra - jak v takovémto případě vytvořit programy, které by byly schopné v případě potřeby manuálové stránky všech aplikací nalézt.

3.2 Souborový systém "root"

    Kořenový svazek "root" by obecně měl být malý, protože obsahuje velmi kritické soubory. U malého souborového systému, který se mění jenom zřídka, je menší pravděpodobnost poškození. Poškození souborového systému "root" většinou znamená, že operační systém na tomto svazku nebude možné zavést. Tento problém lze řešit pouze pomocí speciálních opatření (např. zavedením systému z diskety), a to by chtěl riskovat asi málokterý správce. Obecně by kořenový adresář systémového svazku neměl obsahovat žádné soubory, snad kromě standardního obrazu systému. Ten se obvykle jmenuje /vmlinuz. Všechny ostatní soubory by měly být uloženy v podadresářích kořenového adresáře, obvykle tímto způsobem:

/bin Příkazy potřebné pro zavedení systému a pro práci běžných uživatelů po jeho zavedení.
/sbin Stejné jako u adresáře /bin. Příkazy v tomto podadresáři ale nejsou určeny běžným uživatelům, i když je též mohou použít (je-li to nutné nebo možné).
/etc Konfigurační soubory specifické pro daný počítač.
/root Domovský adresář superuživatele.
/lib Sdílené knihovny pro programy v kořenovém souborovém systému.
/lib/modules Zaváděcí moduly jádra systému - zvláště ty, které jsou potřeba pro zavedení systému při zotavení po neočekávaných událostech (např. síťové ovladače a ovladače pro souborový systém).
/dev Speciální soubory.
/tmp Dočasné soubory. Programy, které se spouští až po zavedení systému, by správně měly používat místo adresáře /tmp adresář /var/tmp, protože je velmi pravděpodobné, že leží na větším disku.
/boot Soubory, jež používá zavaděč operačního systému (angl. bootstrap loader), např. LILO. Je dobré mít v tomto podadresáři uložené obrazy jádra (místo toho, aby se ukládaly přímo v kořenovém adresáři). V případě, že jich máte víc, může obsah adresáře /boot značně narůst. V tom případě bude lepší mít jej v samostatném souborovém systému. Tím se také zajistí, že obrazy jádra budou uloženy na prvních 1024 cylindrech disku IDE.
/mnt Přípojné místo pro dočasná připojení dalších systémů souborů správcem systému. Nepředpokládá se, že by tento adresář využívaly pro automatická připojení souborových systémů programy. Adresář /mnt může být rozdělen na podadresáře (např. /mnt/dosa pro disketovou mechaniku používanou v souborovém systému MS-DOS, /mnt/exta pro tutéž mechaniku využívanou v souborovém systému ext2 a podobně).
/proc, /usr, /var, /home Přípojná místa pro další souborové systémy.

3.2.1 Adresář /etc

    Adresář /etc obsahuje mnoho souborů. Některé z nich jsou popsány v dalším textu. Pokud jde o ostatní, měli byste nejdřív zjistit, ke kterému programu patří, a pak si přečíst manuálové stránky k tomuto programu. V adresáři /etc je uloženo také hodně síťových konfiguračních souborů, které jsou popsané v "Průvodci správce sítě operačního systému Linux".

/etc/rc, /etc/rc.d a /etc/rc?.d Skripty a adresáře skriptů, které se spouští při startu, nebo v případě, že se mění úroveň běhu systému. Podrobnější informace najdete v kapitole o procesu init.
/etc/passwd Databáze uživatelů systému s položkami, v nichž je uloženo uživatelské jméno i skutečné jméno uživatele, domovský adresář, šifrované heslo a některé další informace. Formát je popsán v manuálové stránce pro program passwd.
/etc/fdprm Tabulka parametrů disketové jednotky. Popisuje jak vypadají různé formáty disket. Používá ji program setfdprm. Víc informací uvádí manuálová stránka programu setfdprm.
/etc/fstab Seznamy souborových systémů připojovaných automaticky při startu příkazem mount .a (skriptem /etc/rc, nebo odpovídajícím souborem, jenž se spouští při startu systému). V systému Linux obsahuje rovněž informace o odkládacích oblastech "swap", které automaticky používá příkaz swapon .a. Podrobnější informace viz podkapitola 4.8.5 a manuálové stránky k příkazu mount.
/etc/group Soubor podobný souboru /etc/passwd, ale místo uživatelů popisuje pracovní skupiny. Podrobnější informace viz manuálová stránka pro soubor group.
/etc/inittab Konfigurační soubor procesu init.
/etc/issue Soubor obsahuje výstup programu getty, který se zobrazí před výzvou pro přihlášení uživatele. Obvykle obsahuje stručný popis systému nebo uvítací hlášku. Obsah určuje správce systému.
/etc/magic Konfigurační soubor programu file. Obsahuje popisy různých formátů souborů, podle kterých pak program file tyto typy rozpoznává. Více informací najdete v manuálových stránkách pro magic a file.
/etc/motd Tzv. "zpráva pro tento den" (angl. message of the day) - automatický výstup na terminál uživatele po úspěšném přihlášení do systému. Obsah volí správce systému. Často se využívá pro předávání informací (např. upozornění na plánovaná zastavení systému apod.) všem uživatelům systému.
/etc/mtab Seznam aktuálně připojených souborových systémů. Jeho obsah po zavedení systému a připojení určených souborových systémů prvotně nastavují inicializační skripty, v běžném provozu pak automaticky příkaz mount. Používá se v případech, kdy je potřeba zjistit, které souborové systémy jsou připojené, např. při zadání příkazu df.
/etc/shadow Soubor tzv. "stínových" přístupových hesel (shadow password) uživatelů v systémech, které mají nainstalovanou podporu systému stínových hesel. Kódovaná stínová hesla jsou z bezpečnostních důvodů přeneseny ze souboru /etc/passwd do souboru /etc/shadow, který může číst pouze superuživatel. Snižuje se tak pravděpodobnost odhalení některého z přístupových hesel při průniku do systému.
/etc/login.defs Konfigurační soubor příkazu login.
/etc/printcap Podobně jako u souboru /etc/termcap, až na to, že soubor je určený pro tiskárny. Odlišná je i jeho syntaxe.
/etc/profile, /etc/csh.login, /etc/csh.cshrc Soubory spouštěné při přihlášení uživatele nebo při startu systému interprety příkazů Bourne shell nebo C shell. Umožňují správci systému stanovit globální nastavení stejné pro všechny uživatele. Viz manuálové stránky k příslušným interpretům příkazů.
/etc/securetty Soubor identifikuje zabezpečené terminály, tedy terminály, ze kterých se může přihlašovat superuživatel. Typicky je v seznamu uvedena pouze virtuální konzola, takže je nemožné (nebo přinejmenším těžší) získat oprávnění superuživatele přihlášením se po modemu nebo ze sítě.
/etc/shells Soubor, jenž uvádí seznam důvěryhodných interpretů příkazů. Příkaz chsh umožňuje uživatelům změnit shell spustí při přihlášení, a to pouze na některý z interpretů uvedený v tomto souboru. Proces ftpd, jenž běží na hostitelském počítači a poskytuje služby FTP pro klientské počítače, rovněž kontroluje, zda je uživatelův příkazový interpret uveden v tomto souboru a nedovolí připojit se klientům, jejichž shell v tomto seznamu uveden není.
/etc/termcap Databáze vlastností terminálu. Popisuje, kterými "escape" sekvencemi se řídí různé typy terminálů. Každý program je napsaný tak, že místo přímého výstupu "escape" sekvence, jež by fungovala pouze s konkrétním typem terminálu, hledá v tabulce /etc/termcap sekvenci, která odpovídá tomu, co chce program na terminálu zobrazit. Pak může většina programů správně obsluhovat většinu typů terminálů. Více informací uvádí manuálové stránky pro termcap, curs-termcap a terminfo.

3.2.2 Adresář /dev

    Adresář /dev obsahuje speciální soubory pro všechna zařízení. Speciální soubory jsou pojmenované podle určitých konvencí. Ty jsou podrobně popsán v "Seznamu zařízení operačního systému Linux" (viz [Anv]). Speciální soubory se vytváří v průběhu instalace operačního systému, v běžném provozu pak skriptem /dev/MAKEDEV. Podobný je skript /dev/MAKEDEV.local. Ten upravuje a používá správce systému, když vytváří čistě lokální speciální soubory a linky. Lokální speciální soubory jsou ty, které nejsou vytvořené standardním postupem pomocí skriptu MAKEDEV, typicky například speciální soubory pro některé nestandardní ovladače zařízení.

3.3 Souborový systém /usr

    Souborový systém /usr je často dost velký, protože jsou v něm instalované všechny programy. Všechny soubory v systému /usr jsou obvykle instalované přímo z distribuce systému Linux. Všechny další lokálně instalované programy se ukládají do adresáře /usr/local. To umožňuje správci systému instalovat vyšší verze Linuxu z nové verze distribuce nebo i úplně jiné distribuce operačního systému bez toho, že by bylo potřeba současně instalovat všechny programy znovu. Některé z podadresářů adresáře /usr jsou popsané níže, ty méně významné neuvádíme. Více informací přináší popis standardu FSSTND.

/usr/X11R6 Všechny soubory systému X Window. Soubory pro X nejsou integrální součástí operačního systému z důvodů zjednodušení vývoje a instalace X. Adresářová struktura /usr/X11R6 je podobná stromu, který je vytvořený pod adresářem /usr samotným.
/usr/X386 Podobně jako u předchozího adresáře /usr/X11R6, ale pro systém X11 Release 5.
/usr/bin Zde se nachází téměř všechny uživatelské příkazy. Některé další příkazy jsou uložené v adresáři /bin nebo /usr/local/bin.
/usr/sbin Obsahuje ty příkazy pro správu systému, které nejsou potřeba přímo v souborovém systému "root" (zde je například uložená převážná většina serverových programů).
/usr/man, /usr/info, /usr/doc Manuálové stránky, informační dokumenty o projektu GNU, případně různé jiné soubory s dokumentací.
/usr/include Hlavičkové soubory pro programovací jazyk C. Z důvodů zachování konzistence by měly být spíš v adresáři /usr/lib, ale z historických důvodů jsou umístěné ve zvláštním adresáři.
/usr/lib Datové soubory pro programy a subsystémy, které se nemění. Jsou zde rovněž uloženy některé globální konfigurační soubory. Jméno lib je odvozeno od anglického slova "library" (knihovna). Původně totiž byly v adresáři /usr/lib uloženy knihovny podprogramů.
/usr/local Místo pro lokálně instalovaný software a další soubory

3.4 Souborový systém /var

Systém /var obsahuje data, která se při běžném provozu systému mění. Soubory jsou specifické pro každý systém, a proto se data mezi jinými počítači v síti nesdílí.

/var/catman Vyrovnávací paměť pro manuálové stránky, které jsou formátované na požádání. Zdroje pro tyto manuálové stránky jsou obvykle uložené v adresáři /usr/man/man*. Manuálové stránky v předem formátované verzi jsou uložené v adresáři /usr/man/cat*. Manuálové stránky je běžně třeba při prvním prohlížení formátovat. Formátované verze jsou pak uložené právě v adresáři /var/catman. Další uživatel, který si chce stejné stránky prohlížet, tak nemusí čekat na jejich opakované formátování. (Soubory v uvedeném adresáři /var/catman je obvykle potřeba mazat, stejně jako dočasné soubory v adresářích /tmp a /var/tmp.) /var/lib Soubory, které se při normálním provozu systému mění. /var/local Měnící se data pro programy instalované v adresáři /usr/local (tj. programy instalované správcem systému). Upozorňujeme, že lokálně instalované programy by měly používat i ostatní podadresáře nadřazeného adresáře /var, např. /var/lock.
/var/lock Soubory tzv. zámků. Většina programů dodržuje určitou konvenci a vytváří v adresáři /var/lock zámky. Tím dávají ostatním programům najevo, že dočasně využívají některé zařízení nebo soubor. Jiné programy, které by chtěly stejné zařízení či soubor ve stejném okamžiku používat, se o to nebudou pokoušet.
/var/log Adresář obsahuje tzv. log-soubory různých programů. Například program login zaznamenává (do souboru /var/log/wtmp) všechna přihlášení a odhlášení uživatelů systému, program syslog ukládá (do souboru /var/log/messages) všechny hlášky jádra systému a systémových programů. Velikost souborů v adresáři /var/log dost často nekontrolovaně roste. Proto se musí v pravidelných intervalech mazat.
/var/run Adresář, do něhož se ukládají soubory obsahující informace o systému, jež platí až do jeho dalšího zavedení. Tak například soubor /var/run/utmp obsahuje informace o současně přihlášených uživatelích systému. /var/spool Adresáře pro elektronickou poštu, systém "news", tiskové fronty a další subsystémy, které využívají metodu "spool" a princip řazení úloh do fronty. Každý z těchto subsystémů má v tomto adresáři svůj vlastní podadresář, např. poštovní schránky uživatelů jsou uložené v podadresáři /var/spool/mail.
/var/tmp Do adresáře /var/tmp se ukládají velké dočasné soubory a dočasné soubory, které budou existovat déle než ty, které se ukládají do adresáře /tmp. (Avšak správce systému by měl dbát na to, aby stejně jako v adresáři /tmp, ani v adresáři /var/tmp nebyly uloženy velmi staré dočasné soubory.)

3.5 Souborový systém /proc

    Systém souborů /proc je vlastně imaginárním Souborovým systémem. Ve skutečnosti na disku neexistuje. Místo toho jej v paměti vytváří jádro systému. Ze systému souborů /proc lze získávat různé aktuální informace o systému (původně o procesech - z toho je odvozeno jeho jméno). Některé z významnějších souborů a adresářů popisujeme níže. Samotný souborový systém /proc je podrobněji popsán na manuálové stránce proc.

/proc/1 Adresář s informací o procesu číslo 1. Každý z procesů má v adresáři /proc vlastní podadresář, kterého jméno je stejné, jako identifikační číslo procesu.
/proc/cpuinfo Různé informace o procesoru. Například typ, výrobce model, atd.
/proc/devices Seznam ovladačů zařízení konfigurovaných pro aktuálně běžící jádro systému.
/proc/dma Informuje o tom, které kanály DMA jsou právě využívány.
/proc/filesystems Souborové systémy konfigurované v jádru systému.
/proc/interrupts Informuje o tom, která přerušení jsou využívána, i o historii žádostí o využití každého z nich.
/proc/ioports Informuje o tom, který z vstupně-výstupních portů se momentálně využívá.
/proc/kcore Obraz fyzické paměti systému. Má velikost odpovídající velikosti fyzické paměti systému. Ve skutečnosti ale samozřejmě nezabírá takovéto množství paměti, protože jde o soubor generovaný "na požádání", tedy pokaždé jenom v okamžiku, kdy k němu různé programy přistupují. Uvědomte si, že soubory souborového systému /proc nezabírají ve skutečnosti (než je zkopírujete na nějaké jiné místo na disku) vůbec žádný diskový prostor.
/proc/kmsg Výstupní hlášení jádra systému. Zde uložená hlášení využívá i program syslog.
/proc/ksyms Tabulka symbolů jádra systému.
/proc/loadavg Statistika zatížení systému - tři celkem nic neříkající indikátory toho, kolik práce systém momentálně má.
/proc/meminfo Informace o využití paměti, jak fyzické, tak virtuální (swap).
/proc/modules Informuje o tom, které moduly jádra jsou právě zavedeny v paměti.
/proc/net Informace o stavu síťových protokolů.
/proc/self Symbolický link do adresáře procesů toho programu, který zrovna přistupuje k souborovému systému /proc. Když k systému souborů /proc současně přistupují dva různé procesy, budou mít přidělené dva různé linky. Tímto způsobem se mohou programy pohodlně a jednoduše dostat k vlastnímu adresáři.
/proc/stat Různé statistiky týkající se systému. Např. počet chyb stránkování během zavádění systému a podobné.
/proc/uptime Informuje o tom, jak dlouho systém běží.
/proc/version Verze jádra systému.

     Většina výše popsaných souborů má textovou formu. Jsou tedy celkem dobře čitelné pomocí standardních nástrojů. Avšak velmi často jsou formátované takovým způsobem, že informace v nich obsažené jsou pro běžného uživatele na pohled dost těžce "stravitelné". Proto existuje mnoho příkazů, které - kromě toho, že čtou informace obsažené v souborech systému /proc, upravují jejich formát do srozumitelnější podoby. Tak například program free čte data ze souboru /proc/meminfo, převádí velikost v bajtech na kilobajty a přidá něco málo dalších informací o využití paměti.

Previous Content Next Up