Moduł 3

Materiały do zajęć z Systemów operacyjnych prowadzonych na Wydziale Matematyki i Informatyki Uniwersytetu im. Adama Mickiewicza w Poznaniu.

« Wróć do spisu materiałów

Kilku nowych przyjaciół

Polecenia finger i passwd

Na pierwszych ćwiczeniach poznaliśmy polecenie who, pozwalające dowiedzieć się, którzy użytkownicy korzystają z systemu. Podobne działanie oferuje program finger, który jednak pozwala poznać szczegółowe informacje o tych użytkownikach.

Sprawdź działanie programu finger. Wywołaj go z opcją -l i porównaj otrzymane efekty. Jakie informacje można w ten sposób uzyskać?

Dowiedz się, do czego służy program passwd. Jeśli chcesz, możesz zmienić swoje hasło do sieci wydziałowej, wywołując go bez argumentu.[1] Spróbuj też zmienić hasło innego użytkownika. Czy jest to możliwe? Jak myślisz, kto może zmienić hasło dowolnego użytkownika systemu?

[1] Konfiguracja wydziałowej sieci sprawia, że wywołanie programu passwd z konta uwierzytelnionego przy pomocy protokołu Kerberos pozwoli na zmianę hasła wykorzystywanego do dostępu do wszystkich usług sieciowych.

Filtry wc, cut, tr oraz uniq

Nauczyliśmy się już korzystać z filtrów cat, tac, head, tail, sort oraz grep. W codziennej pracy mogą się jednak przydać także poniższe.

O zachowaniu wymienionych dalej programów będziemy mówić w kontekście operowania na danych pochodzących ze standardowego wejścia. Każdy z nich radzi sobie jednak równie dobrze z plikami – wystarczy podać ich nazwy jako argumenty.

Program wc (ang. word count) pozwala badać liczebność (w sensie pewnych miar) danych ze standardowego wejścia. Przydatne opcje:

-cwypisz liczbę bajtów (rozmiar pliku w bajtach)
-mwypisz liczbę znaków
-lwypisz liczbę wierszy
-wwypisz liczbę wyrazów
-Lwypisz długość najdłuższej linii

Do ilu elementów katalogu /etc inni użytkownicy (other) mają prawo odczytu?

Zobacz odpowiedź

$ ls -l /etc | tail -n +2 | grep '^.\{7\}r' | wc -l

Program cut pozwala wpłynąć na ograniczanie danych ze standardowego wejścia w poziomie (według kolumn). Przydatne opcje:

-b XXXwypisz tylko wskazane bajty, np. 1,4, 1-5 itp.
-c XXXwypisz tylko wskazane znaki
-d XXXustaw ogranicznik kolumn na XXX
-f XXXwypisz tylko wskazane pola (kolumny)
-snie wypisuj linii, które nie zawierają żadnego ogranicznika kolumn

Wyświetl listę uprawnień (i tylko uprawnień) do elementów katalogu /etc.

Zobacz odpowiedź

$ ls -l /etc | tail -n +2 | cut -c 2-10

W pliku /etc/passwd znajduje się lista lokalnych użytkowników systemu. Ogranicz ją do nazwy użytkownika (pierwsza) i nazwy powłoki, z której ten użytkownik korzysta (ostatnia kolumna).

Zobacz odpowiedź

$ cat /etc/passwd | cut -d : -f 1,7

Program tr pozwala na zamianę znaków z jednego ciągu na te z drugiego ciągu znaków.

-dzamiast zamieniać, usuń wskazane znaki
-szamień ciągi wskazanych znaków na ich pojedyncze wystąpienie

Zmodyfikuj rozwiązanie poprzedniego ćwiczenia tak, aby poszczególne kolumny oryginalnego pliku /etc/passwd były rozdzielone znakiem tabulatora.

Zobacz odpowiedź

$ cat /etc/passwd | cut -d : -f 1,7 | tr ":" "\t"

