INDEX GRUPA MEDIA INFORMACYJNE - K O M P E N D I U M LINUX
 

1)    Charakterystyka systemu
2)    Instalacja Linuksa
3)    Pierwsze logowanie
4)    Szukanie pomocy
5)    Struktura katalogów
6)    Podstawowe polecenia
7)    Polecenie at
8)    Polecenie crontab
9)    Co to są konsole wirtualne
10)  Co to jest powłoka ?
11)  Zmienne powłoki
12)  Historia poleceń
13)  Aliasy
14)  Dowiązania stałe i symboliczne
15)  Przekierowania wejścia i wyjścia
16)  Łączenie poleceń za pomocą potoków
17)  Metaznaki
18)  Polecenie echo i znaki cytowania
19)  Zmiana powłoki logowania
20)  Zarządzanie zadaniami
21)  Pliki związane z powłoką
22)  Skrypty powłoki - wprowadzenie
23)  Skrypty powłoki - operacje arytmetyczne
24)  Skrypty powłoki - wyrażenie read
25)  Skrypty powłoki - instrukcje sterujące w skryptach
26)  RPM
27)  Instalowanie z pakietów RPM
28)  Instalowanie pakietów źródłowych RPM
29)  Instalowanie programów źródłowych
30)  Uruchamianie programów
31)  Co to jest X Window
32)  Konfiguracja systemu Xfree86
33)  Uruchamianie sesji X-ów
34)  Menadżery okien
35)  Start systemu i związane z nim procesy
36)  Zamykanie systemu
37)  syslog i logi systemowe
38)  Urządzenia w systemie Linuks
39)  Zmiana praw dostępu do plików i katalogów
40)  Domyślne prawa dostępu przy tworzeniu plików i katalogów
41)  suid i sgid - pożyteczne i niebezpieczne narzędzie
42)  sticky bit
43)  Konto - co to jest i do czego służy ?
44)  Grupy
45)  Dodawanie i usuwanie nowych kont
46)  Tymczasowe blokowanie konta
47)  Pliki i programy związane z kontami użytkowników
48)  Archiwizacja i kopie bezpieczeństwa
49)  Wybór nośnika dla kopii bezpieczeństwa
50)  Techniki wykonywania kopii bezpieczeństwa
51)  Programy i skrypty do archiwizacji i tworzenia kopii bezpieczeństwa
52)  Czym jest system plików ?
53)  Montowanie i odmontowywanie systemu plików
54)  Konfiguracja systemu plików
55)  Narzędzia do sprawdzania i naprawy systemu plików
56)  Tworzenie nowego systemu plików
57)  Inne narzędzia i pliki związane z systemem plików
58)  Procesy
59)  Zdobywanie źródła nowego jądra systemu
60)  Konfiguracja jądra
61)  Kompilacja i instalacja nowego jądra
62)  Moduły jądra
63)  Konfiguracja sieci
64)  Konfiguracja interfejsów sieciowych
65)  Instalacja serwera WWW (APACHE)
66)  Uruchamianie i zatrzymywanie serwera APACHE
67)  Konfiguracja serwera APACHE
68)  Serwery wirtualne (APACHE)
69)  Instalacja serwera FTP (PROFTPD)
70)  Uruchamianie i zatrzymywanie serwera PROFTPD
71)  Konfiguracja serwera PROFTPD
72)  Instalacja serwera poczty elektronicznej (POSTFIX)
73)  Uruchamianie i zatrzymywanie serwera POSTFIX
74)  Konfiguracja serwera POSTFIX
75)  Konfiguracja superserwera inetd
76)  Konfiguracja superserwera xinetd
77)  Podstawy bezpieczeństwa systemu
78)  SSH - bezpieczna powłoka
79)  FIREWALL
80)  IP - MASQUERADE (maskowanie pakietów)

 

1)    Charakterystyka systemu

Minimalne wymagania sprzętowe potrzebne do uruchomienia Linuksa to:

  • Intel 386
  • Wolna przestrzeń dyskowa :
  • 320 MB jeśli system ma działać w trybie tekstowym
  • 450 MB z systemem X-Window
  • 16 MB pamięci RAM
  • karta grafiki VGA
  • stacja dysków 3,5 cala
  • napęd CD-ROM, SCSI lub IDE

Co daje nam Linuks :

  • pełną wielozadaniowość - w tym samym czasie wielu użytkowników może wykonywać kilka zadań na tym samym komputerze
  • pamięć wirtualną - dzięki czemu Linuks może używać części dysku twardego jako pamięci wirtualnej co zwiększa wydajność systemu poprzez umieszczanie aktywnych procesów w pamięci RAM, a tych rzadziej używanych lub nieaktywnych na dysku
  • wbudowaną obsługę sieci - poprzez modem lub kartę sieciową Linuks może porozumiewać się z innymi komputerami wykorzystując protokoły TCP/IP, NFS, NIS lub inne
  • współużytkowanie bibliotek - programy w systemie Linuks nie przechowują własnych kopii standardowych bibliotek tylko wspólnie współużytkują zestaw procedur, do których mogą odwoływać się w trakcie działania. Dzięki temu otrzymujemy więcej przestrzeni dyskowej
  • kompatybilność z normą IEEE.POSIX1 - dzięki czemu Linuks obsługuje wiele standardów ustalonych dla systemów Unix
  • X Window - jest systemem dającym graficzny interfejs Linuksowi
  • niezastrzeżony kod źródłowy - dzięki czemu możemy aktywnie uczestniczyć w rozwoju systemu
  • darmowe oprogramowanie - dostajemy wraz z systemem na płytach CD, poza tym istnieje wiele stron internetowych, na których możemy znaleźć ciekawe oprogramowanie.

 

 

2)    Instalacja Linuksa

Najprostszym sposobem zainstalowania Mandrake jest instalacja z pierwszej płyty CD-ROM zawierającej dystrybucję Linuksa i będącej płytą bootowalną.

Instalacja rozpocznie się po zrestartowaniu komputera - należy jednak pamiętać, aby wcześniej ustawić BIOS tak, aby uruchamiał system z napędu CD-ROM.
Jeśli jednak nasz komputer nie posiada takiej możliwości należy przygotować dyskietkę startową, z której uruchomimy program instalacyjny.

W Windows do tworzenia dyskietki startowej służy program rawwritewin.exe , znajdujący się w katalogu /dosutils na pierwszej płycie z Linuksem.

Jako Image File należy wpisać :

X:\images\cdrom.img
gdzie X jest literą oznaczającą nasz napęd CD-ROM.

W polu Floppy Drive zaznaczamy A: i mając w napędzie czystą dyskietkę naciskamy przycisk Write .

Z tak przygotowaną dyskietką postępujemy tak samo, jak w przypadku instalacji z CD-ROMu, wybierając miejsce, z którego załadowany ma być system, jako dysk A: .

Dalej instalacja systemu polega na zaznaczaniu odpowiednich opcji w odpowiedzi na zadawane przez komputer pytania.

Kolejne wybory będą dotyczyć następujących pytań :

wybór języka
należy tu wybrać język, którym chcemy posługiwać się podczas instalacji systemu, i który będzie domyślnym językiem w naszym systemie

akceptacja licencji
jeśli chcemy kontynuować naszą instalacje należy po zapoznaniu się z treścią licencji wybrać opcję : akceptuj

wybór rodzaju instalacji
tutaj decydujemy o rodzaju instalacji - do wyboru mamy instalacje zalecaną i zaawansowaną.
Podczas instalacji zaawansowanej komputer zada nam więcej pytań, dzięki czemu będziemy mieli większy wpływ na przebieg instalacji (wybieramy opcję : instalacja zaawansowana)

wykrywanie dysków
na tym etapie komputer spróbuje wykryć jakie napędy dysków zainstalowane są w naszym systemie, może pojawić się pytanie o interfejs SCSI. Warto więc zorientować się przed instalacją jakie urządzenia mamy zainstalowane w naszym komputerze

konfiguracja myszy
z listy wybieramy rodzaj myszki zainstalowanej w naszym komputerze

wybór klawiatury
wybieramy rodzaj i układ naszej klawiatury. Jeśli będziemy pracować w języku polskim należy jako układ klawiatury wybrać : polski (programisty)

bezpieczeństwo
pytanie to dotyczy stopnia bezpieczeństwa naszego komputera, dostępne są tu cztery odpowiedzi :
Standardowy - jest to domyślny poziom zabezpieczeń, będący najlepszym wyborem dla maszyn wykorzystywanych w sieci jako klient
Wysoki - poziom ten posiada bardziej zaostrzone prawa dostępu od poprzedniego oraz system powiadamiania administratora o zmianach w systemie mogących wskazywać na włamanie
Wyższy - na poziomie tym większość usług sieciowych jest domyślnie wyłączona, a prawa dostępu do plików są jeszcze bardziej restrykcyjne od tych z poziomu wysokiego
Paranoidalny - na poziomie tym uruchamiane są wszystkie możliwe systemy bezpieczeństwa, a nasz system jest praktycznie odcięty

system plików
na tym etapie możemy stworzyć nowe partycje i wskazać miejsce, w którym zostanie zainstalowany system. Należy pamiętać, że wszystkie zmiany zostaną zapisane dopiero po akceptacji przyciskiem : Gotowe. Do tej pory możemy swobodnie eksperymentować z ustawieniami.
Do instalacji Linuksa potrzebne są przynajmniej dwie partycje :
1 - EXT3 - dla dystrybucji Linuksa
2 - SWAP - jako partycja wymiany
Wielkość partycji SWAP określa się jako podwójną ilość pamięci RAM zainstalowanej w naszym komputerze. Jeśli jednak nasz komputer posiada więcej niż 64 MB, partycja SWAP nie powinien przekraczać 128 MB.
Istniej również możliwość wydzielenia odrębnych partycji dla katalogów takich jak :
/home/usr/usr/local i innych .
O przeznaczeniu i zawartości tych katalogów można przeczytać w dalszej części tego kursu

formatowanie
zaznaczamy tu, które partycje należy sformatować. Jeśli na dysku posiadamy partycje z innym systemem lub partycje z cennymi danymi, nie należy ich zaznaczać.
Istniej tu również możliwość zaznaczenia opcji, dzięki której wybrane partycje zostaną sprawdzone w poszukiwaniu błędów fizycznych

instalacja pakietów
etap ten polega na wybraniu odpowiednich pakietów, które chcemy zainstalować w naszym systemie. Jeśli jednak nie czujesz się na siłach, aby samodzielnie dokonać wyboru możesz skorzystać z gotowych propozycji :
- stacja robocza
- serwer
- środowisko graficzne
Należy pamiętać, że po instalacji istnieje zawsze możliwość doinstalowania brakujących pakietów

hasło root
ustawiamy tutaj hasło dla użytkownika ROOT

użytkownicy
etap ten daje nam możliwość dodania do systemu użytkowników. Należy stworzyć co najmniej jednego użytkownika

konfiguracja sieci
po wejściu na ten etap system spróbuje automatycznie wykryć urządzenia sieciowe pracujące w naszym komputerze.
Następnym krokiem jest podjęcie decyzji w jaki sposób będziemy łączyć się z komputerem :
- poprzez modem
- poprzez ISDN
- poprzez ADSL
- poprzez sieć lokalną
Następne pytania będą uzależnione od naszego wyboru i mogą dotyczyć portu dla modemu, adresu IP, serwera DNS itp.

różne
na tym etapie instalacji możemy sprawdzić czy wybraliśmy odpowiedni sterownik dla myszy, klawiatury i ewentualnie dokonać poprawek.
Możemy wybrać tu również strefę czasową, w której się znajdujemy i dodać drukarkę do naszego systemu.

konfiguracja usług
z listy dostępnych usług możemy wybrać te, które będą uruchamiane podczas startu systemu
program rozruchowy
jeśli na naszym komputerze chcemy mieć zainstalowany więcej niż jeden system, to do wyboru który z nich ma zostać załadowany podczas startu komputera służy właśnie program rozruchowy.
Do wyboru mamy trzy możliwości :
- Grub
- LILO z menu graficzny
- LILO z menu tekstowym
Ja proponuję wybrać LILO z menu graficznym.
Należy wybrać również urządzenie startowe, z którego ładowany jest nasz system. Najczęściej jest to /dev/hda .

dysk startowy
tutaj system spyta nas czy stworzyć dyskietkę startową. Dyskietka taka może okazać się niezbędną w razie jakichkolwiek problemów

konfiguracja X
tutaj dokonujemy konfiguracji X serwera (środowiska graficznego) poprzez wybór :
- monitora
- karty grafiki
- rozdzielczości ekranu, w której chcemy uruchamiać X-y
System zapyta nas również czy chcemy, aby X-y uruchamiały się automatycznie podczas startu systemu.
Więcej o X-ach można dowiedzieć się w dalszej części tego kursu.

aktualizacja systemu
jeśli podczas procesu instalacji poprawnie skonfigurowaliśmy dostęp do internatu, możemy teraz pobrać z sieci udostępnione poprawki systemu i uaktualnione pakiety

wyjście z instalacji
jest to już ostatni etap instalacji systemu Linuks. Mamy tu możliwość zapisania na dyskietce listy wybranych pakietów i stworzenia specjalnej dyskietki przydatnej podczas procesu automatycznej instalacji.

 

 

3)    Pierwsze logowanie

Po załadowaniu systemu Mandrake w zależności od tego czy wybraliśmy automatyczne uruchamianie X-ów, czy też nie, system przywita nas graficznym menadżerem logowania lub konsolą tekstową.
W obu przypadkach system poprosi nas o podanie nazwy użytkownika (login) i jego hasła (password).

Jeśli podczas instalacji stworzyliśmy dodatkowego użytkownika, dobrym rozwiązaniem jest zalogowanie się właśnie jako ten użytkownik.
Należy pamiętać, że będąc zalogowanym w systemie, jako ROOT posiadamy pełne uprawnienia, co oznacza, że możemy wykonać dowolną operację - nawet przypadkowo skasować cały system.

Będąc zalogowanym, jako zwykły użytkownik w każdej chwili możemy stać się super-użytkownikiem lub innym użytkownikiem mającym konto na naszym komputerze.
Do zmiany użytkownika służy komenda wydawana z linii poleceń konsoli :

su nazwa_użytkownika

po wydaniu komendy system poprosi nas o podanie hasła dla tego użytkownika.

Aby stać się z powrotem poprzednim użytkownikiem należy wydać polecenie :

exit

 

 

4)    Szukanie pomocy

Nawet najlepszy administrator w końcu dochodzi do wniosku, że nie wie wszystkiego o systemie i w pewnych sytuacjach potrzebuje pomocy.
Strony man stanowią pierwszą pomoc w takich sytuacjach. Zawierają one definicje i objaśnienia poleceń systemu wraz z opisem opcjonalnych parametrów dla specjalnych funkcji poleceń.

man polecenie
np.:
man ls

pokaże nam opis polecenia ls służącego do listowania zawartości katalogów.

Innym również skutecznym sposobem szukania pomocy są internetowe grupy dyskusyjne poświęcone Linuksowi :

pl.comp.os.linux
pl.comp.os.linux.sprzet
pl.comp.os.linux.programowanie
pl.comp.os.linux.sieci

 

 

5)    Struktura katalogów

Struktura katalogów w dystrybucjach Linuksa jest zorganizowana tak, aby spełniała wymagania standardu określającego postać Linuksowego systemu plików - FSSTND.

Katalogi zorganizowane są w następujący sposób :

/            - główny katalog
|_ bin    - pliki wykonywalne
|_ boot  - pliki ładujące system
|_ dev    - pliki urządzeń
|_ etc     - pliki konfiguracyjne
|_ lib      - biblioteki dzielone i moduły jądra
|_ mnt    - punkt montowania systemów plików
|_ opt     - pakiety zainstalowane opcjonalnie
|_ sbin    - pliki wykonywalne (dla administratorów)
|_ tmp    - pliki tymczasowe
|_ usr     - narzędzia i aplikacje
|_ var    - zmieniające się dane

 

Rozszerzony opis zawartości poszczególnych katalogów :

/
Katalog nadrzędny, który rozpoczyna całe drzewo katalogów.

/bin
Katalog ten zawiera programy wykonywalne, dostępne dla zwykłego użytkownika.

/boot
Katalog ten zawiera tylko statyczne pliki dla boot loadera potrzebne podczas procesu bootowania.

/dev
Tu znajdują się pliki reprezentujące poszczególne urządzenia.

/etc
Zawiera ogólnosystemowe pliki konfiguracyjne dla wielu programów.
Pliki konfiguracyjne dla całego systemu można również umieszczać w /usr/etc.
Niemniej jednak programy powinny zawsze szukać tych plików w /etc , a ty możesz umieścić linki do nich w /usr/etc.

/etc/X11
Pliki konfiguracyjne dla systemu okienkowego X11.

/etc/skel
Tu znajdują się pliki potrzebne do stworzenia nowego konta użytkownika. Podczas tworzenia nowego konta pliki z tego katalogu są kopiowane do katalogu domowego użytkownika.

/home
Tu znajdują się katalogi domowe użytkowników.

/lib
Ten katalog powinien zawierać te biblioteki dynamiczne, które są konieczne do wystartowania systemu i uruchamiania komend z głównego systemu plików.

/lib/modules
Ładowalne moduły jądra, wymagane do startu systemu i pracy po jego padzie (sterowniki sieciowe, itd. ).

/mnt
Jest punktem montowania systemów plików montowanych tymczasowo.

/opt
Ten katalog powinien zawierać dodatkowe pakiety, które zawierają statyczne pliki.

/proc
System plików /proc jest całkowicie wirtualny - nie istnieje na dysku. Jest tworzony i utrzymywany przez jądro w pamięci. Używany jest w celu dostarczenia informacji o systemie (o działających procesach - stąd nazwa).

/root
Tan katalog jest katalogiem domowym użytkownika root.

/sbin
Tak jak /bin, katalog ten zawiera programy potrzebne do wystartowania i administracji systemu. Z programów tych mogą korzystać tylko administratorzy systemu.

/tmp
Ten katalog zawiera pliki tymczasowe, które może usunąć w dowolnym momencie.

/usr
W katalogu tym znajdują się programy zainstalowane podczas instalacji systemu lub te, które instalowaliśmy ręcznie. Katalog ten można zamontować na oddzielnej partycji, dzięki czemu po aktualizacji lub zmianie systemu nie musimy ponownie instalować dodatkowych programów.

/usr/X11R6
Tu znajduje się system X-Window.

/usr/bin
Jest to główny katalog programów wykonywalnych, używanych przez zwykłych użytkowników, które nie są potrzebne przy starcie lub naprawie systemu, i które nie są instalowane lokalnie.

/usr/bin/X11
Tradycyjne miejsce na pliki wykonywalne X11.
Często jest to link symboliczny do /usr/X11R6/bin.

/usr/etc
Można tu umieszczać pliki konfiguracyjne dzielone między kilkoma maszynami. Programy jednak powinny zawsze odwoływać się do tych plików używając katalogu /etc.
Linki od plików w /etc powinny wskazywać na odpowiednie pliki w /usr/etc.

/usr/include
Zawiera pliki nagłówkowe dla kompilatora C.

/usr/include/linux
Zawiera informacje, które mogą zmieniać się z jednego wydania systemu na drugie.

/usr/lib
Znajdują się tu biblioteki obiektowe, w tym dynamiczne, plus parę plików wykonywalnych.

/usr/local
Katalog ten jest przeznaczony dla programów instalowanych lokalnie.

/usr/local/bin
Tu są binaria programów lokalnych.

/usr/local/doc
Lokalna dokumentacja.

/usr/local/etc
Pliki konfiguracyjne skojarzone z lokalnie zainstalowanymi programami.

/usr/local/lib
Pliki skojarzone z lokalnie zainstalowanymi programami.

/usr/local/include
Pliki nagłówkowe lokalnego kompilatora C.

/usr/local/info
Strony info skojarzone z lokalnie zainstalowanymi programami.

/usr/local/man
Strony podręcznika ekranowego skojarzone z lokalnie zainstalowanymi programami.

/usr/local/sbin
Lokalnie instalowane programy do administracji systemem.

/usr/local/share
Dane lokalnych aplikacji, które mogą być dzielone między różnymi architekturami tego samego systemu operacyjnego.

/usr/local/src
Kody źródłowe programów instalowanych lokalnie.

/usr/sbin
Ten katalog zawiera binaria programów do administracji systemem, które nie są niezbędne do startu lub naprawy systemu.

/usr/share
Ten katalog zawiera podkatalogi ze specyficznymi danymi aplikacji, które mogą być dzielone między różnymi architekturami tego samego systemu operacyjnego.

/usr/share/dict
Zawiera pliki z listami słów dla poprawiaczy pisowni.

/usr/share/doc
Dokumentacja zainstalowanych programów.

/usr/share/info
Katalog ze stronami info.

/usr/share/locale
Tutaj znajdują się informacje związane z ustawieniami regionalnymi.

/usr/share/man
Trafiają tu strony podręcznika ekranowego do odpowiednich katalogów według sekcji podręcznika.

/usr/share/man/locale/man[1-9]
Te katalogi zawierają strony podręcznika w formacie źródłowym.

/usr/share/zoneinfo
Pliki informacji o strefach czasowych.

/usr/src
Pliki źródłowe różnych części systemu, dołączane do niektórych pakietów.

/usr/src/linux
Zawiera źródła jądra samego systemu operacyjnego.

/var
Ten katalog zawiera pliki, które mogą zmieniać wielkość, takie jak logi i spoole.

/var/cache
Zbuforowane dane programów.

/var/catman/cat[1-9] lub /var/cache/man/cat[1-9]
Te katalogi przechowują przeformatowane strony podręcznika ekranowego zgodnie z sekcją tego podręcznika.

/var/lib
Zmieniające się podczas pracy systemu pliki programów.

/var/local
Zmienne dane dla programów zainstalowanych w /usr/local.

/var/lock
Umieszczane są tu przez programy pliki blokady w celu wskazania na swoje działanie. Inne programy sprawdzają te pliki i odpowiednio działają (np.: wstrzymują się z odwołaniem do danego urządzenia).
Konwencja nazw plików lock dla urządzeń to LCK.<urządzenie> gdzie <urządzenie>, to nazwa urządzenia w systemie plików.     

/var/log
Tu znajdują się logi systemowe i innych programów.

/var/opt
Zmienne dane dla /opt.

/var/mail
Skrzynki pocztowe użytkowników. Zastępuje /var/spool/mail.

/var/run
Pliki zawierające bieżące informacje o systemie, np.: pliki zawierające identyfikatory procesów (PIDy) i informację o zalogowanych użytkownikach (utmp). Pliki w tym katalogu są zwykle czyszczone przy starcie systemu.

/var/spool
Kolejkowane pliki różnych programów.

/var/spool/at
Spoolowane zadania dla at

/var/spool/cron
Spoolowane zadania dla crona.

/var/spool/lpd
Spoolowane pliki do drukowania.

/var/spool/mail
Zastąpione przez /var/mail.

/var/spool/mqueue
Zakolejkowana poczta wychodząca.

/var/spool/news
Katalog newsów.

/var/spool/rwho
Spoolowane pliki dla rwho.

/var/spool/smail
Spoolowane pliki dla programu smail.

/var/tmp
Tak jak /tmp, ten katalog zawiera tymczasowe pliki przechowywane na czas nieokreślony.

/var/yp
Pliki bazy danych systemu NIS.

 

 

6)    Podstawowe polecenia

Dokładny opis każdego poleceń można zobaczyć poprzez wydanie komendy :

man polecenie

Polecenia można podzielić na następujące grupy :

- polecenia związane z plikami i katalogami
- polecenia związane z systemem plików
- polecenia związane z zarządzaniem użytkownikami
- polecenia związane z zarządzaniem modułami jądra
- polecenia związane z procesami
- polecenia związane z siecią
- polecenia związane z wyszukiwaniem
- polecenia związane z szukaniem pomocy
- inne polecenia

 

Polecenia związane z plikami i katalogami :

 

cd ścieżka_dostępu
Opis : zmiana bieżącego katalogu

 

touch [-acm] [MMDDhhmm] lista_plików
Opis : modyfikacja daty i czasu utworzonego pliku, tworzenie nowego pliku
Opcje:
-a - zmienia tylko czas ostatniego dostępu do pliku
-c - jeśli plik nie istnieje nie zostanie utworzony
-m - zmienia czas ostatniej modyfikacji pliku
MMDDhhmm - czas w postaci : miesiąc dzień godzina minuta (np.: 10122122)

 

