1. Podstawowe polecenia
Transkrypt
1. Podstawowe polecenia
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 1. Podstawowe polecenia Celem ćwiczenia jest wprowadzenie do pracy z wierszem poleceń systemu Unix, poznanie podstawowych poleceń oraz zasad składni poleceń powłoki. 1.1. Unix uname uname -l uname --help man uname q / ? 1.2. Użytkownik whoami who am i who finger passwd logout exit 1.3. Czas i miejsce date time cal pwd ls cd .. / ~ -1- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 1.4. Pliki ls -l cat cat > touch cp mv rm 1.5. Katalogi pwd cd mkdir rmdir -2- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 2. Katalogi, pliki i uprawnienia Celem ćwiczenia jest opanowanie obsługi plików i katalogów ze szczególnym uwzględnieniem uprawnień. 2.1. Obsługa katalogów pwd - wyświetla bieżący katalog ls - wyświetla zawartość katalogu cd - zmienia katalog bieżący na wskazany albo na domowy cd .. - zmienia katalog na nadrzędny cd / - zmienia katalog na główny cd ~ - zmienia katalog na domowy mkdir - tworzy nowy katalog rmdir - usuwa (pusty) katalog 2.2. Obsługa plików cat - wypisuje zawartość pliku head - wypisuje pierwsze linie z pliku tail - wypisuje ostatnie linie z pliku more - wypisuje zawartość pliku zatrzymując się po każdym pełnym ekranie less - umożliwia przeglądanie zawartości pliku cp - kopiuje zawartość pliku mv - przenosi (zmienia nazwę) plik rm - usuwa plik Znaki wieloznaczne w nazwach plików: ? - dokładnie jeden dowolny znak * - dowolna liczba dowolnych znaków [a-f] - jeden ze znaków w nawiasach kwadratowych 2.3. Uprawnienia do plików i katalogów chmod - zmienia uprawnienia do pliku (katalogu) Przykłady: chmod u+rwx,g=rx,o=x katalog chmod 751 katalog -3- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 3. Strumienie i przetwarzanie potokowe Celem ćwiczenia jest poznanie podstawowych zasad przekierowywania strumieni wejściowych i wyjściowych oraz podstaw przetwarzania potokowego. 3.1. Przekierowywanie strumieni wejściowego i wyjściowego > - przekierowuje wyjście do pliku >> - dopisuje wyjście do pliku 2> - przekierowuje błędy do pliku 2>/dev/null - ignoruje błędy < - przekierowuje wejście z pliku Przykłady: ls –lR / 2>/dev/null - wypisuje wszystkie pliki wraz z atrybutami, pomiń błędy cat < plik > plik2 - kopiuje zawartość pliku plik do pliku plik2 3.2. Przetwarzanie potokowe | - przekierowuje wyjście polecenia do wejścia kolejnego polecenia Przykłady: ls –l | more - wypisuje pliki z atrybutami strona po stronie grep ^s /etc/passwd | cut –d: -f 1 | more - wyodrębnia identyfikatory użytkowników na literę s 3.3. Polecenia przydatne w przetwarzaniu potokowym more - wypisuje zawartość pliku zatrzymując się po każdym pełnym ekranie less - umożliwia przeglądanie zawartości dużych plików grep - poszukuje wyrażeń regularnych w liniach pliku cut - wycina fragment tekstu sed - zamienia teksty w pliku sort - sortuje 3.4. Wyrażenia regularne - przypomnienie ^ - początek tekstu $ - koniec tekstu . - dowolny znak [] - dowolny z wymienionych znaków [^] - żaden z wymienionych znaków ? - powtarza się zero albo jeden raz -4- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia + - powtarza się raz lub więcej razy * - powtarza się dowolną liczbę razy () - grupuje fragment wyrażenia {3} - powtarza się określoną liczbę razy (3) {3,5} - powtarza się określoną liczbę razy (od 3 do 5) {3,} - powtarza się określoną liczbę razy (3 albo więcej razy) -5- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 4. Kompresja i archiwizacja plików Celem ćwiczenia jest poznanie podstawowych poleceń służących do kompresji i archiwizacji plików oraz utrwalenie umiejętności przekierowywania strumieni wejściowych i wyjściowych oraz przetwarzania potokowego. 4.1. Kompresor gzip Kompresor gzip wykorzystujący algorytmy kompresji LZW zastąpił w systemach Unix kompresor compress, który bazował na kodowaniu Huffmana. Kompresor gzip służy do bezstratnej, odwracalnej kompresji pojedynczego pliku. Dekompresorem jest gunzip. Kompresor gzip i dekompresor gunzip, jak wszystkie standardowe polecenia, mogą być używane w połączeniu z przekierowywaniem strumieni wejściowych i wyjściowych oraz w przetwarzaniu potokowym. W kompresorze tym można sterować balansem pomiędzy szybkością działania a stopniem kompresji za pomocą parametrów od -1 do -9. Przykłady: Kompresja zawartości pliku: ls –l gzip plik ls -l Dekompresja skompresowanego pliku: gunzip plik.gz Kompresja najszybsza: gzip -1 plik ls -l Kompresja najsilniejsza: gunzip plik.gz gzip -9 plik ls –l gunzip plik 4.2. Kompresor bzip2 Kompresor bzip2 wykorzystuje spostrzeżenie, że dla dużych plików stopień kompresji algorytmów LZW jest większy jeżeli najczęściej powtarzające się elementy znajdują się na początku pliku. Modyfikacja algorytmów LZW o algorytm odwracalnego sortowania zawartości plików przed kompresją pozwala uzyskać znacznie większy stopień kompresji. Poprawa jakości kompresji w stosunku do kompresora gzip odbywa się kosztem czasu kompresji i ilości potrzebnej pamięci w czasie kompresji. Podobnie jak dla kompresora gzip można sterować balansem pomiędzy szybkością działania a stopniem kompresji za pomocą parametrów od -1 do -9. Zwykle, dla dużych plików (kilkadziesiąt, kilkaset KiB) nawet najszybsza (-1) kompresja bzip2 jest skuteczniejsza od najlepszej (-9) kompresji gzip. Kompresor bzip2 nie jest standardowym składnikiem wszystkich dystrybucji Linuksa. Przykłady: Kompresja zawartości pliku: -6- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia ls –l bzip2 plik ls -l Dekompresja skompresowanego pliku: bunzip2 plik.bz2 Kompresja najszybsza: bzip2 -1 plik ls -l Kompresja najsilniejsza: bunzip2 plik.bz2 bzip2 -9 plik ls –l bunzip2 plik 4.3. Archiwizator tar Archiwizator tar pozwala na połączenie wielu plików w jedno archiwum. Zachowuje on również charakterystyczne dla systemu Unix atrybuty plików takie jak: czasy utworzenia, dostępu i modyfikacji, informacje o właścicielu i grupie oraz uprawnienia. Archiwizator tar, którego nazwa pochodzi od ang. Tape Archivizer, traktuje archiwum jak zapisane ta taśmie o wyłącznie sekwencyjnym dostępie i dlatego przy aktualizacji zawartości archiwum nie nadpisuje poprzednich wersji plików tylko dołącza kolejne ich wersje na końcu. W archiwum tar może się zatem znajdować wiele plików o takiej samej nazwie. Parametry polecenia tar: c - utwórz archiwum t - testuj (listuj) zawartość archiwum u - aktualizuj zawartość archiwum (dodawanie nowych i zmienionych plików) x - wyodrębnij pliki z archiwum f nazwa.tar - nazwa pliku archiwum v - pracuj w trybie gadatliwym vv - pracuj w trybie bardzo gadatliwym Przykłady: Utwórz archiwum w pliku arch1.tar z plików o nazwach rozpoczynających się od litery p: tar –c –f arch1.tar p* Wyświetl zawartość archiwum w trybie gadatliwym: tar –tvf arch1.tar Zaktualizuj archiwum o zmieniony plik touch plik tar –uvvf arch1.tar plik tar –tvf arch1.plik -7- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 4.4. Archiwizacja z kompresją Archiwizator tar standardowo nie stosuje żadnej kompresji. Rozmiar archiwum tar jest większy od sumy rozmiarów znajdujących się w nim plików. Z wykorzystaniem przekierowania strumieni i przetwarzania potokowego można tworząc archiwum wykonać kompresję jego zawartości. tar –c plik* | gzip > arch2.tgz Podobnie przy wyodrębnianiu plików można wykonać dekompresję. gunzip < arch2.tgz | tar -xv Najnowsze dystrybucje Linuksa zawierają archiwizator tar obsługujący kompresje gzip i bzip2 za pomocą dodatkowych parametrów z i j. z - użyj kompresji gzip w odniesieniu do całej zawartości archiwum j - użyj kompresji bzip2 w odniesieniu do całej zawartości archiwum tar –czvf arch3.tgz plik* tar –cjvf arch4.tbz plik* 4.5. Zadanie sprawdzające Zapisz w pliku o nazwie entki.gz skompresowaną listę imion i nazwisk tylko studentek z roku. Lista powinna być posortowana według nazwisk. Listę studentek należy wyodrębnić z pliku /etc/passwd na podstawie ostatniej litery imienia (a). Zadanie powinno zostać wykonane w jednym poleceniu z wykorzystaniem symboli specjalnych | i >. -8- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 5. Edycja tekstów z użyciem edytora vi Celem ćwiczenia jest opanowanie podstawowych umiejętności edycji tekstów w edytorze vi (vim). Instrukcja zawiera skróconą wersję listy najczęściej wykorzystywanych poleceń edycyjnych. 5.1. Tryby pracy edytora vi Edytor vi posiada dwa charakterystyczne tryby pracy: tryb poleceń, w którym klawiszom alfanumerycznym i ich sekwencją są przypisane czynności do wykonania oraz trybem edycji, w którym klawiatura służy do wprowadzania tekstu. W rozszerzonej wersji edytora vi odmianą trybu poleceń jest tryb wizualny, w którym można zaznaczać fragmenty tekstu w sposób wizualny. Powrót do trybu poleceń następuje po przyciśnięciu przycisku ESC. Polecenia w trybie poleceń nie wymagają potwierdzania klawiszem Enter z wyjątkiem poleceń rozpoczynających się od dwukropka (:) i innych, dla których parametry edytuje się w dolnym wierszu edytora. Każde z poleceń można poprzedzić liczbą całkowitą, która powoduje wielokrotne wykonanie polecenia np. dd – usuwa jedną linię tekstu, 15dd usuwa 15 kolejnych linii tekstu. 5.2. Uruchamianie edytora vi Edytor vi najwygodniej uruchamiać od razu podając nazwę pliku do edycji. Jeżeli plik istnieje to zostanie otwarty, a jeżeli nie istnieje to zostanie utworzony nowy, pusty plik o podanej nazwie. vi tekst 5.3. Kończenie pracy z edytorem vi Polecenia należy wydawać w trybie poleceń albo poprzedzić naciśnięciem klawisza ESC. :q :x :wq ZZ :q! - zakończ (działa tylko jeśli nie wprowadzono zmian do tekstu albo zmiany zostały zapisane) - zapisz zmiany i zakończ - zapisz zmiany i zakończ - zapisz zmiany i zakończ - zakończ bez zapisywania zmian wprowadzonych w tekście 5.4. Przesuwanie kursora Na większości terminali poprawnie działają przyciski sterowania kursorem wraz z Home, End, PgUp i PgDn. W wersji uproszczonej przesuwanie kursora w trybie poleceń zapewniają polecenia: h j k l 0 $ gg G :n Ctrl-f Ctrl-b - w lewo - w dół - w górę - w prawo - do początku linii - do końca linii - do początku tekstu - do końca tekstu - do linii numer n - ekran w dół - ekran w górę -9- Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 5.5. Przejście do trybu edycji i I a A o O r R - wstawianie nowych znaków przed pozycją kursora - wstawianie nowych znaków na początku linii - wstawianie nowych znaków za pozycją kursora - wstawianie nowych znaków na końcu linii - wstawianie w nowej linii poniżej bieżącej - wstawianie znaków w nowej linii powyżej bieżącej - zastąpienie jednego znaku - zastępowanie znaków (nadpisywanie) 5.6. Usuwanie tekstu Usuwanie tekstu umieszcza go w buforze tymczasowym, z którego tekst można np. wstawić w innym miejscu poleceniami p albo P. x - usuwa znak w pozycji kursora X - usuwa znak przed kursorem dkursor - usuwa znaki w kierunku wskazanym przez polecenie przesunięcia kursora np.: d0 usuwa znaki od początku linii do pozycji kursora dd - usuwa cały bieżący wiersz 5.7. Cofanie i powtarzanie zmian Cofanie ostatnio wykonanych operacji edycyjnych możliwe jest wielokrotnie pozwalając wycofać nawet wszystkie wprowadzone w tekście zmiany. u . - cofa ostatnią operację edycyjną - (kropka) powtarza ostatnią operację edycyjną 5.8. Schowek i tryb wizualny Zaznaczanie tekstu możliwe jest w wersji rozszerzonej edytora vi. Zaznaczanie wykonujemy w trybie wizualnym, który rozpoczyna polecenie v albo V. Polecenie V zaznacza całe linie tekstu. Zaznaczanie wykonujemy przesuwając kursor. Zaznaczony blok tekstu możemy usunąć poleceniem d albo skopiować do bufora poleceniem y. yy - skopiowanie do bufora bieżącej linii y - skopiowanie do bufora w kierunku wskazanym przez polecenie przesunięcia kursora np.: y$ skopiowanie znaków od pozycji kursora do końca linii p - wstawienie zawartości bufora poniżej bieżącej linii P - wstawienie zawartości bufora powyżej bieżącej linii Wszystkie polecenia usuwające tekst, przenoszą go do bufora tymczasowego (odpowiednik polecenia wytnij). Edytor vi pozwala na posługiwanie się dodatkowymi 26 buforami nazwanymi. Polecenia dotyczące buforów nazwanych należy poprzedzać symbolem podwójnego cudzysłowu i literą alfabetu łacińskiego będącą nazwą bufora np.: ”byy ”bp - kopiuje bieżącą linię do bufora o nazwie b - wstawia zawartość bufora o nazwie b poniżej bieżącej linii - 10 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 5.9. Wyszukiwanie i zamiana We wszystkich poleceniach wyszukiwania tekstu wzorzec tekstu do poszukiwania jest interpretowany jak wyrażenie regularne. Polecenia wyszukiwania i zamiany należy kończyć klawiszem Enter. /znajdź / ?znajdź ? - szukaj wzoru znajdź w kierunku końca tekstu - powtórz ostatnie wyszukiwanie w kierunku końca tekstu - szukaj wzoru znajdź w kierunku początku tekstu - powtórz ostatnie wyszukiwanie w kierunku początku tekstu :g/znajdź/s//zamień - zamień pierwsze wystąpienie tekstu znajdź tekstem zamień w każdej linii - zamień każde wystąpienie tekstu znajdź tekstem zamień w każdej linii :g/znajdź/s//zamień/g :g/znajdź/s//zamień/gc - zamień każde wystąpienie tekstu znajdź tekstem zamień po potwierdzeniu :g/wzór/s/znajdź/zamień/g - zmień każde wystąpienie tekstu znajdź tekstem zamień w liniach pasujących do wyrażenia regularnego wzór. 5.10. Operacje na plikach :w :w nazwa :r nazwa :e nazwa - zapisz - zapisz kopię bieżącego tekstu w pliku nazwa (nadal edytowany jest otwarty plik) - wstaw zawartość pliku nazwa w linii poniżej bieżącej - przejdź do edycji pliku nazwa Edytor vi koloruje automatycznie składnię plików większości najpopularniejszych języków programowania. Kolorowanie składni można wyłączyć. :syntax off :syntax on - wyłączenie kolorowania składni pliku - włączenie kolorowania składni pliku 5.11. Inne popularne edytory tekstowe Edytor nano jest ulepszoną wersją edytora pico, który jest częścią programu pocztowego pine. W edytorze tym dostępne polecenia są wypisane w dwóch dolnych liniach terminala, a ich użycie polega na wybraniu odpowiedniej kombinacji łącznie z klawiszem Ctrl. Np.: Ctrl-O Zapisz. Edytor mcedit jest częścią menadżera plików mc. Oferuje podstawowe operacje edycyjne, kolorowanie składni najpopularniejszych języków programowania i plików konfiguracyjnych. Obsługa poleceń wywoływana jest za pomocą przycisków funkcyjnych F1-F10. Lista poleceń wyświetlana jest w dolnym wierszu terminala. Na terminalach, na których nie działają przyciski funkcyjne można je zastąpić sekwencją przycisków ESC i cyfra. - 11 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 6. Wprowadzenie do skryptów powłoki bash Celem ćwiczenia jest doskonalenie umiejętności edycji tekstów w edytorze vi oraz zdobycie podstawowych umiejętności dotyczących pisania skryptów powłoki bash. Podstawowe instrukcje strukturalne oraz operatory relacji i standardowe testy dostępne w powłoce bash zostały podane na wykładach. 6.1. Skr1 – pierwszy skrypt Uruchomienie skryptu wymaga wpisania jego zawartości do pliku, nadanie dla pliku atrybutu x oraz jego uruchomienie. Dołączenie do nazwy skryptu rozszerzenia .sh pozwoli edytorowi vi na właściwe podświetlanie składni w czasie edycji. Polecenia do wykonania: vi skr1.sh #edycja (i – do trybu wpisywania, ESC :wq – zapisz i zakończ chmod u+x skr1.sh ./skr1.sh Treść skryptu skr1 do wpisania: #!/bin/bash echo "Hello!" Komentarz znajdujący się w pierwszej linii skryptu i rozpoczynający od wykrzyknika określa właściwy interpreter dla poleceń zawartych w skrypcie. Umożliwia to pisanie skryptów w różnych interpretowanych językach skryptowych dostępnych w danym systemie. Warto tu również zauważyć, że programy (skrypty), które nie są umieszczone w katalogach bin, sbin i innych znajdujących się na liście zmiennej środowiskowej PATH, należy uruchamiać podając ścieżkę dostępu do ich lokalizacji tu: ./ w katalogu bieżącym. 6.2. Skr2 – zmienne Skrypt ma pokazać różnice pomiędzy ujmowaniem zmiennych w pojedynczych i podwójnych cudzysłowach. Zmienne przechowują wartości, które są interpretowane albo jako napisy albo jako liczby całkowite (w reprezentacji 64-bitowej ze znakiem). #!/bin/bash echo "Zmienne" zm=5 echo 'Zmienna = $zm' echo "Zmienna = $zm" Przypisując wartość do zmiennej nie należy używać spacji wokół znaku równości (=). Odczytując wartość zmiennej należy zawsze poprzedzić nazwę zmiennej symbolem dolara ($). 6.3. Skr3 – parametry uruchamiania skryptu #!/bin/bash echo "Parametry skryptu" echo "Nazwa skryptu $0" echo "Liczba parametrów $#" - 12 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia echo "Pierwszy parametr $1" echo "Drugi parametr $2" Uruchom ./skr3.sh bez parametrów i z parametrami np. ./skr5.sh jeden; ./skr3.sh jeden dwa trzy cztery; 6.4. Skr4 – obliczenia arytmetyczne Obliczenia arytmetyczne wykonywane są zawsze na liczbach całkowitych. Obliczane wyrażenie powinno zostać otoczone podwójnymi nawiasami poprzedzonymi symbolem dolara. Dopuszczalne jest używanie operatorów takich jak w języku C (+, -, *, /, %) z dodatkowym operatorem potęgowania oznaczanym podwójną gwiazdką (**). #!/bin/bash echo "Obliczenia" zm=5 zm=$(($zm+2)) echo "5 + 2 = $zm" 6.5. Skr5 – instrukcja warunkowa if Test –z pozwala sprawdzić czy następujący po nim tekst jest pusty. Brak tekstu za testem –z nie jest interpretowany jako błąd składni skryptu. #!/bin/bash echo "Kalkulator" if [ -z $1 ]; then echo "Używaj np. $0 2+2" else echo $(($1)) fi Klauzula else nie jest konieczna w poleceniu if. Pomiędzy słowami then a else i else a fi może znajdować się dowolna liczba instrukcji. Uruchom ./skr5.sh bez parametrów i z parametrem np. ./skr5.sh 2*3+4; ./skr5.sh 2**63-1; 6.6. Skr6 – instrukcja iteracyjna while #!/bin/bash echo "Odliczanka" zm=10 while [ $zm -ge 0 ]; do echo $zm zm=$(($zm-1)) sleep 1 done Przypomnienie: operatory relacji znane z języka C (==, !=, <, <=, >, >=) służą w powłoce bash do porównywania tekstów, a do porównywania wartości liczbowych używa się operatorów -eq, -ne, -lt, -le, -gt, -ge. Ćwiczenie samodzielne: Połącz umiejętności ze skryptów 3, 5 i 6 pisząc skrypt umożliwiający sterowanie za pomocą parametrów początkową wartością licznika i opóźnieniem pojawiania się kolejnych liczb. - 13 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia Opóźnienie w większości dystrybucji Linuksa może zawierać ułamkową liczbę sekund np. 0.2. Skrypt powinno się dać uruchomić na trzy sposoby 1. bez parametrów (10 powtórzeń, 1s opóźnienia); 2. Z jednym parametrem (zadana liczba powtórzeń, 1s opóźnienia); 3. Z dwoma parametrami (zadana liczba powtórzeń i zadane opóźnienie). Np.: ./skr7.sh; ./skr7.sh 5; ./skr7.sh 20 0.25; 6.7. Skr7 – przykładowe rozwiązanie ćwiczenia #!/bin/bash echo "Odliczanka" if [ -z $1 ]; then liczba=10 else liczba=$1 fi if [ -z $2 ]; then opozn=1 else opozn=$2 fi while [ $liczba -ge 0 ]; do echo $liczba; liczba=$(($liczba-1)) sleep $opozn done Ten skrypt można uruchamiać na trzy sposoby 1. bez parametrów (10 powtórzeń, 1s opóźnienia); 2. Z jednym parametrem (zadana liczba powtórzeń, 1s opóźnienia); 3. Z dwoma parametrami (zadana liczba powtórzeń i zadane opóźnienie). Wypróbuj: ./skr7.sh; ./skr7.sh 5; ./skr7.sh 20 0.25; 6.8. Skr8 – operacje na plikach i katalogach Skrypt kopiuje wszystkie skrypty (i inne programy) z katalogu domowego użytkownika do podkatalogu kopia w katalogu domowym. Katalog kopia jest tworzony w razie potrzeby. #!/bin/bash echo "Backup skryptów" #utworzenie folderu kopia if [ -d ~/kopia ]; then echo "Folder kopia już istnieje" else mkdir ~/kopia echo "Folder kopia został utworzony" fi #przeszukanie wszystkich plików w poszukiwaniu skryptów for p in $(ls ~/); do if [ -f ~/$p -a -x ~/$p ]; then echo "Skrypt $p - kopiuje" cp ~/$p ~/kopia/ else echo "Inny plik $p - pomijam" - 14 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia fi done Wynik działania polecenia umieszczonego w nawiasach poprzedzonych symbolem dolara jest przekazywany do skryptu w miejsce wywołania. Wynikiem jest tekst, który powinien się pokazać na konsoli. 6.9. Skr9 – porównywanie czasu modyfikacji plików Testy -nt oraz –ot (nowszy niż, starszy niż) pozwalają porównywać czasy modyfikacji dwóch plików. W skrypcie 9 zostały wykorzystane do kopiowania wyłącznie nowych albo zmienionych skryptów z katalogu domowego do podkatalogu kopia. #!/bin/bash echo "Backup skryptów - wersja lepsza" #utworzenie folderu kopia if [ -d ~/kopia ]; then echo "Folder kopia już istnieje" else mkdir ~/kopia echo "Folder kopia został utworzony" fi #przeszukanie wszystkich plików w poszukiwaniu skryptów for p in $(ls ~/); do if [ -f ~/$p -a -x ~/$p ]; then echo "Skrypt $p" if [ -f ~/kopia/$p ]; then echo " jest w folderze kopia" if [ ~/$p -nt ~/kopia/$p ]; then #-nt (nowszy) echo " jest zmieniony - kopiuje" cp ~/$p ~/kopia/ else echo " jest aktualny - pomijam" fi else #brak skryptu w folderze kopia echo " nowy - kopiuje" cp ~/$p ~/kopia/ fi else echo "Inny plik $p - pomijam" fi done - 15 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 7. Wprowadzenie do administrowania systemem Celem ćwiczenia jest zapoznanie się z podstawowymi zagadnieniami związanymi z administrowaniem kontami użytkowników i oprogramowaniem w systemie operacyjnym Linux na przykładzie dystrybucji Knoppix. Knoppix jest pochodną dystrybucji Debian. Analogicznie operacje można wykonać w innych dystrybucjach bazujących na Debianie takich jak Ubuntu albo Mint. W dystrybucjach bazujących na dystrybucji RedHat (Fedora, CentOS, Scientific Linux) zamiast polecenia apt-get używa się polecenia yum, a zamiast udpate-rc.d – chkconfig. 7.1. Uruchamianie poleceń z uprawnieniami administratora Uruchomienie polecenia z uprawnieniami administratora wymaga poprzedzenia polecenia komendą sudo. Lista użytkowników, którzy mają prawo do używania polecenia sudo i lista poleceń, których to dotyczy są przechowywane w pliku konfiguracyjnym /etc/sudoers. Jeżeli chcemy czasowo przełączyć się na konto administratora, w celu wykonania zestawu poleceń wymagających uprawnień administracyjnych, można to wykonać albo za pomocą polecenia sudo su jeśli użytkownik ma prawo do używania sudo, albo za pomocą polecenia su jeśli użytkownik zna hasło administratora. W systemie Knoppix użytkownik knoppix ma prawo do uruchamiania wszystkich programów za pośrednictwem sudo bez konieczności potwierdzania uprawnień hasłem. W typowej konfiguracji sytemu, przy pierwszym poleceniu sudo w ramach danej sesji, pojawia się monit o hasło użytkownika. Przykładowe polecenia do wykonania: Edycja nazwy komputera: vi /etc/hostname Uruchomiony przez zwykłego użytkownika edytor vi otworzy plik systemowy /etc/hostname w trybie tylko do odczytu. Aby można było zapisywać zmiany wprowadzone w pliku należącym do administratora powinno się polecenie poprzedzić komendą sudo. sudo vi /etc/hostname Ze względów bezpieczeństwa zaleca się nie pracować, o ile nie jest to konieczne, jako użytkownik root, dla którego nie są kontrolowane uprawnienia. Lepiej rozdysponować uprawnienia do poszczególnych zadań w systemie dla użytkowników pełniących funkcje administracyjne za pomocą dodatkowych grup i przypisać im uprawnienia do wykonywania właściwych poleceń przez sudo. 7.2. Podłączanie zewnętrznych pamięci masowych Dołączenie do drzewa katalogów w systemie plików pamięci przenośnej realizuje się za pośrednictwem polecenia mount. Np.: sudo mount /dev/sdb1 /mnt/pen Zaleca się aby katalog, w którym montujemy zewnętrzną pamięć był pusty i oczywiście musi on istnieć. Dla większości systemów plików typ zostanie rozpoznany automatycznie ale można go wskazać parametrem –t. Listę obsługiwanych systemów plików można odczytać z pliku /proc/filesystems. Listę wszystkich partycji na wszystkich urządzeniach wyświetla polecenie: sudo fdisk –l. - 16 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia Jest ono pomocne przy identyfikacji właściwego oznaczenia np. zewnętrznej pamięci typu PenDrive. Polecenie mount bez parametrów wyświetla listę aktualnie zamontowanych systemów plików, a polecenie df ilość zajętego i wolnego miejsca w poszczególnych systemach plików. Należy pamiętać o odmontowaniu napędu przed jego odłączeniem. Odmontować można albo napęd albo folder, w którym jest on zamontowany. sudo umount /dev/sdb1 Uwaga! Odłączenie napędu przed jego odmontowaniem może spowodować awarię znajdującego się w napędzie systemu plików i bezpowrotną utratę przechowywanych tam danych. 7.3. Instalowanie programów z repozytoriów Instalowanie programów realizuje się za pomocą polecenia apt-get. Przed pierwszym użyciem należy zaktualizować listę repozytoriów i listę dostępnego oprogramowania. sudo apt-get update Przy instalacji jako parametr polecenia apt-get należy podać tylko nazwę programu bez numeru wersji np. nano. Menedżer pakietów apt-get sam wyszuka najnowszą wersję i porówna z aktualnie zainstalowaną w systemie. sudo apt-get install nano Polecenie apt-get rozwiązuje wszystkie zależności między programami proponując automatyczne zainstalowanie niezbędnych bibliotek i zależnych programów. Przeszukiwanie listy oprogramowania w repozytoriach ułatwia polecenie apt-cache. Przykładowo jeśli chcemy poszukać programów, które w nazwie albo w opisie używają słowa nano można to wykonać poleceniem: apt-cache search nano Wyświetlenie informacji o programie nano: apt-cache show nano Aktualizacja wszystkich programów i bibliotek zainstalowanych w systemie: sudo apt-get upgrade Odinstalowanie programu o nazwie nano: sudo apt-get remove nano 7.4. Uruchamianie usług Standardowa metoda instalacji i uruchamiania usług systemowych zakłada, że każda aplikacja, która może być usługą, posiada w katalogu /etc/init.d/ skrypt startowy. Skrypty startowe z katalogu /etc/init.d/ można uruchamiać z parametrami start i stop. Często realizują one również dodatkowe funkcje takie jak: status, reload, restart itp. Przykładowo uruchomienie usługi serwera WWW z zainstalowaną aplikacją apache2 wymaga wydania polecenia: sudo /etc/init.d/apache2 start albo prościej - 17 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia sudo service apache2 start Można sprawdzić działanie serwera wpisując w przeglądarce adres http://localhost. Pliki dostępne przez usługę WWW zwykle umieszczone są w katalogu /var/www/html. Aby usługa uruchamiała się automatycznie przy każdym uruchomieniu systemu, konieczne jest utworzenie linków symbolicznych do skryptu startowego usługi w folderach /etc/rcX.d. W systemach opartych na dystrybucji Debian służy do tego gotowy skrypt o nazwie update-rc.d. sudo update-rc.d apache2 defaults Wstrzymanie automatycznego uruchamiania usługi: sudo update-rc.d apache2 remove Aktualny stan wszystkich usług można wyświetlić za pomocą polecenia: sudo service –staus-all 7.5. Konta użytkowników Do obsługi kont użytkowników służą polecenia useradd, usermod, userdel, groupadd, groupdel, chfn, passwd itp. Informacje o kontach użytkowników zapisywane są w plikach /etc/passwd (wszystko oprócz hasła) i w pliku /etc/shadow (hasło i terminy jego ważności). Plik /etc/passwd może być odczytywany przez wszystkich użytkowników w systemie, a plik /etc/shadow wyłącznie przez system. Założenie nowej grupy użytkowników o nazwie studenci: sudo groupadd studenci Założenie konta nowego użytkownika jasio: sudo useradd –s /bin/bash –g studenci –d /home/jasio –m jasio Zakładając konto użytkownika należy podać właściwą dla niego powłokę (-s), lokalizację katalogu domowego (-d) oraz grupę podstawową (-g). Opcja –m powoduje utworzenie katalogu domowego, skopiowanie do niego zawartości katalogu /etc/skel i nadanie właściwych uprawnień do plików. Dodatkowo zakładając konto można podać wiele innych parametrów jak opis konta (-c), lista grup dodatkowych (-G) czy zakodowane hasło użytkownika (-p). Aby użytkownik mógł korzystać z konta należy ustalić hasło dla konta: sudo passwd jasio Wszystkie parametry konta można modyfikować poleceniem usermod. Przykładowo dopisanie użytkownika jasio do dodatkowej grupy users: sudo usermod –G users jasio Uwaga. Użycie opcji –G w poleceniu usermod usuwa użytkownika z wszystkich grup dodatkowych i dodaje go ponownie tylko do grup wymienionych po parametrze –G. Należy pamiętać aby zawsze podawać kompletną listę grup dodatkowych. Polecenie chfn ustala komentarz konta interpretowany jako nazwę (imię i nazwisko), dział, telefon itp. Polecenie odpytuje kolejno o poszczególne wartości. Odczyt atrybutów komentarza konta jest dostępny poleceniem finger. Dla kont używanych do nadawania uprawnień, które nie służą do uwierzytelniania, jako powłokę podaje się /bin/false albo /bin/nologin. - 18 - Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia 7.6. Dostęp zdalny Dostęp zdalny realizowany za pomocą bezpiecznego szyfrowanego połączenia SSH jest możliwy po uruchomieniu tej usługi: sudo service ssh start Automatyczne uruchamianie usługi wraz ze startem systemu: sudo update-rc.d ssh defaults Połączenie ze zdalnym systemem: ssh [email protected] Przy pierwszym połączeniu ze zdalnym hostem pojawi się monit o zaakceptowanie certyfikatu hosta. Należy odpowiedzieć pełnym słowem yes. Ten monit pojawia się tylko w dwóch sytuacjach – jeżeli jest to pierwsze połączenie pomiędzy hostami albo jeżeli zmieniony został certyfikat zdalnego hosta. Nieoczekiwane pojawienie się monitu w czasie jednego z kolejnych połączeń może świadczyć o próbie przejęcia połączenie w tzw. ataku Men In The Middle – koniecznie należy się upewnić, co jest przyczyną zmiany certyfikatu przed jego zaakceptowaniem. Wymaga to dodatkowo wykasowania odpowiedniej linii z pliku ~/.ssh/known_hosts. Zakończenie połączenia zdalnego następuje po wydaniu polecenia exit albo polecenia logout. Usługa ssh oferuje również możliwość bezpiecznego kopiowania szyfrowanym kanałem plików z/do zdalnego hosta. Służy do tego polecenie scp o składni zbliżonej do polecenia cp. Przykład kopiowania pliku o nazwie plik z katalogu domowego do katalogu /home/student na komputerze o adresie 10.1.0.204 z uprawnieniami użytkownika student na zdalnym systemie: scp ~/plik [email protected]:/home/student/ W analogiczny sposób można plik kopiować w odwrotnym kierunku – ze zdalnego komputera do lokalnego: scp [email protected]:/home/student/plik ./ Przy każdym kopiowaniu z wykorzystaniem zdalnego systemu pojawi się pytanie o hasło użytkownika zdalnego niezbędne do uwierzytelnienia operacji w zdalnym systemie. - 19 -