640 likes | 878 Views
Wprowadzenie do systemu Linux. Wielodostępność systemu Linux. Trochę Historii :.
E N D
Wielodostępność systemu Linux Trochę Historii : Wielodostępność wywodzi sie z czasów, kiedy jeden komputer centralny (mainframe) wykonywał jednocześnie wiele programów nadzorowanych przez wielu użytkowników. Problem dostępu do sprzętu rozwiązywano następująco: do komputera łączami szeregowymi podłączona była pewna liczba sprzętowych terminali, które pozwalały na wyświetlanie tekstu na monitorze i obsługę klawiatury. To wystarczało, gdy wszelkie przetwarzanie danych i tak było zadaniem komputera, zaś terminali podłączyć mona było i kilkadziesiąt. Potem komputery staniały i zaczęły masowo pojawiać sie na wielu biurkach. Jednakże wraz z upowszechnieniem sieci komputerowych stare idee odżyły. Okazało sie, że wciąż wygodnie jest wydzielić w sieci komputer, do którego wszyscy Będą mieli jednoczesny dostęp. Po cóż jednak stosować prymitywne terminale sprzętowe, skoro ich role pełnić może program uruchomiony na PC.
Dziś terminal rozumiany jest teraz prawie wyłącznie jako program, który pozwala na łączenie sie z innym komputerem poprzez siec i zdalna na tym komputerze prace. Dla odróżnienia konsola nazywa sie "sprzętowy terminal" nieodłącznie związany z konkretnym komputerem, czyli jego monitor i klawiaturę. Siedząc przy konsoli, ma sie dostęp do wielu tzw. wirtualnych terminali. Pozwala to na bezproblemowe wykorzystanie wielozadaniowości 4 i wielodostępu bez korzystania z dodatkowego sprzętu. Praca zdalna oznacza, że fizycznie znajdując sie przy jednym komputerze, uzyskuje sie prawo do uruchamiania programów na innym, zwanym serwerem.
W Praktyce… Komputer lokalny sprowadzony zostaje do roli prymitywnego terminala, który wyświetla uzyskane dane na ekranie, zaś odsyła do serwera informacje o naciśnietych przez użytkownika klawiszach. Praca wielodostępna ma sens tylko wtedy, gdy użytkownicy mogą uruchamiać i wykonywać swoje programy jednocześnie. Wymaga to odpowiedniej konstrukcji systemu operacyjnego i jest charakterystyczna cecha wszystkich Uniksów
Następstwa wielodostępności Logicznym następstwem wielodostępności jest to, że tych samych programów używać może jednocześnie wiele osób. Oczywiście na dysku przechowywana jest tylko jedna kopia programu, dostępna dla wszystkich zainteresowanych. Dodatkowa oszczędność pamięci wprowadzają programy, które wykorzystują współdzielone biblioteki systemowe. Oznacza to na przykład, e dwa programy działające jednocześnie zajmują mniej pamięci, ni by to wynikało z zsumowania zajętości dla każdego programu z osobna. To właśnie wielodostępność wymusza taka a nie inna konstrukcje systemu operacyjnego. Pojedynczy użytkownik, jednoznacznie identyfikowany nazwa i hasłem, może wykorzystywać lub modyfikować jedynie ściśle określone zasoby. Zadaniem systemu operacyjnego jest zapewnienie sprawiedliwego lub określonego priorytetami podziału czasu procesora, miejsca na dysku, przepustowości sieci itp. Piecze nad całością sprawuje administrator, którego konto (o nazwie root) pozwala na swobodny dostęp do wszystkich plików, zasobów i mechanizmów systemowych.
Wielozadaniowość systemu Linux Wielozadaniowość (inaczej wieloprocesowość) jest to cecha systemu operacyjnego (a dokładniej jadra, inaczej kernela) mówiąca czy może on wykonywać "jednocześnie" kilka procesów. Wielozadaniowość otrzymuje się poprzez tzw. scheduler, czyli algorytm kolejkujący i porządkujący procesy, które maja być wykonane. W rzeczywistości procesor nie jest w stanie wykonywać dwóch operacji naraz, ale dzieli czas swojej pracy na krótkie odcinki dla każdego procesu, tak, aby nie było to zauważalne dla użytkownika, po czym wykonuje zadane mu zadania (w chwili obecnej prawie każdy system obsługuje wielozadaniowość). Możliwość wielozadaniowości nie oznacza wcale, e na komputerze mona uruchomić nieskończona ilość procesów. Im więcej procesów jest uruchomionych, tym zadania wykonywane są wolniej, gdy wyczerpują one dostępne zasoby w postaci pamięci RAM, dysku twardego i procesora.
Systemami wielozadaniowymi są: - UNIX - 32-bitowe systemy z rodziny Microsoft Windows (np. Microsoft Windows 95) - Mac OS i jego następca Mac OS X - Linux Nie są: - DOS (może być więcej niż jeden proces, ale tylko jeden Będzie wykonywany)
Najważniejsze cechy systemu Linux jest systemem nowoczesnym, ponieważ wielu programistów wciąż pracuje nad rozwojem jądra systemu oraz bogatego zestawu programów usługowych. O jego nowoczesności decydują przede wszystkim cechy wymienione poniżej: • wielodostęp, • wielozadaniowość, czyli praca z podziałem czasu procesora pomiędzy wiele zadań, • wieloprzetwarzanie, czyli praca wieloprocesorowa, • możliwość uruchamiania zadań w łagodnym czasie rzeczywistym, • obsługa różnych typów systemów plików, • obsługa różnych protokołów sieciowych, • obsługa różnych formatów plików wykonywalnych, wykorzystanie współdzielonych bibliotek.
efektywność i stabilność systemu, • powszechna dostępność bez jakichkolwiek opłat licencyjnych, • bogaty zestaw oprogramowania umożliwiający szeroki zakres zastosowań, • możliwość pracy na wielu platformach sprzętowych przy stosunkowo niewielkich wymaganiach, • możliwość łatwej współpracy z innymi popularnymi systemami operacyjnymi, • bogata dokumentacja w wersji elektronicznej, • dostępność kodu źródłowego.
System plików Sposób, w jaki komputer organizuje pliki i katalogi na nośniku danych o swobodnym dostępie (takim jest np. dysk twardy i dyskietka magnetyczna, ale już nie taśma magnetofonowa, w której dostęp do danych wymaga jej przewinięcia). System plików określa to, jak informacje są zapisywane i odczytywane; definiuje takie wielkość klastrów, możliwe do użycia atrybuty plików oraz schemat poprawnych nazw plików i katalogów - ich długość i dopuszczalne znaki w nazwach. System plików pozwala by współpracujący użytkownicy mogli korzystać z tych samych plików, ale te chronić pliki przed dostępem do nich nieuprawnionych użytkowników. Istnieje wiele odmian systemów plików, większość współczesnych ma strukturę hierarchiczna, złożona z katalogów i plików: Systemem plików zostaje utworzony podczas formatowania partycji, Dwa najczęściej spotykane systemy plików w Linux’ie to ext2, oraz jego nowsza wersja ext3 (posiadającą transakcyjny zapis oparty na dzienniku).
System plików ext2 Drugi rozszerzony system plików dla systemu Linux. Ext2 zastąpił rozszerzony system plików ext. Rozpoznanie uszkodzenia systemu plików (np. po załamaniu się systemu) następuje przy starcie systemu, co pozwala na automatyczne naprawianie szkód za pomocą oddzielnego programu (e2fsck), uszkodzone pliki zapisywane są w katalogu lost+found. System plików ext2 zawiera mechanizm zapobiegający znacznej fragmentacji danych, co zdarzało się podczas używania poprzedniej jego wersji. Ext2 przy domyślnym rozmiarze bloku (4 KB) obsługuje partycje o wielkości do 16 TB i pojedyncze pliki o wielkości do 2 TB. Nazwy plików mogą mieć do 255 znaków długości. Ważnym elementem systemu ext2 są wolne pola w strukturach danych – to dzięki nim między innymi, możliwa jest konwersja „w locie” do systemu ext3 – wykorzystuje on po prostu część z nich do przechowywania swoich danych.
System plików ext3 System plików ext3 jest rozszerzeniem ext2 i różni się od niego dodanym mechanizmem księgowania – dokładnego zapisu zmian na dysku, który w razie awarii systemu umożliwia szybsze przywrócenie spójności systemu plików niż w przypadku ext2. Poza mechanizmem księgowania system plików ext3 różni się od ext2 brakiem możliwości odzyskania skasowanych plików. W odróżnieniu od większości innych systemów z księgowaniem system ext3 daje do wyboru trzy tryby księgowania: w trybie najbezpieczniejszym księgowane są zarówno metadane jak i zwykłe dane; w trybie domyślnym księgowane są tylko metadane; istnieje jeszcze jeden tryb, w którym również księgowane są tylko metadane, ale jest mniej bezpieczny, ponieważ pozwala na modyfikację danych objętych metadanymi nie zapisanymi jeszcze na dysk.
Zalety systemu plików ext3 • Duża niezawodność • Prosta implementacja • Małe obciążenie procesora w porównaniu z ReiserFS i XFS • Kompatybilność z ext2.
Wady systemu plików ext3 • Ze względu na zerowanie wskaźników do węzłów usuniętych plików, w systemie ext3 jest bardzo utrudnione odzyskanie skasowanych plików (w przeciwieństwie do ext2). • Zmiana wielkości partycji bez utraty danych możliwa jedynie po odmontowaniu i zamianie na ext2 – zmianę wielkości pracującej partycji umożliwia ReiserFS. • Dla danych dostępna niepełna powierzchnia dysku. • Ograniczona wielkość partycji do 32 TiB – pół miliona razy większą wielkość partycji (do 16 EiB) zapewnia XFS.
Drzewo katalogowe UNIX Katalogi systemu UNIX/Linux są zorganizowane hierarchicznie. System ten, w odróżnieniu od systemu MS-DOS, nie tworzy osobnej hierarchii dla każdej partycji, tworzy tylko jeden system plików dla wszystkich partycji. Katalogiem, który znajduje sie u samego szczytu tej struktury (tzw. drzewa katalogowego) jest katalog root (korzeń), oznaczony jako „/” (forwardslash).
Drzewo katalogów / Zawartość głównego systemu plików jest niewielka, pozwala na bootowanieinaprawę systemu. • bin/ Zawiera komendy użyteczne zarówno dla zwykłego użytkownika, jak i dla administratora. Jest tu wyłącznie ich niezbędny zestaw. • boot/ Zawiera wszystko, co jest potrzebne programowi bootujacemu, za wyjątkiem konfiguracji i instalatora map. • dev/ Ten katalog zawiera pliki urządzeń. • etc/ Zawiera pliki konfiguracyjne specyficzne dla maszyny. -X11/ Konfiguracja systemu X Window. • home/ Zawiera katalogi domowe użytkowników. Wewnętrzny układ dobiera administrator.
lib/ Zawiera te biblioteki współdzielone, które są niezbędne do zbootowania systemu oraz uruchamiania komend z głównego systemu plików, zawiera równie moduły jadra. - modules/ Dynamicznie ładowalne moduły jadra. • mnt/ Służy do tymczasowego montowania systemów plików przez administratora. • opt/ Zarezerwowane do instalacji dodatkowych aplikacji. Aplikacje powinny być instalowane w osobnych podkatalogach w /opt/. • proc/ Informacje o pracy jadra. Zawartość tego katalogu nie znajduje sie na dysku, lecz jest generowana dynamicznie przez jadro. • root/ Katalog domowy użytkownika root.
osbin/ Zawiera programy używane do administracji systemem i inne komendy użyteczne dla roota. Zawiera jedynie zestaw niezbędny do bootowania i naprawy systemu. • tmp/ Katalog ten służy do zapisu plików tymczasowych. Zawartość tego katalogu może być kasowana przy restarcie systemu. Kady użytkownik ma prawo zapisu. • usr/ Katalog ten jest druga główna sekcja systemu plików. Zawiera dane tylko do odczytu, które mogą być współdzielone miedzy maszynami. • var/ Zawiera zmienne dane. Są to m.in. kolejki, logi, pliki danych oraz pliki tymczasowe.
Urządzenia Linux Linux otrzymuje dane z, wysyła je do oraz przechowuje je w urządzeniach (devices). Urządzenie zazwyczaj odpowiada jednostce sprzętowej, takiej jak na przykład klawiatura czy port szeregowy. Jednakże urządzenie nie zawsze posiada odpowiednik sprzętowy; jadro systemu (kernel) tworzy kilka pseudourządzeń, które nie istnieją fizycznie, ale za to mona uzyskać do ich dostęp jakby rzeczywiście istniały. Co więcej, jednostka sprzętowa może odpowiadać kilku urządzeniom, na przykład Linux definiuje każda partycje dysku twardego jako osobne urządzenie. Dyski i urządzenia wejścia//wyjścia odwzorowywane jako pliki w katalogu /dev.
Lista wybranych plików z katalogu /dev: • /dev/console - konsola systemu • /dev/mouse-mysz szeregowa • /dev/hda-pierwszy dysk IDE • /dev/hda1 -pierwsza partycja pierwszego dysku • /dev/hda2 -druga partycja pierwszego dysku • /dev/hdb-drugi dysk IDE • /dev/hdb1 -pierwsza partycja drugiego dysku IDE • /dev/fd0 -pierwsza dyskietka • /dev/lp0 -pierwszy port drukarki • /dev/null-urządzenie puste (do testów) • /dev/ttyN-wirtualny terminal (lokalny) • /dev/ptyN-pseudoterminal do logowania przez siec
Jądro Linux Jądro Linux (ang. Linux kernel) – najważniejsza, wolna część uniksopodobnego systemu operacyjnego GNU/Linux napisana przez Linusa Torvaldsa w 1991 roku, a obecnie rozwijana przez licznych programistów z całego świata. Początkowo działało na platformie Intel 80386, lecz później zostało przeniesione na wiele innych platform. Największa część kodu napisana jest w języku C, z pewnymi rozszerzeniami GCC a pozostała część to wstawki w asemblerze. Kod jądra Linuksa jest objęty licencją GNU General Public License, jest zatem oprogramowaniem FLOSS.
Architektura Jądra Jądro Linuksa jest w dużym stopniu zgodne ze standardami ANSI i POSIX, obsługuje wielozadaniowość, wielowątkowość, wielobieżność, pamięć wirtualną, biblioteki współdzielone, ładowanie na żądanie, współdzielony kod wykonywalny (ang. copy-on-write), dobre zarządzanie pamięcią i obsługę sieci TCP/IP. Jest ono jądrem monolitycznym z ładowalnymi modułami. Sterowniki urządzeń i rozszerzenia jądra zwykle pracują w trybie ring 0, z pełnym dostępem do sprzętu; nieliczne jednak działają w trybie użytkownika. W przeciwieństwie do typowych jąder monolitycznych, sterowniki urządzeń są zwykle kompilowane jako moduły, które można załadować i wyładować na działającym systemie. Podobnie, sterowniki mogą być wywłaszczone w określonych warunkach. Ta funkcja została dodana w celu poprawnej obsługi przerwań sprzętowych i systemów wieloprocesorowych. Fakt, że Linux jest zbudowany na zasadzie jądra monolitycznego, a nie mikrojądra był powodem słynnej dyskusji między Linusem Torvaldsem a Andrew S. Tanenbaumem (autorem Miniksa) na grupie comp.os.minix w 1992 roku. Cały kod źródłowy różnych wersji Linuksa można obejrzeć na stronie http://lxr.linux.no/
Instalacja Jądra Linux Kod źródłowy jądra Linuksa można pobrać z kernel.org. Aby skompilować wersję 2.6.x należy wykonać następujące komendy w podanej kolejności: • Make oldconfigaby szybko przeanalizować plik konfiguracyjny .config z poprzedniej wersji jądra (pominąć ten krok, jeśli poprzednia konfiguracja jest niedostępna), • Make config(lub bardziej przyjazne warianty: make menuconfig– dla trybu tekstowego, make xconfig – GUI-Qt lub też make gconfig– GUI-GTK+) aby wybrać funkcje wbudowane w jądro. Można np. zbudować jądro obsługujące bardzo szeroką lub bardzo wąską gamę sprzętu. Włączenie obsługi wszystkiego co możliwe zwiększa zajętość pamięci przez jądro i może nieco spowolnić działanie systemu. Jeśli jest ono przeznaczone do pracy na określonym komputerze, obsługę urządzeń, których ten komputer nie posiada można pominąć. • Make kompiluje wszystkie komponenty jądra, • Make modules_installkopiuje skompilowane moduły do odpowiedniej lokalizacji (zwykle w podkatalogu /lib/modules), • Make install kopiuje obraz jądra (o nazwie vmlinux lub vmlinuz) do właściwego katalogu i aktualizuje program startowy (LILO lub GRUB) aby system mógł wystartować po restarcie z nowym jądrem.
Moduły Linux W jądrze Linuks sterowniki do urządzeń mogą zarówno być wbudowane w samo jądro (wkompilowane moduły), albo też w osobnym pliku, i wtedy są one ładowane do pamięci komputera i uruchamiane w razie potrzeby, lub przy starcie systemu.
Zalety modułowej budowy KernelLinuks jest makrokernelem, tzn. zajmuje się nie tylko komunikacją pomiędzy poszczególnymi procesami, ale także zarządzaniem pamięcią, obsługą urządzeń czy obsługą systemów plików. Dla porównania, w architekturze mikrokernela, sam kernel zajmuje się tylko zapewnieniem komunikacji pomiędzy procesami, natomiast do obsługi poszczególnych urządzeń, czy systemów plików, zajmują się osobne wykonywalne programy. Jednak Linuks ma modułową budowę, co oznacza że części kodu odpowiadające za obsługę poszczególnych urządzeń, systemów plików czy protokołów, mogą zostać od niego oddzielone - i dzięki temu zyskuje największe zalety mikrokerneli, czyli: • obsługę poszczególnych urządzeń czy protokołów można rozwijać niezależnie od samego kernela (nie wymaga to zmian w innych częściach kernela) • podział prac nad jądrem na grupy zajmujące się poszczególnymi częściami znacznie ułatwia i przyspiesza rozwój • możliwość zmniejszenia wielkości kernela, poprzez wykasowanie z pamięci operacyjnej nieużywanych modułów • możliwość tworzenia zamkniętych, binarnych sterowników Przy tym budowa jako makrokernel, i możliwość wbudowania modułów w strukturę samego kernela, przyspiesza działanie, ponieważ nie ma konieczności wielokrotnego powtarzania przełączania procesów, przy komunikacji pomiędzy poszczególnymi modułami.
Do czego służą moduły Moduły, odpowiadają sterownikom w terminologii DOS/Windows. Mogą one obsługiwać nie tylko urządzenia - lista możliwych zadań modułów jest szersza: • bezpośrednia komunikacja z urządzeniem (standardowe, systemowe polecenia tłumaczy na kod rozumiany przez konkretny model urządzenia) • bezpośredni odczyt/zapis w systemie plików (dzięki temu system widzi pliki, katalogi i ich właściwości, natomiast sam moduł dba o przetłumaczenie tego na kombinację bajtów w określonych miejscach na dysku) • obsługa protokołów (np. protokołów sieciowych). Najogólniej, moduły kernela służą do komunikacji niskopoziomowej - zajmują się tłumaczeniem standardowych poleceń na kod odpowiadający im w danym przypadku.
Ze względu na wieloużytkownikowość i wielodostęp, systemy UNIX posiadają bazę danych informacji o użytkownikach. W bazie tej zawarte są podstawowe dane o każdym z użytkowników, takie jak nazwa użytkownika, numer, grupa do której należy, krótki opis, katalog domowy oraz powłoka której używa. Baza użytkowników znajduje się w pliku /etc/passwd, natomiast hasła użytkowników i informacje uzupełniające w /etc/shadow.Aby łatwiej zarządzać prawami dostępu do zasobów, użytkownicy należą do jednej lub więcej grup. Dla przykładu - do grupy "studenci" należy każdy student będący użytkownikiem systemu Linux (czyli posiadający konto w tym systemie) i dzięki temu studenci otrzymują dostęp tylko dla odczytu do ogólnych informacji dotyczących danej uczelni. Studenci kierunku Informatyka należą dodatkowo do drugiej grupy, np. "informatycy", dzięki czemu otrzymują dostęp do treści zadań dla danego kierunku. Część z nich, należy do grupy laboratoryjnej, opracowującej program dla systemu Linux. Ci studenci należą dodatkowo do trzeciej grupy, np "linux-lab" - to daje im pełny dostęp do określonego katalogu w systemie, gdzie mogą wspólnie pisać, kompilować i testować program. Jednocześnie do tego programu nie ma dostępu żaden student spoza grupy "linux-lab".W systemach UNIX przyjęto, że każdy użytkownik ma swój numer (UID), który jest jego identyfikatorem. Prawa dostępu do zasobów określane są względem tego numeru, a nie nazwy użytkownika. Nazwa jest jakby "aliasem" do numeru - można ją w każdej chwili zmienić bez żadnych konsekwencji - wszystkie prawa dostępu zostają zachowane (bo przyznawane są według numerów, a nie nazw). Dzięki /etc/passwd możliwe jest "tłumaczenie" nazw na UIDy i odwrotnie. Możliwe też jest stworzenie dwóch lub więcej kont z tymi samymi numerami UID pod różnymi nazwami. Wówczas użytkownicy, korzystający z tego samego UIDu mają identyczne prawa i ograniczenia w systemie pomimo, że mogą posiadać różne hasła, katalogi domowe czy powłoki. Użytkownicy i grupy
cd.. Grupy użytkowników funkcjonują na podobnych zasadach. Każda grupa posiada swój numer (GID) i to właśnie ten numer wykorzystywany jest przy określaniu praw dostępu. Każdy z użytkowników musi należeć przynajmniej do jednej grupy. Główna grupa do której należy użytkownik zapisana jest w /etc/passwd. Pozostałe - w /etc/group. Aby przekonać się, w jakich grupach znajduje się użytkownik i jaki jest jego UIDnależy wydać komendę: id [UŻYTKOWNIK] gdzie: UŻYTKOWNIK - specyfikacja sprawdzanego użytkownika. W przypadku nie podania nazwy użytkownika, "id" zwraca dane dotyczące użytkownika bieżącego. Przykład zastosowania: Z wyświetlonych informacji wynika, że użytkownik "student" ma nadany numer UID=501, jego główną grupą jest "users" (GID=100), a dodatkowo należy do grup "studenci" GID=501, "informatyka" GID=550 oraz linux-lab GID=934.Użytkownicy i grupy ułatwiają zarządzanie dostępem do zasobów. Dla przykładu:
Właścicielem pliku kopia jest użytkownik "student". Prawa dla tego pliku, określane są dla właściciela, grupy i wszystkich pozostałych użytkowników. Aby optymalnie zarządzać tymi prawami, właściciel pliku może zmienić grupę względem której określane są prawa. W tym przypadku wszyscy użytkownicy należący do grupy "users" mogą odczytywać zawartość pliku, ale nie mogą go modyfikować. Uzytkownik "student", zmieniając grupę np. na "linux-lab" spowoduje, że tylko użytkownicy tej grupy będą mogli przeglądać zawartość tego pliku. W tym celu posłużyć się należy poleceniem "chgrp" o następującej składni: chgrp GRUPA PLIK(I) gdzie: GRUPA - grupa, na którą należy zmienić,PLIK(I) - lista plików do zmiany. Grupę może zmienić tylko właściciel pliku i to tylko i wyłącznie na grupę w której należy. Ograniczenia te nie dotyczą oczywiście użytkownika root. Dodatkowo administrator może zmienić właściciela pliku poleceniem "chown" o następującej składni: chown [WLASCICIEL][.GRUPA] PLIK(I) gdzie: WLASCICIEL - nowy właściciel pliku,GRUPA - nowa grupa,PLIK(I) - lista plików poddawanych operacji zamiany.
Wirtualne konsole w Linuksie • Możemy ich mieć wiele - najprawdopodobniej do 255. Konsole te oznaczane są symbolem ttyX, gdzie X jest identyfikatorem konsoli (terminala) - liczbą naturalną (np. tty1, tty2, tty3 itd.). Reprezentowane są przez urządzenia znakowe w katalogu /dev (np. /dev/tty1) o numerze MAJOR=4 i MINOR=0...255. Bezpośredni dostęp przez kombinację klawiszy ALT-<klawisz funkcyjny> możemy mieć do początkowych 24-ch terminali (tty1 - tty24). Terminale tty1-tty12 osiągamy poprzez wciśnięcie lewego klawisza ALT i klawisza funkcyjnego Fn, co powinno nas przełączyć na terminal ttyn (np. po naciśnięciu ALT-F6, przełączamy się na terminal tty6). Kolejnych 12 terminali jest osiągalnych przez prawy ALT-Fn, co przełącza nas na terminal tty{n+12} (np. prawy ALT-F2 przełącza nas na terminal tty14). Innym sposobem przełączania terminali jest użycie kombinacji ALT-<strzałka>. Po naciśnięciu prawej strzałki przełączamy się na kolejną konsolę, natomiast po naciśnięciu lewej przechodzimy na poprzedni terminal. Wszystkie te operacje są przeprowadzane modulo ilość terminali. • Przykład: załóżmy, że pracujemy w standardowym 3-cim runlevelu bez iksów. Niech aktualnym terminalem będzie tty3. Wtedy pięciokrotne naciśnięcie ALT-<prawa strzałka> przełączy nas kolejno na terminale tty4, tty5, tty6, tty1, tty2. Wówczas pięciokrotne naciśniecie lewej strzałki przeniesie nas kolejno na terminal tty1, tty6, tty5, tty4, tty3 (z powrotem do punktu wyjścia). Ten sam rezultat moglibyśmy osiągnąć naciskając jeszcze jeden raz ALT-<prawa strzałka> • Powyższe skróty (ALT-<klawisz funkcyjny> ALT-<strzałka> nie działają niestety pod iksami, w iksach mają one inne znaczenie. Do przełączenia konsoli, gdy aktywne są iksy, używamy kombinacji lewy ALT-CTRL-<klawisz funkcyjny> o działaniu odpowiadającym kombinacji lewy ALT-<klawisz funkcyjny> w konsolach tekstowych. Uwaga: kombinacja ALT-CTRL-<strzałka> nie może być używana w ten sposób. Dostęp do konsoli o dużych numerach (np. tty25, tty26) jest tylko przez ALT-<strzałka>. Problem z przełączaniem konsoli pojawia się, gdy mamy równocześnie wiele sesji iksów. Wprawdzie taka sytuacja nie zdarza się w praktyce nigdy (iksy + KDE to grubo ponad 20 MB ramu), ale niespójność systemu dostępu do odpowiednich terminali jest trochę irytująca.
Każdy terminal, zanim może być użyty, musi być otwarty. Służą to tego programy z rodziny getty. Sam getty (/sbin/getty) jest dosyć mocnym programem i może być używany do otwierana konsol wirtualnych jak i innych terminali (np. połączonych portem szeregowym). Dlatego używa się przeważnie jego uproszczonych, wyspecjalizowanych klonów: mingetty do otwierania konsol wirtualnych, mgetty do modemów i innych. mingetty jest uruchamiany przez inita. W standardowym RedHacieinit uruchamia mingetty'a sześciokrotnie. Fragment pliku /etc/inittab: • 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 Jeżeli mamy potrzebę użycia większej ilości terminali (konsol), to należy dopisać odpowiednie wywołania mingetty'a, np.: 11:2345:respawn:/sbin/mingetty tty11 12:2345:respawn:/sbin/mingetty tty12Uwaga! Niektóre dystrybucje nie mają urządzeń specjalnych w katalogu /dev/ reprezentujących wyższe numery terminali (tty13-tty24), nie mówiąc już o terminalach o jeszcze wyższych identyfikatorach. Tak jest w RedHacie. Należy wówczas (tylko gdy jest taka potrzeba, czyli nieczęsto) dodać te urządzenia ręcznie, np. komendą mknod: • mknod /dev/tty12 c 4 12 mknod /dev/tty13 c 4 13 mknod /dev/tty14 c 4 14 Dopiero wtedy wrzucamy konfigurację do inittaba i możemy się cieszyć prawym ALT-Fn. Terminale otwierane są również przez iksy (X-serwer jest związany z jakimś określonym terminalem). Iksy wchodzą nam na pierwszy wolny terminal (z wyjątkiem "zarezerwowanego" tty1) : w przypadku standardowych dystrybucji 6-cio terminalowych jest to terminal siódmy (tty7). Tak jest w przypadku uruchamiania Linuksa w runlevelu 5-tym, jak i w przypadku ręcznego uruchamiania iksów komendą startkde, startx itp. Teoretycznie, gdyby żaden z terminali nie był inicjowany przez inita, iksy pakowałyby się na terminal drugi (tty2). W przypadku, gdy wszystkie dostępne terminale są już zajęte (otwarte przez konsolowego mingetty'a lub otwarte przez inne sesje iksów) X-server wyjdzie z błędem "Could not open /dev/ttyXX". Wtedy należy użyć komendy mknod do stworzenia urządzenia wirtualnego /dev/ttyXX. Iksy dobrze się czują również na wysokich numerach terminali (np. tty30), dostęp jednak do nich jest trochę utrudniony (wielokrotne ALT-<strzałka>).
"Naprawianie" terminali wirtualnych Czasami terminal zostaje "zepsuty" (np. przez próbę wyświetlenia pliku binarnego za pomocą komendy cat). "Zepsucie" objawia się zwykle poprzez niezrozumiałe znaki na terminalu (lub brak wyświetlania czegokolwiek). Spowodowane jest zmianą pewnych parametrów terminala. Naprawienie polega na wpisaniu komendy: sttysane lub reset (działanie obu komend jest w tym przypadku identyczne). W trakcie wpisywania komendy nie należy zwracać uwagi na to, że znaki komendy nie są wyświetlane lub wyglądają niezrozumiale (i tak powinna przynieść skutek). Jeżeli jednak nie pomoże, może to oznaczać, że terminal został zablokowany. Zablokowanie to następuje zazwyczaj po naciśnięciu CTRL-S i łatwo je zrobić przypadkowo. Żeby odblokować terminal, należy zwykle nacisnąć CTRL-Q.
SSH • SSH (ang. secureshell) to standard protokołów komunikacyjnych używanych w sieciach komputerowych TCP/IP, w architekturze klient-serwer. • W ścisłym znaczeniu SSH to tylko następca protokołu Telnet, służącego do terminalowego łączenia się ze zdalnymi komputerami. SSH różni się od Telnetu tym, że transfer wszelkich danych jest zaszyfrowany oraz możliwe jest rozpoznawanie użytkownika na wiele różnych sposobów. W szerszym znaczeniu SSH to wspólna nazwa dla całej rodziny protokołów, nie tylko terminalowych, lecz także służących do przesyłania plików (SCP, SFTP), zdalnej kontroli zasobów, tunelowania i wielu innych zastosowań. Wspólną cechą wszystkich tych protokołów jest identyczna z SSH technika szyfrowania danych i rozpoznawania użytkownika. Obecnie protokoły z rodziny SSH praktycznie wyparły wszystkie inne "bezpieczne" protokoły, takie, jak np. rlogin czy RSH. • Ogólne założenia protokołu SSH powstały w grupie roboczej IETF. W użyciu są obie jego wersje - 1 i 2. W wersji 2 możliwe jest użycie dowolnych sposobów szyfrowania danych i 4 różnych sposobów rozpoznawania użytkownika, podczas gdy SSH1 obsługiwało tylko stałą listę kilku sposobów szyfrowania i 2 sposoby rozpoznawania użytkownika (klucz RSA i zwykłe hasło). Stosowanie wersji 1 jest obecnie stanowczo odradzane ze względu na ujawnione podatności na ataki man-in-the-middle, czyniące korzyści ze stosowania protokołu znikomymi. • Najczęściej stosowany sposób szyfrowania to AES, choć część serwerów nadal używa szyfrowania Blowfish i technik z rodziny DES. • Rozpoznawanie użytkownika może się opierać na tradycyjnym pytaniu o hasło, klucz (RSA, DSA) lub z użyciem protokołu Kerberos. • Trzy najbardziej znane implementacje SSH to zamknięte ssh.com, OpenSource'oweOpenSSH oraz wersja protokołu stosowana w programie PuTTY. • Protokoły z rodziny SSH korzystają zwykle z portu 22 protokołu TCP, choć często stosuje się porty o innych numerach w celu zwiększenia bezpieczeństwa serwera. Sama rodzina SSH znajduje się w warstwie aplikacji modelu OSI, ale do połączenia korzysta z protokołu TCP.
Składnia Linux Składnia ssh (FC4): Składnia sshd (FC4): Przykładowe użycie Aby połączyć się ze zdalnym komputerem wystarczy wydać polecenie: sshlogin@host opcjonalnie można podać numer portu: sshlogin@host -p <port> np: ssh uzytkownik@217.120.10.10 -p 80 Aby włączyć tunelowanienależy użyć składni: ssh -L 8888:localhost:80 uzytkownik@217.120.10.10 Aby przetunelować sesję protokołu X należy wykonać polecenie: ssh -X login@host
TERMINAL • Bardzo ważną cechą systemów uniksowych jest rozdzielenie systemu, czyli procesów wykonujących zadania, od interfejsu. Dotyczy to nie tylko interfejsu graficznego, ale także i tekstowego. • Jądro Linuks ma zaimplementowaną emulację terminali. Historycznie terminale były to komputery o minimalnych możliwościach obliczeniowych i bez własnej pamięci masowej, ale z monitorem i klawiaturą. Za pomocą tych terminali można było sterować główną jednostką obliczeniową. Taki podział był spowodowany m.in. przez bardzo wysoką cenę komputerów w tamtym czasie, i umożliwiał pracę na wielu stanowiskach, z użyciem tylko jednego komputera. • Obecnie wbudowana obsługa terminali w GNU/Linuksie umożliwia zarówno zdalną pracę (np. zdalną administrację serwerem), jak i wykorzystanie wielozadaniowości systemu także w środowisku tekstowym (uruchomienie wielu terminali odpowiada funkcjonalnie otwarciu wielu okien, gdzie w czasie gdy jeden program jest zajęty i nie odpowiada, możemy pracować w innym). • Taka budowa ma również skutki dla twórców oprogramowania - umożliwia to napisanie aplikacji która nie ma praktycznie interfejsu, tylko komunikuje się z użytkownikiem za pomocą wypisywanych linijek tekstu, a użytkownik wpisuje polecenia. Kiedy chcemy mieć aplikację, która wykonuje dokładnie to samo zadanie, ale ma prostszy interfejs, np. wybór wykonywanej akcji z menu, można napisać po prostu nakładkę na nasz pierwotny program, i jego wyjście i wejście przekierować do tej nakładki, zamiast na ekran (czyli terminal).
Poruszanie się po terminalach W większości dystrybucji jest standardowo 6 terminali uruchamianych - od numeru 7 wzwyż znajdują się środowiska graficzne w kolejności uruchamiania. Terminale mają nazwy ttyliczba, np. tty1 - pierwszy wirtualny terminal. Do poruszania się pomiędzy terminalami dostępnych jest kilka skrótów klawiszowych: LewyAlt + StrzałkaWPrawo - przechodzimy do terminala o wyższym numerze (np. z 2. na 3.) LewyAlt + StrzałkaWLewo - przechodzimy to terminala o niższym numerze; jeżeli jesteśmy na 1. terminalu, to przejdzemy na ostatni (np. 7.), podobnie w pierwszym przypadku LewyAlt + Fn, gdzie n to numer terminala, na który chcemy przejść (np. LewyAlt+F1 przenosi nas na pierwszy terminal). Natomiast w środowisku graficznym te skróty nieznacznie się różnią: kombinacja LewyAlt + strzałka, nie działa Ctrl + LewyAlt + Fnumer_terminala - przechodzimy do terminala o podanym numerze. Wirtualne terminale inaczej określa się jako "wirtualne konsole".
Logowanie, aktywowanie interfejsu użytkownika i wylogowywanie Wprowadzenie Aby móc pracować w systemie Linuks musisz posiadać konto użytkownika oraz hasło do niego. Zawsze musisz się uwierzytelniać się w systemie. Większość systemów linuksowych na komputery klasy PC posiada dwa podstawowe tryby w których można je uruchamiać: szybki i skromny tryb tekstowy, który wygląda jak DOS z myszką, wielowątkowy oraz obsługujący wielu użytkowników, albo tryb graficzny, który wygląda lepiej, lecz pożera więcej zasobów systemowych.
Tryb graficzny W dzisiejszych czasach jest to domyślny tryb w komputerach domowych. Wiesz, że zostaniesz zalogowany do systemu pracującego w trybie graficznym, gdy pierwszy raz zostajesz poproszony o nazwę użytkownika, a następnie, w nowym oknie, o hasło. Aby się zalogować, upewnij się, że wskaźnik myszy znajduje się w okienku logowania, wpisz swoją nazwę użytkownika oraz hasło i kliknij OK lub naciśnij ENTER. Może minąć trochę czasu, zanim, po wpisaniu kombinacji nazwa użytkownika/hasło, uruchomi się graficzne środowisko; zależy to od tego jak szybki masz procesor, jakiego używasz oprogramowania oraz jakie masz ustawienia osobiste. Aby kontynuować będziesz musiał otworzyć okno terminala, w skrócie xterm (X poprzedza nazwę dla podkreślenia możliwości użycia tego oprogramowania w trybie graficznym). W zależności od tego, jakiego menedżera okien używasz, program ten może zostać znaleziony w menu Aplikacje -> Usługi, Narzędzia systemowe lub Internet. Może istnieć także ikona skrótu, użycie której spowoduje otwarcie terminala, a kliknięcie prawym przyciskiem myszki na pulpicie zazwyczaj wywoła menu kontekstowe, które na pewno posiada możliwość uruchomienia terminala graficznego.
Podczas przeglądania menu zauważysz, że wiele rzeczy można zrobić bez wpisywania poleceń z klawiatury. Dla większości użytkowników, dobra, stara metoda wskaż-i-kliknij całkowicie wystarczy do pracy z komputerem. Jednak ten poradnik przeznaczony jest dla przyszłych administratorów sieciowych oraz systemowych, którzy będą musieli grzebać w sercu systemu. Oni, aby sprostać wszystkim zadaniom jakie ich czekają, potrzebują silniejszego, niż myszka, narzędzia. Tym narzędziem jest powłoka, a, będąc w trybie graficznym, aktywujemy ją otwierając okno terminala.Okno terminala jest twoim panelem kontrolnym systemu. Prawie wszystko o czym mówimy jest wykonywane za pomocą tego prostego, tekstowego narzędzia. Gdy otworzysz okno terminala zawsze powinien znajdować się w nim znak zachęty. Nasz pokazuje standardowy znak zachęty, który składa się z nazwy użytkownika oraz aktualnego katalogu roboczego reprezentowanego przez tyldę (~):
Tryb tekstowy Gdy zobaczysz czarny ekran na którym widać (najczęściej) białe znaki, oznacza to, że jesteś w trybie tekstowym. Ekran logowania w tym trybie zazwyczaj pokazuje kilka informacji o komputerze na którym pracujesz, jego nazwę oraz znak zachęty oczekujący na twoje zalogowanie. Logowanie w tym trybie różni się od logowania w trybie graficznym tym, że tutaj musisz nacisnąć ENTER po podaniu nazwy użytkownika, ponieważ na ekranie nie ma przycisków, które mógłbyś kliknąć. Następnie powinieneś wpisać hasło i ponownie nacisnąć ENTER. Nie będziesz widział, co wprowadzasz, nie zobaczysz nawet gwiazdek czy poruszającego się kursora. Takie zachowanie jest normalne i jest stosowane ze względów bezpieczeństwa. Gdy zostaniesz zalogowany, na ekranie możesz zobaczyć więcej informacji, nazywanych Wiadomością Dnia, która może zawierać dowolne informacje. Dodatkowo, w systemie UNIX popularne jest wyświetlanie podpowiedzi, które zawierają pewne przydatne lub nieprzydatne (to zależy od ciebie) informacje. Następnie zostanie przydzielony ci shell, wskazywany przez taki sam znak zachęty jak w trybie graficznym.
System uwierzytelniania w systemie Linux • Jednym z podstawowych elementów bezpieczeństwa systemu Linux jest identyfikacja użytkowników i weryfikacja ich tożsamości. Tradycyjne mechanizmy identyfikacji użytkowników wykazują pewne ograniczenia. W celu zwiększenia elastyczności oraz uniknięcia niespójności, w systemie Linux wprowadzono dość rewolucyjne rozwiązanie, którym jest system • PAM, opracowany przez .firmę SunSoft.. Jest on w stanie zastąpić tradycyjne metody autentykacji użytkowników.
Linux-PAM (ang. PluggableAuthenticationModules for Linux) to zestaw bibliotek dzielonych, umożliwiających administratorowi lokalnego systemu wybranie dla każdej aplikacji sposobu autentykacji użytkownika. Innymi słowy, możliwe jest przełączanie pomiędzy różnymi mechanizmami uwierzytelniania bez konieczności ponownej kompilacji aplikacji, a tym bardziej bez ponownego jej programowania. Dodatkowo, możliwe jest wprowadzanie ulepszeń do mechanizmów autentykacji bez jakichkolwiek zmian w aplikacjach korzystających z tych mechanizmów.Elastyczność Linux-PAM polega na tym, że administrator ma wybór sposobu uwierzytelniania użytkowników dladanej aplikacji. Może ustawić dla każdej aplikacji korzystającej z Linux-PAM inny mechanizm autoryzacji, poczynając od trywialnej autoryzacji poprzez hasło, a kończąc na autoryzacji poprzez głos, linie papilarne, jednorazowe hasło lub cokolwiek innego, co zostanie wymyślone. Aby aplikacja mogła używać Linux-PAM, jego funkcje muszą być bezpośrednio zakodowane w programie.Aby zastosować uwierzytelnianie do systemu Linux za pomocą tokenów należy skorzystać z modułu PAM: Pam-PKCS#11. Pam-PKCS#11 jest modułem PAM umożliwiającym logowanie się do systemu Linux przy użyciu kart inteligentnych. Moduł ten korzysta z biblioteki obsługującej karty w standardzie PKCS#11 (np. OpenSC lub eToken PKI Client),co uniezależnia moduł od modelu karty.Moduł Pam-PKCS#11 uwierzytelnia użytkownika na podstawie certy.katu X.509. Podpisany przez urząd certyfikacji certyfikat wraz z odpowiadającym mu kluczem prywatnym znajdują się na karcie (tokenie). Dostęp do certyfikatu użytkownika znajdującego się na karcie umożliwia biblioteka PKCS#11. Uwierzytelnianie działa podobnie jak podpis elektroniczny. Za pomocą klucza prywatnego, który znajduje się na karcie i dostępny jest tylko właścicielowi karty, podpisywane są pewne dane losowe. Następnie przy użyciu certyfikatu klucza publicznego, który również znajduje się na karcie weryfikowany jest owy podpis. W celu weryfikacji wiarygodności certyfikatu klucza publicznego, wykorzystywany jestcertyfikat urzędu certyfikacji CA, który znajduje się lokalnie w systemie lub jest zagwarantowany do niego dostęp online oraz lista CRL. Aby umożliwić zalogowanie się do systemu właściciela certy.katu jako konkretnego użytkownika, modułPam-PKCS#11 wykorzystuje porównywanie (tzw. mapowanie) niektórych pól z certy.katu do opisu konta użytkownika.Pola te są wybierane w zależności od konfiguracji.
Wykorzystanie cech powłoki (shella) bash podczas pracy Linux udostepnia wiele rodzajów interpretatorów polecen: • shellBourne’a (sh) • shell C (csh) • BourneAgain Shell (bash) • shell (tcsh) który wyparl (csh) Przeglad cech powloki systemowej, interpretatora polecen
komunikat systemu root@dom oznacza, ze jestesmy zalogowani jako administrator na komputerze dom. Symbol # oznacza gotowosc do pracy i tu wpisujemy wszelkie polecenia np. polecenie: whoamioznacza zapytanie o nazweuzytkownika pod jaka aktualnie pracuje i jest nim root polecenie: who efektem bedzie lista aktualnie zalogowanych uzytkowników na naszym komputerze polecenie: di i uderzenie klawisza tabulacji (tab) spowoduje wylistowanie wszystkich polecen do których mamy prawo i zaczynajacych sie na „di”. Jest to jedna z niezmiernie uzytecznych cech powloki systemowej przy pracy z poziomu konsoli tekstowej i jest to dopelniania komend. Dwukrotne uderzenie klawisza tabulacji (tab) spowodowalo pytanie: Display all 3102 possibilities? (y or n). Zapytanie czy wylistowac wszystkie 3102 polecenia, które mam prawo wykonac.
1. Polecenia maja opcje: długie –help pelna nazwa poprzedzona dwoma myslnikaminp. ls --helpkrótkie -l jedna litera poprzedzona myslnikiemnp.ls -l 2. Powloka zawiera podrecznik (manual) liczacyokolo 6 tys. wierszy, którymposlugujemy sie z pomoca polecenia: man [opcje] nazwa polecenia • np. • manman- w wyniku uzyskamy pomoc jak poslugiwac sie podrecznikiem • manls - uzyskamy pierwsza napotkana stronepodrecznikaodnoszaca sie do polecenia ls • man -a ls- prezentuje kolejne strony podrecznikaodnoszace sie do polecenia ls • man -s 5 ls- prezentuje stronepodrecznika z sekcji 5 odnoszace sie do polecenia ls • man -k ls - prezentuje nazwe i krótki opis zagadnienia dotyczacy polecenia lsaproposls- krótki opis zagadnienia ls • 3. Wygodna w pracy z konsola jest funkcja dopelniania komend • oznacza nacisniecie klawisza tabulacji lub • oznacza nacisniecie klawisza y • - (dwukrotne uderzenie ) spowoduje wyswietlenie pytania czy chcemy uzyskac wszystkie polecenia systemu do których mamy prawo. y/n • np. cd /u <tab> • np. cd (tab)(tab) drugi (tab) wyswietli wszystkie mozliwie polecenia do których mam prawo. Nie dopelniajesli nie pozwalaja na to prawa • np. tr(tab)(tab)
4. historia komend (kursory góra, dól)przechowywana w ukrytym pliku .bash_history katalogu domowym uzytkownika - moznausunac, jesliokaze sie zbyt duzy.Polecenie clear czyscizawartosc konsoli przesuwajac jej zawartosc w góre5. Mechanizm definiowania aliasówmoznadefiniowac polecenia alias nazwa=’która komenda ma sie wykonywac i z jakimi parametrami’np.alias dir='ls -l'teraz dir spowoduje przeglad katalogualias cs='clear'cs oznacza czyszczenie ekranui ich usuwania przez unaliascswiele z aliasów definiowanych jest w pliku konfiguracyjnym /etc/profile
6. Zmienne srodowiskowesa interpretowane po ustaleniu ich wartosci, pozwalaja na modyfikacje systemu w tzw. locieenv - wydruk listy zmiennych srodowiskowychecho $PS1- wydruk wartosci zmiennej PS1 odpowiadajacej za formezgloszeniaecho$PATH- wydruk wartosci zmiennej okreslajacejsciezkiprzeszukiwan w przypadku uruchamiania programuUstalaniewartosci zmiennych srodowiskowychnp. PS1=”\u@\h >” - zmiana wartosci odpowiedzialnej za formezgloszeniaSpis i znaczenie parametrów dla PS1 \u -nazwa uzytkownika\h- nazwa komputera\w -nazwa aktualnego katalogu ze sciezkadostepu\W- nazwa aktualnego katalogu\d - aktualna data\v-wersja powloki\$-znak uzytkownika (# dla administratora, $ dla zwyklegouzytkownika)\t -czas (24h)\T -czas (12h)
inne zmienne srodowiskowe to: HOME katalog domowySHELL domyslnyshell (powloka)System posiada mechanizm eksportu wartosci zmiennych srodowiskowych z lokalnych na globalne poprzez: export PAGER spowoduje, ze wartoscprzyslania inne wartosci tej zmiennej dla innych uzytkowników, staje sie globalnaUstawienia wartosci zmiennych srodowiskowych dokonuje sie w pliku konfiguracyjny powloki /etc/profile - odczytywany na poczatku startu i czytanym nieco pózniej plikach ~/bash_profile, ~/.bash_login i ~/.profile umieszczonych w katalogu domowym uzytkownika, gdzie ~ (tylda) oznacza katalog domowy uzytkownika np. /home/yogazmienna UMASK sluzyokresleniudomyslnych praw do wszystkich nowo tworzonych plików i katalogów jako róznicy 777 i umaskumasksparwdzeniewartoscilub umask 022 wszystkie nowo tworzone pliki bedamialy prawo dostepu 755moznawyspecyfikowac inna wartoscistnieje odpowiedni wpis w pliku /etc/profile okreslajacywartosc zmiennej
7. Przekierowanie strumieni >, >>, <np.: ls -la > przeglad.txtdomyslnie wynik polecenia ls czyli przeglad katalogu kierowany jest na ekran natomiast tu zostanie skierowany do pliku przeglad.txtcat oczekuje na tekst z klawiaturycat > lista.txtpobiera dane z klawiatury i do plikucat < przeglad.txtpobiera dane z pliku i przesyla na ekranmorelista.txt wydruk na ekranls -l | catwyjscie jest jednoczesniewejsciemls -l | less filtr, nastapiprzekierowanie do programu i dopiero na ekran 8. Wyrazenia regularne dwa symbole globalne * i ?, gdzie * zastepuje dowolny ciag znaków? zastepujedokladnie jeden znakmozna tez okreslac zakres wartosci znaku[1-3] dopuszczalne wartosci znaku od 1 do 3[a-k] dopuszczalne wartosci znaku od a do kmaja zastosowanie np.: przy przegladanie katalogów, kopiowaniu, kasowaniu plików grupami np.:ls -l [a-e]* wylistuja sie nazwy gdzie pierwszym znakiem w nazwie sa litery od a do e, reszta dowolnals - l [a-g][1-4]* wylistuja sie nazwy gdzie pierwszym znakiem w nazwie sa litery od a do g, drugim znakiem cyfry od 1 do 4, reszta dowolna