Hierarchia katalogów w systemach unix-like
Materiał przygotowany z pomocą AI
Na pierwszy rzut oka korzeń systemu unixowego (/) wygląda jak zbiór trzyliterowych skrótów bez logiki. W rzeczywistości to dobrze przemyślany standard — Filesystem Hierarchy Standard (FHS) — który mówi, gdzie powinny leżeć programy, konfiguracja, dane użytkowników, logi i pliki tymczasowe. Dzięki niemu pakiety oprogramowania wiedzą, gdzie zainstalować pliki, a administrator wie, gdzie ich szukać. Wszystkie dystrybucje Linuksa i (w dużej mierze) macOS się go trzymają.
Ten artykuł pokazuje najważniejsze katalogi i wyjaśnia, do czego służą — żebyś po wpisaniu ls / nie patrzył w ścianę, tylko wiedział, którą furtkę otworzyć w danym zadaniu.
Korzeń (/) — widok ogólny
| Katalog | Zawartość |
|---|---|
/bin | podstawowe polecenia dla wszystkich użytkowników (ls, cp, bash) |
/sbin | podstawowe polecenia administracyjne (mount, fsck, iptables) |
/usr | drugorzędna hierarchia: zainstalowane oprogramowanie, biblioteki, dokumentacja |
/etc | pliki konfiguracyjne systemu i usług |
/var | dane zmienne — logi, kolejki, cache, bazy pakietów |
/home | katalogi domowe zwykłych użytkowników (na macOS: /Users) |
/root | katalog domowy użytkownika root |
/tmp | pliki tymczasowe — czyszczone przy restarcie (lub po krótkim czasie) |
/opt | opcjonalne, „samowystarczalne” pakiety zewnętrzne (np. /opt/google/chrome) |
/dev | pliki specjalne reprezentujące urządzenia (/dev/sda, /dev/null) |
/proc | wirtualny FS — informacje o procesach i jądrze (Linux) |
/sys | wirtualny FS — interfejs do jądra i urządzeń (Linux) |
/run | dane procesów uruchomionych po starcie (PID files, sockety) |
/boot | jądro, initramfs, konfiguracja bootloadera (GRUB) |
/lib, /lib64 | biblioteki systemowe niezbędne dla /bin i /sbin |
/mnt | „ręczne” punkty montowania (admin montuje tu dyski przy pracy) |
/media | automatyczne montowanie nośników (USB, CD/DVD) |
Najważniejsze katalogi w szczegółach
/bin i /sbin — niezbędne polecenia
/bin zawiera polecenia, które muszą być dostępne zawsze — także w trybie awaryjnym, zanim zamontowane zostaną pozostałe partycje. Stąd są tu ls, cp, mv, cat, bash. Programy w /sbin są analogiczne, ale przeznaczone dla administratora (shutdown, mount, fsck).
W nowoczesnych dystrybucjach /bin i /sbin są symlinkami do /usr/bin i /usr/sbin (tzw. usrmerge) — tradycyjny podział historyczny przestał mieć znaczenie praktyczne.
/usr — drugorzędna hierarchia
/usr zawiera całą resztę zainstalowanego oprogramowania. Sam w sobie jest mini-systemem:
| Podkatalog | Zawartość |
|---|---|
/usr/bin | większość poleceń użytkownika (python3, git, vim) |
/usr/sbin | dodatkowe narzędzia administracyjne |
/usr/lib | biblioteki dla programów z /usr/bin |
/usr/local | oprogramowanie zainstalowane ręcznie/lokalnie (osobna hierarchia: /usr/local/bin, /usr/local/lib…) |
/usr/share | dane niezależne od architektury — ikony, dokumentacja, lokalizacje |
/usr/include | nagłówki C/C++ dla developerów |
/usr/localto twoja domenaCokolwiek instalujesz spoza menedżera pakietów (kompilując ze źródeł, kopiując ręcznie), powinno trafić do
/usr/local. Dzięki temu nie wchodzi w konflikt z plikami zarządzanymi przezapt/dnf. Na Linuksie z procesorem Intel Homebrew (jeśli używasz) także instaluje do/usr/local.
/etc — konfiguracja
Pliki konfiguracyjne systemu i usług, prawie zawsze zwykłe pliki tekstowe — to pierwsze miejsce, gdzie zaglądasz, kiedy coś trzeba dostroić.
| Plik / katalog | Co zawiera |
|---|---|
/etc/hostname | nazwa hosta |
/etc/hosts | lokalne mapowanie nazw na adresy IP |
/etc/passwd, /etc/group | użytkownicy i grupy |
/etc/fstab | trwałe punkty montowania (co montuje się przy starcie) |
/etc/ssh/sshd_config | konfiguracja serwera SSH |
/etc/nginx/ | konfiguracja nginx |
/etc/systemd/system/ | własne unity systemd |
/etc/cron.d/, /etc/crontab | systemowe zadania cron |
/etc/profile, /etc/bash.bashrc | globalna konfiguracja powłoki |
/etcto tylko pliki tekstoweW przeciwieństwie do rejestru Windowsa, cała konfiguracja w unixach to zwykłe pliki, które można czytać i edytować dowolnym edytorem. To olbrzymia zaleta — backup polega na skopiowaniu katalogu, a różnice między hostami wykrywa
diff.
/var — dane zmienne
Pliki, które rosną i zmieniają się w czasie pracy systemu — odróżniane od stałego oprogramowania w /usr.
| Podkatalog | Zawartość |
|---|---|
/var/log/ | logi systemu i usług — najważniejszy katalog do diagnostyki |
/var/lib/ | trwałe dane usług (bazy pakietów, dane PostgreSQL/MySQL) |
/var/cache/ | cache aplikacji — można usunąć, system odbuduje |
/var/spool/ | kolejki (poczta, drukarka, cron przed wykonaniem) |
/var/tmp/ | pliki tymczasowe przeżywające restart (w odróżnieniu od /tmp) |
/var/www/ | typowo katalog plików serwowanych przez nginx/Apache |
Najczęściej zaglądasz do /var/log/:
sudo tail -f /var/log/syslog # Debian/Ubuntu - ogólny log systemu
sudo tail -f /var/log/auth.log # logowania, sudo, SSH
sudo tail -f /var/log/nginx/error.log # błędy nginx/home — pliki użytkownika
Każdy zwykły użytkownik ma podkatalog z własną nazwą — /home/piotr/, /home/anna/. To jedyny katalog, w którym możesz pisać bez sudo. Wewnątrz znajdziesz ukryte pliki (zaczynające się od kropki — dotfiles), w których aplikacje trzymają swoje per-user ustawienia:
| Plik / katalog | Co zawiera |
|---|---|
~/.bashrc, ~/.zshrc | konfiguracja powłoki |
~/.ssh/ | klucze SSH, lista znanych hostów (known_hosts) |
~/.config/ | konfiguracja programów (XDG Base Directory) |
~/.local/bin/ | osobiste skrypty wykonywalne (warto dodać do PATH) |
~/.local/share/ | dane aplikacji per-user |
~/.cache/ | per-user cache |
~to skrót do/home/twojanazwaPowłoka rozwija
~do twojego katalogu domowego, a~userdo katalogu konkretnego użytkownika.cd ~(lub samocd) zawsze zabierze cię „do siebie”.
/tmp — pliki tymczasowe
Wspólny śmietnik dla wszystkich procesów. Zwykle czyszczony przy restarcie albo po określonym czasie (np. przez systemd-tmpfiles). Wszystko, co tu zapiszesz, traktuj jako ulotne — nie składuj tu niczego, co warto zatrzymać.
/var/tmp to wariant „przeżywający restart” — przydatny dla długich operacji (build, packaging) między sesjami.
/opt — pakiety zewnętrzne
Miejsce dla oprogramowania, które instaluje się jako jeden, samowystarczalny pakiet — często komercyjnego lub spakowanego inaczej niż apt/dnf. Każdy pakiet ma własny podkatalog z własnym układem (np. /opt/google/chrome/, /opt/zoom/).
Katalogi specjalne (Linux)
To wirtualne systemy plików — nie zajmują miejsca na dysku, treść generowana jest przez jądro w locie.
/proc — informacje o procesach
cat /proc/cpuinfo # informacje o procesorze
cat /proc/meminfo # informacje o pamięci
cat /proc/uptime # czas pracy systemu
ls /proc/$$/ # info o bieżącej powłoce ($$ = PID)Każdy proces ma swój katalog /proc/PID/ z plikami opisującymi jego stan, otwarte deskryptory, środowisko, mapowanie pamięci.
/sys — interfejs do jądra
Konfiguracja i statystyki sterowników, urządzeń, parametrów jądra:
cat /sys/class/thermal/thermal_zone0/temp # temperatura CPU (w mili-stopniach)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward # włącz forwarding pakietów/dev — urządzenia jako pliki
Cała koncepcja unixowa: wszystko jest plikiem, w tym urządzenia.
| Plik | Co reprezentuje |
|---|---|
/dev/sda, /dev/nvme0n1 | dyski twarde / SSD |
/dev/sda1 | pierwsza partycja na dysku sda |
/dev/null | „kosz” — wszystko, co tam zapiszesz, znika |
/dev/zero | nieskończone strumień bajtów \0 |
/dev/random, /dev/urandom | generatory liczb losowych |
/dev/tty | bieżący terminal użytkownika |
macOS — różnice
macOS bazuje na BSD i większość katalogów jest taka sama, ale ma kilka swoich.
| Katalog | Co zawiera |
|---|---|
/Users/ | katalogi domowe (zamiast /home/) |
/Applications/ | aplikacje GUI zainstalowane przez użytkownika |
/System/ | system operacyjny — chroniony przez SIP, tylko do odczytu |
/Library/ | systemowa biblioteka (czcionki, preferencje, LaunchAgents/Daemons) |
~/Library/ | per-user wariant /Library (preferencje, cache aplikacji GUI) |
/Volumes/ | zamontowane wolumeny (dyski zewnętrzne, obrazy DMG) |
/private/ | właściwa lokalizacja /etc, /var, /tmp — pozostałe to symlinki |
Czego nie ma na macOS: /proc, /sys, /home (zamiast tego /Users), /boot (Apple zarządza rozruchem inaczej).
SIP chroni
/Systemi/usr(poza/usr/local)System Integrity Protection blokuje zapis do większości katalogów systemowych — także rootowi. Twoje miejsce na własne instalacje to
/usr/local(lub/opt/homebrewprzy Apple Silicon).
Gdzie szukać typowych plików — szybka ściąga
| Szukasz… | Sprawdź |
|---|---|
| logi systemu | /var/log/syslog, journalctl (systemd) |
| logi nginx | /var/log/nginx/access.log, error.log |
| konfiguracja SSH | /etc/ssh/sshd_config (serwer), ~/.ssh/config (klient) |
| własne skrypty | ~/.local/bin/ lub /usr/local/bin/ |
| zadania cron | crontab -l (user), /etc/cron.d/ (system) |
| pliki uruchomieniowe usług | /etc/systemd/system/, /lib/systemd/system/ |
| pakiety zainstalowane przez apt | /usr/bin/, /usr/lib/ |
| pakiety zainstalowane przez Homebrew | /opt/homebrew/ (Apple Silicon) lub /usr/local/ (Intel) |
| pliki klucza SSH | ~/.ssh/id_ed25519, ~/.ssh/id_rsa |
| temp z bieżącej sesji | /tmp/ |
| temp przeżywający restart | /var/tmp/ |
Zobacz także
- IT — indeks narzędzi informatycznych
- Komendy terminala - Linux i macOS — nawigacja i operacje na plikach z terminala
- Git - podstawowe operacje — kontrola wersji
- Docker - podstawowe operacje — m.in. dane kontenerów w
/var/lib/docker - Filesystem Hierarchy Standard 3.0 — oficjalna specyfikacja FHS
man hier— dokumentacja hierarchii (man 7 hierw terminalu)- Apple File System Programming Guide — układ macOS