Po lekturze tego rozdziału będziesz w stanie swobodnie nawigować po systemie plików Linuksa. Zrozumiesz, gdzie system przechowuje pliki konfiguracyjne, gdzie znajdują się dane użytkowników, a gdzie podłączone są urządzenia.
2.1. Jedno drzewo, by rządzić wszystkim (Standard FHS)
Jak dowiedziałeś się w poprzednim rozdziale, Linux nie używa liter dysków (takich jak C: czy D: w systemie Windows). Zamiast tego wszystkie pliki, programy, a nawet fizyczne dyski i pendrive'y są umieszczone w jednej, wielkiej, hierarchicznej strukturze przypominającej odwrócone drzewo.
Zasady, według których organizowane są te katalogi, noszą nazwę FHS (ang. Filesystem Hierarchy Standard). Dzięki temu standardowi, niezależnie od tego, czy używasz Debiana, Ubuntu czy Fedory, zawsze wiesz, gdzie szukać najważniejszych elementów systemu.
Na samym szczycie (a raczej u korzenia) tego drzewa znajduje się katalog główny, oznaczany pojedynczym znakiem ukośnika: / (ang. root directory). Każdy inny plik lub folder w systemie znajduje się wewnątrz tego katalogu.
Uproszczony schemat drzewa katalogów:
/ (katalog główny)
├── bin/
├── boot/
├── dev/
├── etc/
├── home/
│ ├── jan/
│ └── anna/
├── root/
├── sbin/
└── var/
2.2. Najważniejsze katalogi systemowe
Dla przyszłego administratora i osoby zdającej egzamin INF.02 znajomość poniższych lokalizacji jest absolutnie obowiązkowa. Często polecenia egzaminacyjne wymagają edycji pliku bez podawania jego dokładnej lokalizacji - zakłada się, że znasz ją na pamięć.
Strefa Użytkowników
/home- Katalogi domowe użytkowników. To tutaj znajdują się osobiste pliki, dokumenty i ustawienia zwykłych użytkowników. Jeśli stworzysz użytkownika o nazwiejan, jego pliki znajdą się w/home/jan. Użytkownicy mają pełne prawa tylko do swoich katalogów domowych./root- Katalog domowy administratora (superużytkownika).
UWAGA: Klasyczną pułapką jest mylenie katalogu głównego systemu
/(czytanego jako "root") z katalogiem domowym administratora/root. To dwa zupełnie różne miejsca!
Strefa Konfiguracji
/etc- (czyt. et cetera) Serce administracyjne systemu. Znajdują się tu wyłącznie tekstowe pliki konfiguracyjne całego systemu i zainstalowanych programów. To w tym katalogu ukryte są bazy użytkowników, haseł, grup, czy konfiguracja kart sieciowych. Nigdy nie znajdziesz tu plików wykonywalnych (programów).
Strefa Urządzeń
/dev- (ang. devices) Katalog urządzeń. Pamiętasz zasadę "wszystko jest plikiem"? Tutaj ona w pełni ożywa. Każdy podłączony dysk twardy (np./dev/sda), partycja czy pendrive pojawia się tutaj jako plik specjalny.
Strefa Danych Zmiennych
/var- (ang. variable) Dane zmienne. Miejsce na pliki, których rozmiar i zawartość nieustannie się zmieniają w trakcie pracy systemu. To tutaj zapisywane są logi (dzienniki zdarzeń) systemu w podkatalogu/var/log, maile, kolejki wydruku, a także często pliki stron internetowych (/var/www).
Strefa Montowania (Dostęp do nośników)
/mntoraz/media- Punkty montowania. Gdy podłączasz pendrive'a lub dodatkowy dysk, system (lub Ty sam, ręcznie) musi go "podpiąć" do drzewa katalogów, byś mógł przeglądać jego zawartość. Te dwa katalogi służą właśnie jako miejsca, w których zawartość nośników zewnętrznych staje się widoczna.
Strefa Oprogramowania i Systemu
/binoraz/usr/bin- (ang. binaries) Zwykłe programy i podstawowe polecenia dostępne dla wszystkich użytkowników (np.ls,cp,ping)./sbin- (ang. system binaries) Polecenia administracyjne, przeznaczone głównie dla kontaroot(np. programy do partycjonowania dysków czy zarządzania siecią)./boot- Pliki niezbędne do uruchomienia systemu, w tym samo skompilowane jądro systemu (Linux) oraz program rozruchowy (np. GRUB)./tmp- (ang. temporary) Pliki tymczasowe tworzone przez działające programy. Zawartość tego katalogu jest automatycznie usuwana przy ponownym uruchomieniu komputera.
2.3. Ścieżki bezwzględne i względne
Znajomość struktury to jedno, ale umiejętność poprawnego wskazania lokalizacji to klucz do rozwiązywania zadań. W Linuksie mamy dwa sposoby na określenie "adresu" pliku.
Ścieżka bezwzględna (absolutna)
To dokładny, pełny adres pliku, który zawsze zaczyna się od katalogu głównego /.
Działa jak pełen adres pocztowy (Kraj, Miasto, Ulica, Numer). Niezależnie od tego, w jakim miejscu systemu aktualnie się znajdujesz, ścieżka bezwzględna zaprowadzi Cię dokładnie w to samo miejsce.
- Przykład:
/etc/network/interfaces - Przykład:
/home/anna/dokumenty/raport.txt
Ścieżka względna
To adres określony względem Twojego aktualnego położenia w systemie. Nigdy nie zaczyna się od znaku /.
Działa jak wskazówki drogowe typu "skręć w lewo na najbliższym skrzyżowaniu". To, gdzie dojdziesz, zależy od tego, skąd wyruszasz.
- Przykład:
dokumenty/raport.txt(zadziała tylko wtedy, gdy jesteś już w katalogu/home/anna).
Katalogi specjalne w ścieżkach względnych:
Aby ułatwić nawigację względną, system operuje dwoma specjalnymi znakami:
.(pojedyncza kropka) oznacza obecny katalog...(dwie kropki) oznacza katalog nadrzędny (jeden poziom wyżej).
Przykład z życia administratora:
Wyobraź sobie, że znajdujesz się w katalogu /home/jan/muzyka.
Chcesz przejść do katalogu /home/jan/zdjecia.
- Używając ścieżki bezwzględnej napiszesz:
cd /home/jan/zdjecia - Używając ścieżki względnej napiszesz:
cd ../zdjecia(co system zinterpretuje jako "wyjdź jeden poziom wyżej do/home/jani wejdź do folderu zdjecia").
Tylda (~) – magiczny skrót do domu
Oprócz znaków . oraz .., powłoka systemowa (np. Bash) oferuje jeszcze jeden, niezwykle przydatny znak specjalny w nawigacji: ~ (tyldę).
Znak tyldy zawsze zastępuje ścieżkę bezwzględną do katalogu domowego aktualnie zalogowanego użytkownika. Niezależnie od tego, w jakim mrocznym i głębokim zakątku systemu (np. /var/log/apt/) się znajdujesz, tylda natychmiast odwołuje się do Twojego "domu".
- Przykład 1: Jeśli jesteś zalogowany jako użytkownik
jan, wpisanie poleceniacd ~przeniesie Cię od razu do/home/jan. - Przykład 2: Jeśli chcesz skopiować plik systemowy do swojego folderu z dokumentami, możesz użyć skrótu:
cp /etc/passwd ~/dokumenty/. System zinterpretuje to jakocp /etc/passwd /home/jan/dokumenty/.