rm [-fr] nazwa_pliku
Opis : kasowanie pliku
Opcje :
-f - pomija konieczność potwierdzenia pytania o usuwanie plików
-r - usuwa zawartość katalogu wraz z podkatalogami

 

cp [-flpRs] plik plik_docelowy_lub_katalog
Opis : kopiowanie plików i katalogów
Opcje :
-f - powoduje, że program nie uprzedza o nadpisaniu pliku docelowego o tej samej nazwie
-l - tworzy dowiązanie zamiast kopiować plik
-p - opcja ta powoduje, że kopiowane pliki zachowują w miarę możliwości swoje atrybuty
-R - kopiuje zawartość katalogów i podkatalogów
-s - tworzy dowiązanie symboliczne zamiast kopiować plik

 

mv [ -fu] plik plik_docelowy_lub_katalog
Opis : zmiana nazwy lub przenoszenie pliku i katalogu
Opcje :
-f - powoduje, że program nie uprzedza o nadpisaniu pliku docelowego o tej samej nazwie
-u - przenosi pliki tylko wówczas, gdy istniejące pliki docelowe są starsze

 

chmod [-R][ugoa][+-=][rwx] plik_lub_katalog
Opis : zmiana atrybutów pliku
Opcje :
-R - zmiana praw dla plików i katalogów wraz z podkatalogami
-u (user) - właściciel pliku lub katalogu
-g (group) - grupa, do której należy dany plik lub katalog
-o (other) - wszyscy pozostali
+ - dodaje prawa
- - odbiera prawa
= - sprawia, że plik lub katalog będzie miał prawa tylko takie, jakie zostaną podane po tej opcji
-r - prawo czytania danych
-w - prawo zapisu (edycji)
-x - prawo uruchamiania

 

chown [-Rf] właścicel[:grupa] plik_lub_katalog
Opis : zmiana właściciela pliku lub katalogu
Opcje :
-R - zmiana właściciela i/lub grupy plików i katalogów wraz z podkatalogami
-f - zmienia właściciela i/lub grupę tylko tym plikom, które należą do podanego właścicela i/lub grupy

 

mkdir [-mp] katalog
Opis : tworzenie katalogów
Opcje :
-m=prawa - nadaje tworzonym katalogom podane prawa
-p - nie ostrzega, jeśli katalog o podanej nazwie już istnieje

 

rmdir [-p] katalog
Opis : kasowanie katalogów
Opcje :
-p - usuwa katalog wraz z katalogami nadrzędnymi

 

ls [-al] plik_lub_katalog
Opis : wyświetla informacje o plikach i katalogach
Opcje :
-a - wyświetla wszystkie pliki w katalogu, wraz z plikami ukrytymi
-l - listuje w długim formacie pełną informację o plikach i katalogach

 

ln [-dfs] plik_lub-katalog link
Opis : tworzenie dowiązań
Opcje :
-d - tworzy dowiązanie twarde do katalogów
-f - nie informuje o nadpisywaniu istniejącego pliku
-s - tworzy dowiązanie symboliczne

 

less nazwa_pliku
Opis : podgląd plików tekstowych

 

cat nazwa_pliku
Opis : przesyła plik na standardowe wejście

 

Polecenia związane z systemem plików :

 

df [-aht] urządzenie
Opis : sprawdzenie ilości wolnego miejsca na dysku
Opcje :
-a - wyświetla informacje o każdym systemie plików
-h - wyświetlane informacje są podawane w łatwych do odczytania jednostkach
-t=typ - wyświetla informacje tylko o systemie danego typu

 

mkfs [-t] [-c] urządzenie_blokowe
Opis : tworzenie systemu plików
Opcje :
-t - określa typ tworzonego systemu plików, domyślnie ext2
-c - sprawdza uszkodzone bloki urządzenia przed utworzeniem systemu plików

 

mount [-t] [-o] urządzenie_lub_katalog
Opis : montowanie systemu plików
Opcje :
-t - typ montowanego systemu plików
-o - po tej opcji następuje podanie oddzielonych przecinkami wartości :
   remount - przemontowanie zamontowanego już systemu plików
        ro - montuje system plików w tryb tylko do odczytu
        rw - montuje system plików w tryb tylko do odczytu i zapisu
       nouser - zabrania zwykłemu użytkownikowi montowania systemu plików

 

umount urządzenie_lub_katalog
Opis : odmontowanie systemu plików

 

e2fsck [-pcf] [-b] urządzenie
Opis : testowanie systemu plików
Opcje :
-p - napraw automatycznie system plików bez żadnych pytań
-c - uruchom program badblocks w celu znalezienia uszkodzonych bloków
-f - wymuś sprawdzanie, nawet jeśli system plików wydaje się być czysty
-b superblok - użyj podanego superbloku

 

fdisk [-lv] [-s] urządzenie
Opis : obsługa partycji
Opcje :
-l - drukuje tablice partycji
-v - drukuje numer wersji fdiska
-s partycja - jest partycją wybranego dysku
urządzenie - jest plikiem z katalogu /dev wskazującym na nasz dyski (np.: hda)

 

fdformat [-n] urządzenie
Opis : niskopoziomowy format dyskietki
Opcje :
-n - wyłączenie weryfikacji sformatowanej dyskietki

 

Polecenia związane z zarządzaniem użytkownikami :

 

useradd [-d] [-g] [-G] [-s] [-u] nazwa_użytkownika
Opis : dodawanie użytkowników
Opcje :
-d katalog_domowy - wartość ta określa katalog domowy użytkownika, domyślnie zmienna ta przyjmuje wartość taką samą jak nazwa użytkownika
-g gupa_początkowa - jest nazwą grupy początkowej użytkownika. Grupa ta musi już istnieć. W przypadku nie podania tej zmiennej system sam utworzy grupę dla użytkownika o nazwie zgodnej z nazwą użytkownika
-G inne_grupy - lista dodatkowych grup, do których zostanie przypisany użytkownik
-s powłoka - nazwa powłoki użytkownika
-u uid - numeryczna wartość identyfikatora użytkownika. Wartość ta musi być niepowtarzalna i większa od 99. W przypadku nie podania tej zmiennej system sam przydzieli użytkownikowi pierwszy wolny numer.

 

userdel [-r] nazwa_użytkownika
Opis : usuwanie użytkowników
Opcje :
-r - zostaną usunięte pliki w katalogu domowym użytkownika, sam katalog domowy i pliki buforowania poczty

 

groupadd [-g] nazwa_grupy
Opis : dodawanie grup
Opcje :
-g gid - numeryczna wartość identyfikatora grupy. Wartość ta musi być niepowtarzalna. Wartości od 0-99 są zarezerwowane dla kont systemowych i nie powinny być używane. W przypadku nie podania gid system sam przydzieli grupie pierwszą wolną wartość.

 

groupdel nazwa_grupy
Opis : usuwanie istniejących grup

 

usermod [-d] [-g] [-G] [-s] [-u] [-l] nazwa_użytkownika
Opis : modyfikowanie danych użytkowników
Opcje :
-l login - nowa nazwa użytkownika
pozostałe opcje mają identyczne znaczenie jak opcje z polecenia useradd

 

groupmod [-g][-n] grupa
Opis : modyfikowanie danych grup
Opcje :
-g gid - numeryczna wartość identyfikatora grupy
-n grupa - nowa nazwa grupy

 

passwd [-l][-u][-d][-S] nazwa_użytkownika
Opis : zmiana hasła użytkownika
Opcje :
-l - zablokowanie konta
-u - ponowne udostępnienie konta
-S - wyświetlenie informacji o stanie konta

 

su nazwa_użytkownika
Opis : chwilowa zmiana aktywnego użytkownika

 

Polecenia związane z zarządzaniem modułami jądra :

 

insmod [-fp] [-o] plik_modułu
Opis : instalowanie modułu jądra
Opcje :
-f - usiłuje załadować moduł nawet jeśli wersja uruchomionego jądra i jądra dla którego moduł został skompilowany nie zgadza się
-p - sprawdza czy moduł może być załadowany bez kłopotów
-o nazwa_modułu - podanie dokładnej nazwy modułu

 

rmmod [-a] moduł
Opis : usuwanie modułu
Opcje :
-a - usuń wszystkie nieużywane moduły

 

lsmod
Opis : listowanie aktywnych modułów

 

depmod moduł
Opis : sprawdzanie zależności między modułami

 

modprobe moduł
Opis : instalowanie modułu z potrzebnymi opcjami i modułami

 

modinfo [-adnp] plik_modułu
Opis : informacje o modułach
Opcje :
-a - wypisuje autora modułu
-d - wypisuje opis modułu
-n - wypisuje nazwę pliku modułu
-p - wypisuje parametry wspierane przez moduł

 

Polecenia związane z procesami :

 

top [-p]
Opis : listuje procesy o największym obciążeniu procesora i wyświetla ich statystyki w czasie
rzeczywistym
Opcje :
-p - monitoruje jedynie proces o danym id procesu

 

pidof nazwa_programu
Opis : wyświetlenie numeru procesu wybranego programu

 

ps [-auxr][txx]
Opis : listuje aktywne procesy
Opcje :
-a - pokaż procesy innych użytkowników
-u - format użytkownika - podaje nazwę użytkownika i czas startu
-x - pokaż procesy bez kontrolującego terminala
-r - pokaż tylko pracujące procesy
-txx - pokaż tylko procesy z kontrolującym tty XX

 

kill [-s] numer_procesu
Opis : zakańcza działanie procesu
Opcje :
-s - rodzaj wysłanego sygnału

 

jobs
Opis : listuje aktywne programy

 

fg numer_zadania
Opis : ustawienie procesu na front

 

bg numer_zadania
Opis : przeniesienie procesu w tło

 

Polecenia związane z siecią :

 

ifconfig <if> <IP> <nm> <bc>
Opis : konfigurowanie interfejsu sieciowego
Opcje :
if - rodzaj interfejsu (np.: Eth0)
IP - adres IP interfejsu
nm - maska sieci
bc - adres rozgłoszeniowy

 

ifconfig interfejs up
Opis : uruchamianie interfejsu sieciowego

 

ifconfig interfejs down
Opis : zatrzymywanie interfejsu sieciowego

 

route add|del [-net|-host] gw cel netmask dev
Opis : kontrola trasowania
Opcje :
add - dodanie drogi do tablicy trasowania
del - usunięcie drogi z tablicy trasowania
-net - oznacza, że celem jest sieć
-host - oznacza, że celem jest stacja
gw brama - adres bramy sieciowej
cel - docelowa sieć lub stacja
netmask netmaska - maska sieci
dev interfejs - wymusza związanie trasy z podanym interfejsem

 

netstat [-riM]
Opis : wyświetla połączenia sieciowe i statystyki połączeń
Opcje :
-r -wyświetl tablice routingu
-i - wyświetla tablice wszystkich działających interfejsów sieciowych
-M - wyświetl listę wszystkich maskaradowanych sesji

 

Polecenia związane z wyszukiwaniem :

 

grep [-civ] wzorzec [plik]
Opis : wyszukiwanie ciągów znaków
Opcje :
-c - podaje liczbę wierszy w których znaleziono pasujący wzorzec
-i - pomija różnicę w wielkości liter
-v - wyświetla wiersze, w których nie ma podanego wzorca
plik - nazwa pliku, w którym nastepuje przeszukanie

 

find
Opis : szukanie plików

 

whereis [-bms] nazwa pliku
Opis : lokalizuje źródła, binaria i dokumentację man
Opcje :
-b - szukaj tylko binariów
-m - szukaj tylko sekcji dokumentacji man
-s - szukaj tylko źródeł

 

Polecenia związane z szukaniem pomocy :

 

man polecenie
Opis : manual systemowy

 

info
Opis : podręcznik GNU

 

apropos klucz
Opis : przeszukuje bazy z dokumentacją pod kątem słów kluczowych

 

Inne polecenia :

 

date [-ds]
Opis : podaje lub ustawia datę systemową i czas
Opcje :
-d DATA - podaje datę i czas, określone podanym wyrażeniem
-s DATA - ustawia podany czas i datę

 

logout , exit
Opis : zakończenie sesji

 

clear
Opis : czyszczenie ekranu terminala

 

shutdown [-akh] czas ostrzeżenie
Opis : restart lub wyłączenie systemu
Opcje :
-a - użyj /etc/shutdown.allow w celu zabronienia wykonywania tego polecenia
-k - wyślij komunikat o zamknięciu ale nie wykonuj prawdziwego zamknięcia systemu
-h - zatrzymaj po wyłączeniu systemu
czas - czas po którym system zostanie zamknięty.
             Forma czasu : HH(godzina):MM(minuty) lub +m gdzie m jest liczbą minut do odczekania

 

halt
Opis : zamknięcie systemu

 

reboot
Opis : przeładowanie systemu

 

 

7)    Polecenie at

Składnia polecenia at jest następująca :

at -f {plik z zadaniem} czas_uruchomienia_zadania
lub
at czas_uruchomienia_zadania

Po naciśnięciu klawisza ENTER wpisujemy zadanie do wykonania.

Określanie czasu dla polecenia at.
Czas można określić na wiele sposobów. Domyślnie przyjmowany jest czas 24-godzinny. Podawanie minut jest opcjonalne. Jeśli dodany zostanie przyrostek am lub pm, czas będzie traktowany jako czas 12-godzinny.
Przy podawaniu czasu dozwolone jest stosowanie słów mających specjalne znaczenie:
midnight (północ), noon (południe), today (dziś), tomorrow (jutro) oraz now (teraz).
Po słowie now należy podać czas, po jakim polecenie ma zostać wykonane.
Oprócz wartości oznaczających godziny można również podawać, w którym miesiącu zadanie ma się rozpocząć (za pomocą liczb od 1 do 12 lub pierwszych trzech liter angielskiej nazwy miesiąca). Rok oznaczany jest liczbą czterocyfrową. Dni tygodnia podaje się za pomocą pierwszych trzech liter nazwy angielskiej.
Odstępy czasu pozwalają na podanie pory rozpoczęcia zadania w odniesieniu do czasu bieżącego. Do ich określania służy znak +, po którym następuje liczba i jeden z wyrazów: minute, hour, day, week lub year (można również używać liczby mnogiej, na przykład weeks). Słowo next (następny) ma takie samo znaczenie, jak +1.

Oto kilka przykładów :

at 14:12 January 9
at 2:12am Jan 9
at now + 5 minutes

 

 

8)    Polecenie crontab

Składnia polecenia crontab :

crontab -l | -r | -e

-e otwiera plik z zadaniami
-l listuje zadania
-r usuwa zadania


Określanie czasu dla polecenia crontab :

Składnia pliku z zadaniami jest następująca :

min godz dzień_miesiąca miesiąc dzień_tygodnia zadanie

Dane podawane są w pięciu kolumnach rozdzielonych przecinkami; myślnik oznacza zakres, natomiast gwiazdka - wszystkie dostępne wartości.

Oto lista poszczególnych pól i dostępnych w nich wartości :

Minuty     0-59
Godziny    0-23
Dni miesiąca     1-31
Miesiące    1-12
Dni tygodnia    0-6, 0 = niedziela

Oto kilka przykładów :

co pięć minut
*/5 * * * * /zadania/zad1

co godzinę -1 minutę po pełnej godzinie
01 * * * * /zadania/zad1

codziennie 5 minut po północy
05 0 * * * /zadania/zad1

co tydzień w niedziele 10 minut po północy
10 0 * * 0 /zadania/zad1

 

 

9)    Co to są konsole wirtualne

Linuks domyślnie posiada siedem wirtualnych konsol, do których mamy dostęp za pomocą kombinacji klawiszy : ALT+F1-F7. Podczas uruchamiania systemu X Window ręcznie lub automatycznie, zablokowana zostaje konsola, z której zostały uruchomione X-y, a nasz menadżer wyświetlania dostępny jest na konsoli 7. Przejście z poziomu X-ów na pozostałe konsole odbywa się za pomocą następującej kombinacji klawiszy : CTR+ALT+F1-F6

Na każdej z wirtualnych konsol możemy zalogować się, jako inny użytkownik. Takie rozwiązanie umożliwia nam uruchomienie na każdej z konsol jakiegoś zadania.
Należy jednak pamiętać, że Linuks to prawdziwy system wielozadaniowy, który umożliwia przeniesienie dowolnego procesu w tło, zwalniając terminal i ponowne przywrócenie go w dowolnym momencie.

 

 

10)  Co to jest powłoka ?

Powłoka (shell) jest interpretatorem poleceń przeczytanych z klawiatury lub pliku - jest czymś w rodzaju command.com w systemach windowsowych.
Każde polecenie wpisane z klawiatury zostaje zamienione przez powłokę na język zrozumiały dla jądra systemu, które może odpowiednio zareagować na to polecenie.

Linuks posiada kilka powłok : bash, sh, csh, tcsh, ale domyślnym shell'em dla Mandrake jest bash, dlatego pozostałe opisy będą dotyczyć tej właśnie powłoki.

 

 

11)  Zmienne powłoki

Zmienne można podzielić na trzy grupy :

  • zmienne lokalne
  • zmienne globalne
  • zmienne specjalne
  • zmienne programowe

 

Zmienne lokalne określają konfigurację powłoki i są widoczne tylko dla shell'a dla którego zostały zdefiniowane.
Aby zobaczyć ustawienia zmiennych lokalnych możemy wydać polecenie :

set

Ważniejsze zmienne to :

BASH=/bin/bash - nazwa naszej powłoki
BASH_VERSION=1.14.7(1) - wersja naszej powłoki
COLUMNS=80 - liczba kolumn znaków na naszym ekranie
LINES=25 - liczba linii na ekranie
HOME=/home/student - nasz katalog domowy
LOGNAME=student - nasz login
OSTYPE=Linux - typ systemu
PATH=/usr/bin:/sbin:/bin:/usr/sbin - domyślna ścieżka dostępu
PS1=[\u@\h \W]\$ - ustawienie znaku zachęty
PWD=/home/student - nasz aktualny katalog roboczy
SHELL=/bin/bash - nazwa naszej powłoki
USERNAME=student - nazwa użytkownika, który jest aktualnie zalogowany w systemie
EDITOR=vim - nazwa domyślnego edytora tekstu
HISTFILE=/home/student/.bash_history - plik zawierający historię poleceń
MAIL=/var/spool/mail/$USER - określa plik, do którego dopisywane są listy przychodzące na nasze konto

Jeśli chcemy zobaczyć ustawienie pojedynczej zmiennej wydajemy polecenie :

echo $HOME

Do zdefiniowania nowej zmiennej lokalnej służy polecenie export z parametrem -n powodującym usunięcie atrybutu eksportu dla danej zmiennej :

export -n nazwa_zmiennej=nowa_wartość
np.:
export EDITOR=mcedit

 

Zmienne globalne są to zmienne widoczne w każdym podshellu.
Aby ustalić nową zmienną lub przypisać inną wartość starej należy użyć polecenia :

export EDITOR=mcedit

 

Zmienne specjalne są definiowane przez system i w przeciwieństwie do innych zmiennych nie można zmieniać ich wartości.
Najczęściej zmienne te wykorzystywane w skryptach do sterowania programem.

Przykładowe zmienne specjalne to :

$# - liczba parametrów przekazanych do programu
#? - kod zakończenia polecenia lub programu wywołanego z programu powłoki
$0 - pod zmienna tą kryje się nazwa uruchomionego programu
$1,$2 - kolejne parametry programu

 

Zmienne programowe to zmienne definiowane przez użytkownika w skryptach powłoki.
Definicja zmiennej programowej wygląda następująco :

nazwa_zmiennej=wartość
np.:
x=123
imie="Darek"

Pod zmienna programową można podstawić również wynik dowolnego polecenia , np.:
sciezka=`pwd`

Do zmiennej odwołujemy się poprzez podanie jej nazwy poprzedzonej znakiem $ , np.:
echo $imie

 

 

12)  Historia poleceń

Powłoka bash posiada zdolność przywoływania wcześniej wydawanych poleceń przez użycie klawiszy kursora. Bash rejestruje je w pliku .bash_history , który znajduje się w katalogu domowym użytkownika.

Historię poleceń określają dwa parametry :

HISTFILE - wskazuje na plik zawierający wywołane wcześniej polecenia
HISTSIZE - określa ile ostatnio wydanych poleceń ma być przechowywanych w pliku historii

Aby obejrzeć listę ostatnio wydawanych poleceń bez otwierania powyższego pliku należy skorzystać z polecenia history z parametrem określającym liczbę wierszy, które mają być wyświetlone :

history 10

pokaże 10 ostatnio użytych poleceń.

Aby powtórzyć wcześniej wydane polecenie można użyć następującej komendy :
!3
gdzie 3 jest trzecią komendą z listy wyświetlonej poleceniem history .

 

 

13)  Aliasy

Bash daje nam ciekawy mechanizm aliasów umożliwiających zastępowanie złożonych poleceń krótszymi, łatwiejszymi do zapamiętania nazwami.
Aliasy tworzymy korzystając z polecenia alias , którego składnia jest następująca :

alias 'nasza_definicja'='polecenie'
np.:
alias 'p'='ps -aux'

Teraz poprzez wydanie polecenia p otrzymamy listę wszystkich procesów.
Zdefiniowane aliasy możemy zlikwidować poleceniem unalias :

unalias p

 

 

14)  Dowiązania stałe i symboliczne

Mechanizm dowiązań (linków) ułatwia dostęp do plików ukrytych głęboko w strukturze katalogów lub umożliwia zgromadzenie potrzebnych plików w jednym katalogu.

Linki dzielimy na stałe i symboliczne.

Dowiązania stałe charakteryzują się tym, że posiadają ten sam i-węzeł co wskazywany plik. W praktyce oznacza to, że dowiązanie takie zawiera pełną informację o pliku i w razie skasowania oryginalnego pliku dowiązanie nadal będzie zawierać informacje o tym pliku (jego zawartość).
Dowiązanie stałe tworzymy poleceniem :

ln plik_lub_katalog link

Dowiązania symboliczne służą jedynie do wskazywania na jakiś plik. Umożliwiają one prace na danym pliku poprzez jego dowiązanie. W przypadku skasowania pliku, do którego prowadzi link symboliczny niemożliwe staje się korzystanie z tego dowiązania (nie zawiera on wówczas żadnych informacji).
Dowiązania symboliczne tworzymy poleceniem :

ln -s plik_lub_katalog link

 

 

15)  Przekierowania wejścia i wyjścia

Przekierowania zazwyczaj wykorzystywane są do odczytania danych z jakiegoś urządzenia lub pliku albo do wysłania danych na urządzenie lub plik.

Do przekierowań danych służą specjalne znaki :
< dane na wejście
> dane z wyjścia

Najprostszym przykładem przekierowania może być wyświetlenie zawartości jakiegoś pliku poleceniem :

cat < plik.txt

Aby utworzyć nowy plik i wpisać do niego dowolny tekst możemy użyć przekierowania danych z wyjścia :

cat > plik.txt

Polecenie to utworzy nam plik : plik.txt i umieści w nim tekst wpisany z klawiatury.

Jeśli będziemy chcieli ponownie dodać jakiś tekst do tego pliku należy użyć polecenia :

cat >> plik.txt

Spowoduje to dodanie następnych wierszy z informacją do pliku.

Innym przykładem przekierowań może być zapisanie do pliku zawartości jakiegoś katalogu :

ls -al > plik.txt

 

 

16)  Łączenie poleceń za pomocą potoków

Połączenie poleceń za pomocą potoków oznacza wysłanie wyniku z jednego polecenia na wejście drugiego polecenia. Potoki są bardzo często wykorzystywane podczas pisania wszelakich skryptów.

Polecenie :

ls -al | less

łączy ze sobą dwa polecenia :

ls -al - listuje zawartość katalogu
less - umożliwia przeglądanie dużych plików za pomocą klawiszy kursora.
Wynikiem tego połączenia jest możliwość obejrzenia zawartości dużego katalogu za pomocą klawiszy kursora.

 

 

17)  Metaznaki

Meta-znaki to pewien zbiór znaków pełniący specjalne funkcje w powłoce Linuksa.

