Administracja, Informatyka, Linux, Linux - Podręcznik


ADMINISTRACJA

Każdy system wielozadaniowy i wielodostępny, niezależnie od tego ilu liczy użytkowników, powinien mieć osobę sprawującą kontrolę nad jego prawidłową pracą. W Linuxie użytkownikiem, który może administrować systemem (a przez to posiadającym największe uprawnienia) jest "root". Może on uruchamiać i zatrzymywać różne procesy, kasować i przeglądać wszystkie pliki (nawet te, do których nie ma uprawnień). Może zakładać konta użytkownikom, dołączać do systemu dowolne urządzenia i instalować nowe programy. Jednym słowem może wszystko. Osoba będąca administratorem (mogąca logować się do systemu jako "root") musi zdawać sobie sprawę z tego, że przez nieumiejętne wykorzystywanie swoich uprawnień może działać na szkodę systemu. Dobry administrator powinien wiedzieć w jaki sposób funkcjonuje zarządzany przez niego system i znać swoje podstawowe zadania. W związku z tym przedstawiam poniżej część niezbędnej wiedzy o systemie, która będzie przydatna dla każdego administratora Linuxa.

Start systemu

Start Linuxa zaczyna się w momencie załadowania jądra systemu do pamięci komputera. Jądro sprawdza zainstalowane urządzenia, montuje główny system plików, a następnie uruchamia proces numer 1, który rozpoczyna wykonywanie programu init. Od tego momentu wszystkie czynności przygotowujące Linuxa do normalnej pracy wykonywane są przez ten program w oparciu o pliki konfiguracyjne i skrypty umieszczone w katalogu /etc. Cały scenariusz opisujący porządek startu systemu zapisany jest w pliku /etc/inittab oraz w skryptach inicjujących znajdujących się w katalogu /etc/rc.d. Plik /etc/inittab umożliwia programowi init wprowadzenie systemu na dany poziom pracy (np. poziom S i 1 to praca w trybie jednego użytkownika, 0 -- zakończenie pracy systemu, od 2 do 5 -- praca w trybie wielu użytkowników, 6 -- restart systemu). W pliku /etc/inittab znajdują się linie złożone z czterech pól oddzielonych dwukropkami:

nazwa:stan:akcja:proces

Pole "nazwa" jest dowolną dwuliterową etykietą opisującą całą linię, pole "stan" to poziom pracy systemu, pole "akcja" określa w jaki sposób init uruchomi program podany w polu "proces". Kiedy system wprowadzany jest na dany poziom pracy, init przegląda wszystkie linie dotyczące poziomu w takiej kolejności, w jakiej są umieszczone w /etc/inittab. W polu "akcja" można wpisać następujące rodzaje akcji:

Przykładowy plik /etc/inittab może wyglądać tak:

# domyślny poziom pracy

id:5:initdefault:

# inicjalizacja systemu

si:S:sysinit:/etc/rc.d/rc.S

# praca w trybie pojedynczego użytkownika

su:1S:wait:/etc/rc.d/rc.K

# praca w trybie wielu użytkowników

rc:123456:wait:/etc/rc.d/rc.M

# naciśnięcie Ctrl+Alt+Del

ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now

# zakończenie pracy systemu

l0:0:wait:/etc/rc.d/rc.0

# restart systemu

l6:6:wait:/etc/rc.d/rc.6

# inicjalizacja konsoli i terminali

c1:1235:respawn:/sbin/agetty 38400 tty1 linux

c2:1235:respawn:/sbin/agetty 38400 tty2 linux

c3:5:respawn:/sbin/agetty 38400 tty3 linux

c4:5:respawn:/sbin/agetty 38400 tty4 linux

c5:5:respawn:/sbin/agetty 38400 tty5 linux

c6:45:respawn:/sbin/agetty 38400 tty6 linux

W naszym przykładzie za końcowy poziom pracy systemu został przyjęty poziom 5. Program init uruchomi najpierw skrypt z linii zawierającej akcję sysinit (czyli /etc/rc.d/rc.S), a następnie będzie wykonywał po kolei linie, w których w polu "stan" jest wpisane 5. Uruchomiony najpierw skrypt /etc/rc.d/rc.S przeprowadzi wszystkie niezbędne czynności organizujące pracę systemu:

