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
przejrzeć slajdy wykładu dot. administracji (Podstawy zarządzania systemem, Procesy i monitorowanie systemu)
przeczytać:
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
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:
ifconfig służy do konfigurowanie interfejsu sieciowego.
ifconfig if address adres netmask maska
ifconfig if up,down
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ę:
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ć:
Ć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!
1 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.
2 Start systemu
Zwrócić uwagę jak przebiega start systemu UML.
Po zalogowaniu jako root sprawdzić działanie plecenia dmesg.
3 Init
Sprawdzić jaki jest domyślny tryb pracy systemu.
W pliku /etc/inittab proszę zmienić pole initdefault
. Zrestartować system, sprawdzić i ocenić wyniki modyfikacji.
Wykonać ćwiczenie 1. Odnaleźć w katalogu /etc podkatalog rc<initdefault>.d. Zamienić kolejność uruchamiania 2 wybranych usług.
Jeżeli usługa jest uruchamiana z numerem „nn” (Snn), to z jakim numerem powinna być zatrzymywana?
Uruchmić jeden ze skryptów z katalogu rc.<initdefault>.d. Jakie parametry przyjmuje skrypt?
Wykorzystując ćwiczenie 5., ręcznie zatrzymać i ponownie uruchomić wybraną usługę z katalogu rc.<initdefault>.d.
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).
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):
brak reakcji,
pojawienie się na konsoli komunikatu,
zatrzymanie (halt) systemu.
4 Procesy i sygnały
Po otwarciu dwóch oddzielnych sesji proszę w każdej z nich wywołać polecnie: ps. Jakie procesy są widoczne?
Proszę przećwiczyć użycie opcji l u m e
polecenia ps.
Jakich opcji ps należy użyć, aby obejrzeć:
proces init
,
PID procesów,
PPID procesów,
środowisko procesów,
informacje o zużyciu pamięci przez procesy.
Jak przy pomocy ps i innego polecenia można oglądnąć procesy wybranego użytkownika?
Uruchomić w tle proces find, odnaleźć jego PID i usunąć proces.
Jak można przy pomocy jednokrotnego użycia kill usunąć wszystkie procesy w danej sesji?
Powtórzyć kilkakrotnie ćwiczenie 5. za każdym razem usuwając proces innym sygnałem. Jakie pojawiają się komunikaty?
Jaki sygnał należy wysłać do demona systemowego by przeczytał swoją konfigurację?
5 Priorytety procesów
Przy pomocy ps wyświetlić wartości nice procesów.
Uruchomić proces find z nice 10. Jak zmienić wartość nice tego procesu?
Zmienić wartość nice dla powłoki w której się pracuje.
Uruchomić w tle 2 procesy find, z nice odpowiednio 0 i 19. Który z nich zakończy się pierwszy? Zmierzyć czas ich działania przy pomocy
time.
6 Polecenia at i cron
O ile w systemie jest uruchomiony demon atd (sprawdzić!), proszę wykonać poniższe:
Przy pomocy polecenia at proszę zlecić uruchomienie:
who za godzinę,
ps w najbliższą niedzielę,
df jutro o tej samej porze.
Proszę oglądnąć kolejkę zleceń i zawartość skryptów zleceń.
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ą?
W sesji administratora zabronić dostępu do at wybranemu użytkownikowi. Sprawdzić jak działa kontrola dostępu.
Uruchamiać przy pomocy Cron wybrane polecenie:
co godzinę,
co pół godziny,
w każdy poniedziałek o 6:00,
codziennie, o 6:20, 8:20, 12:20, 18:20,
co 4 godziny ale tylko od poniedziałku do piątku,
o 12:00, 13:00, 14:00, 15:00; w 1., 13., 20. dzień każdego miesiąca.
Jak uruchamiać program codziennie korzystając z Cron, ale bez modyfikacji pliku crontab?
Założyć katalog
/etc/cron.new i tak skonfigurować demon Cron, by pliki wykonywalne w tym katalogu były uruchamiane 3 razy dziennie.
7 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
.
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.
8 Rotacja plików rejestrowych
Skonfigurować system Cron w ten sposób by programy logrotate lub savelog były uruchamiane:
w każdą niedzielę o 23:00,
30. dnia miesiąca o 5:00,
codziennie o 2:00.
Proszę skonfigurować logrotate aby dokonywał rotacji plików:
/var/log/messages codziennie, kompresował je i zachowywał 8 poprzednich fragmentów,
/var/log/security codziennie, bez kompresji i datę każdej rotacji zapisywał w pliku /var/log/rotate.log,
/var/log/debug co tydzień, bez kompresji.
9 Podstawy konfigurowania interfejsów sieciowych
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).
Sprawdzić bieżącą konfigurację interfejsu i zapisać ją.
Skonfigurować interfejs eth0
przy pomocy ifconfig.
Sprawdzić łączność z innymi maszynami przez ping.
Przeglądnąć bieżącą konfigurację routingu na terminalu (w UML) i na serwerze przez route.
Przetestować łączność z wybranym odległym serwerem przez traceroute.
Oglądnąć
/etc/resolv.conf sprawdzić działanie
DNS przez
host,
dig,
nslookup.
Sprawdzić pola MX dla różnych domen, wskazują one na Mail eXchangery domeny (serwery poczty), np.: dig agh.edu.pl mx