Tryby pracy i monitorowanie systemu

Duża firma organizuje dla swoich pracowników bal maskowy.
- szef przychodzi w masce wilka,
- sekretarka przychodzi w masce Kopciuszka,
- admin przychodzi w masce 255.255.255.0.

DO_PRZYGOTOWANIA

Samodzielnie należy przed tym laboratorium przygotować:

  • powtórzyć pracę z vi!
  • przeczytać manuale do plików inittab, syslog.conf, crontab
  • prześledzić proces uruchamiania i zatrzymywania systemu,
  • sprawdzić działanie systemu poczty elektronicznej, w tym klienta mail - potrzebne do czytania raportów Crona,
  • przypomnieć sobie podstawowe informacje o TCP/IP niezbędne do skonfigurowania interfejsu sieciowego, a tym adresację IP.

WPROWADZENIE

Tryby pracy systemu

Uruchamianie systemu można podzielić na pewne ogólne etapy:

  • start programu ładującego jądro (bootstrapu), np. lilo,grub,
  • ładowanie i dekompresja jądra,
  • inicjalizacja podstawowych urządzeń, których obsługa jest wkompilowana w jądro,
  • sprawdzenie i podmontowanie głównego systemu plików,

Po załadowaniu jądra uruchamiany jest init:

  • uruchomienie procesu init (zawsze PID=1),
  • przeczytanie pliku konf. /etc/inittab,
  • sprawdzenie i podmontowanie pozostałych systemów plików,
  • przejście na odpowiedni poziom pracy (ang. runlevel),
  • uruchomienie usług funkcjonujących na tym poziomie,
  • zezwolenie na logowanie się użytkowników.

LILO ładuje jądro Linuksa do pamięci. Jest instalowany na początku twardego dysku (MBR), lub jego partycji i umożliwia uruchamianie różnych systemów operacyjnych. Nie obsługuje jednak systemów plików i ma ograniczone możliwości obsługi sytuacji awaryjnych. Bootloaderem nowej generacji jest GRUB, obsługuje też ładowanie systemu przez sieć (DHCP/TFTP).

Init jest zawsze pierwszym procesem tworzonym przez jądro i ma zawsze PID=1. Uruchamia wszystkie inne procesy, działając z uprawnieniami administratora. Zmienia poziomy pracy systemu (runlevels), w tym uruchamia i zatrzymuje system. Konfiguracja jest w pliku /etc/inittab.

Poziomy pracy systemu

Są to różne tryby pracy systemu, w Linuksie:

  • poziom 0 oznacza zatrzymanie (halt),
  • poziom 1 jest trybem dla jednego użytkownika (single) - administratora,
  • poziomy 2 - 5 są różnymi trybami pracy dla wielu użytkowników,
  • 6 - oznacza zatrzymanie i restart (reboot),
  • poziomy pracy można zmieniać: # init N
  • przeważnie inittab jest w stylu SYSV, każdemu poziomowi odpowiada katalog /etc/rcN.d i w nim skrypty Kxx Sxx

W nowych dystrybucjach Linuksa do uruchamiania systemu stosuje się uniwersalny skrypt rc:

  • pracuje na każdym poziomie od 0 - 6,
  • skrypt zatrzymuje i uruchamia usługi na każdym poziomie,
  • każdemu poziomowi pracy jest przyporządkowany podkatalog /etc/rc<#>.d,
  • nazwa usługi (skryptu) w tych katalogach ma postać: K##nazwa lub S##nazwa

Zatrzymanie systemu

składa się z etapów:

  • wydanie polecenia shutdown,
  • system powiadamia użytkowników o zatrzymaniu,
  • wszystkie procesy użytkowników są zatrzymywane,
  • system przechodzi na poziom 0, lub 6,
  • zatrzymanie odpowiednich usług,
  • odmontowanie systemów plików,
  • zatrzymanie lub restart systemu.

Monitorowanie pracy