Znaczenia meta-znaków :

* - oznacza dowolną sekwencję, dowolną ilość znaków
? - oznacza dowolny pojedynczy znak
[qwA1] - oznacza dowolny pojedynczy znak, wymieniony w nawiasach
[a-z] - oznacza dowolną małą literę
[A-G] - oznacza dowolną dużą literę od A do G
[a-zA-Z0-9] - oznacza dowolną małą lub dużą literę i dowolną cyfrę

Meta-znaki najczęściej wykorzystywane są do listowania zawartości katalogów :

ls *
wyświetla wszystkie pliki w katalogu z wyjątkiem zaczynających się od '.' kropki (są to pliki ukryte)

ls *.*
wyświetla wszystkie pliki zawierające w nazwie '.'

ls [A-B]*
wyświetla wszystkie pliki zaczynające się od A lub B

ls ??1
wyświetla pliki, których nazwa składa się z dwóch dowolnych liter i jedynki na końcu.

 

 

18)  Polecenie echo i znaki cytowania

Do wyświetlenia tekstu lub wartości zmiennych na ekranie służy polecenie echo.

Polecenie to może być stosowane z kilkoma opcjami :

-n - nie wyświetlaj nic i przejdź do następnej linii
-e - włącz interpretację następujących komend występujących po \ :
   \a - dzwonek
   \b - kasuj ostatni znak
   \c - przechodź do następnej linii
   \n - nowa linia
   \t - tabulator
   \\ - znak \

Powłoka Bash odróżnia i inaczej interpretuje trzy rodzaje znaków cytowania :

  • cudzysłów " " - umożliwia wyświetlenie tekstu, zmiennej ($), zacytowanie polecenia (``) lub użycie znaków specjalnych występujących po \
  • apostrof ' ' - wszystko to co zawarte jest między apostrofami interpretowane jest jako zwykły tekst
  • odwrotny apostrof ` ` - przydaje się w sytuacji gdy chcemy podstawić lub zacytować jakieś polecenie

 

 

19)  Zmiana powłoki logowania

Powłokę, którą system przydziela nam po zalogowaniu ustawia administrator podczas procesu tworzenia nowego użytkownika.
Jako zwykły użytkownik mamy jednak możliwość zmiany przydzielonej nam powłoki dzięki poleceniu:

chsh nowa_powłoka

Należy jednak pamiętać, że powłoka, którą chcemy wybrać musi być wyszczególniona w pliku  /etc/shells

 

 

20)  Zarządzanie zadaniami

Każdy program uruchomiony z konsoli może zostać przeniesiony w tło co oznacza że będzie on widoczny jedynie jako działający proces zwalniając wiersz poleceń i umożliwiając dalszą pracę na konsoli.

Aby uruchomić jakiś program lub polecenie w tle należy skorzystać ze znaku & i umieścić go na końcu nazwy programy lub polecenia :

ps -aux > procesy &

Istnieje również możliwość przeniesienia w tło już uruchomionego zadania, poprzez zatrzymanie go :

[Ctrl]+[z]

i przeniesienie w tło poleceniem :

bg numer_zadania

gdzie
numer_zadania to liczba pojawiająca się w nawiasie kwadratowym przy nazwie zatrzymanego programu.

Aby wyświetlić listę z uruchomionymi lub zatrzymanymi zadaniami należy użyć polecenia :

jobs

Każde zadanie przeniesione w tło możemy z powrotem umieścić na pierwszym planie używając polecenia :

fg numer_zadania

 

 

21)  Pliki związane z powłoką

Przed uruchomieniem powłoki system sprawdza pliki konfiguracyjne shell'a z katalogu /etc/ i z katalogu macierzystego użytkownika.

Główne pliki konfiguracyjne z katalogu /etc/ :

bashrc , profile - podstawowe ustawienia powłoki
inputrc - konfiguracja edytora poleceń basha

Pliki konfiguracyjne z katalogu użytkownika :

.bash_profile , .bashrc - wykonywane podczas uruchamiania powłoki
.bash_logout - wykonywane podczas zamykania powłoki

 

 

22)  Skrypty powłoki - wprowadzenie

Skrypty powłoki są programami składającymi się z poleceń powłoki i poleceń sterujących programem, takich jak : IF, FOR, REPEAT, WHILE itp.
Skrypty umożliwiają pobranie danych od użytkownika lub z pliku, przetworzenie ich i wyświetlenie wyniku na ekranie monitora lub zapisanie go na dowolnym urządzeniu.

Aby nasz skrypt mógł zostać uruchomiony należy nadać mu prawo do uruchamiania poleceniem :

chmod +x nazwa_skryptu

Każdy skrypt powinien rozpoczynać się linijką :


#!/bin/bash
Zapis ten oznacza to, że do przetworzenie skryptu zostanie użyta powłoka bash.

Przykładowy skrypt może wyglądać następująco :

#!/bin/bash
# to jest tylko komentarz
echo 'skrypt wyswietla aktualny katalog roboczy'
echo -e "biezacy katalog :\n\a`pwd`"

 

#!/bin/bash
echo "informacje o uruchomionym skrypcie"
echo "nazwa skryptu : $0"
echo "ilosc parametrow : $#"
echo "pierwszy parametr to : $1"
echo "drugi parametr to : $2"
echo -e "zestawienie wszytkich parametrow :\n$*"

 

 

23)  Skrypty powłoki - operacje arytmetyczne

Do wykonywania operacji arytmetycznych służy wyrażenie expr .
Przykłady działań arytmetycznych :

dodawanie expr 1 + 3
odejmowanie expr 4 - 1
dzielenie           expr 8 / 2
reszta z dzielenia expr 20 % 3
mnożenie expr 1 \* 3

 

 

24)  Skrypty powłoki - wyrażenie read

Wyrażenie read używane jest do pobierania danych z klawiatury i zapisywania ich w zmiennych.

Składnia wyrażenia read jest następująca:

read zmienna1,zmienna2,..zmiennaN

Przykładowy skrypt :

#!/bin/bash
echo "Podaj swoje imię:"
read imie
echo "Cześć $imie !"

 

 

25)  Skrypty powłoki - instrukcje sterujące w skryptach

Bash umożliwia wykorzystanie w skryptach instrukcji sterujących wykonywanym skryptem takich jak :

  • instrukcje warunkowe : if
  • pętle : for , while , until
  • wyrażenie : case

 

Instrukcja warunkowa if

if warunek
then

wykonuje wszystkie polecenia jeśli warunek jest równy zero (true)
elif warunek 2
then

wykonuje wszystkie polecenia jeśli warunek 2 jest równy zero (true)
else
wykonuje wszystkie polecenia jeśli żaren z powyższych warunków nie jest spełniony
fi

Warunek musi mieć następującą postać :

[ wyrażenie1 operator wyrażenie2 ]

Między nawiasami a treścią warunku muszą być postawione spacje.

Operatory wykorzystywane w warunkach :

-eq jest równe (= =)
-ne jest różne (!=)
-lt jest mniejsze (<)
-le jest mniejsze lub równe (<=)
-gt jest większe (>)
-ge jest większe lub równe (>=)

Przykładowy skrypt :

#!/bin/sh
if [ $1 -gt 0 ]
then
echo "liczba $1 jest dodatnia"
elif [ $1 -lt 0 ]
then
echo "liczba $1 jest ujemna"
elif [ $1 -eq 0 ]
then
echo "liczba $1 jest zerem"
else
echo "$1 nie jest liczba"
fi

 

Petla for

Podczas wykonywania pętli for , zmiennej zostaje przypisana każda wartość z listy, wykonując jednocześnie instrukcje zawarte miedzy operatorami : do done w kolejnych etapach przypisania.

for { nazwa zmiennej } in { lista }
do

instrukcje wykonywane są tyle razy ile jest elementów listy
done

Przykładowy skrypt :

#!/bin/bash
for i in 1 2 3
do
echo $i
done

 

Pętla while i pętla until

Pętla while wykonywana jest tak długo jak długo podany warunek jest prawdziwy.
Pętla until wykonywana jest tak długo jak długo podany warunek jest nie prawdziwy.
Obie pętle mają taką samą budowę.

while [ warunek ]
do
polecenie1
polecenie2
.......
done

Przykładowy skrypt :

#!/bin/bash
x=1;
while [ $x -le 10 ]; do
echo $x
x=$[x + 1] x= expr x + 1
done

 

Wyrażenie case

Wyrażenie case pozwala na dokonanie wyboru z pośród kilku wzorców.

case zmienna in
"wzorzec1") polecenie1 ;;
"wzorzec2") polecenie2 ;;
"wzorzec3") polecenie3 ;;
*) polecenie_domylne
esac

Przykładowy skrypt :

#!/bin/bash
echo "Wybierz liczbę od 1-4 i zobacz co wygrałeś :"
read liczba
case "$liczbad" in
"1") echo "samochód" ;;
"2") echo "dom" ;;
"3") echo "10000 zł" ;;
"4") echo "przykro mi ale nic nie wygrywasz" ;;
*) echo "aby wziąć udział w losowaniu należy wybrać liczbę z przedziału 1-4"
esac

 

 

26)  RPM

RPM jest menadżerem pakietów służącym do instalowania, usuwania i tworzenia nowych pakietów oraz pobierania informacji o nich.
Pakiety RPM to archiwa plików wchodzących w skład danego programu, biblioteki czy zbioru dokumentów. Pakiety te zawierają skompresowane pliki oraz kilka dodatkowych plików z informacjami, takimi jak : nazwa pakietu, wersja i krótki opis.
Aby zachować orientację w pakietach nadaje się im nazwy konstruowane według konkretnych zasad. Nazwa pakietu składa się z czterech części :

- nazwy właściwej
- numeru wersji i podwersji (np.: 3.0.5-9.6x)
- oznaczenia typu (np.: źródło - src, nazwa architektury, dla której skompilowano pakiet - i386, brak zależności od architektury - noarch)
- identyfikatora - rpm

Przykładowy pakiet RPM może wyglądać tak :
Narzedzia-3.0.5-9.6x.i586.rpm

Korzystanie z pakietów RPM daje dodatkowe korzyści w porównaniu ze zwykłą instalacją.

Pakiety RPM możemy :

uaktualniać - nowe wersje oprogramowania mogą być instalowane bez nadpisywania plików
konfiguracyjnych
usuwać - pakiety oprogramowania są bez problemu usuwane w całości ze wszystkich
zajmowanych katalogów
weryfikować - po zainstalowaniu pakietu możemy sprawdzić czy pliki wchodzące w jego skład
nie zostały uszkodzone
pytać - możemy uzyskać informacje o pakiecie, do którego należy określony plik

Większość plików systemu RPM znajduje się w katalogu /var/lib/rpm/ .
Największy z tych plików to packages.rpm , zawierający bazę danych o zainstalowanym oprogramowaniu.

Pakiety RPM mogą zawierać również źródła programu. Wówczas pakiet taki należy najpierw skompilować i dopiero później zainstalować.

Największą trudność początkującemu użytkownikowi sprawia instalacja oprogramowania źródłowego. Spowodowane jest to częstym występowaniem komunikatów o błędzie wynikającym z braku odpowiednich bibliotek w systemie, dlatego należy szczególnie uważnie czytać dokumentację dostarczaną wraz z programem.

 

 

27)  Instalowanie z pakietów RPM

Gotowy pakiet RPM instalujemy poleceniem :
rpm -i [opcje] nazwa.pakietu

Uaktualnianie pakietów RPM
rpm -U [opcje] nazwa.pakietu

Usuwanie pakietów RPM
rpm -e [opcje] nazwa.pakietu

najważniejsze opcje to:

-v - wyświetla dodatkowe informacje o działaniach programu RPM
-h - wyświetla semigraficznie informacje o postępie instalacji
--percent - wyświetla procentowy wskaźnik zaawansowania instalacji
--test - przeprowadzenie procesu instalacji bez instalowania żadnych plików - przydatne do sprawdzenia czy podczas instalacji nie wystąpi jakiś konflikt
--force - wymusza instalację pakietu

 

 

28)  Instalowanie pakietów źródłowych RPM

Instalacja pakietów źródłowych przebiega w następujących krokach :

- należy skopiować pakiet :
nazwa.pakietu.src.rpm

do katalogu
/usr/src/redhat/SOURCE/

- w katalogu tym wydajemy polecenie :
rpm -rebuild nazwa.pakietu.src.rpm

Jeśli wszystko przebiegło bez problemów gotowy pakiet RPM można znaleźć w katalogu :
usr/src/redhat/RPMS/i386/ lub usr/src/redhat/RPMS/noarch/ w zależności od architektury komputera.

Instalacja gotowego pakietu RPM została pokazana w pk. 1)

Niektóre pakiety można spróbować przekompilować pod kątem wydajności swojego komputera.
Dla procesora Pentium II kompilację przeprowadzamy poleceniem :

rpm -rebuild nazwa.pakietu.src.rpm -target=i686

 

 

29)  Instalowanie programów źródłowych

Instalacja programów ze źródeł obejmuje trzy proste kroki :

KROK 1 : rozpakowanie pliku:

W zależności od użytego archiwizatora używamy poleceń :

dekompresja *.tar
tar -xvf nazwa_pakietu.tar

dekompresja *.tar.gz
tar -zxvf nazwa_pakietu.tar.gz

dekompresja *.gz
gzip -d nazwa_pakietu.gz

dekompresja *.bz2
bzip2 -d nazwa_pakietu.bz2

 

KROK 2 : konfiguracja źródeł :

W katalogu ze źródłami wydajemy polecenie :

./configure

Aby dostosować program do własnych potrzeb możemy w wywołaniu tym podać dodatkowe parametry określone w pliku INSTALL.

Możemy na przykład określić miejsce, w które program będzie przekopiowany po instalacji :
./configure -prefix=katalog

Typową lokalizacją dla programów kompilowanych samodzielnie jest :
/usr/local/nazwa.instalowanego.programu/

 

KROK 3 : kompilacja programu i właściwa instalacja

Program kompilujemy poprzez wydanie polecenia :

make

jeśli program nie zwrócił błędu to przechodzimy do instalacji wydając polecenie :
make install

 

 

30)  Uruchamianie programów

Jeśli chcemy uruchomić jakiś program wystarczy podać nazwę tego programu :
startgame

Jeśli nasza zmienna systemowa PATH nie zawiera ścieżki do miejsca, w którym znajduje się ten program, należy podać nazwę programu wraz z pełną ścieżką dostępu :
/usr/loca/bin/startgame

Jeśli znajdujemy się już w katalogu z naszym programem możemy podać tylko nazwę tego programu, wstawiając przed jego nazwą ./ :
./startgame

 

 

31)  Co to jest X Window

System X Window jest podstawą graficznego interfejsu Linuksa. Udostępnia on podstawowy zestaw protokołów komunikacyjnych oraz funkcji służących do tworzenia interfejsów okienkowych. X Window od początku rozwijany był jako system o budowie modularnej z przeznaczeniem do zastosowań sieciowych.
Programy lub aplikacje pracujące w środowisku X-ów są nazywane klientami. Programy te nie wpływają bezpośrednio na obraz wyświetlany na monitorze tylko komunikują się z serwerem X-ów, który zarządza tym obrazem.

Program uruchamiający serwer X-ów to :
/usr/X11R6/bin/X

System X Window używany w większości dystrybucji Linuksa jest zbiorem programów dostarczanych przez Xfree86 Project.

 

 

32)  Konfiguracja systemu Xfree86

Najważniejszym plikiem konfiguracyjnym systemu X Window jest XF86Config znajdujący się w katalogu /etc/X11/. Plik ten jest tworzony automatycznie podczas procesu instalacji.

XF86Config podzielony jest na kilka sekcji zawierających dane konfiguracyjne :

Files - informuje serwer X-ów, gdzie znajdują się czcionki, kolory lub konkretne moduły programowe
Module - zawiera informacje, które moduły powinny zostać załadowane
Server Flags - sekcja ta zawiera listę konkretnych czynności, których wykonywania możemy zabronić lub zezwolić poprzez specjalne znaczniki - flagi
Keyboard - zawiera informacje o używanej klawiaturze
Pointer - zawiera informacje o urządzeniu wskazującym
Input - specjalna sekcja dla urządzeń, takich jak tablet lub piórko świetlne
Monitor - zawiera szczegółowe ustawienia monitora
Device - znajdują się tu szczegółowe informacje na temat układu graficznego
Screen - informuje serwer X-ów jakiej głębi kolorów, rozmiaru ekranu i rozmiaru wirtualnego ekranu ma używać

Istnieje kilka narzędzi do konfiguracji X serwera. Najpopularniejsze z nich uruchamiane z wiersza poleceń konsoli, jako root to :

Xconfigurator , xf86config lub XF86Setup.

Poza tym środowiska graficzne, takie jak GNOME czy KDE posiadają własne programy konfiguracyjne.

 

 

33)  Uruchamianie sesji X-ów

Istnieją dwa sposoby uruchamiania sesji X-ów :

- uruchamianie automatyczne podczas startu systemu
- uruchamianie ręczne w trybie tekstowym komendą startx

Uruchamianie automatyczne podczas startu systemu

Aby X-y uruchamiały nam się automatycznie podczas startu systemu, należy wybrać piąty poziom pracy systemu. Poziom ten można ustawić edytując plik :

/etc/inittab/

i ustawiając odpowiednią wartość w linijce zawierającej wpis :

id:poziom_pracy:initdefault
id:5:initdefault

Automatyczny start X Window odbywa się poprzez program xdm, którego konfiguracja znajduje się w pliku /etc/X11/xdm/xdm-config.
Logowanie do systemu następuje w trybie graficznym poprzez menadżer logowania, który umożliwia wybranie jednego z kilku zainstalowanych menadżerów wyświetlania.

 

Uruchamianie ręczne w trybie tekstowym komendą startx

Podczas uruchamiania X Window komendą startx system wykonuje następujące kroki :

- sprawdza zawartość katalogu użytkownika w poszukiwaniu skryptu .xinitrc uruchamiającego wybrany menadżer wyświetlania
- jeśli skrypt taki nie istnieje w katalogu użytkownika to uruchomienie domyślnego menadżera następuje poprzez uruchomienie skryptu /etc/X11/xinit/xinitrc.

Przykładowa zawartość pliku .xinitrc uruchamiającego IceWM może wyglądać następująco :

exec icewm

Należy pamiętać o ustawieniu prawa do uruchamiania dla tego skryptu.

 

 

34)  Menadżery okien

Istnieje spora grupa menadżerów okien dla Linuksa. Każdy z nich różni się oprawą graficzną, funkcjonalnością, wymaganiami systemowymi i objętością. Ja spróbuję tylko w kilku słowach opisać najbardziej popularne, a wybór tego, którego najlepiej używać zostawię wam.

Stronę z menadżerami wyświetlania znajdziecie w dziale Linki.

KDE - bardzo ładny i dobrze spolszczony interfejs (podobny do Windows). Duża funkcjonalność i konfiguralność. Duże wymagania sprzętowe. Nie do końca stabilny.

GNOME - podobnie jak KDE - ładny i spolszczony interfejs. Duża funkcjonalność. Spore wymagania sprzętowe. Stabilny.

WINDOWMAKER - menadżer ten obsługuje technologię drag&drob. Umożliwia zmianę wyglądu biurka dzięki mechanizmowi tematów. Posiada rozbudowane możliwości i jest stosunkowo szybki.

IceWM - niskie wymagania sprzętowe. Pulpit podobny do tego z Windows 95. Konfiguracja tylko poprzez ręczną edycję plików konfiguracyjnych. Szybki.

Enlightenment - w menadżerze tym duży nacisk położono na wygląd. Funkcjonalność dość dobra. Nie duże wymagania systemowe.

TWM - bardzo niskie wymagania systemowe. Maksymalnie uproszczony interfejs. Brak obsługi wirtualnych desktopów, ikon, pasków zadań. Konfiguracja poprzez edycję plików konfiguracyjnych.

 

 

35)  Start systemu i związane z nim procesy

Jądro systemu po wszelkich czynnościach związanych z własną inicjacją uruchamia program init. Init to proces macierzysty wszystkich procesów. Jego rola polega na tworzeniu procesów opisanych w pliku konfiguracyjnym /etc/inittab oraz inicjacji i konfiguracji systemu.

Jednym z najważniejszych skryptów uruchamianych przez init jest rc.sysinit
Dzięki sysinit zostają wykonane następujące czynności :

- ustawienie początkowej wartości zmiennej środowiskowej $PATH
- konfiguracja sieci
- inicjacja partycji wymiany dla pamięci wirtualnej
- ustawienie nazwy hosta
- sprawdzenie głównej partycji
- zmian trybu dla głównej partycji pozwalając na zapis
- sprawdzenie ograniczenia zużycia przestrzeni dyskowej przez użytkownika (quota)
- czyszczenie tablicy zamontowanych systemów plików /etc/mtab
- wprowadzenie informacji o partycjach do mtab
- montowanie partycji z pliku /etc/fstab
- sprawdzanie zależności wśród modułów
- ładowanie modułów
- usunięcie starych plików PID
- włączenie partycji wymiany
- inicjacja portów szeregowych

Po uruchomieniu rc.sysinit następnym uruchamianym skryptem jest rc.local.
Jego zadanie polega na pobraniu nazwy systemu operacyjnego oraz informacji o architekturze komputera i umieszczeniu ich w pliku /etc/issue.

Kolejnym zadaniem procesu init jest uruchomienie skryptów z katalogu odpowiadającemu danemu poziomowi pracy :

Poziom pracy 0 - /etc/rc.d/rc0
przejście na ten poziom pracy powoduje :
- zatrzymanie wszystkich procesów
- wyłączenie pamięci wirtualnej
- odmontowanie partycji wymiany i systemów plików
- zatrzymanie pracy systemu

Poziom pracy 1 - /etc/rc.d/rc1.d
Jest to tak zwany tryb jednoużytkownikowy i jest on wykorzystywany do prac konserwacyjnych.
W trybie tym nikt poza użytkownikiem root nie może być zalogowany.
Sieć jest niedostępna i tylko najważniejsze systemy plików są zamontowane.

Poziom pracy 2 - /etc/rc.d/rc2.d
Tryb wieloużytkownikowy z wyłączoną usługą NFS.

Poziom pracy 3 - /etc/rc.d/rc3.d
Tryb wieloużytkownikowy z włączoną usługą NFS.

Poziom pracy 4 - /etc/rc.d/rc4.d
Ten poziom pracy jest pusty co pozwala na zdefiniowanie własnego poziomu pracy.

Poziom pracy 5 - /etc/rc.d/rc5.d
Na poziomie tym zostaje uruchomiony graficzny interfejs X11 i większość usług sieciowych.

Poziom pracy 6 - /etc/rc.d/rc6.d
Poziom ten odpowiada za restart systemu.

 

Wszystkie skrypty znajdujące się w katalogach /etc/rc*.d/ są sztywnymi linkami do plików z katalogu /etc/rc.d/init.d.
Skrypty z tych katalogów posiadają nazwy tworzone według schematu :

<S/K><numer>nazwa

gdzie :

<S/K> - oznacza start lub zatrzymanie danego programu
<numer> - określa kolejność wykonywania (uruchamiania lub zatrzymywania)
nazwa - nazwa uruchamianego skryptu

Wybór domyślnego poziomu pracy, w który system wchodzi zaraz po uruchomieniu określamy w pliku /etc/inittab.
Plik ten zawiera również wskazania na skrypty, które uruchamiane są w zależności od poziomu pracy systemu.

Wybór domyślnego poziomu pracy następuje poprzez modyfikację linii :

id:poziomu_pracy:initdefault

 

Pozostałe linie mają następującą postać :

id:poziom_pracy:akcja:proces

gdzie :

id - jest identyfikatorem linii
poziom_pracy - określa poziom lub poziomy pracy, na których powinna zostać wykonana zawartość linii (np.: 5 lub 35)
akcja - określa w jaki sposób ma uruchomić program :
   respawn - proces należy uruchomić od nowa po każdym jego zakończeniu
   wait - proces należy uruchomić raz na właściwym poziomie pracy i czekać na jego zakończenie
   once - proces będzie wywoływany raz po wejściu we właściwy poziom pracy
   boot - proces zostanie uruchomiony podczas bootowania systemu
proces - nazwa programu

przykład :

1:2345:respawn:/sbin/getty 9600 tty1