Wyświetl listę lokalnych użytkowników systemu w postaci nazw użytkowników oddzielonych znakiem przecinka.

Zobacz odpowiedź

$ cat /etc/passwd | cut -d : -f 1 | tr "\n" ","

Program uniq pozwala badać unikalność wierszy na standardowym wejściu. Przydatne opcje:

-cwyświetl statystykę częstości występowania poszczególnych wierszy
-dwypisz te linie, które się powtarzają
-iignoruj wielkość liter
-uwypisz te linie, które się nie powtarzają

Wyświetl statystykę częstości występowania poszczególnych uprawnień dla członków grup (group) do elementów w katalogu /etc.

Zobacz odpowiedź

$ ls -l /etc | tail -n +2 | cut -c 5-7 | sort | uniq -c

Uniwersytet Biurokratyczny zatrudnił Cię na stanowisku młodszego administratora kont studenckich. Dostarczono Ci archiwum students.zip, zawierające kartoteki studentów w formie plików txt o nazwach postaci imię_nazwisko.txt. Jako że jutro ma się rozpocząć kontrola Państwowej Komisji Biurokratycznej, musisz pilnie udzielić rektorowi odpowiedzi na następujące pytania:

  1. Ilu jest studentów?
  2. Ile różnych imion mają studenci?
  3. Ilu studentów ma imię o długości 5 znaków?
  4. Ilu jest studentów, których imię kończy się na "e", a nazwisko na "o"?
  5. Jak rozkłada się częstość występowania kolejnych liter na drugim miejscu w nazwisku?

Zaproponuj po jednym poleceniu, zwracającym odpowiednie dane.

Program more, czyli starszy brat programu less

Zanim program less osiągnął popularność, do wygodnego wyświetlania długich danych wykorzystywano program more. Jego możliwości są jednak ubogie (w porównaniu do programu less), dlatego pominiemy jego dokładny opis.

Korzystając z podręcznika programu more, zapoznaj się z jego obsługą. Jakie największe, Twoim zdaniem, wady ma ten program?

Porównywanie plików – programy diff i cmp

Czasami zachodzi potrzeba porównania zawartości dwóch plików, choćby po to, aby łatwo dostrzec, w których miejscach zostały wprowadzone zmiany. Do tego zadania służą programy diff i cmp.

Zapoznaj się z podręcznikami programów diff i cmp. Przetestuj ich działanie w praktyce.

Kilka poleceń związanych z pracą w sieci

Wiele współczesnych programów korzysta z zasobów sieciowych. Na przykład, gdy aktualizujemy oprogramowanie zainstalowane w komputerze (choćby samo nie wymagało połączenia z siecią), odpowiednie pliki pobieramy z internetu.

Systemy uniksopodobne, w tym Linux, udostępniają narzędzia do zarządzania komputerem jako urządzeniem sieciowym.

Program ifconfig pozwala zarządzać interfejsami sieciowymi komputera, w tym włączać je i wyłączać oraz wyświetlać informacje o ich statusach. W chwili obecnej, ze względu na swoją przestarzałość, program ifconfig jest wypierany przez oprogramowanie z pakietu iproute2.

Zapoznaj się z dokumentacją programu ifconfig. Jakie operacje można wykonać za jego pomocą?

Program ping pozwala wysłać do zdalnego hosta żądanie ECHO_REQUEST w ramach protokołu ICMP. Przydatne opcje:

-c Xwyślij X żądań
-ftryb flood
-i Xustaw odstęp pomiędzy kolejnymi żądaniami na X sekund

Wyślij do wybranego serwera 10 żądań ECHO_REQUEST w odstępach 2-sekundowych.

Program netstat to jedno z najbardziej rozbudowanych konsolowych narzędzi sieciowych. Pozwala na wszechstronną analizę połączeń sieciowych realizowanych przez komputer.

Korzystając z podręcznika programu netstat, dowiedz się, jakie możliwości daje ten program. Wypróbuj kilka wybranych opcji.

Powłoka Bash – tips & tricks

Historia poleceń

