Linux: Wszystko, co musisz wiedzieć o katalogach (folderach)

Z grubsza ogarniesz to w: 7 min


Autor: Marek Czuma

W tym materiale dowiesz się do czego służą poszczególne katalogi. Czym są symlinki i hardlinki. Co to jest katalog domowy, czym root i czym różni się od… roota;-). Kawka w dłoń i lecimy z tematem!

Podstawowe informacje o katalogach w Linux #

Czym jest plik, dobrze wiadomo. Zaskoczeniem natomiast może być fakt, że katalog (folder)… też jest plikiem. Tak! Linux traktuje wszystko jako pliki. Katalog jest co prawda dość specyficznym, jednak plikiem. Możemy normalnie przeczytać zawartość dowolnego katalogu.

Poniżej wklejam efekt polecenia “vi rdf” – a więc próba przeczytania w programie VI zawartości katalogu “rdf”:

Od razu widać w jaki sposób jest zbudowany ten plikoKatalog:-). Służy on po prostu jako pojemnik na nazwy innych plików, które się nim znajdują.

Cała struktura katalogów w Linuxie jest hierarchiczna, drzewiasta. Całość zaczyna się od katalogu głównego “/”. Nie myl tego z katalogiem domowym (o nim za chwilę)! Katalog “/” nazywany jest też rootem. Warto tu jednak także zaznaczyć, że “root” to również główny użytkownik systemu.

  • Aby przechodzić między katalogami, wybieramy polecenie cd ścieżka].
  • Aby sprawdzić aktualną ścieżkę, wpisujemy pwd.
  • by stworzyć nowy katalog, wybieramy opcję mkdir [ścieżka/nazwa]
  • Aby wyświetlić zawartość katalogu, wybieramy ls

To tyle z podstawowych informacj!

Najważniejsze informacje o katalogach w Linux #

Najważniejsze katalogi w systemie #

Linux wzorowany jest na systemach Unixowych. Oznacza to, że panuje tu pewien porządek w zakresie ról, jakie odgrywają konkretne katalogi. Warto nadmienić, że nie jest to bardzo ścisłe, ponieważ wiele zależy od administratora oraz konkretnych usług jakie są zainstalowane. Niemniej poniżej ogólne wskazania najważniejszych katalogów w systemie i powinny być z grubsza wspólne dla różnych dystrybucji Linuxa:

'/bin' – znajdziesz tutaj rozmaite narzędzia systemowe, np. ls, cp, mkdir czy rm. Jest ich cała masa – proste polecenie liczące pliki i foldery (ls | wc -l) naliczyło ich aż 1168:-).

'boot' – to katalog, który dostarcza tego co potrzebne, aby uruchomić system. Jest tam m.in. katalog grub, który jest programem uruchomieniowym.

'/dev' – specyficzny katalog, który posiada pliki urządzeń podłączonych do systemu (stąd jego nazwa – ‘/devices’). Tutaj znajdziesz swoje pendrive’y, dyski i inne. Sa tytaj także widrtualne urządzenia, z których najciekawsze to:

  • /dev/null – wirtualne urządzenie, które bezpowrotnie usuwa wszystkie dane, które do niego trafią
  • /dev/random – wirtualne urządzenie, które generuje dane losowe
  • /dev/zero – wirtualne urządzenie dostarczające przy próbie odczytu znaki o wartości 0 (NULL).

'/etc' – tutaj znajdują się pliki konfiguracyjne dla systemu i aplikacji (m.in. konfiguracja zamontowanych dysków). Poniżej kilka istotnych, ciekawych plików konfiguracyjnych:

  • /etc/passwd – konfiguracja kont użytkowników
  • /etc/shadow – konfiguracja haseł użytkowników.
  • /etc/motd – wiadomość wyświetlana użytkownikom po zalogowaniu w konsoli (skrót od “Message Of The Day”).
  • cron – seria katalogów, które dotyczą konfiguracji crona – bardzo przydatne, gdy chcemy budować uproszczone schedulowanie.
  • /etc/profile – niezwykle przydatny plik, w którym możemy skonfigurować zmienne które będą dostępne dla wszystkich użytkowników. Plik uruchamiany zaraz po zalogowaniu użytkownika.