powoduje uruchomienie getty po wejściu na poziomy 2 3 4 5 i ponowny jego restart po zakończeniu działania.

 

Linuks umożliwia uruchomienie systemu w trybie jednoużytkownikowym, umożliwiając wprowadzenie poprawek do systemu lub naprawę systemu.
Uruchomienie systemu w trybie single daje bezpośredni dostęp do systemu z prawami użytkownika root bez podawania hasła dla tego użytkownika.

Aby uruchomić system w tym trybie należy w momencie pojawienia się znaku zachęty LILO: wpisać
single .

W przypadku używamy LILO z graficznym menu, aby uzyskać dostęp do znaku zachęty należy po pojawieniu się ekranu wyboru nacisnąć klawisz Esc.

Należy pamiętać, że możliwość taka zmniejsza bezpieczeństwo naszego systemu umożliwiając dostęp do konta administratora każdemu użytkownikowi mającemu dostęp do naszego komputera.
Dobrym rozwiązanie jest takie skonfigurowanie programu LILO, aby wymuszało wpisanie hasła przed wyświetleniem znaku zachęty.

 

 

36)  Zamykanie systemu

Ważną rzeczą jest, aby system Linuks był odpowiednio zamknięty przed wyłączeniem zasilania. Każde wyłączenie komputera przed zamknięciem systemu może doprowadzić do uszkodzenia systemu plików i utraty cennych danych.

Podczas zamykania systemu przechodzi on na 0-wy poziom pracy i uruchamia skrypty mające na celu zatrzymanie pracy usług, wszystkich aktywnych procesów, zaktualizowanie
struktury wszystkich plików i na koniec uruchamiany jest skrypt halt z katalogu init.d powodujący zatrzymanie pracy systemu.

System Linuks posiada kilka skryptów powodujących jego zamknięcie :

halt - natychmiastowe zamknięcie systemu
reboot - zrestartowanie systemu
shutdown - program ten posiada najwięcej opcji i może służyć zarówno do zatrzymania pracy systemu, restartu, jak i do ostrzegania o zamknięciu systemu. Użytkownik root może zabronić wykonywania tego polecenia innym użytkownikom poprzez umieszczenie ich w pliku /etc/shutdown.allow .

Więcej informacji na każdy z tych skryptów można uzyskać wydając polecenie :

man nazwa_skryptu

 

 

37)  syslog i logi systemowe

syslogd - jest programem odpowiedzialnym za zbieranie informacji (logów) o systemie.
Miejscem przeznaczonym na zapisywanie logów systemowych jest katalog /var/log .
Tu w odpowiednich katalogach i plikach można znaleźć interesujące nas dane.

Plikiem konfiguracyjny tego demona jest /etc/syslog.conf .

Każda informacja zawarta w pliku składa się z trzech pól :

źródło_komunikatu.rodzaj_komunikatu wyjście

np.:

authpriv.* /var/log/securr

Jeśli kilka rodzaji komunikatów ma te same wyjście to należy oddzielić je średnikiem, np.:

cron.=debug;cron.=info;cron.=notice var/log/cron/info

Źródła komunikatów mogące wystąpić w tym pliku to :

auth - dane związane z autoryzacją
authpriv - inne komunikaty związane z autoryzacją
cron - komunikaty crona
daemon - inne demony
ftp - komunikaty z serwera ftp
kern - komunikaty jądra systemu
local0-local7 - komunikaty lokalne
lpr - system obsługi drukarki
mail - komunikaty związane z pocztą
mark - w regularnych odstępach czasu wysyła datę i czas
news - system wiadomości
syslog - komunikaty demona syslog
user - procesy użytkowników
uucp - komunikaty protokołu uucp

Rodzaje komunikatów to :

alert - wymagające natychmiastowego działania
crit - krytyczne
debug - uruchomieniowe
emerg - sytuacje zagrożenia
err - błędy
info - informacyjne
notice - wymagające zwrócenia szczególnej uwagi
none - po prostu nic
warning - ostrzeżenia

Znaki mogące wystąpić przed rodzajem komunikatów :

* - wszystkie z wyjątkiem mark
! - za wyjątkiem

np.:

mail.*;mail.!=info /var/log/maillog
mail.info /var/log/info

oznacza, że wszystkie rodzaje komunikatów dotyczące usługi mail zostaną zapisane do pliku /var/log/maillog za wyjątkiem komunikatów informacyjnych, które zapisane zostaną do /var/log/info .

 

 

38)  Urządzenia w systemie Linuks

W systemie Linuks wszystkie urządzenia są reprezentowane przez odpowiednie pliki znajdujące się w katalogu /dev.

Urządzenia te dzielą się na blokowe i znakowe.

Urządzenia blokowe służą do przechowywania danych i pozwalają na swobodny dostęp do nich.
Urządzeniami tego typu są na przykład dyski twarde lub stacje dyskietek.
Urządzenia te zachowują się podobnie jak pliki z tym, że długość plików określona jest przez ilość zapisanych w nich danych, a długość urządzenia blokowego przez jego pojemność.
Wadą takiego rozwiązania jest to, że jeśli zapiszemy plik o rozmiarze 10MB do urządzenia blokowego o pojemności 100MB , to po odczytaniu tego urządzenia otrzymamy 10MB naszych danych i 90MB danych zapisanych wcześniej. Wadę tę można ominąć kodując informację o długości pliku w nim samym.

Urządzenia znakowe służą do odczytu lub zapisu sekwencji znaków.
Charakterystyczną cechą tych urządzeń jest to, że danych z nich nie można odczytywać w dowolnej kolejności tylko w kolejności takiej, w jakiej docierają one do komputera.
Dobrym przykładem takiego urządzenia jest łącze szeregowe.

Oznaczenia niektórych urządzeń z katalogu /dev/ :

hda - pierwszy dysk twardy (IDE/EIDE)
hda1 - pierwsza partycja na pierwszym dysku twardym
hdb - drugi dysk twardy lub CD-ROM   
sda - pierwszy dysk twardy (SCASI)
sda1 - pierwsza partycja na pierwszym dysku twardym
sdb - drugi dysk twardy (SCASI)
fd0 - pierwsza stacja dysków elastycznych
fd1 - druga stacja dysków elastycznych
cua0 - COM1
cua1 - COM2
lp0 - LPT1
lp1- LPT2
tty1 - terminal 1
tty2 - terminal 2
null - urządzenie puste
kmem - pamięć operacyjna

 

 

39)  Zmiana praw dostępu do plików i katalogów

Prawa dostępu do plików i katalogów są jednymi z najważniejszych mechanizmów bezpieczeństwa systemu. Uniemożliwiają one innym użytkownikom przeglądanie naszych zasobów. Prawa dostępu podzielone są na trzy sekcje :

  • właściciel pliku lub katalogu
  • grupa związana z plikiem lub katalogiem
  • wszyscy inni użytkownicy systemu

Polecenie ls -l wyświetla szczegółową listę plików i katalogów wraz z ich prawami dostępu :

ls- l
drwxr-x--- 7 student users 512 Jul 11 22:47 katalog1

 

wyjaśnienie tego zapisu jest następujące :

identyfikator typu :

-   zwykły plik
b  specjalny plik blokowy
c  specjalny plik znakowy
d  katalog
l   link symboliczny
p  potok
s  gniazdo

prawa dostępu :

prawo

plik

katalog

R

czytania zawartości przeszukania zawartości

W

zmiany zawartości zmiany zawartości

X

uruchomienia przejścia do tego katalogu

 

Prawa przypisywane plikom lub katalogom mogą być podawane na dwa sposoby :

  • systemem kodów numerycznych :  4 2 1
  • systemem kodów znakowych :      r w x

Oto kilka przykładów na porównanie tych systemów :

prawa dostępu

zapis numeryczny

zapis znakowy

Tylko do czytania

4

r--

Tylko do pisania

2

-w-

Tylko do uruchamiania

1

--x

Do czytania i pisania

6

rw-

Do czytania i uruchamiania

5

r-x

Czytania, pisania i uruchamianie

7

rwx

 

Polecenie służące do zmian praw dostępu to chmod .

Przykłady :

Prawo do czytania dla właściciela pliku

chmod 400 nazwa_pliku
chmod u+r nazwa_pliku

Wszystkie prawa dla właściciela pliku i prawo do czytania dla grupy

chmod 740 nazwa_pliku
chmod u+rwx,g+r nazwa_pliku

 

 

40)  Domyślne prawa dostępu przy tworzeniu plików i katalogów

Domyślne prawa dostępu dla plików i katalogów nadawane są podczas ich tworzenia.
Zmianę tych praw uzyskujemy poleceniem umask.
Jeśli chcielibyśmy, aby tworzone pliki miały domyślne prawa 644, które zezwalają właścicielowi na czytanie i pisanie, a reszcie tylko na czytanie to od wartości 777 należy odjąć 644 , a wynik będzie wartością dla umask

  777
-644
-------
  133

umask 133

 

 

41)  suid i sgid - pożyteczne i niebezpieczne narzędzie

Zadaniem tego potężnego, a zarazem niebezpiecznego narzędzia jest uruchamianie programu (nie skryptu) z prawami właściciela lub grupy przypisanej temu programowi, a nie z prawami użytkownika, który ten program uruchamia.

Zagrożenie z używania tych flag może wynikać z możliwości przejęcia kontroli nad systemem.
Jeśli zwykłemu użytkownikowi uda się tak zawiesić program (którego właścicielem jest użytkownik root i który ma ustawioną flagę suid lub sgid), aby dostać się do powłoki to otrzyma on prawa właściciela programu (czyli w tym przypadku użytkownika root) co stanowi ogromne zagrożenie dla systemu.
Dlatego należy z dużym rozsądkiem używać tych flag.

Nadawanie plikom suid-a lub sgid-a wygląda następująco :

suid :

chmod u+s nazwa_plku
chmod 2*** nazwa_pliku

sgid :

chmod g+s nazwa_pliku
chmod 4*** nazwa_pliku

suid i sgid :

chmod 6*** nazwa_pliku

*** - tu wstawiamy dowolne prawa dla właściciela, grupy i innych użytkowników.

Flaga suid w listingach plików reprezentowana jest przez literkę s w prawach dla właściciela pliku :

- rws r-x r-x

Flaga sgid w listingach plików reprezentowana jest przez literkę s w prawach dla grupy :

- rwx r-s r-x

 

 

42)  sticky bit

Dla pliku ustawienie sticky bitu oznacza, że program, który on przechowuje będzie po jego zakończeniu nadal przechowywany w pamięci komputera.
Dla katalogów sticky bit oznacza, że tylko właściciel może go usunąć mimo ustawienia praw na przykład na 777.

Ustawienie sticky bitu dla plików wygląda następująco :

chmod 1*** nazwa_pliku_katalogu
chmod +t nazwa_pliku_katalogu

*** - tu wstawiamy dowolne prawa dla właściciela, grupy i innych użytkowników.

Reprezentantem tego bitu w listingach katalogów jest literka t w sekcji dotyczącej reszty użytkowników :

- rwx r-x r-t

 

 

43)  Konto - co to jest i do czego służy ?

W kilku słowach konto użytkownika można określić, jako wszystkie zasoby, pliki i informacje o tym użytkowniku. Każde konto charakteryzują dwie podstawowe cechy - hasło i login. Dzięki loginowi komputer wie, z którym użytkownikiem aktualnie pracuje, a hasło służy do zabezpieczenia zasobów tego użytkownika.
Konta wykorzystywane są również przez programy, które na każdym z tych kont mogą posiadać własne pliki konfiguracyjne, dostosowujące program do potrzeb danego użytkownika.

 

 

44)  Grupy

Grupy umożliwiają dostęp do zasobów systemowych wybranym użytkownikom. Istnieją dwie możliwości zarządzania grupami :

  • tworzenie nowej grupy dla każdego nowo utworzonego użytkownika
  • dodawanie użytkowników do istniejących już grup

Każda z tych metod ma swoje zalety i wady. Tworzenie osobnych grup dla nowych użytkowników zwiększa bezpieczeństwo ich danych.
Załóżmy jednak, że nasz system pracuje w firmie, gdzie zatrudnionych jest pięciu księgowych i dziesięciu pracowników biurowych. Wszyscy ci pracownicy korzystają z zasobów naszego systemu. Księgowi posiadają wspólne bazy danych i pracownicy biurowi wspólne zasoby. Zasoby księgowych nie mogą być dostępne dla pracowników biurowych i odwrotnie.
W takim przypadku dobrym rozwiązaniem jest stworzenie dwóch grup :

  • księgowi
  • biurowi

Każdej z tych grup należy przydzielić odpowiednich pracowników i ustawić odpowiednie prawa dostępu dla nich i innych użytkowników, zabraniając tym ostatnim prawa dostępu.
Takie rozwiązanie daje możliwość dzielenia się zasobami wśród danej grupy nie udostępniając ich innej.

Do tworzenia nowej grupy służy polecenie :

groupadd -g gid nazwa_grupy
lub
groupadd nazwa grupy

gdzie :

gid - numeryczna wartość identyfikatora grupy. Wartość ta musi być niepowtarzalna.
          Wartości od 0-99 są zarezerwowane dla kont systemowych i nie powinny być używane.
          W przypadku nie podania gid system sam przydzieli grupie pierwszą wolną wartość.

Aby skasować daną grupę należy wydać polecenie :

groupdel nazwa_grupy

Podczas dodawania grup system modyfikuje następujące pliki :

/etc/group

zawiera on wszystkie informacje o grupach.
Każdy wpis zajmuje jedną linię, mającą następujący format :
nazwa_grupy:hasło:GID:lista_użytkowników

/etc/gshadow

zawiera bezpieczne informacje o kontach grup.

 

 

45)  Dodawanie i usuwanie nowych kont

Linuks posiada dwa sposoby tworzenia nowych kont :

  • poprzez specjalne programy
  • ręcznie - poprzez edycję odpowiednich plików

 

Podstawowym programem do dodawania nowych użytkowników jest useradd o następującej składni :

useradd -d katalog_domowy -g grupa_początkowa -G inne_grupy -s powłoka -u UID login

gdzie :

katalog_domowy - wartość ta określa nazwę nowo utworzonego użytkownika. Domyślnie zmienna ta przyjmuje wartość taką samą jak login
gupa_początkowa - jest nazwą grupy początkowej użytkownika. Grupa ta musi już istnieć. W przypadku nie podania tej zmiennej system sam utworzy grupę dla użytkownika o nazwie zgodnej z nazwą loginu
inne_grupy - lista dodatkowych grup, do których również należy użytkownik powłoka - nazwa powłoki użytkownika
UID - numeryczna wartość identyfikatora użytkownika. Wartość ta musi być niepowtarzalna i większa od 99. W przypadku nie podania tej zmiennej system sam przydzieli użytkownikowi pierwszy wolny numer.

Domyślne wartości dla zmiennych są podawane z pliku /etc/default/useradd

Dodanie użytkownika o nazwie uczen do systemu może wyglądać następująco :

groupadd uczen

useradd -d /home/uczen -g uczen -s /bin/bash uczen
lub
useradd uczen

 

Ręczne tworzenie konta wymaga więcej czasu od administratora systemu, ale za to pomoże w zrozumieniu mechanizmu tworzenia kont.

Aby ręcznie utworzyć nowe konto dla użytkownika uczen należy wykonać następujące czynności :

a) dodać wpis do pliku /etc/passwd i w przypadku maskowania haseł do /etc/shadow

/etc/passwd
uczen::504:504::/home/uczen:/bin/bash

/etc/shadow
uczen::0:99999:7:::

Składnia pliku passwd jest następująca :

nazwa_użytkownika:hasło:UID:GID:komentarz:katalog_domowy:polecenie_logowania

gdzie :

nazwa_użytkownika - jest polem zawierającym jednoznacznie identyfikującą nazwę użytkownika
hasło - jest zakodowanym hasłem użytkownika. Jeśli w systemie użyto maskowania haseł to w miejscu tym znajduje się x. Brak jakiejkolwiek wartości oznacza brak hasła na tym koncie
UID - unikalny numer reprezentujący użytkownika w systemie
GID - unikalny numer wskazujący na domyślną grupę, do której należy użytkownik komentarz - zawiera informacje o użytkowniku dostępną dla innych użytkowników po wydaniu polecenia finger
katalog_domowy - określa miejsce katalogu domowego użytkownika
polecenie_logowania - polecenie, które zostaje uruchomione w trakcie logowania do systemu. Często jest to wpis wskazujący na powłokę.

Składnia pliku /etc/shadow jest następująca :

nazwa_użytkownika:hasło:data_zmiany_hasła:min:max:przypomnienie:ważność_konta: inne

gdzie :

nazwa_użytkownika - jest polem zawierającym jednoznacznie identyfikującą nazwę użytkownika
hasło - zaszyfrowane hasło
data_zmiany_hasła - data ostatniej zmiany hasła
min - minimalny okres pomiędzy zmianami hasła
max - maksymalny okres pomiędzy zmianami hasła
przypomnienie - wartość ta określa na ile dni przed upływem terminu przypominać o zmianie hasła
ważność_konta - termin ważności konta
inne - miejsce zarezerwowane na przyszłe zmienne

b) dodać wpis do /etc/group i /etc/gshadow

/etc/gropu :
uczen:x:504:

/etc/gshadow :
uczen:x::

c) skopiować pliki z /etc/skel do utworzonego katalogu /home/uczen

d) ustawić właściciela i prawa dostępu dla nowego użytkownika :

cd /home/
chown -R uczen:uczen uczen
cd /home/uczen
chmod -R go=u,go-w .
chmod go= .

e) ustawić hasło dla konta :

passwd uczen

 

 

46)  Tymczasowe blokowanie konta

Administrator systemu czasami z różnych przyczyn jest zmuszony do tymczasowego zablokowania konta bez jego kasowania.
Istnieją dwa sposoby blokowani kont :

  • w pliku /etc/passwd na pozycji hasło należy wstawić przed x znak '!' .
    Teraz podczas próby logowania system odmówi dostępu użytkownikowi :
    uczen : !x : 504 : 504 : : /home/uczen : /bin/bash
  • drugi sposób polega na wykorzystaniu polecenia passwd :

          blokowanie konta :
          passwd -l nazwa_użytkownika

          ponowne udostępnienie konta :
          passwd -u nazwa_użytkownika

 

 

47)  Pliki i programy związane z kontami użytkowników

Najważniejsze polecenia zmieniające właściwości konta to :

chfn - zmienia informacje o koncie dla programu finger
chsh - służy do zmiany powłoki logowania
passwd - zmienia hasło konta

Zwykły użytkownik tymi poleceniami może zmienić właściwości tylko swojego konta.
Super-użytkownik - root - może wykorzystać te polecenia do zmiany dowolnego konta.

Ciekawymi plikami związanym z kontem użytkownika są :

.bashrc - zawartość tego pliku wykonywana jest podczas logowania na dane konto
.bash_logout - zawartość tego pliku wykonywana jest podczas wylogowywania się z konta

 

 

48)  Archiwizacja i kopie bezpieczeństwa

Jak cenne są dane gromadzone czasami przez kilka miesięcy nie trzeba nikomu przypominać kto choć raz je utracił. Jeśli stracone dane były tylko naszą własnością to nikt oprócz nas nie poniesie straty, jeśli jednak utraciliśmy dane z serwera firmy, którego jesteśmy administratorem to może to być już duży problem.
Aby uniknąć podobnych problemów w domu czy firmie należy archiwizować swoje dane.

Różnica pomiędzy kopią bezpieczeństwa, a archiwizacją jest dość znaczna.

Wykonywanie kopii bezpieczeństwa obejmuje operacje na plikach zawierających dane, których zawartość zmienia się w regularnych odstępach czasu.

Pojęcie archiwizacja obejmuje operacje na plikach zawierających wszelkie dane, te zmieniające się często, jak i te zmieniające się rzadko.

 

 

49)  Wybór nośnika dla kopii bezpieczeństwa

Przy wyborze nośnika należy rozważyć :
koszt, pewność, prędkość, dostępność i użyteczność.

Najbardziej popularnymi nośnikami są :

  • dyski twarde
  • CD-ROM-y
  • Flash ROM-y
  • taśmy

Każdy z tych nośników ma swoje zalety i wady, dlatego to, który najlepiej nadaje się to archiwizacji jest sprawą indywidualną.

 

 

50)  Techniki wykonywania kopii bezpieczeństwa

Najprostszą metodą wykonania kopii bezpieczeństwa jest skopiowanie każdego pliku wchodzącego w skład naszego systemu. Technika ta nazywa się pełną archiwizacją i może być dość czasochłonna.
Pełną archiwizację stosuje się w małych systemach, gdzie odzyskanie pojedynczego pliku nie będzie zbyt czasochłonne.
W dużych systemach stosuje się technikę rosnących kopii bezpieczeństwa. Kopie takie wykonuje się częściej niż pełną archiwizację.
Technika rosnących kopii bezpieczeństwa polega na zapisie tylko tych plików, które zmieniły się od czasu ostatniej archiwizacji.

 

 

51)  Programy i skrypty do archiwizacji i tworzenia kopii bezpieczeństwa

Podstawowymi narzędziami do wykonywania kopii bezpieczeństwa są tar i cpio.
Programy te potrafią obsłużyć każde medium zainstalowane w naszym systemie.

Pełną kopię bezpieczeństwa można utworzyć poleceniem :

tar -cf urządzenie_lub_plik /

find / * -print | cpio -o > plik_lib_urządzenie

Wykonanie kopii bezpieczeństwa plików zmodyfikowanych bieżącego dnia wygląda następująco :

find / -mtime -1 | cpio -o > plik_lub_urządzenie

Odzyskanie plików z archiwum wygląda następująco :

tar -xpf plik_archiwum_lub_urządzenie

cpio -im < plik_archiwum_lub_urządzenie

 

 

52)  Czym jest system plików ?

System plików to metody i struktury danych używane przez system operacyjny w celu zapisania i zorganizowania plików na danym urządzeniu.

System Linuks obsługuje wiele różnych systemów plików, ale podstawowym systemem jest ext2, ponieważ został on stworzony specjalnie dla Linuksa i jest bardzo wydajny.

Cechami charakterystycznymi dla tego systemu są : superblok, i-węzeł, blok danych, blok katalogu oraz blok pośredni . Superblok zawiera informacje o systemie jako całości, np. rozmiar. I-węzeł zawiera wszelkie informacje o pliku za wyjątkiem jego nazwy. Nazwa przechowywana jest w katalogu razem z numerem i-węzła. Wpis katalogu zawiera nazwę i liczbę i-węzłów plików. I-węzeł zawiera numery kilku bloków danych, które używane są do przechowywania pliku. Automatycznie allokowane miejsce pozwala przechowywać tylko kilka numerów, jednak w razie potrzeby zostaje dynamicznie allokowana dodatkowa przestrzeń. Bloki allokowane dynamicznie nazywają się bezpośrednimi - nazwa wskazuje, że w celu znalezienia numeru bloku danych należy znaleźć pierwszy blok pośredni.

 

 

53)  Montowanie i odmontowywanie systemu plików

Aby móc używać system plików należy go wcześniej zamontować.
Do montowania systemu plików służy polecenie mount o składni :

mount -t typ urządzenie punkt_montowania

gdzie :

typ - rodzaj systemu plików, np.: ext2, msdos
urządzenie- musi być urządzeniem blokowym
punkt_montowania - nazwa pliku pod którym będzie zainstalowany dany system

Aby zamontować dyskietkę wydajemy polecenie :

mount -t msdos /dev/fd0 /mnt/floppy

Do odmontowania systemu plików służy polecenie umount :

umount /mnt/floppy

 

 

54)  Konfiguracja systemu plików

Informacje o systemach plików, które mają lub mogą być zamontowane i o ich konfiguracji zawiera plik /etc/fstab .
Każdy system plików opisany jest przez osobne linie, a pola w każdej linii oddzielone są znakami spacji lub tabulatora.

Przykładowy plik fstab może wyglądać następująco :

/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults 1 2
/dev/hdb /mnt/cdrom iso9660 user,noauto,ro 0 0
/dev/fd1 /mnt/floppy msdos user,noauto 0 0
/dev/hda2 none swap sw

 

Pole pierwsze opisuje specjalne urządzenie blokowe lub zdalny system plików przeznaczony do zamontowania.