Linux (podobnie jak systemy Unix) ma mechanizmy rejestrujące każde zdarzenie w systemie.

  • rejestrowanie (logowanie; log - dziennik) oznacza systematyczne zapisywanie odpowiednich informacji do plików,
  • pliki rejestrów określa się po ang. log files,
  • logowanie jest wykonywane przez pracujący bez przerwy system Sysklogd, składający się z demonów: klogd i syslogd,

Syslog:

  • system Sysklogd zapisuje (loguje) informacje do plików rejestrów/“logów” systemowych, w katalogu /var/log
  • pliki rejestrów są plikami tekstowymi o jednolitej składni,
  • pliki rejestrów są cyklicznie porządkowane przy pomocy specjalnych programów wywoływanych przez Cron.
  • syslogd jest jednym z najważniejszych demonów systemowych,
  • syslogd rejestruje wszystkie informacje o pracy systemu,
  • jest uruchamiany jako jeden z pierwszych procesów i zamykany jako jeden z ostatnich,
  • konfiguracja syslogd znajduje się w pliku /etc/syslog.conf

Konfiguracja syslogd:

  • plik /etc/syslog.d (5) zawiera reguły według których syslogd sortuje informacje i zapisuje je do różnych plików rejestrowych,
  • reguła to dwa pola: selector action,
  • selector ma 2 części facility.priority,
  • facility określa system z którego pochodzi wiadomość np.: auth, kern, mail, syslog,
  • priority mówi o stopniu ważności wiadomości, np.: debug, warn, err, emerg.
  • w polu action może być wpisany plik, urządzenie sterujące terminalem.

Pliki rejestrowe systemu:

  • nazwy i zawartość zależą od konfiguracji syslogd,
  • pliki rejestrów są plikami tekstowymi,
  • składają się z linii o określonym formacie, przeważnie jest to:

data godzina hostname proces: komunikat

  • umieszczane są w katalogu /var/log,
  • niektóre duże programy jak Apache czy FTP mogą zakładać w /var/log własne katalogi z logami.

Korzystanie z Cron

Automatyzacja niektórych prac systemu jest niezwykle pomocna, używa się do niej programów:

  • at umożliwia jednorazowe uruchomienie programu o zadanym czasie,
  • cron umożliwia cykliczne uruchamianie programów,
  • obydwa systemy mogą być używane przez wszystkich użytkowników,
  • składają się z części serwera (demona) i klienta - uruchamianego przez użytkownika,
  • serwer atd kolejkuje zadania każdego użytkownika,
  • w przypadku cron każdy użytkownik ma jeden plik crontab, w którym zapisuje wszystkie zadania,
  • cron udostępnia dodatkową funkcjonalność administratorowi,
  • cron jest jednym z podstawowych narzędzi automatyzujących pracę administratora.

Do komunikacji z demonem crond służy polecenie crontab:

  • crontab umożliwia edycję i pokazywanie pliku crontab,
  • każdy użytkownik ma jeden taki plik,
  • w pliku może się znajdować wiele zadań, każde w osobnej linii,
  • polecenie crontab korzysta z zewnętrznego edytora do edycji pliku.

Składnia pliku crontab:

  • linia składa się z sześciu pól, ostatnie to nazwa polecenia do wykonania,
  • pola w każdej linii oznaczają kolejno: minutę, godzinę, dz. mies., miesiąc, dz. tyg.,
  • gwiazdka w miejscu wartości oznacza: “dla każdej wartości pola”, np.: co godzinę,
  • kilka wartości rozdziela się przecinkami,
  • znak ”-” pozwala na podanie zakresu wartości,
  • połącznie go ze znakiem ”/” umożliwia podanie kroku w obrębie zakresu.

Plik /etc/crontab zawiera centralną konfigurację demona cron, ma możliwość podania przed poleceniem nazwy użytkownika z prawami którego będzie wykonywane polecenie.

Cron jest m.in. przydatny w cyklicznym archiwizowaniu i analizowaniu plików Sysloga.