Powłoka Bash przechowuje historię wykonywanych poleceń. Korzystając z klawiszy strzałki w dół i w górę, można – na poziomie powłoki – przywoływać wykonywane ostatnio polecenia. Przeszukiwanie historii w ten sposób może być jednak uciążliwe. Na szczęście historię można wyświetlić w postaci wygodnej listy. Aby to zrobić, można wykonać polecenie

$ history | less

Historia ta obejmuje domyślnie 500 ostatnich poleceń, a każdy element ma przypisany numer. Aby wykonać ponownie polecenie oznaczone, przykładowo, numerem 67, należy wywołać

$ !67

Możliwe jest też skorzystanie z następujących ułatwień:

Uzupełnianie

Kiedy podczas wpisywania polecenia wciśniemy klawisz Tab, powłoka Bash uzupełni (o ile to możliwe) brakujące znaki. W zależności od okoliczności, będzie to nazwa dostępnego polecenia lub pliku.

Rozpocznij polecenie

$ ch

i wciśnij klawisz Tab. Liczba dopasowań jest większa niż jeden, dlatego wciśnij klawisz Tab ponownie, aby wyświetlić wszystkie możliwości. Wprowadź znak m, uzyskując

$ chm

i wciśnij klawisz Tab raz jeszcze. Co się stało?

Wpisz

$ cd ~/Desk

i wciśnij klawisz Tab. Co się stało?

Dopasowywanie wzorów

Powłoka Bash udostępnia narzędzia dopasowywania wzorów, umożliwiające wygodne operowanie na plikach o nazwach, które można przedstawić w postaci wzoru – czyli uproszczonego wyrażenia regularnego.

Połącz się zdalnie z serwerem lts.wmi.amu.edu.pl i wykonaj w katalogu /dev następujące polecenia:

$ ls -ld a*
$ ls -ld ?a*
$ ls -ld *[ag]
$ ls -ld [ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
$ ls -ld [^[:lower:]]*
$ ls -ld [[:alpha:]]*

Za co odpowiada opcja -d polecenia ls? Jak działają kolejne polecenia?

Jakie polecenie jest tak naprawdę wykonywane, gdy wywołujemy trzecie polecenie z listy z poprzedniego ćwiczenia? Wymyśl kilka ciekawych zastosowań dopasowywania wzorców.

Dlaczego polecenie

$ ls -ld [A-Z]*

zachowuje się w taki, a nie inny sposób? (Podpowiedź: wyświetlona lista obejmuje wszystkie elementy, którzych nazwa zaczyna się od litery innej niż a.)

We wzorcach, podobnie jak w wyrażeniach regularnych w poleceniu grep, możemy stosować klasy symboli. W jednym z powyższych ćwiczeń były to klasy lower i alpha.

Korzystając z dostępnych źródeł, dowiedz się, z jakich innych klas symboli można korzystać. Przetestuj ich działanie w praktyce.

Zobacz odpowiedź

"alnum", "alpha", "ascii", "blank", "cntrl", "digit", "graph", "lower", "print", "punct", "space", "upper", "word" oraz "xdigit".

Jeśli opcja extglob powłoki jest włączona, wzorce dopasowań mogą być bardziej skomplikowane. Obejmują one:

Jaki będzie efekt wykonania poniższego polecenia?

$ cp -r +([0-9])*([[:upper:]]) kopia

Wyświetl wszystkie elementy katalogu /dev, których nazwa:

  1. składa się wyłącznie z małych liter,
  2. kończy się cyfrą,
  3. rozpoczyna się ciągiem co najmniej trzech małych liter,
  4. rozpoczyna się od znaku innego, niż t (wskaż dwa rozwiązania).

Zobacz odpowiedź

  1. $ ls -ld +([[:lower:]])
  2. $ ls -ld *[[:digit:]]
  3. $ ls -ld [[:lower:]][[:lower:]][[:lower:]]*
  4. $ ls -ld [^t]* lub $ ls -ld !(t*)