Pole drugie wskazuje na miejsce, w którym ma być dany system plików zamontowany.
Dla partycji wymiany pole to powinno zawierać wartość none.

Pole trzecie opisuje typ systemu plików.
Najczęściej używane systemy plików to :

ext2 - standardowy system plików dla Linuksa
msdos - system plików dla partycji MS-DOS
iso9660 - system plików używany przez stacje CD-ROM
nfs - system plików służący do montowania partycji z systemów zdalnych
swap - partycja dysku używana jako przestrzeń wymiany

Pole czwarte zawiera opcje montowania danego systemu plików. Opcje podaje się jako listę oddzieloną przecinkami. Najważniejsze opcje to :

auto - oznacza, że polecenie mount -a powinno zamontować dany system plików
noauto - zabrania montowania systemu, gdy wydano opcję : mount -a
user - opcja ta pozwala użytkownikowi na montowanie danego systemu plików
dev - pozwala na używanie plików urządzeń zapisanych w systemie plików
exec - zwykle wykorzystywany w systemach NFS. Opcja ta zezwala na uruchamianie plików zapisanych w danym systemie
noexec - przeciwieństwo opcji exec
ro - montuje system plików w trybie tylko do odczytu
rw - montuje system plików w trybie do odczytu i zapisu
sync - wszystkie operacje zapisu będą oczekiwać na potwierdzenie ich zakończenia przez sprzęt. Tryb ten jest wolniejszy, ale za to bezpieczniejszy
async - przeciwieństwo opcji sync
suid - pozwala na korzystanie z flag suid
nosuid - przeciwieństwo suid
defaults - włącza opcje rw,exec, auto, nouser, async, suid

Pole piąte jest używane przez program dump do wykrycia, który system plików musi być odłączony. Wartość 0 oznacza, że dany system nie musi być odłączony.

Pole szóste jest używane przez program e2fsck do określenia kolejności sprawdzania systemu plików podczas ładowania systemu.
Główny system plików powinien mieć wartość 1 zaś inne systemy plików wartość 2.
Wartość 0 oznacza, że dany system nie będzie sprawdzany.

 

 

55)  Narzędzia do sprawdzania i naprawy systemu plików

Podstawowym narzędziem dla administratora do sprawdzania i naprawy uszkodzonych systemów plików jest program e2fsck.
Program ten jest uruchamiany automatycznie przez system po nieprawidłowym jego zamknięciu.

Przed sprawdzeniem systemu plików programem e2fsck, należy system ten odmontować. Wyjątek stanowi tylko główny system plików, który przed sprawdzeniem należy przemontować w tryb : tylko do odczytu.

Sprawdzenie lub naprawa przykładowego systemu plików może wyglądać następująco :

odmontowanie systemu plików :
umount /dev/hda2

sprawdzenie :
e2fsck -y /dev/hda2

ponowne montowanie :
mount -t ext2 /dev/hda2/ /usr

Jeśli nie powiodła się próba naprawienia systemu plików, można skorzystać z opcji nakazującej korzystania z zapasowej kopii superbloku :
e2fsck -t ext2 -b 8193 /dev/hda2

8193 to numer bloku zawierającego pierwszą kopię zapasową superbloku.
Kopie superbloków są zapisywane co 8192 bloki, czyli druga kopia będzie miała numer 16385.

 

 

56)  Tworzenie nowego systemu plików

Do tworzenia nowych systemów plików możemy wykorzystać program mkfs o następującej składni :

mkfs [-t] [-c] urządzenie_blokowe

gdzie :

-t - określa typ tworzonego systemu plików, domyślnie ext2
-c - sprawdza uszkodzone bloki urządzenia przed utworzeniem systemu plików

Aby utworzyć system plików ext2 na dyskietce należy wydać następujące polecenie :

mkfs -t ext2 /dev/fd0

 

 

57)  Inne narzędzia i pliki związane z systemem plików

Ciekawym narzędziem dającym sporo informacji o systemie plików jest program dumpe2fs.
Większość informacji podawanych przez ten program pochodzi z superbloku.

Pożytecznym plikiem związanym z systemem plików jest plik etc/mtab.
Plik ten zawiera informacje o aktualnie zamontowanych systemach plików.

 

 

58)  Procesy

Każda uruchomiona aplikacja tworzy w systemie odrębny proces, który zarządza pamięcią, procesorem i zasobami wejścia i wyjścia, tak aby możliwe było wykonanie tej aplikacji.
System Linuks daje złudzenie równoczesnego wykonywania wielu zadań. W rzeczywistości jeden procesor może obsłużyć tylko jeden proces. Złudzenie takie jest osiągane dzięki podziałowi czasu, co oznacza, że system operacyjny przełącza wykonywanie poszczególnych procesów w określonych, bardzo krótkich odstępach czasu.

Do wyświetlania listy procesów pracujących w systemie służy polecenie ps.
Aby wyświetlić listę wszystkich bieżących procesów należy użyć parametru -A :

ps -A

Do wyświetlenia wszystkich procesów uruchomionych w systemie służą parametry -aux :

ps -aux

Na ekranie system w postaci kolumn wyświetli informacje o wszystkich procesach.

Objaśnienie poszczególnych kolumn jest następujące :

wartość

znaczenie

USER Identyfikator użytkownika będącego właścicielem procesu
PID Identyfikator procesu
%CPU Procentowe zużycie czasu procesora przez proces
%MEM Procentowe zużycie pamięci przez proces
VSZ Rzeczywisty rozmiar procesu, w kilobajtach
RSS Ilość fizycznej pamięci używanej przez proces
TTY Terminal związany z procesem
STAT Status procesu; oto niektóre z możliwych wartości:

R - działający (Runnable)
D - oczekujący na dostęp do dysku (Disk wait)
I - nieaktywny przez mniej niż 20 sekund
S - nieaktywny przez więcej niż 20 sekund
T - wstrzymany
Z - Zombie, czyli proces porzucony, który powinien zostać zamknięty przez inny proces
W - proces przeniesiony czasowo do pliku wymiany
N - wartość parametru Nice, oznaczającego priorytet procesu

START Czas uruchomienia procesu
TIME Zużyty czas procesora
COMMAND Polecenie (wraz z parametrami), które spowodowało uruchomienie procesu

 

Każdy proces w systemie Linuks może zostać zabity (zamknięty). Jako zwykły użytkownik możesz zabić tylko te procesy, które są twoja własnością. Wyjątkiem jest super-użytkownik, który może zabić dowolny proces.
Do zamykania procesów służy polecenie kill lub killall :

kill 123
zabije proces o numerze PID 123

killall -v mozilla
zabije procesy o nazwie mozilla

Do zabijania procesów pod X Window służy polecenie xkill , wydawane w oknie X-terminala.
Po wydaniu tego polecenia kursor myszy zmienia swój kształt i wówczas można przemieścić go nad okno programu, który chcemy zabić i nacisnąć lewy przycisk myszy.
Wykorzystując polecenie kill możemy do danego procesu wysłać jeden z możliwych sygnałów.
Polecenie kill 123 jest równoważne z poleceniem kill -s SIGKILL 123.

 

Możliwe sygnały to :

NAZWA

NUMER

AKCJA

KOMENTARZ

SIGHUP 1 A Wyłączenie terminala kontrolnego albo śmierć procesu kontrolującego
SIGINT 2 A Przerwanie z klawiatury (CTRL+C)
SIGQUIT 3 C Wyjście z klawiatury
SIGILL 4 C Niepoprawna instrukcja
SIGTRAP 5 C Pułapka śledzenia procesu
SIGABRT 6 C Sygnał zakończenia z funkcji abort
SIGBUS 7 C Błąd magistrali (zły dostęp do pamięci)
SIGFPE 8 C Błąd zmiennoprzecinkowy
SIGKILL 9 C Sygnał natychmiastowego zabicia procesu
SIGUSR1 10 AEF Sygnał użytkownika 1
SIGSEGV 11 A Niewłaściwe wskazanie do pamięci
SIGUSR2 12 C Sygnał użytkownika 2
SIGPIPE 13 A Zerwany potok
SIGALRM 14 A Sygnał alarmowy z funkcji alarm
SIGTERM 15 A Sygnał przerwania działania procesu
SIGSTKFLT 16 A Błąd stosu w koprocesorze
SIGCHLD 17 A Proces potomny zatrzymany lub wyłączony
SIGCONT 18 B Kontynuacja przy zatrzymaniu
SIGSTOP 19 DEF Zatrzymanie procesu
SIGTSTP 20 D Stop wpisany na terminalu
SIGTTIN 21 D Proces w tle potrzebuje wejścia z terminala
SIGTTOU 22 D Proces w tle wyprowadza dane na terminal
SIGURG 23 23 B Ważne zdarzenie w gnieździe

 

Domyślna akcja to:

A  Zakończenie procesu
B  Ignorowanie sygnału
C  Zakończenie procesu i zrzucenie rdzenia
D  Przerwanie procesu
F  Sygnał nie może być złapany
F  Sygnał nie może być ignorowany

Niektóre działania związane z procesami możemy wywołać korzystając ze skrótów klawiszowych.
I tak na przykład zatrzymanie bieżącego procesu możemy dokonać kombinacją klawiszy : [Ctrl]+[z], natomiast przerwanie bieżącego procesu kombinacją :[Ctrl]+[c].

Zabicie procesu taką kombinacją klawiszy spowoduje nieuchronne zakończenie działania programu i utratę wszelkich nie zapisanych danych związanych z tym programem.

Częstym objawem zawieszenia programu lub zabicia jego procesu jest utworzenie pliku core w bieżącym katalogu. Pliki core to obrazy pamięci tworzone z myślą o debagerach.
Pliki core mają czasami duże rozmiary, dlatego jeśli nie zajmujemy się ich analizą, dobrym rozwiązaniem jest usunięcie ich z systemu i zablokowanie możliwości ich tworzenia poleceniem :

ulimit -c 0

Jeśli jednak chciałbyś dowiedzieć się z jakiego powodu dany program padł, skorzystaj z polecenia :

gdb -c core

które uruchomi debugger analizujący pliki core .

 

 

59)  Zdobywanie źródła nowego jądra systemu

Jądro (kernel) w systemie Linuks pełni rolę pośrednika między uruchamianymi programami, a sprzętem komputerowym. Głównym zadaniem jądra jest zarządzanie pamięcią, partycją wymiany i procesorem tak, aby wszystkie uruchomione procesy dostały równą ilość czasu procesora.
Istnieją dwa rodzaje wersji jądra : stabilna i rozwojowa.

Wersja stabilna nie zawiera większych błędów i przeznaczona jest dla systemów, w których ważną rolę odgrywa stabilność i bezpieczeństwo.

Wersja rozwojowa zawiera zazwyczaj nowe rozwiązania będące w fazie testów i przeznaczona jest dla ludzi zajmujących się rozwojem kernela.

Wersje stabilną od wersji rozwojowej można poznać po jej numerze.
Wersje stabilne mają środkową liczbę parzystą : 2.4.14 , a wersje rozwojowe nieparzystą : 2.5.69 .

Najlepszym miejsce do ściągnięcia najnowszego jądra jest serwer :

ftp://ftp.kernel.org:/pub/linux/kernel

Na serwerze tym można znaleźć starsze, jak i te najnowsze jądra systemu, zarówno te stabilne, jak i rozwojowe. Na serwerze znajdują się również path-e do kerneli.

Nowe jądro należy przekopiować do katalogu /usr/src i tam rozpakować.
W katalogu tym zostanie utworzony nowy katalog zawierający jądro systemu.

 

 

60)  Konfiguracja jądra

Istnieją trzy polecenia służące do konfigurowania jądra systemu :

make config - konfiguracja odbywa się w trybie tekstowym i polega na odpowiadaniu na zadawane pytania
make menuconfig - konfiguracja przebiega w oparciu o graficzne menu, a cały proces konfiguracji opiera się na używaniu klawiszy : [enter] i [spacja] , prosty w obsłudze
make xconfig - konfigurator pracuje w systemie X Window, posiada przyjazny interfejs, a wszelkie wybory dokonuje się myszą

Polecenia te należy wydać w katalogu z nowym jądrem systemu .

Należy wspomnieć, że podczas konfiguracji sterowniki mogą być wkompilowane w jądro '*' , skompilowane jako moduł 'M' lub nie kompilowane wcale - okienko puste.

Najważniejsze opcje konfiguracyjne jądra wraz z przykładową konfiguracją to :

1. Code maturity level options
[ * ] Prompt for development and/or incomplete code/drivers
Opcja ta umożliwia nam korzystanie z nowych, będących w trakcie testów sterowników

2. Processor type and features
(PPro/6x86MX) Processor family
W tej opcji wybieramy typ posiadanego procesora
(1GB/2GB) Maximum Physical Memory
Podajemy największy rozmiar pamięci fizycznej
[ ] Math emulation
Włącza emulację koprocesora matematycznego
[ * ] MTRR (Memory type range register)
Należy włączyć tą opcję przy procesorach Pentium Pro i wzwyż
[ ] Symetric multi-processing support
Opcja ta przeznaczona jest dla komputerów wieloprocesorowych

3. Loadable module support
[ * ] Enable module support
Opcja pozwalająca na kompilowanie fragmentów kodu kernela jako modułów, które mogą być ładowane w razie potrzeby
[ ] Set version information on all symbols for modules
Umożliwia korzystanie z modułów skompilowanych przy instalacji poprzedniego jądra
[ * ] Kernel module loader
Opcja to umożliwia automatyczne ładowanie modułów

4. General setup
[ * ] Networking support
Obsługa sieci. Należy zaznaczyć tą opcję nawet jeśli nie będziemy podłączeni do sieci
[ * ] PCI Support
Jest to wsparcie dla urządzeń pracujących na magistrali PCI
[ * ] PCI quirks
Zaznaczenie tej opcji powoduje automatyczne ustawienie szyny PCI z pominięciem BIOS-u (BIOS/Direct/Any) PCI access mode
Sposób dostępu do szyny PCI - z użyciem BIOS-u, lub bezpośredni
[ * ] System V IPC
Opcja ta włącza komunikację międzyprocesorową. Przydatne przy uruchamianiu wszelakich emulatorów systemów.
[ * ] Sysctl support
Pozwala na dynamiczne zmienianie parametrów jądra
[ M ] Kernel support for a.out binaries
[ * ] Kernel support for ELF binaries
[ M ] Kernel support for MISC binaries

Wsparcie dla podstawowych formatów plików wykonywalnych
[ * ] Parallel port support
Wsparcie dla urządzeń podłączonych do portu równoległego
[ * ] PC-style hardware
Opcja dla posiadaczy portu równoległego PC-style
[ * ] Advanced Power Management BIOS support
Zaawansowane oszczędzanie energii oparte na BIOS-się komputera

5. Plug and Play support
[ * ] Plug and Play support
Opcja ta daje wsparcie dla urządzeń typu p-n-p
<*> Auto-probe for parallel device
Automatyczne rozpoznawanie urządzeń podłączonych do portu równoległego

6. Block devices
[ M ] Normal PC floppy disk support
Opcja potrzebna w przypadku korzystania ze stacji dyskietek
[ * ] Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Wsparcie dla standardu IDE/MFM/RLL
[ * ] Include IDE/ATA-2 DISK support
[ * ] Include IDE/ATAPI CDROM support

Opcje te włączają wydatniejszą obsługę dysków i cd-romów
[ * ] CMD640 chipset bugfix/support
[ * ] CMD640 enchanced support
[ * ] RZ1000 chipset bugfix/support

Włączenie tych opcji powoduje poprawienie błędów w układach scalonych
[ * ] Generic PCI IDE chipset support
Wsparcie dla PCI systemu z obsługą dysków IDE
[ * ] Generic PCI bus-master DMA support
Wsparcie dla dysków z obsługą DMA
[ * ] Use DMA by default when available
Wsparcie dla urządzeń korzystających z DMA
[] Other IDE chipset support
Wsparcie dla niestandardowych urządzeń IDE
[ ] Loopback Device Support
Sterownik umożliwiający zamontować plik, który jest obrazem dysku
[ ] Multiple devices driver support
Sterownik pozwalający zamontować wiele partycji fizycznych w jedną logiczną
[ ] RAM disk dupport
Umożliwia stworzenie dysk wirtualny w pamięci RAM

7. Networking options
[ M ] Packet socket
Opcja dołączająca protokół wykorzystywany prze aplikacje do komunikacji w sieci
[ *] Kernel/User netlink socket
[ *] Network firewalls

Opcje umożliwiające stworzenie firewalla do ochrony naszej sieci
[ * ] TCP/IP Networking
Obsługi protokołu TCP/IP mającego zastosowanie zarówno w internecie jak i w lokalnych sieciach
[ ] The IPX protocol
Opcja do obsługi protokołu sieciowego IPX w Novellu
<> Appletalk DDP
Służy do konwersacji z komputerami Apple

8. SCSI support
[ ] SCSI support
Opcja do obsługi urządzeń SCSI
[ ] SCSI disk support
[ ] SCSI tape support
[ ] SCSI CD-ROM support
[ ] SCSI generic support

Wsparcie dla poszczególnych urządzeń SCSI
SCSI low-level drivers ŕ
Tutaj wybieramy typ naszego kontrolera SCSI

9. Network device support
[ * ] Network device support
Zaznaczamy tą opcję, jeżeli chcemy używać sieci
[ M ] Dummy net driver support
Zaznaczamy przy używaniu protokołów PPP lub SLIP
<> EQL (serial line load balancing) support
Jeśli chcemy używać jednocześnie dwóch połączeń do tego samego komputera (wymaga 2 modemów i 2 linii telefonicznych)
Ethernet (10 or 100Mbit)
Opcja potrzebna do utworzenia lokalnej sieci z użyciem kart sieciowych.Należy wybrać model karty
[] FDDI driver support
Wsparcie dla kart FDDI
[ M ] PLIP (paraller port) support
Potrzebne do połączenia dwóch komputerów za pomocą portu równoległego
[ M ] PPP (point-to-point) support
Potrzebne w przypadku korzystania z internetu poprzez modem
<> SLIP (serial line) support
starszy brat PPP wykorzystywany do łączenia się z internetem, poprzez linię telefoniczną
<> CSLIP compressed headers
SLIP z włączoną kompresją nagłówków TCP/IP
[] Keepalive and linefill
dodatkowe możliwości dla SLIP przy łaczach słabej jakości

10. IrDA subsystem support
Obsługa urządzeń na podczerwień

11. ISDN subsystem
Obsługa urządzeń ISDN

12. Old CD-ROM drivers (not SCSI, not IDE)
Obsługa CD-ROMów starego typu

13. Character devices
[ * ] Virtual terminal
Opcja pozwala na uruchamianie kilku wirtualnych terminali i przełączanie się między nimi za pomocą klawiszy ALT+Fx.
[ * ] Support for console on virtual terminal
Dzięki tej opcji można ustawić wirtualny terminal na konsoli
[ M ] Standard/generic (dumb) serial support
Obsługa urządzeń podłączonych do portu szeregowego
[] Support for console on serial port
Dzięki tej opcji można ustawić konsolę na porcie szeregowym, czyli komunikaty od jądra będą wysyłane na ten port, użyteczne w przypadku podłączania terminali lub profesjonalnych drukarek
[] Extended dumb serial driver options
Opcja wymagana jeśli chcemy używać HUB6 bądź więcej niż 4 porty szeregowe oraz dzielić linię szeregową
[] Non-standard serial port support
Pozwala na ustawienie niestandardowych portów, wykorzystywana w systemach gdzie konieczna jest praca wielu portów np. serwer z podłączonymi terminalami
[ * ] Unix98 PTY support
Wsparcie dla pseudo-terminali, które pozwalają na pracę takich urządzeń jak : telnet, xterm
(256) Maximum number of Unix98 PTY in use (0-2048)
Maksymalna liczba pseudo-terminali dla przeciętnych komputerów liczba 256 jest wystarczająca
[ * ] Parallel printer support
Zaznaczamy jeżeli mamy podłączoną drukarkę do portu równoległego.
[ * ] Mouse Support (not serial mice) Mice
Obsługa myszki podłączonej do portu PS/2. Przy zwykłych myszkach nie zaznaczamy.
[ * ] Enhanced Real Time Clock Support
Włączenie dostępu do zegara czasu rzeczywistego.
Video For Linux ->
Potrzebne jeżeli posiadamy kartę TV lub radiową. Należy wybrać model karty
Joystick support ->
Obsługi joysticka. Należy wybrać model urządzenia

14. Filesystem
[* ] Quota support
Włączenie tej opcji pozwoli na ustawienie limitów dyskowych dla użytkowników
[ ] Kernel automonter support
Włączenie tej opcji pozwoli nam na zamontowanie odległego systemu plikowego
[ * ] DOS FAT fs support
Pozwala na korzystanie z partycji dosowych
[ * ] MSDOS fs support
Dostęp do partycji MSDOS
[ ] UMSDOS: Unix-like filesystem on top of standard MSDOS filesystem
Pozwala na uruchomienie Linuksa bezpośrednio z partycji DOS
[ * ] VFAT (Windows-95) fs support
Dostęp do partycji FAT z długimi nazwami plików
[ * ] ISO 9660 CDROM filesystem support
Zaznaczamy jeżeli chcemy korzystać z CD-ROMu
[ * ] Microsoft Joliet CDROM extisions
Rozszerzenie standardu ISO 9660, pozwalające na korzystanie z długich nazw w formacie unicode
[ ] NTFS filesystem support (read-only)
Opcja pozwala na odczyt z partycji Windows NT
[ * ] /proc filesystem support
Utworzenie wirtualnego systemu plików w katalogu /proc, do którego jądro zapisuje informacje o działalności systemu
[ * ] /dev/pts filesystem for UNIX98 PTYs
Zaznaczamy tę opcję jeśli zaznaczyliśmy UNIX98 PTY support
[ * ] Second extended fs support
Obsługa standardowego systemu plików Linuksa ext-2
Network File System ->
Menu z opcjami do obsługi sieciowych systemów plikowych.
Native Language Support ->
Menu do ustawienia obsługi języka i kodowania znaków

15. Console drivers
[ * ] VGA text console
Umożliwia korzystanie z Linuksa w trybie tekstowym
[ ] Video mode selection support
Opcję zaznaczamy gdy posiadamy kartę, która pozwala na ustawienie niestandardowych rozdzielczości ekranu

16. Sound
[ M ] Sound card support
Zaznaczamy jeżeli mamy kartę dźwiękową
Additional low level sound drivers ->
W poszczególnych opcjach ustawiamy rodzaj karty i jej konfigurację

17. Kernel hacking
[ ] Magic SysRq key
Opcja dla ludzi zajmujących się rozwojem i testowaniem jądra.
Daje więcej kontroli nad systemem podczas jego zawieszenia lub debuggowania

Po skonfigurowaniu jądra systemu należy zapisać naszą konfigurację, co spowoduje utworzenie pliku .config z odpowiednimi opcjami.

 

 

61)  Kompilacja i instalacja nowego jądra

Kompilacja nowego jądra ogranicza się do wydania trzech poleceń :

make dep - sprawdza pewne zależności
make clean - usuwa niepotrzebne pliki ze źródeł
make bzImage lub make bzlilo lub make zImage lub make zlilo

bzImage - kompiluje nasze jądro tworząc jego skompresowany obraz. Skompresowane jądro odkompresowuje się automatycznie w czasie wykonywania
bzlilo - kompiluje i instaluje nasze jądro automatycznie
zImage - zwykła kompilacja jądra (już raczej nie stosowana)
zlilo - kompiluje i instaluje nasze jądro automatycznie

Skompilowane jądro możemy znaleźć w katalogu :
/usr/src/linux/arch/i386/boot/zImage
lub
/usr/src/linux/arch/i386/boot/bzImage

Następnym krokiem jest kompilacja i instalacja modułów, którą wykonujemy poleceniami :

make modules
make modules_install

Skompilowane moduły zostaną skopiowane do katalogu :
/lib/modules/numer_wersji

Jeśli kompilowane jądro posiada numer wersji identyczny z numerem jądra skompilowanego już wcześniej, należy przed instalacją modułów usunąć z tego katalogu całą jego zawartość.

Instalacja nowego jądra polega na skopiowaniu obrazu jądra do odpowiedniego katalogu i skonfigurowaniu programu ładującego system.