Konfigurowanie interfejsów sieciowych

Konfigurowanie interfejsu sieciowego można podzielić na kilka etapów.

  • określenie parametrów (IP, maska, itp.),
  • konfigurownie przy pomocy ifconfig,
  • testowanie przy pomocy ping,
  • zapis konfiguracji w plikach dystrybucji systemu.

Przed przystąpieniem do konfigurowania interfejsu trzeba ustalić jego podstawowe parametry. Są to:

  • adres IP,
  • maska sieci IP,
  • broadcast IP,
  • adres MAC, jeżli wykorzystuje się DHCP.

ifconfig służy do konfigurowanie interfejsu sieciowego.

  • Podstawowy sposób wywołania to:
      ifconfig if address adres netmask maska
  • Włączanie, wyłącznie interfejsu:
      ifconfig if up,down
  • Wyświetlanie informacji o interfejsie:
      ifconfig if

ping jest uniwersalnym programem będącym częścią narzędzi dla sieci TCP/IP. Program służy do testowania połączeń w sieci IP, wykorzystuje protokół ICMP (pakiety echo replay/requst).

Interfejs loopback jest to wewnętrzny interfejs sieciowy, pełni rolę interfejsu zwrotnego, ma zawsze adres 127.0.0.1 i jest niezbędny do poprawnego działania aplikacji opartych o sieć TCP/IP.

Dystrybucje mogą dostarczać:

  • programów typu ifup, ifdown,
  • plików opisujących konfigurację interfejsów /etc/network, /etc/sysconfig/network,
  • dodatkowych narzędzi konfiguracyjnych typu RHControlPanel.

Przed przystąpieniem do konfigurowania tablicy routingu należy określić podstawowe parametry sieci do której włącza się interfejsy. Są to:

  • adresy interfejsów,
  • adresy sieci IP,
  • ewentualnie inne sieci do których określa się bezpośrednio dostęp,
  • adres routera przekazującego pakiety poza sieć, default route,

Podstawowym programem do konfigurowania routingu jest program route. Program służy do:

  • zarządzania tablicą routingu,
  • tablica określa sposób przekazywania pakietów przez stos TCP/IP,
  • sposób użycia to:
      route -v -n {add|del} {-host|-net} adres gw adres netmask maska interfejs

Do testowania routingu można użyć programu traceroute. Program służy do testowania routingu w sieci IP, wykorzystuje pole TTL pakietów IP i protokół UDP lub protokół ICMP. Resolver jest biblioteką będącą częścią biblioteki systemowej. Zajmuje się odnajdywaniem nazw maszyn pracujących w sieci. Jego konfiguracja składa się z kilku plików. Nazwę maszyny w sieci IP ustawia się przy pomocy polecenia hostname. Nazwę najczęściej zapisuje się na stałę w pliku /etc/hostname czytanym w trakcie startu systemu.

Plik host.conf jest jednym z podstawowych elementów konfiguracji: zawiera część konfiguracji resolvera, opcje to:

  • order {hosts,bind,nis} - porządek odwoływania się do DNS i hosts,
  • trim on/off - usuwanie nazw domen
  • multi on/off - wielokrotne nazwy
  • nospoof,spoofalert,reorder on/off

W pliku resolv.conf zapisuje się:

  • adresy serwerów DNS: nameserver addr,
  • nazwę lokalnej domeny: domain,
  • sposób przeszukiwania domen: search.

Plik /etc/hosts zawiera istotne dla funkcjonowania resolvera informacje. Znajdują się w nim między innymi:

  • adresy IP lokalnych interfejsów (w tym musi być loopback),
  • nazwa FQDN maszyny,
  • adresy sieci podłączonych do interfejsów lokalnych,
  • adresy innych maszyn i sieci.

Do testowania resolvera można użyć:

  • ping wraz z nazwą symboliczną (domenową),
  • narzędzi do pracy z DNS: host, nslookup,
  • powyższe dwa programy działają tylko w przypadku połączenia z serwerem DNS.