'/home' – katalog domowy użytkowników. Kiedy logujesz się do Linuxa, trafiasz bezpośrednio właśnie do /home/twoja_nazwa_użytkownika (np /home/maro). To taki “mały domek” dla użytkowników, gdzie mogą trzymać swoje pliki i gdzie nikt inny nie ma dostępu.

Liby: '/lib', 'lib32', 'lib64', 'libx32' – katalogi ze wspólnymi bibliotekami. Wiele aplikacji ma wspólne biblioteki, więc są one umieszczane w jednym miejscu, aby zapobiegać duplikowaniu.

'/media' + '/mnt'– w obu przypadkach foldery służą jako miejsce do montowania urządzeń: pendrive’y, dyski twarde, napęd płyt czy dyskietek.

'/proc' – wirtualny katalog, który pozwala na komunikację z jądrem inuxa poprzez interfejs wirtualnego systemu plików. Jego zawartość jest generowana automatycznie i… no cóż, po prostu tego katalogu nie ruszaj;-)

'/root' – katalog domowy roota (czyli użytkownika o nazwie root;-)). Kiedy zalogujemy się na konto root, trafimy właśnie tutaj. Pełni identyczną rolę jak /home/nazwa_użytkownika.
Dlaczego więc nie jest pod katalogiem ‘/home’ a pod katalogiem głównym? Otóż, pod ‘/home’ często montowana jest oddzielna partycja – jeśli coś by się z nią stało, de facto nie mielibyśmy kontroli nad systemem.

'/sbin' – odpowiednik ‘/bin’, ale dla admina. Przechowuje on najważniejsze dla systemu operacyjnego pliki wykonywalne, preznaczone do użycia przez niego samego lub przez konto roota. Znajdziemy tu węc takie narzędzia jak ‘fdisk’ do zarządzania tablicą partycji, ‘fsck’ do sprawdzania i naprawy integralności partycji czy ‘iptables’ do zarządzania pakietami danych przychodzącymi przez sieć.

'/opt' – z zalożenia jest to miejsce, gdzie mieszczą się dodatkowe aplikacje. W rzeczywistości bardzo często jest on pusty.

'/tmp' – zdaje się, że tu sprawa jest jasna. Znajdują się w nim pliki tymczasowe. Tymczasowe, czyli często znikające wraz z restartem systemu.

'/usr' – katalog, który zawiera dane przeznaczone do odczytu przez użytkowników systemu, jak binarki czy biblioteki. Znajdziemy tutaj strukturę częściowo powieloną z katalogu głównego ‘/’.

'/usr/local' – bardzo często to tutaj lądują programy dodane później, niesystemowe.

'usr/scr' – tu znajdziemy kod źródłowy Linuxa

'/var' – repozytorium Linuxa, przeznaczone na dane zmienne. Przykladowo znajdziemy tu rozmaite logi, pliki strony www czy pliki bazy danych. Można tu trochę pomyszkować:-).

Ten sam katalog w wielu miejscach – symlinki i hardlinki #

Co, jeśli ten sam plik chcemy mieć w dwóch różnych miejscach? Oczywiście możemy go skopiować, ale w naszym przypadku (przypominam – jesteśmy na Akademii Big Data;-)) może to być bardzo zdradliwe. Dlatego jeśli chcemy mieć jeden identyczny plik w kilku miejscach – warto rozważyć odnośniki (linki). Powoduje to wskazanie na faktycznie istniejący plik, a nie kopiowanie go.

Zanim przejdziemy do rodzajów linków, powiedzmy sobie o jednej rzeczy. Linux przechowuje pliki w formie blocków oraz inodes. Oznacza to, że sam “plik” jest bardziej reprezentacją faktycznych danych, które są zapisane na partycjach.