Obraz naszego jądra kopiujemy z katalogu :

/usr/src/linux/arch/i386/boot/bzImage lub /usr/src/linux/arch/i386/boot/zImage

do katalogu :

/boot/wersja_jądra/

i zmieniamy nazwę na :

vmlinuz.numer_nowej_wersji

Następnym krokiem, który musimy wykonać jest skopiowanie pliku wskazującego na jądro :

/usr/src/linux/System.map

do katalogu z obrazem naszego jądra :

/boot/wersja_jądra/

W przypadku takich samych numerów jądra, stare jądro nie powinno zostać nadpisane, gdyż nowe jądro nie zawsze może działać tak, jak tego sobie życzymy.

Domyślnym programem ładującym system jest program LILO.
Plikiem konfiguracyjnym tego programu jest plik : /etc/lilo.conf , a przykładowa konfiguracja umożliwiająca wybór jednego z dwóch jąder może wyglądać następująco :

boot=/dev/hda
map=/boot/map
vga=normal
default=windows
keytable=/boot/pl.klt
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
ignore-table

image=/boot/2.4.19/vmlinuz
    label=linux-2.4.19
    root=/dev/hda1
    initrd=/boot/2.4.19/initrd.img
    append="devfs=mount hdc=ide-scsi"
    read-only

image=/boot/2.5.69/vmlinuz
    label=linux-2.5.69
    root=/dev/hda1
    append="devfs=mount hdc=ide-scsi"
    read-only

other=/dev/fd0
    label=floppy
    unsafe

 stniej możliwość automatycznego skompilowania i zainstalowania nowego jądra systemu poprzez polecenie :

make bzlilo
lub
make zlilo

Najwygodniejszym sposobem kompilacji i instalacji nowego jądra jest wydanie komendy :

make dep clean bzlilo modules modules_install

polecenie to spowoduje wykonanie następujących czynności :

- wygenerowanie plików zależności
- usunięcie zbędnych plików
- utworzenie skompilowanej wersji jądra
- zmianę nazwy pliku /vmlinuz na /vmlinuz.old i skopiowanie nowego jądra do pliku /vmlinuz
- uruchomienie programu lilo i instalacja nowego obrazu jądra
- kompilację wszystkich modułów i instalację ich w odpowiednim katalogu

 

 

62)  Moduły jądra

Moduły jądra doskonale odchudzają naszą pamięć dzięki temu, że mogą one być załadowane tylko w razie potrzeby i usunięte, gdy nie są już potrzebne.

Na przykład :
jeśli obsługę interfejsu PPP mamy skompilowaną, jako ładowalny moduł jądra systemu, to tylko podczas zestawiania połączenia internetowego ładowane są do pamięci wszystkie potrzebne sterowniki. Po zamknięciu połączenia jądro usuwa z pamięci dany moduł.

Dzięki modułom możemy także dodać obsługę nowego sprzętu bez rekompilacji całego jądra.

Wszystkie moduły, które możemy w każdej chwili wykorzystać znajdują się w katalogu :
/lib/modules/

Modułami możemy swobodnie operować za pomocą następujących poleceń :

lsmod - wyświetla listę załadowanych modułów
insmod - ładuje moduły do uruchomionego jądra
rmmod - usuwa załadowany moduł
depmod - sprawdza wszystkie zależności pomiędzy modułami
modprobe - ładuje wszystkie moduły, od których zależny jest dany moduł

 

 

63)  Konfiguracja sieci

W systemie Linuks sieć jest w podstawowym zakresie konfigurowana już podczas instalacji. Wszystkie dane konfiguracyjne są przechowywane w katalogu /etc/ i jego podkatalogach.
Dużą dogodnością jest fakt, że Linuks, podobnie jak inne systemy Unixowe może być konfigurowany w czasie pracy, bez konieczności restartowania systemu, co znacznie upraszcza eksperymentowanie i poprawianie problemów konfiguracyjnych.

Najważniejsze pliki konfiguracyjne odpowiadające za działanie sieci to :

  • /etc/sysconfig/network
  • /etc/HOSTNAME
  • /etc/hosts
  • /etc/services
  • /etc/host.conf
  • /etc/resolv.conf

 

/etc/sysconfig/network

Plik network zawiera podstawowe informacje o konfiguracji sieci, takie jak :

NETWORKING     
HOSTNAME           
DOMAINNAME     
GATEWAY         
GATEWAYDEV    
<YES> jeśli nasz host pracuje w sieci lub <NO> jeśli nie
<nazwa hosta>
<nazwa domeny>
<adres bramy sieciowej>
<nazwa urządzenia, które obsługuje bramę sieciową>

 

/etc/HOSTNAME/

Plik ten powinien zawierać tylko jeden wpis, określający główną nazwę naszego hosta .

 

/etc/hosts

Plik hosts zawiera odwzorowania adresów IP na nazwy komputerów, jak również aliasy tych nazw.
W praktyce plik ten wykorzystywany jest tylko wtedy, gdy nasza sieć nie posiada własnego serwera nazw (DNS).

Każdy wiersz tego pliku powinien składać się z następujących rekordów :

IP nazwa_hosta
np.:
192.168.1.12 stacja1

 

/etc/services

Plik services zawiera odwzorowania nazw usług sieciowych na numery portów wykorzystywanych przez komputer do obsługi danej usługi. Plik ten składa się z wierszy, z których każdy jest jednym rekordem informacji.

Każdy rekord składa się z trzech pól :

nazwa port/protokół aliasy # komentarz
np.:
www     80/tcp      http    # WWW

gdzie :

nazwa - oznacza słowo reprezentujące opisywaną usługę
port - jest numerem określający numer portu, pod którym będzie dostępna dana usługa
protokół - nazwa protokołu TCP lub UDP
aliasy - określają inne nazwy, pod którymi będzie dostępna usługa

 

/etc/host.conf

Plik host.conf zawiera dane o kolejności, w jakiej system powinien odpytywać różne systemy tłumaczeń nazw (DNS, NIS) przy rozwiązywaniu nazwy sieciowej.

Plik ten może składać się z następujących dyrektyw :

order - określa kolejność przepytywania systemów tłumaczeń nazw i może składać się z następujących opcji :
                bind (DNS), hosts ( /etc/hosts), nis (NIS)
multi - określa, czy zapytanie kierowane do systemu rozwiązywania nazw zwraca tylko jeden wynik - off, czy może zwrócić ich kilka - on

 

/etc/resolv.conf

Plik resolv.conf jest plikiem konfiguracyjnym klienta DNS. Określa on kolejność przeszukiwania domen i zawiera adresy serwerów nazw.

Najczęściej przy konfiguracji tego pliku stosuje się trzy słowa kluczowe :

nameserver - określa adres serwera DNS
domain - określa nazwę domeny, do której należy komputer
search - określa kolejność przeszukiwania domen

 

 

64)  Konfiguracja interfejsów sieciowych

Aby komputery mogły porozumiewać się poprzez sieć muszą mieć skonfigurowane interfejsy sieciowe. Konfiguracja interfejsu polega na przypisaniu karcie sieciowej (interfejsowi) odpowiedniego adresu IP, włącznie z adresem i maską sieci, w której ta karta będzie pracować.

W systemie Linuks wszystkie interfejsy sieciowe mają nazwy składające się z jednego z członów:

eth - Ethernet
tr - Token Ring
ppp - Point-to-Point Protocol

i są numerowane przez jądro systemu w kolejności ich konfigurowania, zaczynając od zera.

Do konfiguracji interfejsów sieciowych możemy użyć plecenia ifconfig o składni :

ifconfig interfejs adres_ip netmask <maska sieci> broadcast <adres_rozgłoszeniowy>

ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255

Interfejs może zostać czasowo wyłączony i ponownie uaktywniony bez konieczności ponownej konfiguracji.
Do wyłączenia i włączenia interfejsów służą polecenia :

ifconfig interfejs down - wyłącznie interfejsu
ifconfig interfejs up - uruchomienie interfejsu

 

 

65)  Instalacja serwera WWW (APACHE)

Serwer Apache możemy zainstalować na dwa sposoby :

  • poprzez pakiet RPM
  • kompilując źródło z kodem serwera (metoda dla bardziej zaawansowanych użytkowników)

 

Instalacja z RPM

Pakiet RPM z serwerem można znaleźć na jednej z płyt CD, z których instalowany był system.
Instalację można przeprowadzić programem rpm :

rpm -ivh apache.rpm

Pliki z pakietu RPM są instalowane w następujących katalogach :

/etc/httpd/conf - katalog ten zawiera wszystkie pliki konfiguracyjne
/etc/rc.d - RPM instaluje tutaj wszystkie potrzebne skrypty do automatycznego lub ręcznego uruchamiania serwera
/home/httpd - w tym katalogu instalowane są wszystkie ikony, skrypty CGI i pliki HTML używane przez serwer
/usr/bin - tu znajdują się pliki wykonywalne serwera wraz z wieloma narzędziami służącymi do obsługi serwera
/var/log/http - w tym katalogu znajdują się pliki z dziennikami zdarzeń

 

Kompilacja źródeł

W pierwszej kolejności należy uruchomić skrypt ./configure wraz z opcją --prefix, dzięki której można przekazywać do skryptu różne parametry, np. położenie wraz z nazwą katalogu, w którym zostanie zainstalowany Apache :

./configure -prefix=/katalog/instalacyjny

Uruchomienie tego skryptu spowoduje powstanie w katalogu /src/ plików Configuration i Makefile.
Teraz wydajemy polecenia make, makeinstall i nasze pliki serwera zostaną skompilowane i zainstalowane.

 

 

66)  Uruchamianie i zatrzymywanie serwera APACHE

Proces uruchamiania serwera httpd może być wykonywany ręcznie lub automatycznie. Uruchamianie Apacha z linii poleceń pozwala na zmianę domyślnie ustawionych parametrów, takich jak położenie plików konfiguracyjnych.

Składnia polecenia httpd jest następująca :

httpd [-d katalog] [-f pliki] [-C dyrektywa] [-v] [-V] [-h] [-l] [-L] [-S] [-t]

gdzie :

-d - określa położenie katalogu ServerRoot (położenie głównego katalogu z zainstalowanym serwerem)
-f - określa położenie głównego pliku konfiguracyjnego, httpd.conf . Serwer podczas uruchamiania czyta i wykonuje dyrektywy, znajdujące się właśnie w tym pliku
-v - parametr ten powoduje wyświetlenie wersji Apache, nie uruchamiając serwera
-V - parametr ten powoduje wyświetlenie wszystkich ustawień obowiązujących w chwili kompilacji serwera
-h - wyświetla informacje o sposobie użycia polecenia httpd
-l - wyświetla listę modułów włączonych do kodu serwera w trakcie kompilacji
-L - wyświetla listę dyrektyw konfiguracyjnych wraz z informacją, z którego modułu pochodzi dana dyrektywa
-s - opcja ta powoduje wyświetlenie ustawień serwerów wirtualnych pobranych z pliku konfiguracyjnego
-t - opcja ta powoduje przeanalizowanie wszystkich plików konfiguracyjnych serwera bez uruchamiania Apacha

Jeśli chcemy, aby nasz serwer uruchamiał się automatycznie podczas startu systemu należy umieścić specjalny skrypt httpd w katalogu /etc/rc.d/init.d/ .

Dzięki opcjom tego skryptu można kontrolować działanie serwera :

start - system używa tej opcji do uruchomienia usługi podczas start systemu.Opcja ta jest również dostępna dla użytkownika ROOT
stop - opcja ta jest wykorzystywana do bezpiecznego zamknięcia usługi - powinno się jej używać zamiast polecenia kill
reload - opcja ta powoduje ponowne odczytanie pliku konfiguracyjnego bez zamknięcia serwera
restart - rezultat wywołania skryptu z tą opcją jest taki, jak uruchomienie skryptu z opcją stop a następnie z opcją start
status - rezultatem wywołania tej opcji jest wyświetlenie identyfikatora PID serwera i wszystkich jego procesów potomnych

 

 

67)  Konfiguracja serwera APACHE

Konfiguracja pracy serwera polega na uaktywnianiu pewnych dyrektyw, które w zasadzie są poleceniami ustawiającymi konkretną opcję.

Dyrektywy konfiguracyjne mają zazwyczaj taką samą składnię :

dyrektywa opcja opcja ...

W jednej linii można umieścić tylko jedną dyrektywę.
Dzięki dyrektywom można określać złożone opcje lub ustawić tylko konkretną wartość.

Niektóre dyrektywy zwane sekcjami mają budowę typu :

<dyrektywa opcja>
  dyrektywa opcja opcja
  dyrektywa opcja opcja
</dyrektywa>

Głównym i najważniejszym plikiem konfiguracyjnym serwera jest plik httpd.conf.
W pliku tym możemy umieścić wszystkie dyrektywy potrzebne do prawidłowego działania serwera.

Najważniejsze dyrektywy konfiguracyjne to :

 

ResourceConfig /dev/null
AccessConfig /dev/null

W pierwszych wersjach serwera dyrektywy konfiguracyjne były umieszczane dodatkowo w dwóch plikach : srm.conf i acces.conf . Dyrektywy te nakazują serwerowi zignorowanie tych plików, gdyż cała konfiguracja serwera zawarta jest w jednym pliku : httpd.conf .

 

ServerType

Dzięki tej dyrektywie można ustawić dwa typy pracy naszego serwera : standalone, inetd .
Ustawienie typu serwera na standalone spowoduje, że nasz serwer będzie utrzymywany przez system przez cały czas w gotowości do obsłużenia każdej prośby.
Opcja inetd spowoduje, że w reakcji na pojawiającą się prośbę zostanie uruchomiony oddzielny serwer i po jej obsłużeniu zostanie wyłączony.

 

ServerRoot

Dyrektywa ta określa najwyższy katalog drzewa katalogów, względem którego określane będą lokalizacje plików konfiguracyjnych i dzienników.

 

Port

Wskazujemy port, na którym nasz serwer będzie prowadził nasłuchiwania.
Domyślnie przyjmowanym portem jest port 80.

 

Listen

Możemy dokonać powiązania z określonym portem (lub adresem IP), na którym serwer będzie prowadził nasłuchiwanie.

 

User
Group

Dyrektywa ta wskazuje na użytkownika i grupę, których własnością będzie proces httpd .
Przed ustawieniem tych opcji należy upewnić się, że podany użytkownik i grupa posiadają wpisy w plikach passwd i group.
Należy być świadomym tego, że nasz serwer będzie pracował z prawami podanego użytkownika i grupy co oznacza, że w przypadku włamania do systemu poprzez serwer lub jeden z programów CGI włamywacze dostaną właśnie te prawa.

 

ServerAdmin

Opcja ta powinna wskazywać na adres internetowy administratora serwera.

 

ServerName

Opcją tą ustalamy nazwę serwera zwracaną klientowi, jeśli rożni się ona od nazwy podanej w zadaniu . Nazwa ta musi być zgodna z nazwą podaną na serwerze DNS.

 

StartServers

Dyrektywą tą określamy liczbę serwerów uruchamianych podczas startu Apache.

 

MaxClients

Jest to maksymalna liczba klientów, którzy mogą być obsłużeni w tym samym czasie.
Jeśli limit ten zostanie przekroczony, to obsługa nadmiarowych klientów będzie wstrzymana, co umożliwia ochronę systemu przed załamaniem w wyniku przeciążenia serwera.

 

MinSpareServers
MaxSpareServers

Dyrektywy te regulują liczbę zapasowych procesów potomnych serwera - aby serwer mógł dynamicznie dostosować się do obciążenia.
Oznacza to, że serwer utrzymuje potrzebną liczbę procesów do obsłużenia połączeń i kilka dodatkowych do obsługi gwałtownego wzrostu obciążenia.
Osiąga się to przez okresowe sprawdzanie liczby serwerów, oczekujących na wywołanie, i jeśli liczba ta jest mniejsza niż MinSpareServers, to dodaje zapasowe, a jeśli wolnych serwerów jest więcej niż MaxSpareServers, to część z nich jest likwidowana.

 

Timeout

Opcją tą określamy limit czasu przeznaczony na obsługę pojedyńczego żądania.

 

KeepAlive

Dyrektywą tą możemy zezwolić na obsługę wielu zadań w ramach jednego połączenia.

 

MaxKeepAliveRequests

Określamy maksymalną liczbę zadań w ramach jednego połączenia.

 

KeepAliveTimeout

Określamy czas oczekiwania na kolejne zadanie w ramach tego samego połączenia.

 

MaxRequestsPerChild

Dyrektywą tą możemy określić maksymalna liczbę żądań obsługiwanych w cyklu życia procesu potomnego.

 

UseCanonicalName

Włączenie tej opcji nakazuje serwerowi, by w przypadku odwołań wskazujących na siebie tworzył adres URL na podstawie wartości z ServerName i Port.
Jeśli opcja ta jest wyłączona, adresy URL tworzone są na podstawie nazwy hosta i numeru portu pobranego z żądania.

 

DocumentRoot

Dyrektywa ta powinna zawierać ścieżkę do katalogu zawierającego katalog główny serwisu WWW, skąd będą pobierane dokumenty do wysłania klientowi.
Zawartość tego katalogu używana jest domyślnie do obsługi wszelkich zadań.

 

UserDir

Dyrektywa ta określa podkatalog katalogu macierzystego użytkownika w przypadku odwołania do adresu zawierającego ciąg ~użytkownik, w którym może on umieszczać publiczne dokumenty HTML .

 

DirectoryIndex

W dyrektywie tej znajdują się nazwa pliku lub plików zawierających indeks katalogu, czyli pliki, które zostaną wysłane użytkownikowi w odpowiedzi na żądanie dostępu do adresu.

 

IndexIgnore

Umożliwia określenie nazwy plików, które będą ignorowane podczas indeksowania katalogu.

 

FancyIndexing

Dyrektywa ta umożliwia włączenie dodatkowych opcji indeksowania katalogów.

 

AddIconByType
AddIcon

Opcją tą informujemy serwer, które ikony będą reprezentowały pliki o określonych typach lub rozszerzeniach.
Ikony wyświetlane są gdy włączymy - FancyIndexind.

 

DefaultIcon

Opcja ta określa domyślną ikonę dla plików, którym nie przypisano jej jawnie poprzez ustawieni opcji w AddIconByType i AddIcon.

 

LoadModule
AddModule

Aby móc używać modułów skompilowanych jako DSO, należy je załadować, a następnie dodać do serwera. Kolejność ładowania modułów jest istotna.

Najważniejsze moduły to :

core - zawiera podstawowe funkcje zawsze dostępne w dystrybucji (kontrolują również inne moduły)

mod_access - kontrola dostępu do plików w zależności od adresu IP lub nazwy komputera klienta. Użycie tego modułu pozwala na dokładną kontrolę użytkowników np.:administrator może zezwolić na wykonywanie skryptów CGI tylko pracownikom firmy

mod_actions - odpowiada za wykonywanie skryptów CGI w zależności od typu danych lub sposobu pobrania

mod_alias - pozwala mapować (udostępniać) część systemu plików w katalogu głównym Apache-a, umożliwia też przekierowywanie adresów URL. Część plików może znajdować się poza katalogiem lub nawet na innym komputerze w sieci

mod_asis - deklaracja plików, które mogą być wysyłane bez nagłówków HTTP (pliki *.asis)

mod_auth - moduł odpowiedzialny za uwierzytelnianie użytkowników na podstawie zdefiniowanych plików tekstowych

mod_auth_anon - pozwala anonimowym użytkownikom na dostęp do danych, podlegających weryfikacji dostępu

mod_auth_db - uwierzytelnianie za pomocą plików DB

mod_auth_dbm - uwierzytelnianie za pomocą plików DBM

mod_autoindex - automatyczne tworzenie indeksów dla katalogów, które nie mają
standardowych plików index.*htm*

mod_cern_meta - emulacja plików CERN HTTPD pozwala dodawać dodatkowe nagłówki do wszystkich plików

mod_cgi - prawdopodobnie najpopularniejszy moduł. Pozwala wykonywać skrypty CGI po stronie serwera i zwracać wyniki klientowi

mod_digest - uwierzytelnianie za pomocą algorytmu MD5

mod_dir - podstawowe operacje na katalogach. Zwykle używany do uzupełniania adresu np.: http://serwer.pl/plik zostanie zastąpiony poprawnym wywołaniem http://serwer.pl/plik/

mod_env - moduł odpowiedzialny za przekazywanie zmiennych środowiskowych do skryptów CGI/SSI

mod_example - demonstracja możliwości interfejsu programowego - Apache API

mod_expires - dodaje znacznik Expires (strona wygasa, traci ważność) do stron WWW przesyłanych klientowi - ważne dla często zmienianych serwisów, które powinny być zawsze aktualne

mod_headers - pozwala na dowolną modyfikację nagłówków HTTP

mod_imap - wsparcie dla map plików graficznych (.map) używane po stronie serwera WWW

mod_include - pozwala włączyć zawartość plików lub wyniki działania skryptu do zwykłych plików HTML i zwracać ich zawartość klientowi

mod_info - odpowiedzialny za informację o ustawieniach serwera Apache

mod_log_agent - zapisywanie w logach nazw i wersji przeglądarek internetowych klientów

mod_log_config - konfigurowalne logowanie zdarzeń - pliki log zapisywane są w formacie Common Logfile Format

mod_log_referer - logowanie odwołań do plików umieszczonych na serwerze

mod_mime - określenie typu pliku na podstawie rozszerzenia

mod_mime_magic - określenie typu pliku na podstawie kilku bajtów jego zawartości

mod_mmap_static - pozwala określić pewne niezmienne pliki, które zostaną umieszczone w pamięci serwera Apache w celu szybszego dostępu

mod_negotiation - odpowiedzialny za uzgadnianie najlepszej reprezentacji danych w przeglądarce klienta. Wprowadzony ze względu na zgodność z HTTP/1.1

mod_proxy - Apache staje się serwerem proxy dla stron WWW, przyspiesza dostęp do często używanych danych, gdy serwer WWW jest wykorzystywany do zapamiętywania danych

mod_rewrite - moduł o ogromnych możliwościach. Pozwala modyfikować adresy URL w "locie" za pomocą wyrażeń regularnych

mod_setenvif - pozwala modyfikować zmienne środowiskowe na podstawie wywołania

mod_so - moduł eksperymentalny. Powoduje ładowanie dodatkowych modułów podczas działania serwera

mod_speling - moduł odpowiedzialny za poprawianie błędów w adresach URL

mod_status - wyświetla bieżący stan serwera Apache

mod_userdir - ustawienia dotyczące katalogów domowych użytkowników

mod_unique_id - generuje unikalny identyfikator dla każdego żądania

mod_usertrack - śledzenie zachowań użytkowników za pomocą Cookies (tzw. ciasteczka), szczególnie przydatne dla np. stałych klientów w sklepach internetowych lub do określania preferencji użytkownika

mod_vhost_alias - moduł wykorzystywany przy konfiguracji serwerów wirtualnych

 

ReadmeName
HeaderName

Dyrektywy te określają nazwy plików zawierających stopkę i nagłówek dołączony na końcu i początku indeksu katalogu.

 

ScriptAlias

Opcja ta określa, w którym katalogu będą znajdować się skrypty serwera (zawartość katalogu traktowana jest, jako aplikacje).

 

AddHandler cgi-script .cgi

Opcja zezwalająca na używanie skryptów CGI.

 

AddHandler server-parsed .shtml

Opcja zezwalająca na używanie poleceń SSI w dokumentach HTML.

 

AddHandler send-as-is asis

Zezwalamy serwerowi na przesyłanie dokumentów w postaci niezmodyfikowanej.

 

AddHandler imap-file map

Zezwalamy na używanie map graficznych, interpretowanych po stronie serwera.

 

AddHandler type-map var

Zezwalamy na wykorzystywanie map typów.

 

TypesConfig

Dyrektywa ta służy do wskazywania lokalizacji plików: mime types.

 

DefaultType

Wskazujemy domyślny typ MIME używany w przypadku niemożności jego określenia.
Jeśli serwer przechowuje głównie dokumenty tekstowe HTML, to najlepiej użyć wartości "text/plain", jeśli natomiast udostępniane pliki są w większości binarne, to lepiej użyć "aplication/octet-stream", co pozwoli zabezpieczyć przeglądarki przed próbami wyświetlania zawartości plików binarnych w postaci tekstowej.

 