# ustalenie ścieżki dostępu

PATH=/sbin:/usr/sbin:/bin:/usr/bin

# uruchomienie partycji wymiany

/sbin/swapon -a

# uruchomienie w tle procesu "update",

#który okresowo zapisuje zawartość bufora dyskowego na twardy dysk

/sbin/update &

# sprawdzenie integralności systemu plików

/sbinn/fsck -A -a

# usunięcie plików:

/etc/mtab - by zamontować systemy plików

/etc/nologin - by umożliwić użytkownikom

# logowanie się do systemu

/bin/rm -f /etc/mtab* /etc/nologin

# "zamontowanie" systemów plików zapisanych w /etc/fstab

/sbin/mount -avt nonfs

# wpisanie informacji o wersji systemu i nazwie serwera do /etc/issue

#i /etc/motd

echo > /etc/issue echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >>

/etc/issue echo >> /etc/issue echo "`/bin/uname

-a | /bin/cut -d\ -f1,3`." > /etc/motd

Po wykonaniu /etc/rc.d/rc.S program init uruchomi skrypt /etc/rc.d/rd.M (skrypt ten uruchamia inne skrypty i programy, które inicjują pracę sieci, ustalają nazwę serwera, wykrywają niektóre urządzenia zewnętrzne itp.), następnie zostanie zainicjowana konsola systemowa. Po wykonaniu tych czynności system jest gotowy do pracy.

Użytkownicy i grupy

Niezależnie od tego czy chcemy osobiście korzystać z systemu, czy też mamy zamiar udostępniać go innym osobom, powinniśmy poznać w jaki sposób Linux przechowuje informacje o swoich użytkownikach. Każda osoba korzystająca z systemu powinna mieć swoje własne konto. Do złych zwyczajów należy nadawanie jednego konta grupie osób (choćby dlatego, że administrator nie wie kto naprawdę korzystał z systemu). Każdy użytkownik w Linuxie posiada swój identyfikator (UID) i identyfikator grupy, do której należy (GID). Informacje na temat użytkowników systemu pamiętane są w dwóch plikach: /etc/passwd oraz /etc/group. Pierwszy plik zawiera dane dotyczące kont, opis użytkownika, jego shell itp. Typowa linia w pliku /etc/passwd wygląda mniej więcej tak:

gustaf:Ojbd6lk.ZCkVc:501:100:uzytkownik Gustaf:/home/gustaf:/bin/bash

W linii jest siedem pól (oddzielonych dwukropkami):

1. Nazwa -- unikalna nazwa każdego użytkownika systemu. Zazwyczaj nadaje się nazwy mające nie więcej niż 8 znaków i niemniej niż 3 znaki.

2. Hasło -- pole to zawiera zakodowane hasło użytkownika. Jeżeli umieścimy w tym polu znak gwiazdki ("*") konto stanie się niedostępne (nie będzie możliwe zalogowanie).

3. Identyfikator (UID) -- unikalny numer nadawany każdemu użytkownikowi systemu (Linux rozpoznaje użytkowników nie po nazwie lecz po UID).

4. Identyfikator grupy (GID) -- to pole zawiera numer grupy, do której należy użytkownik. Jeżeli nadamy użytkownikowi GID równy 0, to otrzyma on uprawnienia administratora systemu. Użytkownik może należeć do kilku grup, jednak w tym polu umieszczony jest numer tylko jednej z nich.

5. Informacje opisujące użytkownika -- zwykle w tym polu umieszcza się imię i nazwisko użytkownika.

6. Kartoteka domowa (home directory) -- katalog, w którym znajdzie się użytkownik po rozpoczęciu sesji. W Linuxie kartoteki użytkowników znajdują się przeważnie w katalogu /home.

7. Shell -- interpreter poleceń dostępny po zalogowaniu się do systemu. W Linuxie standardowo dostępne są dwa shelle: /bin/bash (odpowiednik unixowego shella Bourne'a) i /bin/tcsh (odpowiednik unixowego C-shella).

Jeżeli zajrzymy do pliku /etc/passwd zobaczymy, że są tam już wpisani użytkownicy, których kartoteka domowa nie znajduje się w katalogu /home. Część z nich ma zablokowane konta (gwiazdka w polu z hasłem), a niektórzy nie posiadają też żadnego shella. Są to standardowo zdefiniowani użytkownicy, wykorzystywani do wykonywania pewnych zadań w systemie, np:

Jak już wspomniano, każdy użytkownik musi należeć przynajmniej do jednej grupy. Głównym zadaniem grup jest możliwość korzystania kilku użytkowników ze wspólnych plików i innych zasobów systemowych. Na przykład użytkownicy pracujący nad projektem samolotu mogą należeć do grupy "samolot" i dzięki temu współdzielić pliki ze swoją pracą. Informacje o grupach w Linuxie pamiętane są w pliku /etc/group, w którym każda linia wygląda tak:

root::0:root,gustaf 1 2 3 4

Podobnie jak w przypadku pliku /etc/passwd poszczególne pola oddzielone są dwukropkami.

Znaczenie pól w /etc/group:

1. nazwa grupy -- zasady dobierania nazw grup są identyczne jak w przypadku nazw użytkowników.

2. pole nieużywane.

3. identyfikator grupy (GID) -- unikalny numer grupy.

4. lista użytkowników należących do grupy.

Skoro wiadomo już jak Linux pamięta informacje o swoich użytkownikach, możemy teraz powiedzieć w jaki sposób zakładać i kasować ich konta. Zakładanie konta w Linuxie odbywa się w kilku krokach. Po pierwsze musimy dopisać nową linię w pliku /etc/passwd i wypełnić ją zgodnie z zasadami podanymi powyżej (pamiętając o unikalnym numerze UID). Pole zawierające hasło zostawiamy niewypełnione. Następnie musimy utworzyć kartotekę domową użytkownika i za pomocą polecenia

chown . /home/

nadać mu prawa do jego kartoteki. Logujemy się do systemu jako nowy użytkownik i sprawdzamy czy wszystko działa poprawnie. Jeżeli nie ma żadnych problemów, to za pomocą polecenia "passwd" nadajemy hasło naszemu użytkownikowi. Jak widać ręczne zakładanie konta wcale nie jest trudne, jednak przy częstym wykonywaniu tej czynności łatwo coś przeoczyć. Bardziej niezawodnym sposobem jest posłużenie się gotowym programem, który zapyta nas o wszystkie niezbędne informacje i sam zmodyfikuje odpowiednie pliki w systemie. W Linuxie tego typu program nosi nazwę "adduser". Usuwanie konta użytkownika musimy przeprowadzić ręcznie. Niestety nie ma w Linuxie standardowego programu, który wykonałby tą czynność. By zlikwidować konto musimy skasować kartotekę domową użytkownika i wszystkie pliki w systemie, których jest właścicielem oraz usunąć odpowiednią linię w pliku /etc/passwd.





Linux jako system operacyjny nie jest zbytnio przyjazny dla użytkownika. Pozbawiony kolorów, wyświetlający mnóstwo niezrozumiałych informacji, oferujący komunikację za pomocą linii komend wygląda raczej odstraszająco. Istnieją jednak pewne sposoby, by choć trochę ułatwić użytkownikowi pracę w tym systemie.

Zanim użytkownik rozpocznie pracę, musi się najpierw zalogować. W tym czasie wyświetlane są informacje zapisane w plikach /etc/issue oraz /etc/mtod. Plik /etc/issue wyświetlany jest zawsze przed samym zalogowaniem.

Zazwyczaj umieszczona jest w nim informacja o wersji systemu. Plik /etc/mtod wyświetlany jest zaraz po zalogowaniu się użytkownika. W pliku tym administrator umieszcza informację dnia (Message Of The Day).

W ten sposób możemy informować naszych użytkowników o zainstalowanych nowych programach, o czasowym wyłączeniu systemu, a nawet o numerach totolotka. Zanim jednak umieścimy cokolwiek w /etc/issue czy /etc/mtod upewnijmy się, czy skasowaliśmy linie dotyczące tych plików w skrypcie /etc/rc.d/rc.S.

Administrator systemu ma także możliwość wyboru nazwy dla komputera. By ustalić nową nazwę wystarczy dokonać zmian w pliku /etc/HOSTNAME i (jeżeli jesteśmy podłączeni do sieci Internet) w pliku /etc/hosts. Teraz wystarczy zrestartować komputer i możemy oglądać efekty naszych modyfikacji.

W Linuxie możliwe jest także wyświetlanie informacji w kolorach. Na przykład komenda ls wyświetla nazwy niektórych plików różnymi kolorami. Wszystkie ustawienia określające kolory nazw poszczególnych plików umieszczone są w /etc/DIR_COLORS. Zmieniając zawartość tego pliku, możemy określać sposób wyświetlania poleceniem ls. W naszym systemie możliwa jest także zmiana kolorów znaków i tła. Jednym ze sposobów jest umieszczenie podczas startu systemu w pliku /etc/issue odpowiedniej sekwencji znaków.

W tym celu musimy zamienić w /etc/rc.d/rc.S linie:

echo > /etc/issue echo

Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. ť /etc/issue

na linie:

echo "${ESCAPE}[H${ESCAPE}

[37;44m${ESCAPE}[8]${ESCAPE}

[2J"> /etc/issue

echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. ť /etc/issue

Powyższy fragment skryptu umieszcza kursor w lewym górnym rogu ekranu, ustawia kolory (białe znaki na niebieskim tle), zapisuje ustawienia i czyści resztę ekranu.

W pierwszej linii w cudzysłowie należy wpisać znak "escape" (np. w edytorze vi można to zrobić kombinacją klawiszy ctrl-v). Po restarcie komputera ekran zmieni się zgodnie z ustawieniami.

Podany sposób nadaje się do zastosowania tylko w komputerach nie pracujących w sieci. Jeżeli jesteśmy użytkownikami sieci, to powyższe ustawienie może stać się utrapieniem dla wszystkich użytkowników, którzy zdalnie logują się do naszego systemu.

Istnieje jednak inny sposób, by zmienić kolory tła i znaków tylko dla jednego terminala. Wystarczy posłużyć się poleceniem:

$ setterm -foreground

<kolor_znaków> -background

<kolor_tła> -store

Dla naszego poprzedniego przykładu (białe znaki na niebieskim tle) wywołanie programu wyglądałoby następująco:

$ setterm -foreground #FFFFFF -background blue -store

Za pomocą programu setterm możemy także włączyć wygaszacz ekranu, np. polecenie:

$ setterm -blank 10

wygasza ekran po upływie 10 minut od ostatniego naciśnięcia klawisza.

Linuxowy system plików

Linux ma system plików zorganizowany w sposób hierarchiczny. Katalogiem nadrzędnym jest katalog główny (/), który zawiera między innymi takie katalogi, jak:

W Linuxie (tak jak w każdym unixowym systemie operacyjnym) przyjęto koncepcję jednego logicznego systemu plików, który może składać się z wielu fizycznych systemów plików znajdujących się na różnych urządzeniach.

Dzięki temu możemy mieć na jednej partycji główny system plików (katalog /), programy użytkowników na drugiej (katalog /usr), a kartoteki domowe użytkowników (katalog /home) na trzeciej.

Takie podejście do systemu plików uniezależnia operacje na plikach od urządzenia, na którym te pliki się znajdują (bo np. nie kopiujemy z dysku na dysk, tylko z katalogu do katalogu) oraz nie uzależnia ilości miejsca od wielkości dysku (gdy zabraknie miejsca, zawsze można zamontować w systemie plików nowy katalog).

Zanim system plików będzie wykorzystywany, musi zostać zamontowany w odpowiednim katalogu. Po "zamontowaniu" wszystkie pliki z danego systemu znajdują się w tym katalogu. Do montowania systemu plików w Linuxie służy polecenie mount. Polecenie:

/sbin/mount -avt nonfs

jest wywoływane przy starcie systemu ze skryptu /etc/rc.d/rc.S.

Użycie opcji -av powoduje, że informacje o montowanych systemach plików pobierane są z pliku /etc/fstab. Przykładowy plik /etc/fstab zamieszczamy w tabelce 1.

#dysk

katalog

typ

opcje

/dev/hda4

swap

swap

defaults 1 1

/dev/hda3

/ext2

-

defaults 1 1

/dev/hda1

/dos

msdos

defaults 1 1

none

/proc

proc

defaults 1 1

Pierwsza kolumna zawiera nazwę partycji, druga - katalog, w którym znajdzie się zamontowany system plików, trzecia kolumna opisuje typ partycji, czwarta opcje montowania systemu plików. Dwie ostatnie kolumny opisują, czy plik jest do odczytu i zapisu. Linux obsługuje systemy plików pokazane w tabelce 2.

Zamiast używać opcji -av montującej systemy plików z /etc/fstab, można zamontować system plików ręcznie np.:

# mount -t msdos /dev/hda1 /dos

odpowiada trzeciej linii naszego przykładowego pliku /etc/fstab.

Niepoprawne wyłączenie systemu lub awarie dysku mogą powodować gubienie plików dostępnych przedtem w ramach drzewa katalogowego. Bloki danych zagubionego pliku cały czas przechowywane są na dysku, plik ten jednak nie należy do żadnego katalogu w systemie.

Za wyszukiwanie zagubionych plików i umieszczanie ich w katalogu /lost+found odpowiada polecenie fsck, a dla systemu plików ext2 polecenie e2fsck. Zazwyczaj system sam sprawdza przy starcie stan systemu plików (w skrypcie /etc/rc.d/rc.S), jednak czasami może zajść potrzeba wykonania tej czynności samemu. Na przykład:

# e2fsck -av /dev/hda2

sprawdza dysk /dev/hda2 i automatycznie usuwa błędy. Zanim jednak użyjemy polecenia e2fsck, powinniśmy odmontować sprawdzaną partycję za pomocą polecenia:

# umount /dev/hda2

Systemy plików obsługiwane przez Linuxa

System plików

typ

Opis

Second Extended Filesystem

ext2

najczęściej używany system plików w Linuxie;

Minix Filesystem

minix

system plików Minix (prawie nie używany)

Xia Filesystem

xiafs

system plików podobny do ext2 (nie używany)

UMSDOS

umsdos

używany do instalacji Linuxa na partycji MS-DOS

MS-DOS Filesystem

msdos

umożliwia dostęp do partycji dosowych

/proc Filesystem

proc

dostarcza informacji o procesach w systemie

ISO 9660 Filesystem

iso9660

umożliwia dostęp do napędów CD-ROM

HPFS Filesystem

hpfs

umożliwia tylko odczyt partycji HPFS (np. OS/2)

Wyjątkiem jest główny system plików, którego nie można odmontować podczas normalnej pracy systemu. W celu sprawdzenia głównego systemu plików należy uruchomić Linuxa z dyskietki startowej. Po każdym sprawdzeniu dowolnego systemu plików konieczne jest zrestartowanie komputera.

Nie należy sprawdzać systemu plików /proc, ponieważ są to pliki znajdujące się fizycznie w pamięci, którymi zarządza bezpośrednio jądro Linuxa. Odpowiednie utrzymanie systemu plików wymaga tworzenia regularnych kopii zapasowych. W naszym przypadku nośnikiem, służącym do przechowywania kopii systemu, będą dyskietki.

Najprostszym sposobem sporządzenia kopii zapasowych jest posłużenie się programem tar. Za pomocą polecenia:

# tar cvfzM /dev/fd0 /

możemy utworzyć archiwum naszego systemu, używając stacji dysków /dev/fd0. Opcje cvfzM oznaczają tworzenie skompresowanego archiwum z podziałem na części.

Jeżeli na dyskietce zabraknie wolnego miejsca, tar poleci włożenie następnej dyskietki do stacji dysków. Tak przygotowane archiwum można odtworzyć na dysku za pomocą polecenia:

# tar xvfzM /dev/fd0

W ten sam sposób można archiwizować pliki na taśmie magnetycznej (/dev/rmt0). Tworzenie pełnej kopii zapasowej systemu może być bardzo czasochłonne.

Wielu administratorów systemu przeprowadza archiwizację plików systemu w kilku etapach. Raz w miesiącu archiwizowany jest cały system plików, a raz w tygodniu tylko te pliki, które zostały zmienione. W razie awarii systemu w połowie miesiąca można odtworzyć ostatnią miesięczną kopię, a następnie kopię z ostatniego tygodnia przed awarią.

Bezpieczne wyłączanie Linuxa

Jak już się zdążyliśmy zorientować, pracy w systemie Linux nie wolno kończyć przez wyłączenie zasilania komputera. Zanim zostanie wyłączony komputer, powinniśmy uruchomić program zamykający system.

Podczas zamykania systemu wszystkie informacje z bufora dyskowego są zapisywane na twardy dysk. Do uruchomionych programów wysyłany jest sygnał umożliwiający im zamknięcie wykorzystywanych plików i zakończenie pracy.

Następnie odmontowywane są wszystkie systemy plików i wykonywana procedura po zamknięciu systemu (np. zatrzymanie procesora - halt, restart komputera - reboot). Programem wykonującym wszystkie te czynności jest shutdown. Wywołuje się go następująco:

# shutdown [-krhc] [-t sekundy] <czas> [komunikat_do_użytkowników]

Program wywołany z opcją -k nie powoduje zakończenia pracy Linuxa, a jedynie wysłanie komunikatu do użytkowników w celu "wypłoszenia" ich z systemu. Program shutdown tworzy plik /etc/nologin uniemożliwiający zalogowanie się do systemu użytkownikom innym niż root. Opcja -r powoduje restart systemu po jego zamknięciu, a opcja -h zatrzymanie procesora. Program wywołany z -c przerywa zamykanie systemu. Parametr "czas" jest obowiązkowy i określa, o której godzinie ma nastąpić zamknięcie systemu.

Można podać "now", wówczas system zostanie zamknięty zaraz po wydaniu polecenia shutdown. Opcja -t określa, ile sekund upłynie od wyświetlenia komunikatu do rozpoczęcia zamykania systemu. Przykładowe użycie shutdown może wyglądać tak:

# shutdown -r 14:45

Wydane w ten sposób polecenie spowoduje zamknięcie systemu o godzinie 14.45. Oczywiście to jeszcze nie wszystko. Administrator musi wiedzieć znacznie więcej ponad to, o czym napisałem. Wszystko zależy od konfiguracji systemu, którym zarządza. Obsługa drukarki, podłączanie dodatkowych urządzeń zewnętrznych (terminale, modemy itp.), konfiguracja i utrzymanie sieci to zadania administratorów specyficznie wykorzystywanych systemów. Co prawda zarządzanie takimi systemami wymaga większej wiedzy i doświadczenia, jednak nie jest specjalnie kłopotliwe. Prawdziwym problemem może być zapewnienie odpowiedniego poziomu bezpieczeństwa systemowi i jego użytkownikom.

1



Wyszukiwarka

Podobne podstrony:
RPM, Informatyka, Linux, Linux - Podręcznik
Prawa dostępu, Informatyka, Linux, Linux - Podręcznik
Strumienie, Informatyka, Linux, Linux - Podręcznik
Czas, Informatyka, Linux, Linux - Podręcznik
Jądro i system plików, Informatyka, Linux, Linux - Podręcznik
Archiwa i łaty, Informatyka, Linux, Linux - Podręcznik
Sieć, Informatyka, Linux, Linux - Podręcznik
Katalogi i pliki, Informatyka, Linux, Linux - Podręcznik
RPM, Informatyka, Linux, Linux - Podręcznik
Unix i Linux Podrecznik administratora systemow Wydanie IV unlip4
dokumentacja gentoo linux podręcznik gentoo linux M57EBYYUOP66AXNLPFQ2HEZPW72JOO2Z24YBSFI
administrowanie systemem linux, start systemu
linux, Technik Informatyk, Linux
administrowanie systemem linux, nfs oreilly
Podstawy administracji systemu Linux
Prezentacja krótka Informatyka Linux

więcej podobnych podstron