Struktura katalogów w systemach linux'owych (omówienie)
Rozdział I
Rozdział powstał na podstawie Standardu Systemu Plików Linuxa, FSSTND, wersji 1.2. Standaryzacja hierarchii katalogów ma na celu ułatwienie życia administratorom i programistom - łatwiej coś znaleźć jeżeli jest umieszczone w odpowiednim miejscu. Używanie standardu nie jest przez nikogo wymagane, jednak większość dystrybucji tworzona jest zgodnie z nim. FSSTND definiuje podobną hierarchię jak w innych systemach Unix.
Całe drzewo stworzone jest w sposób ułatwiający rozłożenie go na kilku dyskach, lub partycjach. Głównymi częściami są: katalog główny, /usr, /var, /home. Każda z części ma inne przeznaczenie. Niektóre z części mogą znajdować się w sieci, na urządzeniach wyłącznie odczytywalnych.
Części drzewa katalogów Unixa. Linie oznaczają limity partycji.
Poniżej znajduje się opis przeznaczenia danej części.
Główny system plików jest specyficzny dla każdej z maszyn (generalnie znajduje się na poszczególnych maszynach, choć może być montowany z sieci, itd.), zawiera pliki niezbędne do uruchomienia systemu i zamontowania innych systemów plików. Zawartość powinna być wystarczająca do uruchomienia systemu w trybie jednego użytkownika, naprawy pozostałych systemów plików oraz odtwarzania kopii zapasowych.
/usr zawiera wszelkie polecenia, biblioteki, strony podręcznika i inne niezmieniające się dane potrzebne podczas normalnej pracy. Pliki w /usr nie powinny być zależne od architektury komputera, nie powinny być zmieniane podczas pracy systemu. Umożliwia to dzielenie plików poprzez sieć, co może być okazać się bardzo ekonomiczne - oszczędza przestrzeń dyskową (katalog ten może zajmować kilkaset megabajtów) i łatwe do administracji (wystarczy uaktualnić/zainstalować program na jednym dysku) Nawet, jeżeli system plików znajduje się na lokalnym dysku może być montowany wyłącznie do odczytu - zmniejsza to szansę wystąpienia błędów po padzie systemu.
Katalog /var zawiera pliki, które zmieniają się, np. wszelkie kolejki (poczty, newsów, drukarek, etc. ), logi, sformatowane pliki podręcznika oraz pliki tymczasowe. Tradycyjnie wszystko co znajduje się w /var było umieszczane w /usr, jednak to uniemożliwia zamontowanie /usr wyłącznie do odczytu.
System plików /home zawiera katalogi domowe użytkowników - wszystkie ich dane. Odseparowanie danych użytkownika ułatwia ich archiwizację; najczęściej nie trzeba archiwizować pozostałych danych, lub można to robić rzadziej (nie są tak często zmieniane). Wielki /home może zostać podzielony na kilka dysków, możliwe jest to przez dodanie poziomu pośredniego, np. podziału /home/students, /home/staff; lub tworzenia katalogów związanych z pierwszą literą nazwy użytkownika a dopiero w nim katalogu domowego.
Wszystkie te części mogą znajdować się fizycznie na jednym systemie plików. Jeżeli jest to komputer domowy nie ma potrzeby stosować takiego podziału, jednak w większych systemach uniknięcie go jest niemożliwe. Ważne jest aby wszystkie te nazwy działały; np. powiedzmy, że /var i /usr są aktualnie na tej samej partycji, ścieżka /usr/lib/libc.A i /var/log/messages musi działać, w tym przykładzie możnaby przenieść /var do /usr/var i utworzyć odpowiednie łącze symboliczne - /var -> /usr/var.
Hierarchia katalogów w Uniksie grupuje pliki odpowiednio do ich przeznaczenia - wszystkie polecenia są w jednym miejscu, dane w innym, itd. Alternatywnie możnaby tworzyć katalogi dla poszczególnych programów. Drugie podejście ma kilka wad - trudno dzielić pliki (programy często zawierają części statyczne i wykonywalne), znalezienie programu może stać się trudne (np. zmuszenie programu man do zaglądania w odpowiednich katalogach może stać się koszmarem).
Rozdział II - Główny system plików
Generalnie główny system plików powinien być mały - zawiera krytyczne dane, a mały, rzadko zmieniany system ma większe szanse przetrwania. Zniszczenie tego systemu plików najczęściej oznacza, że systemu nie można uruchomić - trzeba posłużyć się dyskietką lub innym dodatkowym medium.
Główny katalog nie powinien zawierać żadnych plików, oprócz jądra (chociaż powinno się je umieszczać w /boot). Wszelkie inne pliki powinny znajdować się w odpowiednich katalogach:
/bin
Polecenia potrzebne do uruchomienia systemu, pracy w trybie jednego użytkownika.
/sbin
Podobnie jak /bin, przy czym polecenia te nie są przeznaczone dla zwykłych użytkowników.
/etc
Pliki konfiguracyjne specyficzne dla danego komputera.
/root
Katalog domowy użytkownika root.
/lib
Biblioteki dzielone wymagane przez programy znajdujące się na głównym systemie plików.
/lib/modules
Ładowalne modułu jądra, te wymagane do startu systemu i pracy po padzie systemu (sterowniki sieciowe, itd. ) .
/dev
Pliki urządzeń.
/tmp
Pliki tymczasowe. Programy działające po starcie systemu powinny używać katalog /var/tmp, nie /tmp, ponieważ zapewne jest na nim więcej miejsca.
/boot
Pliki używane przez program bootujący (np. LILO) Często zawiera obraz jądra. Powinien znajdować się poniżej 1024 cylindra dysku IDE.
/mnt
Punkt tymczasowego montowania systemu plików. Nie powinno się montować żadnego systemu plików automatycznie w tym katalogu. /mnt może zawierać podkatalogi (np.: /mnt/dosa może oznaczać dyskietkę DOS-a, /mnt/exta dyskietkę z systemem plików ext2).
/proc, /usr, /var, /home
Rozdział III - Katalog /etc
Katalog /etc zawiera mnóstwo plików. Niektóre z nich są opisane poniżej. Odnośnie innych - trzeba sprawdzić jaki program używa danego pliku, po czym przeczytać dokumentację od danego programu, istnieją również strony dotyczące plików. Wiele plików konfigurujących sieć znajduje się w /etc.
/etc/rc, lub /etc/rc.d, lub /etc/rc?.d
Skrypty, lub katalogi zawierające skrypty uruchamiane podczas startu systemu i zmiany poziomu pracy.
/etc/passwd
Baza użytkowników zawierająca: nazwę, prawdziwą nazwę, katalog domowy, zakodowane hasło i inne informacje dla każdego z użytkowników systemu.
/etc/fdprm
Tabela parametrów pracy stacji dyskietek. Opisuje wzory poszczególnych formatów dyskietek. Używana przez setfdprm.
/etc/fstab
Lista systemów plików montowanych automatycznie za pomocą mount -a (wywoływanego w /etc/rc lub inny skrypt startowy ). Pod Linuxem zawiera informacje o swapie używanym automatycznie po poleceniu swapon -a.
/etc/group
Plik podobny do /etc/passwd, zawiera opis grup.
/etc/inittab
Plik konfigurujący pracę programu init.
/etc/issue
Wyświetlany przez getty przed pytaniem o login. Zazwyczaj zawiera krótką informację, lub powitanie. Zawartość zależy od upodobań administratora.
/etc/magic
Plik konfiguracyjny dla programu file. Zawiera opisy różnych formatów plików, na podstawie których file zgaduje typ pliku.
/etc/motd
Wiadomość dnia, automatycznie wyświetlana po udany logowaniu. Zawartość zależy od upodobań administratora. Często używany aby przekazać wiadomość wszystkim użytkownikom.
/etc/mtab
Lista aktualnie zamontowanych systemów plików. Inicjowana przez skrypty startowe i uaktualniana automatycznie przez program mount. Używana gdy potrzeba listy aktualnie zamontowanych systemów plików.
/etc/shadow
Plik haseł na niektórych systemach - często hasła są przeniesione z pliku /etc/passwd do /etc/shadow; drugi plik, odmiennie od pierwszego, jest odczytywalny tylko przez roota. Utrudnia to próbę brutalnego łamania haseł.
/etc/login.defs
Plik konfiguracyjny programu login.
/etc/printcap
Podobny do /etc/termcap, zawiera informacje na temat drukarek. Odmienna składnia.
/etc/profile, /etc/csh.login, /etc/csh.cshrc
pliki wykonywane w czasie ładowania odpowiednio: powłoki Bourne'a i C. Dzięki nim administrator może tworzyć domyślne, globalne ustawienia dla wszystkich użytkowników.
/etc/securetty
Zawiera listę bezpiecznych terminali - terminali, przez które może się zalogować root. Najczęściej zawiera listę kilku wirtualnych terminali, utrudniając zdobycie praw roota przez sieć, lub terminal na porcie szeregowym. Najlepiej usunąć wszystkie wpisy - uniemożliwia to bezpośrednie zalogowanie się roota w trybie wielu użytkowników - należy zalogować się jako zwykły użytkownik, a później użyć polecenia su.
/etc/shells
Lista zaufanych powłok. Polecenie chsh umożliwia użytkownikom zmianę powłoki logowania wyłącznie na jedną z zawartych w pliku. Niektóre demony FTP uniemożliwiają zalogowanie się użytkownika, który nie posiada prawidłowej powłoki.
/etc/termcap
Baza możliwości terminala. Opisuje sekwencje escape'owe, którymi można kontrolować terminal. Programy nie wyświetlają znaków bezpośrednio (trzebaby było wbudować im całą bazę danych, lub używać odpowiedniego terminala), w zamian tego posługują się podanymi w tym pliku sekwencjami sterowania, dzięki temu mogą pracować na dowolnym terminalu a dodanie nowego jest proste. Zobacz strony podręcznika: termcap, curs_termcap, terminfo.
Rozdział IV - Katalog /dev
Katalog /dev zawiera pliki specjalne, które odpowiadają wszystkim urządzeniom. Nazwy plików tworzone są według specjalnej konwencji. Pliki urządzeń tworzone są podczas instalacji, póżniej można je utworzyć za pomocą /dev/MAKEDEV, lub programu mknod. Skrypt /dev/MAKEDEV.local jest tworzony przez administratora w celu utworzenia urządzeń używanych lokalnie. (tych, które nie zawartych w skrypcie MAKEDEV, np. dla niestandardowych urządzeń).
Rozdział V - System plików /usr
System plików /usr jest zazwyczaj duży - większość programów znajduje się w jego podkatalogach. Zazwyczaj wszystkie pliki w katalogu /usr przyszły wraz z daną dystrybucją, programy instalowane ręcznie, z innych pakietów powinny być umieszczane w /usr/local. Dzięki temu po aktualizacji, zmianie systemu nie musimy instalować (a przed tym np. ściągać z sieci) dodatkowych programów. Niektóre z podkatalogów /usr opisane są poniżej.
/usr/X11R6
X Window System, wszystkie pliki. Aby uprościć tworzenie i instalację systemu X, wszelkie pliki umieszczane są w osobnym katalogu. W /usr/X11R6 istnieje hierarchia podkatalogów podobna do zawartości /usr.
/usr/X386
To samo co /usr/X11R6, tylko dla wersji "X11 Release 5".
/usr/bin
Prawie wszystkie polecenia użytkownika. Niektóre polecenia znajdują się w /bin i /usr/local/bin.
/usr/sbin
Programy administratora, które nie muszą znajdować się na głównym systemie plików, np. większość serwerów.
/usr/man, /usr/info, /usr/doc
Odpowiednio: strony podręcznika, dokumenty GNU Info i dokumentacja w innych formatach.
/usr/include
Pliki nagłowkowe dla języka C. Aktualnie powinny być w /usr/lib, jednak tradycja jest silniejsza.
/usr/lib
Niezmieniające się dane, zależne od architektury, niekiedy pliki konfiguracyjne programów. Nazwa lib pochodzi od "library" (biblioteka); oryginalnie biblioteki programistyczne były przechowywane w /usr/lib.
/usr/local
Miejsce składowania oprogramowania (i konfiguracji) zainstalowanego niezależnie od dystrybucji.
Rozdział VI - System plików /var
/var zawiera zmieniające się dane. Zawartość jest specyficzna dla danego systemu, nie powinna być dzielona między różnymi komputerami.
/var/catman
Sformatowane strony. Źródło strony podręcznika jest zazwyczaj przechowywane w /usr/man/man*; niektóre strony rozprowadzane są w wersji preformatowanej, są one przechowywane w /usr/man/cat*. Inne strony podręcznika muszą zostać sformatowane przed wyświetleniem; przetworzone wersje, w celu przyśpieszenia późniejszych odwołań, zapisywane są na dysku. (/var/catman jest często czyszczony wraz z katalogami zawierającymi pliki tymczasowe.)
/var/lib
Zmieniające się podczas pracy systemu pliki.
/var/local
Zmieniające się dane programów zainstalowanych w /usr/local. Nawet lokalnie zainstalowane programy powinny się odwoływać do /var.
/var/lock
Blokady. Wiele programów przestrzega zasadę tworzenia pliku w /var/lock aby wskazać swoje działanie. Inne programy sprawdzają plik i odpowiednio działają (np. wstrzymują się z odwoływaniem do danego urządzenia).
/var/log
Logi różnych programów, baza programu login (/var/log/wtmp, który zawiera informacje o wylogowywaniu się użytkowników) oraz log demona syslog (/var/log/messages, w nim zapisywane są wszystkie informacje jądra i innych programów). Zapomniane pliki w /var/log mogą często znacząco przybrać na rozmiarze -powinno się w regularnych odstępach czasu usuwać stare wersje.
/var/run
Pliki, które zawierają informacje o systemie, które są aktualne podczas jego działania. Dla przykładu: /var/run/utmp zawiera listę użytkowników aktualnie zalogowanych.
/var/spool
Katalog zawierający kolejki: poczty, drukowania i inne. Każda kolejka posiada własny podkatalog wewnątrz /var/spool, np. często poczta przechowywana jest w katalogu /var/spool/mail (nie jest to zalecane).
/var/tmp
Tymczasowe pliki które są duże, lub mają istnieć przez dłuższy czas niż byłoby to możliwe w katalogu /tmp (aczkolwiek administrator może usuwać znacząco stare pliki).
Rozdział VII - System plików /proc
System plików /proc jest całkowicie wirtualny - nie istnieje na dysku. Jest tworzony i utrzymywany przez jądro w pamięci. Używany jest w celu dostarczenia informacji o systemie (oryginalnie o działających procesach, stąd nazwa). Ważniejsze pozycje omówione są poniżej. System plików /proc posiada własną stronę podręcznika.
/proc/1
Katalog zawierający informacje o procesie numer 1 (init ma zawsze ten numer). Każdy proces posiada własny podkatalog o nazwie przedstawiającej identyfikator procesu.
/proc/cpuinfo
Informacje o procesorze: model, wydajność, itp.
/proc/devices
Lista sterowników urządzeń, które są aktualnie skonfigurowane i działające.
/proc/dma
Aktualnie używane kanały DMA.
/proc/filesystems
Systemy plików aktualnie skonfigurowane.
/proc/interrupts
Lista przerwań aktualnie wykorzystywanych, oraz ilość przerwań, które zostały kiedykolwiek obsłużone.
/proc/ioports
Używane porty We/Wy.
/proc/kcore
Obraz fizycznej pamięci systemu. Posiada rozmiar równy rozmiarowi zainstalowanej pamięci, jednak na dysku nie zajmuje ani bajta. (Uwaga: wpisy w katalogu /proc nie zajmują miejsca, chyba że je skopiujesz w inne miejsce).
/proc/kmsg
Wiadomości wysyłane przez jądro. Są one również przesyłane do sysloga.
/proc/ksyms
Tablica symboli jądra.
/proc/loadavg
`średnie obciążenie' systemu; trzy nic nieznaczące liczby wskazujące ilość aktualnie wykonywanej pracy.
/proc/meminfo
Informacje o wykorzystaniu pamięci fizycznej i swapu.
/proc/modules
Aktualnie załadowane moduły.
/proc/net
Informacje o protokołach sieciowych.
/proc/self
Łącze symboliczne do katalogu procesu, który czyta /proc. Dla dwóch procesów czytających /proc wskazania odnośników są inne.
/proc/stat
Statystyki systemu, np. ilość błędów stron od czasu startu, itd.
/proc/uptime
Okres pracy systemu.
/proc/version
Wersja jądra.
Patrycja Łukaszek
Kl. II a SI
10