AddType

Pozwala na dodanie nowego typy MIME bez konieczności modyfikowania pliku mime types.

 

AddLanguage

Dyrektywa ta pozwala na obsługę wielu wersji językowych dokumentów, co pozwoli na dostarczenie przeglądarce dokumentu w żądanym przez nią języku.

 

LanguagePriority

Określa priorytet wersji językowej w przypadku braku rozstrzygnięcia podczas negocjacji zawartości. Lista powinna zawierać kody języków w kolejności malejących priorytetów.

 

AddEncoding

Dyrektywa ta daje możliwość przeglądarkom na rozpakowywanie danych w locie.

 

AccessFileName

Opcją tą wskazujemy na plik odpowiedzialny za ustawienie kontroli dostępu do katalogu.

 

ProxyRequests

Dyrektywą tą ustawiamy nasz serwer, jako serwer pośredniczący.

 

Alias /alias/ "/prawdziwa nazwa/"

Dyrektywa ta umożliwia nam zdefiniowanie dowolnej liczby aliasów dla katalogów.
Zawartość katalogu określonego za pomocą tej dyrektywy traktowana jest, jak dokument, a nie aplikacja.

 

ErrorLog

Określenie położenia pliku dziennika błędów.

 

LogLevel

Dyrektywa ta ustala ilość informacji rejestrowanych w pliku error_log.
Możliwe opcje tej dyrektywy to : debug, info, notice, warn, error, critic, alert, emerq.

 

CustomLog

Określamy położenie pliku dziennika transakcji : rejestrowanie informacji o typie przeglądarki i adresie źródłowym odwołania.

 

LogFormat

Dzięki tej opcji możemy ustalić wzorce formatów dla dyrektywy CustomLog.

 

HostnameLookups

Dzięki tej dyrektywie możemy nakazać serwerowi, aby rejestrował nazwy klientów (on) lub tylko ich adresy (off).

 

PidFile

Dyrektywa ta zawiera nazwę pliku, do którego serwer podczas startu zapisze swój PID.

 

ScoreBoardFile

Określa plik do zapisywania wewnętrznych informacji o procesach potomnych serwera.

 

ErrorDocument

Ta dyrektyw może zawierać komunikaty o błędach serwera. Jako opcja może być również podany adres strony, która wyświetli informacje o błędzie.

 

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response

Opcje te ustawiają blokadę podtrzymywania połączenia w przypadku komunikacji z przeglądarką Netscape 2.x (implementacja ta zawiera błędy).
Druga dyrektywa przeznaczona jest dla programu Internet Explorer 4.0b2, który posiada błędy w obsłudze podtrzymywania połączenia po otrzymaniu odpowiedzi 301,302.

 

BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

Powyższe dyrektywy wymuszają wysyłanie odpowiedzi w protokole HTTP/1.1 opatrzonych
nagłówkiem HTTP/1.0 na użytek przeglądarek niewłaściwie interpretujących dane w tym protokole.

 

Dla każdego katalogu i jego podgatalogów, do którego Apache ma dostęp można określić zestaw dostępnych w nim praw, usług i funkcji. Służy do tego sekcja :

<Directory / katalog_do_którego_będą_odnosić_się_ustawienia>
  dyrektywy
</Directory>

składająca się z następujących dyrektyw :

Options - dyrektywa ta może przyjmować następujące opcjie:

None - żadna z dostępnych opcji nie zostanie włączona w tym katalogu
All - wszystkie dostępne opcje (poza MultiViews) są włączone w tym katalogu
Indexes - w przypadku braku pliku podanego dyrektywą DirectoryIndex zostanie wyświetlona lista plików w tym katalogu (w postaci strony HTML)
FollowSymLinks - pozwala na dostęp do katalogu poprzez dowiązania symboliczne
ExecCgi - daje możliwość wykonywania w tym katalogu skryptów CGI, nawet jeśli nie jest to katalog określony dyrektywą ScriptAlias,
MultiView - kiedy na serwerze nie ma pliku, o który prosi klient, serwer próbuje zgadnąć, który dokument najbardziej pasuje do prośby klient

 

AllowOverride - dyrektywa ta określa, które parametry konfiguracji głównej można zmieniać dla podkatalogów za pomocą plików .htaccess.

Dyrektywa AllowOverride składa się z następujących opcji :

Options - plik .htaccess może zmieniać opcje nie wymienione w dyrektywie Options dla danego katalogu
FileInfo - plik .htaccess może zawierać dyrektywy modyfikujące typ informacji dokumentu
AutoConfig - plik .htaccess może zawierać dyrektywy odpowiedzialne za autoryzację dostępu
Indexes - plik .htaccess może zawierać dyrektywy sterujące indeksowaniem katalogów
Limit - plik .htaccess może zawierać dyrektywy allow, deny i order,

      order - określa, jakie prawa dostępu można nadać katalogowi
      allow - dostęp do katalogu jest możliwy
      deny - dostęp do katalogu jest zabroniony

 

allow from all lub deny from all - określa, kogo obowiązują dane prawa.

 

Przykładowy plik konfiguracyjny : httpd.conf

 

 

68)  Serwery wirtualne (APACHE)

Serwery wirtualne są jedną z bardziej popularnych usług dostarczanych przez serwer Apache. Dzięki odpowiedniej konfiguracji kilku dyrektyw można stworzyć praktycznie nieograniczoną liczbę serwerów WWW, znajdujących się na tym samym fizycznym serwerze, posiadających własne unikalne nazwy i przechowujących swoje dane w odrębnych katalogach .

Serwer Apache dostarcza dwóch sposobów tworzenia hostów wirtualnych.

Możemy posiadać tylko jeden adres IP z wieloma rekordami CNAME umieszczonymi na serwerze DNS, które będą wskazywały właśnie na ten adres lub druga możliwość, to stworzenie tylu serwerów, ile mamy dostępnych adresów (jeden serwer przyporządkowany jednemu interfejsowi).

 

Serwery wirtualne identyfikowane nazwami domenowymi

Konfiguracja serwera identyfikowanego nazwami domenowymi umożliwia uruchomienie wielu hostów wirtualnych na tym samym fizycznym serwerze, któremu przyporządkowany jest tylko jeden adres IP (jeden adres IP wiele serwerów WWW).
Aby było to możliwe należy umieścić na serwerze DNS dodatkowe nazwy dla naszego serwera za pomocą rekordu CNAME. Wówczas gdy klient HTTP wyśle żądanie skierowane do serwera, wysyła wraz z nim zmienną określającą nazwę serwera, do którego żądanie jest adresowane. To właśnie w oparciu o tę zmienną serwer określa, do którego wirtualnego hosta ma przekazać żądanie.

 

Przed głównymi blokami konfigurującymi hosty wirtualne należy dodać dyrektywę :

NameVirtualHost IP_naszego_serwera

dzięki której określimy, który adres IP ma być skojarzony z więcej niż jedną nazwą.
Dla każdej nazwy obsługiwanej przez ten serwer należy stworzyć osobny blok dyrektyw w postaci :

 

<VirtualHost IP_naszego_serwera >
ServerName nazwa_hosta_1.nasza_domena
SerwerAlias alias1, alias2
DocumentRoot /ścieżka_do_katalogu_hosta_1/
TransferLog /ścieżka_do_katalogu_hosta_1/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_1/logs/error_log

</VirtualHost>

<VirtualHost IP_naszego_serwera >
ServerName nazwa_hosta_2.nasza_domena
SerwerAlias alias1, alias2
DocumentRoot /ścieżka_do_katalogu_hosta_2/
TransferLog /ścieżka_do_katalogu_hosta_2/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_2/logs/error_log

</VirtualHost>

 

W blokach konfiguracyjnych pojawia się dyrektywa SerwerAlias .
Dyrektywą tą możemy określić aliasy dla nazwy naszego serwera wirtualnego, dzięki czemu użytkownicy będą mogli używać skróconej nazwy hosta, np.:

zamiast
http://nazwa_hosta_1.nasza_domena/
można użyć nazwy
http://alias1/

 

Wewnątrz bloku <VirtualHost> </VirtualHost> możemy podawać dowolne dyrektywy konfiguracyjne, które zostały omówione w poprzednich rozdziałach oprócz dyrektyw :

ServerType, StartServers, MaxSpareServers, MinSpareServers, MaxRequestsPerChild, BindAddress, Listen, PidFile, TypesConfig, ServerRoot .

Jeśli planujemy uruchomienie na naszym serwerze większej ilości hostów wirtualnych, dobrym rozwiązaniem jest umieszczenie wszystkich komunikatów w jednym pliku dziennika błędów, zamiast w osobnych plikach. Dzięki temu rozwiązaniu unikniemy wyczerpania się systemowego limitu liczby deskryptorów plików (zwykle 64 dla jednego procesu), co mogłoby spowodować brak wpisów w dziennikach lub długi czas oczekiwania na odpowiedź serwera po pojawieniu się żądania HTTP.

 

Serwery wirtualne identyfikowane adresami IP

Konfiguracja tego typu serwerów jest dobrym rozwiązaniem, jeśli posiadamy dużą pulę adresów publicznych. Wówczas każdemu interfejsowi w naszym systemie możemy przypisać jeden adres IP.

Konfiguracja tego typu serwerów jest adekwatna do konfiguracji serwerów identyfikowanych nazwami domenowymi, z wyjątkiem braku dyrektywy NameVirtualHost.

Jeśli skonfigurowaliśmy poprawnie interfejsy sieciowe, to uruchomienie hostów wirtualnych ogranicza się do dodania w pliku httpd.conf kilku prostych dyrektyw w postaci :

 

<VirtualHost adres_IP_dla pierwszego_hosta_1 >
ServerName www.nazwa_hosta_1.nasza.domena
DocumentRoot /ścieżka_do_katalogu_hosta_1/
TransferLog /ścieżka_do_katalogu_hosta_1/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_1/logs/error_log

</VirtualHost>

 

Podobne bloki należy dodać dla każdego uruchamianego serwera, nie zapominając o zmianie ścieżek dostępu do ich katalogów.

 

 

69)  Instalacja serwera FTP (PROFTPD)

Najnowsza wersja serwera ProFTPd znajduje się pod adresem : ftp://ftp.proftpd.org/distrib/

Mamy tu możliwość ściągnięcia źródeł lub gotowych paczek zawierających serwer ftp.
Należy pamiętać, że kompilacja źródeł daje większe możliwości dostosowania serwera do naszych potrzeb.

W katalogu, który powstanie po rozpakowaniu źródeł programu wydajemy polecenie :

./configure [opcje]

Najważniejsze opcje konfiguracyjne to :

--prefix=/ścieżka - miejsce, w które zostanie zainstalowny nasz serwer ftp

--with-modules=mod_moduł1:mod_moduł2:... - dodanie modułów :

     mod_pam - obsługa PAM (umożliwia obsługę użytkowników nie tylko jako anonymous)

     mod_ratio - włączenie ratio

     mod_readme - pozwala na obsługę plków README itp.

     mod_ldap - obsługa LDAP

     mod_sql - obsługa Sql

--sysconfdir=/ścieżka - położenie pliku konfiguracyjnego (standardowo /usr/local/etc )

--localstatedir=/ścieżka - położenie plików dziennika zdarzeń (standardowo /usr/local/var)

--enable-shadow - umożliwia korzystanie z pliku shadow zawierającego hasła użytkowników

 

Przykładowo polecenie to może wyglądać następująco :

./configure --prefix=/usr/local/proftpd --enable-shadow --with-modules=mod_pam

Kompilację i instalację dokonujemy poprzez polecenia :

make
make install

 

Jeśli serwer został skompilowany z modułem pam, należy skopiować plik /contrib/ftpd.pamd na /etc/pam.d/ftp

Następnym krokiem jest stworzenie katalogu ftp :

mkdir /home/ftp

i nadanie mu odpowiednich praw :

chmod 755 /home/ftp

 

 

70)  Uruchamianie i zatrzymywanie serwera PROFTPD

Serwer ftp możemy uruchamiać na dwa sposoby :

  • jako standalone - uruchamiany podczas startu systemu i działający w nim przez cały czas
  • jako intetd - uruchamiany przez specjalnego demona (inetd lub xinetd) tylko do obsłużenia rządania

 

Jeśli chcemy aby serwer uruchamiał się jako standalone należy na końcu pliku /etc/rc.d/rc.local umieścić linię ze ścieżką do naszego serwera : /usr/local/sbin/proftpd.

Należy pamietać o wstawieniu znaku # przed linią odpowiadającą za uruchamianie serwera w pliku inetd.conf lub wstawić dyrektywę disable = yes w pliku z konfiguracją dla xinetd.

 

Aby serwer uruchamiany był tylko do obsługi przychodzących rządań (inetd) należy dodać odpowiednie wpisy do pliku superserwera (inetd lub xinetd).

/etc/inetd.conf

ftp stream tcp nowait root /usr/sbin/proftpd proftpd

 

/etc/xinetd.conf

service ftp
{
flags = REUSE
socket_type = stream
instances = 50
wait = no
user = root
server = /usr/sbin/proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
}

 

 

71)  Konfiguracja serwera PROFTPD

Konfiguracja serwera ProFTPd polega podbnie jak konfiguracja APACHA na ustawianiu odpowiednich dyrektyw.

Plikie konfiguracyjny serwera jest plik : /usr/local/etc/proftpd.conf

 

Najważniesze dyrektywy konfiguracyjne to :

 

ServerType

typ serwera : standalone , inetd

 

ServerAdmin adres_administratora

Zawiera adres e-mailowy administratora.

 

ServerName "nazwa serwera"

Wyświetlana podczas logowania nazwa serwer.

 

User nazwa_użytkownika

Określa właściciela uruchomionego serwera.

 

Group nazwa_grupy

Określa grupę właściciela uruchomionego serwera.

 

MaxClients liczba_połączeń

Określa maksymalną liczbę obsługiwanych jednocześnie połączeń ftp.

 

TransferLog /ścieżka/plik

Okeśla miejsce zapisywania logów serwera dotyczących transferu plików.
Domyślnie : /var/log/xferlog

 

DefaultRoot /ścieżka/katalog

Określa katalog główny serwera.
Domyślnie : /

 

AuthUserFile /ścieżka/plik

Określa alternatywny plik passwd o identycznym formacie jak systemowy plik /etc/passwd.
Dyrektywa ta umożliwia stworzenie osobnych kont ftp dla użytkowników nie posiadających konta na serwerze.
Jeśli dyrektywa została podana to plik będzie używany do identyfikacji użytkowników.

 

Umask maska

Ustawia maskę z uprawnieniami dla nowo tworzonych plików i katalogów.
Wszystkie argumenty tej dyrektywy muszą być podane jako liczba ósemkowa, w formacie 0xxx. Opcjonalnie drugi argument może podawć maskę, która będzie używana w czasie tworzenia katalogów. Gdy nie jest on podany to katalogi będą tworzone według maski podanej dla plików.

Ósemkowy zapis praw dostępu :

Wartość ósemkowa Znaczenie
0000 Nikt nie ma żadnych praw
0001 Prawo właściciela do wykonywania pliku
0002 Prawo właściciela do modyfikacji pliku
0004 Prawo właściciela do czytania pliku
0010 Prawo członków grupy do wykonywania pliku
0020 Prawo członków grupy do modyfikacji pliku
0040 Prawo członków grupy do czytania pliku
0100 Prawo innych użytkowników do wykonywania pliku
0200 Prawo innych użytkowników do modyfikacji pliku
0400 Prawo innych użytkowników do czytania pliku
1000 Ustawienie sticky bitu 
2000 Ustawienie bitu SGID
4000 Ustawienie bitu SUID

 

<Anonymous root-directory> </Anonymous>

Blok konfiguracyjny używany do udostępniania serwera ftp użytkownikom nie posiadającym konta na serwerze - tzw. użytkownikom anonimowym.
Parametr root-directory określa katalog główny poza który nie wolno wyjść danym użytkownikom.

 

<Directory /ścieżka/katalog> </Directory>

Blok konfiguracyjny umożliwiający zmianę ustawień danego katalogu.

 

<Limit komenda grupa_komend> </Limit>

Blok konfiguracyjny używany do określania szczegółowych restrykcji dotyczących wykonywania komend ftp wysyłanych przez klienta.

Komendy :

CWD , CDUP - zmiana katalogu
MKD  - tworzenie nowego katalogu
RNFR , RNTO - zmiena położenia pliku między katalogami
DELE  - kasowanie pliku
RMD - kasowanie katalogu
RETR - transfer pliku z serwera do klienta
STOR - transfer pliku od klienta do serwera

Grupa komendy :

READ - wszystkie komendy ftp wiążące się z czytaniem pliku, np.: RETR, STAT
WRITE - wszystkie komendy ftp wiążące się z zapisem, tworzeniem, kasowaniem, np.: MKD, RMD
DIRS - wszystkie komendy ftp wiążące się z wyświetleniem zawartości katalogu, np.: LIST, NLST
ALL - wszystkie komendy ftp

 

Allow from [all , network , host , domain]

Dyrektywa ta jest używana wewnątrz bloku <Limit> i określa dla kogo będą udostępnione odpowiednie komendy.
Domyślnie: allow all

 

Deny from [all , network , host , domain]

Dyrektywa ta jest używana wewnątrz bloku <Limit> i określa dla kogo będą zabronione odpowiednie komendy.

 

AllowAll

Dyrektywa używana wewnątrz bloku <Limit> do udostępnienia wszystkim danej komendy lub grupy komend.

 

DenyAll

Dyrektywa używana wewnątrz bloku <Limit> do zabronienia wszystkim danej komendy lub grupy komend.

 

<VirtualHost adres> </VirtualHost>

Blok konfiguracyjny używany do tworzenia wydzielonych konfiguracji, które będą stosowane w stosunku do różnych nazw hostów lub adresów IP (na tym samym komputerze).

 

Przykładowy plik konfiguracyjny : proftpd.conf

 

 

72)  Instalacja serwera poczty elektronicznej (POSTFIX)

Najnowszą wersję serwera możemy znaleźć na stronie : http://postfix.org

Instalacji Postfixa możemy dokonać poprzez kompilację źródeł :

make
make install

lub instalując go z pakiery RPM :

rpm -ivh postfix-2.0.12.rpm

 

 

73)  Uruchamianie i zatrzymywanie serwera POSTFIX

Aby Postfix uruchamiał się nam po uruchomieniu systemu, należy umieścić odpowiedni wpis w skrypcie : /etc/init.d/rc.local lub stworzyć odpowiednie dowiązanie symboliczne w katalogu, z którego uruchamiane są skrypty po wejściu systemu na odpowiedni poziom pracy.

Uruchomienie serwera następuje po wydaniu komendy :

postfix start

Zatrzymanie serwera :

postfix stop

Zrestartowanie serwera :

postfix reload

 

 

74)  Konfiguracja serwera POSTFIX

Najważniejszym plikiem konfiguracyjnym serwera jest plik main.cf, który znajduje się w katalogu /etc/postfix .

Składnia poleceń konfiguracyjnych jest następująca :

parametr1 = wartość

Przy konfiguracji możliwe jest też użycie wcześniej zdefiniowanych zmiennych :

parametr2 = $parametr1

 

Do najważniejszych dyrektyw konfiguracyjnych należą :

 

mail_owner

Dyrektywa ta określa właściciela procesu Postfix.

 

myhostname

Dyrektywa ta powinna zawierać pełną nazwę naszego hosta.

 

mydomain

W dyrektywie tej powinna znajdować się nazwa naszej domeny.

 

myorigin

Dyrektywa ta odpowiada za część domenową adresów pocztowych pojawiających się w wysyłanej poczcie i może przyjmować następujące opcje : $mydomain , $myhostname lub inne przypisane wprost.

 

mydestination

Określa zestaw domen obsługiwanych przez dany serwer.

 

relayhost

Dyrektywa ta wskazuje na host przez który poczta będzie wysyłana.

 

relay_domains

Dzięki tej dyrektywie możemy wskazać domeny adresowe, dla których będzie przyjmowana poczta.

 

networks

Dyrektywa ta powinna zawierać adresy sieci, z których możemy relayować pocztę.

 

queue_directory

Jest ścieżką do katalogu zawierającego kolejki serwera.

 

command_directory

Jest ścieżką do katalogu z plikami binarnymi serwera.

 

daemon_directory

Wskazuje na katalog z demonem serwera.

 

canonical_maps

Wskazuje na plik zawierający tabelę odwzorowań adresów.
Opcja ta jest użyteczna przy przekształcaniu zarówno adresów nadawców jak i odbiorców :

login@domena - Imie.Nazwisko@domena

Po wprowadzeniu zmian do pliku z odwzorowaniami należy zaktualizować bazę danych i przeładować serwer :

      postmap /etc/postfix/canonical_maps
      postfix reload

 

alias_maps

Wskazuje na plik zawierający tabelę aliasów nazw. Pełni podobną funkcję do dyrektywy canonical_maps.
W celu zaktualizowania bazy aliasów należy użyć polecenia postalias .

     

alias_database

Wskazuje na plik, który powstaje po przetworzeniu pliku z aliasami nazw poprzez program postalias.

 

relocated_maps

Wskazuje na plik zawierający informacje o nie istniejącym użytkowniku, która jest wysyłana do nadawcy listu.
W celu zaktualizowania bazy należy użyć polecenia postmap .

 

header_size_limit

Dyrektywą tą możemy określić maksymalny rozmiar nagłówka listu.

 

extract_recipient_limit

Określa maksymalną listę odbiorców listu określonych w nagłówku.

 

message_size_limit

Dyrektywa określająca maksymalny rozmiar listu.

 

qmgr_message_active_limit

Określamy maksymalną liczbę listów obsługiwanych jednocześnie w kolejce active.

 

default_destination_concurrency_limit

Liczba równoczesnych sesji z tym samym serwerem.

 

header_checks

Wskazuje tablicę zawierającą wyrażenia regularne, opisujące nagłówki listów, które mają być odrzucane.

  

Przykładowy plik konfiguracyjny : main.cf

 

 

75)  Konfiguracja superserwera inetd

Plikiem konfiguracyjnym serwera inetd jest plik : /etc/inetd.conf

Każdy wiersz tego pliku ma następujący format :

usługa typ-gniazdka protokół wait/nowait[.max] użytkownik[.grupa] program-serwera argumenty-serwera

gdzie :

usługa - to nazwa usługi odpowiadająca wpisom z pliku /etc/services, na podstawie której serwer określa numer portu, na którym należy oczekiwać połączenia

typ-gniazdka - przyjmuje wartość stream dla usług o charakterze połączeniowym (tcp) lub datagram dla usług bezpołączeniowych (udp)

protokół - określa protokół wykorzystywany do obsługi połączenia (musi być on zdefiniowany w pliku /etc/protocols)

wait/nowait[.max] - w przypadku serwerów wielowątkowych należy podać parametr nowait, a wprzypadku jednowątkowych - wait.
Opcjonalne pole max określa maksymalną liczbę procesów, które można utworzyć w ciągu 60 sekund (tylko dla parametru nowait)

user[.group] - określa użytkownika i grupę, do której będzie należał uruchomiony proces

program-serwera - zawiera ścieżkę do programu obsługującego połączenie

argumenty-serwera - jest listą argumentów przekazywanych do programu serwera przy jego uruchomieniu

 

Przykład :

ftp stream tcp nowait root /usr/sbin/proftpd proftpd

 

 

76)  Konfiguracja superserwera xinetd

Xinetd jest nowszą wersją superserwera inetd. Posiada on rozszeżone dyrektywy konfiguracyjne umożliwiające dokładniejsze dostosowanie konfiguracji do własnych potrzeb lub zasobów systemowych.

Ciekawymi parametrami dla polecenia configure podczas instalowania serwera są :

--with-libwrap - parametr nakazujący w pierwszej kolejności sprawdzenie praw dostępu w plikach /etc/hosts.allow i /etc/hosts.deny
--with-loadavg - parametr pozwalający zarządzać opcją konfiguracji max_load (wyłączenie części serwisów podczas przeciążenia maszyny)
--with-inet6 - parametr ten pozwala na obsługę IPv6

 

Głównym plikie konfiguracyjnym superserwera xinetd jest plik : /etc/xinetd.conf