I teraz: mamy dwa rodzaje linków:

  1. Linki symboliczne (symlinki), nazywane też “soft-linkami”. Oznaczają one odniesienie do pliku. W systemie wyglądają jak normalne pliki, ale jeśli na nich pracujemy – widzimy, że realnie pracujemy na plikach znajdujących się w innej lokalizacji.
  2. Twarde linki – “hard links”. Te nie odnoszą się do plików, ale faktycznych danych.

Powoduje to faktyczną różnicę w działaniu obu rodzajów. Jeśli plik zostanie przeniesiony do innej lokalizacji czy usunięty – linki symboliczne przestaną funkcjonować. To znaczy będą dalej obecne w swojej lokalizacji, ale będą wskazywały w próżnię. Przeciwnie jest w przypadku hardlinków. Te będą działały dalej.

Które więc są lepsze? To już zależy od natury konkretnego przypadku – jak zwykle:-).

Uprawnienia do katalogów #

Chociaż każdy katalog jest plikiem, to można powiedzieć – jest plikiem dość nietypowym. Objawia się to m.in. w przypadku uprawnień. Polecam tu osobny artykuł w naszej bazie wiedzy dotyczący uprawnień. Spójrzmy na poniższy screen – wynik spowodowany jest poleceniem “ls -al”.

Rozróżnienie pliku i katalogu #

Pierwsza rzecz która rzuca się w oczy do “d” na początku uprawnień “snap” oraz “tests”, którego nie ma przy pierwszej pozycji.

Owo “d” to właśnie określenie “directory” – mówi nam o tym, że ten plik jest katalogiem. Reszta jest identyczna. Mamy tu trzy rodzaje: poza ‘d’ także ‘s’ – specjalny, oraz ‘-‘ – czyli zwykły.

Rodzaje uprawnień to kolejna różnica między zwykłym plikiem a folderem. #

  • r (read):
    • Plik: możliwość odczytu zawartości
    • Katalog: możliwość listowania zawartości (np. ls)
  • w (write):
    • Plik: możliwość edycji
    • Katalog: możliwość tworzenia i usuwania plików
  • x (execute):
    • Plik: możliwość uruchomienia skryptu czy aplikacji
    • Katalog: możliwość wejścia i przeszukania katalogu

Zmiana praw katalogów #

  • 'chmod 755 katalog' – Właściciel ma pełny dostęp, grupa i inni: odczyt + wejście.
  • 'chmod 700 katalog' – tylko właściciel ma dostęp (często używane w .ssh)
  • 'chmod g+w katalog' – dodaje prawo zapisu dla grupy

Komendy, które pozwalają pracować z katalogami #

Czas na ostatni aspekt naszego artykułu dotyczącego katalogów. Zapoznajmy się z lista komend, które pomogą Ci pracować z folderami!

  1. 'pwd' – pokaż aktualny katalog w którym jesteś.
  2. 'ls' – pokaż zawartość katalogu
  3. 'cd [scieżka]' – zmień katalog
  4. 'mkdir [ścieżka]' – utwórz katalog
  5. ‘rmdir [ścieżka]’ – usuń pusty katalog.
  6. 'rm -r [ścieżka]' – usuń katalog z zawartością (jeśli dodasz ‘-f’, nie spyta Cię “czy na pewno”)
  7. 'cp -r' – kopiuj katalogi rekursywnie
  8. 'mv [początkowe] [końcowy adres]' – przenieś lub zmień nazwę
  9. 'chmod' – zmiana dostępów (dokładniej rozdział wyżej)
  10. 'find [ścieżka] -type d -name "[jakas nazwa]' – wyszukaj katalog
  11. 'du -sh' – rozmiar katalogu zhumanizowany (w odpowiednich, czytelnych jednostkach)
  12. ‘tree’ – pokaż strukturę katalogów (może wymagać instalacji)

Responses