ĆWICZENIA

UWAGA! W poniższych ćwiczeniach należy zwracać baczną uwagę na to, które z nich wymagają dostępu administratora. Warto sprawdzić które czynności mogą być wykonane z poziomu użytkownika!

6 Zamykanie

- Zamknąć system przy pomocy shutdown. - Zamknąć system przy pomocy shutdown z opóźnieniem 3 minutowym, wysyłając przy tym stosowną informację do użytkowników.

7 Start systemu

Zwrócić uwagę jak przebiega start systemu UML.

Po zalogowaniu jako root sprawdzić działanie plecenia dmesg.

8 Init

  1. Sprawdzić jaki jest domyślny tryb pracy systemu.
  2. W pliku /etc/inittab proszę zmienić pole initdefault. Zrestartować system, sprawdzić i ocenić wyniki modyfikacji.
  3. Wykonać ćwiczenie 1. Odnaleźć w katalogu /etc podkatalog rc.<initdefault>.d. Zamienić kolejność uruchamiania 2 wybranych usług.
  4. Jeżeli usługa jest uruchamiana z numerem “nn” (Snn, to z jakim numerem powinna być zatrzymywana ?
  5. Uruchmić jeden ze skryptów z katalogu rc.<initdefault>.d. Jakie parametry przyjmuje skrypt?
  6. Wykorzystując ćwiczenie 5., ręcznie zatrzymać i ponownie uruchomić wybraną usługę z katalogu rc.<initdefault>.d.
  7. Wykonać ćwiczenie 1. Zmodyfikować strukturę plików startowych tak, by podczas przejścia na domyślny tryb pracy, jako ostatnie było uruchamiane dodtakowe wybrane polecenie (skrypt).
  8. We własnym zakresie: W pliku /etc/inittab proszę zmienić pole ctrlaltdel, tak aby wciśnięcie klawiszy <Ctrl-Alt-Del> powodowało (Uwaga: w UML nie można tego sprawdzić, wciśnięcie klawiszy jest przechwytywane):
    1. brak reakcji,
    2. pojawienie się na konsoli komunikatu,
    3. zatrzymanie (halt) systemu.

9 Procesy i sygnały

  1. Po otwarciu dwóch oddzielnych sesji proszę w każdej z nich wywołać polecnie: ps. Jakie procesy są widoczne?
  2. Proszę przećwiczyć użycie opcji l u m e polecenia ps.
  3. Jakich opcji ps należy użyć, aby obejrzeć:
    1. proces init,
    2. PID procesów,
    3. PPID procesów,
    4. środowisko procesów,
    5. informacje o zużyciu pamięci przez procesy.
  4. Jak przy pomocy ps i innego polecenia można oglądnąć procesy wybranego użytkownika?
  5. Uruchomić w tle proces find, odnaleźć jego PID i usunąć proces.
  6. Jak można przy pomocy jednokrotnego użycia kill usunąć wszystkie procesy w danej sesji?
  7. Powtórzyć kilkakrotnie ćwiczenie 5. za każdym razem usuwając proces innym sygnałem. Jakie pojawiają się komunikaty?
  8. Jaki sygnał należy wysłać do demona systemowego by przeczytał swoją konfigurację?

10 Priorytety procesów

  1. Przy pomocy ps wyświetlić wartości nice procesów.
  2. Uruchomić proces find z nice 10 na 2 sposoby.
  3. Zmienić wartość nice dla powłoki w której się pracuje.
  4. Uruchomić w tle 2 procesy find, z nice odpowiednio 0 i 20. Który z nich zakończy się pierwszy? Zmierzyć czas ich działania przy pomocy time.

11 Polecenia at i cron

  1. O ile w systemie jest uruchomiony demon atd (sprawdzić!), proszę wykonać poniższe:

Przy pomocy polecenia at proszę zlecić uruchomienie:

  1. who za godzinę,
  2. ps w najbliższą niedzielę,
  3. df jutro o tej samej porze.

Proszę oglądnąć kolejkę zleceń i zawartość skryptów zleceń.

  1. Powtórzyć ćwiczenie 1. dla poleceń, które nie wypisują informacji na wyjściu. Czy został wysłany list z raportem (sprawdzić przez mail)? Jeżeli nie, to jak wymusić wysłanie raportu pocztą elektroniczną?
  2. W sesji administratora zabronić dostępu do at wybranemu użytkownikowi. Sprawdzić jak działa kontrola dostępu.
  3. Uruchamiać przy pomocy Cron wybrane polecenie:
    1. co godzinę,
    2. co pół godziny,
    3. w każdy poniedziałek o 6:00,
    4. codziennie, o 6:20, 8:20, 12:20, 18:20,
    5. co 4 godziny ale tylko od poniedziałku do piątku,
    6. o 12:00, 13:00, 14:00, 15:00; w 1., 13., 20. dzień każdego miesiąca.
  4. Jak uruchamiać program codziennie korzystając z Cron, ale bez modyfikacji pliku crontab?
  5. Założyć katalog /etc/cron.new i tak skonfigurować demon Cron, by pliki wykonywalne w tym katalogu były uruchamiane 3 razy dziennie.

12 Konfiguracja syslogd

Do testowania syslogd można użyć polecenia logger, które wysyła wiadomości do syslogd. Wywołanie polecenia jest następujące:

  logger [-p facility.priority] wiadomosc

Użycie parametru -p jest opcjonalne.

Dodatkowo można etykietować wpisy przez -t.

  1. Skonfigurować syslogd tak, aby odpowiednie komunikaty były kierowane do podanych plików.
źródło     priorytet     plik
user     wszystkie     user.log
user     warning     user_warn.log
daemon      wszytskie     daemon.log
local7       info     local.log
local7        niższe od err     local_err.log
mail i uucp     wszystkie     mail.log
security i auth     wszystkie     security.log
wszystkie     emerg     emerg.log
wszystkie     wszystkie     all_messages.log

Co należy zrobić, aby zmiany w konfiguracji odniosły skutek? Proszę przetestować wprowadzone zmiany przy pomocy polecenia logger.

13 Rotacja plików rejestrowych

  1. Skonfigurować system Cron w ten sposób by programy logrotate lub savelog były uruchamiane:
    1. w każdą niedzielę o 23:00,
    2. 30. dnia miesiąca o 5:00,
    3. codziennie o 2:00.
  2. Proszę skonfigurować logrotate aby dokonywał rotacji plików:
    1. /var/log/messages codziennie, kompresował je i zachowywał 8 poprzednich fragmentów,
    2. /var/log/security codziennie, bez kompresji i datę każdej rotacji zapisywał w pliku /var/log/rotate.log,
    3. /var/log/debug co tydzień, bez kompresji.

14 Podstawy konfigurowania interfejsów sieciowych

  1. Proszę ustalić z jakich adresów IP mogą korzystać terminale, maszyny UML wykorzystywane za zajęciach (domyślnie nieroutowalna sieci 192.168.1.0/24).
  2. Sprawdzić bieżącą konfigurację interfejsu i zapisać ją.
  3. Skonfigurować interfejs eth0 przy pomocy ifconfig.
  4. Sprawdzić łączność z innymi maszynami przez ping.
  5. Przeglądnąć bieżącą konfigurację routingu na terminalu (w UML) i na serwerze przez route.
  6. Przetestować łączność z wybranym odległym serwerem przez traceroute.
  7. Oglądnąć /etc/resolv.conf sprawdzić działanie DNS przez host, dig, nslookup.
  8. Sprawdzić pola MX dla różnych domen, wskazują one na Mail eXchangery domeny (serwery poczty), np.: dig agh.edu.pl mx
Last modified: 2012/12/03 08:22