Plik konfiguracyjny składa się z dwóch sekcji :

  • default - definiuje ogólną konfiguracje serwera, a każdy atrybut zdefiniowany w tej sekcji zachowuje swoją wartość dla wszystkich ustawień w sekcji service (chyba, że zostanie jawnie zmieniony w danej sekcji)
  • service - odpowiedzialna jest za konfigurację odpowiednich usług

 

Sekcja default ma następującą budowę :

default
{
  atrybut operator wartość
  ........
}

 

Sekcja service wygląda identycznie jak sekcja default :

service nazwa_sewisu
{
  atrybut operator wartość
  ....................
}

 

Dozwolone operatory to :

=     przypisuje atrybutowi daną wartość
+=  dodaje wartość do listy wartości atrybutów
-=   usuwa wartość z listy wartości atrybutów

 

Najważniejsze atrybuty i ich wartości to :

 

bind lub interface

pozwala na powiązanie serwisu z danym adresem IP (przydatne jeśli nasz serwer posiada kilka kart sieciowych)

 

disabled 

dotyczy sekcji default - wartościami są nazwy usług, które chcemy wyłączyć

 

disable

dotyczy sekcji service, a możliwe wartości to :
YES - wyłączenie danej usługi
NO - włączenie danej usługi

 

flags

może przyjmować następujące wartości :
IDONLY - akceptuje tylko połączenia od klientów posiadających serwer identyfikacyjny
NAMEINARGS - oznacza, że w polu server definiuje się pomocniczy program potrzebny do prawidłowego działania serwera, a dopiero w polu serwer_args definiuje się właściwy serwer
NOLIBWRAP - powoduje, że pliki host.acces i host.deny   nie są sprawdzane
NORETRY - zabezpiecza nowy proces przed ponownym rozdzieleniem w przypadku błędu

 

id

umozliwia nadanie dodatkowej nazwy danej usłudze

 

log_type

określa sposób logowania zdarzeń związanych z dostępem do poszczególnych usług :

SYSLOG funkcja [poziom]
mozliwe funkcje to : daemon | auth | authpriv | user | local0-7
mozliwe poziomy to : emerg | alert | crit | err | warning | notice | info | debug

FILE nazwa_pliku [max1[max2]]
nazwa_pliku - wskazuje na pliku, do którego trafiać będą logi
max1 - określa rozmiar pliku po przekroczeniu którego wysyłane jest ostrzeżenie do sysloga
max2 - określa rozmiar po przekroczeniu którego syslog przestaje logować

 

log_on_success

określa, które dane mają zostać zalogowane w przypadku udanego połączenia i skorzystania z usługi :
HOST - loguj IP klienta
PID - loguj PID procesu, który obsłużył klienta
DURATION - loguj długość trwania połączenia
USERID - loguj identyfikator zdalnego użytkownika
EXIT - loguj status serwera po obsłużeniu klient

 

log_on_failure 

określa, które dane mają zostać zalogowane w przypadku nieudanego połączenia i skorzystania z usługi :ATTEMPT - loguj fakt próby połączenia
HOST - loguj IP klienta
USERID - loguj identyfikator zdalnego użytkownika
RECORD - loguj wszelkie dostępne dane o kliencie

 

nice

określa priorytet uruchamianej usługi (wysoki priorytet -10 , niski -20)

 

no_access 

zawiera listę klientów, którzy nie mogą korzystać z danej usługi serwisu

 

only_from 

zawiera listę klientów, którzy mogą korzystać z usługi serwisu

 

port 

wskazuje na numer portu skojarzony z daną usługą

 

protocol 

określa protokół wykorzystywany do obsługi połączenia (musi być on zdefiniowany w pliku /etc/protocols)

 

redirect 

przekierowanie rządania na inną maszynę

 

server 

zawiera ścieżkę do programu uruchamiającego dany serwer

 

server_args 

jest listą argumentów przekazywanych do programu serwera przy jego uruchomieniu

 

socket_type 

przyjmuje wartość stream dla usług o charakterze połączeniowym (tcp) lub datagram dla usług bezpołączeniowych (udp)

 

type 

określa typ serwisu :
INTERNAL - serwisy zarządzne bezpośrednio przez xinetd bez udziału konkretnych serwerów
                       (echo, time, daytime, chargen, discard)
RPC - serwisy wymienione w pliku /etc/rpc
UNLISTED - dla serwisów nie wymienionych w plikach : /etc/rpc   /etc/services

 

wait

dotyczy srwisów jedno lub wielowątkowych :
NO[.max] - dotyczy serwerów wielowątkowych, opcjonalne pole max określa maksymalną liczbę procesów, które mozna utworzyć w ciągu 60 sek
YES - w przypadku serwerów jednowątkowych

 

cps 

limituje ilość przychodzących połączeń :
wartość_1 - określa ilość maksymalnych połączeń do danego serwisu po przekroczeniu którego serwis zostaje deaktywowany
wartość_2 - wyrażona w sekundach określa czas deaktywowania serwisu

 

instances 

określa maksymalną liczbę serwerów tego samego typu pracujących w tym samym czasie

 

max_load 

określa maksymalne obciążenie procesora po przekroczeniu, którego połączenia na ten serwer są odrzucane

 

per_source 

określa limit połączeń dla serwera z tego samego adresu źródłowego :
dowolna_liczba - liczba określająca limit połączeń
UNLIMITED - nieograniczona liczba połączeń

 

W pliku xinetd.conf znajduje się zazwyczaj tylko główna konfiguracja serwera i wpis dołączający pliki z katalogu /etc/xinetd/ zawierające konfiguracje poszczególnych usług.

 

Przykład :

defaults
{
instances = 50 
per_source = 5
log_type = FILE /var/log/xinetd.log 500K 600K
log_on_success = HOST PID DURATION
log_on_failure = HOST RECORD
no_access = 192.168.1.3
disabled = telnet
}

service ftp
{
flags = REUSE 
socket_type = stream
instances = 50
wait = no
user = root
server = /usr/sbin/proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
}

 

 

77)  Podstawy bezpieczeństwa systemu

Dobrze skonfigurowany system jest podstawowym elementem bezpieczeństwa danych, całej sieci, jak i uruchamianych w jego środowisku serwerów.
Szczególny nacisk na bezpieczeństwo systemów kładzie się w dużych firmach, gdzie na komputerach lub ogólnodostępnych serwerach przechowuje się inforamcje takie jak : dane firmy , dane klientów , numery kart kredytowych , konta bankowe.

Bezpieczeństwo naszych danych zależy głównie od dwóch rodzajów zabezpieczeń :

  • fizycznych
  • programowych

 

Zabezpieczenia fizyczne dotyczą wszystkiego co związane jest nie z samym systemem lecz środowiskiem, w którym ten system będzi działał, np.:

  • odpowiednio przygotowane szafy serwerowe
  • opdowiednio przygotowane i zabezpieczone pomieszczenia, w kótrych pracują serwery
  • specjalistyczna instalacja logiczna sieci uniemożliwiającymi podsłuchiwanie sieci

 

Drugi rodzaj zabezpieczeń dotyczy samej konfiguracji systemu i uruchamianych na nim programów lub serwerów.

Podstawowe czynności, które należy wykonać po zainstalowaniu systemu, aby zapewnić minimum bezpieczeństwa to :

  • konfiguracja BIOSU zabezpieczona hasłem i uniemożliwiająca odczytanie systemu z innych nośników niż dysk twardy
  • zabezpieczenie programu ładującego system (LILO) uniemożliwjając skorzystanie z opcji : single dającej dostęp do systemu z prawami superużytkownika bez podawania hasła
  • wyłączenie wszystkich niepotrzebnych i niebezpiecznych usług uruchamianych przez program inetd (wstawienie # przed nazwą usługi) lub xinetd (usunięcie wpisu dotyczącego usługi lub wstawienie w sekcji services dyrektywy disable=YES)

    Najbardzej niebezpieczne usługi to te umożliwające zdalne logowanie na serwerze :

    rsh, rexec, rcp, rlogin , telnet
    Najlepszym rozwiązanie jest zastąpienie ich usługą SSH.

    Inne usługi, które warto wyłączyć to :

    finger (udostępnia informacje o użytkownikach systemu)
    tftp (umożliwia pobieranie plików bez autoryzacji)
    smpt (zdalne zarządzanie serwerem)
    systat, netstat (podają informacje o systemie i sieci)
    echo, daytime, discard, chargen, talk, ntalk, printer (inne niebezpieczne narzędzia)

 

Inne reguły, które warto przestrzegać to :

 

  • ograniczenie możliwość uruchamiania skryptów CGI na serwerze (szczególnie na serwerach WWW)
  • ostrożne używanie ustawień SUID , SGID
  • należy jeśli to tylko możliwe korzystać z protokołu SSL, który jest protokołem bezpiecznej komunikacji i stanowi doskonałą alternatywę dla połączeń http
  • należy stworzyć podstawowe reguły filtrowania pakietów (firewall), co może stanowić doskonałą ochronę dla naszego systemu i całej sieci lokalnej
  • należy często aktualizować oprogramowanie na nowsze i bezpieczne wersje

 

 

78)  SSH - bezpieczna powłoka

SSH jest programem umożliwiającym logowanie na serwerze zdalnym i w przeciwieństwie do programu telnet posiada mechanizm silnego uwierzytelniania oraz szyfrowania sesji na podstawie specjalnych kluczy.

Źródło programu zawierające serwer, klienta i dodatkowe oprogramowanie możemy znaleźć na stronie domowej programu SSH : http://www.ssh.com/

Po udanej instalacji w katalogu /etc/ssh zostaną utworzone następujące pliki :

sshd_config - jest plikiem konfiguracyjnym serwera SSH
ssh_config - jest plikiem konfiguracyjnym klienta SSH
ssh_host_key - zawiera klucz prywatny serwera SSH
ssh_host_key.pub - zawiera klucz publiczny serwera SSH

 

W katalogu /etc/local/bin/ możemy znaleźć następujące programy :

ssh-askpass - jest prostym programem dla X-Window służącym do wczytywania haseł
scp - bezpieczny zamiennik dla komendy rcp
ssh-add - program służący do wprowadzania kluczy publicznych do agenta autentyfikacji
ssh-agent - agent autentyfikacji
ssh-keygen - generator klucza prywatnego i publicznego
ssh - bezpieczny zamiennik dla rsh

 

Katalog /etc/local/sbin zawiera następujące programy :

sshd - jest serwerem  SSH

 

Serwer SSH możemy uruchamiać zaraz po starcie systemu lub za pomocą superserwera inetd lub xinetd.

 

Najważniejsze dyrektywy konfiguracyjne serwera SSH :

 

RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes

wybór metody autentyfikacji

 

Port

numer poru wykorzystywanego przez ssh

 

ListenAdress

parametr ten określa adres IP interfejsu, który będzie obsługiwany przez SSH

 

PermitRootLogin

określa, czy ssh umożliwi logowanie na konto administratora

 

HostKey /etc/ssh/ssh_host_key
RandomSeed /etc/ssh/ssh_random_seed

położenie pliku z kluczem i parametrem losowym

 

ServerKeyBits

dyrektywa określająca długość klucza

 

KeyRegenerationInterval 

czas po jakim następuje odnowienie klucza (wartość w sekundach)

 

IgnoreRhosts
IgnoreRootRhosts

określa czy należy ignorować pliki : .rhosts, które wskazuje na zaufane hosty, z których można się zalogować bez podawania hasła

 

RhostsAuthentication
RhostsRSAAuthentication

określa możliwość autentyfikacji za pomocą mechanizmu rhost

 

X11Forwarding

umożliwia szyfrowanie połączenia graficznego - X Window

 

XAuthLocation

określa program za pomocą którego należy dokonywać autentyfikacji użytkownika w środowisku graficznym X Window

 

PrintMotd

określa możliwość wypisywania komunikatu powitalnego (/etc/motd)

 

Przykładowy plik konfiguracyjny : sshd_config

 

SSH umożliwia również bezpieczne logowanie na zdalnej maszynie bez podawania hasła.

Aby skorzystać z tej możliwości należy wykonać następujące czynności :

  • zalogować się do systemu lokalnego, z którego będziemy łączyć się za pomocą klienta ssh
  • uruchomić program ssh-keygen , który wygeneruje klucz publiczny (katalog_domowy/.ssh/identity) i klucz prywatny (/katalog_domowy/.ssh.identity.pub)
    (w pytaniu o hasło należy pozostawić hasło puste)
  • skopiować plik identity.pub do katalogu /tmp komputera zdalnego
    scp $HOME/.ssh/identity.pub serwer_zdalny:/tmp
  • zalogować się do systemu zdalnego
    ssg serwer_zdalny
  • dołączyć plik /tmp/identity.pub do pliku .ssh/authorized_keys w katalogu domowym na serwerze zdalnym
    cat /tmp/identity.pub >> .ssh/authorized_keys
  • wylogować sie i ponownie zalogować przez ssh bez podawania hasła

 

 

79)  FIREWALL

Firewall - "ściana ognia" jest terminem zaczerpniętym z konstrukcji samochodu, gdzie firewall fizycznie oddziela silnik samochodu od pasażera.
Komputerowe firewalle są urządzeniami, które chronią sieci prywatne od części publicznej, jaką jest Internet.
Komputer będący ,,ścianą ognia'' może być obecny tak w sieci chronionej, jak i w Internecie. Chroniona sieć nie może być osiągalna z Internetu, podobnie jak Internet nie może być osiągalny z chronionej sieci.

 

Typy firewalli

Istnieją dwa typy firewalli:

  • firewalle filtrujące IP - działające na poziomie pakietów, przepuszczające tylko te pakiety, które spełniają ustalone warunki filtrowania
  • serwery proxy - serwery pośredniczące, dziłające na pozimie aplikacji, wykonujące połączenie sieciowe za nasz komputer

 

Filtujące firwalle

Firewalle filtrujące działają na poziomie pakietów IP. Są zaprojektowane do kontroli przepływu, bazując na adresie źródłowym, docelowym, porcie i typie pakietu (zawartych w każdym z pakietów).
Ten typ firewalli z odpowiednio ustawionymi regułami filtrowania jest bardzo bezpieczny.

 

Serwery proxy

Serwery proxy pozwalają na niebezpośredni dostęp do Internetu przez firewall.
Podczas łączenia się z proxy serwerem za pomocą specjalnego oprogramowania klienckiego startuje on swojego klienta i dostarcza rządanych danych.
Ponieważ serwery proxy podwajają każde połączenie, możliwe jest zapisywanie każdego z nich.

 

Wady firewalli

Wadą filtrujących firewalli jest to, że ograniczają dostęp do twojej sieci z Internetu. Tylko usługi na filtrowanie, których zezwolisz będą dostępne.
Na serwerach proxy użytkownicy mogą autoryzować się na firewallu i dopiero wtedy mają (z systemu wewnątrz sieci prywatnej) dostęp do Internetu.
Poza tym nowe typy klientów sieciowych i serwerów przybywają prawie codziennie. Musimy wtedy wynaleźć nowy sposób zezwolenia na kontrolowany ich dostęp do twojej sieci, zanim będą użyte.

 

Kompilacja jądra dla obsługi firawalla.

Aby nasz firewall działał, należy uaktywnić podczas kompilacji jądra następujące opcje :

* Turn Networking Support ON
* Turn Network firewalls ON
* Turn TCP/IP Networking ON
* Turn IP Firewalling ON
* Turn IP firewall packet loggin ON
* Turn IP: accounting ON

 

Konfiguracja zasad filtrowania adresów IP

Aby poprawnie zaprojektować nasz firewall należy zrozumieć jaką drogę pokonuje datagram IP w czsie przechodzenia przez naszą zaporę.
Najpierw sprawdzana jest suma kontrolna datagramów checksum, następnie testowane są one pod kątem deformacji sanity. Później pakiety przechodzą przez łańcuch wejściowy input chain i jeśli trzeba podlegają procesowi NAT - demasquerade, czyli adres rutera usuwany jest z pola "adres docelowy" i zastępowany jest adresem IP komputera w sieci prywatnej. Dalej na podstawie tablicy rutingu routing decision lub protokołu rutującego podejmowana jest decyzja o dalszym losie pakietu. Procesy lokalne local process mogą odbierać pakiety po etapie rutowania i wysyłać pakiety poprzez etap rutowania i łańcuch wyjściowy output chain. Jeśli pakiety nie są utworzone poprzez procesy loklne, są sprawdzane w łańcuchu przejściowym forward chain. Jeśli pakiety od procesów lokalnych są przekazywane do lokalnego komputera localhosta przechodzą przez łańcuch wyjściowy do interfejsu lo - loopback. Wszystkie pakiety wydostające się z komputera muszą przejść przez łańcuch wyjściowy output chain.

 

Konfigurowanie naszego firewalla należy zacząć od stworzenia skryptu rc.firewall w katalogu /etc/rc.d/, w którym umieścimy reguły filtrowania naszych pakietów.

W pliku /etc/rc.d/rc.local dodajemy następujący wpis
/etc/rc.d/rc.firewall
który spowoduje uruchomienie podczas startu systemu naszego skryptu .

Do konfiguracji reguł filtrowania posłużymy się programem ipchains o następującej składni dla wybranych opcji :

ipchains -A łańcuch opcje
ipchains -R łańcuch opcje
ipchains -I łańcuch opcje
ipchains -P łańcuch cel
ipchains -F łańcuch
ipchains -D łańcuch

gdzie :

A - dołącza jedną lub więcej reguł do końca podanego łańcucha
R - zamienia reguły w wybranym łańcuchu
I - wstawia jedną lub więcej reguł do określonego łańcucha
P - ustawia politykę łańcucha wybranego celu
F - usuwa wszystkie reguły z podanego łańcucha
D - usuwa jedną lub więcej reguł z podanego łańcucha

 

łańcuch - może przyjmować 3 parametry :

INPUT - dla pakietów wchodzących
OUTPUT - dla pakietów wychodzących
FORWARD - dla pakietów maskowanych

 

cel - każda reguła ściany ogniowej określa kryteria dotyczące pakietu i celu .

Jeśli pakiet nie pasuje do danej reguły, to sprawdzana jest następna w danym łańcuchu . Jeśli pakiet pasuje, wtedy następna regułka jest określana przez wartość celu, która przyjmuje następujące wartości :

ACCEPT - należy przepuścić pakiet
DENY - należy pakiet odrzucić
REJECT - działa podobnie, jak DENY wysyłając dodatkowo do nadawcy komunikat zwrotny ICMP informujący go, że pakiet nie został przyjęty
MASQ - jest właściwy tylko dla łańcuchów przekazywanych - forwardingu

 

opcje - może przyjmować następujące wartości :

s - określa źródła, którymi mogą być : nazwa usługi, numer portu, adres IP i maska hosta lub sieci
d - określa miejsce przeznaczenia i ma taką samą postać jak opcja -s
p - dzięki tej opcji możemy wskazać bezpośrednio na interesujący nas port
j - określa cel reguły, który należy spełnić, jeśli pakiet spełnia podane w regule kryteria
i - wskazuje nazwę interfejsu sieciowego, na który będą przychodzić pakiety podlegające weryfikacji w danej regule

 

Na samym początku należy usunąć wszystkie reguły dotyczące filtrowania pakietów wejściowych :

ipchains -F input

Ustawiamy politykę dla wybranych łańcuchów :

ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward DENY

 

Każda nowa reguła będzie tworzona w oparciu o podany schemat :

ipchains [-A/-I] [input/output] -p [protokół] -s [źródło] [nr portu] -d [cel] [nr portu] -j [DENY/ACCEPT] -i [interfejs]

 

Ustawianie reguł zaczynamy od stworzenia doskonałego firewalla, blokującego wszystkie porty dla pakietów przychodzących z zewnątrz na interfejs ppp0 :

ipchains -A input -p tcp -s 0/0 1:65535 -d 192.168.0.1/24 1:65535 -j DENY -i ppp0

 

Dla odblokowania usługi WWW tworzymy nową regułę :

ipchains -I input -p tcp -s 0/0 1024:65535 -d 192.168.0.1/24 WWW -j ACCEPT -i ppp0

 

Dla odblokowania usługi FTP adekwatnie do poprzedniej tworzymy regułę :

ipchains -I input -p tcp -s 0/0 1024:65535 -d 192.168.0.1/24 FTP -j ACCEPT -i ppp0

 

Nasz firewall możemy również wykorzystać do administrowania dostępem do internetu.
Jeśli chcielibyśmy zabronić komputerowi z naszej sieci o adresie 192.168.0.2 dostępu do internetu należy stworzyć regułę w postaci :

ipchains -I input -p tcp -s 192.168.0.2/32 1024:65535 -d 0/0 WWW -j REJECT -i eth0

eth0 - jest interfejsem sieciowym łączącym nasz serwer z siecią prywatną.

 

 

80)  IP - MASQUERADE (maskowanie pakietów)

IP-MASQUERADING jest funkcją sieciową Linuxa będąca w fazie rozwoju, zajmującą się tłumaczeniem adresów sieciowych.
Jądra systemu od wersji 1.3.x mają wbudowaną obsługę maskowania pakietów.

Każdy pakiet ma swój adres docelowy i zwrotny, dzięki temu może on dotrzeć do innego komputera, a ten na podstawie adresu zwrotnego może z kolei wysłać odpowiedź.
Jeśli komputer z sieci wewnętrznej o adresie 192.168.0.3 próbowałby wysłać wiadomość do komputera znajdującego się gdzieś w sieci Internet, to nie otrzyma odpowiedzi z powodu złego adresu zwrotnego. W wysyłanym pakiecie adres zwrotny będzie adresem z klasy C o numerze 192.168.0.3, który to nie jest adresem routowalnym i przepadnie gdzieś w sieci.
Aby nasz komputer otrzymał odpowiedź, należy wskazać jako bramę sieciową serwer z poprawnie zaimplementowanym IP-masqueradingiem, który przechwyci wszystkie pakiety wysyłane przez komputery w sieci wewnętrznej i zmieni ich adres zwrotny na swój własny, legalny numer IP. Pakiet bez problemu dotrze do komputera docelowego, który wyśle odpowiedź z adresem zwrotnym serwera, a serwer po odebraniu pakietu zmieni jego adres zwrotny na adres naszego komputera w sieci wewnętrznej.

 

W katalogu /etc/rc.d/ należy stworzyć skrypt o nazwie rc.forward, w którym umieścimy reguły maskowania pakietów.

W pliku /etc/rc.d/rc.local umieszczamy następujący wpis /etc/rc.d/rc.forward, który spowoduje uruchomienie podczas startu systemu naszego skryptu z regułami maskowania .

 

Uruchomienie funkcji maskowania odbywa się poprzez wywołanie następującego polecenia :

echo "1" > /proc/sys/net/ipv4/ip_forward

 

Reguły maskowania pakietów ustalamy za pomocą programu ipchains z odpowiednimi parametrami :

usuwamy wszystkie reguły maskowania

ipchains -F forward

 

blokujemy możliwość maskowania czegokolwiek

ipchains -P forward DENY

 

Dodajemy nową regułę maskowania, gdzie źródłem może być adres wraz z maską hosta lub sieci, z której chcemy maskować pakiety, a celem w naszym przypadku jest sieć Internet.

ipchains -A forward -s źródło -d cel -j MASQ

 

Aby wszystkie komputery z naszej sieci mogły podlegać forwardingowi, należy w miejscu celu wpisać adres naszej sieci wewnętrznej yyy.yyy.yyy.yyy wraz znumerem odpowiadającym ilości bitów naszej maski - x , czyli :

ipchains -A forward -s yyy.yyy.yyy.yyy/x -d 0.0.0.0/0 MASQ

  

MASKA X PODSIEĆ
255.0.0.0 8 Klasa A
255.255.0.0 16 Klasa B
255.255.255.0 24 Klasa C
255.255.255.255 32 Point-to-point

 

Dla sieci o numerze 192.168.0.0 i masce 255.255.255.0 polecenie ustawiające maskowanie powinno wyglądać następująco:

ipchains -A forward -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQ

 

Jeśli chcielibyśmy, aby w naszej sieci tylko pakiety z komputera o adresie 192.168.0.4 podlegały maskowaniu, należy wydać polecenie :

ipchains -A forward -s 192.168.0.4/32 -d 0.0.0.0/0 -j MASQ

 

GRUPA MEDIA INFORMACYJNE & ADAM NAWARA