pld dok

background image

PLD Linux Distribution

Podr ˛ecznik u˙zytkownika, administratora i twórcy

background image

PLD Linux Distribution: Podr ˛ecznik u˙zytkownika, administratora i twórcy

Podr˛ecznik u ˙zytkownika, administratora systemu i twórcy PLD Linux Distribution Wydanie

Historia zmian
Zmiana $Rev: 5328 $
prawie beta

background image

Spis tre ´sci

I. Informacje podstawowe...................................................................................................7

1. Wprowadzenie..........................................................................................................7

Streszczenie .........................................................................................................7
Konwencje u ˙zyte w tej ksi ˛

a ˙zce .........................................................................7

O tym podr˛eczniku.............................................................................................7
Krótka historia PLD............................................................................................8
Informacje o PLD ................................................................................................9
Oficjalne wersje PLD ........................................................................................11
Model rozwoju PLD Linux Distribution
.......................................................11
Projekty zwi ˛

azane z PLD.................................................................................13

2. Zasoby sieciowe PLD...............................................................................................1

Wa ˙zne adresy ......................................................................................................1

´

Zródła obrazów ISO ...........................................................................................1

´

Zródła pakietów..................................................................................................1

3. Historia powstania naszego logo...........................................................................5

Wst˛ep....................................................................................................................5
Loga du ˙ze
............................................................................................................5
Ikony do umieszczania na stronach WWW....................................................7
Ikony stworzone przez u ˙zytkowników ..........................................................8
Galeria rysunków Karola Kre ´nskiego .............................................................9

II. Instalacja..........................................................................................................................11

4. Instalacja systemu ..................................................................................................11

Minimalne Wymagania ...................................................................................11
Sposoby instalacji.
.............................................................................................11
Upgrade systemu z PLD RA (1.x) ..................................................................12
Instalacja.............................................................................................................13

5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD .31

Wst˛ep..................................................................................................................31
Wymagania
........................................................................................................31
Konfiguracja
......................................................................................................31
Przygotowanie partycji i ich montowanie ....................................................33
Instalacja.............................................................................................................35

6. Instalacja PLD przy u ˙zyciu chroota.....................................................................41

Wst˛ep..................................................................................................................41
Startujemy! - przygotowania
..........................................................................41
Instalacja.............................................................................................................42
Przygotowywanie systemu do samodzielnego uruchomienia..................43

III. Podr˛ecznik u˙zytkownika............................................................................................47

7. Podstawy .................................................................................................................47

Wł ˛

aczanie i wył ˛

aczanie systemu ....................................................................47

Podstawowe operacje na plikach i katalogach.............................................47
Poruszanie si˛e w drzewie katalogów ............................................................48
Data i czas ..........................................................................................................49
Ilo´s´c miejsca na dysku......................................................................................50
Procesy i zasoby
................................................................................................50
Jak sprawdzi´c kto jest zalogowany oprócz nas? ..........................................52
Edycja plików konfiguracyjnych....................................................................53
Podstawowe narz˛edzia kontroli sieci TCP/IP
.............................................53

3

background image

IV. Podr˛ecznik administratora .........................................................................................57

8. Zarz ˛

adzanie pakietami..........................................................................................57

Informacje podstawowe ..................................................................................57
Zarz ˛

adzanie pakietami programem

poldek

................................................60

Program RPM....................................................................................................69

9. Konfiguracja systemu ............................................................................................73

J ˛

adro systemu....................................................................................................73

Initrd ...................................................................................................................75
Boot Loader .......................................................................................................77
PLDconf - Narz˛edzie do konfiguracji systemu ............................................83
Konfiguracja kluczowych plików ..................................................................84
Ustawienia konsoli ...........................................................................................88
Internacjonalizacja systemu PLD ...................................................................89
Myszka pod konsol ˛

a ........................................................................................91

Zegar...................................................................................................................93

10. Administracja........................................................................................................95

Ratowanie systemu ..........................................................................................95
Zarz ˛

adzanie podsystemami i usługami ........................................................96

Zmiana poziomu pracy systemu....................................................................98

11. Konfiguracja sieci ...............................................................................................101

Podstawowa konfiguracja sieci ....................................................................101
Konfiguracja karty sieciowej .........................................................................102
Neostrada+ z modemem USB firmy Sagem ...............................................105
Neostrada+ z modemem USB firmy Alcatel - Thompson........................107
InternetDSL .....................................................................................................110
Rozdzielanie sieci (NAT) ............................................................................... 111
Podział ł ˛

acza w zale ˙zno´sci od serwisów.....................................................112

PPP over SSH - Tunel IPv4 ............................................................................115
VTun - Tunel IPv4 ...........................................................................................120

12. Usługi dost˛epne w PLD ....................................................................................125

CRON - Cykliczne wykonywanie zada ´n ....................................................125
BIND - Serwer Nazw .....................................................................................127
Exim - Transport poczty elektronicznej (MTA) ..........................................135
Postfix - Transport poczty elektronicznej (MTA) .......................................147
Apache - Serwer stron internetowych .........................................................155
PostgreSQL - Baza danych SQL....................................................................164
MySQL - System Zarz ˛

adzania Relacyjnymi Bazami Danych (ang.

RDBMS) ..................................................................................................168

ProFTPD - serwer FTP ...................................................................................174
NFS - Network File System ...........................................................................177
DHCPD - Dynamic Host Configuration Protocol Daemon......................180
CUPS - Popularny system druku dla Uniksa .............................................182
Samba - współpraca z Windows ..................................................................186
Snort - Sieciowy System Wykrywania Włama ´n.........................................188

13. X-Window ...........................................................................................................203

Konfiguracja serwera X-Window .................................................................203
Blackbox - Szybki i lekki zarz ˛

adca okien ....................................................211

Fluxbox - Nast˛epca BlackBoxa......................................................................213

4

background image

V. Tworzenie PLD - Praktyczny poradnik ...................................................................217

14. Mo ˙zliwa droga do zostania szeregowym developerem PLD......................217

Co jest potrzebne ............................................................................................217

´

Zródła wiedzy .................................................................................................217
Przykład budowania ......................................................................................218
Pierwszy spec ..................................................................................................221

15. W krainie CVS - czyli wielki kocioł .................................................................231

Wst˛ep................................................................................................................231
Dodawanie plików do CVS PLD..................................................................233
Aktualizacja plików.
.......................................................................................233
Zatwierdzanie zmian i Distfiles....................................................................234
Odnogi (Branche) i Etykiety (Tag)................................................................235
Zlecenia dla builderów ..................................................................................236
Zako ´nczenie.....................................................................................................237

VI. O podr˛eczniku ..............................................................................................................??

16. O podr˛eczniku ....................................................................................................239

Autorzy dokumentacji PLD ..........................................................................239

17. Licencja i prawa autorskie ................................................................................241

Tłumaczenie Licencji GNU Wolnej Dokumentacji ....................................241

5

background image

6

background image

Rozdział 1. Wprowadzenie

Streszczenie

Dzi˛ekujemy za zainteresowanie si˛e PLD Linux Distribution!

W tym rozdziale przedstawione zostan ˛

a ró ˙zne aspekty dotycz ˛

ace projektu PLD, takie

jak jego historia, cele, model rozwoju, itp.

Konwencje u˙zyte w tej ksi ˛

a˙zce

Aby jak najlepiej zrozumie´c przyswoi´c informacje zawarte w tym podr˛eczniku, war-
to zapozna´c si˛e wpierw z u ˙zytymi konwencjami.

$ komenda

W ten sposób opisywane s ˛

a komendy, które wykona´c mo ˙zemy z uprawnieniami

u ˙zytkownika.

# komenda

A tu natomiast przedstawiona została komenda, któr ˛

a nale ˙zy wykona´c z poziomu

u ˙zytkownika root, czyli administratora.

Zbyt długie linie zrzutów ekranowych, które nie mieszcz ˛

a si˛e w jednej linii, podzie-

lone s ˛

a przy pomocy znaku \. Czyli:

# komenda z_bardzo_ \

długim_parametrem

nale ˙zy zinterpretowa´c jako:

# komenda z_bardzo_długim_parametrem

W dokumentacji dosy´c cz˛esto korzysta si˛e z nast˛epuj ˛

acej konstrukcji:

{$zmienna}

Tak oznaczane s ˛

a miejsca, w których u ˙zytkownik mo ˙ze lub musi samodzielnie doko-

na´c wyboru i wstawi´c w miejsce ci ˛

agu znaków {$zmienna} odpowiedni ˛

a warto´s´c.

7

background image

Rozdział 1. Wprowadzenie

O tym podr ˛eczniku

Celem tego podr˛ecznika jest pomoc w zainstalowaniu PLD Linux Distribution na
Twojej maszynie. Nie jest to i nigdy nie b˛edzie zamiennik dokumentacji systemowej.

Je´sli b˛edzie to Twoja pierwsza instalacja Linuksa, gor ˛

aco zach˛ecamy Ci˛e do przeczy-

tania wpierw tego podr˛ecznika. Nawet je´sli jeste´s do´swiadczonym u ˙zytkownikiem,
warto przestudiowa´c instrukcje dotycz ˛

ace instalacji, aby upewni´c si˛e, ˙ze wszystko

pójdzie gładko.

Oprócz niniejszej dokumentacji pomocy mo ˙zemy szuka´c pomocy w wielu innych
miejscach. Pr˛e ˙znie działaj ˛

a listy dyskusyjne oraz oficjalne kanały IRC (#PLD i #PLDhelp),

na cz˛esto zadawane pytania (FAQ) odpowiedzi mo ˙zna znale´z´c na głównej stronie
WWW.

Je´sli uwa ˙zasz, ˙ze niniejsza dokumentacja jest niepełna, znalazłe´s bł˛edy, lub chciałby´s
do nas doł ˛

aczy´c prosimy o kontakt na list˛e dyskusyjn ˛

a <

pld-doc@pld-linux.org

>

Krótka historia PLD

Wraz ze wzrostem zainteresowania Linuksem w Polsce, rosły naciski na stworzenie
polskiej dystrybucji tego systemu. Niemal wszyscy jej chcieli, a niektórzy nawet mó-
wili, ˙ze ju ˙z takow ˛

a robi ˛

a. Nic jednak z tego nie wynikało. Wreszcie, w lipcu 1998,

zawi ˛

azał si˛e projekt maj ˛

acy na celu stworzenie polskiej dystrybucji Linuxa. Projekt

PLD, czyli Polish(ed) Linux Distribution, był na tyle dobrze zorganizowany, by prze-
trwa´c trudne pocz ˛

atki. Nie obeszło si˛e oczywi´scie bez burzliwych dyskusji na temat

kształtu dystrybucji, doboru oprogramowania jak równie ˙z wersji j ˛

adra, na której pro-

jekt ma by´c rozwijany. W efekcie zdecydowano si˛e prowadzi´c równolegle dwa pro-
jekty. Pierwszy został nazwany PLD-devel i był forpoczt ˛

a dla obecnego PLD-stable.

Prace nad 1.1 PLD (devel) koordynowali przede wszystkim Wojtek ´Slusarczyk, Mar-
cin Korzonek i Arek Mi´skiewicz. Miała to by´c pierwsza dystrybucja Linuxa zgodna z
nowym, promowanym przez OpenGroup, standardem - Unix98. Równolegle druga
grupa, na czele z Tomkiem Kłoczko i Arturem Frysiakiem, pracowała nad podwali-
nami wła´sciwej PLD-stable.

Nieco pó´zniej, przede wszystkim z braku wolnego czasu z prac nad projektem wy-
cofali si˛e Wojtek ´Slusarczyk, Andrzej Nakonieczny oraz Marcin Korzonek. Tomasz
Kłoczko postanowił kontynowa´c prace nad PLD, gromadz ˛

ac wokół siebie coraz to

wi˛eksz ˛

a liczb˛e developerów. Pojawiła si˛e domena pld.org.pl, a wraz z ni ˛

a liczne ad-

resy "funkcjonalne", takie jak ftp.pld.org.pl, www.pld.org.pl czy cvs.pld.org.pl. Ruch
na listach mailingowych stawał si˛e coraz wi˛ekszy, widac było, i ˙z projekt zyskiwał na
popularno´sci.

22 listopada 2002 roku ´swiatło dzienne ujrzała pierwsza stabilna wersja dystrybucji
PLD Linux Distribution 1.0 (Ra). Jeszcze w czasie jej stabilizacji rozpocz˛eły si˛e prace
nad kolejn ˛

a wersj ˛

a.

Twórcy projektu zakładali uniwersalno´s´c PLD, która pozwalałaby na korzystanie z
dystrybucji przez u ˙zytkowników z całego ´swiata, jednak pojawiły si˛e obawy, ˙ze na-
zwa Polish(ed) Linux Distribution odstraszy potencjalnych odbiorców z innych kra-
jów. Postanowiono, ˙ze zmieniona zostanie nazwa projektu. Pozostawiono charak-
terystyczny skrót "PLD" w niezmienionej postaci, zmieniono za´s jego rozwini˛ecie -
nazwa "PLD" stała si˛e rekurencyjnym skrótem od PLD Linux Distribution.

8

background image

Rozdział 1. Wprowadzenie

Informacje o PLD

Podstawowe informacje

PLD-Linux jest dystrybucj ˛

a rozwijan ˛

a głównie w Polsce. Jest to produkt grupy en-

tuzjastów Linuksa chc ˛

acej stworzy´c system operacyjny dopasowany do własnych

potrzeb. Aktualnie rozwojem dystrybucji interesuje si˛e około 200 osób, z po´sród nich
najbardziej aktywna jest grupa 50 deweloperów.

PLD jest jednym z najaktywniejszych projektów Open Source na ´swiecie. Dzi˛eki te-
mu powstała jedna z najwi˛ekszych dystrybucji Linuksa, w trakcie prac nad drug ˛

a

wersj ˛

a systemu (Ac) ilo´s´c dost˛epnych pakietów przekroczyła liczb˛e dziewi˛eciu ty-

si˛ecy.

Najistotniejsze cechy

Ogromna liczba programów podzielona jest na mniejsze pakiety, pozwalaj ˛

ace in-

stalowa´c tylko te elementy systemu, które s ˛

a akurat potrzebne.

Pakiety cz˛esto s ˛

a wst˛epnie skonfigurowane i gotowe do działania, ponadto nakła-

dane s ˛

a na nie istotne łaty.

PLD posiada najlepsz ˛

a obsług˛e przyszło´sciowego protokołu IPv6 z po´sród innych

dystrybucji Linuksa.

W PLD nie s ˛

a faworyzowane ˙zadne z usług czy programów. To czego u ˙zywamy

zale ˙zy tylko od nas.

W systemie umieszczono silnie zmodularyzowane j ˛

adro. Dzi˛eki temu w ogromnej

wi˛ekszo´sci wypadków nie trzeba go kompilowa´c na nowo. Wystarczy załadowa´c
tylko odpowiednie moduły.

PLD zawiera rc-inetd - interfejs do zarz ˛

adzania usługami typu inetd. Pozwala za-

rz ˛

adza´c takimi usługami (np.: telnetd, cvs-pserver) bez znaczenia jakiego typu de-

mon inetd jest u ˙zywany.

Podobn ˛

a koncepcj ˛

a do rc-inetd kierowano si˛e w tworzeniu pakietu rc-boot. Po-

zwala on na łatwe zarz ˛

adzania bootloaderami.

PLD jest systemem przyjaznym dla programisty. Dost˛epne s ˛

a narz˛edzia do two-

rzenia aplikacji w wielu j˛ezykach programowania. Dotyczy wielu "standartowych"
j˛ezyków programowania takich jak C, C++, Perl czy Python. Dost˛epne s ˛

a te ˙z kom-

pilatory do nieco mniej znanych j˛ezyków takich jak SML, Prolog, OCaml jak te ˙z
eksperymentalne kompilatory: Cyclone, Ksi. Dodatkowo mamy wybór wielu na-
rz˛edzi programistycznych i bibliotek.

W dystrybucji u ˙zywane s ˛

a pakiety typu RPM, do zarz ˛

adzania pakietami powstał

program o swojsko brzmi ˛

acej naziwe Poldek, mo ˙zna te ˙z u ˙zywac klasycznego pro-

gramu RPM.

W PLD zastosowano skrypty startowe (rc-skrypty) typu System-V. Pozwoliło to na
maksymalne zautomatyzowanie procesu instalacji usług systemowych.

9

background image

Rozdział 1. Wprowadzenie

Dystrybucja jest przystosowana do obsługi wielu j˛ezyków narodowych, a w tym
j˛ezyka polskiego. Jest to najlepiej przygotowana dystrybucja na potrzeby polskich
u ˙zytkowników.

Zało˙zenia PLD

Rozwojowi PLD Linux Distribution przy´swiecało kilka zało ˙ze ´n, oto niektóre z nich:

u ˙zywanie FHS 2.x jako specyfikacji struktury katalogów

całkowite odej´scie od termcap i libtermcap (w PLD nie ma pakietu z libtermcap i
samego termcapa; ani jeden pakiet nie jest zwiazany z termcapem),

ujednolicenie gospodarki zarz ˛

adzania inet serwisami. W praktyce jest to realizo-

wane poprzez u ˙zywanie tego co oferuje projekt rc-inetd: jest to bardzo prosty me-
chanizm, przy tym o wiele bardziej elastyczny od tego, co mo ˙zna znale´z´c w kon-
kurencyjnych dystrybucjach,

pełne przygotowanie pakietów do automatycznego uaktualnienia. Pakiety z RH
kompletnie nie s ˛

a na to przygotowane. Przygotowanie to wi ˛

a ˙ze si˛e z restartowa-

niem serwisów przy ich uaktualnieniu, odpowiednim przygotowywaniem proce-
dur uaktualnienia w taki sposób, by umo ˙zliwi´c automatyczn ˛

a aktualizacj˛e nawet

przy zmianie plików konfiguracyjnych,

brak nastawienia na u ˙zywanie tylko wybranych aplikacji w danej klasie (np. w´sród
MTA i ró ˙znych innych usług). Zało ˙zenie jest takie, ˙ze w najprostszej wersji istnie-
j ˛

a preferowane pakiety (np. finger daemona), ale w praktyce w systemie ma by´c

to, czego sobie u ˙zytkownik za ˙zyczy (w przypadku fingerów jest to ju ˙z sprawnie
przygotowane; jest jeszcze kilka innych grup takich aplikacji),

u ˙zywanie iproute2 jako podstawowego narz˛edzia do operowania na interfejsach
sieciowych, dzi˛eki czemu np. skrypty startowe z PLD s ˛

a prostsze i krótsze mimo

wiekszej funkcjonalnosci w stosunku do swoich odpowiedników z RH; inn ˛

a za-

let ˛

a jest wsteczna kompatybillno´s´c z opisem interfejsów sieciowych z tym, co jest

stosowane w initscripts z RH; kolejn ˛

a cech ˛

a skryptów startowych jest to, ˙ze -- w

zale ˙znosci od preferencji u ˙zytkownika -- mog ˛

a one wy´swietla´c wszystkie komuni-

katy po polsku,

brak nało ˙zonych z góry ogranicze ´n co do zestawu pakietów, jakie mog ˛

a by´c w

dystrybucji. W praktyce oznacza to, ˙ze u ˙zytkownik ma do dyspozycji wszystko,
co udało si˛e nam zebra´c, Je ˙zeli co´s zostanie opracowane i przystosowane do tego,

˙zeby mogło współgra´c z reszt ˛

a pakietów, to znaczy, ˙ze komu´s było potrzebne, wi˛ec

mo ˙ze komu´s przyda´c si˛e w przyszło´sci,

przystosowanie do łatwego przej´scia systemu na alternatywne metody autoryza-
cji (i -- w zale ˙zno´sci od potrzeb -- szyfrowania) komunikacji po sieci, jak PAM, czy
GSAPI, TSL/SSL... Jest bardzo prawdopodobne, ˙ze ju ˙z w niedługiej perspektywie
du ˙z ˛

a rol˛e zacznie tu odgrywa´c SASL. W praktyce owo łatwe dostosowywanie do

np. kerberyzacji systemu jest realizowane tak ˙ze z u ˙zyciem rc-inetd, która to plat-
forma ułatwia znakomicie podmian˛e róznych serwisów na wersje skerberyzowa-
ne czy te ˙z wykorzystuj ˛

ace inne mechanizmy jak np. socks5 (tutaj jeszcze jest mało

zrobione, ale furtka jest szeroko i jednoznacznie otwarta),

10

background image

Rozdział 1. Wprowadzenie

uzupełnianie opisów pakietów i dokumentacji w ró ˙znych j˛ezykach. W du ˙zej cz˛e-

´sci robi si˛e to niejako przy okazji. U ˙zytkownik mo ˙ze sobie skonfigurowa´c i za-

instalowa´c wybrane oprogramowanie ze wsparciem dla preferowanego zestawu
j˛ezyków, np.: angielski i niemiecki czy te ˙z angielski i polski (zasoby dla innych j˛e-
zyków zostan ˛

a pomini˛ete). Tak unikaln ˛

a mo ˙zliwo´s´c konfiguracji osi ˛

agamy dzi˛eki

konsekwentnemu oznaczaniu zasobów narodowych makrem %lang() w poszcze-
gólnych pakietach.

maksymalna automatyzacja ró ˙znych powtarzalnych czynno´sci (dotyczy to zarów-
no metodologii bie ˙z ˛

acej pracy jak i zawarto´sci pakietów).

Wiele zało ˙ze ´n wynika bezpo´srednio z procedur przygotowywania pakietów, jak:

kompresowanie wszystkich plików dokumentacji z u ˙zyciem gzip (bzip2 nic w
praktyce tu nie wnosi, a dostarcza tylko nowych kłopotów, czego do´swiadczaj ˛

a

od czasu do czasu u ˙zytkownicy Mandrake),

separacja bibliotek statycznych w osobne podpakiety *-static (nie ka ˙zdy tego po-
trzebuje), a nagłówków do *-devel.

Oficjalne wersje PLD

W PLD oficjalnym wersjom dystrybucji nadawane numery oraz dwuliterowe ozna-
czenia kodowe, które pochodz ˛

a od skrótowych oznacze ´n pierwiastków. Pierwszej

wersji PLD nadano oznaczenie Ra (Rad), za´s kolejne odpowiadaj ˛

a nazwom pier-

wiastków poukładanych zgodnie z kolejno´sci ˛

a okre´slon ˛

a przez ich liczb˛e atomow ˛

a.

Zazwyczaj jednych i drugich oznacze ´n mo ˙zna u ˙zywa´c zamiennie, jednak w niektó-
rych wypadkach u ˙zywa si˛e jedynie oznacze ´n cyfrowych, tak oznacza si˛e uaktualnio-
ne wersje dystrybucji. Przykładowo nazwa Ra odnosi si˛e zarówno do PLD 1.0 jak i
jej zaktualizowanej wersji - PLD 1.1.

Tabela 1-1.

Wersja PLD

Kod PLD

Pierwiastek

Data wydania

1.0

Ra

Rad (88)

22.11.2002

2.0

Ac

Aktyn (89)

nie ustalono

3.0

Th

Tor (90)

nie ustalono

Model rozwoju PLD Linux Distribution

Rozwój PLD Linux Distribution przebiega w sposób otwarty i elastyczny. Efekt ko ´n-
cowy to wynik nakładu wielu osób, nie tylko developerów posiadaj ˛

acych prawo

zapisu do repozytorium CVS (o którym poni ˙zej), ale tak ˙ze u ˙zytkowników zgłasza-

11

background image

Rozdział 1. Wprowadzenie

j ˛

acych informacje o bł˛edach lub nadsyłaj ˛

acych poprawki lub propozycje zmian. Z

ch˛eci ˛

a przyjmiemy nowych developerów, a osoby chc ˛

ace by´c bardziej zwi ˛

azane z

projektem powinny zapisac si˛e na list˛e dyskusyjn ˛

a developerów pld-devel-pl@pld-

linux.org.

Informacje o PLD i sposobie jego rozwoju:

Repozytorium CVS

´

Zródła PLD Linux Distribution trzymane s ˛

a w repozytorium CVS (Concurrent Ver-

sions System, http://www.cyclic.com/CVS/index.html), wolnodost˛epnym syste-
mie kontroli wersji dostarczanym wraz z nasz ˛

a dystrybucj ˛

a. Serwer CVS PLD Li-

nux Distribution (http://cvs.pld-linux.org/) jest dost˛epny dla wszystkich w trybie
tylko dla odczytu (Read Only), oraz dodatkowo w trybie do odczytu/zapisu (Re-
ad/Write) dla developerów. Repozytorium zostało podzielone na kilka modułów
w celu ułatwienia pracy osobom do ´n commituj ˛

acym (okre´slenie commit pochodzi

z podr˛ecznika systemowego cvs).

Serwer DistFiles

W zamierzchłych czasach wszystkie pliki (a wi˛ec kody ´zródłowe, łatki (patche),
poprawki, itp) potrzebne do zbudowania pakietów trzymane były w repozyto-
rium. Niestety CVS nie został zaprojektowany do przechowywania plików binar-
nych (a archiwum tar.gz takim jest) i próba zmuszenia go do przechowywania ta-
kowych dostarczała ró ˙znych problemów. A to osoba posiadaj ˛

ace stosunkowo wol-

ne ł ˛

acze zacz˛eła wrzuca´c kilkudziesi˛ecio megabajtowy plik, skutecznie blokuj ˛

ac

mo ˙zliwo´s´c pracy innym developerom na kilka godzin. Uci ˛

a ˙zliwe były te ˙z pozo-

staj ˛

ace tzw. ’locki’, czyli blokady na modułach repozytorium (przede wszystkim

SOURCES/). Rozwi ˛

azaniem tych problemów było wprowadzenie w maju 2003 ro-

ku serwera DistFiles, do którego przeniesiono wi˛ekszo´s´c plików binarnych z CVS.

Core Developers Group

Gdyby PLD Linux Distribution było firm ˛

a, Core Developers Group najtrafniej mo ˙z-

naby okre´sli´c jako Rad˛e Nadzorcz ˛

a. Jej celem jest podejmowanie w sposób de-

mokratyczny krytycznych dla dystrybucji decyzji oraz rozwi ˛

azywanie konfliktów,

których nie dało si˛e za ˙zegna´c w inny sposób. W skład Grupy wchodz ˛

a develope-

rzy aktywnie udzielaj ˛

acy si˛e w projekcie.

Lista dyskusyjna pld-devel-pl@pld-linux.org

Na li´scie tej prowadzone s ˛

a dyskusje na temat bie ˙z ˛

acych prac nad dystrybucj ˛

a,

jak równie ˙z ustalane s ˛

a plany na przyszło´s´c. Je´sli nie posiadasz prawa zapisu do

repozytorium, a chciałby´s podzieli´c si˛e efektami swych prac z innymi, lista ta jest
najlepszym miejscem na poinformowanie o tym fakcie.

Buildery

Mianem builderów okre´slane s ˛

a specjalnie przygotowane ´srodowiska (cz˛esto na

dedykowanych maszynach), na których budowane s ˛

a pakiety, które pó´zniej zosta-

12

background image

Rozdział 1. Wprowadzenie

n ˛

a umieszczone na serwerach FTP projektu. Ka ˙zda z linii dystrybucji ma swoje

oddzielne buildery, stworzone z pakietów dla niej przeznaczonych.

Nie wszyscy developerzy maj ˛

a prawo do puszczania zlece ´n na buildery, czyli roz-

kazów zbudowania poszczególnych pakietów - przywiliej ten ma ledwie garstka
osób, zaznajomionych z automatyk ˛

a oraz znaj ˛

acych potrzeby danej dystrybucji.

Rzadko kiedy zachodzi potrzeba bezpo´sredniego grzebania w strukturze danego

´srodowiska - codzienna praca opiera si˛e na wysyłaniu odpowiednio przygotowa-

nych maili, podpisanych kluczem PGP osoby uprawnionej.

Nest

Kolejnym istotnym elementem rozwoju projektu jest Nest. Jak samo rozwini˛ecie
skrótu (Never Ending STory) wskazuje, prace nad t ˛

a lini ˛

a nigdy si˛e nia zako ´n-

cz ˛

a. Jest to niejako "materialne" odzwierciedlenie bie ˙z ˛

acych prac w CVS projektu -

wszelkie zmiany w rezpozytorium powoduj ˛

a przebudowanie danego pakietu na

builderach Nest. Oczywi´scie, mo ˙ze to doprowadzi´c do sytuacji, gdy ´srodowisko
to b˛edzie niespójne, jednak w przypadku tej "linii" jest to zjawisko całkowicie nor-
malne i akceptowalne, dlatego osoby chc ˛

ace trzyma´c r˛ek˛e na pulsie powinny si˛e

dwa razy zastanowi´c, gdy ˙z przej´scie na Nesta mo ˙ze (ale nie musi) doprowadzi´c do
sytuacji, gdy po kolejnym upgradzie pakietów system przestanie funkcjonowa´c.

Projekty zwi ˛

azane z PLD

Rescue CD

Jest to niewielka dystrybucja startuj ˛

aca z płyty CD, bez konieczno´sci instalacji

na twardym dysku. Zawiera zestaw wyspecjalizowanych narz˛edzi pomocnych w
przypadku usuwania awarii systemu. Rescue CD oparto o j ˛

adro PLD i wyposa ˙zo-

no w zestaw najbardziej niezb˛ednych programów, dzi˛eki czemu udało si˛e uzyska´c
niewielkie rozmiary dystrybucji. Pozwala to załadowanie cało´sci do pami˛eci ope-
racyjnej, a nast˛epnie a wyj˛ecie płyty CD z czytnika. Lista dost˛epnych programów
jest umieszczona na domowej stronie WWW projektu.

PLD Live CD

Projekt maj ˛

acy na celu stworzenie kompletnej dystrybucji Linuksa startuj ˛

acej z pły-

ty CD, zawiera znaczn ˛

a ilo´s´c narz˛edzi i programów u ˙zytkowych. PLD Live jest

przygotowane dla zwykłych u ˙zytkowników chc ˛

acych bli ˙zej pozna´c PLD, zawiera

system X Window i liczne programy u ˙zytkowe. Z zało ˙zenia w PLD Live dokony-
wano jak najmniej zmian w stosunku do bazowej dystrybucji - PLD, ta cecha, oraz
mo ˙zliwo´s´c instalacji cało´sci na dysku twardym, daje nam gotowe, w pełni skonfi-
gurowane PLD.

13

background image

Rozdział 1. Wprowadzenie

NEST (Never Ending STory)

U ˙zytkownicy mog ˛

a si˛e zetkn ˛

a´c tak ˙ze z tworem o nazwie NEST. Jego nazwa po

rozwini˛eciu jest dokładnym odzwierciedleniem jego funkcji. Jest robocz ˛

a, automa-

tycznie tworzon ˛

a "dystrybucj ˛

a" z najnowszych dost˛epnych pakietów. Pakiety te

nie przeszły okresu testowania, a wi˛ec u ˙zywanie takiej dystrybucji jest praktycz-
nie niemo ˙zliwe.

DC (Devil’s Compilation)

Po wydaniu stabilnej wersji Ra, u ˙zytkownicy chcieli mie´c dost˛ep do nowych wer-
sji programów, prace nad now ˛

a wersj ˛

a dystrybucji jeszcze nie ruszyły, za´s NEST

nie nadawał si˛e do u ˙zytku. Kilku deweloperów PLD postanowiło stworzy´c co´s co
zapełni t˛e luk˛e - tak oto powstało DC. Mimo ˙ze Devil’s Compilation było odr˛ebn ˛

a

inicjatyw ˛

a, to znalazło grono zainteresowanych z po´sród u ˙zytkowników PLD. Po

rozpocz˛eciu prac nad PLD 2.0 projekt DC przestał by´c potrzebny i został zaniecha-
ny.

14

background image

Rozdział 2. Zasoby sieciowe PLD

Wa˙zne adresy

Strona główna - http://pld-linux.org

1

Dokumentacja - http://pl.docs.pld-linux.org

Listy dyskusyjne - http://lists.pld-linux.org

3

Cz˛e´sciowe archiwum list dyskusyjnych - http://www.mail-archive.com/?hunt=pld

Serwer IRC (FreeNode) http://irc.freenode.net

Serwer IRC (IRCNet) http://ircnet.org

Serwer PLDNet: irc.pld-linux.org

Istniej ˛

ace kanały:

#pld - kanał przeznaczony dla Developerów.

#pldhelp - kanał u ˙zytkowników PLD

#pldlive - kanał u ˙zytkowników LiveCD

Kanały w powy ˙zszych sieciach s ˛

a poł ˛

aczone za pomoc ˛

a specjalnego bota. Przy-

datny w takich przypadkach mo ˙ze by´c skrypt do programu irssi znajduj ˛

acy si˛e

na stronie http://vorlon.icpnet.pl/~agaran/forwardfix.pl lub w zasobach pold-
ka (poldek -i irssi-script-forwardfix), który ma zadanie przekazywa´c wiadomo´sci
mi˛edzy sieciami.

System zgłaszania bł˛edów - http://bugs.pld-linux.org

8

Rescue CD - http://rescuecd.pld-linux.org

9

PLD Live CD - http://livecd.pld-linux.org

10

´

Zródła obrazów ISO

Obrazy ISO gotowe do nagrania na płyty CD

TASK, Gda ´nsk, Polska - ftp://ftp.iso.pld-linux.org

1

background image

Rozdział 2. Zasoby sieciowe PLD

´

Zródła pakietów

PLD mo ˙zemy zainstalowa´c z sieci za pomoc ˛

a protokołu FTP, HTTP lub RSYNC. Pa-

kiety mo ˙zemy pobiera´c z głównego serwera PLD lub z jednego z wielu lustrzanych.

FTP

Serwer podstawowy

ICM, Uniwersytet Warszawski, Polska - ftp://ftp.pld-linux.org/

Serwery lustrzane

SunSITE Polska, Uniwersytet Warszawski, Polska - ftp://ftp.icm.edu.pl/pub/Linux/distributions/pld/

WSISiZ, Warszawa, Polska - ftp://ftp.wsisiz.edu.pl/pub/Linux/PLD/

Politechnika Wrocławska, Polska - ftp://ftp.pwr.wroc.pl/pld/

TASK, Gda ´nsk, Polska - ftp://ftp.task.gda.pl/pub/linux/PLD/

Pro Futuro, Lublin, Polska (cz˛e´sciowy mirror!) - ftp://ftp.futuro.pl/pub/distributions/PLD/

MIT, Boston, USA - ftp://ftp.rpmfind.net/linux/PLD/current/

Ibiblio, Chapell Hill, NC, USA - ftp://ftp.ibiblio.org/pub/Linux/distributions/pld/

INRIA Rhone-Alpes, Montbonnot, Francja - ftp://fr.rpmfind.net/linux/PLD/current/

Creatis/CISM, Lyon, Francja - ftp://fr2.rpmfind.net/linux/PLD/

Politechnika Wiede ´nska, Austria - ftp://gd.tuwien.ac.at/linux/PLD/

HTTP

Serwer podstawowy

ICM, Uniwersytet Warszawski, Polska - http://ftp.pld-linux.org/

Serwery lustrzane

Ibiblio, Chapell Hill, NC, USA - http://ftp.ibiblio.org/pub/Linux/distributions/pld/

Politechnika Wiede ´nska, Austria - http://gd.tuwien.ac.at/linux/PLD/

2

background image

Rozdział 2. Zasoby sieciowe PLD

RSYNC

Osoby zainteresowane udost˛epnianiem serwera lustrzanego przy pomocy protokołu
RSYNC proszone s ˛

a o kontakt z nami w celu uzyskania szczegółowych informacji:

<

feedback@pld-linux.org

>

Przypisy

1. http://pld-linux.org/

2. http://pl.docs.pld-linux.org

3. http://lists.pld-linux.org/

4. http://www.mail-archive.com/?hunt=pld

5. http://irc.freenode.net

6. http://ircnet.org

7. http://vorlon.icpnet.pl/~agaran/forwardfix.pl

8. http://bugs.pld-linux.org/

9. http://rescuecd.pld-linux.org/

10. http://livecd.pld-linux.org/

11. ftp://ftp.iso.pld-linux.org

12. ftp://ftp.pld-linux.org/

13. ftp://ftp.icm.edu.pl/pub/Linux/distributions/pld/

14. ftp://ftp.wsisiz.edu.pl/pub/Linux/PLD/

15. ftp://ftp.pwr.wroc.pl/pld/

16. ftp://ftp.task.gda.pl/pub/linux/PLD/

17. ftp://ftp.futuro.pl/pub/distributions/PLD/

18. ftp://ftp.rpmfind.net/linux/PLD/current/

19. ftp://ftp.ibiblio.org/pub/Linux/distributions/pld/

20. ftp://fr.rpmfind.net/linux/PLD/current/

21. ftp://fr2.rpmfind.net/linux/PLD/

22. ftp://gd.tuwien.ac.at/linux/PLD/

23. http://ftp.pld-linux.org/

24. http://ftp.ibiblio.org/pub/Linux/distributions/pld/

25. http://gd.tuwien.ac.at/linux/PLD/

3

background image

Rozdział 2. Zasoby sieciowe PLD

4

background image

Rozdział 3. Historia powstania naszego logo

Wst ˛ep

Pomysł na nasze logo zrodził si˛e w głowie Agnieszki Sloty. Projekt graficzny został
stworzony przez Marcina Mierzejewskiego (Kevin) i Ma´cka Zieli ´nskiego.

Loga du˙ze

• Mo ˙ze by´c u ˙zywane tylko wtedy, gdy:

—produkt z logiem jest u ˙zywany zgodnie z udokumentowanymi na www.pld-

linux.org

1

zasadami (na przykład oficjalne płyty CD)

—uzyskaj ˛

a aprobat˛e PLD Linuksa do u ˙zywania loga w okre´slonych celach

• Cz˛e´s´c całkowitego produktu uznana jest oficjalnie za nale ˙z ˛

ac ˛

a do PLD (tak jak jest

to opisane w punkcie pierwszym) i je´sli posiada wyra´znie zaznaczone informacje,

˙ze tylko ta cze´s´c została zatwierdzona

• Zastrzegamy sobie prawo do uniewa ˙znienia i modyfikacji licencji dla danego pro-

duktu

Pozwolenie na u ˙zywanie oficjalnego loga zostało przyznane dla wszelkiego typu
odzie ˙zy (t-shirty, czapki, itd) ale pod warunkiem, ˙ze s ˛

a one wykonywane przez de-

veloperów PLD i nie s ˛

a sprzedawane dla zysku.

Wyja´snienie: Licencja "zapo ˙zyczona" z Debiana.

5

background image

Rozdział 3. Historia powstania naszego logo

Rysunek 3-1. Logo główne

6

background image

Rozdział 3. Historia powstania naszego logo

Rysunek 3-2. Logo główne z cieniowaniem

Ikony do umieszczania na stronach WWW

Powered by PLD Linux

To logo i jego zmodyfikowane wersje mog ˛

a by´c zamieszczane dla podre´slnenia po-

parcia dla projektu, lecz nie oznacza ono, ˙ze dany produkt jest cz˛esci ˛

a projektu.

Przypomnienie: docenimy je´sli dodasz do obrazka link wskazuj ˛

acy na www.pld-

linux.org

2

i umie´scisz go na swojej stronie.

Rysunek 3-3. Ikona na www 1

7

background image

Rozdział 3. Historia powstania naszego logo

Rysunek 3-4. Ikona na www 2

Rysunek 3-5. Ikona na www 3

Rysunek 3-6. Ikona na www 4

Rysunek 3-7. Ikona na www 5

Rysunek 3-8. Ikona na www 6

Ikony stworzone przez u˙zytkowników

To logo i jego zmodyfikowane wersje mog ˛

a by´c zamieszczane dla podkre´slenia po-

parcia dla projektu, lecz nie oznacza ono, ˙ze dany produkt jest cz˛esci ˛

a projektu.

Przypomnienie: docenimy je´sli dodasz do obrazka link wskazuj ˛

acy na www.pld-linux.org

3

i umie´scisz go na swojej stronie.

8

background image

Rozdział 3. Historia powstania naszego logo

Rysunek 3-9. Ikona stworzona przez "muche"

Rysunek 3-10. Ikona stworzona przez Łukasza "Baseciq" Mozera

Galeria rysunków Karola Kre ´

nskiego

Pod tym adresem http://www.inf.sgsp.edu.pl/pub/MALUNKI/PLD/

4

Karol Kre ´n-

ski "Mimooh" umie´scił spor ˛

a galeri˛e obrazków zwi ˛

azanych z PLD Linux Distribution

Przypisy

1. http://www.pld-linux.org

2. http://www.pld-linux.org

3. http://www.pld-linux.org

4. http://www.inf.sgsp.edu.pl/pub/MALUNKI/PLD/

9

background image

Rozdział 3. Historia powstania naszego logo

10

background image

Rozdział 4. Instalacja systemu

Ten rozdział prezentuje instalacj˛e systemu.

Minimalne Wymagania

W przypadku architektury ix86 instalacja PLD wymaga procesora minimum klasy
386, przynajmniej 16 MB pami˛eci RAM (ze swapem przynajmniej 32MB) oraz 50MB
wolnego miejsca na dysku twardym.

Sposoby instalacji

PLD mo ˙zna zainstalowa´c na dwa sposoby. Pierwszy to uruchomienie instalatora z
dyskietki/płytki i instalacja z sieci, drugi to instalacja z lokalnego no´snika - dysk,
CD-ROM.

Instalacja z sieci

Je ˙zeli masz wystarczaj ˛

aco szybkie ł ˛

acze mo ˙zesz zainstalowa´c system z sieci. W tym

przypadku nale ˙zy zaopatrzy´c si˛e w dyskietk˛e instalacyjn ˛

a (bootdisk_net.iso).

Mo ˙zna j ˛

a pobra´c z ftp.pld-linux.org/dists/ac/PLD/{$arch}/PLD/images/ ({$arch}

oznacza architektur˛e procesora). Dost˛epne s ˛

a obrazy dyskietek dla nast˛epuj ˛

acych ar-

chitektur: i386, i586 , i686 oraz athlon.

W procesie instalacji mo ˙zemy wybra´c pobieranie pakietów via ftp, http lub nfs.

Instalacja z płyty CD-ROM

Obrazy płyt znajduj ˛

a si˛e pod adresem ftp://ftp.pld-linux.org/iso/ac/{$arch}/ , mo-

˙zesz je pobra´c tak ˙ze z lokalnego mirrora. Je´sli chcesz przeprowadzi´c pełn ˛

a instalacj˛e

musisz pobra´c wszystkie płytki, do instalacji tylko podstawowych pakietów potrzeb-
na b˛edzie tylko płytka -base.iso.

Oprócz podstawowych płytek dost˛epne s ˛

a tak ˙ze płytki miniiso, zawieraj ˛

a tylko pod-

stawowy system. Jest to dobre rozwi ˛

azanie, je ˙zeli chcemy z jaki´s powodów zainsta-

lowa´c "goły" system a pó´zniej doinstalowa´c reszt˛e pakietów np. z sieci.

Instalacja z dysku twardego

Istnieje mo ˙zliwo´s´c instalacji z lokalnego dysku twardego. Aby móc zainstalowa´c sys-
tem na dysku scsi nale ˙zy zaopatrzy´c si˛e w

bootdisk_scsi.iso

.

Dodatkowe informacje

W przypadku korzystania z płyty cd, nale ˙zy ustawi´c w biosie aby bootował system
z cdromu.

11

background image

Rozdział 4. Instalacja systemu

Pobrane z internetu dyskietki nagrywamy poleceniem

# dd if=bootdisk.iso of=/dev/fd0

lub przy pomocy programu rawrite.exe pod systemem Windows/DOS.

Upgrade systemu z PLD RA (1.x)

Gdy mamy zainstalowane ju ˙z na dysku PLD 1.x, aby przej´s´c do 2.0 (AC) nie musimy
od nowa instalowa´c całego systemu. Mo ˙zemy posłu ˙zy´c si˛e skryptem

ra2ac

. Pakiety

z tego skryptu standardowo pobierane s ˛

a z ftp. Czynno´sci ˛

a któr ˛

a musimy wykona´c

zanim posłu ˙zymy si˛e skryptem to aktualizacja kernela do wersji 2.4.x. Gotowe pa-
kiety mo ˙zemy pobra´c z dwóch ´zródeł w zale ˙zno´sci od architektury.

Dla architektur: i686 oraz ppc: ftp://ftp.pld-linux.org/dists/ra/updates/2.4/

Dla architektur: i386, i586, i686: ftp://atos.wmid.amu.edu.pl/pub/pld/ra-24/

Cała aktualizacja systemu sprowadzi si˛e do uruchomienia skryptu i r˛ecznej rekonfi-
guracji nowych wersji usług.

Nale ˙zy pami˛eta´c, ˙ze AC jest na kernelu 2.6, lub 2.4 do wyboru, w tych kernelach
nie ma ipchains-ów, zamiast tego jest narz˛edzie nazywaj ˛

ace si˛e iptables. Pomimo

i ˙z słu ˙zy do tego samego, regułki maj ˛

a inn ˛

a składnie. W kernelach 2.4 i 2.6 niektóre

moduły urz ˛

adze ´n inaczej si˛e nazywaj ˛

a, wi˛ec na to te ˙z nale ˙zy by´c przygotowanym.

Skrypt jest przeznaczony dla ludzi, którzy wiedz ˛

a co robi ˛

a i maj ˛

a ogólne poj˛ecie o

linuksie, je ˙zeli jeste´s pocz ˛

atkuj ˛

acym u ˙zytkownikiem PLD, to lepsz ˛

a decyzj ˛

a b˛edzie

od nowa zainstalowanie systemu.

Pierwszym krokiem powinno by´c zrobienie kopii zapasowej plików konfiguracyj-
nych - najlepiej przekopiowa´c gdzie´s cały katalog

/etc

, je ˙zeli masz np. postgresa, to

wa ˙zne jest aby´s zrzucił gdzie´s bazy. O innych wa ˙znych usługach i zmianach w kon-
figuracjach powinni´smy poczyta´c wcze´sniej. Wiele nowszych pakietów, stare pliki
konfiguracyjne przekopiuje do plików z rozszerzeniem *.old

Zainstalowanego na komputerze kde lub gnome najlepiej jest usun ˛

a´c (ł ˛

acznie z kata-

logami i plikami zaczynaj ˛

acymi si˛e od

.kde

i

.gnome

w katalogach domowych u ˙zyt-

kowników) - gdy ˙z zmiany s ˛

a bardzo du ˙ze i praca ze starymi ustawieniami powoduje

cz˛esto wadliw ˛

a prace. Generalnie wa ˙zne jest aby aktualizowa´c jak najmniejsz ˛

a liczb˛e

pakietów, wtedy wszystko powinno pój´s´c w miar˛e gładko. Reszt˛e pakietów mo ˙zna
pó´zniej r˛ecznie doinstalowa´c po aktualizacji.

Teraz pobieramy z cvsu skrypt

ra2ac

poleceniem:

# cvs -d :pserver:cvs@cvs.pld-linux.org:/cvsroot get raac-converter
cvs server: Updating raac-converter
U raac-converter/ChangeLog
U raac-converter/TODO
U raac-converter/ra2ac

Lub korzystamy z adresu www

3

Nast˛epnie uruchamiamy ra2ac:

12

background image

Rozdział 4. Instalacja systemu

# sh raac-converter/ra2ac

Czekamy a ˙z sko ´nczy si˛e instalowanie pakietów, na przewijaj ˛

ace si˛e niespełnione za-

le ˙zno´sci i bł˛edy nie zwa ˙zamy :)

I na samym ko ´ncu najbardziej nieprzyjemna cz˛e´s´c aktualizacji - konfiguracja. Nale ˙zy
teraz wi˛ekszo´s´c usług jeszcze raz przekonfigurowa´c, cz˛e´s´c usług b˛edzie potrzebo-
wała tylko przekopiowania konfigu z Ra, jednak inne (np. exim, postfix) wymagaj ˛

a

od administratora edycji nowych plików konfiguracyjnych. Wa ˙zne jest ˙zeby poczy-
ta´c w dokumentacji o zmianach w plikach konfiguracyjnych mi˛edzy wersjami które
mieli´smy w RA, a wersjami wyst˛epuj ˛

acymi teraz po sko ´nczeniu działania skryptu.

Instalacja

Wst ˛ep

Je ˙zeli pierwszy raz instalujesz linuksa, lub jeste´s bardzo pocz ˛

atkuj ˛

acym u ˙zytkowni-

kiem warto aby´s wiedział kilka rzeczy.

Pierwsz ˛

a jest sposób poruszania si˛e po instalatorze. Do przesuwania/przewijania

tekstu b ˛

ad´z opcji u ˙zywasz strzałek na klawiaturze. Akceptujesz klawiszem ENTER.

Klawiszem TAB poruszasz si˛e pomi˛edzy opcjami instalatora.

W linuksie dyski twarde s ˛

a widziane nieco inaczej ni ˙z w systemach DOS i Windows.

Podobnie jak w innych systemach uniksowych obowi ˛

azuje tutaj zasada "everything

is a file", czyli wszystko jest plikiem. Tak wi˛ec dysk to urz ˛

adzenie np.

/dev/hda1

to

dysk IDE, gdzie "a" oznacza dysk primary master, (b - primary slave, c - secondary
master itd. ...) , a "1" oznacza pierwsz ˛

a partycj˛e (podstawow ˛

a). W linuksie mog ˛

a by´c

4 partycje podstawowe. Je ˙zeli tworzymy partycj˛e rozszerzon ˛

a a na niej dyski logicz-

ne, partycj ˛

a rozszerzon ˛

a b˛edzie /dev/hda4 a dyski b˛ed ˛

a pocz ˛

awszy od /dev/hda5

(identycznie na hdb, hdc ... ). To samo tyczy si˛e cdromu, tylko CD-ROM widziany
jest jako np /dev/hdc (bo na cd nie ma jak zrobi´c partycji:)). Je ˙zeli natomiast ma-
my urz ˛

adzenia scsi, to sprawa wygl ˛

ada niemal identycznie, dyski nazywaj ˛

a si˛e np.

/dev/sda1

(pierwsza partycja pierwszego dysku SCSI). Oczywi´scie pierwsza stacja

dyskietek to

/dev/fd0

.

Zaopatrujemy si˛e w płytk˛e lub dyskietk˛e i bootujemy z niej system.

Zaczynamy

Widz ˛

ac standardowy prompt naciskamy ENTER i czekamy a ˙z uruchomi si˛e instala-

tor. Wybieramy j˛ezyk - w naszym przypadku polski. Przeczytawszy krótkie wpro-
wadzenie jeste´smy w instalatorze.

13

background image

Rozdział 4. Instalacja systemu

Rysunek 4-1. Jeste´smy w instalatorze

Teraz pojawiło nam si˛e menu, w którym mamy do wyboru sposoby instalacji. Je ˙zeli
posiadasz wi˛eksz ˛

a ni ˙z podstawow ˛

a wiedz˛e nt. linuksa mo ˙zesz wybra´c "Standartowe

UI", gdzie wi˛ekszo´s´c opcji umieszczona jest na jednym przejrzystym ekranie. Tak-

˙ze kolejne opcje pozwol ˛

a ustawi´c partycje, wybra´c pakiety, prekonfigurowa´c system

oraz ustawic bootmanagera. Do edycji partycji mamy do wyboru program fdisk lub
parted

.

My wybieramy jednak opcj˛e "Automagiczny Instalator", który sam przeprowadzi
nas gładko przez proces instalacji.

´

Zródło

Instalacja z sieci

Doszli´smy do momentu gdzie musimy ustawi´c parametry ´zródła, sk ˛

ad b˛edzie in-

stalował si˛e system. Je ˙zeli korzystamy z bootkietek musimy dobra´c odpowiedni ˛

a w

stosunku do ´zródła z którego b˛edziemy pobierali pakiety.

14

background image

Rozdział 4. Instalacja systemu

Rysunek 4-2. Wybór ´zródła

Powy ˙zej widzimy ekran wyboru ´zródła ,ja wybrałem instalacj˛e z sieci, jednak insta-
lacja z płyty cd, dysku twardego czy nfs-u nie b˛edzie znacz ˛

aco si˛e ró ˙zniła.

Rysunek 4-3. Instalujemy z ftp

Nast˛epnie wybieram serwer ftp/http z którego chc˛e instalowa´c system, oraz ´scie ˙zk˛e
do ´zródeł. Je ˙zeli masz w pobli ˙zu jaki´s mirror pld mo ˙zesz skorzysta´c z niego, zamiast
oficjalnego serwera.

Kolejne dwa ekrany to konfiguracja karty oraz poł ˛

aczenia sieciowego. Wybrane pa-

rametry zale ˙z ˛

a od posiadanego sprz˛etu i topologii sieci, wiec nie ma co nad tym si˛e

15

background image

Rozdział 4. Instalacja systemu

rozwodzi´c.

Instalacja z cdromu

Je ˙zeli instalujesz system z płytek musisz zaopatrzy´c si˛e albo w

miniiso

, albo przy-

najmniej w pierwsz ˛

a (base) płytk˛e.

Rysunek 4-4. ´

Zródło - cdrom

W menu wyboru ´zródła wybieramy cdrom. Nie jest wa ˙zne czy instalujemy cały sys-
tem z płytek, czy tylko miniiso.

16

background image

Rozdział 4. Instalacja systemu

Rysunek 4-5. Wybór urz ˛

adzenia

Teraz mo ˙zemy wybra´c urz ˛

adzenie, które słu ˙zy w naszym systemie jako cdrom. Sys-

tem powinien znale´z´c i zaznaczy´c istniej ˛

acy w systemie nap˛ed, jednak je ˙zeli mamy

wi˛ecej ni ˙z jeden to tutaj nale ˙zy zaznaczy´c w którym znajduje si˛e płytka instalacyjna.
Mo ˙zesz tak ˙ze ustawi´c katalog w którym znajduj ˛

a si˛e pakiety, jednak je ˙zeli u ˙zywasz

oficjalnych płytek nie nale ˙zy nic tutaj zmienia´c.

Mo ˙zesz teraz przej´s´c do kolejnego kroku, czyli ustawie ´n partycji.

Partycje

Nadszedł czas na konfigurowanie partycji. Mo ˙zemy wybra´c proponowane przez in-
stalator ustawienia albo skorzysta´c z bardzo przyjemnego narz˛edzia o nazwie par-
ted. Jako, ˙ze na dysku mo ˙zemy mie´c inny system (Windows) lepiej dla bezpiecze ´n-
stwa ustawi´c partycje r˛ecznie.

17

background image

Rozdział 4. Instalacja systemu

Rysunek 4-6. Ustawianie partycji

Wybieraj ˛

ac opcj˛e "ustaw partycje r˛ecznie" przechodzimy do parted

Rysunek 4-7. Parted - interfejs

Interfejs jak wida´c jest bardzo prosty i intuicyjny. Je ˙zeli mamy jakie´s wolne miejsce
mo ˙zemy utworzy´c now ˛

a partycje, stworzy´c macierz RAID, albo przeedytowa´c ist-

niej ˛

ac ˛

a ju ˙z partycj˛e. UWAGA! Je ˙zeli posiadasz nowy sprz˛et, mo ˙zesz mie´c problemy

z instalacj ˛

a systemu na raidzie. Problem ten wynika z tego, i ˙z system, który wła´snie

instalujesz mo ˙ze nie obsługiwa´c Twojego raida.

Wchodz ˛

ac w menu "Akcje" przechodzimy do menu edycji partycji.

18

background image

Rozdział 4. Instalacja systemu

Rysunek 4-8. Parted - tworzenie partycji

Mo ˙zemy zmieni´c punkt montowania, system plików, rozmiar albo usun ˛

a´c partycj˛e.

Po dokonaniu edycji tablicy partycji, oraz ustawieniu punktów montowa ´n mo ˙zemy
opu´sci´c parted i przej´s´c do dalszej cz˛e´sci instalacji.

Wybór pakietów

Przechodzimy teraz do kolejnej cz˛e´sci instalacji, czyli wyboru pakietów.

19

background image

Rozdział 4. Instalacja systemu

Rysunek 4-9. Wybór pakietów

Mamy do wyboru nast˛epuj ˛

ace gotowe zestawy pakietów. Przy ka ˙zdym zestawie jest

jego krótka charakterystyka, wi˛ec nie ma sensu si˛e rozpisywa´c. Wybieramy taki ze-
staw jaki nam najbardziej pasuje, jednak nie warto przesadza´c z pakietami, np stacja
robocza z gnome nie b˛edzie bardzo nadawała si˛e na router. Po zainstalowaniu sys-
temu b˛edziesz zmuszony usun ˛

a´c mas˛e niepotrzebnych pakietów, przez co stracisz

mnóstwo czasu.

Dalej mamy mo ˙zliwo´s´c szczegółowej selekcji pakietów, je ˙zeli ufamy instalatorowi
mo ˙zemy pomin ˛

a´c ten krok, je ˙zeli natomiast znamy si˛e troch˛e na linuksie wybieramy

powy ˙zsz ˛

a opcj˛e i wchodzimy do menu.

20

background image

Rozdział 4. Instalacja systemu

Rysunek 4-10. Grupy pakietów

Na ekranie widzimy zaznaczone grupy pakietów, mo ˙zemy zaznacza´c dodatkowe,
albo zrezygnowa´c z dotychczas wybranych. Mo ˙zemy tak ˙ze rezygnowa´c z pojedyn-
czych pakietów z grup wchodz ˛

ac w opcj˛e standartowe pakiety. Pod linkiem "Wy-

bierz opcjonalne pakiety" widzimy menu dzi˛eki któremu mamy mo ˙zliwo´s´c bardziej
spersonalizowanego wyboru interesuj ˛

acych nas pakietów.

Kolejnym krokiem jest pytanie czy chcemy zainstalowa´c dokumentacj˛e, na które le-
piej odpowiedzie´c twierdz ˛

aco. Mamy tak ˙ze mo ˙zliwo´s´c wyboru wersji j˛ezykowych

dokumentacji. Je ˙zeli nie jeste´smy pewni, mo ˙zemy zostawi´c domy´slne ustawienia,
czyli "ALL", jednak gdy chcemy mie´c dokumentacj˛e tylko po polsku i angielsku wpi-
sujemy "pl:pl_PL:en:en_US". Nale ˙zy pami˛eta´c, ˙ze mo ˙ze zdarzy´c si˛e sytuacja i ˙z pakiet
nie ma jeszcze polskiej dokumentacji, wi˛ec zawsze warto zaznaczy´c j˛ezyk angielski.

Nast˛epne kroki to prekonfiguracja instalowanego systemu.

Prekonfiguracja systemu

Dotarli´smy do punktu gdzie musimy ustawi´c podstawowe parametry instalowane-
go systemu.

21

background image

Rozdział 4. Instalacja systemu

Rysunek 4-11. Partametry sieci

Pierwszym krokiem b˛edzie ustawienie parametrów sieci (je ˙zeli mamy do niej do-
st˛ep). Je ˙zeli wcze´sniej wybrali´smy instalacj˛e przez sie´c, mo ˙zemy zastosowa´c te same
preferencje tak ˙ze w naszym systemie, je ˙zeli jednak instalujemy z jakiego´s no´snika
(cdrom, dysk) nale ˙zy r˛ecznie wpisa´c ustawienia, lub pobra´c je z serwera dhcp.

Rysunek 4-12. Hasło administratora

Kolejny krok to ustawienie hasła u ˙zytkownika root. Ten punkt chyba nie wymaga
komentarza. Nale ˙zy ustawi´c w miar˛e bezpieczne hasło, bo jak wiadomo serwer jest
tak bezpieczny jak jego najsłabsze ogniwo :) Mo ˙zemy równie ˙z zleci´c wygenerowanie

22

background image

Rozdział 4. Instalacja systemu

hasła instalatorowi.

Nast˛epn ˛

a czynno´sci ˛

a jest ustawienie kont(a) u ˙zytkowników, mo ˙zemy zrobi´c to teraz,

albo po instalacji u ˙zywaj ˛

ac polecenia useradd.

Rysunek 4-13. Strefa czasowa

Pozostał jeszcze wybór strefy czasowej i synchronizacja (lub nie) zegara systemowe-
go z UTC, i na tym ko ´nczymy prekonfiguracj˛e systemu.

Bootmanager

Przyszła kolej na ustawienie bootmanagera. Je ˙zeli pld to nasz jedyny system na dys-
ku mo ˙zemy pomin ˛

a´c ten krok, w przeciwnym przypadku musimy doda´c wpisy in-

nych systemów, aby była mo ˙zliwo´s´c uruchomienia ich przy starcie komputera. Oczy-
wi´scie je ˙zeli nie chcemy teraz konfigurowa´c bootmanagera mo ˙zna zawsze to zrobi´c
po uko ´nczeniu instalacji, edytuj ˛

ac plik

/etc/lilo.conf

.

23

background image

Rozdział 4. Instalacja systemu

Rysunek 4-14. Mo˙zliwo´s´c wyboru konfiguracji bootloadera

Wybieramy wi˛ec opcj˛e "konfiguruj bootloader", która uruchamia skrypt konfiguru-
j ˛

acy.

Rysunek 4-15. Bootloader - wpisy

Jak wida´c nie mamy jeszcze ˙zadnych wpisów, wybieramy "Stwórz now ˛

a pozycj˛e"

aby doda´c jaki´s system operacyjny. Nale ˙zy tutaj pami˛eta´c i ˙z wpisujemy istniej ˛

ace

systemy na lokalnych dyskach, oprócz tego, który wła´snie instalujemy.

24

background image

Rozdział 4. Instalacja systemu

Rysunek 4-16. Wybór systemu

Pierwszym krokiem jest wybór systemu który chcemy ładowa´c. Wybieramy np. DOS,
nast˛epnie podajemy lokalizacje partycji na jakiej znajduje si˛e system i przechodzimy
do konfiguracji wpisu.

Rysunek 4-17. Konfiguracja wpisu

Jak wida´c na powy ˙zszym przykładzie, musimy wpisa´c etykiet˛e - czyli nazw˛e jaka
b˛edzie nam si˛e wy´swietlała przy starcie komputera. Nazwa jest dowolna, jednak nie
nale ˙zy przesadza´c z długo´sci ˛

a i lepiej nie u ˙zywa´c polskich znaków. Dwa kolejne po-

la, czyli "system" i "katalog /" mamy ju ˙z wypełnione automatycznie. Je ˙zeli dodajemy

25

background image

Rozdział 4. Instalacja systemu

innego linuksa nale ˙zy poda´c lokalizacj˛e j ˛

adra systemu (kernela) oraz initrd je´sli ma-

my. W systemie DOS/Windows te pola s ˛

a zb˛edne.

Rysunek 4-18. Gotowy wpis

Po ustawieniu etykiety i zatwierdzeniu zmian mo ˙zemy obejrze´c nasz(e) wpis(y). Je-

˙zeli mamy wi˛ecej systemów dodajemy je po kolei, po sko ´nczeniu opuszczamy konfi-

gurator przechodz ˛

ac do kolejnej opcji.

Rysunek 4-19. Lokalizacja bootloadera

26

background image

Rozdział 4. Instalacja systemu

Ostatni ˛

a rzecz ˛

a jak ˛

a musimy zrobi´c aby zako ´nczy´c proces konfiguracji bootloadera

to wybór urz ˛

adzenia na jakim ma by´c on zainstalowany. Najlepszym rozwi ˛

azaniem

jest instalacja go w MBR (Master Boot Record) dysku z którego jest ładowany system.
Je ˙zeli jednak nie jeste´smy pewni co do tego (lub nie wiemy co to jest MBR) najlepiej
zostawi´c opcj˛e auto, dzi˛eki której instalator sam wybierze najlepsze urz ˛

adzenie.

Ko ´

nczenie instalacji

Pozostała nam ostatnia rzecz, czyli instalacja pakietów. W tej cz˛e´sci nie b˛edziemy
musieli nic robi´c, oprócz czekania. Wi˛ec je ˙zeli wybrali´smy instalacj˛e z sieci i jaki´s
wi˛ekszy zestaw pakietów mo ˙zemy zaopatrzy´c si˛e w jak ˛

a´s ksi ˛

a ˙zk˛e i poczyta´c, bo pro-

ces instalacji troch˛e potrwa :)

Słowo komentarza na temat tego, co si˛e dzieje na ekranie:

Rysunek 4-20. Instalator tworzy partycje

Tutaj widzimy jak system tworzy partycje, oraz system plików na nich. W zale ˙zno´sci
od wielko´sci partycji i szybko´sci dysku mo ˙ze to troch˛e potrwa´c.

27

background image

Rozdział 4. Instalacja systemu

Rysunek 4-21. Instalacja pakietów

Dalej po pobraniu indeksów system przechodzi do instalacji pakietów (wi˛ecej o tym
co to s ˛

a indeksy w rozdziale po´swi˛econym poldkowi). To jest najdłu ˙zsza cz˛e´s´c insta-

lacji.

Rysunek 4-22. Instalacja zako ´nczona :)

Je ˙zeli nie wyst ˛

apiły ˙zadne bł˛edy zobaczysz taki ekran. Teraz wystarczy tylko zre-

startowa´c system, wyci ˛

agn ˛

a´c płytk˛e/dyskietk˛e z nap˛edu, b ˛

ad´z ustawi´c bootowanie

z dysku na którym zainstalował si˛e bootmanager (najcz˛e´sciej

/dev/hda

) i mamy go-

towy system :)

28

background image

Rozdział 4. Instalacja systemu

Przypisy

1. ftp://ftp.pld-linux.org/dists/ra/updates/2.4/

2. ftp://atos.wmid.amu.edu.pl/pub/pld/ra-24/

3. http://cvs.pld-linux.org/cgi-bin/cvsweb/raac-converter/ra2ac

29

background image

Rozdział 4. Instalacja systemu

30

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy
pomocy RescueCD lub LiveCD

Ten rozdział prezentuje alternatywn ˛

a metod˛e instalacji PLD przy pomocy RescueCD

lub LiveCD.

Wst ˛ep

Oprócz instalacji przy pomocy instalatora, który został omówiony w poprzednim
rozdziale, mamy mo ˙zliwo´s´c zainstalowania PLD przy pomocy płytki RescueCD. Spo-
sób opisany poni ˙zej ma te zalet˛e, ˙ze daje nam okazj˛e do lepszego poznania PLD ju ˙z
na etapie instalacji, a ponadto umo ˙zliwia nam wykonywanie bardziej wyrafinowa-
nych operacji, które s ˛

a standardowo niedost˛epne z poziomu instalatora.

Wymagania

Do poprawnej instalacji potrzebny jest nam dost˛ep do internetu lub płytki CD z
PLD

1

, a tak ˙ze płytka RescueCD

2

lub LiveCD

3

. Omawiany sposób instalacji uwzgl˛ed-

nia poł ˛

aczenie internetowe, aczkolwiek zmiana dla ´zródeł z płytek CD, obejmuje

praktycznie tylko modyfikacje odpowiednich parametrów w

/etc/poldek.conf

(wi˛e-

cej o opcjach poldka mo ˙zemy uzyska´c za pomoc ˛

a polecenia man poldek)

Je ˙zeli ´sci ˛

agn ˛

ałe´s ju ˙z plik

rescue.iso

b ˛

ad´z

pldcd-current.iso

to teraz potrzebu-

jesz go wypali´c na płyt˛e. Nie mo ˙ze to by´c jednak zwykłe nagranie, musisz wybra´c w
programie do nagrywania opcje "Nagraj plik obrazu (ISO)". Dzi˛eki temu płyta przy
odpowiednio ustawionym BIOS-ie, b˛edzie mogła wystartowa´c RescueCD po wł ˛

acze-

niu komputera.

Konfiguracja

Po zbootowaniu, RescueCD zapyta si˛e czy skopiowa´c ISO do pami˛eci RAM. Je ˙zeli
posiadamy wi˛ecej ni ˙z 98MB RAM mo ˙zemy wcisn ˛

a´c Y.

Gdy mamy ju ˙z uruchomione RescueCD podł ˛

aczymy si˛e do internetu. Robimy to w

nast˛epuj ˛

acy sposób:

# modprobe ne2k-pci

ne2k-pci jest to moduł karty sieciowej. W zale ˙zno´sci od posiadanej karty podajemy
ró ˙zne moduły. Aby sprawdzi´c jak ˛

a mamy kart˛e mo ˙zemy skorzysta´c z polecenia lspci

# lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333]
00:01.0 PCI bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333 AGP]
00:09.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 24)
00:0a.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 24)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8233A ISA Bridge
01:00.0 VGA compatible controller: Intel Corp. i740 (rev 21)

31

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

Tutaj interesuje nas tylko Ethernet controller. W tym przypadku modułem b˛edzie
3c59x. Gdy znale´zli´smy ju ˙z moduł odpowiadaj ˛

acy naszej karcie sieciowej edytujemy

plik

/etc/sysconfig/network

(zmian mo ˙zemy dokona´c edytorem vim albo korzy-

staj ˛

ac z programu mc) i zmieniamy w nim:

NETWORKING=yes
# Ustawiamy na "yes" je˙

zeli chcemy komunikowa´

c si˛

e z sieci ˛

a.

IPV4_NETWORKING=yes
# Ustawiamy na "yes" je˙

zeli b˛

edziemy korzysta´

c z protokołu ipv4.

IPV4_FORWARDING=no
# yes - wł ˛

acza forwarding, no - wył ˛

acza..

HOSTNAME="pldmachine"
# Tutaj ustawiamy nazw˛

e naszego komputera.

NISDOMAIN="localdomain"
# Tutaj wystarczy domy´

slne "localdomain"

GATEWAY="192.168.0.1"
# Adres IP naszej bramki internetowej

GATEWAYDEV="eth0"
# i która karta sieciowa obsługuje t˛

e bramk˛

e

W

/etc/sysconfig/interfaces

sprawdzamy ustawienia dla interfejsu sieciowego.

Musi by´c tam co najmniej jeden plik

ifcfg-ethx

(gdzie "x" jest numerem interfejsu

sieciowego). Przy np. dwóch kartach sieciowych mog ˛

a to by´c pliki

ifcfg-eth0

i

ifcfg-eth1

.

Przykładowo dla jednej karty sieciowej nasz plik

/etc/sysconfig/interfaces/ifcfg-

eth0

mo ˙ze wygl ˛

ada´c tak:

# example config for first ethernet card

# name of the device
DEVICE=eth0

# IP addresses/address prefix
# where prefix:
# 24 - resembles netmask 255.255.255.0
# 16 - resembles netmask 255.255.0.0
# etc.
# IPADDR may be either IPv4 or IPv6
# you may have up to 256 addresses set up
IPADDR=10.1.1.1/24
#IPADDR1=192.168.0.1/24
#IPADDR2=192.168.0.3/24
#IPADDR3=192.168.0.4/24

# you may select which of the above addresses
# is primary for this interface (it’d be IPADDR1 in the
# example below)
#IP4_PRIM_IF="1"

32

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

# activate on boot? yes|no
# you must set it to ’yes’ if you want to have this up after bootup
ONBOOT=yes

# dhcp|pump|none
BOOTPROTO=none

Aby nasz system mógł korzysta´c przy poł ˛

aczeniu z internetem z serwerów DNS mu-

simy ustawi´c resolver (zamiast podanego ni ˙zej adresu IP DNS, mo ˙zemy poda´c adres
wła´sciwy dla naszej sieci):

# echo ’nameserver 194.204.159.1’> /etc/resolv.conf

Mo ˙zemy spróbowa´c uruchomi´c nasz interfejs sieciowy:

# /etc/rc.d/init.d/network restart
Ustawianie parametrów sieci......................[ ZROBIONE]
Podnoszenie interfejsu eth0......................[ ZROBIONE]
#

I sprawdzi´c czy mamy wyj´scie na ´swiat wykonuj ˛

ac np.:

# ping www.pld-linux.org
PING www.pld-linux.org (81.0.225.27) 56(84) bytes of data.
64 bytes from 81.0.225.27: icmp_seq=1 ttl=51 time=47.2 ms
64 bytes from 81.0.225.27: icmp_seq=2 ttl=51 time=326 ms
64 bytes from 81.0.225.27: icmp_seq=3 ttl=51 time=178 ms

--- www.pld-linux.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2020ms
rtt min/avg/max/mdev = 47.264/183.911/326.006/113.861 ms

Je ˙zeli zobaczymy co´s takiego to oznacza, ˙ze wszystko jak narazie OK. W przypad-
ku braku wyj´scia mo ˙zna spróbowa´c wykona´c ping na inny adres (np. google.pl)
lub podaj ˛

ac adres IP (w przypadku gdyby serwer DNS nie działał prawidłowo) np.

216.239.37.99

Przygotowanie partycji i ich montowanie

Dla u˙zytkowników RescueCD: W najnowszych wersjach RescueCD standardowo moduł
do dysku twardego jest wył ˛

aczony poniewa˙z u˙zytkownik mo˙ze go nie potrzebowa´c - bo

posiada np. SCSI. Dlatego mo˙ze by´c potrzeba zainicjowania modułu IDE dla HDD:

# modprobe ide-disk

W celu przy´spieszenia naszego dysku ( je ˙zeli nasz dysk obsługuje DMA ) mo ˙zemy
skorzysta´c z programu hdparm. Dzi˛eki temu nasz dysk powinien działa´c o wiele
szybciej. Wł ˛

aczamy DMA dla dysku (w przykładzie /dev/hda)

# hdparm -d1 /dev/hda

33

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

/dev/hda:

setting using_dma to 1 (on)
using_dma

=

1 (on)

Je ˙zeli nie mamy jeszcze ˙zadnych partycji to teraz je utworzymy, je ˙zeli natomiast po-
siadamy ju ˙z gotowe partycje to mo ˙zemy omin ˛

a´c poni ˙zsze czynno´sci:

# dmesg | grep -i hd
ide0: BM-DMA at 0xc000-0xc007, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xc008-0xc00f, BIOS settings: hdc:DMA, hdd:pio
hda: SAMSUNG SV4084H, ATA DISK drive
hdc: SAMSUNG DVD-ROM SD-616Q, ATAPI CD/DVD-ROM drive
hda: 23784 sectors (4822 MB) w/426KiB Cache, CHS=4963/255/63, UDMA(100)

Polecenie to pokazuje nam jakie mamy urz ˛

adzenia. Wyszukujemy nasz dysk, w tym

wypadku hda i uruchamiamy program cfdisk na tym urz ˛

adzeniu:

# cfdisk /dev/hda

cfdisk 2.11w

Disk Drive: /dev/hda

Size: 80026361856 bytes, 80.0 GB
Heads: 16

Sectors per Track: 63

Cylinders: 155061

Name

Flags Part Type

FS Type

[Label]

Size (MB)

---------------------------------------------------------------------
---
hda1

Boot Primary

Linux ReiserFS

4999,94

hda

Logical

Linux swap

299,86

hda6

Logical

Linux ReiserFS

1000,20

hda7

Logical

Linux ReiserFS

1999,88

hda8

Logical

Linux ReiserFS

3000,07

hda9

Logical

Linux ReiserFS

4999,94

hda1

Logical

Linux ext2

3726,22

hda11

Logical

Linux ReiserFS

60000,29

[Bootable]

[ Delete ]

[

Help

]

[Maximize]

[ Print

]

[

Quit

]

[

Type

]

[ Units

]

[ Write

]

Toggle bootable flag of the current partition

Program ten wygl ˛

ada mniej wi˛ecej tak. Oczywi´scie pokazane partycje s ˛

a ju ˙z gotowe

ale je ˙zeli nie mamy ˙zadnych dajemy [New] i tworzymy. Je ˙zeli mamy partycje, któ-
rych nie chcemy kasowa´c a np. zmniejszy´c (np. istniej ˛

aca instalacja innego systemu)

to powinni´smy zainteresowa´c si˛e programem parted.

Gdy ju ˙z mamy stworzone partycje trzeba teraz si˛e zdecydowa´c jaki system plików
chcemy mie´c. Do wyboru mamy: ext2, ext3, reiserfs, xfs, itp.

# mkfs.xfs /dev/hda1

Je ˙zeli tworzymy ext3 to dajemy mkfs.ext3, je´sli reiserfs to mkfs.reiserfs itd. W miej-
scu /dev/hda1 wpisujemy nasz ˛

a główn ˛

a partycj˛e.

34

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

Podobnie jest z partycj ˛

a z plikiem wymiany tzw. swap:

# mkswap /dev/hda5

Tak stworzon ˛

a partycj˛e aktywujemy poleceniem swapon.

Utworzon ˛

a partycj˛e podstawow ˛

a nale ˙zy teraz gdzie´s zamontowa´c. Robimy to w na-

st˛epuj ˛

acy sposób:

# mkdir /dest

czyli tworzymy katalog do którego zamontujemy nasz ˛

a partycj˛e i montujemy j ˛

a:

# mount -t xfs /dev/hda1 /dest

Je ˙zeli posiadamy inny system plików, np. ext3 to dajemy mount -t ext3, itd.

Instalacja

Teraz przechodzimy ju ˙z do wła´sciwej instalacji. Je ˙zeli nie wiemy na jakiej architektu-
rze pracujemy wykonujemy komend˛e arch

# arch
i686

Oczywi´scie mo ˙ze tu te ˙z si˛e pojawi´c i386, i586 i inne. Je ˙zeli posiadamy athlona to
nale ˙zy zmieni´c na athlon. Teraz w zale ˙zno´sci od posiadanej architektury zmieniamy

/etc/poldek.conf

# grep -n i386 /etc/poldek.conf
source = ac ftp://ftp.pld-linux.org/dists/ac/PLD/i386/PLD/RPMS/

No i zmieniamy w przypadku i686 na tak ˛

a linijk˛e:

source = ac ftp://ftp.pld-linux.org/dists/ac/PLD/i686/PLD/RPMS/

W przypadku nowego RescueCD w

/etc/poldek.conf

mamy ju ˙z nowe ´scie ˙zki,

wi˛ec nie trzeba ich zmienia´c, je´sli jednak u ˙zywasz starszego RescueCD to musisz
zmieni´c te ´scie ˙zki tak jak opisane powy ˙zej.

Do

/etc/poldek.conf

dodajemy tak ˙ze tzw. cachedir, który od razu na tworzonej

partycji zapisze nam odpowiednie pliki poldka:

cachedir = /dest/var/cache/poldek

Nast˛epnie przygotujemy katalogi dla programu poldek na naszej nowej partycji:

# mkdir -p /dest/var/cache/poldek/

Zaczynamy instalacj˛e systemu PLD na nowej partycji:

# poldek --root /dest --mkdir -i FHS
Retrieving ftp://ftp.pld-linux.org/dists/ac/[...]/packages.dir.mdd...
Retrieving ftp://ftp.pld-linux.org/dists/ac/PLD/[...]/packages.dir.gz...

35

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

.................................................. 100.0% [5.7M]
Verifying ftp://ftp.pld-linux.org/dists/ac/PLD/[...]/packages.dir.gz...
OK
Retrieving ftp://ftp.pld-linux.org/dists/ac/[...]/packages.dir.mdd...
Retrieving ftp://ftp.pld-linux.org/dists/ac/[...]/packages.dir.gz...
Verifying ftp://ftp.pld-linux.org/dists/ac/[...]/packages.dir.gz... OK
Retrieving ftp://ftp.pld-linux.org/dists/[...]/FHS-2.3-1.athlon.rpm...
.................................................. 100.0% [40.0K]
Retrieving ftp://ftp.pld-linux.org/[...]/setup-2.4.5-5.athlon.rpm...
.................................................. 100.0% [154.6K]
rpmdb: /var/lib/rpm/Filemd5s: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Sha1header: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Sigmd5: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Installtid: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Provideversion: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Requireversion: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Dirnames: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Triggername: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Providename: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Requirename: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Group: unable to flush: Read-only file system
rpmdb: /var/lib/rpm/Basenames: unable to flush: Read-only file system
error: db4 error(30) from dbenv->close: Read-only file system

W tym poleceniu opcja --root wskazuje gdzie maj ˛

a by´c instalowane pakiety. Bł˛edy,

które tutaj wyst ˛

apiły s ˛

a normalne i nie ma si˛e czego obawia´c, w dalszej cz˛e´sci b˛ed ˛

a

one si˛e ci ˛

agle pojawia´c, dopóki instalacja b˛edzie si˛e odbywa´c z poziomu RescueCD.

Aby bazy rpm były prawidłowe wykonujemy polecenie initdb:

# rpm --root /dest --initdb

Teraz instalujemy podstawowe pliki PLD:

# poldek --root /dest --mkdir -i \
lilo SysVinit rc-scripts poldek FHS geninitrd pico bash mc \
openssl dev pcre xfsprogs login shadow modutils --nodeps

Pakiet lilo mo ˙zna zast ˛

api´c wg. uznania np. pakietem grub. To samo z pakietem pico

lub mc

Po wczytaniu podstawowych plików PLD na nowej partycji mo ˙zemy wej´s´c do no-
wego ´srodowiska korzystaj ˛

ac z mo ˙zliwo´sci jakie daje chroot:

# chroot /dest bash

Poniewa ˙z znajdujemy si˛e w nowym ´srodowisku musimy ponownie ustawi´c DNS
dla poł ˛

acze ´n sieciowych:

# echo ’nameserver 194.204.159.1’ > /etc/resolv.conf

Czas dopisa´c nasze partycje do

/etc/fstab

przykładowo mo ˙ze to wygl ˛

ada´c tak (w

zale ˙zno´sci od partycji, które stworzyli´smy):

/dev/hda1

/

xfs

defaults

0 0

/dev/hda5

swap

swap

defaults

0 0

36

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

none

/proc

proc

defaults,gid=17 0 0

none

/dev/pts

devpts

gid=5,mode=620

0 0

Teraz dla pewno´sci mo ˙zemy jeszcze podmontowa´c /proc w taki sposób:

# mount /proc

Aby nie pobiera´c jeszcze raz indexów poldka edytujemy

/etc/poldek.conf

i zmie-

niamy cachedir na:

cachedir = /var/cache/poldek

Teraz nadszedł czas instalacji j ˛

adra systemu.

# poldek -i kernel

Aktualnie w PLD znajduje si˛e kernel 2.6, w którym nie ma pliku

/etc/modules.conf

, lecz jest plik

/etc/modprobe.conf

, który generujemy w nast˛epuj ˛

acy sposób:

# generate-modprobe.conf > /etc/modprobe.conf

Aby by´c na czasie dokonujemy upgrade wszystkich posiadanych pakietów:

# poldek --shcmd=’upgrade *’

Sprawdzamy katalog

/boot

# ls /boot | grep initrd
initrd
initrd-2.6.4-1.gz

Je ˙zeli nie wida´c czego´s takiego, a jest ju ˙z zainstalowany kernel to nale ˙zy u ˙zy´c po-
lecenia geninitrd aby wygenerowa´c odpowiedni image kernela. Przykładowo dla
kernela 2.6.4-1 polecenie b˛edzie podobne do geninitrd -v -f /boot/initrd 2.6.4-1

Czas na konfiguracj˛e bootmanagera. Je ˙zeli mamy lilo to przykładowy plik

/etc/lilo.conf

mo ˙ze wygl ˛

ada´c tak:

boot=/dev/hda
read-only
prompt
default=pld
timeout=10
lba32
image=/boot/vmlinuz
root=/dev/hda1
label=pld
initrd=/boot/initrd
vga = 788 # Rozdzielczosc 1024x768 dla konsoli

Jako alternatywy mo ˙zemy u ˙zy´c tak ˙ze programu grub . Aby skonfigurowa´c go pra-
widłowo, edytujemy plik

/boot/grub/menu.lst

title PLD Linux 2.0 (Ac)
root (hd0,0) # tutaj wpisujemy zaczynaj ˛

ac od 0 numer dysku i partycji

37

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

kernel /boot/vmlinuz root=0301
initrd /boot/initrd

Teraz gdy ju ˙z mamy gotowy config musimy nadpisa´c pocz ˛

atkowy sektor dysku, w

przypadku lilo wykonujemy:

# lilo -v
LILO version 22.5.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2003 John Coffman
Released 10-Oct-2003 and compiled at 20:22:02 on Oct 26 2003

Boot image: /boot/vmlinuz -> vmlinuz-2.6.4-1
Mapping RAM disk /boot/initrd -> initrd-2.6.4-1.gz
Added pld *

Writing boot sector.

Je ˙zeli jest to grub, wywołujemy go:

# grub
grub> root (hd0,0)

Filesystem type is xfs, partition type 0x83

grub> setup (hd0)

Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/xfs_stage1_5" exists... yes
Running "embed /boot/grub/xfs_stage1_5 (hd0)"...

18 sectors are embedded.

succeeded

Running "install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,0)/boot/grub/stage2

/boot/grub/menu.lst"... succeeded
Done.

grub> quit

Dokładny opis konfiguracji boot loadera znajduje si˛e w sekcja Boot Loader w Rozdział
9

# passwd root
New UNIX password:
Retype new UNIX password:

A nast˛epnie sprawdzi´c plik

/etc/shells

- powinny by´c tam co najmniej nast˛epuj ˛

ace

wpisy:

/bin/ksh
/bin/sh
/bin/bash
/bin/rbash

Zbli ˙zamy si˛e do finału - wychodzimy ze ´srodowiska chroot poleceniem exit .

Aby po restarcie mie´c odrazu internet mo ˙zemy skopiowa´c nasze pliki konfiguracyjne

network

oraz

ifcfg-eth0

:

# cp /etc/sysconfig/network /dest/etc/sysconfig

38

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

# cp /etc/sysconfig/interfaces/ifcfg-eth0 /dest/etc/sysconfig/interfaces/

Teraz wykonujemy komend˛e cd /, odmontujemy nasz ˛

a partycje umount /dest i wy-

chodzimy z RescueCD poleceniem reboot

Po zmianie w BIOS dysku startowego na HDD mo ˙zemy ju ˙z wyj ˛

a´c płytk˛e CD z nap˛e-

du i cieszy´c si˛e now ˛

a instalacj ˛

a PLD :)

Przypisy

1. ftp://ftp.pld-linux.org

2. http://rescuecd.pld-linux.org

3. http://livecd.pld-linux.org

39

background image

Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD

40

background image

Rozdział 6. Instalacja PLD przy u˙zyciu chroota

Wst ˛ep

Jednym z alternatywnych sposobów instalacji PLD jest instalacja z poziomu innej
dystrybucji Linuksa. Posiada ona kilka zalet. Po pierwsze, nie b˛edzie nam potrzeb-
na nagrywarka CD, aby nagra´c płyt˛e z instalatorem, ani nie trzeba b˛edzie korzy-
sta´c z wolnych i mało pojemnych dyskietek. Po drugie, b˛edziemy mogli korzysta´c z
dotychczasowego systemu podczas instalacji nowego. Uwaga! Poniewa ˙z instalowa´c
b˛edziemy w oparciu o ju ˙z zainstalowany system, zakładam, ˙ze czytelnik ma przy-
najmniej minimaln ˛

a wiedz ˛

a dotycz ˛

ac ˛

a Linuksa, dokumentacja nie jest kierowana do

pocz ˛

atkuj ˛

acych.

Startujemy! - przygotowania

Zaczynamy. Najpierw musimy stworzy´c partycj˛e dla głównego drzewa katalogów.
Mo ˙zemy do tego posłu ˙zy´c si˛e programem cfdisk lub fdisk (wedle uznania). Po tej
operacji musimy utworzy´c system plików na przygotowanej partycji. Odpowiednio:

# mke2fs /dev/hdXY (1)
# mke2fs -j /dev/hdXY (2)
# mkfs.xfs /dev/hdXY

(3)

# mkreiserfs /dev/hdXY (4)

(1)(2)mkfs.ext2

lub mkfs.ext3 w zale ˙zno´sci od wybranej partycji: ext2 lub ext3

(3)

dla partycji typu XFS

(4)

dla partycji typu reiserfs

Gdzie X to oznaczenie dysku w formacie:

a

: pierwszy dysk na IDE0 (primary master)

b

: drugi dysk na IDE0 (secondary master)

c

: pierwszy dysk na IDE1 (primary slave)

d

: drugi dysk na IDE1 (secondary slave)

Y

: numer partycji.

Oczywi´scie przy dyskach SCSI oznaczenia b˛ed ˛

a troch˛e inne.

Teraz nale ˙zy stworzy´c katalog, do którego b˛edziemy si˛e pó´zniej chroot-owa´c, np.:

# mkdir /pld

Oraz zamontowa´c partycj˛e.

# mount /dev/hdXY /pld

41

background image

Rozdział 6. Instalacja PLD przy u˙zyciu chroota

Teraz ´sci ˛

agamy specjalnie przygotowan ˛

a paczk˛e z http://pld.pstryk.net/chroot.tar.gz

i rozpakowujemy j ˛

a.

# tar -zxf chroot.tar.gz

Tworzymy katalog dla poldka:

# mkdir -p /pld/var/cache/poldek/

Upewnijmy si˛e, ˙ze w obecnym systemie mamy poprawnie zainstalowany RPM. Spraw-
dzamy tak ˙ze, czy rpm le ˙zy w /bin/rpm , je´sli nie, to u ˙zywamy komendy

# ln -s ‘which rpm‘ /bin/rpm

aby zlinkowa´c rpma do lokacji wymaganej przez poldka.

Instalacja

Rozpoczynamy instalacj˛e PLD w nowym katalogu:

# ./poldek --root /pld --mkdir -c poldek.conf -i FHS

Je´sli zobaczymy bł˛edy w stylu:

Retrieving ftp://ftp.pld-linux.org/dists/ac/PLD/i686/PLD/RPMS/packages.dir.mdd...
error: vftp: unable to connect to ftp.pld-linux.org:21: Name or service not known
warn: ftp://ftp.pld-linux.org/dists/ac/PLD/i686/PLD/RPMS/: load failed, skipped
Retrieving ftp://ftp.pld-linux.org/dists/ac/updates/security/i686/packages.dir.mdd...
error: vftp: unable to connect to ftp.pld-linux.org:21: Name or service not known
warn: ftp://ftp.pld-linux.org/dists/ac/updates/security/i686/: load failed, skipped
warn: no packages loaded
error: mark: FHS not found

To otwórzmy plik poldek.conf i odkomentujmy linijk˛e 88, czyli opcj˛e:

ftp_get = /usr/bin/wget -N --dot-style=binary -P %d %Pn

Wracamy teraz do poprzedniego kroku.

I idziemy zaparzy´c sobie kaw˛e, czekaj ˛

ac a ˙z ´sci ˛

agnie si˛e lista paczek z serwera ftp

PLD. Kiedy poldek sko ´nczy, ignorujemy wszelkie bł˛edy i wpisujemy:

# ./poldek --root /pld --mkdir -c poldek.conf -i poldek bash elfutils

Co w efekcie rozpocznie proces instalowania najpotrzebniejszych składników nasze-
go nowego systemu. Czekamy popijaj ˛

ac zrobion ˛

a par˛e minut temu kawk˛e.

Po tym, aby przebudowa´c now ˛

a baz˛e danych dla naszego /pld, wpisujemy:

# rpm --root /pld --initdb

Teraz musimy przekopiowa´c nasz plik

resolv.conf

, aby z chrootowanego ´srodowi-

ska mie´c dost˛ep do sieci.

42

background image

Rozdział 6. Instalacja PLD przy u˙zyciu chroota

# cp /etc/resolv.conf /pld/etc/

Montujemy /proc ...

# mount -o bind /proc /pld/proc

I... wreszcie... chrootujemy si˛e do naszego bocianka.

# chroot /pld /bin/bash

W tym momencie przydałoby si˛e wpisa´c:

# source /etc/profile

aby wyeksportowa´c niektóre podstawowe zmienne zawarte w podanym pliku.

Spróbujmy uruchomi´c poldka, je´sli nie uruchamia si˛e i wywala bł ˛

ad w stylu:

# poldek
poldek: error while loading shared libraries: libbeecrypt.so.6:
cannot open shared object file: No such file or directory

musimy zlinkowa´c odpowiednio biblioteki przez odpalenie komendy:

# ln -s /usr/lib/libbeecrypt.so.6.2.0 /usr/lib/libbeecrypt.so.6

I ju ˙z powinno wszystko ´smiga´c. :-)

Niestety, po raz kolejny czeka nas ´sci ˛

agniecie bazy pakietów z serwera PLD, cho´c ju ˙z

teraz ze ´srodka! Wspaniałe uczucie. :-) Przy okazji doinstalujemy kilka przydatnych
narz˛edzi.

# poldek -i man mc pico procps

System gotowy do u ˙zytku, a powinien zmie´sci´c si˛e w 70 MB.

I to wła´sciwie byłby ju ˙z koniec, je´sli chodzi o u ˙zytkowników, którym wystarczy po-
stawienie PLD w chroocie. Je´sli chcecie w normalny sposób korzysta´c z systemu,
czytajcie dalej.

Przygotowywanie systemu do samodzielnego uruchomienia

Potrzebujemy kilku pakietów, aby system chciał nam wystartowa´c i poprawnie funk-
cjonowa´c, je´sli chcecie si˛e o nich dowiedzie´c co´s wi˛ecej, polecam wej´scie w tryb inte-
raktywny poldka poldek i poczytanie o nich dzi˛eki komendzie desc.

# poldek -i lilo SysVinit rc-scripts geninitrd xfsprogs login \

shadow dev util-linux

Teraz pozostaje nam konfiguracja plików

/etc/fstab

i

/etc/lilo.conf

. W

/etc/fstab

ustawiamy partycje, według tego, jak je wcze´sniej stworzyli´smy. Przykładowy plik
b˛edzie wygl ˛

adał tak:

# cat /etc/fstab

43

background image

Rozdział 6. Instalacja PLD przy u˙zyciu chroota

/dev/hda6

/

xfs

defaults

0 0

/dev/hda5

none

swap

sw

0 0

none

/proc

proc

defaults,gid=17 0 0

none

/dev/pts

devpts

gid=5,mode=620

0 0

Pomocnym narz˛edziem tutaj na pewno b˛edzie fdisk i jego opcja

-l

.

# fdisk -l

Device Boot

Start

End

Blocks

Id

System

/dev/hda1

1

19365

9759456

5

Extended

/dev/hda3

19365

38745

9767520

a5

FreeBSD

/dev/hda5

1

989

497952

82

Linux swap

/dev/hda6

989

19365

9261441

83

Linux

Gdy ju ˙z dokonali´smy zmian w pliku

/etc/fstab

to mo ˙zemy zainstalowa´c j ˛

adro sys-

temu:

# poldek -i kernel

Teraz ustawiamy

lilo.conf

# cat /etc/lilo.conf

boot = /dev/hda

install=/boot/boot-bmp.b
bitmap=/boot/lilo-pldblack.bmp
bmp-colors=9„,6,0,0
bmp-table=21,287p,2,4,175p
bmp-timer=73,29,7,0,0

image = /boot/vmlinuz

root = /dev/hda6
label = PLD
read-only

Przeładowujemy lilo:

# lilo
Added PLD *

Dokładny opis konfiguracji boot loadera znajduje si˛e w: sekcja Boot Loader w Rozdział
9

I jeszcze ustawiamy hasło dla roota.

# passwd
New UNIX password:
Retype new UNIX password:

Sprawdzamy jeszcze zawarto´s´c ( i istnienie przy okazji ) pliku

/etc/shells

, o któ-

rego ostatnio było du ˙zo krzyku.

44

background image

Rozdział 6. Instalacja PLD przy u˙zyciu chroota

# cat /etc/shells
/bin/ksh
/bin/sh
/bin/bash
/bin/rbash

Wylogowujemy si˛e, odmontowujemy partycj˛e z PLD, i restartujemy kompa...

# exit
# umount /pld/proc
# umount /pld
# reboot

45

background image

Rozdział 6. Instalacja PLD przy u˙zyciu chroota

46

background image

Rozdział 7. Podstawy

W tym rozdziale znajdziesz podstawowe komendy i czynno´sci, które powiniene´s
zna´c.

Wł ˛

aczanie i wył ˛

aczanie systemu

Tradycyjn ˛

a metod ˛

a wył ˛

aczania komputera jest komenda shutdown, np.:

# shutdown -h now

Lub poweroff daj ˛

aca ten sam efekt.

U ˙zycie komendy halt jest te ˙z wła´sciwe.

# halt

Aby zresetowa´c system wpisujemy reboot albo korzystamy z kombinacji klawiszy
CTRL

+ALT+DEL.

W trakcie pracy mo ˙zemy dowolnie przeł ˛

acza´c si˛e pomi˛edzy trybami pracy. Słu ˙zy do

tego polecenie init {$nr} ({$nr} to liczba oznaczaj ˛

aca tryb pracy) np.

# init 5

Zmian˛e poziomu pracy szerzej opisano tutaj: Rozdział 10

Podstawowe operacje na plikach i katalogach

Zawarto´s´c plików wy´swietlamy poleceniem cat.

$ cat archiwum

Je´sli chcemy przyjrze´c si˛e plikowi, który nie mie´sci si˛e na ekranie po wykonania cat
mo ˙zemy uzyska´c poleceniem less. Mo ˙zemy wtedy przegl ˛

ada´c plik u ˙zywaj ˛

ac "strza-

łek", a kiedy sko ´nczymy - naciskamy q.

$ less plik

Komend ˛

a touch mo ˙zemy modyfikowa´c znaczniki czasu pliku, cz˛e´sciej jednak u ˙zywa

si˛e jej do tworzenia pustych plików.

$ touch pusty_plik

Polecenie mkdir tworzy katalog.

$ mkdir archiwum

Za pomoc ˛

a polecenia rmdir usuwamy puste katalogi.

$ rmdir archiwum

47

background image

Rozdział 7. Podstawy

Plik mo ˙zemy przenie´s´c, albo zmieni´c jego nazw˛e, za pomoc ˛

a polecenia mv.

$ mv listing listing.old
$ mv /home/listing.old /usr/src/

W podobny sposób operujemy na katalogach.

$ mv archiwum smietnik
$ mvdir smietnik /usr/src/smietnik/

Do kopiowania słu ˙zy polecenie cp.

$ cp listing podkatalog/

Kasujemy poleceniem rm.

$ rm plik

// Kasuje plik.

$ rm *

// Kasuje wszystkie pliki w danym katalogu.

$ rm * -i

// Kasuje wszystkie pliki w danym katalogu z potwierdzeniem.

$ rm * -f

// Kasuje wszystkie pliki w danym katalogu bez pytania.

$ rm -r

// Kasuje wszystkie pliki, tak˙

ze te w podkatalogach

$ rm -rf /home/

// Kasuje wszystkie pliki i katalogi w katalogu /home/

Poruszanie si ˛e w drzewie katalogów

Do poruszania si˛e w drzewie katalogów w trybie tekstowym mo ˙zna u ˙zywa´c pro-
gramu Midnight Commander uruchamianego poleceniem mc, jednak nie ka ˙zdy go
instaluje, wi˛ec warto zapozna´c si˛e z kilkoma poleceniami przedstawionymi w tym
rozdziale.

Do poruszania si˛e w drzewie katalogów u ˙zywamy polecenia cd ´scie˙zka np.:

$ cd /home/users/zenek/

Ten sam efekt uzyskamy poleceniem

$ cd users/zenek/

wykonanym w katalogu /home

Kilka innych przykładów przedstawiamy poni ˙zej.

W systemach uniksowych wyró ˙zniamy kilka rodzajów specjalnych katalogów. Naj-
wa ˙zniejszym w całym drzewie jest katalog główny -korze ´n (ang. root) oznaczany
przez uko´snik: "/"

$ cd /

Cz˛esto po lewej stronie ´scie ˙zki podaje si˛e korze ´n aby wskaza´c poło ˙zenie katalogu lub
pliku bez wzgl˛edu na miejsce z którego wydajemy polecenie np.:

$cd /etc/sysconfig

48

background image

Rozdział 7. Podstawy

Polecenie ls powoduje wy´swietlenie zawarto´sci katalogu. Nale ˙zy po nim poda´c na-
zw˛e katalogu, który chcemy zobaczy´c, w przeciwnym wypadku wy´swietlona zosta-
nie zawarto´s´c katalogu bie ˙z ˛

acego.

$ls /
bin

dev

home

lib

mnt

proc

sbin

srv

tmp

var

boot

etc

initrd

media

opt

root

selinux

sys

usr

$cd /home
$ls
services

users

Parametr -a powoduje, ˙ze funkcja pokazuje równie ˙z pliki ukryte (zaczynaj ˛

ace si˛e od

kropki). -R powoduje wylistowanie równie ˙z podfolderów.

Polecenie pwd powoduje wy´swietlenie ´scie ˙zki bie ˙z ˛

acego katalogu.

$cd users/bart
$pwd
/home/users/bart/

Wa ˙znym katalogiem jest katalog domowy u ˙zytkownika - oznaczany znakiem tyldy
(~). Ka ˙zdy u ˙zytkownik mo ˙ze u ˙zywa´c w ´scie ˙zce tego znaku i zawsze b˛edzie oznaczał
jego własny katalog domowy np.:

$ ls ~/dokumenty

Kolejnym takim katalogiem jest katalog nadrz˛edny oznaczany za pomoc ˛

a dwóch

kropek. B˛ed ˛

ac w katalogu: /home/users/zenek mo ˙zemy przej´s´c o jeden poziom do

góry u ˙zywaj ˛

ac polecenia

cd ..

Dzi˛eki temu znajdziemy si˛e w katalogu /home/users.

Data i czas

By wy´swietli´c aktualny czas i dat˛e systemow ˛

a posługujemy si˛e komend ˛

a clock.

$ clock

sob 26 kwi 2003 21:21:51 CEST

-0.062355 seconds

Mo ˙zemy si˛e równie ˙z posłu ˙zy´c komend ˛

a date.

$ date sob kwi 26 23:48:33 CEST 2003

Czas działania komputera sprawdzamy komend ˛

a uptime.

$ uptime
5:27pm

up

6:51,

4 users,

load average: 0.32, 0.08, 0.02

W sytuacji gdy chcemy z zmierzy´c czas potrzeby na wykonanie operacji/czynno´sci/procesu
to posługujemy si˛e komend ˛

a time.

49

background image

Rozdział 7. Podstawy

$ time find /home/users/rennis/ HELLO
real 0m13.297s
user 0m0.060s
sys 0m0.230s

Przykład ten poszukuje pliku HELLO w moim katalogu domowym, co zajmuje sys-
temowi ~13s.

Ilo ´s ´c miejsca na dysku

Wiele polece ´n zwracaj ˛

acych wielko´sci zajmowanej pami˛eci obsługuje parametr -h

przedstawiaj ˛

acy wielko´sci w jednostkach bardziej wygodnych dla człowieka.

Komenda df słu ˙zy do pokazania ilo´sci miejsca na zamontowanych partycjach.

$ df -h
System plików

rozm. u˙

zyte dost. %u˙

z. zamont. na

/dev/hdc1

36G

5.6G

29G

16% /

Natomiast komend ˛

a du mo ˙zna sprawdza´c obj˛eto´s´c plików oraz całych katalogów.

Uruchomienie du -h wy´swietli list˛e plików, katalogów i ich obj˛eto´sci (z bie ˙z ˛

acego

katalogu)

$ du -h
4.1kB ./archiv/httpd
4.1kB ./archiv/mysql
4.1kB ./archiv/exim
17kB ./archiv
4.1kB ./httpd
4.1kB ./mysql
111kB ./exim
107kB ./ircd
4.1kB ./mail
2.1MB .

Je´sli wska ˙zemy katalog dla du otrzymamy jego całkowit ˛

a obj˛eto´s´c

$ du -h /bin
3,4M

/bin

Procesy i zasoby

List˛e wszystkich uruchomionych procesów oraz dotycz ˛

ace ich dane otrzymamy dzi˛e-

ki poleceniu ps

$ ps aux

USER

PID %CPU %MEM

VSZ

RSS TTY

STAT START

TIME COMMAND

root

1350

0.0

0.1

1788

868 ?

Ss

May27

0:00 syslog-

ng
zenek

2252

0.0

1.2 11316 6668 ?

Ss

May27

0:01 xfce4-

session

50

background image

Rozdział 7. Podstawy

root

2301

0.0

0.3

2748 1556 tty2

Ss

May27

0:00 -bash

Oraz w formie drzewa procesów rodziców i procesów potomnych

$ ps xf

PID TTY

STAT

TIME COMMAND

2459 ?

S

0:32 xmms

2460 ?

S

0:00

\_ xmms

2461 ?

S

0:00

\_ xmms

2465 ?

S

0:00

\_ xmms

2816 ?

S

0:00

\_ xmms

W przypadku potrzeby ci ˛

agłego ´sledzenia zmian w systemie mo ˙zemy u ˙zy´c progra-

mu top. Program ten pokazuje najbardziej zasobo ˙zerne procesy. Dodatkowo na bie-

˙z ˛

aco wy´swietla całkowite zu ˙zycie procesora (CPU), pami˛eci operacyjnej(Mem) oraz

zaj˛eto´s´c przestrzeni wymiany (Swap).

$ top

top - 01:38:54 up

3:28,

4 users,

load average: 0.10, 0.08, 0.08

Tasks:

63 total,

2 running,

61 sleeping,

0 stopped,

0 zombie

Cpu(s):

2.3% us,

1.3% sy,

0.0% ni, 96.1% id,

0.0% wa,

0.3% hi,

0.0% si

Mem:

516244k total,

440344k used,

75900k free,

11840k buffers

Swap:

1076312k total,

0k used,

1076312k free,

328012k cached

PID USER

PR

NI

VIRT

RES

SHR S %CPU %MEM

TIME+

COMMAND

2240 root

15

0 62644

24m

45m S

1.6

4.9

7:37.40 X

2892 zenek

16

0

1880

928 1672 R

0.6

0.2

0:00.05 top

2695 zenek

16

0

6532 3824 5056 R

0.3

0.7

0:01.63 xterm

1 root

16

0

1532

584 1372 S

0.0

0.1

0:00.82 init

Informacje o samej pami˛eci i przestrzeni wymiany uzyskamy dzi˛eki komendzie free

$ free

total

used

free

shared

buffers

cached

Mem:

516244

445536

70708

0

11880

332728

-/+ buffers/cache:

100928

415316

Swap:

1076312

0

1076312

Całkowita ilo´s´c zu ˙zytej pami˛eci (razem z buforami dyskowymi) mie´sci si˛e w pierw-
szym wierszu w kolumnie USED. Za´s ilo´s´c pami˛eci zu ˙zytej jedynie przez programy
mie´sci si˛e w drugim wierszu w tej samej kolumnie.

Do procesów których jeste´smy wła´scicielami mo ˙zemy wysyła´c sygnały (root mo ˙ze
wysła´c sygnał do ka ˙zdego procesu). Aby zako ´nczy´c jaki´s proces nale ˙zy do procesu
wysła´c sygnał TERM. Dokonuje si˛e tego poleceniem kill lub killall. Pierwsze zabija
proces o podanym numerze PID (unikalnym identyfikatorze procesu) np.:

$ kill 2901

Drugie z polece ´n zabija wszystkie procesy, które maj ˛

a podan ˛

a nazw˛e np.:

$ killall xmms

51

background image

Rozdział 7. Podstawy

Sygnał TERM mo ˙ze by´c nieskuteczny w niektórych wypadkach, wtedy nale ˙zy u ˙zy´c
bardziej brutalnej metody - sygnału KILL. Mo ˙zemy go wysła´c programem kill lub
killall z odpowiednim parametrem: "-9" lub "-KILL":

kill -9 2901

W systemach uniksowych mo ˙zna ustawia´c priorytety uruchamianym programom
b ˛

ad´z te ˙z modyfikowa´c bie ˙z ˛

acy priorytet działaj ˛

acego procesu. Priorytet jest nazywa-

ny jest "liczb ˛

a nice". Mówi ona jak mili jeste´smy dla systemu i innych u ˙zytkowników.

Priorytet mo ˙zemy ustawia´c od -20 do +19, przy czym domy´slna warto´s´c zazwyczaj
wynosi 0. Ujemne warto´sci oznaczaj ˛

a wy ˙zszy priorytet, za´s dodatnie ni ˙zszy. Ujemn ˛

a

warto´s´c mo ˙ze nada´c tylko superu ˙zytkownik.

Aby uruchomi´c proces z priorytetem innym ni ˙z domy´slny nale ˙zy u ˙zy´c programu
nice

np.:

$ nice -n +5 mc

Działaj ˛

acym procesom mo ˙zna zmienia´c priorytet. Aby to zrobi´c u ˙zywamy polecenia

renice

:

$ renice +5 mc

Jak sprawdzi ´c kto jest zalogowany oprócz nas?

Pierwsz ˛

a komend ˛

a jest who. Podaje ona nam nazw˛e u ˙zytkownika, terminal na któ-

rym jest zalogowany oraz czas rozpocz˛ecia pracy.

$ who
gozda

tty1

Apr 18 10:52

gozda

pts/1

Apr 18 16:21

gozda

pts/4

Apr 18 11:06

gozda

pts/6

Apr 18 14:46

gozda

pts/8

Apr 18 16:25

gozda

pts/9

Apr 18 18:25

gozda

pts/10

Apr 18 18:29

Kolejna komenda w pokazuje nam kto jest zalogowany i co robi na poszczególnych
sesjach.

$ w
6:56pm

up

8:05, 7 users,

load average: 1.94, 1.75, 1.61

USER

TTY

FROM

LOGIN@

IDLE

JCPU

PCPU

WHAT

gozda

tty1

-

10:52am

8:03m 16.67s

0.02s

sh /usr/X11R6/bin/startx

gozda

pts/1

-

4:21pm

6:45

5.37s

5.32s

irssi

gozda

pts/4

-

11:06am 37:46

3.22s

3.17s

ekg

gozda

pts/6

-

2:46pm 10:17

12.66s

1.08s

mp3blaster

gozda

pts/9

-

6:25pm

0.00s

0.12s

0.03s

w

gozda

pts/10

-

6:29pm 22:07

3:58

0.02s

./mozilla-bin

Komenda users. Pokazuje ona pseudonimy u ˙zytkowników zalogowanych w syste-
mie.

52

background image

Rozdział 7. Podstawy

$ users
gozda gozda gozda gozda gozda gozda gozda

Poleceniem whoami dowiadujemy si˛e, jak nazywa si˛e u ˙zytkownik, na którym pra-
cujemy.

$ whoami
gozda

Edycja plików konfiguracyjnych

W systemach z rodziny UNIX-a konfiguracja systemu jest przechowywana w pli-
kach tekstowych. Zalet ˛

a tego rozwi ˛

azania jest mo ˙zliwo´s´c konfigurowania systemu

przy pomocy bardzo prostych narz˛edzi, wad ˛

a za´s to ˙ze mo ˙zna łatwo popełni´c bł ˛

ad.

Dlatego je´sli chcemy tylko przegl ˛

ada´c plik powinni´smy u ˙zy´c programu less np.:

# less /etc/poldek.conf

Je´sli jeste´smy pewni ˙ze chcemy dokona´c zmian, powinni´smy wcze´sniej wykona´c ko-
pi˛e zapasow ˛

a pliku.

# cp /etc/poldek.conf /etc/poldek.conf.bak

Teraz mo ˙zemy zacz ˛

a´c modyfikowa´c plik. Do tego celu u ˙zywa si˛e dowolnego edyto-

ra plików. Najcz˛e´sciej spotykanym w ´swiecie systemów uniksowych programem jest
vi

lub jego krewniak vim, dlatego dobrze jest umie´c si˛e nim posługiwa´c w podsta-

wowym zakresie. W wielu bowiem wypadkach mo ˙ze si˛e okaza´c ˙ze b˛edzie jedynym
dost˛epnym edytorem. Aby otworzy´c nim plik do edycji wydajemy polecenie

# vi /etc/poldek.conf

Po otworzeniu pliku jeste´smy w trybie wydawania polece ´n i ˙zadne zmiany w pliku
nie s ˛

a dokonywane. Aby przej´s´c do trybu edycji naciskamy klawisz i. Teraz mo ˙zemy

wprowadza´c zmiany. Po wykonaniu zmian naciskamy klawisz Esc aby powróci´c do
trybu wydawania polece ´n. Teraz nale ˙zy opu´sci´c program jednym z poni ˙zszych po-
lece ´n: :q - wyj´scie z programu je´sli nie dokonali´smy ˙zadnych zmian; :wq - wyj´scie z
zapisaniem zmian do pliku; :q! - wyj´scie z programu bez zapisywania dokonanych
zmian.

Pocz ˛

atkuj ˛

acym mo ˙zna zaproponowa´c edytor mcedit b˛ed ˛

acy cz˛e´sci ˛

a programu mc

(Midnight Commander), inne nieco mniej popularne edytory to: emacs, pico, joe

Nale ˙zy pami˛eta´c o tym ˙ze prawo zapisu plików w katalogu konfiguracji systemu
(/etc) ma tylko superu ˙zytkownik (root) i z takimi uprawnieniami nale ˙zy uruchamia´c
edytor.

Podstawowe narz ˛edzia kontroli sieci TCP/IP

Najcz˛e´sciej u ˙zywanym programem narz˛edziem diagnostycznym jest program ping -
pozwala on okre´sli´c czy dwa interesuj ˛

ace nas komputery mog ˛

a sie komunikowa´c po-

53

background image

Rozdział 7. Podstawy

przez sie´c. Polecenie ping nazwa/adresIP wysyła specjalne pakiety ICMP do wskaza-
nego komputera i czeka na odpowied´z. Mo ˙zemy podawa´c jako cel adres domenowy
lub numer IP. Przy okazji program ten dokonuje tłumaczenia adresu domenowego
na numer IP.

$ ping pld-linux.org

PING pld-linux.org (81.0.225.27) 56(84) bytes of data.
64 bytes from 81.0.225.27: icmp_seq=1 ttl=44 time=135 ms
64 bytes from 81.0.225.27: icmp_seq=2 ttl=44 time=99.8 ms
64 bytes from 81.0.225.27: icmp_seq=3 ttl=44 time=149 ms

--- pld-linux.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 99.840/128.084/149.144/20.761 ms

prac˛e programu przerywamy skrótem ctrl+c

Na powy ˙zszym wydruku przedstawiono 3 odpowiedzi na wysłane pakiety. Jeden
wiersz oznacza odpowied´z na jeden pakiet, dla ka ˙zdego z nich podawane s ˛

a parame-

try trasy pomi˛edzy komputerami. Najistotniejszym parametrem jest czas odpowie-
dzi (time). W przypadku problemów z sieci ˛

a cz˛e´s´c pakietów mo ˙ze zosta´c zagubiona,

b˛edzie wskazywane przez specjalny licznik (icmp_seq) oraz przez ko ´ncowe statysty-
ki. Brak jakiejkolwiek odpowiedzi mo ˙zna interpretowa´c jako brak poł ˛

aczenia siecio-

wego z interesuj ˛

acym nas komputerem, blokad˛e tego typu pakietów na komputerze

zdalnym lub zwyczajne wył ˛

aczenie maszyny. Na ko ´ncu wy´swietlane s ˛

a dodatkowo

szczegółowe statystyki. Przy prawidłowym poł ˛

aczeniu czas odpowiedzi dla sieci lo-

kalnej zazwyczaj nie przekracza 1 ms za´s w internecie mo ˙ze si˛egn ˛

a´c nawet kilkuset

ms.

Nieco bardziej zaawansowanym programem jest traceroute. Wskazuje on czasy prze-
słania pakietów pomi˛edzy s ˛

asiaduj ˛

acymi ze sob ˛

a routerami (tzw czasy przeskoków),

znajduj ˛

acymi si˛e na trasie poł ˛

aczenia dwóch maszyn. Pozwala ´sledzi´c tras˛e pakietów

oraz wykrywa´c ró ˙znego rodzaje problemy we w sieciach np.: bł ˛

adzenie pakietów w

sieci, "w ˛

askie gardła" sieci, oraz awarie poł ˛

acze ´n.

$ traceroute pld-linux.org

traceroute to pld-linux.org (81.0.225.27), 30 hops max, 38 byte packets

1

192.168.1.1 (192.168.1.1)

0.295 ms

0.608 ms

0.484 ms

2

217.153.188.173 (217.153.188.173)

1.012 ms

0.648 ms

0.495 ms

3

217.8.190.153 (217.8.190.153)

30.894 ms

28.983 ms

29.719 ms

Aby tłumaczy´c adres domenowy na numer IP i odwrotnie mo ˙zemy posłu ˙zy´c si˛e pro-
gramem host nazwa/adresIP. W tym celu program komunikuje si˛e z serwerem nazw
(DNS) np.:

$ host linuxnews.pl

linuxnews.pl has address 217.67.200.131

to polecenie zwróciło numer IP serwera po podaniu jego adresu. Odwrotny efekt
przedstawiam poni ˙zej

$ host 217.67.200.131

54

background image

Rozdział 7. Podstawy

131.200.67.217.in-addr.arpa domain name pointer hedera.linuxnews.pl.

W powy ˙zszych przykładach odpytanie zostało zlecone jednemu z serwerów nazw
podanych w pliku

/etc/resolv.conf

. Aby u ˙zy´c innego serwera nale ˙zy dodatkowo

poda´c jego numer IP np.:

$ host linuxnews.pl 195.94.213.2

Using domain server:
Name: 195.94.213.2
Address: 195.94.213.2#53
Aliases:

linuxnews.pl has address 217.67.200.131

Nawi ˛

azane poł ˛

aczenia i otwarte porty protokołu TCP/IP mo ˙zemy kontrolowa´c za

pomoc ˛

a programu netstat np.:

# netstat -tua

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address

Foreign Address

State

tcp

0

0 *:blackjack

*:*

LIS-

TEN
tcp

0

0 *:imaps

*:*

LIS-

TEN
tcp

0

0 *:ircs

*:*

LIS-

TEN
tcp

0

0 *:netbios-ssn

*:*

LIS-

TEN
tcp

0

0 *:ipp

*:*

LIS-

TEN
tcp

0

0 *:microsoft-ds

*:*

LIS-

TEN
tcp

0

0 gargamel:ircs

192.168.1.3:rapidmq-reg ES-

TABLISHED
tcp

0

0 gargamel:imaps

192.168.1.6:ttc-etap-ds ES-

TABLISHED
tcp

0

0 gargamel:td-postman

host-92.gadugadu.p:8074 ES-

TABLISHED
tcp

0

0 gargamel:cma

chrome.pl:5223

ES-

TABLISHED
tcp

0

0 *:1024

*:*

LIS-

TEN
udp

0

0 gargamel:netbios-ns

*:*

udp

0

0 *:netbios-ns

*:*

udp

0

0 gargamel:netbios-dgm

*:*

udp

0

0 *:netbios-dgm

*:*

udp

0

0 *:ipp

*:*

Zostały wy´swietlone dane dotycz ˛

ace protokołu TCP (opcja:

-t

) oraz UDP (

-u

). Do-

datkowo zostały wy´swietlone gniazda nasłuchuj ˛

ace (

-a

). Warte uwagi s ˛

a jeszcze

dwa parametry:

-n

i

-p

, pierwszy wy´swietla porty i adresy w postaci liczb, drugi

za´s wy´swietla nazwy programów korzystaj ˛

acych z danych gniazd.

55

background image

Rozdział 7. Podstawy

56

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Ten rozdział opisuje metody zarz ˛

adzania pakietami w systemie PLD.

Informacje podstawowe

Wst ˛ep

Instalowanie, deinstalowanie oraz aktualizowanie składników systemu operacyjne-
go to jedne z najwa ˙zniejszych zada ´n administratora. Zautomatyzowanie tych proce-
sów pozwala na znaczne przyspieszenie i ułatwienie zarz ˛

adzania systemem.

W ´swiecie Otwartego Oprogramowania pomi˛edzy programami istniej ˛

a liczne po-

wi ˛

azania, które w efekcie wymuszaj ˛

a konieczno´s´c instalacji dodatkowych progra-

mów i/lub bibliotek. Pomini˛ecie tych zale ˙zno´sci spowoduje problemy z działaniem
programu lub całkowity jego brak. ´Sledzenie tych zale ˙zno´sci mo ˙ze przyprawi´c o ból
głowy wi˛ekszo´s´c administratorów. Na szcz˛e´scie istniej ˛

a narz˛edzia, które nie tylko

pomagaj ˛

a zautomatyzowa´c ten proces, ale te ˙z wspomagaj ˛

a instalacj˛e, deinstalacj˛e i

aktualizacj˛e oprogramowania.

Elementy systemu operacyjnego dost˛epne s ˛

a w tzw. pakietach (pot. "paczkach"). Pa-

kiety mog ˛

a zawiera´c wiele małych programów i/lub bibliotek lub jeden du ˙zy pro-

gram mo ˙ze by´c podzielony na kilka pakietów. W PLD najcz˛e´sciej stosowane jest to
drugie rozwi ˛

azanie: osobno przechowywane s ˛

a pliki uruchomieniowe, osobno bi-

blioteki, a jeszcze osobno dodatkowe moduły, wtyczki i inne dodatki. Pozwala to
instalowa´c tylko to co jest nam potrzebne. Przykładowo je´sli jaki´s program wyma-
ga bibliotek innego programu to instalujemy tylko wymagany pakiet z bibliotekami.
Skraca to czas instalacji (zwłaszcza przy pobieraniu plików z Internetu) i pozwala
oszcz˛edza´c miejsce na dysku.

List˛e dost˛epnych ´zródeł pakietów znajdziemy tutaj: sekcja ´

Zródła pakietów w Rozdział

2

Menad˙zery pakietów

W PLD zastosowano system pakietów RPM (RPM Packet Manager). Jest to system
stworzony przez twórców dystrybucji Red Hat Linux, który zyskał na ´swiecie du ˙z ˛

a

popularno´s´c i obecnie jest najbardziej popularnym (i najpot˛e ˙zniejszym) dost˛epnym
systemem zarz ˛

adzania pakietami. U ˙zywaj ˛

ac PLD mamy do wyboru dwa menad ˙zery

pakietów, program Poldek - stworzony na potrzeby PLD, oraz klasyczny program
rpm.

Poldek jest narz˛edziem o ogromnych mo ˙zliwo´sciach, pozwalaj ˛

acym na znaczn ˛

a au-

tomatyzacj˛e procesu zarz ˛

adzania du ˙zymi ilo´sciami pakietów. Jest "wołem roboczym"

odci ˛

a ˙zaj ˛

acym administratora w tym ˙zmudnym zaj˛eciu, dzi˛eki czemu ´swietnie nada-

je si˛e do codziennego u ˙zytkowania. Poldek jest domy´slnym menad ˙zerem pakietów
dla PLD.

RPM jest programem wygodnym do zarz ˛

adzania mniejszymi ilo´sciami pakietów,

przez co lepiej si˛e sprawdza przy nietypowych zastosowaniach - np. instalowaniu
pakietów RPM spoza oficjalnych ´zródeł.

57

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Konwencja nazw pakietów w PLD

Tabela 8-1. Opis zawarto´sci pakietów w zale˙zno´sci od ich nazwy

Nazwa pakietu

Zawarto ´s ´c

program.arch.rpm, program-core.arch.rpm

główny pakiet programu, zawiera pliki

wykonywalne, dokumentacj˛e, skrypty
startowe w przypadku usług, niekiedy
biblioteki

program-libs.arch.rpm

zestaw bibliotek stworzonych na

potrzeby danego programu, s ˛

a niekiedy

wymagane przez inne programy

program-mod.arch.rpm,

program-plugin.arch.rpm,
program-applets.arch.rpm

ró ˙znej ma´sci moduły, "wtyczki", applety

i dodatki przewa ˙znie nie s ˛

a konieczne

do podstawowej pracy programu

program-skin(s).arch.rpm

"skórki" zmieniaj ˛

ace wygl ˛

ad

program-theme(s).arch.rpm

"tematy" zmieniaj ˛

ace wygl ˛

ad

program-driver.arch.rpm

sterowniki

program-i18.arch.rpm

dodatkowe wersje j˛ezykowe

program-devel.arch.rpm

pakiety potrzebne dla programistów

oraz osób, które zajmuj ˛

a si˛e

własnor˛eczn ˛

a kompilacj ˛

a programów

program-doc.arch.rpm

dokumentacja programu

program-static.arch.rpm

program skompilowany statycznie - nie

wymaga bibliotek

lib_nazwa_biblioteki.arch.rpm

zestaw uniwersalnych bibliotek, nie

zwi ˛

azanych z ˙zadnym konkretnym

programem.

Architektury

W nazwie pakietu tu ˙z przy rozszerzeniu pliku wyst˛epuje oznaczenie architektury. W
powy ˙zszej tabeli przedstawiono j ˛

a jako ci ˛

ag znaków "arch". Oznaczenie to okre´sla ar-

chitektur˛e dla jakiej pakiet został przygotowany. W PLD programy s ˛

a kompilowane

dla ró ˙znych architektur sprz˛etowych, pozwala to na u ˙zywanie systemu na bardziej
ró ˙znorodnym sprz˛ecie oraz na lepsze dopasowanie do u ˙zywanego procesora.

Wybór konkretnej architektury dokonuje si˛e poprzez wybór odpowiedniego kata-
logu na serwerze. Katalog zawieraj ˛

acy pakiety ma nast˛epuj ˛

ac ˛

a konstrukcj˛e:

/di-

sts/{$wersja}/PLD/{$arch}

. ($wersja okre´sla interesuj ˛

ac ˛

a nas wersj˛e systemu, $arch

to jedna z dost˛epnych architektur). Przykładowo adres

ftp://ftp.pld-linux.org/dists/2.0/PLD/i686/

dotyczy systemu w wersji 2.0 (Ac) z wybran ˛

a architektur ˛

a "

i686

".

58

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Tabela 8-2. Lista nazw kodowych architektur i odpowiadaj ˛

acych im rodzin proce-

sorów:

Nazwa architektury

Obsługiwana platforma

alpha

Compaq Alpha AXP

amd64

AMD K8 (Opetron, Athlon 64), Intel

Xeon EM64T

athlon

AMD K7 (Athlon, Duron)

i386

wszystkie procesory zgodne z x86 firmy

Intel

i586

procesory x86 nowsze ni ˙z 386, 486,

AMD K5 (wersje Socket 3)

i686

procesory x86 nowsze ni ˙z Pentium,

Cyrix 5x86, AMD K5 (wersje Socket7) i
AMD K6

ppc

PowerPC

sparc

Sun SPARC, Sun UltraSPARC

noarch

dowolna

Nale ˙zy pami˛eta´c by instalowa´c pakiety wył ˛

acznie przeznaczone dla u ˙zywanej archi-

tektury. Wyj ˛

atkiem s ˛

a pakiety z oznaczeniem

noarch

oraz pakiety przeznaczone dla

procesorów Intel x86 i zgodnych:

i386

,

i586

, oraz

i686

.

Architektury z rodziny x86 s ˛

a bardziej lub mniej wyspecjalizowanymi grupami, naj-

bardziej ogólna jest

386

, za´s ka ˙zda nast˛epna w kolejno´sci jest bardziej wyspecjalizo-

wana. Im w˛e ˙zsza specjalizacja grupy tym mniej modeli procesorów obsługuje. Przy-
kładowo na maszynie z procesorem Pentium III (

i686

) mo ˙zemy zainstalowa´c system

w wersji

i386

, ale na procesorze 386 wersja

i686

nie b˛edzie działa´c. Je´sli mamy now-

szy procesor, to b˛edziemy mogli u ˙zy´c bardziej wyspecjalizowanej architektury, a co
za tym idzie lepiej wykorzysta´c jego potencjał.

Aby sprawdzi´c architektur˛e komputera u ˙zywamy polecenia arch lub uname -m.

Polityka zarz ˛

adzania plikami przez pakiety

Zarz ˛

adzanie pakietami w PLD to czysta przyjemno´s´c. Je´sli instalujemy w systemie

jak ˛

a´s usług˛e to zostanie zapisana odpowiednia informacja do skryptów startowych i

nowe oprogramowanie uruchomi si˛e przy najbli ˙zszej zmianie trybu pracy lub restar-
cie systemu. Je ˙zeli jaka´s usługa jest wył ˛

aczona z działania i nast ˛

api jej aktualizacja,

to dalej nie b˛edzie uruchamiana.

Podobnie kurtuazyjnie traktowane s ˛

a pliki konfiguracyjne programów, po aktualiza-

cji pakietu nie s ˛

a naruszanie istniej ˛

ace pliki konfiguracji, nowe wersje tych plików s ˛

a

zapisywane z ko ´ncówk ˛

a "

.rpmnew

". Przykładowo po zaktualizowaniu pakietu

sudo

obok pliku

/etc/sudoers

pojawi si˛e nowy plik o nazwie

/etc/sudoers.rpmnew

, tak

wi˛ec zaktualizowany program b˛edzie u ˙zywał starego pliku konfiguracji. W wi˛ekszo-

´sci wypadków nie b˛edzie to stanowi´c problemu, jednak dla pewno´sci nale ˙zy skon-

59

background image

Rozdział 8. Zarz ˛

adzanie pakietami

figurowa´c plik dostarczony z nowszym pakietem na wzór poprzedniej konfiguracji
i zmieni´c mu nazw˛e poprzez usuni˛ecie omawianego rozszerzenia. Jest to pierwsza
rzecz, któr ˛

a nale ˙zy sprawdzi´c w razie problemów z działaniem programu po aktu-

alizacji.

W przypadku niektórych programów, po odinstalowaniu pakietu, pozostawiane s ˛

a

jego pliki konfiguracji. Pliki te mo ˙zemy zachowa´c lub skasowa´c je´sli uznamy ˙ze s ˛

a

nam zb˛edne, łatwo je odnajdziemy gdy ˙z nadawane im jest rozszerzenie "

.rpmsave

".

Jak wida´c zarz ˛

adzanie pakietami w PLD jest tak skonstruowane, aby nie zaskakiwa´c

administratora w najmniej oczekiwanych momentach, oraz zapewni´c nieprzerwanie
działanie systemu.

Zarz ˛

adzanie pakietami programem

poldek

Wst ˛ep

poldek jest instalatorem/aktualizatorem pakietów rpm. Napisał go Paweł Gajda jako
cz˛e´s´c instalatora PLD. Powiniene´s go mie´c po instalacji systemu. poldek mo ˙ze dzia-
ła´c w dwóch trybach: interaktywnym oraz wsadowym. Jest ´swietnym programem
ułatwiaj ˛

acym prac˛e zwykłego u ˙zytkownika, jak i administratora. Obsługuje ró ˙zne

´zródła pakietów: dysk, ftp, http, rsync. Najwa ˙zniejsz ˛

a zalet ˛

a poldka jest zdolno´s´c

do przetwarzania zale ˙zno´sci w pakietach. Osoby które przesiadły si˛e z dystrybucji
podobnych do Mandrake, na pewno odetchn ˛

a z ulg ˛

a. Zlecaj ˛

ac poldkowi instalacj˛e

jakiego´s programu, nie musimy martwi´c si˛e o nie spełnione zale ˙zno´sci, poldek robi
wszystko za nas.

Plik /etc/poldek.conf

Głównym plikiem konfiguracyjnym jest

/etc/poldek.conf

Plik ten zawiera w sobie

równie ˙z dokumentacj˛e do poszczególnych jego opcji, w formie komentarza. Omówi˛e
najistotniejsze z nich.

Niemal na samym pocz ˛

atku pliku znajdziesz kilka opcji zaczynaj ˛

acych si˛e od

so-

urce

. S ˛

a to tzw. ´zródła pakietów. Zawieraj ˛

a informacj˛e, dzi˛eki której program wie

sk ˛

ad ma instalowa´c pakiety. Wi˛ecej o tym w jaki sposób poldek zbiera informacje o

pakietach w rozdziale "Tryb wsadowy".

Oto przykład takiej opcji:

source = ac ftp://ftp.pld-linux.org/dists/2.0/PLD/athlon/PLD/RPMS/

Zapis składa si˛e z kilku cz˛e´sci.

source

pełni tutaj rol˛e słowa kluczowego, dalej mamy

znak równo´sci, który jest równie ˙z wymagany. Kolejna cz˛e´s´c to nazwa ´zródła. Słu ˙zy
do jego identyfikacji. Jego nazwa jest umowna i nie jest obowi ˛

azuj ˛

aca, wi˛ec mo ˙zemy

j ˛

a zmieni´c według naszych upodoba ´n. Ostatni ˛

a cz˛e´sci ˛

a jest ´scie ˙zka do ´zródła, nale ˙zy

pami˛eta´c o ostatnim znaku "/", który pełni tutaj kluczow ˛

a rol˛e. Istotn ˛

a rzecz ˛

a, która

jeszcze mo ˙ze si˛e przyda´c podczas pracy z kilkoma ´zródłami jest parametr

noauto

60

background image

Rozdział 8. Zarz ˛

adzanie pakietami

który wymusza na poldku pomini˛ecie czytania listy pakietów z oznaczonego w ten
sposób ´zródła. Pod ˛

a ˙zaj ˛

ac za powy ˙zszym przykładem robi si˛e to w ten sposób:

source = ac,noauto ftp://ftp.pld-linux.org/dists/2.0/PLD/athlon/PLD/RPMS/

Podczas instalacji poldkiem wi˛ekszej ilo´sci pakietów, np. podczas aktualizacji sys-
temu, program domy´slnie dzieli pakiety na porcje (tzw. sety). Je´sli nam si˛e to nie
podoba mo ˙zemy to zmieni´c przez zdj˛ecie znaku ’#’ przed opcj ˛

a:

#particle_install = no

Czasami zdarza si˛e, ˙ze po wczytaniu ´zródła lub kilku ´zródeł pakietów dost˛epne s ˛

a

duplikaty niektórych. Oczywi´scie nie w dosłownym tego słowa znaczeniu, ró ˙zni ˛

a si˛e

numerem wersji programu lub numerem Release (wersja pakietu). Autor poldka i to
przewidział.

#unique_package_names = yes

Zdj˛ecie znaku komentarza z powy ˙zszej opcji, wymusza na poldku odrzucenie dupli-
katu starszej wersji. Wy ˙zsza wersja jest wtedy traktowana priorytetowo.

Je ˙zeli jeste´s u ˙zytkownikiem, który lubi by´c informowanym o ka ˙zdym kroku powi-
niene´s zainteresowa´c si˛e poni ˙zsz ˛

a opcj ˛

a. Po ustawieniu jej na

yes

program czeka na

akcj˛e u ˙zytkownika przed instalacj ˛

a ka ˙zdego pakietu.

#confirm_installs = yes

Kolejna istotna opcja umo ˙zliwia stworzenie listy pakietów, których nie chcemy ak-
tualizowa´c wraz z całym systemem. Separatorem poszczególnych jej elementów jest
spacja.

#hold = kernel* dev

Ni ˙zej znajduje si˛e sekcja External downloaders configuration. Zawiera kilka przykłado-
wych programów pobieraj ˛

acych pliki wraz z ich opcjami. Jak wida´c poldek potrafi

pobiera´c pliki z ró ˙znego rodzaju ´zródeł.

#ftp_get

= /usr/bin/snarf %P %D

#ftp_get

= /usr/bin/wget -N --dot-style=binary -P %d %Pn

#http_get

= /usr/bin/wget -N --dot-style=binary -P %d %Pn

#https_get

= /usr/bin/curl %P -o %D

#rsync_get

= /usr/bin/rsync -v %P %d

#cdrom_get

= /usr/bin/vfjuggle %d %Pn

Tryb wsadowy poldka

Na samym pocz ˛

atku nale ˙zy powiedzie´c słowo w jaki sposób poldek korzysta ze ´zró-

deł, których konfiguracj˛e opisałem w poprzednim rozdziale. Poldek po przeczytaniu

´scie ˙zki szuka pliku zawieraj ˛

acego list˛e pakietów. Plik nosi nazw˛e

packages.dir.gz

i jest w postaci skompresowanej, co ma oznacza efektywniejsze pobieranie. Zawiera
on list˛e wszystkich pakietów w danym ´zródle. Tak ˛

a list˛e nazywamy indeksem. W

sytuacji kiedy w zasi˛egu danego ´zródła zmieniaj ˛

a si˛e pakiety, generowane s ˛

a ró ˙znice

61

background image

Rozdział 8. Zarz ˛

adzanie pakietami

indeksu. Dlatego podczas synchronizacji listy pakietów pobierane s ˛

a tylko ró ˙znice,

dzi˛eki czemu uzyskujemy kolejn ˛

a optymalizacj˛e czasu jej ´sci ˛

agania.

Po pierwszym uruchomieniu poldka, program po przeczytaniu ´scie ˙zki pobiera z niej
cały plik indeksu, nast˛epnie domy´slnie wczytuje z bazy

/var/lib/rpm

list˛e zainsta-

lowanych pakietów. Dalej w zale ˙zno´sci od podanych parametrów mo ˙zemy instalo-
wa´c, aktualizowa´c lub wyszukiwa´c pakiety.

Podpowied´z: Brak parametrów oznacza uruchomienie poldka w trybie interaktywnym,
który jest opisany dalej.

Obsług˛e poldka w trybie wsadowym mo ˙zemy porówna´c z obsług ˛

a programu apt-

get, znanego z Debiana. przeł ˛

aczniki trybu wsadowego pozwalaj ˛

a na swoiste omija-

nie opcji zapisanych w pliku

poldek.conf

. Co wi˛ecej, istnieje przeł ˛

acznik uniemo ˙z-

liwiaj ˛

acy poldkowi czytanie jakiejkolwiek konfiguracji. Je´sli chcesz pozna´c je wszyst-

kie po prostu uruchom poldka z parametrem

--help

(dla wygody: poldek --help |

less

).

Podczas pracy z poldkiem istotn ˛

a umiej˛etno´sci ˛

a jest aktualizacja indeksu. Słu ˙z ˛

a do

tego dwa przeł ˛

aczniki. Jeden ´sci ˛

aga tylko ró ˙znice (zalecane), drugi pobiera plik in-

deksu w cało´sci.

$ sudo poldek --up
Pobieranie ftp://ftp.pld-linux.org/dists/[...]/PLD/RPMS/packages.dir.mdd...
Pobieranie ftp://ftp.pld-linux.org/dists/[...]/packages.dir.diff.toc.gz...
.................................................. 100.0% [9.6K]
Weryfikacja http://[...]/packages.dir.diff.2003.12.29-22.40.35.gz... OK
Nakładanie łaty packages.dir.diff.2003.12.29-22.40.35.gz...

Zapisywanie /root/.poldek-cache/[...]/packages.dir.gz...
Zapisywanie sumy kontrolnej /root/.poldek-cache/[...]/packages.dir.mdd...

Jak wida´c na przykładzie, plik ró ˙znicy jest znikomej wielko´sci. Jest on w formie łatki,
dzi˛eki czemu poldek nakłada go na lokalny plik z indeksem. Dodatkowo zapisywana
jest suma kontrolna indeksu.

$ sudo poldek -n ac --upa
Pobieranie ftp://ftp.pld-linux.org/dists/2.0/[...]/packages.dir.mdd...
Pobieranie ftp://ftp.pld-linux.org/dists/2.0/[...]/packages.dir.gz...
.................................................. 100.0% [3.8M]
Weryfikacja ftp://ftp.pld-linux.org/dists/[...]/packages.dir.gz... OK

W tym przykładzie posłu ˙zyli´smy si˛e drugim przeł ˛

acznikiem, który wymusza na po-

ldku pobranie całego indeksu. Jak wida´c ró ˙znica wielko´sci pliku i jednocze´snie czasu
pobierania jest znaczna.

Opcje od´swie ˙zania indeksów maj ˛

a znaczenie przy ´zródłach zawieraj ˛

acych aktualiza-

cje. Je ˙zeli chcemy by´c na bie ˙z ˛

aco, mo ˙zemy zleci´c programowi cron okresowe aktu-

alizacje systemu, o czym za chwil˛e. Kiedy si˛e powinno stosowa´c oba sposoby aktu-
alizacji indeksu? Zalecane jest stosowanie przeł ˛

acznika

--up

, który pobiera jedynie

62

background image

Rozdział 8. Zarz ˛

adzanie pakietami

ró ˙znice, ze wzgl˛edu na wielko´s´c pobieranego pliku. Mo ˙ze si˛e jednak zdarzy´c, ˙ze z ja-
kich´s powodów plik indeksu ulegnie uszkodzeniu, co zostanie natychmiast zauwa-

˙zone przez poldka, wtedy nale ˙zy u ˙zy´c przeł ˛

acznika

--upa

, który pobierze index w

cało´sci.

Aktualizacja systemu

Do aktualizacji systemu w trybie wsadowym słu ˙zy przeł ˛

acznik

--upgrade-dist

. Po

wywołaniu poldka z tym parametrem wczyta on list˛e pakietów z pliku indeksowego
i porówna j ˛

a z list ˛

a pakietów zainstalowanych w systemie. Pozwoli mu to na weryfi-

kacj˛e wersji pakietów. Po wykonaniu tych czynno´sci nast ˛

api pobieranie a nast˛epnie

aktualizacja pakietów.

$ sudo poldek -n ac --upgrade-dist
Weryfikacja ftp://ftp.pld-linux.org/dists/[...]/packages.dir.gz... OK
Pobieranie ftp://ftp.pld-linux.org/[...]/setup-2.4.3-1.noarch.rpm...
[...]

Jak ju ˙z wcze´sniej wspomniałem, mo ˙zliwa jest automatyzacja tego procesu. Poni ˙zej
zamieszczam przykład tablicy crona (pami˛etajmy jednak ˙ze taki proces automatycz-
nej aktualizacji nie zawsze mo ˙ze robi´c to czego chcemy - zalecana jest w tym przy-
padku rozwaga).

0 5 * * * poldek --upa;poldek --hold=kernel* dev* --upgrade-dist

W powy ˙zszym przykładzie codziennie o pi ˛

atej rano poldek b˛edzie od´swie ˙zał plik z

indeksem oraz dokonywał aktualizacji. W takiej konfiguracji dobrze jest pobra´c in-
dex w cało´sci, aby si˛e upewni´c, ˙ze nie b˛edzie uszkodzony (łatka nie nało ˙zy si˛e na
uszkodzony plik indeksu). W trakcie aktualizacji dla pewno´sci u ˙zywamy przeł ˛

acz-

nika

--hold

, który pomija podczas aktualizacji podane jak w przykładzie pakiety.

Wyszukiwanie pakietów

Poldek posiada rozbudowany i bardzo szczegółowy system przeszukiwania pakie-
tów. Mo ˙zemy wyszukiwa´c pakiety zadaj ˛

ac poldkowi ró ˙zne kryteria od wyszukiwa-

nia pojedynczych plików, wyszukiwania pakietów po nazwach, po opisach pakietów
(tzw. description) po wykorzystanie mo ˙zliwo´sci wyra ˙ze ´n regularnych. Jedyn ˛

a wad ˛

a

całego systemu jest to, ˙ze podczas przeszukiwania pakietów w trybie wsadowym za
po´srednictwem przeł ˛

acznika

--shcmd

musimy wpisywa´c polecenia trybu interak-

tywnego. Poni ˙zej podam kilka u ˙zytecznych przykładów. Je´sli nie spełni ˛

a one Twoich

wymaga ´n, odsyłam Ci˛e do stron manuala poldka (man poldek). Pomoc mo ˙zemy
równie ˙z uzyska´c wydaj ˛

ac nast˛epuj ˛

ace polecenie:

$ sudo poldek --shcmd=’search -?’

lub

$ sudo poldek --shcmd=’rsearch -?’

63

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Drobna uwaga techniczna. Spis który zostanie wygenerowany po wydaniu dowol-
nego z tych polece ´n nie zmie´sci si˛e w obszarze ekranu, musimy u ˙zy´c kombinacji
klawiszy Shift+PgUp i analogicznie Shift+PgDn.

Scenariusz 1.

Pobrałe´s ´zródła jakiego´s programu. Z pewnych wzgl˛edów nie chce Ci si˛e on kom-
pilowa´c. Odkrywasz, ˙ze brakuje Ci którego´s pliku. Dla potrzeb przykładu niech to
b˛edzie plik

curses.h

. Jak go wyszuka´c?

$ sudo poldek --shcmd=’rsearch -f /^curses.h/’
Wczytywanie ftp://ftp.pld-linux.org/dists/2.0/PLD/[...]/packages.dir.gz...
Przeczytano 4438 pakietów
Wczytywanie /root/.poldek-cache/packages.dir.dbcache.var.lib.rpm.gz...
Przeczytano 569 pakietów
Przeszukiwanie pakietów..........................................zrobione.
1 package(s) found:
ncurses-devel-5.3-4

Oto klasyczny przykład wyszukiwania plików w trybie wsadowym. Je´sli znasz do-
kładn ˛

a nazw˛e pliku którego szukasz mo ˙zesz si˛e na nim oprze´c. Polecenie rsearch

interpretuje wszystko co wpisujesz jako wyra ˙zenia regularne. Przeł ˛

acznik

-f

prze-

kazuje poldkowi ˙ze ma szuka´c plików. Dlaczego taka składnia? Otó ˙z, jest to wymóg
stosowania wyra ˙ze ´n regularnych (regular expressions). ’//’ oznacza wzorzec. Jest to
skrócony zapis wzorca perlowego (m//). ’^’ jest to znacznik pocz ˛

atku ci ˛

agu znaków.

Dosłownie: "zaczynaj ˛

ace si˛e od ...". Czyli wyszukali´smy plik którego nazwa zaczyna

si˛e od

curses.h

. Je´sli nie wpiszemy znaku specjalnego ’^’, poldek wyszuka wszyst-

ko pasuj ˛

ace do wzorca ’curses.h’. Innymi słowy potraktuje to jako *curses.h*.

Scenariusz 2.

Zaciekawiło Ci˛e sterowanie pilotem od telewizora aplikacjami w Twoim systemie.
Potrzebujesz oprogramowania do obsługi podczerwieni. Jak je wyszuka´c? Skorzy-
stamy z mo ˙zliwo´sci poldka do wyszukiwania pakietów po ich opisach.

$ sudo poldek --shcmd=’rsearch -d /podczerwie´

n/’

Wczytywanie ftp://ftp.pld-linux.org/dists/2.0/PLD/[...]/packages.dir.gz...
Przeczytano 4438 pakietów
Wczytywanie /root/.poldek-cache/packages.dir.dbcache.var.lib.rpm.gz...
Przeczytano 569 pakietów
Przeszukiwanie pakietów..........................................zrobione.
13 package(s) found:
kernel-char-lirc-dev-0.6.6-2@2.4.21_1.6
kernel-char-lirc-gpio-0.6.6-2@2.4.21_1.6
kernel-char-lirc-i2c-0.6.6-2@2.4.21_1.6
kernel-char-lirc-parallel-0.6.6-2@2.4.21_1.6
kernel-char-lirc-serial-0.6.6-2@2.4.21_1.6
kernel-char-lirc-sir-0.6.6-2@2.4.21_1.6
kernel-smp-char-lirc-dev-0.6.6-2@2.4.21_1.6
kernel-smp-char-lirc-gpio-0.6.6-2@2.4.21_1.6
kernel-smp-char-lirc-i2c-0.6.6-2@2.4.21_1.6
kernel-smp-char-lirc-serial-0.6.6-2@2.4.21_1.6
kernel-smp-char-lirc-sir-0.6.6-2@2.4.21_1.6
multisync-irmc-0.81-0.1
pnetlib-irda-0.6.0.1-3

64

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Najbardziej b˛ed ˛

a Ci˛e interesowały oczywi´scie pakiety z lirc w nazwie.

Scenariusz 3.

Zrezygnowałe´s z Red Hata, lub z Mandrake, na rzecz PLD, bo kolega Ci powiedział,
" ˙ze jest lepszy". Przebrn ˛

ałe´s przez proces instalacji, ale nie mo ˙zesz znale´z´c programu

kmail - Twojego ulubionego klienta poczty (MUA). Nie poddajesz si˛e tak łatwo i
postanawiasz szuka´c. Oczywi´scie dwie poprzednie metody równie ˙z si˛e doskonale
nadaj ˛

a. Jest jeszcze jedna, bardziej oczywista:

$ sudo poldek --shcmd=’ls *kmail*’
Wczytywanie ftp://ftp.pld-linux.org/dists/2.0/PLD/[...]/packages.dir.gz...
Przeczytano 4438 pakietów
Wczytywanie /root/.poldek-cache/packages.dir.dbcache.var.lib.rpm.gz...
Przeczytano 569 pakietów
kdepim-kmail-3.1.94.031204-1
kdepim-libkmailprivate-3.1.94.031204-1

Posłu ˙zyli´smy si˛e tutaj zwykłym listowaniem pakietów o zadanej masce. Ta metoda
przeszukiwania nie jest zbyt pewna. Osobi´scie preferuj˛e t ˛

a pierwsz ˛

a.

Instalacja pakietów

Do instalacji pakietów w trybie wsadowym u ˙zywamy przeł ˛

acznika

-i

. I to wszystko

co musisz zrobi´c aby dokona´c instalacji. Poldek (o ile wyst˛epuj ˛

a) przetworzy wszyst-

kie zale ˙zno´sci.

# poldek -i bc
Pobieranie ftp://ftp.pld-linux.org/dists/[...]/bc-1.06-13.i686.rpm...
.................................................. 100.0% [203.2K]

Proste, nieprawda ˙z? Te ˙z tak s ˛

adz˛e. Je ˙zeli jeste´smy ostro ˙zni z natury, mo ˙zemy doda´c

opcj˛e

-t

która przeprowadzi symulacj˛e instalacji. Zamiennie z

-i

mo ˙zemy stosowa´c

przeł ˛

acznik

-U

oznaczaj ˛

acy upgrade. Nie oznacza to wcale, ˙ze przeł ˛

acznika

-i

mo-

˙zemy u ˙zy´c do aktualizacji pakietów. Nie zalecam. Mo ˙ze si˛e zdarzy´c, ˙ze b˛edziemy

potrzebowali powróci´c do poprzedniej wersji którego´s z pakietów. Robimy to tak:

$ rpm -q aterm
aterm-0.4.2-6
$ sudo poldek -n ac-old --downgrade aterm
Pobieranie ftp://ftp.pld-linux.org/dists/[...]/aterm-0.4.2-5.i686.rpm...
.................................................. 100.0% [128.5K]
$ rpm -q aterm
aterm-0.4.2-5

Pozwol˛e sobie tutaj na komentarz. Opcja

-n

oznacza nazw˛e ´zródła dla poldka. Wska-

załem tutaj na ac-old. W chwili pisania tego dokumentu nie ma takiego ´zródła, wi˛ec
nie nale ˙zy przykładu traktowa´c dosłownie. Ac-old oznacza repozytorium starszych
pakietów. Mo ˙ze to by´c repozytorium pakietów, które zostało zamro ˙zone i nic si˛e w
nim nie zmienia. Tylko z takiego miejsca mo ˙zna skorzysta´c je´sli potrzebujemy star-
szych wersji potrzebnych nam pakietów. Przeł ˛

acznik

--downgrade

przekazuje po-

ldkowi aby dokonał dezaktualizacji pakietu lub pakietów, które po nim nast˛epuj ˛

a.

65

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Podpowied´z: Je˙zeli nie wska˙zemy poldkowi sk ˛

ad ma czerpa´c starsz ˛

a wersj ˛e danego

pakietu, operacja si ˛e nie powiedzie.

Deinstalacja pakietów

Do ogólnej wiedzy o poldku, niezb˛edna jest jeszcze umiej˛etno´s´c deinstalacji pakie-
tów. Aby tego dokona´c wystarczy poda´c poldkowi parametr

-e

w taki sposób:

$ sudo poldek -e bc
Zaznaczono 1 pakiet do usuni˛

ecia:

R bc-1.06-13
Kontynuowa´

c? [y/N]

Poldek czeka teraz na nasz ˛

a odpowied´z. Je´sli Ci to bardzo przeszkadza mo ˙zesz u ˙zy´c

dodatkowo przeł ˛

acznika

--noask

aby od razu dokonał deinstalacji bez zadawania

pytania. Jednak nie jest zalecane korzystanie z tego przeł ˛

acznika - czasami chwila

nieuwagi mo ˙ze nas sporo kosztowa´c. Po potwierdzeniu, poldek natychmiast przy-
st˛epuje do dzieła.

Na tym zako ´nczymy opis trybu wsadowego. Jak na pewno zd ˛

a ˙zyłe´s zauwa ˙zy´c, na-

daje si˛e doskonale do wykorzystania w ró ˙znego rodzaju skryptach (automatach).

Tryb interaktywny

Jak ju ˙z wcze´sniej napisałem, tryb interaktywny poldka uruchamia si˛e wydaj ˛

ac po-

lecenie poldek bez ˙zadnych parametrów (opcjonalnie poldek --shell). W trybie inte-
raktywnym poldek posiada własn ˛

a powłok˛e. Jest ona podobna do znanej by´c mo ˙ze

niektórym osobom powłoki modułu CPAN perla. Posiada nast˛epuj ˛

ace cechy: historia

polece ´n oraz auto uzupełnianie (klawisz Tab).

$ sudo poldek
Wczytywanie ftp://ftp.pld-linux.org/dists/2.0/PLD/[...]/packages.dir.gz...
Przeczytano 4438 pakietów
Ładowanie pakietów z bazy [/var/lib/rpm]........zrobione
Przeczytano 569 pakietów
Witaj w poldekowym trybie interaktywnym. Wpisz "help" aby otrzyma´

c pomoc.

poldek>

Zaznajomieni ju ˙z nieco z działaniem poldka, widzimy kolejne fazy jego uruchamia-
nia. Ostatnim etapem jest uruchomienie powłoki. Pierwsze co powinni´smy teraz zro-
bi´c to:

poldek> help
poldek 0.18.1 (stable)
Copyright (C) 2000-2002 Pawel A. Gajda <

mis@pld.org.pl

>

This program may be freely redistributed under the terms of the GNU GPL v2
ls

[OPCJA...] [PAKIET...]

Poka˙

z pakiety

66

background image

Rozdział 8. Zarz ˛

adzanie pakietami

install

[OPCJA...] PAKIET...

Instaluj pakiety

uninstall [OPCJA...] PAKIET...

Deinstaluj pakiety

get

[OPCJA...] PAKIET...

´

Sci ˛

agaj pakiety

search

[OPCJA...] WZORZEC [PAKIET...]

Przeszukiwanie pakietów

desc

[OPCJA...] PAKIET...

Wy´

swietlaj informacje o pakietach

reload

Przeładuj list˛

e zainstalowanych pakietów

help

Poka˙

z wła´

snie wy´

swietlan ˛

a pomoc

quit

Zamknij poldka

Jak dot ˛

ad komendy "search" i "desc" nie działaj ˛

a z zainstalowanymi pakietami.

Wpisz KOMENDA -? by otrzyma´

c pomoc na temat danej komendy.

poldek>

Jak widzimy na przykładzie, dost˛epny jest skrótowy opis dost˛epnych polece ´n po-
włoki poldka. Poni ˙zej widzimy równie ˙z informacj˛e w jaki sposób uzyska´c bardziej
szczegółowe informacje na temat poszczególnych polece ´n.

Aktualizacja systemu

Tryb interaktywny oferuje nam ciekaw ˛

a funkcj˛e. Pozwala ona na zrobienie przegl ˛

adu

pakietów zainstalowanych w naszym systemie i porównanie ich z baz ˛

a ´swie ˙zych

indeksów poldka. Umo ˙zliwia nam ona wizualne rozeznanie oraz wybór pakietów
które chcemy aktualizowa´c.

poldek> llu
dost˛

epny

zainstalowany data zbudowania

rozmiar

[...]
aMule-1.2.1-1

1.1.2-1

2003/12/14 21:57

3.1 MB

aalib-1.4rc5-8

1.4rc5-7

2003/12/17 20:53

103.0 KB

acl-2.2.21-2

2.2.7-2

2003/12/15 10:04

93.0 KB

acl-devel-2.2.21-2

2.2.7-2

2003/12/15 10:04

54.0 KB

applnk-1.9.0-1

1.6.3-1

2003/12/10 18:46

181.0 KB

apr-0.9.5-0.3

0.9.4-1

2003/11/23 02:19

181.0 KB

[...]
poldek>

W tym trybie, dzi˛eki takiej reprezentacji, mo ˙zemy w sposób bardziej selektywny do-
konywa´c aktualizacji pakietów w naszym systemie. Je ˙zeli chodzi o gruntown ˛

a aktu-

alizacj˛e systemu, zalecałbym u ˙zycie trybu wsadowego. Ok, w jaki wi˛ec sposób do-
kona´c aktualizacji jakiego´s pakietu? Oto poldek w akcji:

poldek> upgrade irssi-*
Przetwarzanie zale˙

zno´

sci...

irssi-plugin-idea-0.8.8-0.1 zostanie zast ˛

apiony przez \

irssi-plugin-idea-0.8.9-0.1

irssi-0.8.8-0.1 zostanie zast ˛

apiony przez irssi-0.8.9-0.1

Zaznaczono 2 pakiety do instalacji, 2 do usuni˛

ecia:

I irssi-0.8.9-0.1
I irssi-plugin-idea-0.8.9-0.1
R irssi-0.8.8-0.1
R irssi-plugin-idea-0.8.8-0.1
Pobieranie ftp://[...]/irssi-plugin-idea-0.8.9-0.1.athlon.rpm...
.................................................. 100.0% [26.9K]
Pobieranie ftp://ftp.pld-linux.org/[...]/irssi-0.8.9-0.1.athlon.rpm...

67

background image

Rozdział 8. Zarz ˛

adzanie pakietami

.................................................. 100.0% [878.6K]
Uruchamianie rpm --upgrade -vh --root / --noorder...
Przygotowywanie...

########################################### [100%]

1:irssi

########################################### [ 50%]

2:irssi-plugin-idea

########################################### [100%]

poldek>

Obszerniejszy komentarz wydaje mi si˛e zb˛edny. Jak wida´c poldek informuje nas o
wszystkim na ka ˙zdym kroku. Wida´c tutaj wyra´znie trzy etapy. Znakowanie pakie-
tów, pobieranie nowych, aktualizacja. Wydaj ˛

ac polecenie upgrade mo ˙zemy równie ˙z

instalowa´c nim pakiety.

Instalacja pakietów

Instalacja pakietów w trybie interaktywnym przebiega w sposób analogiczny do ich
aktualizacji. Aby dokona´c instalacji jakiego´s pakietu musimy wyda´c polecenie in-
stall, którego argumentem jest nazwa pakietu. Najlepiej jest poda´c poldkowi pełn ˛

a

jego nazw˛e wraz z numerem wersji programu oraz wersji pakietu. Podczas pracy z
trybem interaktywnym warto pami˛eta´c o autouzupełnianiu klawiszem Tab. Dla osób
które nie korzystały nigdy z takiej funkcjonalno´sci krótka instrukcja. Piszemy pierw-
sze litery pakietu, nast˛epnie naciskamy Tab, je ˙zeli nic nam si˛e nie uzupełni, trzeba
nacisn ˛

a´c go ponownie. Utworzy si˛e lista pasuj ˛

acych pakietów do wzorca utworzo-

nego przez nas przed naci´sni˛eciem tabulatora. Uzupełniamy ponownie, i naciskamy
Tab

, do skutku. Poni ˙zej przykład instalacji pakietu w trybie interaktywnym.

poldek> install bc-1.06-13

Przetwarzanie zale˙

zno´

sci...

Zaznaczono 1 pakiet do instalacji:
I bc-1.06-13
Pobieranie ftp://ftp.pld-linux.org/dists/[...]/bc-1.06-13.athlon.rpm...
.................................................. 100.0% [202.9K]
Uruchamianie rpm --upgrade -vh --root / --noorder...
Przygotowywanie...

########################################### [100%]

1:bc

########################################### [100%]

poldek>

Wyja´sni˛e teraz nomenklatur˛e przykładowego pakietu. W powy ˙zszym przykładzie
zainstalowałem binary calculator (bc). Nazwa pakietu składa si˛e z nazwy programu
bc, wersji programu (1.06) oraz wersji pakietu (13). W ten sposób wygl ˛

ada nomenkla-

tura pakietów w PLD Linux Distrubution. Podobnie oznaczane s ˛

a pakiety w innych

dystrybucjach. Poldek po kolei informuje nas o tym co wykonuje. W pierwszej kolej-
no´sci zaznacza pakiet, który ma zainstalowa´c (I), nast˛epnie pobiera go ze ´zródła by
na ko ´ncu dokona´c jego instalacji.

Podczas instalowania pakietów, mo ˙zemy równie ˙z posłu ˙zy´c si˛e przeł ˛

acznikiem

-t

,

który przeprowadzi symulacj˛e instalacji pakietu w systemie.

Wyszukiwanie pakietów

Opis wyszukiwania pakietów znajdziesz w dziale po´swi˛econym trybowi wsadowe-
mu. Chocia ˙z wyszukiwanie pakietów odbywa si˛e poprzez wpisywanie polece ´n try-

68

background image

Rozdział 8. Zarz ˛

adzanie pakietami

bu interaktywnego, zdecydowałem si˛e je opisa´c w trybie wsadowym ze wzgl˛edu to,
i ˙z cz˛esto si˛e z niego korzysta wła´snie w ten sposób.

Odinstalowanie pakietów

Aby odinstalowa´c jaki´s pakiet u ˙zywamy polecenia uninstall oraz podajemy nazw˛e
pakietu. Musi by´c ona jednoznaczna dla poldka. Wi˛ec je´sli mamy w systemie zain-
stalowane pakiety: bc oraz bcc, wydaj ˛

ac polecenie uninstall bc, poldek nie b˛edzie

wiedział o który pakiet nam chodzi. Podczas tej czyno´sci warto posługiwa´c si˛e do-
pełnianiem składni (klawisz Tab), aby uzyska´c pełn ˛

a nazw˛e pakietu. Poniewa ˙z po-

ldek przetwarza zale ˙zno´sci, musimy zachowa´c ostro ˙zno´s´c. Czasami deinstaluj ˛

ac ja-

ki´s kluczowy pakiet, mo ˙zemy odinstalowa´c sobie znaczn ˛

a cz˛e´s´c systemu, a przecie ˙z

nie chcemy. Bardziej zaawansowani u ˙zytkownicy eksperymentuj ˛

acy z systemem, na-

ra ˙zeni s ˛

a na zerwanie zale ˙zno´sci w pakietach. Powinni wtedy korzysta´c z opcji

-t

,

aby nie nara ˙za´c si˛e na zb˛edne kłopoty. Oto typowy przykład deinstalacji pakietu:

poldek> uninstall bc-1.06-13
Zaznaczono 1 pakiet do usuni˛

ecia:

R bc-1.06-13
Kontynuowa´

c? [y/N]

Uruchamianie rpm --erase --root /...
poldek>

W powy ˙zszym przykładzie, po wydaniu polecenia deinstalacji pakietu, poldek za-
znaczył go jako "R" czyli Removed. Pakiet nie miał zale ˙zno´sci, wi˛ec zaznaczył tylko
ten. Nast˛epnie czeka na nasz ˛

a decyzj˛e. Po zatwierdzeniu deinstalacji, poldek natych-

miast deinstaluje pakiet.

Program RPM

Instalowanie pakietów

U ˙zywaj ˛

ac programu rpm posługujemy si˛e nast˛epuj ˛

acym schematem: rpm [opcje]

pakiet.rpm

Instalacja pakietu jest dosy´c prosta. Załó ˙zmy ˙ze pobrali´smy z sieci plik

docbook-

dtd31-sgml-1.0-12.noarch.rpm

, teraz jedyn ˛

a rzecz ˛

a jak ˛

a musimy wykona´c jest

wydanie polecenia rpm z opcj ˛

a

-i

. U ˙zywaj ˛

ac kombinacji

-ivh

dla procesu instalacji,

-Uvh

uzyskamy pasek post˛epu instalcji dla poszczególnych instalowanych pakietów.

# rpm -i docbook-dtd31-sgml-1.0-12.noarch.rpm

Brak ostrze ˙ze ´n lub bł˛edów oznacza prawidłow ˛

a instalacj˛e, teraz nieco skomplikuje-

my sytuacj˛e:

# rpm -i libghttp-devel-1.0.9-4.i686.rpm
error: failed dependencies:

libghttp = 1.0.9 is needed by libghttp-devel-1.0.9-4

69

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Tym razem instalacja si˛e nie powiodła, poniewa ˙z pakiet

libghttp-devel

wymaga

zainstalowanego pakietu

libghttp

. Aby instalacja pakietu si˛e powiodła wykonuje-

my nast˛epuj ˛

ace polecenie:

# rpm -i libghttp-devel-1.0.9-4.i686.rpm libghttp-1.0.9-4.i686.rpm

Teraz wszystko jest w porz ˛

adku, oba pakiety s ˛

a zainstalowane. Mo ˙zliwe jest instalo-

wanie pakietu z opcj ˛

a ignorowania zale ˙zno´sci:

--nodeps

, opcj˛e t ˛

a stosujemy jednak

w ostateczno´sci.

Aktualizowanie pakietów

Aktualizacja przebiega podobnie jak instalacja, tyle ˙ze u ˙zywamy przeł ˛

acznika

-U

np.:

# rpm -U docbook-dtd31-sgml-1.0-13.noarch.rpm

Nale ˙zy pami˛eta´c o tym, ˙ze aktualizacja nast ˛

api tylko wtedy gdy w systemie jest za-

instalowana starsza wersja, w przeciwnym wypadku zostaniemy poinformowani, ˙ze
pakiet jest ju ˙z zainstalowany. Aby dokona´c reinstalacji pakietu wykonujemy polece-
nie

# rpm -i docbook-dtd31-sgml-1.0-13.noarch.rpm --force

Odinstalowywanie pakietów

Zainstalowali´smy kilka pakietów, teraz mo ˙zemy spróbowa´c je odinstalowa´c - wyko-
nujemy to przy u ˙zyciu opcji

-e

.

# rpm -e libghttp-devel-1.0.9-4.i686.rpm libghttp-1.0.9-4.i686.rpm
error: package libghttp-devel-1.0.9-4.i686.rpm is not installed
error: package libghttp-1.0.9-4.i686.rpm is not installed

Có ˙z tu si˛e stało? Podano nieprawidłow ˛

a nazw˛e pakietu, nale ˙zy pami˛eta´c o tym, ˙ze

przy odinstalowaniu pakietu nie podaje si˛e rozszerzenia pakietu. Poprawne polece-
nie przedstawiono poni ˙zej:

# rpm -e libghttp-devel libghttp

lub:

# rpm -e libghttp-devel-1.0.9-4 libghttp-1.0.9-4

Uwaga: pierwszy przykład stosuje si˛e w przypadku zainstalowania jednej wersji pa-
kietu, drugi za´s u ˙zywa si˛e w przypadku kilku ró ˙znych (np. dwie ró ˙zne wersje j ˛

adra).

70

background image

Rozdział 8. Zarz ˛

adzanie pakietami

Uwagi

Program rpm posiada o wiele bogatsze opcje, przedstawiono tu zaledwie kilka naj-
wa ˙zniejszych, wi˛ecej mo ˙zna znale´z´c w podr˛eczniku systemowym (man/info).

71

background image

Rozdział 8. Zarz ˛

adzanie pakietami

72

background image

Rozdział 9. Konfiguracja systemu

Ten rozdział prezentuje metody konfiguracji parametrów systemu.

J ˛

adro systemu

Jak zapewne wi˛ekszo´sci z was wiadomo j ˛

adro (kernel) jest najwa ˙zniejszym elemen-

tem ka ˙zdego systemu. W uproszczeniu mo ˙zna powiedzie´c, ˙ze zajmuje si˛e ono nad-
zorowaniem komunikacji wszystkich elementów systemu.

Moduły j ˛

adra - po co nam one

Moduły j ˛

adra zostały stworzone po to by kernel zajmował mało pami˛eci operacyjnej

i był zarazem uniwersalny. Ułatwiaj ˛

a one tak ˙ze prace ludziom zaanga ˙zowanym w

rozwój kernela i dodatkowych modułów (nie potrzeba kompilowa´c całego kernela
by sprawdzi´c zmiany, wystarczy tylko sam moduł) Wyobra´z sobie sytuacj˛e, w której
masz wkompilowane do niego wszystko, a twój system nie posiada urz ˛

adze ´n, które

kernel potrafi obsłu ˙zy´c. Jest to du ˙ze marnotrawstwo, poniewa ˙z w pami˛eci znajd ˛

a si˛e

nie potrzebne nam funkcje. Doda´c nale ˙zy fakt, ograniczenia wielko´sci j ˛

adra (mo ˙zna

to zmieni´c odpowiednimi przeróbkami ´zródeł via Red Hat). Dlatego lubimy moduły.
Daj ˛

a nam one mo ˙zliwo´s´c wyboru mi˛edzy tym co niezb˛edne, a brakiem wsparcia dla

urz ˛

adze ´n. Podsumowuj ˛

ac. Nie potrzebujesz to nie u ˙zywasz.

By móc u ˙zywa´c modułów potrzebujesz dwóch rzeczy. Kernela z wkompilowan ˛

a

opcj ˛

a

Loadable module support

oraz sterowników skompilowanych jako modu-

ły. Poniewa ˙z u ˙zywasz PLD to nie masz co si˛e głowi´c poniewa ˙z wszystko to masz u
siebie w systemie.

/etc/modules

Plik ten zawiera list˛e modułów, które zostan ˛

a załadowane podczas startu systemu

lub przy zmianie poziomu uruchomienia systemu.

Np. Załadownie sterownika karty muzycznej znajduj ˛

acej si˛e na płycie głównej. Naj-

pierw musimy wiedzie´c jaki moduł mamy załadowa´c. Mo ˙zna szuka´c ró ˙znymi me-
todami, ale najlepsza jest chyba

google

. Je ˙zeli wiesz mniej wi˛ecej jak nazywa si˛e

moduł, to spróbuj wyszuka´c wydaj ˛

ac polecenie

# modprobe -l *audio*
/lib/modules/2.6.5-1/kernel/sound/oss/via82cxxx_audio.ko
/lib/modules/2.6.5-1/kernel/sound/oss/nm256_audio.ko
/lib/modules/2.6.5-1/kernel/sound/oss/i810_audio.ko
/lib/modules/2.6.5-1/kernel/sound/oss/btaudio.ko
/lib/modules/2.6.5-1/kernel/sound/usb/snd-usb-audio.ko
/lib/modules/2.6.5-1/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
/lib/modules/2.6.5-1/kernel/drivers/usb/class/audio.ko
/lib/modules/2.6.5-1/kernel/drivers/media/video/tvaudio.k

73

background image

Rozdział 9. Konfiguracja systemu

Otrzymali´smy list˛e modułów pasuj ˛

acych do wzorca bez ich ładowania. Mój chipset

na płycie głównej to via82*, wi˛ec próbuj˛e czy zadziała z moja kart ˛

a d´zwi˛ekow ˛

a.

modprobe via82cxxx_audio

Moduł załadował si˛e bez bł˛edów, dlatego zapuszczam jak ˛

a´s muzyczk˛e by sprawdzi´c

czy działa. Poniewa ˙z wszystko si˛e udało i chciałbym, ˙zeby moja karta muzyczna była
zawsze w pogotowiu wi˛ec dopisuje j ˛

a do

/etc/modules

przykładowo w taki sposób.

echo "via82cxxx_audio" >> /etc/modules

Warto zapozna´c si˛e tak ˙ze z nast˛epuj ˛

acymi poleceniami operuj ˛

acymi na modułach:

Polecenie

Jego krótki opis

lsmod

wy´swietla wszystkie w danej chwili
załadowane moduły

modinfo

podaje opis modułu podany przez jego
twórc˛e

insmod

instaluje moduł do działaj ˛

acej wersji

j ˛

adra

depmod

tworzenie pliku zale ˙zno´sci do podanego
j ˛

adra

/etc/modprobe.conf

Plik jest rozszerzeniem pliku

/etc/modules

i ma on bardzo du ˙zo opcji. Dlatego po

szersz ˛

a lektur˛e zapraszam do man, a w tym tek´scie omówi˛e tylko niewielki frag-

ment mo ˙zliwo´sci konfiguracji. Warto doda´c i ˙z we wcze´sniejszych wersjach kernela (
< 2.6.0) plik nazywał si˛e

/etc/modules.conf

.

Je ˙zeli masz kernela dystrybucyjnego i działa ci sie´c to w

modprobe.conf

masz wpisy

do konfiguracji karty sieciowej. Moja karta jest na układzie

8139 firmy Realtek

i

jest jedyn ˛

a w tym komputerze. By była ładowana i usuwana z systemu przez skrypty

interfaces (b˛ed ˛

a omówione w tym dokumencie) nale ˙zy dokona´c wpisu o nast˛epuj ˛

acej

tre´sci

alias eth0 8139too

do

/etc/modprobe.conf

. Dzi˛eki tej linijce wszelkie odwołania przy ładowaniu mo-

dułów np.

modprobe eth0

załaduj ˛

a automatycznie moduł

8139too

. W przypadku posiadania drugiej karty sie-

ciowej nale ˙zy post˛epowa´c analogicznie (zamieni´c eth0 na eth1).

Je ˙zeli my´slisz, ˙ze to troch˛e bez sensu, to si˛e mylisz. Przypu´s´cmy, ˙ze masz komputer z
dwoma kartami sieciowymi. Pewnego pi˛eknego dnia jedna z nich uległa uszkodze-
niu i musisz j ˛

a wymieni´c. Wszystko ładnie wymieniasz, podpinasz kabelek i star-

74

background image

Rozdział 9. Konfiguracja systemu

tujesz komputer. Poniewa ˙z miałe´s w kompilowane wszystko w j ˛

adro (pech chciał

˙ze masz inn ˛

a kart˛e która nie jest w kompilowana), to musisz je przekompilowa´c

na nowo. Wszystko poszło ładnie, kernel wystartował i wykrył kart˛e no ale masz
teraz pierwsz ˛

a star ˛

a kart˛e jako drug ˛

a, a now ˛

a jako pierwsz ˛

a (sytuacja hipotetycz-

na ale mo ˙zliwa). Tak ˛

a sytuacje mo ˙zna rozwi ˛

aza´c przesyłaj ˛

ac parametry do kernela

przy uruchamianiu systemu lub zmieniaj ˛

ac ustawienia tam, gdzie masz odwołania

do kart. Dobra. A teraz mała reklama modułów. Masz sytuacj˛e podobn ˛

a powy ˙zszej i

rozwi ˛

azujesz j ˛

a nast˛epuj ˛

aco (zwłaszcza jak masz serwer z mo ˙zliwo´sci ˛

a wymiany kart

bez jego wył ˛

aczania). Karta jest na swoim miejscu i przyst˛epujemy do jej uruchomie-

nia. Po dowiedzeniu si˛e jaki moduł j ˛

a obsługuje zagl ˛

adamy do

/etc/modprobe.conf

i zmieniamy linijk˛e

alias ethX moduł_starej_karty

gdzie X jest numerem interfejsu na

alias ethX moduł_nowej_karty

Po tych operacjach wystarczy uruchomi´c na nowo interfejs i mamy działaj ˛

ac ˛

a sie´c

tak samo jak przed awari ˛

a.

Cz˛esto u ˙zywa si˛e mo ˙zliwo´sci przesłania do modułu ustawie ´n. Przedstawi˛e to na
przykładzie drukarki podpi˛etej do portu lpt.

alias parport_lowlevel parport_pc
options parport_pc io=0x378, irq=7

W tym fragmencie pliku

/etc/modprobe.conf

widzimy ju ˙z znany

alias

z tym,

˙ze w troch˛e innej formie. Poniewa ˙z wyst˛epuje tu

nazwa_jednego_modułu i na-

zwa_drugiego_modułu

. Oznacza to, ˙ze jak b˛edzie potrzeby moduł

parport_lowlevel

,

to zostanie te ˙z automatycznie załadowany moduł

parport_pc

. Natomiast druga przed-

stawiona linijka przesyła jako parametr do modułu

parport_pc

argumenty we/wy

i przerwania. Wi˛ecej informacji mo ˙zna uzyska´c po wydaniu polecenia modinfo par-
port_pc

. Nale ˙zy zaznaczy´c, ˙ze moduły te nie s ˛

a automatycznie ładowane przy star-

cie. Je ˙zeli chcesz by były, to nale ˙zy dopisa´c je (w tym wypadku jeden

parport_pc

)

do pliku

/etc/modules

. W tym konkretnym wypadku jednak nie ma takiej potrzeby,

poniewa ˙z moduł ten jest ładowany, je´sli jest potrzebny (przy próbie drukowania).

Initrd

Wst ˛ep

Zdarza si˛e czasami, ˙ze potrzebujemy uruchomi´c PLD z naszego dysku twardego w
innym komputerze. Je´sli drugi komputer posiada inn ˛

a płyt˛e główn ˛

a lub inny sys-

tem plików, niemal pewne jest to ˙ze system si˛e nie uruchomi. Ujrzymy na ekranie
komunikat j ˛

adra o bł˛edzie:

Kernel panic: VFS: Unable to mount root fs...

75

background image

Rozdział 9. Konfiguracja systemu

J ˛

adro mówi nam, ˙ze nie mo ˙ze zamontowa´c głównego systemu plików. Dzieje si˛e tak

wtedy gdy nie potrafi obsłu ˙zy´c kontrolera pami˛eci masowych (

IDE

/

SCSI

/

RAID

)

lub odczyta´c systemu plików dla tej partycji.

W PLD i wielu innych dystrybucjach sterowniki tego typu umieszczane s ˛

a w specjal-

nym "obrazie" zamiast we wn˛etrzu j ˛

adra. Obraz ten przechowywany jest w katalogu

/boot

i nazywa si˛e zazwyczaj: "

initrd

". Jest on wczytywany przez bootloader w

trakcie startu systemu. Obraz ten zawiera sterowniki konieczne do uruchomienia
systemu na komputerze na którym był instalowany. Dla innej maszyny nale ˙zy wy-
generowa´c taki obraz na nowo.

Przygotowanie

B˛edziemy potrzebowa´c dystrybucj˛e uruchamian ˛

a z płyty CD. Do tego b˛edzie si˛e

nadawała si˛e niemal ka ˙zda taka dystrybucja np.: PLDLiveCD lub RescueCD. Pod-
ł ˛

aczamy dysk twardy do docelowego komputera. Po uruchomieniu systemu z płytki

musimy dosta´c si˛e na główny system plików (/) - opis jak to zrobi´c znajduje si˛e w
sekcja Ratowanie systemu w Rozdział 10

Automatyczne generowanie initrd

Poni ˙zsze czynno´sci s ˛

a konieczne do wykonania je´sli sprz˛et i system plików maj ˛

a zo-

sta´c wykryte automatycznie. Je´sli zmieniły si˛e nazwy urz ˛

adze ´n masowych po podł ˛

a-

czeniu dysku twardego do innej maszyny, nale ˙zy dokona´c stosownych poprawek w
pliku

/etc/fstab

. W razie potrzeby edytujemy te ˙z plik

/etc/sysconfig/geninitrd

i ustawiamy jaki rodzaj urz ˛

adzenia ma by´c wykrywany (

IDE

,

SCSI

,

RAID

). Nast˛ep-

nie montujemy pseudo-system plików

/proc

:

# mount /proc

Teraz przyszedł czas na wygenerowanie pliku

initrd

. U ˙zywamy do tego programu

geninitrd: geninitrd [opcje] nowy_initrd numer_wersji_j ˛

adra

np.:

# geninitrd -v /boot/initrd_nowy 2.6.7

Program wykrywa sprz˛et i zał ˛

acza wła´sciwe moduły do tworzonego initrd. Nast˛ep-

nie usuwamy ł ˛

acze symboliczne o nazwie "

/boot/initrd

" wskazuj ˛

ace na stary ob-

raz i tworzymy ł ˛

acze wskazuj ˛

ace na nowy:

# rm /boot/initrd
# ln -s /boot/initrd_nowy /boot/initrd

Ko ´ncow ˛

a czynno´sci ˛

a jest od´swie ˙zenie bootloader-a, wcze´sniej jednak musimy si˛e

upewni´c ˙ze wskazuje on na nowy initrd. Dowiemy si˛e tego przegl ˛

adaj ˛

ac jego plik

konfiguracji. Po tej czynno´sci uaktualniamy bootloader. W przypadku LILO w pli-
ku

/etc/lilo.conf

odszukujemy linijk˛e zaczynaj ˛

ac ˛

a si˛e od słowa "

initrd

", która

mo ˙ze wygl ˛

ada´c nast˛epuj ˛

aco:

initrd = /boot/initrd

Nast˛epnie je ˙zeli mamy zainstalowane lilo wydajemy polecenie:

76

background image

Rozdział 9. Konfiguracja systemu

# lilo

W przypadku gruba nic nie musimy robi´c.

Mo ˙ze si˛e tak zda ˙zy´c, ˙ze geninitrd nie doda nam do

/boot/initrd

jakiego´s potrzeb-

nego modułu - w tym celu aby wymusi´c wł ˛

aczanie danego modułu do initrd nale ˙zy

wpisa´c go do odpowiedniej sekcji w

/etc/sysconfig/geninitrd

Na koniec restartujemy komputer i system powinien uruchomi´c si˛e bez problemu.
Od tej pory, po ponownym podł ˛

aczeniu dysku do tego komputera, wystarczy jedynie

zmienia´c wskazanie ł ˛

acza syblolicznego na odpowiedni obraz initrd i zaktualizowa´c

bootloader.

Generowanie uniwersalnego initrd

Cz˛este zmiany u ˙zywanego obrazu initrd mog ˛

a by´c uci ˛

a ˙zliwe. Mo ˙zna to obej´s´c ł ˛

acz ˛

ac

do initrd wi˛ecej modułów. W tym wypadku proces generowania mo ˙ze by´c przepro-
wadzony zarówno na naszym jak i na docelowym komputerze. Proces jego tworze-
nia przebiega bardzo podobnie, w opisie poprzedniego podrozdziału nale ˙zy zmody-
fikowa´c wywołanie geninitrd:

geninitrd [opcje] --with=nazwa_modulu nowy_initrd numer_wersji_j ˛

adra

np.:

# geninitrd -v --with=ext3 --with=pdc202xx_new

/boot/initrd_nowy 2.6.7

Powy ˙zsze wywołanie doda dodatkowo moduły obsługi systemu plików ext3 i kon-
trolera

IDE

PDC20268 firmy Promise. R˛ecznego wskazywania modułów do zał ˛

acze-

nia u ˙zywa si˛e te ˙z w wypadku problemów z autodetekcj ˛

a kontrolera przez geninitrd.

Warto pami˛eta´c ˙zeby nie przesadza´c z ilo´sci ˛

a zał ˛

aczanych modułów, mo ˙ze to spo-

wodowa´c wolniejszy start systemu i niepotrzebne zu ˙zycie pami˛eci operacyjnej przez
nieu ˙zywane moduły.

Boot Loader

Wst ˛ep

Podczas startu naszego komputera z naszego dysku uruchamiany jest boot loader.
To wła´snie on odpowiada za załadowanie prawidłowego j ˛

adra systemu, ustawienie

prawidłowego trybu pracy karty graficznej czy cd-romu. Dla architektur ix86 mamy
do wyboru jeden z dwóch boot loaderów - lilo albo grub.

LILO

Wiele osób korzystaj ˛

acych z dystrybucji takich jak Debian czy PLD, jest niezadowo-

lonych z brzydkiej tabelki wyboru bootowania systemu, jak ˛

a oferuje nam lilo. Jednak

77

background image

Rozdział 9. Konfiguracja systemu

to samo lilo mo ˙ze mie´c ładne i kolorowe menu wyboru takie samo jak oferuje nam
RedHat czy Mandrake. Wystarczy tylko poprawi´c

/etc/lilo.conf

, zmieni´c tryb

uruchamiania z tekstowego na graficzny i doda´c kilka dodatkowych parametrów.
Gdy ju ˙z b˛edziemy mieli dobrze skonfigurowany boot loader i nasz system b˛edzie si˛e
poprawnie uruchamiał, to b˛edziemy mogli zadba´c o to aby montował odpowiednie
systemy plików w odpowiednie miejsca. Uzyskamy pewno´s´c, ˙ze miejsce na naszych
partycjach b˛edzie dobrze rozdysponowane, a i ułatwi nam to po´zniejsz ˛

a prac˛e z sys-

temem.

Przyj ˙zyjmy si˛e wi˛ec bli ˙zej plikowi

/etc/lilo.conf

, aby dowiedzie´c si˛e za co odpo-

wiadaj ˛

a poszczególne opcje konfiguracyjne.

Opcja:

vga=normal

- odpowiada za ustawienie odopowiedniego trybu pracy naszej karty graficznej, przy
wykorzystaniu framebuffera typu vesa mamy nast˛epuj ˛

ace ustawienia

+-----------------------------------------+---------+
| VESA framebuffer console @ 1024x768x64k | vga=791 |
| VESA framebuffer console @ 1024x768x32k | vga=790 |
| VESA framebuffer console @ 1024x768x256 | vga=773 |
| VESA framebuffer console @ 800x600x64k

| vga=788 |

| VESA framebuffer console @ 800x600x32k

| vga=787 |

| VESA framebuffer console @ 800x600x256

| vga=771 |

| VESA framebuffer console @ 640x480x64k

| vga=785 |

| VESA framebuffer console @ 640x480x32k

| vga=784 |

| VESA framebuffer console @ 640x480x256

| vga=769 |

+-----------------------------------------+---------+

install=/boot/boot-bmp.b

- wł ˛

aczy graficzny tryb botowania

bitmap = /boot/lilo-pldblue8.bmp

- okre´sli jak ˛

a bitmap˛e ma załadowa´c jako tło startowe

bmp-table = 17,9;1,14,16,4
bmp-colors = 0,213,137;152,24,1
bmp-timer = 2,29;152,52,1

- odpowiadaj ˛

a za ustawienia koloru czcionek oraz rozmieszczenia tabelki wyboru i

licznika czasu jaki nam pozostał

timeout=50

- sprawi, i ˙z podczas startu boot loader poczeka pi˛e´c sekund (50 dziesi˛etnych sekun-
dy) na wybranie systemu, który ma zosta´c uruchomiony, je´sli tego nie zrobimy od-
palony zostanie system ustawiony jako domy´slny

default=PLD

- Jako domy´slny system ustawia obraz z etykiet ˛

a PLD

78

background image

Rozdział 9. Konfiguracja systemu

boot=/dev/hda

- lilo korzysta z głównego boot rekordu (MBR) na

/dev/hda

(zajrzyj do pliku

user.tex

dokumentacji lilo, aby dowiedzie´c si˛e wi˛ecej o ró ˙znych sposobach instalacji lilo i
współpracy z innymi systemami operacyjnymi)

prompt

- Wy´swietla lini˛e zach˛ety bez oczekiwania na naci´sni˛ecie klawisza. Przeładowanie
systemu bez udziału u ˙zytkownika jest niemo ˙zliwe, je´sli opcja

prompt

jest ustawiona,

a

timeout

nie.

read-only

- Okre´sla, ˙ze główny system plików powinien by´c zamontowany tylko do odczy-
tu. Na ogół procedura startowa systemu pó´zniej ponownie montuje główny system
plików do odczytu i zapisu (np. po jego sprawdzeniu).

lba32

- wł ˛

acza wykorzystanie 32-bitowego adresowania, pozwala na zbootowanie kompu-

tera z dowolnej partycji na dysku, dzi˛eki temu mo ˙ze ona znajdowa´c si˛e na dysku z
wi˛ecej ni ˙z 1024 cylindrami

image=/boot/vmlinuz

- okre´sla obraz j ˛

adra, który ma by´c wykorzystany do startowania systemu

root=/dev/hda8

- okre´sla urz ˛

adzenie na którym znajduje si˛e główny system plików

label=PLD

- nadaje obrazowi etykiet˛e o nazwie PLD

other=/dev/hda1

- okre´sla inny system z którego mo ˙zemy starowa´c

label=Windows

- nadaje temu systemowi etykiet˛e

Po ustawieniu wszystkich potrzebnych opcji w pliku

/etc/lilo.conf

nale ˙zy prze-

ładowa´c lilo poleceniem:

# lilo -v

Je ˙zeli nie pokazały si˛e ˙zadne bł˛edy, boot loader powinien by´c zainstalowany na na-
szym dysku

79

background image

Rozdział 9. Konfiguracja systemu

GRUB

Ka ˙zdy z nas zastanawiał si˛e kiedy´s nad alternatyw ˛

a dla lilo, które lubiło czasem za-

wodzi´c. Okazuje si˛e, ˙ze istnieje bardzo dobra alternatywa o nazwie grub. Ten drugi
bootmanager ró ˙zni si˛e nieco od pierwszego. Najwi˛eksz ˛

a ró ˙znic ˛

a jest obsługa du ˙zej

gamy systemów plików. Dzi˛eki mo ˙zliwo´sci bezpo´sredniego dost˛epu do systemu pli-
ków, jeste´smy w stanie załadowa´c dowolny obraz, który nie został umieszczony w
pliku konfiguracyjnym.

Konfiguracja gruba ró ˙zni si˛e nieco od konfiguracji jego konkurentów. Przedewszyst-
kim nie u ˙zywamy ju ˙z nazw dysków opieraj ˛

acych si˛e na urz ˛

adzeniach widniej ˛

acych

w

/dev

(np.

/dev/hda

). Grub przy pomocy BIOSa sprawdza istniej ˛

ace dyski w sys-

temie i numeruje je pocz ˛

awszy od zera. Dla przykładu, je ˙zeli posiadamy dwa dys-

ki twarde (np. hda i hdc), pierwszy z nich zostanie oznaczony jako hd0, drugi ja-
ko hd1. Sytuacja z partycjami wygl ˛

ada podobnie, równie ˙z numerowane s ˛

a od zera,

natomiast pierwsza partycja logiczna b˛edzie oznaczona numerem 4. Dla dotychcza-
sowego

/dev/hda1

w grubie powinni´smy u ˙zywa´c (hd0,0). Podane nawiasy nie s ˛

a

przypadkowe, to cecha składni polece ´n gruba. Je ˙zeli okre´slamy jaki´s dysk/partycj˛e,
robimy to w nawiasach.

Przejd´zmy do konfiguracji. Zakładamy, ˙ze zarówno rootfs, jak i boot le ˙z ˛

a na tej samej

partycji. W przykładowej konfiguracji b˛edzie to

/dev/hda1

. Plikiem konfiguracyj-

nym w domy´slnej instalacji jest

/boot/grub/menu.lst

.

# cat /boot/grub/menu.lst
timeout 15

title

PLD 2.0 (Ac)

root (hd0,0)
kernel /boot/vmlinuz root=0301
initrd /boot/initrd

Pewnie zastanawiasz si˛e sk ˛

ad wzi˛eły si˛e te dziwne cyferki przy root= ? Nie ma w

nich nic dziwnego, w naszym przypadku 03 to ’major’ a 01 to ’minor’ naszej par-
tycji. Sk ˛

ad wzi ˛

a´c te cyferki? To nic trudnego, musimy tylko umie´c przelicza´c liczby

dziesi˛etne na szesnastkowe.

# ls -l /dev/hda1
brw-rw----

1 root disk 3, 1 2004-06-03 18:41 /dev/hda1

Pierwsza liczba (3) to major, druga (1) to minor. Urz ˛

adzenia w katalogu

/dev

posia-

daj ˛

a oznaczenia w systemie dziesi˛etnym, kernelowi nale ˙zy przekaza´c je w szesnast-

kowym. Akurat w przypadku hda1 nic si˛e nie zmienia, bo zarówno liczby 3 jak i
1 w obu systemach liczbowych s ˛

a jednakowe. W przypadku podawania parametru

root=

major mo ˙zna poda´c w postaci jednej cyfry, natomiast minor powinien by´c ju ˙z

rozwini˛ety do dwóch. Tym sposobem mo ˙zemy zamieni´c root=0301 na root=301. W
przypadku dysków scsi post˛epujemy analogicznie.

Przejd´zmy do instalacji gruba w bootsektorze dysku (MBR).

# grub
grub> root (hd0,0)
Filesystem type is xfs, partition type 0x83

grub> setup (hd0)

80

background image

Rozdział 9. Konfiguracja systemu

Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/xfs_stage1_5" exists... yes
Running "embed /boot/grub/xfs_stage1_5 (hd0)"...

18 sectors are embedded.

succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.
grub> quit

Stali´smy si˛e posiadaczami bootloadera grub w naszym systemie. W odró ˙znieniu od
lilo

nie ma potrzeby ponownej instalacji gruba w MBR w przypadku zmiany kernela

lub pliku konfiguracyjnego.

Mo ˙ze brakowa´c Ci jeszcze mo ˙zliwo´sci startu z partycji, na której masz zainstalowa-
ny np. system MS Windows. Dodanie kolejnego wpisu nale ˙zy do bardzo prostych
czynno´sci. Zakładaj ˛

a´c, ˙ze jest on zainstalowany na

/dev/hda2

, na ko ´ncu pliku konfi-

guracyjnego dopisujemy:

title Windows
rootnoverify (hd0,1)
chainloader +1

RC-BOOT

Wst ˛ep

Osoby nie przepadaj ˛

ace z konfiguracj ˛

a powy ˙zszych bootloaderów, mog ˛

a skorzysta´c

z narz˛edzia o nazwie

rc-boot

. Jest to proste i wygodne w u ˙zyciu narz˛edzie, stwo-

rzone dla potrzeb PLD, które zapewnia uniwersalny interfejs do zarz ˛

adzania bootlo-

aderem. Dzi˛eki programowi

rc-boot

mo ˙zemy u ˙zywa´c dowolnego bootloadera (np.

LiLo

,

Grub

), nie znaj ˛

ac jego zasady działania oraz składni pliku konfiguracji. Pakiet

rc-boot

został stworzony w celu automatycznego aktualizowania bootloadera po

zaktualizowaniu j ˛

adra, jednak nie zdobył szerszej popularno´sci w´sród u ˙zytkowni-

ków.

Aby utworzy´c bootloader omawianym narz˛edziem nale ˙zy si˛e posłu ˙zy´c poleceniem
rc-boot

, to jaki bootloader zostanie u ˙zyty i jakie opcje b˛ed ˛

a ustawione, definiujemy w

jednym uniwersalnym pliku konfiguracji:

/etc/sysconfig/rc-boot/config

. Do-

datkowo wymagane s ˛

a specjalne pliki "obrazów" odpowiadaj ˛

ace ka ˙zdemu systemo-

wi operacyjnemu, który chcemy obsługiwa´c z poziomu bootloadera. S ˛

a to proste pli-

ki konfiguracyjne umieszczane w katalogu

/etc/sysconfig/rc-boot/images

. Po

zainstalowaniu systemu powinien tam by´c przynajmniej jeden taki plik.

Podstawowa konfiguracja

Po zainstalowaniu pakietu

rc-boot

wymagane s ˛

a poprawki w konfiguracji pliku

/etc/sysconfig/rc-boot/config

. Na pocz ˛

atek odblokujemy działanie

rc-boot

:

DOIT=yes

81

background image

Rozdział 9. Konfiguracja systemu

Kolejno wybieramy bootloader jaki chcemy u ˙zywa´c, mamy do wyboru

lilo

oraz

grub

:

LOADER=grub

Nast˛epnie ustalamy gdzie ma by´c zainstalowany bootloader np.:

/dev/hda

,

/dev/hdb2

lub

mbr

. Warto´s´c

mbr

oznacza ˙ze

rc-boot

stara si˛e automatycznie wykry´c gdzie jest

twój MBR (Master Boot Record).

BOOT=mbr

Je´sli posiadamy wi˛ecej ni ˙z jeden obraz, mo ˙zemy wskaza´c domy´slny, poprzez poda-
nie nazwy pliku obrazu z katalogu

/etc/sysconfig/rc-boot/images

. Definiowa-

nie tej opcji nie jest konieczne, gdy ˙z

rc-boot

próbuje samemu wykry´c domy´slny

system operacyjny, jednak w naszym przykładzie ustawimy to "na sztywno":

DEFAULT=pld

Tworzenie "obrazów"

Teraz mo ˙zemy przej´s´c do utworzenia plików obrazów. Maj ˛

a one bardzo prost ˛

a bu-

dow˛e - s ˛

a to pliki tekstowe składaj ˛

ace si˛e z kilku wierszy. Poni ˙zsza tre´s´c pliku jest

wystarczaj ˛

ac ˛

a konfiguracj ˛

a do uruchomienia Linuksa, plikowi temu nadamy nazw˛e

"pld".

TYPE=Linux
ROOT=/dev/hda3
KERNEL=/boot/vmlinuz
INITRD=/boot/initrd

Opcja

TYPE

okre´sla rodzaj systemu operacyjnego dla danego obrazu, mamy do wy-

boru nast˛epuj ˛

ace pozycje:

Linux

,

DOS

(DOS/Windows),

BSD

. Opcja

ROOT

wskazuje

partycj˛e na której znajduje si˛e system, warto´s´c podana powy ˙zej jest tylko przykła-
dem. Warto´sci

KERNEL

i

INITRD

s ˛

a wskazaniami do pliku kernela i pliku initrd - mu-

sz ˛

a odnosi´c si˛e do wła´sciwych pozycji w katalogu

/boot

Dla ka ˙zdego kolejnego obsługiwanego systemu operacyjnego nale ˙zy doda´c kolejny
plik obrazu. Je´sli chcemy u ˙zywa´c systemu firmy Microsoft, nale ˙zy utworzy´c pusty
plik o nazwie np. "windows" i umie´sci´c w nim przykładow ˛

a konfiguracj˛e:

TYPE=dos
ROOT=/dev/hda1

Na koniec generujemy bootloader u ˙zywaj ˛

ac polecenia rc-boot.

# rc-boot
pld taken as defult image
image: pld * is linux on /dev/hda3
image: windows is dos on /dev/hda1

82

background image

Rozdział 9. Konfiguracja systemu

Uwagi

Program

rc-boot

nadpisze plik konfiguracji wybranego bootloadera, zanim wi˛ec

u ˙zyjemy tego narz˛edzia powinni´smy na wszelki wypadek zrobi´c kopi˛e bezpiecze ´n-
stwa bezpiecze ´nstwa wła´sciwego pliku.

Wi˛ecej szczegółów mo ˙zna uzyska´c z podr˛ecznika systemowego.

PLDconf - Narz ˛edzie do konfiguracji systemu

Pldconf jest narz˛edziem tworzonym z my´sl ˛

a o pocz ˛

atkuj ˛

acych u ˙zytkownikach. Wie-

le opcji jest konfigurowanych automatycznie. Pldconf ma małe wymagania i jest nie-
wielkim pakietem (ok. 150 kB) Jego instalacja sprowadza si˛e do wydania polecenia:

# poldek -i pldconf

Program zadaje minimaln ˛

a ilo´s´c pyta ´n i w podstawowej wersji (dla PLD RA 1.0)

konfiguruje:

1. Serwer X: karta (auto), rozdzielczo´s´c, kolory, itd;

2. Sie´c: bramka, DNS, karty sieciowe (auto), otoczenie sieciowe, SDI, NEO (eth-

ernet);

3. Desktop: mened ˙zer okien, kolory, czcionki i wi˛ecej;

4. Mened ˙zer startu: menu z linuksem i windows, dyskietka startowa i wi˛ecej;

5. Dost˛ep do partycji windows;

tyle z podstawowych mo ˙zliwo´sci - pldconf potrafi wi˛ecej.

Obecnie pldconf rozwijany jest dla nadchodz ˛

acego PLD 2.0 (AC/DC/NEST). W no-

wej wersji dodano mi˛edzy innymi:

1. Konfiguracje karty d´zwi˛ekowej (alsa);

2. Konfiguracje drukarki (cups);

3. Optymalizacje dysku twardego (hdparm);

4. Konfiguracje fetchmail;

5. Konfiguracje tunera telewizyjnego

6. Zarz ˛

adzanie kontami u ˙zytkowników

Wersja pldconf dla PLD 2.0 nieznacznie ró ˙zni si˛e od wersji dla PLD 1.0. Ró ˙znice
dotycz ˛

a przede wszystkim zmiany ´scie ˙zek (np.

/usr/X11R6/bin/mozilla

w PLD

2.0 zmieniono na

/usr/bin/mozilla

) głównie w module do konfiguracji deskto-

pu. W praktyce blisko 100% pldconf w najnowszej wersji (przeznaczonym dla PLD
2.0) działa poprawnie równie ˙z w systemie PLD 1.0. W szczególno´sci najnowszy pld-
conf potrafi przeprowadzi´c sieciow ˛

a instalacj˛e PLD 2.0 - moduł instalacji zadziała

poprawnie w systemie PLD 1.0. Innymi słowy, aby zainstalowa´c PLD 2.0 spod uru-
chomionego PLD 1.0 nale ˙zy zainstalowa´c najnowsz ˛

a wersj˛e pldconf.

83

background image

Rozdział 9. Konfiguracja systemu

Uwaga: W przypadku instalacji nowego pldconf w systemie PLD 1.0 wymagana jest
równie ˙z instalacja pakietu perl-modules.

Strona domowa projektu

• www.inf.sgsp.edu.pl/pub/PROGRAMY/PLD/

Konfiguracja kluczowych plików

W tym rozdziale przedstawione s ˛

a informacje o kluczowych plikach systemu ope-

racyjnego. Zostały tu opisane jedynie podstawowe dane na ich temat, wi˛ecej mo ˙zna
znale´z´c w podr˛eczniku systemowym

man

, oraz

info

/etc/inittab

Plik

/etc/inittab

przechowuje konfiguracj˛e programu init, uruchamianego w trak-

cie startu systemu i działaj ˛

acego bez przerwy do chwili jego zamkni˛ecia. Głównym

zadaniem procesu init jest kontrola zachowania systemu w zale ˙zno´sci od osi ˛

agni˛ete-

go poziomu pracy systemu oraz w wypadku wyst ˛

apienia specjalnych zdarze ´n.

Oto najwa ˙zniejsze opcje zawarte w pliku

/etc/inittab

:

Domy´slny poziom uruchomienia - wskazuje programowi init jaki poziom uru-
chomienia ma by´c wybrany je´sli wywołano go bez parametrów lub w trakcie startu
systemu. Wiersz okre´slaj ˛

acy t˛e opcj˛e wygl ˛

ada nast˛epuj ˛

aco:

id:{$poziom}:initdefault:

($poziom to cyfra odpowiadaj ˛

aca poprawnemu poziomowi uruchomienia), ustaw-

ienie domy´slnie trzeciego poziomu uruchomienia przedstawiono na poni ˙zszym
przykładzie:

id:3:initdefault:

Instrukcje uruchomienia procesu

getty

na poszczególnych konsolach - mog ˛

a one

wygl ˛

ada´c nast˛epuj ˛

aco:

1:12345:respawn:/sbin/mingetty --noclear tty1

Te opcje musimy zmodyfikowa´c np. je´sli chcemy podł ˛

aczy´c terminal do portu sze-

regowego.

Wywołania skryptów startowych - opcje te bardzo rzadko wymagaj ˛

a ingerencji

u ˙zytkownika:

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

Obsługa specjalnych zdarze ´n np. wci´sni˛ecia kombinacji klawiszy CRTL+ALD+DEL:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

84

background image

Rozdział 9. Konfiguracja systemu

Mamy spor ˛

a dowolno´s´c w zarz ˛

adzaniu tym zdarzeniem, w powy ˙zszym przykła-

dzie po naci´sni˛eciu kombinacji CRTL+ALD+DEL nast ˛

api przeładowanie systemu,

aby nast ˛

apiło zamkniecie powinni´smy u ˙zy´c polecenia shutdown -h.

/etc/fstab

Plik ten przechowuje szczegółowe informacje o systemach plików, które maj ˛

a by´c

montowane do odpowiednich katalogów. Informacje w nim zawarte s ˛

a odczytywa-

ne w trakcie startu systemu, dzi˛eki temu automatycznie s ˛

a montowane wszystkie

woluminy (partycje) nie oznaczone opcj ˛

a "noauto". Plik ten jest zazwyczaj tworzony

przez instalator, jednak administrator ma mo ˙zliwo´s´c, a nawet obowi ˛

azek dokonywa´c

w nim zmian. Dla lepszego zrozumienia tematu przyjrzyjmy si˛e przykładowemu pli-
kowi i przeanalizujmy funkcje jakie spełniaj ˛

a poszczególne wpisy.

#(fs_spec) (fs_file)(fs_vfstype) (fs_mntops) (fs_freq) (fs_passno)
/dev/hda2 /

ext3 defaults

0 0

/dev/hda3 swap

swap defaults

0 0

proc

/proc

proc defaults

0 0

pts

/dev/pts devpts gid=5,mode=600

0 0

/dev/fd0 /media/floppy vfat noauto

0 0

/dev/cdrom /media/cdrom iso9660 noauto,ro,user,unhide 0 0

Jak widzimy plik jest podzielony na wiersze, z których ka ˙zdy odpowiada jednemu
obsługiwanemu woluminowi. Poszczególne pola oddzielone s ˛

a od siebie spacj ˛

a lub

tabulatorem. Dane odpowiedniego rekordu wczytywane s ˛

a przez skrypty startowe

oraz programy takie jak: fsck, mount czy umount przez co musz ˛

a one by´c zapisane

w uporz ˛

adkowany sposób.

Pole (fs_spec) - okre´sla urz ˛

adzenie blokowe lub zdalny system plików przeznaczony

do zamontowania, na przykład partycj˛e dysku, CDROM czy aparat.

Pole (fs_file) - wskazuje na miejsce, w którym ma by´c zamontowany dany system
plików, na przykład dla partycji wymiany (ang. "swap partition") to pole powinno
zawiera´c warto´s´c "none", a dla CDROM-u "

/media/cdrom

".

Pole (fs_vfstype) - okre´sla typ systemu plików jaki znajduje si˛e na danym urz ˛

adze-

niu. Najbardziej powszechne obecnie i obsługiwane systemy plików to:

ext2

ext3

reiserfs

xfs

vfat

ntfs

iso9660

nfs

swap

85

background image

Rozdział 9. Konfiguracja systemu

Pole (fs_mntops) udost˛epnia szereg znaczników systemowych, które mog ˛

a mie´c klu-

czowe znaczenie dla bezpiecze ´nstwa i wydajno´sci naszego systemu. Przykładowo
nast˛epuj ˛

ace znaczniki oznaczaj ˛

a:

defaults

- domy´slny zestaw opcji, u ˙zyteczny w wi˛ekszo´sci wypadków.

nodev

- zapobiega rozpoznawaniu przez j ˛

adro dowolnych plików urz ˛

adze ´n, znaj-

duj ˛

acych si˛e w systemie plików

noexec

- zapobiega wykonywaniu plików wykonywalnych w danym systemie pli-

ków

nosuid

- zapobiega uwzgl˛ednianiu bitów set-UID oraz set-GID w przypadku do-

wolnego pliku wykonywalnego

ro

- powoduje zamontowanie systemu plików w trybie tylko do odczytu, po-

wstrzymuj ˛

ac wszelkie modyfikacje informacji dotycz ˛

acych plików, wł ˛

aczaj ˛

ac w to

na przykład czas dost˛epu do pliku

Pole (fs_freq) jest u ˙zywane przez program dump do wykrywania, który system pli-
ków ma mie´c wykonywan ˛

a kopi˛e bezpiecze ´nstwa. Je ˙zeli nie ma informacji o tym

polu, zwracana jest warto´s´c 0 i dump przyjmuje, ˙ze dany system plików nie musi
by´c mie´c robionych kopii danych. Je´sli nie korzystamy z tego programu mo ˙zemy
wsz˛edzie ustawi´c warto´s´c 0.

Pole

(fs_passno)

jest u ˙zywane przez program fsck aby zadecydowa´c, jaka powinna

by´c kolejno´s´c sprawdzania systemów plików podczas ładowania systemu. Główny
system plików powinien mie´c (fs_passno) równ ˛

a 1, za´s inne systemy plików powin-

ny mie´c (fs_passno) równe 2. Je ˙zeli to pole nie posiada ˙zadnej warto´sci lub jest ona
równa 0 to wtedy dany system plików nie jest sprawdzany przez fsck.

Uwaga! Najwa ˙zniejszym woluminem w systemie jest ten przypisywany do korzenia
drzewa katalogów (katalog "/"), dlatego nale ˙zy bardzo ostro ˙znie dokonywa´c zmian
jego konfiguracji. Bł ˛

ad mo ˙ze spowodowa´c problemy z uruchomieniem systemu ope-

racyjnego.

/etc/passwd

Jeden z najwa ˙zniejszych plików w systemie - przechowuje informacje o kontach
wszystkich u ˙zytkowników. Jeden wiersz w tym pliku zawiera informacje o jednym
u ˙zytkowniku. Ka ˙zdy składa si˛e z pól rozdzielonych dwukropkiem:

login:haslo:UID:GID:komentarz:katalog_domowy:powłoka
np.:
marek:x:502:1000:Marek Kowalski:/home/users/marek:/bin/bash

Uwagi: Znak "x" w miejscu hasła oznacza ˙ze jest przechowywane w osobnym pli-
ku (

/etc/shadow

). UID to unikalny identyfikator u ˙zytkownika, za´s GID to unikal-

ny numer grupy głównej u ˙zytkownika - zdefiniowany w pliku

/etc/group

. Powło-

ka (shell) musi by´c zdefiniowana w pliku

/etc/shells

. Oznaczenie powłoki jako

/bin/false

oznacza ˙ze jest to konto u ˙zytkownika systemowego. Jest to specjalny

rodzaj kont na które zwykli u ˙zytkownicy nie mog ˛

a si˛e zalogowa´c

86

background image

Rozdział 9. Konfiguracja systemu

/etc/group

Plik zawieraj ˛

acy nazwy utworzonych grup i przypisanych do nich u ˙zytkowników

według schematu:

nazwa_grupy::GID:login1,login2,login3,...
np.:
audio::23:kasia,marek

Uwagi: Pierwsze pole to unikalna nazwa grupy, drugie nie ma we współczesnych
systemach uniksowych ju ˙z zastosowania, GID to niepowtarzalny identyfikator gru-
py, trzecie pole zawiera list˛e identyfikatorów u ˙zytkowników zapisanych do tej gru-
py.

/etc/shadow

Plik zawieraj ˛

acy zakodowane hasła i dodatkowe informacje dla systemu uwierzytel-

niania u ˙zytkowników. Np.:

marek:$1$qb/waABk$F3Y6dKw/6ekZPfcoTpzks/:12575:0:99999:5:::

Pliki

/etc/passwd

,

/etc/group

,

/etc/shadow

maj ˛

a kluczowe znaczenie dla syste-

mu dlatego nie nale ˙zy ich edytowa´c r˛ecznie. Słu ˙z ˛

a do tego odpowiednie programy:

useradd

, userdel, usermod, groupadd, groupdel, groupmod, passwd.

/etc/shells

Zawiera list˛e dost˛epnych dla u ˙zytkowników powłok np.:

/bin/ksh
/bin/sh
/bin/bash

Aby u ˙zytkownik miał mo ˙zliwo´s´c korzystania z danej powłoki musi by´c ona zdefi-
niowana w tym pliku

/etc/rc.d

Katalog ten przechowuje konfiguracj˛e uruchamiania usług i podsystemów w trakcie
startu systemu, lub przej´scia z jednego trybu pracy (run level) do innego. W PLD
zastosowano skrypty startowe typu System-V.

Elementy systemu skryptów startowych:

/etc/rc.d/init.d

- katalog z skryptami startowymi usług

/etc/rc.d/rc{$NR}.d

- katalogi tak oznaczone zawieraj ˛

a ł ˛

acza symboliczne do

skryptów zawartych w katalogu

init.d

. Warto´s´c {$NR} jest liczb ˛

a wskazuj ˛

ac ˛

a

poziom pracy (run level), dla którego uruchamiana jest zawarto´s´c danego kata-
logu.

87

background image

Rozdział 9. Konfiguracja systemu

/etc/rc.d/rc

- skrypt uruchamiaj ˛

acy i zatrzymuj ˛

acy usługi

/etc/rc.d/rc.init

- skrypt ustawiaj ˛

acy opcje narodowe (j˛ezyk, waluta) pobiera

konfiguracj˛e z pliku

/etc/sysconfig/i18n

/etc/rc.d/rc.local

- uruchamiany na samym ko ´ncu wszystkich skryptów, u ˙zytkown-

icy mog ˛

a dodawa´c tu swoje wpisy je´sli nie chc ˛

a u ˙zywa´c

init.d

i

rc{$NR}.d

/etc/rc.d/rc.serial

- konfiguracja portów szeregowych

rc.sysinit

- główny skrypt startowy uruchamiany jednokrotnie (w trakcie startu)

/etc/rc.d/rc.modules

- załadowanie modułów z

/etc/modules

/etc/rc.d/rc.shutdown

- główny skrypt uruchamiany przy zatrzymaniu sys-

temu lub restarcie.

/etc/profile

- plik startowy przy pomocy którego s ˛

a ustawiane głównie zmi-

enne systemowe

Wi˛ecej o zarz ˛

adzaniu usługami i podsystemami dowiesz si˛e tutaj: sekcja Zarz ˛

adzanie

podsystemami i usługami w Rozdział 10

/etc/motd

Wiadomo´s´c dnia (ang. Message of the day) - Powitanie u ˙zytkownika: tre´s´c tego pliku
wy´swietlana po uwierzytelnieniu si˛e w systemie.

/etc/nologin

Plik tworzony przez administratora - blokuje mo ˙zliwo´s´c logowania si˛e u ˙zytkowni-
ków do systemu. Przy próbie logowania wy´swietlana jest jego tre´s´c.

Ustawienia konsoli

Dzi˛eki plikowi

/etc/sysconfig/console

mo ˙zemy ustawi´c takie parametry jak czcion-

ka konsoli, mapa klawiatury, kodowanie fontów oraz zarz ˛

adzanie energi ˛

a.

Aby zmieni´c czcionk˛e, edytujemy parametr:

CONSOLEFONT=lat2u-16

Do wyboru mamy czcionki zamieszczone w katalogu

/usr/share/consolefonts

.

Aby uaktywni´c zmiany wykonujemy:

/etc/rc.d/init.d/console start

Aby zmieni´c kodowanie znaków, edytujemy parametr:

CONSOLEMAP=8859-2

Aby zmieni´c mapowanie klawiatury edytujemy parametr:

88

background image

Rozdział 9. Konfiguracja systemu

KEYTABLE=pl2

Aby ustawi´c numery konsol dla których aplikowane s ˛

a parametry, zmieniamy:

SET_FONT_TERMINALS="1 2 3 4 5 6 7 8"

Przedstawiony parametr deklaruje zmian˛e ustawie ´n dla konsol tty1-tty8.

Aby zmieni´c opcje zarz ˛

adzania energi ˛

a, edytujemy parametry:

POWER_SAVE=on
BLANK_TIME=10
POWERDOWN_TIME=60

Parametr

BLANK_TIME

okre´sla liczb˛e minut nieaktywno´sci do wygaszenia ekranu,

POWERDOWN_TIME

- do wył ˛

aczenia monitora.

Aby zmieni´c kolor czcionki lub tła, edytujemy parametr:

FOREGROUND_COLOUR=red
BACKGROUND_COLOUR=green

Do wyboru posiadamy kolory black|red|green|yellow|blue|magenta|cyan|white|default.

Aby zmieni´c domy´slny tryb NUM Locka, edytujemy parametr:

NUM_LOCK=on

Do wyboru posiadamy atrybut "on" lub "off".

Internacjonalizacja systemu PLD

Wst ˛ep

Cz˛estym problemem pocz ˛

atkuj ˛

acego u ˙zytkownika Linuksa jest ustawienie wy´swie-

tlania znaków diaktrycznych, walut oraz odpowiedniego j˛ezyka. Poniewa ˙z PLD jest
dystrybucj ˛

a dla zaawansowanych u ˙zytkowników, mo ˙zemy w niej przystosowa´c ´sro-

dowisko pracy do naszych indywidualnych potrzeb.

Internalizacja konsoli i programów

Zanim przyst ˛

apimy do instalowania poszczególnych paczek, musimy w pliku

/etc/sysconfig/i18n

ustawi´c odpowiednie zmiennie ´srodowiskowe odpowiadaj ˛

ace za j˛ezyk czcionk˛e sys-

temow ˛

a oraz kodowanie. W naszym przypadku wpis ten wygl ˛

ada nast˛epuj ˛

aco:

SUPPORTED_LOCALES=pl_PL
LANG=pl_PL
LC_ALL=pl_PL
LINGUAS=pl_PL
SYSFONT=lat2u-16
UNIMAP=lat2u
SYSFONTACM=iso02

89

background image

Rozdział 9. Konfiguracja systemu

Nast˛epnie instalujemy pakiety odpowiedzialne za ustawienia lokalne i klawiatur˛e:

# poldek -i localedb-src kbd

Locale generujemy poleceniem localedb-gen, które domy´slne ustawienia pobiera ze
zmiennej

SUPPORTED_LOCALES

wiec je´sli chcieliby´smy mie´c obsług˛e równie ˙z innego

j˛ezyka, to trzeba to zaznaczy´c wła´snie przy tej zmiennej.

Przykładowy zapis dla kilku j˛ezyków w pliku

/etc/sysconfig/i18n

mo ˙ze wygl ˛

a-

da´c tak:

LANG=pl_PL

# list of supported locales
SUPPORTED_LOCALES="pl_PL/ISO-8859-2 de_DE/ISO-8859-2 \

en_GB/ISO-8859-1 en_US/ISO-8859-1"

Mo ˙zna te ˙z zainstalowa´c pakiet zawieraj ˛

acy baz˛e danych locale dla wszystkich loka-

lizacji obsługiwanych przez glibc.

# poldek -i glibc-localedb-all

Aby sprawdzi´c czy wszystko przebiegło pomy´slnie wydajemy polecenie:

$ locale
LANG=pl_PL
LC_CTYPE="pl_PL"
LC_NUMERIC="pl_PL"
LC_TIME="pl_PL"
LC_COLLATE="pl_PL"
LC_MONETARY="pl_PL"
LC_MESSAGES="pl_PL"
LC_PAPER="pl_PL"
LC_NAME="pl_PL"
LC_ADDRESS="pl_PL"
LC_TELEPHONE="pl_PL"
LC_MEASUREMENT="pl_PL"
LC_IDENTIFICATION="pl_PL"
LC_ALL=

Sprawdzamy czy wszystkie wpisy si˛e zgadzaj ˛

a.

Je´sli chcemy aby ustawienia dopasowane były do naszych upodoba ´n do dyspozycji
mamy nast˛epuj ˛

ace zmienne LC_*:

Dost˛

epne zmienne LC_*:

* LC_CTYPE: Konwersja czcionki i wielko´

sci liter.

* LC_COLLATE: Porz ˛

adek sortowania.

* LC_TIME: Format wy´

swietlania daty i godziny.

* LC_NUMERIC: Wy´

swietlanie liczb nie zwi ˛

azanych z walut ˛

a

* LC_MONETARY: Formaty walutowe.
* LC_MESSAGES: Format wiadomo´

sci informacyjnych, diagnostycznych \

oraz okre´

slaj ˛

acych interakcje programu.

* LC_PAPER: Rozmiar papieru.
* LC_NAME: Format nazw.
* LC_ADDRESS: Format wy´

swietlania adresu i lokalizacji.

90

background image

Rozdział 9. Konfiguracja systemu

* LC_TELEPHONE: Format wy´

swietlania numeru telefonu.

* LC_MEASUREMENT: Jednostki miary (metryczna lub inna)
* LC_IDENTIFICATION: Metadata o ustawieniach locale.

Przykładowo jako domy´slnego j˛ezyka, mo ˙zemy u ˙zywa´c angielskiego jednak ze wspar-
ciem dla polskich czcionek i polskich walut. Wszelkiego typu zmiany dokonujemy
poprzez dodanie do pliku

~/.bash_profile

odpowiednich wpisów:

LANG=en_EN
export LANG
LC_CTYPE=pl_PL
export LC_CTYPE

Je´sli chodzi o konsol˛e, to ju ˙z raczej wszystko. Wi˛ekszo´s´c programów po wykonaniu
powy ˙zszych czynno´sci działa ju ˙z odpowiednio w polskim ´srodowisku

Internalizacja ´srodowiska graficznego

X-y mog ˛

a wy´swietla´c ka ˙zde kodowanie, wł ˛

aczaj ˛

ac UTF-8, i obsługuj ˛

a wszystkie czcion-

ki. Zawieraj ˛

a si˛e w tym nie tylko wszystkie czcionki 8-bitowe, ale tak ˙ze 16-bitowe

- np. chi ´nska, japo ´nska czy korea ´nska. Obsługa wielobajtowych zestawów znaków
przy wprowadzaniu danych jest zapewniona przez mechanizm XIM.

Je´sli chodzi o polskie czcionki pod X-ami, to spraw˛e załatwi nam komenda:

# poldek -i XFree86-fonts XFree86-fonts-100dpi-ISO8859-2 \

XFree86-fonts-75dpi-ISO8859-2 XFree86-fonts-ISO8859-2 XFree86-fonts-

base

Polsk ˛

a klawiatur˛e powinni´smy wybra´c podczas konfiguracji xservera... Je´sli tego

nie uczynili´smy, to w pliku

/etc/X11/XF86Config-4

r˛ecznie musimy nanie´s´c od-

powiedni ˛

a poprawk˛e. Powinna ona wygl ˛

ada´c mniej wi˛ecej tak:

Section "InputDevice"
Identifier

"Keyboard0"

Driver

"keyboard"

Option

"CoreKeyboard"

Option

"XkbRules"

"xfree86"

Option

"XkbModel"

"pc104"

Option

"XkbLayout"

"pl"

EndSection

Myszka pod konsol ˛

a

Wst ˛ep

Najpierw musimy zainstalowa´c demona odpowiadaj ˛

acego za działanie myszy. Robi-

my to poleceniem:

91

background image

Rozdział 9. Konfiguracja systemu

poldek -i gpm

PS/2

W kernelach 2.6.x musimy załadowa´c moduł psmouse, aby nasza myszka działała.
Robimy to poleceniem:

modprobe psmouse

Teraz przechodzimy do konfiguracji gpma. W tym celu edytujemy plik /etc/sysconfig/mouse.

Ustawiamy nast˛epuj ˛

acy parametr:

DEVICE=/dev/psaux

Powy ˙zszy parametr obowi ˛

azuje równie ˙z posiadaczy laptopów. TouchPady i Track-

Pointy s ˛

a traktowane tak samo jak myszy na zł ˛

aczu PS/2.

serial

W przypadku myszy serialowej w kernelach 2.6 musimy załadowa´c moduł busmo-
use poleceniem:

modprobe busmouse

W zale ˙zno´sci od tego na którym comie mamy mysz ustawiamy parametr DEVICE w
/etc/syconfig/mouse. Np:

DEVICE=/dev/ttyS0

Pami˛etaj ˛

ac, ˙ze /dev/ttyS0 to com1, /dev/ttyS1 to com2 ...

usb

Gdy mamy mysz na usb, robimy nast˛epuj ˛

ace rzeczy:

Ładujemy moduły potrzebne do pracy myszy:

modprobe hid , usbmouse

Teraz w /etc/sysconfig/mouse w sekcji DEVICE spisujemy:

DEVICE=/dev/input/mouse0

Je ˙zeli mamy wi˛ecej ni ˙z jedn ˛

a myszk˛e na usb, to kolejne nazywaj ˛

a si˛e /dev/input/mouse1

... itd.

92

background image

Rozdział 9. Konfiguracja systemu

Zako ´

nczenie

Sekcj˛e DEVICE w /etc/sysconfig/mouse mamy ju ˙z ustawion ˛

a, teraz nale ˙zy ustawi´c

inne parametry.

MOUSETYPE - ten parametr definiuje rodzaj myszki, je ˙zeli masz myszk˛e kompaty-
biln ˛

a z ps/2 mo ˙zesz u ˙zy´c "imps2" lub "ps2" (nawet je ˙zeli jest to mysz na usb). Dla

myszek kompatybilnych z microsoftowymi nale ˙zy u ˙zy´c "ms3" . Wszystkie kompaty-
bilne typy dostaniemy wydaj ˛

ac polecenie:

gpm -m /dev/psaux -t help

Gdzie /dev/psaux to ´scie ˙zka do naszej myszy.

Z inych opcji mo ˙zna wyró ˙zni´c BUTTON_COUNT gdzie definiujemy liczb˛e przyci-
sków jakie posiada mysz.

Reszta opcji zale ˙zy od naszych indywidualnych preferencji.

Warto zrobi´c sobie jeszcze link symboliczny do urz ˛

adzenia gdzie mamy mysz. Robi-

my go poleceniem :

ln -s /dev/mouse /dev/psaux

Gdzie /dev/psaux to "wska´znik" na nasz ˛

a mysz.

Wcze´sniej załadowane moduły mo ˙zna jeszcze wpisa´c do /etc/modules , aby łado-
wały si˛e przy starcie systemu.

Teraz wystarczy tylko uruchomi´c usług˛e gpm i cieszy´c si˛e myszk ˛

a w konsoli :)

/etc/rc.d/init.d/gpm start

Zegar

Plik

/etc/sysconfig/clock

zawiera ustawienia zegara. Je ˙zeli zauwa ˙zysz, ˙ze zegar

systemowy nie trzyma ustawie ´n po ponownym uruchomieniu systemu wyedytuj ten
plik. Zmie ´n w nim warto´s´c parametru UTC na tak ˛

a jak poni ˙zej.

UTC="false"

Jego zawarto´s´c jest u ˙zywana przez skrypt

/etc/rc.d/rc.sysinit

na bardzo wcze-

snym poziomie uruchamiania systemu.

Przypisy

1. www.inf.sgsp.edu.pl/pub/PROGRAMY/PLD/

93

background image

Rozdział 9. Konfiguracja systemu

94

background image

Rozdział 10. Administracja

W tym rozdziale znajdziesz informacje dotycz ˛

ace administracji systemem PLD

Ratowanie systemu

Wst ˛ep

Czesami mo ˙ze si˛e zdarzy´c, ˙ze upgrejduj ˛

ac kernel lub inny wa ˙zny pakiet popsujemy

sobie system uniemo ˙zliwiaj ˛

ac jego start. Je ˙zeli dojdzie do takiej sytuacji jedyne co

nam zostaje to ratowa´c naszego linuksa z innego systemu. Do tego celu mo ˙ze nam
posłuzy´c inna dystrybucja zainstalowana na dysku, b ˛

ad´z bootowalna płytka z linuk-

sem.

Przygotowanie

B˛edziemy potrzebowa´c dystrybucj˛e uruchamian ˛

a z płyty CD. Do tego b˛edzie si˛e

nadawała si˛e niemal ka ˙zda taka dystrybucja np.: PLDLiveCD lub RescueCD. Uru-
chamiamy system i w przypadku RescueCD musimy załadowa´c odpowienie modu-
ły do obsługi naszego dysku. W przypadku gdzy jest to dysk IDE

# modprobe ide-disk

powino wystarczy´c.

Nast˛epnie musimy zamontowa´c główny system plików (/).

# mkdir /mnt/rootfs
# mount /dev/hda3

Je ˙zeli masz wi˛ecej partycji na których znajduj ˛

a si˛e pliki systemowe tak ˙ze je podmon-

tuj w odpowiednich katalogach. Np.:

# mount /dev/hda1 /mnt/rootfs/boot

Naprawa

Teraz w zale ˙zno´sci co popsułe´s musisz podj ˛

ac odpowiednie działania. Je ˙zeli jest to

jaki´s plik konfiguracyjny mo ˙zesz szybko go poprawi´c. Natomiast przy popsutym
kernelu albo bootloaderze nale ˙zy wykona´c polecenie:

# chroot /mnt/rootfs /bin/sh

i tutaj działasz jak na macierzystym systemie. Warto zamontowa´c /proc przed rein-
stalacj ˛

a kernela poniewa ˙z jest wymagany do poprawnego wygenerowania initrd.

Mo ˙ze si˛e zdarzy´c, ˙ze poldek si˛e nie uruchamia w chroocie i uniemo ˙zliwia to nam
zmiane jakiego´s pakietu. Sposobem na obej´scie tego jest uruchomienie go z flag ˛

a --

root , np:

95

background image

Rozdział 10. Administracja

# poldek --root /mnt/rootfs

Zarz ˛

adzanie podsystemami i usługami

Wł ˛

aczenie i wył ˛

aczanie usług/podsystemów

W systemie dost˛epna jest spora liczba specjalnych "zada ´n" znacz ˛

aco automatyzuj ˛

a-

cych prac˛e administratora. Zadania te s ˛

a wywoływane w skryptach napisanych w

j˛ezyku powłoki i mo ˙zna je podzieli´c na trzy grupy:

Zadania zarz ˛

adzaj ˛

ace podsystemami - specjalnymi zadaniami systemowymi uru-

chamianymi przy starcie systemu. Podsystemy maj ˛

a za zadanie odczyta´c pliki

konfiguracyjne systemu (głównie z /etc/sysconfig) i zgodnie z ich zawarto´sci ˛

a

dokona´c konfiguracji systemu operacyjnego. Do tego typu zada ´n nale ˙zy konfigu-
rowanie sieci, d´zwi˛eku, ładowanie niezb˛ednych modułów i wiele innych.

Zarz ˛

adzaj ˛

ace usługami systemowymi - zarz ˛

adzaj ˛

a programami działaj ˛

ace w tle

(demony) np.: serwer WWW, serwer SMB

Zadania wykonywane przy zamkni˛eciu - zajmuj ˛

a si˛e ko ´nczeniem pracy usług, za-

mykaniem programów, oraz pracami porz ˛

adkowymi.

Skryptami tymi mo ˙zna zarz ˛

adza´c r˛ecznie. Wykonujemy to za pomoc ˛

a uruchomie-

nia odpowiedniego skryptu z katalogu

/etc/rc.d/init.d/

z odpowiednim para-

metrem okre´slaj ˛

acym akcj˛e któr ˛

a skrypt ma wykona´c. Uruchomienie bez parametru

podaje list˛e mo ˙zliwych dla niego akcji np. poni ˙zsze polecenie wy´swietli mo ˙zliwe pa-
rametry podsystemu sieci:

# /etc/rc.d/init.d/network
Usage: /etc/rc.d/init.d/network {start|stop|restart|status}

Wi˛ekszo´s´c skryptów (podobnie jak powy ˙zszy) akceptuje parametry start, stop, re-
start i status.

Tabela 10-1. Popularne akcje skryptów startowych

Parametr

Akcja

run

Uruchamia podsystem/usług˛e

stop

Zatrzymuje podsystem/usług˛e

restart

Uruchamia ponownie

podsystem/usług˛e (zazwyczaj ta akcja
jest kolejnym wywołaniem skryptu z
parametrem ’stop’ i ’start’)

96

background image

Rozdział 10. Administracja

Parametr

Akcja

status

Wy´swietla stan podsystemu/usługi,

dzi˛eki temu mo ˙zemy łatwo okre´sli´c czy
czy jest uruchomiony. W niektórych
wypadkach podawane s ˛

a dodatkowe

informacje.

Poni ˙zej przedstawiono wył ˛

aczenie obsługi sieci, oraz ponowne jej uruchomienie. W

ten sposób zmusza si˛e usług˛e lub podsystem do ponownego odczytania swojej kon-
figuracji. W tym wypadku nast ˛

api skonfigurowanie na nowo interfejsów, zaktualizo-

wanie ustawie ´n, tablic routingu itd...

# /etc/rc.d/init.d/network stop
Shutting down interface eth0.......................................[ DONE ]
Shutting down interface eth1.......................................[ DONE ]

# /etc/rc.d/init.d/network start
Setting network parameters.........................................[ DONE ]
Bringing up interface eth0.........................................[ DONE ]
Bringing up interface eth1.........................................[ DONE ]

Nieco wygodniej zarz ˛

adza si˛e skryptami przy pomocy programu service. Aby wy-

kona´c za jego pomoc ˛

a taki sam efekt jak powy ˙zej musimy go wywoła´c z dwoma

parametrami, pierwszy to nazwa skryptu, drugi za´s to wybrana akcja:

# service network stop
# service network start

Domy´slnie po zainstalowaniu nowego podsystemu lub usługi, dodawane s ˛

a po-

trzebne skrypty startowe. Dzi˛eki temu nowo zainstalowane oprogramowanie uru-
chamia si˛e automatycznie w trakcie startu systemu lub przy zmianie poziomu pracy.
Aby uruchomi´c dopiero co zainstalowany podsystem lub usług˛e musimy wykona´c
to "r˛ecznie".

Uruchamianie usług/podsystemów w trakcie startu systemu

W PLD zastosowano skrypty startowe typu System-V. Według tego schematu ł ˛

acza

symboliczne odpowiadaj ˛

ace odpowiedniemu skryptowi startowemu s ˛

a umieszcza-

ne w katalogach

/etc/rc.d/rc{$nr}.d

( {$nr} odpowiada warto´sci "poziomu pra-

cy"). Zaawansowani u ˙zytkownicy mog ˛

a r˛ecznie umieszcza´c w danym katalogu ł ˛

acze

b ˛

ad´z je usuwa´c w zale ˙zno´sci od potrzeb. Taka metoda jest nie tylko uci ˛

a ˙zliwa, ale te ˙z

mo ˙zna te ˙z popełni´c bł ˛

ad. Z tego wzgl˛edu nie jest zalecana dla zrówno dla nowicjuszy

jak i zaawansowanych.

Du ˙zo wygodniejsze i bezpieczniejsze jest u ˙zywanie programu chkconfig. Aby wy-

´swietli´c list˛e usług uruchamianych przy starcie wydajemy polecenie

chkconfig --list
gpm

0:nie

1:nie

2:tak

3:tak

4:tak

5:tak

6:nie

network

0:nie

1:nie

2:tak

3:tak

4:tak

5:tak

6:nie

ntp

0:nie

1:nie

2:tak

3:tak

4:tak

5:tak

6:nie

smb

0:nie

1:nie

2:nie

3:tak

4:tak

5:tak

6:nie

97

background image

Rozdział 10. Administracja

sshd

0:nie

1:nie

2:nie

3:nie

4:tak

5:nie

6:nie

Jak wida´c dla ka ˙zdej usługi/podsystemu podawana jest informacja o tym czy system
wywoła skrypt uruchamiaj ˛

acy w danym trybie pracy. W PLD najcz˛e´sciej korzysta si˛e

z trybów 3 i 5 rzadziej z: 1, 2 i 4. Nigdy nie ustawiamy trybu 0 (restart) i 6 (wy-
ł ˛

aczenie). Na powy ˙zszym przykładzie podsystem "network" jest uruchamiana dla

poziomów: 2,3,4,5, za´s sshd tylko dla trybu 4.

Aby zrekonfigurowa´c uruchamianie jakiej´s usługi wywołujemy program nast˛epuj ˛

a-

co: chkconfig --level [12345] {$usługa} on/off. Parametr --level to lista trybów które
chcemy modyfikowa´c, {$usługa} to nazwa usługi. za´s on/off to rodzaj modyfikacji
wł ˛

aczenie/wył ˛

aczenie. A oto kilka przykładów:

] Dodanie uruchamiania usługi sshd dla trybów 3 i 5
# chkconfig --level 35 sshd on

] Usuni˛

ecie uruchamiania sshd dla trybu 5

# chkconfig --level 5 sshd off

Dodawanie i usuwanie podsystemów do uruchomienia w danym trybie nie powo-
duje uruchomienia go czy te ˙z zatrzymania działaj ˛

acego. Aby to zrobi´c musimy si˛e

przeł ˛

aczy´c sie dany tryb, lub wykona´c to r˛ecznie.

Zmiana poziomu pracy systemu

PLD jest systemem uniksowym, a wi˛ec obsługuje tzw. poziomy pracy (ang. run le-
vels). Poziom pracy jest to specjalna konfiguracja oprogramowania systemu, która
pozwala zaistnie´c tylko wytypowanym usługom b ˛

ad´z podsystemom.

Tabela 10-2. Dost˛epne poziomy pracy

Poziom

Opis

1

Tryb jednego u ˙zytkownika (ang. Single

user mode) - u ˙zywany przez
administratorów w sytuacjach
awaryjnych. Jest to konfiguracja z
minimaln ˛

a ilo´sci ˛

a uruchamianych

podsystemów. Nie ma obsługi sieci i nie
zezwala na logowanie si˛e innym
u ˙zytkownikom.

2

Rzadko u ˙zywany tryb wielu

u ˙zytkowników. Uruchamiana jest
obsługa sieci i wi˛ekszo´sci usług oprócz

NFS

.

98

background image

Rozdział 10. Administracja

Poziom

Opis

3

Popularny tryb prac z dost˛epem wielu

u ˙zytkowników i uruchomieniem
wszystkich usług. Jest to typowy tryb
dla maszyn obsługiwanych z konsoli
tekstowej - np.: serwerów.

4

Rzadko u ˙zywany tryb wielu

u ˙zytkowników. - praca w konsoli
tekstowej

5

Typowy tryb z dost˛epem wielu

u ˙zytkowników uruchamiaj ˛

acy system

X-Window

. Bardzo popularny na stacjach

roboczych

S ˛

a jeszcze dwa tryby: tryb 0 i 6. Pierwszy jest u ˙zywany w celu zatrzymania wszyst-

kich usług i podsystemów przed zamkni˛eciem systemu, drugi za´s przed ponownym
uruchomieniem systemu. Z po´sród wymienionych poziomów pracy najcz˛e´sciej u ˙zy-
wa si˛e poziomu 3 lub 5.

System startuje w trybie okre´slonym w pliku

/etc/inittab

, informacj˛e o domy´sl-

nym poziomie znajdziemy w wierszu oznaczonym słowem "

initdefault

". Przy-

kładowy poni ˙zszy wpis wskazuje systemowi ˙ze ma uruchomi´c si˛e w pi ˛

atym trybie

pracy:

id:5:initdefault:

Bie ˙z ˛

acy poziom pracy mo ˙zna zmieni´c tak ˙ze w trakcie pracy systemu. System zatrzy-

ma wszystkie podsystemy i usługi zablokowane dla docelowego poziomu pracy, za´s
uruchomi te które s ˛

a nie pracuj ˛

a w bie ˙z ˛

acym trybie. Poziom pracy zmieniamy pole-

ceniem telinit. Przykładowo je´sli chcemy przej´s´c do trybu 2 u ˙zyjemy polecenia:

# telinit 2

W efekcie je´sli system do tej pory pracował w trybie 3 to wył ˛

aczona zostanie usługa

NFS

.

Nale ˙zy pami˛eta´c o tym ˙ze u ˙zycie programu telinit nie dokonuje zmian w pliku

/etc/inittab

, tak wi˛ec przy ponownym uruchomieniu systemu wybrany zostanie

ustawiony w nim poziom pracy.

99

background image

Rozdział 10. Administracja

100

background image

Rozdział 11. Konfiguracja sieci

W tym rozdziale znajdziesz informacje dotycz ˛

ace konfiguracji sieci

Podstawowa konfiguracja sieci

Ta cz˛e´s´c konfiguracji sieci jest wspólna dla wszystkich pozostałych opisów. Pierw-
sz ˛

a rzecz ˛

a jak ˛

a musimy zrobi´c to ustali´c wszystkie konieczne parametry poł ˛

aczenia

sieciowego. W razie w ˛

atpliwo´sci nale ˙zy skontaktowa´c si˛e z naszym dostawc ˛

a usług

internetowych.

Kiedy ustalimy wymagane informacje, zaczynamy od otworzenia naszej karcie sie-
ciowej "okna na ´swiat" i pokaza´c pewne wa ˙zne dla niej adresy, pod które musi trafi´c.
W tym celu udajmy si˛e do pliku

/etc/sysconfig/network

.

# vim /etc/sysconfig/network

Przechodzimy do konfiguracji.

NETWORKING=yes

Ustawiamy na "yes" je ˙zeli chcemy komunikowa´c si˛e z sieci ˛

a.

IPV4_NETWORKING=yes

Ustawiamy na "yes" je ˙zeli b˛edziemy korzysta´c z protokołu ipv4.

IPV4_FORWARDING=no

Zakładam, ˙ze to stacja robocza, wi˛ec nie potrzebujemy forwardingu.

HOSTNAME="styx"

Tutaj ustawiamy nazw˛e naszego komputera. Spore pole do popisu dla Twojej inwen-
cji twórczej. ;-)

NISDOMAIN="localdomain"

Tutaj wystarczy domy´slne "localdomain".

GATEWAY="192.168.0.1"
GATEWAYDEV="eth0"

Dwie wa ˙zne opcje. Pierwsza okre´sla adres IP naszej bramki umo ˙zliwiaj ˛

acej nam ko-

munikacj˛e ze ´swiatem. Druga za´s urz ˛

adzenie, które b˛edzie si˛e z ni ˛

a komunikowa´c.

To tyle je ˙zeli chodzi o konfiguracj˛e tego pliku, o ile nie jeste´s zainteresowany takimi
protokołami jak IPX czy IPv6.

Pozostaje nam jeszcze tylko jeden plik:

resolv.conf

. Wyedytujmy go sobie. Je´sli go

nie posiadasz, mo ˙zesz go utworzy´c za pomoc ˛

a dowolnego edytora lub poleceniem

touch

# vim /etc/resolv.conf

101

background image

Rozdział 11. Konfiguracja sieci

Co w nim powinno si˛e znajdowa´c? Tak naprawd˛e wystarczy jeden wpis. Je ˙zeli po-
siadasz w swojej sieci serwer DNS, wystarczy, ˙ze wpiszesz co´s takiego:

nameserver 192.168.0.1

Powy ˙zszy adres jest adresem mojego serwera DNS. Je ˙zeli nie posiadasz takiego ser-
wera, zrób nast˛epuj ˛

acy wpis:

nameserver 194.204.159.1
nameserver 194.204.152.34

Te adresy s ˛

a adresami serwerów DNS TPSA. Generalnie wystarczy tylko adres pri-

mary DNS, ale drugi te ˙z nie zaszkodzi. Je ˙zeli jeste´smy podł ˛

aczeni do innego opera-

tora to wtedy od niego musimy otrzyma´c odpowiednie adresy serwerów DNS.

Warto równie ˙z w tym pliku umie´sci´c wpis:

domain localdomain

Zamiast localdomain mo ˙zesz wpisa´c nazw˛e Twojej domeny, je ˙zeli takow ˛

a posiadasz.

Warto równie ˙z wyedytowa´c plik hosts:

# vim /etc/hosts

Zrób w nim wpis w formie: IP host.domena host np.:

192.168.0.2 localhost.localdomain localhost

Oczywi´scie, je ˙zeli posiadasz swoj ˛

a domen˛e, zamiast localdomain wpisz jej nazw˛e,

równie ˙z je´sli ustawiłe´s własny HOSTNAME wpisz go zamiast localhost. Oto przy-
kład takiego wpisu:

213.25.115.88 platinum.elsat.net.pl platinum

Wydawa´c si˛e mo ˙ze ˙ze to mało istotny szczegół, a jednak, jak si˛e okazuje, nie do ko ´n-
ca. Niektóre demony wymagaj ˛

a takich wpisów do poprawnego funkcjonowania. Ja-

ko przykład warto wymieni´c tu postfiksa. Plik ten słu ˙zy równie ˙z do szybszej identy-
fikacji komputerów w sieci, bez konieczno´sci odwoływania si˛e do serwera DNS.

Konfiguracja karty sieciowej

Sprawdzamy jak ˛

a mamy kart ˛e sieciow ˛

a

Na szcz˛e´scie wi˛ekszo´s´c dost˛epnych na rynku kart sieciowych jest oparta na układach
Realteka, 3Com b ˛

ad´z Intela. Wszystkie kernele z serii 2.2.x, 2.4.x i 2.6.x, dost˛epne

w postaci gotowych pakietów rpm, jak równie ˙z te znajduj ˛

ace si˛e w repozytorium

serwera CVS PLD (cvs.pld-linux.org), które mo ˙zemy sobie sami zbudowa´c, posiadaj ˛

a

skompilowane moduły do tych kart sieciowych.

Przejd´zmy do sedna sprawy.

102

background image

Rozdział 11. Konfiguracja sieci

Jak teraz sprawdzi´c jak ˛

a mam kart˛e sieciow ˛

a? To proste. Instalujemy pakiet pciutils.

Znajduje si˛e on na jednym z CD PLD Linux Distribution.

# mount /mnt/cdrom/
#
# rpm -ivh /mnt/cdrom/PLD/RPMS/pciutils-2.1.10-7.i686.rpm

Nast˛epnie wystarczy jak wpiszemy polecenie lspci. W´sród ró ˙znych urz ˛

adze ´n znaj-

dziemy równie ˙z nasz ˛

a sieciówk˛e.

# lspci
[...]
00:0e.0 Ethernet controller: Realtek Semiconductor Co. Ltd. RTL-8139/8139C/8139C+
[...]

Opcjonalnie, je ˙zeli nie chcemy, b ˛

ad´z nie umiemy lub nie chce nam si˛e instalowa´c

pakietu pciutils, a potrzebujemy zidentyfikowa´c nasz ˛

a kart˛e sieciow ˛

a wydajmy takie

oto polecenie:

# dmesg |grep -i eth
[...]
eth0: Identified 8139 chip type ’RTL-8139C’
[...]

W´sród wielu informacji zwró´c uwag˛e na fragment "RTL-8139/8139C/8139C+". Jest
to wskazówka przydatna przy szukaniu odpowiedniego modułu.

Instalujemy nasz ˛

a sieciówk ˛e

Gdzie znajdziemy moduły do naszej karty? Znajduj ˛

a si˛e one w katalogu

/lib/modules/2.2.22/net/

.

UWAGA! W PLD w kernelach z serii 2.4.x i 2.6.x lokalizacja jest nieco inna, np.:

/lib/modules/2.6.5/kernel/drivers/net/

. Posiadaj ˛

ac ju ˙z informacje płyn ˛

ace z

punktu pierwszego wiemy mniej wi˛ecej którego modułu mamy poszukiwa´c. Mo ˙ze-
my wi˛ec wyda´c polecenie:

# modprobe -l |grep 8139
/lib/modules/2.6.5-1/kernel/drivers/net/8139cp.o
/lib/modules/2.6.5-1/kernel/drivers/net/8139too.o

Oto i nasz moduł. Co dalej? Musimy go załadowa´c do pami˛eci. Robimy to polece-
niem modprobe

# modprobe 8139too

Zwró´c uwag˛e, ˙ze pomin ˛

ałem w nazwie modułu ".o". Upewnijmy si˛e teraz czy nam

si˛e udało.

# lsmod |grep 8139too
8139too

13536

0 (autoclean)

Pi˛eknie. Wyedytujmy teraz plik

/etc/modules.conf

dla j ˛

ader 2.2.x i 2.4.x

# vim /etc/modules.conf

103

background image

Rozdział 11. Konfiguracja sieci

Zróbmy w nim nast˛epuj ˛

acy wpis:

alias eth0 8139too

Za´s dla j ˛

ader z serii 2.6.x edytujemy plik

/etc/modprobe.conf

Dzi˛eki temu po restarcie komputera nasz moduł b˛edzie ładowany automatycznie
podczas odwołania do urz ˛

adzenia

eth0

. Wyglada na to, ˙ze kart˛e mamy ju ˙z zainsta-

lowan ˛

a, wystarczy j ˛

a teraz poprawnie skonfigurowa´c.

Konfiguracja karty sieciowej

Zakładam, ˙ze Twój komputer posiada jedn ˛

a kart˛e sieciow ˛

a. B˛edzie ona widoczna w

systemie jako

eth0

. Wyedytuj wi˛ec plik

ifcfg-eth0

.

# vim /etc/sysconfig/interfaces/ifcfg-eth0

Aby karta działała poprawnie powiniene´s mie´c tam podobne ustawienia:

DEVICE="eth0"

Opcja ta okre´sla symbol urz ˛

adzenia widocznego w systemie.

IPADDR="192.168.0.2/24"

Ta opcja okre´sla adres karty sieciowej oraz mask˛e podsieci. "/24" odpowiada masce
255.255.255.0

ONBOOT="yes"

Ustaw na "yes" je´sli chcesz aby interfejs podnosił si˛e razem z systemem.

BOOTPROTO="none"

Ta opcja pozwala dokona´c wyboru, w jaki sposób karta sieciowa ma otrzymywa´c ad-
res. Powy ˙zszy wpis sprawia, ˙ze system pobiera wszystkie ustawienia z posiadanych
plików konfiguracyjnych. Wykorzystuje si˛e jeszcze BOOTPROTO="dhcp", które wy-
musza pobranie przez kart˛e ustawie ´n z serwera DHCP. Aby zadziałało to ustawie-
nie, potrzebny nam b˛edzie pakiet dhcp-client. Znajduje on si˛e równie ˙z na jednym z
CD PLD. Instalujemy go w sposób analogiczny do pakietu pciutils.

Czynno ´sci ko ´

ncowe

Pozostało nam tylko uruchomienie karty sieciowej:

# /etc/rc.d/init.d/network restart
Ustawianie parametrów sieci....................[ ZROBIONE ]
Podnoszenie interfejsu eth0....................[ ZROBIONE ]

104

background image

Rozdział 11. Konfiguracja sieci

Modułu do mojej karty nie ma w PLD, co mam zrobi ´c?

Tak te ˙z oczywi´scie mo ˙ze si˛e zdarzy´c. W takim wypadku b˛edziesz musiał skorzy-
sta´c z dyskietki, któr ˛

a na pewno masz, o ile kupiłe´s now ˛

a kart˛e. Prawdopodob-

nie znajdziesz na niej sterowniki dla Linuksa. Je ˙zeli nie, poszukaj ich w internecie
(www.google.com). Przeczytaj plik README b ˛

ad´z INSTALL, w którym znajdziesz

sposób instalacji sterownika w systemie.

Neostrada+ z modemem USB firmy Sagem

Wprowadzenie

Na samym pocz ˛

atku musimy wł ˛

aczy´c w biosie komputera port USB oraz zainstalo-

wa´c takie pakiety jak eagle oraz kernel-usb-eagle. Dodatkowo musimy jeszcze zain-
stalowa´c pakiet ppp. Je ˙zeli zainstalowałe´s system z płytki MINI-iso, powiniene´s je
tam znale´z´c. W przypadku, kiedy instalowałe´s system z dyskietki, znajdziesz je na
jednej lub kilku dyskietek "addons" czyli dyskietek zawieraj ˛

acych dodatkowe pakie-

ty.

Instalacja

Przyst˛epujemy do instalacji. Nale ˙zy przej´s´c do do lokalizacji w której znajduj ˛

a si˛e

owe pakiety a nast˛epnie wyda´c nast˛epuj ˛

ace polecenie.

# rpm -Uvh kernel-usb-eagle* eagle-usb* ppp*

Kiedy ju ˙z upewnili´smy si˛e, ˙ze mamy wł ˛

aczony port USB w biosie, musimy go za-

inicjowa´c w systemie. Mo ˙zemy to zrobi´c za pomoc ˛

a pliku

/etc/modules.conf

w

którym umieszczamy przykładow ˛

a linijk˛e

alias usb-controller usb-uhci

Je ˙zeli posiadasz zainstalowany kernel z serii 2.6.x powiniene´s umie´sci´c nast˛epuj ˛

acy

wpis w pliku

/etc/modprobe.conf

alias usb-controller uhci-hcd

Po ponownym uruchomieniu komputera powinni´smy posiada´c w systemie obecny
moduł usb-uhci (uhci-hcd dla j ˛

adra 2.6.x). W przypadku, kiedy ten moduł po prostu

nie zadziała spróbuj załadowa´c usb-ohci (ohci-hcd dla j ˛

adra 2.6.x). Je ˙zeli podł ˛

aczyłe´s

modem do portu USB 2.0 powiniene´s u ˙zy´c modułu usb-ehci (ehci-hcd dla j ˛

adra 2.6.x).

Mo ˙zemy teraz podł ˛

aczy´c modem do komputera. Nasze urz ˛

adzenie zostanie od ra-

zu wykryte i zainicjowane w systemie. Poprawna inicjalizacja powinna zako ´nczy´c
si˛e załadowaniem do pami˛eci modułu adiusbadsl. UWAGA! Je ˙zeli posiadasz kernel
2.6.x powiniene´s załadowa´c moduł eagle-usb.

105

background image

Rozdział 11. Konfiguracja sieci

Konfiguracja

Mo ˙zemy zacz ˛

a´c od pliku

/etc/resolv.conf

. Opis znajdziecie w rozdziale po´swi˛e-

conym konfiguracji sieci. Przyst˛epujemy teraz do konfiguracji pliku

/etc/eagle-

usb/eagle-usb.conf

. Nale ˙zy w nim zmieni´c warto´s´c opcji VPI na tak ˛

a jak ˛

a widzicie

poni ˙zej.

VPI=00000000

Skonfigurujemy teraz demona PPP. Utworzonemu w wyniku instalacji plikowi

/etc/ppp/options

zmieniamy nazw˛e na

options.old

. Tworzymy nowy plik options z zawarto´sci ˛

a tak ˛

a

jaka została przedstawiona na poni ˙zszym listingu. Najwa ˙zniejsz ˛

a rzecz ˛

a jest poda-

nie w nim nazwy u ˙zytkownika, która jest konieczna do ustanowienia poł ˛

aczenia.

Mo ˙zemy równie ˙z dopisa´c opcj˛e debug, je´sli chcemy by´c informowani o tym co si˛e
dzieje.

# cat /etc/ppp/options
user "user@neostrada.pl"
mru 1492
mtu 1492
noipdefault
defaultroute
usepeerdns
noauth
#ipcp-accept-remote
#ipcp-accept-loacal
nobsdcomp
nodeflate
nopcomp
novj
novjccomp
#novaccomp -am
noaccomp -am
#wł ˛

aczam debug.

debug

Musimy jeszcze wpisa´c hasło. Aby tego dokona´c wyedytujmy plik

/etc/ppp/chap-

secrets

. UWAGA! Je ˙zeli si˛e pomylisz i wpiszesz hasło do

/etc/ppp/pap-secrets

,

hasło nie zadziała.

# cat /etc/ppp/chap-secrets
user@neostrada.pl * haslo *

Na tym zako ´nczymy konfiguracj˛e poł ˛

aczenia z Neostrad ˛

a. Jeste´smy ju ˙z gotowi aby

wszystko uruchomi´c.

Uruchomienie i post konfiguracja

Najbardziej wygodnym sposobem b˛edzie wykorzystanie mechanizmu rc-scripts do
uruchamiania usługi. Poni ˙zej zamieszczam przykład pliku

/etc/sysconfig/interfaces/ifcfg-

ppp0

, który mo ˙zesz wykorzysta´c.

PPPOA_EAGLE=yes

106

background image

Rozdział 11. Konfiguracja sieci

DEVICE=ppp0
ONBOOT=yes
PERSIST=yes
HOLDOFF=10
USER=’user@neostrada.pl’
PPPOA_NETADDR=192.168.60.30/24
ONBOOT=yes

Aby uruchomi´c neostrad˛e wystarczy wyda´c polecenie takie jak poni ˙zej.

# ifup ppp0

Dzi˛eki opcji

ONBOOT=yes

poł ˛

aczenie b˛edzie nawi ˛

azywane wraz z uruchamianiem

systemu.

Mo ˙zemy sprawdzi´c np. pingiem ł ˛

aczno´s´c z jakim´s zewn˛etrznym serwerem, np. ping

www.pld-linux.org

. Je ˙zeli posiadasz jak ˛

a´s sie´c LAN, lub kilka komputerów w miesz-

kaniu, powiniene´s przeczyta´c rozdział po´swi˛econy maskaradzie.

Neostrada+ z modemem USB firmy Alcatel - Thompson

Przygotowanie do instalacji

Oto krótka lista tego, co b˛edzie nam potrzebne do uruchomienia modemu.

Port USB w komputerze

J ˛

adro z serii 2.4 lub 2.6

Programy: modem_run oraz pppoa3

Pakiet: ppp-plugin-pppoatm

Firmware do modemu.

Firmware dla modemu mo ˙zna ´sci ˛

agn ˛

a´c z st ˛

ad: http://speedtouch.sourceforge.net/files/firmware.bin

1

.

Je ˙zeli ju ˙z upewniłe´s si˛e, ˙ze masz wszystkie wymagane rzeczy, mo ˙zemy przyst ˛

api´c

do instalacji.

Konfiguracja

W pierwszej kolejno´sci musimy zainicjowa´c w systemie USB, oraz kilka modułów
do obsługi ppp. Mo ˙zemy to zrobi´c wykonuj ˛

ac nast˛epuj ˛

ace polecenie

# for i in usbcore uhci acm ppp_generic \

ppp_synctty;do modprobe $i;done

Komentarza wymaga tutaj obsługa USB. W przykładzie został podany moduł

uhci

.

Je ˙zeli nie załaduje si˛e poprawnie (zostaniesz o tym poinformowany) powiniene´s wy-
bra´c jeden z nast˛epuj ˛

acych:

usb-uhci

,

usb-ohci

lub dla USB 2.0

usb-ehci

. Posiada-

cze j ˛

ader z serii 2.6 maj ˛

a do wyboru nast˛epuj ˛

acy zestaw modułów:

uhci-hcd

,

ohci-

107

background image

Rozdział 11. Konfiguracja sieci

hcd

lub

ehci-hcd

. Ta ró ˙znorodno´s´c jest uwarunkowana sprz˛etowo, w zale ˙zno´sci od

rodzaju chipsetu obsługuj ˛

acego porty USB. Wa ˙zn ˛

a rol˛e tutaj odgrywa moduł acm,

gdy ˙z bez niego nie b˛edzie mo ˙zliwe załadowanie firmware do modemu. W kernelach
z serii 2.6.x odpowiednikiem

acm

jest moduł

cdc-acm

.

Posiadacze kernela z serii 2.6.x mog ˛

a u ˙zy´c poni ˙zszej p˛etli która załaduje wszystkie

potrzebne moduły. Oczywi´scie nale ˙zy zwróci´c uwag˛e aby załadowa´c odpowiedni
dla Twojego sprz˛etu moduł obsługuj ˛

acy kontroler USB na płycie głównej.

# for i in usbcore uhci-hcd cdc-acm ppp_generic ppp_synctty;do modprobe $i;done

Nast˛epnym krokiem jest podmontowanie systemu plików w proc.

# mount none /proc/bus/usb -t usbdevfs

W tym momencie mo ˙zemy sprawdzi´c, czy SpeedTouch rzeczywi´scie jest widziany
przez system. Aby tego dokona´c wykonaj poni ˙zsze polecenie

# cat /proc/bus/usb/devices
[...]
S:

Manufacturer=ALCATEL

S:

Product=Speed Touch 330

[...]

Musisz teraz zainstalowa´c oprogramowanie do modemu. Robimy to wydaj ˛

ac nast˛e-

puj ˛

ace polecenie:

# poldek -U speedtouch

Podł ˛

acz modem do komputera. B˛edzie on potrzebował do działania specjalnego pli-

ku, tak zwanego firmware. Program modem_run potrafi odczytywa´c firmware w
formatach przygotowanych dla Linuksa, Windowsa oraz MacOS. Jakie s ˛

a mo ˙zliwo-

´sci pobrania pliku firmware? Mo ˙zemy pobra´c go z adresu podanego na pocz ˛

atku

rozdziału. Jest to firmware przygotowany dla systemu MacOS. Linuksowy firmware
mo ˙zemy pobra´c ze strony Alcatela: www.speedtouchdsl.com/dvrreg_lx.htm

2

. Wy-

magana jest rejestracja. Mo ˙zemy równie ˙z go wzi ˛

a´c z płytki dostarczonej przez TPSA.

Powinien on znajdowa´c si˛e w archiwum

Linux/ThomsonST330/pliki.tar.gz

. Po

jego rozpakowaniu powinni´smy mie´c co´s takiego jak:

drivers/speedmgmt.tar.gz

.

Posiadaj ˛

ac ju ˙z plik

speedmgmt.tar.gz

mo ˙zemy sobie zbudowa´c pakiet rpm z firm-

warem przy u ˙zyciu speedtouch-firmware.spec. Musimy tylko skopiowa´c archiwum
do katalogu

~/rpm/SOURCES

. Dalsze instrukcje dotycz ˛

ace budowania pakietów znaj-

dziesz w tej dokumentacji w rozdziale: Tworzenie PLD. Po zainstalowaniu zbudo-
wanego pakietu z firmwarem, mo ˙zemy go załadowa´c wydaj ˛

ac poni ˙zsze polecenie:

# modem_run -v 1 -m -f /´

scie˙

zka/do/firmware

Ładowanie firmware do modemu mo ˙ze troch˛e potrwa´c. Je ˙zeli chcesz widzie´c co si˛e
dzieje wpisz nast˛epuj ˛

ace polecenie

# tail -f /var/log/messages

W trakcie ładowania pliku firmware, zaczn ˛

a miga´c diody urz ˛

adzenia. B˛edzie to ozna-

cza´c synchronizacj˛e linii. Po kilkunastu sekundach modem si˛e ustabilizuje. Diody
powróc ˛

a do zielonego koloru.

108

background image

Rozdział 11. Konfiguracja sieci

Je ˙zeli masz zainstalowany kernel z serii 2.6 lub 2.4.22+ wykonaj poni ˙zsze polecenia:

# modprobe speedtch
# modem_run -k -m -v 1 -f /usr/share/speedtouch/mgmt.o
# modprobe pppoatm

Moduł

speedtch

jest potrzebny do u ˙zycia opcji -k (mo ˙ze by´c ładowany automatycz-

nie przez hotplug. Z kolei

pppoatm

b˛edzie potrzebny do uruchomienia pppd. Nie

ładuje si˛e on automatycznie, dlatego nale ˙zy go dopisa´c np. do

/etc/modules

.

W porz ˛

adku. Po zako ´nczonej operacji ładowania firmware jeste´smy gotowi aby skon-

figurowa´c nasze ppp do neostrady. Zanim to zrobimy b˛edziemy musieli zainstalo-
wa´c pakiet

ppp-plugin-pppoatm

.

# poldek -U ppp-plugin-pppoatm

W zale ˙zno´sci od wersji zainstalowanego kernela (2.6 lub 2.4) konfiguracja demona
pppd b˛edzie si˛e ró ˙zniła kilkoma szczegółami. Poni ˙zej przedstawiam przykłady dla
obu serii j ˛

ader.

Linux z serii 2.4

# cat /etc/ppp/peers/neostrada
debug
lock
noipdefault
defaultroute
pty "/usr/sbin/pppoa3 -v 1 -e 1 -c -m 1 -vpi 0 -vci 35"
asyncmap 0
lcp-echo-interval

2

lcp-echo-failure

7

sync
user "user@neostrada.pl"
noauth
holdoff 3
persist
maxfail 25
mru 1500
mtu 1500

Linux z serii 2.6 lub 2.4.22+

# cat /etc/ppp/peers/neostrada
noauth
usepeerdns
noipdefault
defaultroute
pty "/usr/sbin/pppoa3 -e 1 -v 1 -m 1 -c -vpi 0 -vci 35"
sync
user nasz_login
noaccomp
nopcomp
noccp
holdoff 4
persist
maxfail 25

109

background image

Rozdział 11. Konfiguracja sieci

Wa ˙zn ˛

a rol˛e odgrywa tu parametr

-e 1

, gdy ˙z bez niego nie uzyskamy poł ˛

aczenia.

Oczywi´scie musimy jeszcze odpowiednio skonfigurowa´c

pap-secrets

oraz

chap-

secrets

# cat /etc/ppp/chap-secrets
user@neostrada.pl

*

haslo

*

Uruchomienie i zako ´

nczenie

W celu nawi ˛

azania poł ˛

aczenia, które uprzednio skonfigurowali´smy, wydajemy takie

oto polecenie

pppd call neostrada

Je ˙zeli nie chcemy, b ˛

ad´z z jakich´s powodów nie mo ˙zemy korzysta´c z programu hot-

plug nie musimy tego robi´c. Nie jest on tak naprawd˛e niezb˛edny. W takim przy-
padku za ka ˙zdym razem b˛edziemy musieli ładowa´c firmware modemu programem
modem_run.

InternetDSL

Wprowadzenie

InternetDSL jest usług ˛

a oferowan ˛

a przez Telekomunikacj˛e Polsk ˛

a S.A. opart ˛

a na tech-

nologii ADSL.

Konfiguracja

W celu uruchomienia usługi, wystarczy podnie´s´c dwa interfejsy sieciowe. Pierwszy
eth0, na którym b˛edzie sie´c lokalna, oraz eth1 na którym b˛edzie działa´c DSL.

Podniesienie interfejsu eth0 mo ˙zemy osi ˛

agn ˛

a´c tworz ˛

ac lub edytuj ˛

ac (je´sli istnieje)

plik

/etc/sysconfig/interfaces/ifcfg-eth0

i wpisuj ˛

ac nast˛epuj ˛

ace warto´sci:

DEVICE="eth0"
IPADDR="192.168.0.1/24"
ONBOOT="yes"
BOOTPROTO="none"

Drugi interfejs tworzymy w podobny sposób, tworz ˛

ac lub edytuj ˛

ac plik

/etc/sysconfig/interfaces/ifcfg-eth1

oraz podaj ˛

ac tam dane otrzymane od dostawcy (np. TPSA):

DEVICE="eth1"
IPADDR="80.55.203.222/30"
ONBOOT="yes"

110

background image

Rozdział 11. Konfiguracja sieci

BOOTPROTO="none"

Istotn ˛

a kwesti ˛

a jest przypisanie odpowiedniego prefiksu (maski podsieci) przy po-

daniu adresu IP zarezerwowanego dla abonenta. Prefiks wykorzystywane w usłu-
dze InternetDSL, to: /30 Internet DSL 512 (przydzielone 4 adresy IP, co odpowiada
masce podsieci 255.255.255.252), /29 Internet DSL 1 (przydzielone 8 adresów IP, co
odpowiada masce podsieci 255.255.255.248). Nale ˙zy pami˛eta´c ˙ze 3 adresy IP s ˛

a zare-

zerwowane do obsługi poł ˛

aczenia (adres sieci,brama,broadcast)

Ostatni ˛

a zmian ˛

a potrzebn ˛

a do prawidłowego działania sieci jest wyedytowanie pli-

ku

/etc/sysconfig/network

. Nale ˙zy tam poda´c adres bramy (IP modemu DSL).

GATEWAY="80.55.203.221"
GATEWAYDEV="eth1"

Nawi ˛

azanie poł ˛

aczenia sprowadza si˛e jedynie do wydania polece ´n ifup eth0 oraz

ifup eth1

, które spowoduj ˛

a podniesienie si˛e interfejsów sieciowych.

Uwagi

Je´sli przy ł ˛

aczu Internet DSL 1 zdarzaj ˛

a si˛e przypadki zerwania poł ˛

aczenia, nale ˙zy

przywi ˛

aza´c wszystkie 5 adresów IP jako wirtualne interfejsy

IPADDR1="ip1/29"
IPADDR2="ip2/29"
IPADDR3="ip3/29"
IPADDR4="ip4/29"
IPADDR5="ip5/29"

Rozdzielanie sieci (NAT)

Wprowadzenie

NAT (Network Address Translation) w Linuksie mo ˙zna zrobi´c na dwa sposoby.

Wykorzystuj ˛

ac infrastruktur˛e netfilter j ˛

adra 2.4 i 2.6.

Korzystaj ˛

ac z narz˛edzi do kontrolowania sieci z pakietu iproute2.

ipchains w kernelach 2.2 (tylko MASQUERADE).

Celem tego dokumentu jest przybli ˙zenie czytelnikowi mo ˙zliwo´sci wykonania NAT
w Linuksie. Po szczegółowe opisy nale ˙zy si˛egn ˛

a´c do ró ˙znych HOW-TO dost˛epnych

w sieci.

Oryginalna dokumentacja Netfilter w j˛ezyku angielskim

3

Najlepszym sposobem jest wykorzystanie mo ˙zliwo´sci netfilter, gdy ˙z wykonuje on
nat przed (PREROUTING) lub po (POSTROUTING) routingu, co daje nam mo ˙zli-
wo´s´c tak skonfigurowania firewalla, jak by nie było wykonywane NAT.

111

background image

Rozdział 11. Konfiguracja sieci

Netfilter (iptables)

NAT w iptables tworzymy dodaj ˛

ac regułki do tabeli "nat". ˙Zeby sprawdzi´c jakie s ˛

a

dost˛epne "Chains" w tabeli nat, nale ˙zy wykona´c takie polecenie:

# iptables -t nat -L

Zauwa ˙zymy, ˙ze mamy do dyspozycji: PREROUTING, POSTROUTING, OUTPUT.

W PREROUTING s ˛

a regułki do wykonania DNAT (Destination NAT). Zamienia to

adres hosta docelowego na nasz prywatny. W ten sposób udost˛epniamy IP publiczne
z podsieci, w której jest router.

# iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to 192.168.1.2

Mo ˙zna okre´sli´c na jakim interfejsie b˛edzie wykonany NAT poprzez opcj˛e -i $inteface.
Opcja -o w PREROUTING nie jest dost˛epna.

W POSTROUTING s ˛

a regułki do wykonania SNAT (Source NAT) na pakiecie. Zmie-

nia to adres nadawcy np. z puli adresów prywatnych na adres z puli publicznej.

# iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to 1.2.3.4

Je´sli podamy mask˛e podsieci, zostanie wykorzystana wi˛eksza ilo´s´c adresów.

W POSTROUTING jest jeszcze dost˛epny cel MASQUERADE. Wykonuje on to samo
co SNAT z tym, ˙ze na adres interfejsu jakim wychodzi pakiet. U ˙zywa´c go nale ˙zy
tylko kiedy nasz adres publiczny zmienia si˛e. (np. w poł ˛

aczeniach dial-up)

Wa ˙zne jest, aby adres 1.2.3.4 odpowiadał na zapytania ARP. Osi ˛

agniemy to tworz ˛

ac

alias IP.

# ip address add 1.2.3.4 dev eth0

Adres 1.2.3.4 musi nale ˙ze´c do podsieci, w której znajduje si˛e eth0.

Zako ´

nczenie.

Po ustawieniu DNAT na adres wewn˛etrzny zauwa ˙zymy, ˙ze jest problem z dost˛epem
do ip 1.2.3.4 z wewn ˛

atrz sieci. Dzieje si˛e tak dlatego, ˙ze adres source zostaje bez

zmian, dlatego te ˙z pakiet nie wraca do bramy. Musimy wi˛ec zmusi´c, aby host wysyłał
odpowied´z do bramy. Mo ˙zemy wykona´c to w nast˛epuj ˛

acy sposób:

# iptables -t nat -L POSTROUTING -i $if_lok -s 192.168.0.0/16 \

-d 1.2.3.4 -j -j SNAT --to 192.168.0.1

Gdzie $if_lok to interfejs lokalnej sieci, a 192.168.0.1 to adres na tym interfejsie.

112

background image

Rozdział 11. Konfiguracja sieci

Podział ł ˛

acza w zale˙zno ´sci od serwisów

Wst ˛ep

Administratorzy sieci osiedlowych cz˛esto natrafiaj ˛

a na problemy z programami p2p.

Potrafi ˛

a one skutecznie zapycha´c ł ˛

acza. Jednym z mo ˙zliwych rozwi ˛

aza ´n jest zablo-

kowanie takiego ruchu, a drugim opisanym w tym dokumencie, jest przekierowanie
go na jedno z ł ˛

acz - odci ˛

a ˙zaj ˛

ac tym samym drugie.

Jednym z mo ˙zliwych problemów mo ˙ze by´c "zatykanie" modemu, wi˛ec nale ˙zy si˛e do-
wiedzie´c ile modem mo ˙ze obsłu ˙zy´c aktywnych poł ˛

acze ´n i ograniczy´c wyj´scie przez

iptables do tej warto´sci.

Podstawy

Ograniczenie mo ˙zna wykona´c w ten sposób:

# iptables -t filter -A FORWARD -s 192.168.3.0/24 -o eth1 -p tcp -m mark \

--mark 0x0 -m connlimit --connlimit-above 300 --connlimit-mask 32 \
-j REJECT --reject-with tcp-reset

Co powoduje ograniczenie u ˙zytkownikom do 300 wychodz ˛

acych poł ˛

acze ´n TCP. Wy-

eliminuje to problem, kiedy pakiety nie s ˛

a w stanie wyj´s´c w ´swiat gdy ˙z za du ˙zo jest

aktywnych poł ˛

acze ´n i modem si˛e zawiesza.

Drugim sposobem jest ograniczenie pasma wychodz ˛

acego w taki sposób, ˙zeby router

pilnował, aby na modemie nie było zbyt du ˙zego ruchu sieciowego.

# tc qdisc del dev eth1 root
# tc qdisc add dev eth1 root handle 1 cbq bandwidth 256Kbit \

avpkt 1000 cell 8

# tc class change dev eth1 root cbq weight 32bit allot 1514

# tc class add dev eth1 parent 1: classid 1:2 cbq bandwidth 256Kbit \

rate 216Kbit weight 27Kbit prio 1 allot 1514 cell 8 maxburst 20 \
avpkt 1000 bounded

# tc qdisc add dev eth1 parent 1:2 handle 2 tbf rate 216Kbit \

buffer 10Kb/8 limit 15Kb mtu 1500

# tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 \

match ip src $ip_nat classid 1:2

Gdzie $ip_nat to adres ip serwera

Przekierowanie p2p i poł ˛

acze ´

n podobnych

Trzecim sposobem jest zakupienie drugiego, taniego ł ˛

acza i puszczenie nim niechcia-

nego ruchu np tak:

Cały niezidentyfikowany ruch przekierowywany jest na ł ˛

acze dodatkowe, a ziden-

tyfikowany na ł ˛

acze drugie (szybsze).

113

background image

Rozdział 11. Konfiguracja sieci

Na pocz ˛

atek ustawimy w tabeli mangle takie regułki, słu ˙z ˛

ac do oznaczania odpo-

wiednich pakietów:

// przywrócenie warto´

sci mark dla nawi ˛

azanych ju˙

z poł ˛

acze´

n

# iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark

// je´

sli si˛

e oka˙

ze, ˙

ze jakie´

s p2p działa na portach preferowanych to

// zaznaczy je i wtedy nie przepu´

sci

# iptables -t mangle -A PREROUTING -p tcp -m ipp2p --ipp2p \

-j MARK --set-mark 0x1214

# iptables -t mangle -A PREROUTING -p tcp -m ipp2p --ipp2p-data \

-j MARK --set-mark 0x1214

// zachowanie dla potomno´

sci

# iptables -t mangle -A PREROUTING -p tcp -m mark --mark 0x1214 \

-j CONNMARK --save-mark

// je´

sli jaki´

s pakiet jest ju˙

z oznaczony to wychodzi

// z tabeli mangle i sprawdza kolejne regułki iptables
# iptables -t mangle -A PREROUTING -m mark ! --mark 0x0 -j RETURN

// znakuje uprzywilejowane servisy
# iptables -t mangle -A PREROUTING -p icmp

-s 192.168.0.0/16 \

-j MARK --set-mark 0x1

# iptables -t mangle -A PREROUTING -p udp

-s 192.168.0.0/16 \

-j MARK --set-mark 0x1

// porty 1:1024
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 1:1024 -j MARK --set-mark 0x1

// mysql
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 3306 -j MARK --set-mark 0x1

// gg
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 8074 -j MARK --set-mark 0x1

// cache
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 8080 -j MARK --set-mark 0x1

// gra americans army
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 1716:1718 -j MARK --set-mark 0x1

// irc
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16

--dport 6665:6667 -j MARK --set-mark 0x1

// gra enemy terrytory
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 27960 -j MARK --set-mark 0x1

// gra MU Online
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 55201 -j MARK --set-mark 0x1

# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

--dport 44405 -j MARK --set-mark 0x1

// wszystkie porty dobrze znanych serwerów
// www.wp.pl
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

-d 212.77.100.101 -j MARK --set-mark 0x1

114

background image

Rozdział 11. Konfiguracja sieci

// czat.wp.pl
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

-d 212.77.100.113 -j MARK --set-mark 0x1

// www.onet.pl
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

-d 213.180.130.200 -j MARK --set-mark 0x1

//strona z grami Online

www.miniclip.com

# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

-d 69.0.241.20 -j MARK --set-mark 0x1

// www.kurnik.pl
# iptables -t mangle -A PREROUTING -p tcp

-s 192.168.0.0/16 \

-d 217.17.45.25 -j MARK --set-mark 0x1

// no i jeszcze zachowa´

c dla potomno´

sci

# iptables -t mangle -A PREROUTING -p tcp -m mark --mark 0x1 \

-j CONNMARK --save-mark

Je´sli ju ˙z mamy oznaczone pakiety nale ˙zy je odpowiednio przekierowa´c. Mo ˙zemy
skorzysta´c z dobrodziejstwa iproute2 i doda´c nast˛epuj ˛

ace regułki:

# ip route add from 192.168.0.0/16 fwmark 0x1214 lookup TABLE_SMIECI
# ip route add from 192.168.0.0/16 fwmark 0x1 lookup TABLE_PRIORYTET
// ta regułka kieruje cały nieoznakowany ruch na ł ˛

acze ´

smieci

// potrzebne je´

sli domy´

slne jest inne ł ˛

acze

# ip route add from 192.168.0.0/18 lookup TABLE_SMIECI

Oczywi´scie trzeba doda´c do tabeli odpowiednie wpisy default i informacje o sieciach
obsługiwanych przez ten router. Nale ˙zy jeszcze wykona´c te polecenia dla interfejsu
z wyj´sciem w ´swiat:

# echo 0 >

/proc/sys/net/ipv4/conf/eth1/rp_filter

Po takich zabiegach u ˙zytkownicy powinni odczu´c znaczny wzrost wydajno´sci ł ˛

acza

PRIORYTET

Niestety ł ˛

acze SMIECI jest maksymalnie zapchane, wi˛ec nale ˙zy przygotowa´c si˛e na

narzekania u ˙zytkowników którzy s ˛

a przekierowani na to ł ˛

acze.

Przy takim rozwi ˛

azaniu nale ˙zy mie´c stał ˛

a kontrol˛e nad usługami, które maj ˛

a działa´c

na ł ˛

aczu PRIORYTET i stale uaktualnia´c tabel˛e mangle o odpowiednie wpisy.

Nie udało si˛e niestety przekierowa´c samego ruchu p2p gdy ˙z podczas nawi ˛

azywania

poł ˛

aczenia nie wiemy jeszcze czy jest to pakiet nale ˙z ˛

acy do p2p. Dzisiejsze programy

p2p potrafi ˛

a działa´c na portach poni ˙zej 1024 np 80 (http) wi˛ec rozró ˙znienie ich po

portach nic nie da

Innym rozwi ˛

azaniem mo ˙ze by´c wydzielenie portów dla programów p2p i ogłosze-

nie ich u ˙zytkownikom sieci. Nale ˙zy wtedy zablokowa´c ruch p2p na wszystkie porty
oprócz tych wydzielonych i je´sli kto´s si˛e nie dostosuje to nie b˛edzie miał transferu.
To rozwi ˛

azanie ma jednak wad˛e: b˛edzie generowało du ˙zo poł ˛

acze ´n nawi ˛

azywanych

(pakiety SYN) na obu ł ˛

aczach, gdy ˙z iptables nie pozwoli na transfer dopiero po na-

wi ˛

azaniu poł ˛

aczenia i rozpoznaniu poł ˛

aczania jako nale ˙z ˛

acego do p2p.

115

background image

Rozdział 11. Konfiguracja sieci

PPP over SSH - Tunel IPv4

Wst ˛ep

Zalet ˛

a tego rodzaju tunelu jest to, ˙ze jego działanie opiera si˛e na jednych z bardziej

popularnych protokołach PPP oraz SSH. Komunikacja odbywa si˛e na porcie 22. Dzi˛e-
ki temu nie zachodzi potrzeba otwierania dodatkowych portów komunikacyjnych w
konfiguracji zapory ogniowej. Interfejsy tunelu uruchamiane s ˛

a przez demona pppd.

Posłu ˙z ˛

a nam one do zestawienia trasy mi˛edzy dwoma hostami lub sieciami w zale ˙z-

no´sci od potrzeb. Do naszych celów b˛edzie potrzebny demon pppd b˛ed ˛

acy imple-

mentacj ˛

a protokołu ppp oraz klient i serwer ssh implementuj ˛

acy protokół ssh.

Konfiguracja

Zanim przyst ˛

apimy do konfiguracji musimy zdecydowa´c który komputer b˛edzie ser-

werem a który klientem. Klient b˛edzie inicjował poł ˛

aczenie z serwerem uruchamiaj ˛

ac

demona pppd.

Serwer

Zanim przyst ˛

apimy do konfiguracji nale ˙zy sprawdzi´c czy system wyposa ˙zony jest

w demona ppp oraz serwer ssh. Pakiety które to udost˛epniaj ˛

a to odpowiednio ppp

oraz openssh-server. Przydatnym mo ˙ze si˛e okaza´c pakiet openss-clients zawieraj ˛

acy

jak sama nazwa wskazuje klienta ssh.

Po zainstalowaniu wy ˙zej wymienionych pakietów przechodzimy do konfiguracji
systemu. W pierwszej kolejno´sci zakładamy konto u ˙zytkownika oraz przydzielamy
mu grup˛e.

# groupadd vpn-users
# useradd -m -s /usr/sbin/pppd -g vpn-users vpn
# passwd vpn
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Efekt wykonanych polece ´n mo ˙zesz zobaczy´c na listingu poni ˙zej

# grep vpn /etc/passwd
vpn:x:506:1005::/home/users/vpn:/usr/sbin/pppd

#grep vpn-users /etc/group
vpn-users:x:1005:

Wynik tych polece ´n powinien odpowiada´c temu co tutaj wida´c. GID grupy

vpn-

users

wynosi

1005

czyli odpowiada GID ustawionemu w pliku

/etc/passwd

. Pole-

ceniem passwd ustawiamy hasło dla tego konta, które zostało wpisane do

/etc/shadow

.

Istotnym dla konfiguracji elementem w katalogu u ˙zytkownika

vpn

jest katalog

~/.ssh

.

Mo ˙zemy go stworzy´c (o ile wcze´sniej zainstalowali´smy) przy pomocy klienta ssh.
Robimy to w dwóch krokach które obrazuje poni ˙zszy przykład

116

background image

Rozdział 11. Konfiguracja sieci

# su - vpn -s /bin/bash
$ ssh domena.pl
Warning: Permanently added ’domena.pl,xxx.xxx.xx.x’ \

(RSA) to the list of known hosts.

Password:
^C

Mo ˙zna te ˙z r˛ecznie utworzy´c z poziomu konta

vpn

ten katalog poleceniem mkdir.

Aby umo ˙zliwi´c u ˙zytkownikowi prawo do wykonania po zalogowaniu polecenia /usr/sbin/pppd
nale ˙zy nada´c temu plikowi suida.

# chmod 4755 /usr/sbin/pppd

Konfiguracj˛e warstwy ssh mamy ju ˙z za sob ˛

a. Mo ˙zemy teraz przyst ˛

api´c do konfigura-

cji demona pppd. Demon nie b˛edzie wymagał autoryzacji, wi˛ec w pliku

/etc/ppp/options

wyszukujemy opcj˛e

auth

i zmieniamy j ˛

a na

noauth

. Musimy teraz skonfigurowa´c

wierzchołek (tzw. peer) ko ´nca tunelu. Tworzymy wi˛ec plik

/etc/ppp/peers/tunel

okre´slaj ˛

acy wszystkie niezb˛edne parametry poł ˛

aczenia. Na listingu poni ˙zej przykła-

dowa konfiguracja wierzchołka.

# cat /etc/ppp/peers/tunel
192.168.1.100:192.168.1.101
noauth
lcp-echo-interval 5
lcp-echo-failure 3

W pierwszej linijce oddzielone s ˛

a dwukropkiem adresy IP wierzchołków tunelu. Ten

po prawej stronie zostanie ustawiony na interfejsie serwera, ten po lewej klienta.
Przedstawion ˛

a konfiguracj˛e nale ˙zy potraktowa´c jako przykład i dostosowa´c j ˛

a do

rzeczywistej. Oczywi´scie, je ˙zeli spełnia ona Twoje wymagania mo ˙zesz j ˛

a zastosowa´c.

noauth

- wył ˛

aczamy autoryzacj˛e ppp

lcp-echo-interval

- warto´s´c przy tej opcji okre´sla interwał w sekundach z jakim

wysyłana b˛edzie do peera ramka ˙z ˛

adania o echo LCP. Demon sprawdza w ten

sposób czy poł ˛

aczenie nadal jest aktywne.

lcp-echo-failure

- warto´s´c podana przy tej opcji okre´sla ile ˙z ˛

ada ´n o echo LCP

ma zosta´c wysłanych je ˙zeli peer nie dał odpowiedzi. Po tylu próbach demon stwierdzi,

˙ze poł ˛

aczenie zostało utracone.

Klient

Konfiguracja po stronie klienta sprowadza si˛e do wygenerowania kluczy rsa oraz
odpowieniego ustawienia demona pppd. Klucze nam s ˛

a potrzebne do autentyka-

cji nie interaktywnej ssh. Inaczej nie uda nam si˛e nawi ˛

aza´c poł ˛

aczenia z serwerem.

Do zestawienia poł ˛

aczenia z serwerem po stronie klienta wymagana jest instalacja

pakietów ppp oraz openssh-clients. Je ˙zeli ich nie posiadasz musisz je niezwłocznie
zainstalowa´c.

Przyst˛epujemy do dalszej konfiguracji usługi po stronie klienta. Zaczniemy od wspo-
mnianego na wst˛epie generowania kluczy.

117

background image

Rozdział 11. Konfiguracja sieci

$ ssh-keygen -b 1024 -f ~/.ssh/klucz -t rsa -P ""
Generating public/private rsa key pair.
Your identification has been saved in /home/users/foo/.ssh/klucz.
Your public key has been saved in /home/users/foo/.ssh/klucz.pub.
The key fingerprint is:
c9:d8:17:bd:ba:82:a0:f0:47:7c:32:c2:e8:7e:32:e8 foo@pldmachine

Do generowania kluczy słu ˙zy znajduj ˛

ace si˛e w pakiecie openssh-clients polecenie

ssh-keygen

. U ˙zyli´smy go z nast˛epuj ˛

acymi parametrami:

-b

- długo´s´c klucza w bitach. Warto´s´c podana na listingu jest minimaln ˛

a długo´sci ˛

a

klucza która jest akceptowana przez demona sshd.

-f

- nazwa pliku (mo ˙zna poda´c ´scie ˙zk˛e do niego) zawieraj ˛

acego klucz prywatny.

-t

- typ klucza. Na listingu jest to RSA. RSA jest algorytmem słu ˙z ˛

acym do gen-

erowania kluczy.

-P

- hasło klucza. Na potrzeby tunelu hasło musi pozosta´c puste. Inaczej tunel nie

zadziała. Demon sshd b˛edzie czekał na potwierdzenie hasłem klucza co nigdy nie
nast ˛

api, gdy ˙z sesja ssh b˛edzie inicjowana poprzez demona pppd uniemo ˙zliwiaj ˛

ac

nam w sposób interaktywny jej przej˛ecie.

Kolejnym krokiem jest skopiowanie zawarto´sci pliku

klucz.pub

do pliku

~vpn/.ssh/authorized_keys

na serwerze. Mo ˙zemy tego dokona´c w nast˛epuj ˛

acy sposób.

$ scp ~/.ssh/klucz.pub vpn@domena.pl:~/.ssh/authorized_keys

Polecenie to zadziała tylko wtedy, kiedy na koncie

vpn

znajduj ˛

acym si˛e na serwe-

rze zmienimy tymczasowo powłok˛e z

/usr/sbin/pppd

na standardow ˛

a

/bin/bash

.

Na tym etapie ko ´nczy si˛e cała konfiguracja dotycz ˛

aca ssh po obu stronach. Mo ˙zemy

wi˛ec przywróci´c na serwerze w pliku

/etc/passwd

dla u ˙zytkownika

vpn

powłok˛e

na

/usr/sbin/pppd

. Przyst˛epujemy teraz do skonfigurowania demona pppd, który

b˛edzie wywoływał podczas ustanawiania poł ˛

aczenia klienta ssh.

Podobnie jak po stronie serwera w pliku

/etc/ppp/options

musimy opcj˛e

auth

zmieni´c na

noauth

. Kiedy ju ˙z to zrobimy, przyst ˛

apimy do konfiguracji wierzchoł-

ka (tzw. peera) dla klienta, który b˛edzie inicjował poł ˛

aczenie. Nazwa pliku mo ˙ze by´c

taka sama jak na serwerze. Poni ˙zej na listingu znajduje si˛e przykładowa konfiguracja
wierzchołka dla klienta.

# cat /etc/ppp/peers/tunel
192.168.1.101:192.168.1.100
debug
noauth
pty "ssh -i ~/.ssh/klucz vpn@domena.pl"
connect-delay 5000

Pierwsza linijka w pliku to dwa adresy IP oddzielone znakiem dwukropka. Adres
po lewej stronie jest adresem tego ko ´nca tunelu, który wła´snie konfigurujemy. Pa-
mi˛etamy, ˙ze adres

192.168.1.100

został ju ˙z przydzielony jako adres wierzchołka

serwera. Pozostałe opcje zostały obja´snione poni ˙zej.

debug

- wł ˛

aczamy raportowanie szczegółów poł ˛

aczenia ppp.

118

background image

Rozdział 11. Konfiguracja sieci

noauth

- wył ˛

aczamy autoryzacj˛e.

pty

- dzi˛eki tej opcji mo ˙zemy wykorzysta´c zewn˛etrzny skrypt jako o´srodek ko-

munikacji zamiast konkretnego urz ˛

adzenia terminalowego. Wykorzystujemy tutaj

ssh.

connect-delay

- okre´slony w milisekundach czas oczekiwanie na prawidłowy

pakiet PPP od peera. Je ˙zeli taki w tym czasie nadejdzie pppd rozpocznie negoc-
jacj˛e wysyłaj ˛

ac pierwszy pakiet LCP.

W przypadku problemów z poł ˛

aczeniem mo ˙zemy zwi˛ekszy´c warto´s´c

connect-delay

nawet dziesi˛eciokrotnie je ˙zeli ł ˛

acza pomi˛edzy którymi zestawiamy tunel b˛ed ˛

a sporo

obci ˛

a ˙zone. Równie ˙z po stronie klienta musimy nada´c bit suid plikowi

/usr/sbin/pppd

.

# chmod 4755 /usr/sbin/pppd

Na tym ko ´nczymy konfiguracj˛e tunelu. Mo ˙zemy przej´s´c do fazy jego uruchomienia.

Uruchomienie

Skonfigurowane poł ˛

aczenie nale ˙zy teraz zainicjowa´c wykonuj ˛

ac polecenie:

$ /usr/sbin/pppd call tunel

Udana próba poł ˛

aczenia poł ˛

aczenia powinna zaowocowa´c zapisami w logach takimi

jak poni ˙zej na listingu.

Sep

2 12:35:34 pldmachine pppd[6623]: pppd 2.4.2b3 started by foo, uid 501

Sep

2 12:35:34 pldmachine pppd[6623]: Using interface ppp0

Sep

2 12:35:34 pldmachine pppd[6623]: Connect: ppp0 <--> /dev/pts/0

Sep

2 12:35:37 pldmachine pppd[6623]: Deflate (15) compression enabled

Sep

2 12:35:37 pldmachine pppd[6623]: Cannot determine ethernet \

address for proxy ARP

Sep

2 12:35:37 pldmachine pppd[6623]: local

IP address 192.168.1.101

Sep

2 12:35:37 pldmachine pppd[6623]: remote IP address 192.168.1.100

Wykonuj ˛

ac po obu stronach polecenie ifconfig zauwa ˙zysz, ˙ze utworzone zostały in-

terfejsy ppp słu ˙z ˛

ace do komunikacji. Wykorzystamy je do zestawienia prostej trasy

pomi˛edzy dwoma sieciami.

Zakładaj ˛

ac, ˙ze jedna sie´c po stronie serwera ma adresacj˛e 192.168.0.0/24 a po stronie

klienta 192.168.2.0/24 routing b˛edzie wygl ˛

adał w sposób nast˛epuj ˛

acy.

Po stronie serwera:

# route add -net 192.168.2.0/24 gw 192.168.1.100

Po stronie klienta:

# route add -net 192.168.0.0/24 gw 192.168.1.101

W ten sposób oba komputery b˛ed ˛

a przechowywały w swoich tablicach routingu in-

formacje o sieciach poł ˛

aczonych dzi˛eki interfejsom tunelu.

119

background image

Rozdział 11. Konfiguracja sieci

VTun - Tunel IPv4

Wst ˛ep

VTun umo ˙zliwia tworzenie tuneli poprzez sieci TCP/IP wraz z przydzielaniem pa-
sma, kompresj ˛

a, szyfrowaniem danych w tunelach. Wspierane typy tuneli to: PPP,

IP, Ethernet i wi˛ekszo´s´c pozostałych protokołów szeregowych. VTun jest łatwy i ela-
styczny w konfiguracji. Mo ˙ze zosta´c wykorzystany do takich sieciowych zastosowa ´n
jak VPN, Mobil IP, ł ˛

acza o okre´slonym pa´smie oraz innych. Działa w warstwie user

space.

Opis procesu konfiguracji tunelu podzielony został na cz˛e´s´c klient oraz serwer. Adre-
sacja u ˙zyta na listingach mo ˙ze zosta´c u ˙zyta o ile nie b˛edzie si˛e ona kłóciła z bie ˙z ˛

ac ˛

a

konfiguracj ˛

a Twojej sieci. Zaczynamy od instalacji pakietu vtun na obu maszynach

b˛ed ˛

acych ko ´ncami tunelu. Dodatkowo ładujemy moduł tun do pami˛eci.

# modprobe tun

Na tym ko ´nczy si˛e wst˛epne przygotowanie systemu do konfiguracji tunelu.

Konfiguracja

Serwer

Po zainstalowaniu pakietu, opcja

VTUND_MODE

w pliku

/etc/sysconfig/vtun

po-

winna by´c ustawiona tak jak na listingu poni ˙zej

# grep VTUND_MODE /etc/sysconfig/vtun
VTUND_MODE="server"

Plikiem konfiguracyjnym dla VTuna jest

/etc/vtund.conf

. Po instalacji pakietu jest

on wypełniony przykładami konfiguracji ró ˙znego rodzaju tuneli po obu stronach
(klient - serwer). Warto je sobie zostawi´c. W tym celu wystarczy jedynie zmieni´c na-
zw˛e pliku.

# mv /etc/vtund.conf /etc/vtund.conf.orig

Przy u ˙zyciu ulubionego edytora stwórzmy nowy plik

/etc/vtund.conf

. Mo ˙zemy

w nim wyodr˛ebni´c kilka sekcji:

options

,

default

,

nazwa

,

up

oraz

down

. Sekcje up

oraz down s ˛

a podsekcjami sekcji nazwa.

options

- opcje dotycz ˛

ace działania demona oraz wykorzystywanych przez niego

programów.

options {

port

5000;

syslog

daemon;

ppp

/usr/sbin/pppd;

ifconfig

/sbin/ifconfig;

route

/sbin/route;

firewall

/sbin/iptables;

ip

/sbin/ip;

120

background image

Rozdział 11. Konfiguracja sieci

}

port

- port na którym ma nasłuchiwa´c demon.

syslog

- sposób logowania zdarze ´n na interfejsie tunelu.

ppp ifconfig route firewall ip

- zmienne, które zawieraj ˛

a ´scie ˙zki do wyko-

rzystywanych przez VTun programów.

default

- domy´slne ustawienia transmisji danych.

default {

compress yes;
speed 0;

}

compress

- kompresja pakietów w trakcie transmisji.

speed

- pr˛edko´s´c transmisji. Warto´s´c

0

oznacza brak ogranicze ´n.

vpn1

- wymieniona wcze´sniej

nazwa

tunelu. W tym miejscu znajduje si˛e wła´sciwa

konfiguracja parametrów poł ˛

aczenia.

vpn1 {

passwd

tajne.haslo;

type

tun;

proto tcp;
compress

zlib:9;

encrypt

yes;

keepalive yes;
up {

...

};
down {

...

};

}

passwd

- hasło, które posłu ˙zy do szyfrowania poł ˛

aczenia.

type

- typ tunelu (w przykładzie tunel IP)

proto

- protokół warstwy transmisyjnej tunelu.

compress

- metoda oraz stopie ´n kompresji.

encrypt

- wł ˛

aczenie szyfrowania transmisji.

keepalive

- utrzymywanie poł ˛

aczenia

up, down

- co ma si˛e wykona´c po nawi ˛

azaniu poł ˛

aczenia oraz jego zako ´nczeniu.

Szerzej o tym poni ˙zej.

up

- akcje wykonywane po nawi ˛

azaniu poł ˛

aczenia.

121

background image

Rozdział 11. Konfiguracja sieci

up {

ifconfig "%% 192.168.2.10 pointopoint 192.168.2.11 mtu 1450";

route "add -host 192.168.2.11 gw 192.168.2.10";

};

Po nawi ˛

azaniu poł ˛

aczenia nale ˙zy uruchomi´c odpowiedni interfejs. Jego nazwa zosta-

nie rozwi ˛

azana dzi˛eki zmiennej %%. Okre´slamy oczywi´scie typ interfejsu oraz jego

MTU. Kolejn ˛

a czynno´sci ˛

a jest podanie trasy do drugiego ko ´nca tunelu. Adres IP po

prawej stronie jest oczywi´scie adresem naszego (czyli serwera) ko ´nca i przez niego
prowadzi droga na drug ˛

a stron˛e.

down

- czynno´sci nast˛epuj ˛

ace po wył ˛

aczeniu tunelu.

down {

ifconfig "%% down";
ifconfig "%% delete";

route "delete -host 192.168.2.11"

};

Po zako ´nczeniu działania poł ˛

aczenia powinni´smy wył ˛

aczy´c oraz skasowa´c interfejs

który nam do niego słu ˙zył. Usuwamy równie ˙z zb˛edn ˛

a tras˛e do drugiego ko ´nca tune-

lu z tablicy routingu. Zwró´c uwag˛e na konstrukcj˛e tych dwóch podsekcji.

polecenie

"argument"

. Polecenie zostało okre´slone w sekcji

options

, natomiast argumentami

s ˛

a odpowiednie parametry danego polecenia.

Na tym ko ´nczy si˛e konfiguracja serwera. Mo ˙zemy przyst ˛

api´c teraz do konfiguracji

klienta.

Klient

Konfiguracj˛e klienta zaczniemy od edycji pliku

/etc/sysconfig/vtun

. Opcje w nim

zawarte powiniene´s ustawi´c zgodnie z tym co jest przedstawione na listingu.

VTUND_MODE="client"
VTUND_SESSION="vpn1"
VTUND_SERVER_ADDR="123.45.67.89"
VTUND_SERVER_PORT="5000"

VTUND_MODE

- tryb pracy demona.

VTUND_SESSION

- nazwa sesji, któr ˛

a ustawimy w pliku konfiguracyjnym

VTUND_SERVER_ADDR

- publiczny adres IP serwera.

VTUND_SERVER_PORT

- port na którym nasłuchuje serwer.

Równie ˙z po stronie klienta musimy wyedytowa´c plik

/etc/vtund.conf

. Tak ˙ze i tu-

taj mo ˙zemy mu zmieni´c nazw˛e na

vtund.conf.orig

, aby zachowa´c przykłady kon-

figuracji. Krok po kroku omówi˛e sekcje

vtund.conf

po stronie klienta.

options {

type stand;
port 5000;
syslog daemon;

122

background image

Rozdział 11. Konfiguracja sieci

timeout 60;
ppp

/usr/sbin/pppd;

ifconfig

/sbin/ifconfig;

route

/sbin/route;

firewall

/sbin/iptables;

ip

/sbin/ip;

}

type

- tryb pracy VTuna. Na listingu ustawiony został

standalone

.

port

- port na którym nasłuchuje VTun.

syslog

- logi VTuna zbierane b˛ed ˛

a przez syslog.

timeout

- timeout VTuna.

ppp, ifconfig, route, firewall, ip

- ´scie ˙zki do programów wykorzystywanych

w czasie konfiguracji.

Przyst˛epujemy teraz do konfiguracji poł ˛

aczenia o nazwie

vpn1

. Jak pami˛etasz nazwa

została ju ˙z wst˛epnie okre´slona w pliku

/etc/sysconfig/vtun

.

vpn1 {

passwd

tajne.haslo;

type tun;
proto tcp;
compress zlib:9;
encrypt yes;
keepalive yes;
stat yes;
persist yes;
up {

...

};
down {

...

};

}

passwd

- hasło które posłu ˙zy nam do szyfrowania poł ˛

aczenia.

type

- typ tunelu, w przykładzie jest to tunel IP.

proto

- protokół warstwy transmisyjnej tunelu.

compress

- typ oraz stopie ´n kompresji. Na listingu ustawiona została kompresja

przy u ˙zyciu zlib dziewi ˛

atego stopnia.

encrypt

- wł ˛

aczamy szyfrowanie poł ˛

aczenia.

keepalive

- utrzymywanie poł ˛

aczenia w przypadku braku ruchu na interfejsie

tunelu.

stat

- statystyki pracy tunelu, które VTun b˛edzie zapisywał do sysloga co pi˛e´c

minut.

123

background image

Rozdział 11. Konfiguracja sieci

persist

- opcja ustawiona tak jak na listingu sprawi, ˙ze w przypadku zerwania

poł ˛

aczenia z serwerem klient b˛edzie nawi ˛

azywał poł ˛

aczenie.

up, down

- programy wykonywane po nawi ˛

azaniu poł ˛

aczenia i po jego zerwaniu.

up {

ifconfig "%% 192.168.2.11 pointopoint 192.168.2.10 mtu 1450";
route "add -host 192.168.2.10 gw 192.168.2.11";

};

Poleceniem ifconfig uruchamiamy interfejs naszego tunelu o parametrach takich ja-
kie zostały podane w przykładzie. Nast˛epnym krokiem jest wyznaczenie trasy do
naszego serwera, czyli drugiego ko ´nca tunelu. Jak doskonale wida´c, ta cz˛e´s´c konfi-
guracji jest analogiczna do serwera. Nale ˙zy tylko zwróci´c uwag˛e na adresacj˛e. Adres
nast˛epuj ˛

acy po parametrze

gw

okre´sla nasz (czyli klienta) koniec tunelu. Przez niego

wiedzie droga na drugi koniec.

down {

ifconfig "%% down";
ifconfig "%% delete";
route "del -host 192.168.2.10";

};

Polecenia które si˛e wykonaj ˛

a po zamkni˛eciu poł ˛

aczenia. Kolejno, wył ˛

aczamy oraz

kasujemy interfejs tunelu. Nast˛epnie kasujemy z tablicy routingu tras˛e do serwera.

Na tym ko ´nczy si˛e etap konfiguracji VTuna. Mo ˙zemy przej´s´c do jego uruchomienia.

Uruchomienie

Uruchomienie VTuna sprowadza si˛e do wykonania jednego polecenia na serwerze
oraz kliencie.

# /etc/rc.d/init.d/vtund start

Po jego wykonaniu na komputerach b˛ed ˛

acych ko ´ncami tunelu za kilka chwil po-

winny si˛e utworzy´c interfejsy

tun0

. Numeracja zaczyna si˛e od "0". Nazwy kolejnych

interfejsów b˛ed ˛

a ko ´nczy´c si˛e nast˛epn ˛

a w kolejno´sci liczb ˛

a naturaln ˛

a.

Przypisy

1. http://speedtouch.sourceforge.net/files/fi rmware.bin

2. http://www.speedtouchdsl.com/dvrreg_lx.htm

3. http://www.netfilter.org/documentation/HOWTO/pl/packet-filtering-HOWTO.html

124

background image

Rozdział 12. Usługi dost ˛epne w PLD

W rozdziale tym przedstawimy opis instalacji i konfiguracji wa ˙zniejszych usług do-
st˛epnych w PLD

CRON - Cykliczne wykonywanie zada ´

n

CRON jest demonem, którego zadaniem jest uruchamianie programów cyklicznie
lub o okre´slonej porze. Omówiona zostanie instalacja vixie-cron, który oprócz stan-
dardowych usług posiada dodatkowe opcje konfiguracyjne i zwi˛ekszone bezpiecze ´n-
stwo

Instalacja

Program instalujemy za pomoc ˛

a poldka:

poldek> install vixie-cron
Przetwarzanie zale˙

zno´

sci...

vixie-cron-3.0.1
Zaznaczono 1 pakiet do instalacji
I vixie-cron-3.0.1
Do ´

sci ˛

agni˛

ecia potrzeba około 107KB pakietów.

Po rozpakowaniu około 107KB zostanie u˙

zytych.

Pobieranie
ftp://ftp.pld-linux.org/dists/ac/PLD/i686/PLD/RPMS/vixie-cron-3.0.1.rpm...
......................... 100.0% [106.7K (106.7K/s)]
Run /etc/rc.d/init.d/crond start to start cron daemon.
poldek>

Konfiguracja

Po zainstalowaniu program jest praktycznie gotowy do u ˙zycia. Mo ˙zna wi˛ec od razu
uruchomi´c demona korzystaj ˛

ac z polecenia:

# /etc/rc.d/init.d/crond start

Konfiguracj˛e demona wykonujemy przy pomocy polecenia:

# crontab -e

Uruchamia si˛e nasz ulubiony edytor tekstu i tekst podobny do ponizszego przykła-
du:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=jakis_user
NICE=15

125

background image

Rozdział 12. Usługi dost˛epne w PLD

# run-parts
01 * * * *

/bin/run-parts /etc/cron.hourly

02 1 * * *

/bin/run-parts /etc/cron.daily

02 2 * * 0

/bin/run-parts /etc/cron.weekly

02 3 1 * *

/bin/run-parts /etc/cron.monthly

0-59/10 * * * * /bin/run-parts /etc/cron.10min
15 18 * * 1-5

/bin/run-parts /etc/cron.gielda

Pierwsze cztery linijki nie wymagaj ˛

a specjalnego opisu. Po # run-parts mamy przy-

kład najwa ˙zniejszej cz˛e´sci konfiguracji. Ka ˙zda linijka oznacza zdefiniowanie jednego
zadania, które ma zosta´c wykonane zgodnie z okre´slonymi zasadami. I tak pierwsze
5 kolumn oznacza czas wykonania, a 6sta polecenie jakie powinno zosta´c urucho-
mione:

1-sza kolumna (zakres 0-59) oznacza minuty.

2-ga kolumna (zakres 0-23) oznacza godzin˛e.

3-cia kolumna (zakres 0-31) oznacza dzie ´n miesi ˛

aca.

4-ta kolumna (zakres 0-12) oznacza miesi ˛

ac. (0 i 1 to stycze ´n)

5-ta kolumna (zakres 0-7) oznacza dzie ´n tygodnia (0 i 7 to niedziela)

6-ta kolumna okre´sla komend˛e jaka powinna zosta´c wykonana dla danego wier-
sza.

Gwiazdka "*" oznacza cały zakres z mo ˙zliwego przedziału. Same zakresy w pierw-
szych 5ciu kolumnach mog ˛

a by´c reprezentowane w ró ˙zny sposób. Wi˛ecej szczegółów

na ten temat dowiemy si˛e wywołuj ˛

ac polecenie man 5 crontab

Poni ˙zej zostan ˛

a wyja´snione przykłady z naszego pliku konfiguracyjnego.

Wykonanie polece ´n zawartych w pliku (plikach) katalogu

/etc/cron.hourly

co-

dzinnie, co godzin˛e - zaczynaj ˛

ac od pełnej pierwszej minuty (np. 02:01, 03:01 itd.):

01 * * * *

/bin/run-parts /etc/cron.hourly

Wykonanie polece ´n zawartch w pliku (plikach) katalogu

/etc/cron.daily

raz dzie-

nie (o godz. 01:02):

02 1 * * *

/bin/run-parts /etc/cron.daily

Wykonanie polece ´n zawartych w pliku (plikach) katalogu

/etc/cron.weekly

raz w

tygodniu (w niedziele o godz. 02:02):

02 2 * * 0

/bin/run-parts /etc/cron.weekly

Wykonanie polece ´n zawartych w pliku (plikach) katalogu

/etc/cron.monthly

raz

na miesi ˛

ac (w pierwszy dzie ´n miesi ˛

aca o godz. 03:02):

02 3 1 * *

/bin/run-parts /etc/cron.monthly

126

background image

Rozdział 12. Usługi dost˛epne w PLD

Wykonanie polece ´n zawartych w pliku (plikach) katalogu

/etc/cron.gielda

raz

dziennie w dni robocze (od poniedziałku do pi ˛

atku o godz. 18:15):

15 18 * * 1-5

/bin/run-parts /etc/cron.gielda

Wykonanie polece ´n zawartych w pliku (plikach) katalogu

/etc/cron.10min

co 10

minut (ka ˙zdego dnia, zaczynaj ˛

ac od pełnej godziny - czyli np. 01:00, 01:10, 01:20 itd.):

0-59/10 * * * * /bin/run-parts /etc/cron.10min

Je ˙zeli chcemy aby inni u ˙zytkownicy mogli korzysta´c z Crona musimy ich dopisa´c do
pliku

/etc/cron/cron.allow

.

BIND - Serwer Nazw

DNS - Domain Name System

DNS jest systemem hierarchicznym. Na samym szczycie owej hierarchii stoj ˛

a tzw.

TLD (Top Level Domains), czyli domeny najwy ˙zszego rz˛edu. Zaliczaj ˛

a si˛e do nich

takie domeny jak .com (komercyjne), .pl (krajowe), .net (sieci) i inne. S ˛

a to domeny

powstałe na podstawie odpowiednich postanowie ´n, opisane w specjalnych doku-
mentach. Ka ˙zda z wymienionych (lub te ˙z nie wymienionych) tutaj TLD’s posiada
swoje subdomeny, np. pld-linux.org. Z kolei ka ˙zda powstała w wyniku rejestracji
danej nazwy domena mo ˙ze mie´c swoje poddomeny, np. www.pld-linux.org. W ten
sposób mo ˙zna tworzy´c bardzo zag˛eszczone hierarchie w obr˛ebie danej domeny.

Wst ˛ep

Tytułem wst˛epu mo ˙zna jeszcze powiedzie´c, i ˙z ka ˙zda domena powinna mie´c co naj-
mniej dwa serwery DNS. Takie s ˛

a ogólnie przyj˛ete zasady zazwyczaj przestrzegane

przez registrantów, czyli instytucje maj ˛

ace mo ˙zliwo´s´c rejestracji domen.

Konfiguracj˛e rozpoczniemy od głównego serwera, czyli primary. Nasz drugi serwer
b˛edziemy odt ˛

ad nazywa´c slave. Głównym plikiem konfiguracyjnym jest

/etc/named.conf

.

Warto tutaj wspomnie´c, ˙ze bind w PLD jest umieszczony w chroocie w

/var/lib/named

.

Prosz˛e zobaczy´c na listing:

$ ls -l /etc/named.conf
lrwxrwxrwx

1 root

named

30 2003-06-23

/etc/named.conf -> \

/var/lib/named//etc/named.conf

Oto struktura

/var/lib/named

:

dev
etc
M
S
named.pid
root.hint

127

background image

Rozdział 12. Usługi dost˛epne w PLD

Ogólnie postaram si˛e przybli ˙zy´c przeznaczenie tych katalogów, oraz plików któ-
re tutaj s ˛

a przedstawione. Podobnie jak w normalnym ´srodowisku, jest obecny tu-

taj katalog

/dev

. Bindowi wystarcz ˛

a do działania dwa urz ˛

adzenia:

/dev/null

oraz

/dev/urandom

. Pierwsze z nich jest wykorzystywane przez Binda do kierowania

wła´snie do niego wszystkich komunikatów procesu named. Drugie z kolei jest mu
potrzebne do generowania losowych warto´sci które wykorzystuje do enkrypcji. ka-
talog

/etc

jak zapewne si˛e domy´slasz, przechowuje pliki konfiguracyjne. U nas znaj-

duje si˛e w nim jedynie

named.conf

. Kolejne katalogi:

M

oraz

S

zostały przeznaczone

do przechowywania plików stref, zarówno typu master (M) jak i typu slave (S). Plik

named.pid

przechowuje numer procesu systemowego na którym uruchomiona jest

usługa. Ostatni plik w przykładzie

root.hint

zawiera wpisy z tzw. root serwera-

mi, czyli głównymi serwerami DNS. Jest on konieczny do przeszukiwania serwerów
DNS w poszukiwaniu ˙z ˛

adanych nazw.

/etc/named.conf

Jest to główny plik konfiguracyjny serwera Bind. Znajduj ˛

a si˛e w nim informacje na

temat plików stref czy nazw domen, które nasz DNS obsługuje. Poni ˙zej zamieszczam
domy´slne wpisy, które znajduj ˛

a si˛e w tym pliku

options {

directory "/";

pid-file "named.pid";
auth-nxdomain yes;
datasize default;

};
zone "localhost" IN {

type master;
file "M/localhost.zone";
allow-update { none; };
allow-transfer { any; };

};
zone "0.0.127.in-addr.arpa" IN {

type master;
file "M/127.0.0.zone";
allow-update { none; };
allow-transfer { any; };

};
zone "." IN {

type hint;
file "root.hint";

};

Na samym pocz ˛

atku pliku konfiguracyjnego znajduje si˛e sekcja

options

. Najbardziej

istotn ˛

a opcj ˛

a jest tutaj

directory

. Wskazuje ona na główny katalog przechowywania

plików stref. By´c mo ˙ze zdziwi Ci˛e nieco parametr powy ˙zszej opcji. Jak ju ˙z wcze´sniej
wspominałem

Bind

w PLD posiada własne chrootowane ´srodowisko, dlatego mo ˙zna

taki zapis zastosowa´c.

Zanim przejd˛e do omawiania pozostałych wpisów, nale ˙zy si˛e jeszcze słowo wyja-

´snienia na temat konstrukcji samego pliku. Na pierwszy rzut oka poszczególne wpi-

sy s ˛

a podzielone na sekcje. Te z kolei ograniczone s ˛

a klamrami. Znak ; równie ˙z pełni

tutaj rol˛e ogranicznika dla poszczególnych opcji jak i całych sekcji uj˛etych w klamry.

128

background image

Rozdział 12. Usługi dost˛epne w PLD

Warto o tym wiedzie´c ze wzgl˛edu na ewentualne szukanie bł˛edów powstałych na
skutek edycji tego pliku.

Poni ˙zej mamy zdefiniowane trzy sekcje stref zaczynaj ˛

acych si˛e słowem kluczowym

zone

. W powy ˙zszym przykładzie przedstawione s ˛

a wpisy okre´slaj ˛

ace localhosta. S ˛

a

one typu master. Plik strefy w ka ˙zdej z nich wskazany jest opcj ˛

a

file

. Strefa nie mu-

si by´c aktualizowana, ani synchronizowana z serwerem slave, wi˛ec dwie pozostałe
opcje maj ˛

a parametr

none

oraz

any

. Ostatnia strefa słu ˙zy do komunikacji naszego

binda z Root serwerami o których była mowa we wst˛epie. Bez tej strefy nie mógłby
on wyszukiwa´c nazw w internecie. Mówi ˛

ac w przeno´sni byłby ´slepy. Ka ˙zdorazowe

odpytywanie Root Servers mo ˙ze si˛e okaza´c mało wydajne, ze wzgl˛edu na du ˙ze cza-
sy odpowiedzi. Dlatego, je ˙zeli chcemy przyspieszy´c ten proces powinni´smy sekcj˛e

option

zmodyfikowa´c o wpis taki jak poni ˙zej

options {
forwarders { 194.204.159.1; 194.204.152.34; };
}

Oczywi´scie nie musimy posługiwa´c si˛e takimi adresami jak w przykładzie. Mo ˙zemy
sobie wybra´c takie serwery DNS, które b˛ed ˛

a nam odpowiadały najszybciej. Taka jest

wła´snie idea tego wpisu.

Konfiguracja przykładowej domeny

Wst ˛ep

Zanim przejdziemy do wła´sciwego opisu konfiguracji domeny, podam kilka odno-

´sników do instytucji zajmuj ˛

acych si˛e ich rejestrowaniem. Przyda si˛e to na pewno

osobom, które zaczynaj ˛

a dopiero swoj ˛

a przygod˛e z DNS.

Domeny darmowe

eu.org

1

www.kom.pl

2

www.one.pl

3

www.afraid.org

4

www.changeip.com

5

Domeny płatne

domeny.onet.pl

6

nask.pl

7

www.beep.pl

8

www.go-daddy.com

9

joker.com

10

129

background image

Rozdział 12. Usługi dost˛epne w PLD

Przed wypełnieniem wniosku rejestracyjnego dobrze jest przygotowa´c nasz serwer
do przechowywania nowej domeny.

Je ˙zeli nie posiadasz serwera secondary, mo ˙zesz zarejestrowa´c si˛e w serwisie freedns.sgh.waw.pl

11

.

Zapewniaj ˛

a oni nieodpłatnie takie usługi jak hosting domen. Cało´sci ˛

a zarz ˛

adza si˛e

poprzez interfejs www.

/etc/named.conf

Zaczniemy od konfiguracji

/etc/named.conf

. W poprzedniej cz˛e´sci tego rozdziału

wyja´sniłem budow˛e tego pliku. Poni ˙zej zamie´sciłem przykładowy wpis dla strefy
typu master.

zone "example.net" {

type master;
file "M/example.net";
allow-transfer { 123.45.67.89; };
notify yes;

};

Poszczególne opcje tej sekcji zostały omówione ju ˙z na pocz ˛

atku tego rozdziału. Pod-

sumujmy wi˛ec dost˛epne informacje skupiaj ˛

ac si˛e na powy ˙zszym przykładzie.

zone "example.net"

Nazwa strefy. W ten sposób oznaczamy t ˛

a cz˛e´s´c pliku konfiguracyjnego, która od-

nosi´c si˛e b˛edzie do naszej domeny.

type master

Zaznaczamy, ˙ze wpis dla domeny jest typu master. Je ˙zeli taki wpis jest obecny u
Ciebie, oznacza to, ˙ze Twój serwer pełni rol˛e primary dla jakiej´s domeny.

file "M/example.net"

Opcja ta wskazuje na plik z wpisami strefy dla tej domeny. w PLD b˛edzie si˛e on
znajdował w

/var/lib/named/M/example.net

allow-transfer { 123.45.67.89; }

Ta opcja zezwala na transfer pliku strefy do komputera o wskazanym adresie IP.
nale ˙zy tutaj wpisa´c adres naszego zapasowego DNS dla domeny example.net. Je-

˙zeli posiadasz wi˛ecej ni ˙z jeden taki DNS, mo ˙zesz je wpisa´c pomi˛edzy klamry pa-

mi˛etaj ˛

ac o tym, aby rozdzieli´c poszczególne adresy IP, znakiem ’;’.

notify yes

Opcja ta wł ˛

acza powiadamianie zapasowego serwera DNS o zmianach w naszej

domenie.

130

background image

Rozdział 12. Usługi dost˛epne w PLD

Wpisy w pliku

/etc/named.conf

s ˛

a ju ˙z gotowe. Musimy teraz utworzy´c plik strefy

dla domeny

example.net

wskazany przez opcj˛e

file

.

Konfiguracja pliku strefy

W PLD zaleca si˛e, aby wszystkie pliki stref w zale ˙zno´sci od typu domeny były prze-
chowywane w katalogach

/var/lib/named/M

oraz

/var/lib/named/S

. Tak napraw-

d˛e o typie domeny decyduje

named.conf

. Struktura pliku strefy dla obu typów do-

men jest taka sama. Poni ˙zej zamieszczam listing z przykładowego pliku strefy.

$TTL 86400
$ORIGIN example.net.
@

IN

SOA

ns1.example.net. root.example.net. (

2004022300 ;; serial

1200

;; refresh

1200

;; retry

2419200

;; expire

86400

;; TTL

)

@

IN

NS

ns1.example.net.

@

IN

NS

ns2.example.net.

@

IN

MX

10

mail.example.net.

@

IN

A

123.45.67.8

ns1

IN

A

123.45.67.8

ns2

IN

A

90.12.34.237

mail

IN

A

123.45.67.8

www

IN

A

123.45.67.8

ftp

IN

A

123.45.67.8

Plik strefy mo ˙zna podzieli´c na trzy odr˛ebne sekcje. Pierwsza okre´sla nazw˛e domeny
oraz okres wa ˙zno´sci wpisów. Druga, kto t ˛

a domen ˛

a zarz ˛

adza. W trzeciej znajduje si˛e

cała jej zawarto´s´c. Bardziej szczegółowy opis znajduje si˛e w poni ˙zszym wykazie. Kil-
ka zda ´n o wyra ˙zeniach stosowanych w plikach stref. Warto o nich pami˛eta´c. Wszyst-
kie wpisy poprzedzone ;; b˛ed ˛

a ignorowane i traktowane jak komentarz. Kolejnym

wa ˙znym znakiem jest znak kropki. Jego znaczenie omówi˛e poni ˙zej w przykładzie.

@

IN

NS

ns1.example.net.

Je ˙zeli w powy ˙zszym wpisie pomin˛eliby´smy ko ´ncowy znak kropki, wówczas Bind
dokleiłby na ko ´ncu nazw˛e domeny. Wówczas z ns1.example.net zrobiłby si˛e wpis
ns1.example.net.example.net, co oczywi´scie nie jest po ˙z ˛

adane. nast˛epnym znakiem

specjalnym na który warto zwróci´c uwag˛e jest @. Otó ˙z mo ˙zna go potraktowa´c jako
pewnego rodzaju zmienn ˛

a, która przechowuje nazw˛e example.net. Jednym słowem,

example.net i @ to to samo.

$TTL 86400

Domy´slny czas wa ˙zno´sci rekordów w domenie. Wyra ˙zony on jest w sekundach.
86400 s. to jeden dzie ´n.

$ORIGIN example.net.

131

background image

Rozdział 12. Usługi dost˛epne w PLD

W tej opcji okre´slamy jak ˛

a domen˛e b˛edzie opisywał bie ˙z ˛

acy plik strefy.

@ IN SOA ns1.example.net. root.example.net.

Rekord typu SOA czyli Start Of Authority. Mo ˙zemy si˛e z niego dowiedzie´c, kto za-
rz ˛

adza domen ˛

a (root@example.net), jaki jest adres serwera primary DNS. Zwró´c

uwag˛e, ˙ze w adresie root@example.net zamiast znaku @ u ˙zyta została kropka. Re-
kord SOA posiada swoj ˛

a własn ˛

a struktur˛e o której poni ˙zej. Zawarta jest ona po-

mi˛edzy znakami ( ). Nale ˙zy na to zwróci´c uwag˛e, aby poprawnie j ˛

a zamkn ˛

a´c. Po-

mini˛ecie nawiasu zamykaj ˛

acego Bind zinterpretuje pozostałe wpisy jako rekord

SOA.

2004022300

Numer seryjny domeny. Powinien on by´c zwi˛ekszany wraz z ka ˙zd ˛

a jej modyfika-

cj ˛

a. W dobrym tonie jest utrzymywanie go w formacie YYYYMMDDnn czyli rok,

miesi ˛

ac, dzie ´n oraz numer modyfikacji w danym dniu. Je ˙zeli jednego dnia zaszła

wi˛ecej jak jedna modyfikacja zwi˛ekszamy odpowiednio numer seryjny.

1200

To pole rekordu SOA definiuje jak cz˛esto serwery slave maj ˛

a sprawdza´c czy dane

o domenie nie zmieniły si˛e na masterze. Według RFC 1035

12

warto´s´c ta powinna

si˛e zawiera´c pomi˛edzy 1200 a 43200 (czyli od dwudziestu minut do dwunastu go-
dzin). W praktyce najlepsza warto´s´c zawiera si˛e mi˛edzy 3600 a 7200 sekund.

1200

Czas po jakim secondary ma ponowi´c prób˛e kontaktu z masterem, gdy taka si˛e nie
powiedzie. Zalecana warto´s´c pomi˛edzy 120 a 7200 sekund.

2419200

Ta warto´s´c okre´sla czas po jakim dane domeny maj ˛

a zosta´c uznane za nieaktualne

gdy serwer secondary nie b˛edzie mógł si˛e skontaktowa´c z primary. Zalecana war-
to´s´c zawiera si˛e pomi˛edzy 1209600 a 2419200 sekund, czyli od dwóch do czterech
tygodni.

86400

Time To Live. Okre´sla ile czasu informacja o danym rekordzie ma by´c wa ˙zna. Jest
to okres przez jaki informacja o naszej domenie b˛edzie przechowywana przez ser-
wer DNS, który j ˛

a pobrał. Zalecana warto´s´c zawiera si˛e mi˛edzy 86400 a 432000

sekund, czyli przez okres od jednego do pi˛eciu dni.

Bezpo´srednio pod rekordem SOA definiujemy, które serwery DNS b˛ed ˛

a obsługiwały

nasz ˛

a domen˛e. Jeszcze raz przypominam aby wła´sciwie zamkn ˛

a´c ten rekord. Bez

132

background image

Rozdział 12. Usługi dost˛epne w PLD

tego nasza domena nie b˛edzie działa´c. Do definiowania serwerów DNS słu ˙z ˛

a wpisy

typu

IN NS

.

@

IN

NS

ns1.example.net.

@

IN

NS

ns2.example.net.

Powy ˙zszy wpis mówi, ˙ze domen˛e example.net obsługuje serwer DNS ns1.example.net
oraz ns2.example.net. Je ˙zeli obie nazwy dotycz ˛

a komputerów, które wcze´sniej nie peł-

niły roli serwerów DNS, powienie´s doda´c wpisy takie jak poni ˙zej.

ns1

IN

A

123.45.67.8

ns2

IN

A

90.12.34.237

ns1 oczywi´scie mo ˙ze wskazywa´c na adres serwera DNS który zapewne konfiguru-
jesz; ns2 powinien wskazywa´c na Twojego secondary. Zrobili´smy to posługuj ˛

ac si˛e

wpisami typu

IN A

. Jak zapewne pami˛etasz, brak ko ´ncowej kropki powoduje dokle-

jenie do wpisanej nazwy tego co znajduje si˛e w zmiennej

$ORIGIN

. Mo ˙zemy wi˛ec

uzna´c to co widzisz w powy ˙zszym przykładzie za posta´c skrócon ˛

a poni ˙zego wpisu.

ns1.example.net.

IN

A

123.45.67.8

ns2.example.net.

IN

A

90.12.34.237

Wpisy typu

IN A

słu ˙z ˛

a do okre´slania, ˙ze wła´snie ten adres IP ma przypisan ˛

a tak ˛

a

a nie inn ˛

a nazw˛e. Oczywi´scie do jednego adresu IP mo ˙zesz stworzy´c kilka takich

wpisów. Je ˙zeli posiadasz serwer poczty, powiniene´s zrobi´c wpis mówi ˛

acy o tym, ˙ze

b˛edzie on obsługiwał poczt˛e dla domeny example.net.

@

IN

MX

10

mail.example.net

Dokładnie tak jak wcze´sniej wspomniałem, poczta, dla domeny example.net kierowa-
na jest do serwera mail.example.net o priorytecie 10. Jest on tzw. MX’em. Rekord typu

IN MX

słu ˙zy wła´snie do definiowania w DNS serwera poczty. Priorytet przydaje si˛e

wtedy, kiedy posiadasz kilka serwerów poczty w swojej domenie. Słu ˙zy on do ustale-
nia porz ˛

adku; do którego serwera poczta ma trafi´c w pierwszej kolejno´sci. Mniejszy

priorytet zapewnia pierwsze ´nstwo.

Pozostałe wpisy dotycz ˛

a takich standardowych usług jak www czy ftp. Umieszcza-

nie ich w pliku strefy nie jest obowi ˛

azkowe. Jednak domen˛e rejestruje si˛e zazwyczaj

na potrzeby www, ftp czy poczty, dlatego zostały one wymienione w przykładzie.

Secondary DNS

Konfiguracja serwera secondary sprowadza si˛e do dokonania poni ˙zszego wpisu w
pliku

/etc/named.conf

.

zone "example.net" IN {

type slave;
file "example.net";
masters { 123.45.67.8; };

};

133

background image

Rozdział 12. Usługi dost˛epne w PLD

Jak wida´c wpis wygl ˛

ada podobnie jak w przypadku serwera primary. Opcja

type

tym

razem ma warto´s´c slave. Musimy te ˙z wskaza´c serwer

primary

. Robimy to u ˙zywaj ˛

ac

opcji

masters

, której warto´s´c zawiera adres serwera primary DNS.

Po zako ´nczeniu konfiguracji na obu serwerach musimy jeszcze uruchomi´c na nich
usług˛e.

# /etc/rc.d/init.d/named start

Obsługa protokołu IPv6

Podobnie jak wi˛ekszo´s´c usług w dystrybucji BIND posiada wsparcie dla protokołu
IPv6 (IPng). Oczywi´scie wcze´sniej komputer musi by´c podł ˛

aczony do tej sieci. W

tej cz˛e´sci rozdziału zostanie omówiona konfiguracja dla stref

IN A

oraz strefy od-

wrotnej. Narz˛edziem wspomagaj ˛

acym konfiguracj˛e b˛edzie ipv6calc znajduj ˛

acy si˛e w

pakiecie o tej samej nazwie. Jak sama nazwa wskazuje jest to kalkulator adresów
IPv6.

IN AAAA

Odpowiednikiem w IPv6 strefy

IN A

jest wpis

IN AAAA

. Ka ˙zda z dotychczasowych

stref stworzona do tej pory dla protokołu IPv4 mo ˙ze mie´c swój odpowiednik w
sieci IPv6. Mo ˙zemy równie ˙z stworzy´c zupełnie nowe wpisy, które b˛ed ˛

a widoczne

jedynie w tej sieci.

moja

IN

AAAA 3ffe:1a:2b:3c::1

Umieszczenie powy ˙zszego wpisu w pliku strefy

/var/lib/named/M/example.net

spowoduje przypisanie nazwy moja.example.net adresowi 3ffe:1a:2b:3c::1. Aby wpis
zacz ˛

ał obowi ˛

azywa´c nale ˙zy zrestartowa´c usług˛e.

IN PTR

Konfiguracj˛e strefy odwrotnej zaczniemy od stworzenia odpowiedniego wpisu w
pliku

/etc/named.conf

. Jak sama nazwa wskazuje b˛edzie on przypominał lu-

strzane odbicie adresu w zwykłej postaci. Aby mie´c pewno´s´c, ˙ze nasza strefa b˛e-
dzie poprawnie zapisana posłu ˙zymy si˛e wspomnianym we wst˛epie narz˛edziem
ipv6calc

.

$ ipv6calc -r 3ffe:1a:2b:3c::/64
No input type specified, try autodetection...found type: ipv6addr
c.3.0.0.b.2.0.0.a.1.0.0.e.f.f.3.ip6.int.

Uzyskali´smy w ten sposób informacje, ˙ze dla sieci o adresie 3ffe:1a:2b:3c::/64, stre-
fa odwrotna posiada posta´c tak ˛

a jak na powy ˙zszym listingu. Wystarczy teraz to

zapisa´c w pliku konfiguracyjnym BIND’a.

zone "c.3.0.0.b.2.0.0.a.1.0.0.e.f.f.3.ip6.int" IN {

type master;
file "M/ipv6";
allow-transfer {

90.12.34.237;

};

134

background image

Rozdział 12. Usługi dost˛epne w PLD

};

Jak wida´c na pierwszy rzut oka, konfiguracja niczym si˛e praktycznie nie ró ˙zni
od konfiguracji strefy dla IPv4. Jako nazw˛e strefy podali´smy to co nam zwrócił
ipv6calc

. Przyjrzyjmy si˛e teraz jak powinien wygl ˛

ada´c plik dla tej strefy wskazany

dyrektyw ˛

a

file

.

$TTL

86400

$ORIGIN 0.1.0.0.e.2.0.0.c.0.0.4.e.f.f.3.ip6.int.

Pierwszy parametr to omawiany ju ˙z wcze´sniej okres wa ˙zno´sci rekordów. Jak wi-
da´c na listingu wynosi on jeden dzie ´n. Drugi z nich to de facto nazwa tej strefy.
Sama opcja

$ORIGIN

to swojego rodzaju zmienna, której warto´s´c jest podstawiana

w miejsce @ oraz doklejana do tych nazw które nie posiadaj ˛

a na ko ´ncu specjalnego

znaku kropki.

@

IN

SOA ns1.example.net. root.example.net. (

2004050600

3H
15M

1W
1D )

Jak wida´c rekord

IN SOA

nie ró ˙zni si˛e niczym od tego dla domeny IPv4.

@

IN

NS

ns1.example.net.

@

IN

NS

ns2.example.net.

Okre´slamy które serwery przechowuj ˛

a nasz ˛

a domen˛e odwrotn ˛

a. Równie ˙z tutaj

wszystko wygl ˛

ada identycznie jak dla protokołu IPv4. Mo ˙zemy teraz przyst ˛

api´c

do konfigurowania strefy odwrotnej.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0

IN PTR

moja.example.net.

Dlaczego tyle zer? Odpowied´z na to znajdziesz obliczaj ˛

ac przy u ˙zyciu progra-

mu ipv6calc adres odwrotny dla 3ffe:1a:2b:3c::1. Robimy to w sposób identyczny
do poprzedniego przykładu jego u ˙zycia. W wyniku oblicze ´n b˛edzie on wygl ˛

adał

tak: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.3.0.0.b.2.0.0.a.1.0.0.e.f.f.3. Jak łatwo zauwa ˙zy´c, po
ostatnim zerze w listingu nie postawili´smy kropki, a wi˛ec zostanie doklejona po
nim zawarto´s´c

$ORIGIN

.

Narz˛edziem pomocnym w odpytywaniu serwerów DNS, jest program host. Mo ˙z-
na nim równie ˙z odpytywa´c o nazwy skonfigurowane dla protokołu IPv6. Jak by
wygl ˛

adało zapytanie o nazw˛e moja.example.net?

$ host -n -i 3ffe:1a:2b:3c::1
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.3.0.0.b.2.0.0.a.1.0.0.e.f.f.3.\

ip6.int domain name pointer moja.example.net

Przeł ˛

acznik

-n

oznacza, ˙ze b˛edziemy odpytywali stref˛e odwrotn ˛

a, natomiast

-i

,

˙ze jest to adres typu int. Domy´slnie host szuka nazw typu arpa.

135

background image

Rozdział 12. Usługi dost˛epne w PLD

Exim - Transport poczty elektronicznej (MTA)

Usługa MTA (ang. message transfer agent) jest odpowiedzialna za przesył m.in. e-
mail mi˛edzy serwerami. Najpopularniejszymi przedstawicielami tego typu usług s ˛

a:

Sendmail, Postfix czy opisany przez nas Exim. Oto zalety jakie przemawiaj ˛

a za wy-

braniem Exim-a jako naszego MTA:

Poniewa ˙z sendmail nie posiada nawet połowy jego funkcji

Autoryzacja w Exim-ie zaimplementowana jest domy´slnie

Współpracuje z bazami MySQL i z Postgres-em, a tak ˙ze ze zwykłymi plikami tek-
stowymi

Tom Kistner napisał do Exim u ˙zyteczna łatk˛e, rozbudowywuj ˛

ac ˛

a Exim o obsług˛e

programów antywirusowych, demona SpamAssasin (skanera antyspamowego) oraz
wykrywania bł˛edów MIME - dzi˛eki temu nie potrzebujemy wielkich i zasobo ˙zernych
programów w perlu

Za to Tomasz Kojm napisał bardzo dobry program antywirusowy: Clam AntiVirus
- darmowy, w dodatku rewelacyjnie współpracuj ˛

acy z Exiscanem

Podsumowuj ˛

ac - Exim jest rewelacyjnym MTA. Jego mo ˙zliwo´sci konfiguracji pozwo-

liły mi na zbudowanie dosy´c rozbudowanego serwera poczty obsługuj ˛

acego zarów-

no konta lokalne jak i konta zapisane w bazie danych MySQL. Dodatkowe mo ˙zli-
wo´sci to np. przeszukiwanie plików konfiguracyjnych serwera cvs w poszukiwaniu
adresów docelowych dla aliasów w domenie cvs.rulez.pl. O rzeczach takich jak kla-
syfikowanie maili czy s ˛

a spamem czy nie ju ˙z nawet nie wspomn˛e. W dodatku Exim

jest całkiem bezpiecznym MTA (wersja 4.x wg. securityfocus jak narazie dorobiła si˛e
jednego bł˛edu - w ko ´ncu jaka´s cena musi by´c za te wodotryski). Zreszt ˛

a konstrukcja

omawianego MTA na pocz ˛

atku doprowadzała mnie do szału, gdy ˙z Exim nie mo ˙ze

sobie poradzi´c z smtp-auth via PAM z racji braku uruchamiania autoryzacji z wła-
snego uid/gid zamiast root ;-)

Instalacja

Instalacja pakietu jest prosta. Uruchamiamy program: poldek i wykonujemy:

poldek> install exim
Przetwarzanie zale˙

zno´

sci...

exim-4.30-2 zostanie zast ˛

apiony przez exim-4.30-2

Zaznaczono 1 pakiet do instalacji:
I exim-4.30-2

Uruchamianie sudo /bin/rpm --upgrade -vh --root / --noorder...
Przygotowywanie...
########################################### [100%]
1:exim
19 entries written
Run "/etc/rc.d/init.d/exim start" to start exim daemon.
poldek>

Oczywi´scie zanim wykonamy zalecenie startu demona powinni´smy dokona´c konfi-
guracji, któr ˛

a opisuje nast˛epny rozdział.

136

background image

Rozdział 12. Usługi dost˛epne w PLD

Konfiguracja

Wszelkich zmian w konfiguracji Exima dokonujemy w katalogu

/etc/mail/

. Edy-

tujemy plik

exim.conf

Domeny lokalne to takie, które Exim ma traktowa´c jako ’swoje’ domeny. Mail zaadre-
sowany @jakas.domena.lokalna który dotrze do Exim zostanie dostarczony lokal-
nie. Domeny takie definiuje w dyrektywie domainlist local_domains. Standardowo,
przyjmowana jest poczta wysyłana do domeny identycznej jak hostname serwera:

domainlist local_domains = @

Znak @ oznacza wła´snie ’moja nazwa’. Aby dopisa´c kolejne domeny wystarczy do-
da´c je do tej listy rozdzielaj ˛

ac je dwukropkami:

domainlist local_domains = @ : domena.pl : baseciq.org : \

/etc/mail/local_domains

Poza domena.pl, baseciq.org, Exim b˛edzie teraz tak ˙ze akceptował domeny wypisane
w pliku

/etc/mail/local_domains

. Domeny tam nale ˙zy wpisywa´c w oddzielnych

linijkach. Exim o tyle fajnie działa, ˙ze po dopisaniu ´scie ˙zki do pliku, wystarczy go raz
zrestartowa´c. Jakiekolwiek kombinacje w

/etc/mail/local_domains

nie b˛ed ˛

a wy-

magały restartu. Tak wi˛ec najwygodniej b˛edzie dopisa´c do pliku konfiguracyjnego:

domainlist local_domains = @ : /etc/mail/local_domains

I po prostu powpisywa´c wszystkie domeny do

/etc/mail/local_domains

.

Domeny dla których mamy by´c zapasowym MX’em tworzy si˛e bardzo łatwo. Linijk˛e
pod domainlist local_domains jest domainlist relay_to_domain. Działa to w taki
sam sposób jak konfiguracja domen lokalnych, czyli, piszemy:

domainlist relay_to_domains = /etc/mail/relay_to_domains

Od teraz, Exim b˛edzie akceptował ka ˙zd ˛

a poczt˛e zaadresowan ˛

a do domen zawartych

w pliku

/etc/mail/relay_to_domains

. A co z ni ˛

a zrobi? Jak wiadomo, je ˙zeli dome-

na ma kilka MX’ów, to Exim b˛edzie starał si˛e j ˛

a dostarczy´c do serwera o najni ˙zszym

priorytecie MX. Chyba ˙ze on ma najni ˙zszy, to wygeneruje bł ˛

ad.

Relaying, czyli okre´slenie kto mo ˙ze przez nasz serwer wysyła´c poczt˛e. I tutaj, list˛e ad-
resów i hostów buduje si˛e w podobny sposób do local_domains i relay_to_domains.
Wystarczy stworzy´c list˛e o nazwie relay_from_hosts:

hostlist

relay_from_hosts = 127.0.0.1 : 192.168.0.0/16

Na chwil˛e przystopujemy i wyja´snimy jak zorganizowany jest plik konfiguracyjny
Exim-a. Wygl ˛

ada to mniej wi˛ecej tak:

# główna sekcja ...

opcje i dyrektywy sekcji głównej

begin sekcja1

opcje i dyrketywy sekcji1

137

background image

Rozdział 12. Usługi dost˛epne w PLD

begin sekcja3

...

Tak wi˛ec plik ten jest zbudowany z sekcji, które rozpoczynaj ˛

a si˛e słowem begin na-

zwa, z wyj ˛

atkiem sekcji głównej, która jest na samym pocz ˛

atku pliku i nie posiada

swojego begina. Sekcje równie ˙z nie maj ˛

a ˙zadnych słów kluczowych, które by je za-

mykały - po prostu pocz ˛

atek begin nowej sekcji oznacza zako ´nczenie poprzedniej. I

tak, standardowo mamy nast˛epuj ˛

ace sekcje:

główna - odpowiedzialna za podstawowe ustawienia Exim

acl - listy kontroli dost˛epu, filtrowania, odrzucania i akceptowania poczty

routers - hm, najpro´sciej jest to przetłumaczy´c jako routery, czyli reguły kierowania
wiadomo´sci do odpowiednich transporterów

transports - tutaj tworzymy sposoby dor˛eczenia poczty

retry - ustawienia ponowie ´n

rewrite - reguły do przepisywania nagłówków

authenticators - reguły do autoryzacji

Co to s ˛

a te całe ’transportery’ i ’routery’? Wła´sciwie to serce Exima. Je ˙zeli Exim do-

staje jakiego´s maila to najpierw puszcza go przez routery, które mo ˙zna porówna´c do
reguł ipchains/iptables - je ˙zeli mail załapie si˛e na jak ˛

a´s reguł˛e (router) to jest przeka-

zywany do transportu okre´slonego przez ten router. Inaczej mówi ˛

ac router w Eximie

kieruje maila do odpowiedniego transportera. Transporter natomiast robi ju ˙z z ma-
ilem co nale ˙zy - dor˛ecza go lokalnie, albo przekierowywuje gdzie´s indziej albo odsyła
do innego serwera. Wiem, ˙ze w tym momencie mo ˙ze wydawa´c si˛e to skomplikowa-
ne, ale nie przejmujcie si˛e, to tylko wiedza teoretyczna która na pocz ˛

atku nie b˛edzie

wam potrzebna. Musiałem natomiast wam wytłumaczy´c, ˙ze s ˛

a sekcje i ˙ze musicie

nauczy´c si˛e tego, i ˙z jak napisz˛e ’dopisa´c w sekcji głównej’ to nale ˙zy co´s dopisa´c na
pocz ˛

atku pliku.

Czasami (czytaj: gdy mamy sieczk˛e w

/etc/hosts

) Exim zgłasza si˛e nie jako ser-

wer.domena.pl a jako sam ’serwer’. Je ˙zeli zmiana wpisów w

/etc/hosts

nie pomaga,

albo gdy chcemy aby nasze MTA przedstawiało si˛e inaczej ni ˙z hostname maszyny na
którym stoi wystarczy ustawi´c (b ˛

ad´z doda´c gdy jej nie ma) opcj˛e primary_hostname w

głównej sekcji:

primary_hostname = serwer.domena.pl

W czasach zabawy z sendmail-em podawałem tak ˙ze sposób na ograniczenie banne-
ra, który si˛e pojawiał po telnecie na port 25. W Exim-ie nie jest to skomplikowane i
słu ˙zy do tego opcja

smtp_banner

w sekcji głównej:

smtp_banner = $primary_hostname ESMTP $tod_full

Spowoduje to wy´swietlanie nast˛epuj ˛

acego tekstu jako bannera:

220 serwer.domena.pl ESMTP Wed, 23 Jul 2003 15:18:04

+0200

138

background image

Rozdział 12. Usługi dost˛epne w PLD

Chyba nie musz˛e tłumaczy´c, ˙ze aby usun ˛

a´c dat˛e nale ˙zy wywali´c

$tod_full

?

Teraz zajmiemy si˛e aliasami. Plik z aliasami powinien znajdowa´c si˛e w

/etc/mail/aliases

.

Jest to czysty plik tekstowy, wprowadzone w nim zmiany wymagaj ˛

a wydania polece-

nia newaliases. Restart demona nie jest konieczny. Je ˙zeli jednak nie macie pewno´sci
czy tam powinien by´c plik z aliasami, w sekcji routers odszukajcie ci ˛

ag system_aliases:

- jest to definicja routera odpowiedzialnego za rozwi ˛

azywanie aliasów. Tam te ˙z, w li-

nijce data wida´c ´scie ˙zk˛e do pliku z aliasami:

system_aliases:

driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/mail/aliases}}
file_transport = address_file
pipe_transport = address_pipe

Je ˙zeli z naszego SMTP korzystaj ˛

a u ˙zytkownicy mobilni (dial-up’y) przyda nam si˛e

autoryzacja. Sprawa w Exim-ie jest dosy´c zawiła. Otó ˙z Exim zbyt wcze´snie zrzuca
uprawnienia root, tak ˙ze opisywany na wielu stronach opis zrobienia autoryzacji via
PAM najcz˛e´sciej nie działa. Z pomoc ˛

a przyjdzie nam pakiet cyrus-sasl, a dokładniej

pwcheck daemon (w PLD cyrus-sasl-saslauthd). W sekcji AUTHENTICATORS wpi-
sujemy nast˛epuj ˛

ace linijki (lub kasujemy komentarze #)

plain:

driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = ${if saslauthd{{$1}{$3}}{1}{0}}
# powy˙

zszy wpis zadziała przy saslauthd -a shadow, je˙

zeli

# uruchomicie saslauthd -a pam (np. PLD) wpiszcie wtedy:
# server_condition = ${if saslauthd{{$1}{$3}{smtp}}{1}{0}}
server_set_id = $2

login:

driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = ${if saslauthd{{$1}{$2}}{1}{0}}
# powy˙

zszy wpis zadziała przy saslauthd -a shadow, je˙

zeli

# uruchomicie saslauthd -a pam (np. PLD) wpiszcie wtedy:
# server_condition = ${if saslauthd{{$1}{$2}{smtp}}{1}{0}}
server_set_id = $1

Ostatni ˛

a rzecz ˛

a przy saslauthd (uruchomionym z opcj ˛

a

-a

pam) jak ˛

a trzeba stworzy´c

(lub sprawdzi´c czy jest) to plik

/etc/pam.d/smtp

:

#%PAM-1.0
#
# example PAM file for saslauthd - place it as /etc/pam.d/
# (e.g. /etc/pam.d/smtp if you want to use saslauthd for SMTP
# AUTH)
#
auth required /lib/security/pam_listfile.so
item=user sense=deny file=/etc/security/blacklist

139

background image

Rozdział 12. Usługi dost˛epne w PLD

onerr=succeed
auth required /lib/security/pam_unix.so
auth required /lib/security/pam_tally.so
file=/var/log/faillog onerr=succeed no_magic_root
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_tally.so deny=0
file=/var/log/faillog onerr=succeed no_magic_root
account required /lib/security/pam_unix.so
session required /lib/security/pam_unix.so

Pozostaje mi tylko wam przypomnie´c, ˙ze przed sprawdzaniem autoryzacji nale ˙zy
tak ˙ze uruchomi´c pwcheck saslauthd

# echo ’pwcheck_method:saslauthd’ > /etc/sasl/smtpd.conf

Exim sobie bardzo dobrze radzi sobie z poł ˛

aczeniami szyfrowanymi przy u ˙zyciu pro-

tokołu SSL (wspiera metod˛e STARTTLS). Wystarczy wygenerowa´c odpowiednie cer-
tyfikaty:

$ openssl genrsa -out /etc/mail/exim.key 1024
Generating RSA private key, 1024 bit long modulus
.......++++++
..............................++++++
e is 65537 (0x10001)
$ openssl req -new -x509 -days 365 -key /etc/mail/exim.key -out \

/etc/mail/exim.crt

Using configuration from /var/lib/openssl/openssl.cnf
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ’.’, the field will be left blank.
-----
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Mazowsze
Locality Name (eg, city) []:Warsaw
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Baseciq Ltd.
Organizational Unit Name (eg, section) []:Baseciq’s Mail Server
Common Name (eg, YOUR name) []:viper.baseciq.org
Email Address []:baseciq@baseciq.org

Oczywi´scie na pytania odpowiadajcie podaj ˛

ac swoje dane... Po takim zabiegu do sek-

cji głównej Exim nale ˙zy dopisa´c:

tls_certificate = /etc/mail/exim.crt
tls_privatekey = /etc/mail/exim.key
tls_advertise_hosts = *

Po tym zabiegu i restarcie Exim powinien bez problemu komunikowa´c si˛e po SSL,
co zreszt ˛

a wida´c w logach:

2003-09-07 01:48:36 19vmnC-0006EG-27 <= bensonzow@beer.com H=plug.atn.pl
[217.8.186.28] U=exim P=esmtp X=TLSv1:DES-CBC3-SHA:168 S=2909

140

background image

Rozdział 12. Usługi dost˛epne w PLD

id=ebb601c374e2$80dace00$cab00a12@fv

Warto by było, ˙zeby tak ˙ze pop3d obsługiwał SSL natywnie ssl (bez jakich´s stunneli
i innych wynalazków). Ja osobi´scie polecam demonik tpop3d, którego konfiguracja
jest bardzo prosta. Instalujemy tpop3d:

# poldek -i tpop3d

a nast˛epnie wystarczy ˙ze standardowe listen-address w pliku

/etc/tpop3d.conf

zmienimy

na takie:

listen-address: 0.0.0.0;tls=stls,/etc/mail/exim.crt,/etc/mail/exim.key \

0.0.0.0;tls=immediate,/etc/mail/exim.crt,/etc/mail/exim.key

Od teraz tpop3d na porcie 110 b˛edzie obsługiwał SSL po wykonaniu komendy STLS
(np. TheBat potrafi tak zacz ˛

a´c sesj˛e SSL) a na porcie 995 b˛edzie od razu u ˙zywał SSL

(TheBat, Outlook Express).

Exima i SSL na porcie 465 mo ˙zna osi ˛

agn ˛

a´c jedynie przy u ˙zyciu inetd (normalny Exim

jako daemon, Exim po SSLu z inetd). Oto przykładowe konfiguracje dla poszczegól-
nych inetd:

rlinetd:

service "exim-ssl" {

protocol tcp;
port

"465";

user

"root";

tcpd

{ exit; }

exec

"/usr/bin/exim -bs -tls-on-connect";

}

xinetd

service exim-ssl
{

socket_type= stream
protocol = tcp
port

= 465

user

= root

server

= /usr/bin/exim

server_args = -bs -tls-on-connect
wait

= no

}

inetd:

465 stream tcp nowait root /usr/sbin/tcpd /usr/bin/exim -bs -tls-on-connect

rc-inetd (PLD) (nale ˙zy utworzy´c plik

/etc/sysconfig/rc-inetd/smtps

i wstawi´c

tam to co poni ˙zej):

SERVICE_NAME=exim-ssl
SOCK_TYPE=stream
PROTOCOL=tcp
PORT=465

141

background image

Rozdział 12. Usługi dost˛epne w PLD

FLAGS=nowait
USER=root
SERVER=tcpd
DAEMON=/usr/bin/exim
DAEMONARGS="-bs -tls-on-connect"

Generalnie nie ma sensu m˛eczy´c kernela i filesystemu ˙zeby pilnował quoty na poczt˛e.
Szczególnie gdy MTA samo sobie mo ˙ze z tym poradzi´c. Słu ˙zy do tego parametr quota
w konfiguracji transportów. I tak, w najprostszy sposób mo ˙zna lokaln ˛

a quot˛e per

user ustawi´c w konfiguracji transportu local_delivery (odpowiedzialnego za lokalne
dostarczanie poczty):

local_delivery:

driver = appendfile
file = /var/mail/$local_part
delivery_date_add
envelope_to_add
return_path_add
# A tutaj dodajemy quot˛

e w wysoko´

sci 20MB:

quota = 20M

Proste, prawda? Tak naprawd˛e ma to zastosowanie w systemach poczty wirtualnej
gdzie mo ˙zemy w bazie danych przechowywa´c quot˛e u ˙zytkownika i mo ˙zna skon-
struowa´c zapytanie SQL do odpytania ile miejsca ma dany u ˙zytkownik. Ale je ˙zeli
nie mo ˙zecie sobie poradzi´c z quot ˛

a systemow ˛

a, mo ˙zecie zamiast quota = 20M dopi-

sa´c co´s takiego:

quota = ${lookup{$local_part}lsearch{/etc/mail/quota.conf}{$value}{0M}}

Od tego momentu w pliku

/etc/mail/quota.conf

mo ˙zesz trzyma´c wielko´sci skrzy-

nek dla poszczególnych u ˙zytkowników. Je ˙zeli kto´s nie zostanie tam wymieniony, to
nie b˛edzie miał ˙zadnych limitów na swoj ˛

a skrzynk˛e pocztow ˛

a. Plik taki powinien

wygl ˛

ada´c mniej wi˛ecej tak:

lukasz: 100M
kflis: 5M
ania: 20M

I tak oto ja mam 100mb na poczt˛e, kubu´s tylko 5, a siostra 20 MB ;) Podobnym para-
metrem ka ˙zdego transportera jest message_size_limit. Wystarczy wpisa´c:

message_size_limit = 10M

Podobnie jak powy ˙zej, mo ˙zna zrobi´c to na bazie pliku - wystarczy zamiast

/etc/mail/quota.conf

u ˙zy´c np.

/etc/mail/size_limits.conf

;-) BTW. na ko ´ncu linijki z quot ˛

a, gdzie ma-

my ’0M’ mo ˙zemy wstawi´c np. ’20M’. Wtedy, osoby nie dopisane do

/etc/mail/quota.conf

b˛ed ˛

a miały 20MB limitu (limit domy´slny).

Oczywi´scie jak na Exim przystało, od quoty jest wi˛ecej bajerków. Chyba najbardziej
po ˙z ˛

adanym b˛edzie opcja quota_warn_message. Jest to nic innego jak mail ostrzegaj ˛

a-

cy usera o tym, ˙ze skrzynka jest zapchana po same brzegi. Zanim jednak polecisz to
wdra ˙za´c, zainteresuj si˛e jak to działa. Otó ˙z po dostarczeniu ka ˙zdego maila Exim b˛e-
dzie sprawdzał czy został przekroczony konkretny próg (podany w megabajtach lub

142

background image

Rozdział 12. Usługi dost˛epne w PLD

w procentowo). Je ˙zeli tak, wygeneruje on odpowiedni ˛

a wiadomo´s´c. I tak, dodajemy

do molestowanego przez nas local_delivery nast˛epuj ˛

ace opcje:

quota_warn_message = "\
Content-Type: text/plain; charset=ISO-8859-2\n\
To: $local_part@$domain\n\
Reply-to: Administratorzy sieci <admins@twojadomena.pl>\n\
Subject: Informacja o Twoim koncie pocztowym\n\
\n\
*** Ta wiadomo´

c została wygenerowana automatycznie ***\n\

\n\
Uprzejmie informujemy, i˙

z skrzynka pocztowa została zapełniona w 90%\n\

swojej pojemno´

sci. W przypadku 100% nie b˛

ed ˛

a dostarczane\n\

do Ciebie nowe wiadomo´

sci. Opró˙

znij skrzynk˛

e pocztow ˛

a ze starych\n\

wiadomo´

sci.\n"

quota_warn_threshold = 90%

Dodanie skanerów antywirusowych

Aby Exim współpracował z jakim´s antywirusem nale ˙zy najpierw wybra´c i zainstalo-
wa´c program antywirusowy. Do´swiadczenie uczy, ˙ze najlepszy jest program Clamav.

Instalujemy wi˛ec Clamav

# poldek -i clamav clamav-database

Po zainstalowaniu Clamav musimy zmodyfikowa´c plik konfiguracyjny

/etc/mail/exim.conf

w sekcji głównej ustawiamy typ antywirusa:

av_scanner = clamd:/var/lib/clamav/clamd.socket

Po dwukropku ustawiamy ´scie ˙zk˛e do socketu antywirusa (w przypadku clamav -
zajrzyj do pliku

/etc/clamav.conf

). W miejscu gdzie wpisali´smy clamd, mo ˙zemy

wpisa´c tak ˙ze i inny typ skanera. Niestety, ˙zaden z innych obsługiwanych (sophie,
kavdaemon, drweb) skanerów nie jest darmowy. Je ˙zeli natomiast wolicie mks, to mo-

˙zecie u ˙zy´c takiej opcji:

av_scanner = mksd

Kolejnym etapem, jest stworzenie reguł do filtrowania maili z wirusami. W tym celu,
dopisujemy do sekcji głównej pliku konfiguracyjnego Exim:

acl_smtp_data = exiscan

Teraz zaczynamy grzebanie w sekcji acl, gdzie dopisujemy (najlepiej na samym po-
cz ˛

atku):

exiscan:

warn message

= X-MIME-Warning: Serious MIME

defect detected ($demime_reason)
demime

= *

143

background image

Rozdział 12. Usługi dost˛epne w PLD

deny message

= Virus found /

znaleziono wirusa :$malware_name
malware

= *

accept

Powy ˙zszy wpis spowoduje i ˙z maile z uszkodzonymi nagłówkami MIME zostan ˛

a od-

powiednio oznaczone (czyli, tak ˙ze, du ˙ze maile podzielone na cz˛e´sci, o czym niestety
autor exiscana (aut. łatki dla Exim-a) nie wspomina, dlatego ich nie odrzucamy), na-
tomiast maile z wirusami zostan ˛

a odrzucone. Exiscan nie b˛edzie wysyłał ˙zadnych

powiadomie ´n do nadawcy czy adresata. I wg. mnie jest to bardzo zdrowe rozwi ˛

aza-

nie. Po prostu odrzucamy maila i tyle.

Aby skaner av mógł sprawdza´c poczt˛e Exima musi zosta´c dodany do grupy exim.
Dokonujemy tego poleceniem groupadd albo edytuj ˛

ac po prostu plik

/etc/group

:

[...]

exim:x:79:clamav,mail

[...]

Kolejny feature jaki daje exiscan to odrzucanie plików z zał ˛

acznikiem o okre´slonym

rozszerzeniu. W tym celu dopisujemy zaraz po exiscan: nast˛epuj ˛

ace linijki:

deny message

= Pliki z rozszerzeniem $found_extension \

nie sa tutaj mile widziane
demime = com:vbs:bat:pif:scr

Odrzuci to pliki *.com, *.vbs, *.bat, *.pif i *.scr. Teraz, je ˙zeli nie chcemy aby skanowa-
ne były maile pochodz ˛

ace od danych adresów ip dopisujemy (je ˙zeli chcemy aby Ci

ludzie te ˙z nie mogli wysyła´c plików *.com, to po poprzedniej regułce, je ˙zeli oni b˛ed ˛

a

mogli, to przed):

accept hosts

= /etc/mail/dontscan

Teraz, w pliku

/etc/mail/dontscan

umieszczamy adresy IP b ˛

ad´z klasy adresowe z

których poczta ma nie by´c skanowana.

Je ˙zeli natomiast chcecie, by poczta przeskanowana u was w przypadku gdy wróci
w jaki´s sposób z powrotem do naszego serwera (np. poprzez alias na innym serwe-
rze) nie była ponownie skanowana, mo ˙zecie zacz ˛

a´c oznacza´c poczt˛e odpowiednimi

znacznikami oraz przyj ˛

a´c ˙ze poczta z tym znacznikiem nie była ponownie skanowa-

na. Tak wi˛ec, przed ko ´ncowym accept dodajemy:

warn message = X-Scan-Signature: ${hmac{md5}{atutajwpiszhaslo} \

{$body_linecount}}

Exim spowoduje dodanie zaszyfrowanego ci ˛

agu znaków składaj ˛

acego si˛e z hasła i

wielko´sci maila. Dzi˛eki temu kto´s kto nie pozna waszego hasła nie b˛edzie mógł sfał-
szowa´c informacji o tym ˙ze mail został ju ˙z zeskanowany. Teraz, aby taka poczta prze-
chodziła bez skanowania, na samym pocz ˛

atku po exiscan: dopisujemy:

accept condition = ${if eq {${hmac{md5}{atutajwpiszhaslo} \

{$body_linecount}}}{$h_X-Scan-Signature:} 1}{0}}

144

background image

Rozdział 12. Usługi dost˛epne w PLD

Ustawienie takich regułek z tym samym hasłem na kilku serwerach spowoduje ˙ze
gdy mail b˛edzie przechodził przez kilka z nich, tylko jeden b˛edzie musiał go prze-
skanowa´c.

Filtrowanie spamu

Zjawisko spamu jest niezwykle uci ˛

a ˙zliwe. W niektórych Stanach w USA traktowa-

ne jest w kategoriach kryminalnych. Zapewne znasz jego definicj˛e lub przynajmniej
wiesz jak spam wygl ˛

ada. W skrócie jest to wiadomo´s´c e-mail, której nie chciałe´s

otrzyma´c. Exim posiada wbudowan ˛

a obsług˛e filtra antyspamowego. Mo ˙zemy zde-

finiowa´c takie warto´sci jak spis

black list

czy odpowied´z serwera w przypadku

kontaktu z tzw.

open relay

.

Przejd´zmy do konfiguracji. W przykładzie poni ˙zej wpisano kilka adresów usługo-
dawców zajmuj ˛

acych si˛e blokowaniem spamu.

deny message =

Serwer $sender_host_address figuruje na czarnej \

li´

scie $dnslist_domain\n$dnslist_text

dnslists = blackholes.mail-abuse.org : \

dialup.mail-abuse.org : \

relays.ordb.org : \
bl.spamcop.net : \
dnsbl.njabl.org : \
dnsbl.sorbs.net

deny dnslists = blackholes.mail-abuse.org : relays.ordb.org : \

dialup.mail-abuse.org : bl.spamcop.net : dnsbl.njabl.org : dnsbl.sorbs.net

Powiniene´s umie´sci´c ten przykład w sekcji

ACL CONFIGURATION

w obr˛ebie

acl_check_rcpt:

.

deny_message

Definiujemy tutaj wpis w dzienniku systemowym exima czyli

/var/log/exim/main.log

dnslist

Lista systemów z bazami blokuj ˛

acymi serwery

open relay

. Wymienione tutaj po-

winny skutecznie powstrzyma´c spam. Je ˙zeli nadal dostajesz niechciane maile, wy-
konaj nast˛epuj ˛

ace czynno´sci. Sprawd´z w nagłówku wiadomo´sci adres IP serwera,

który przekazał Twojemu MTA poczt˛e. Wejd´z na stron˛e: www.ordb.org/lookup/

13

i wpisz adres IP do sprawdzenia. Je ˙zeli wyszukiwanie w bazie ordb.org nie przy-
niesie rezultatów, wejd´z tutaj: http://www.ordb.org/lookup/rbls/?host=w.x.y.z,
gdzie zamiast symbolicznego zapisu podajemy adres IP. Skonstruowane w ten
sposób zapytanie dokona sprawdzenia, czy dany adres IP figuruje na innych czar-
nych listach. Pozytywny rezultat testu powinien zwróci´c w odpowiedzi list˛e sys-
temów RBL (Relay Black List). Mo ˙zna j ˛

a wykorzysta´c dopisuj ˛

ac do naszej reguł-

ki. Uwa ˙zaj na system

block.blars.org

figuruje w nim smtp.wp.pl. Wi˛ec je´sli nie

chcesz blokowa´c u ˙zytkownikom mo ˙zliwo´sci otrzymywania poczty z tego serwera,
nie dopisuj do regułki tego systemu RBL.

deny dnslist

145

background image

Rozdział 12. Usługi dost˛epne w PLD

Lista systemów RBL, które b˛ed ˛

a odpytywane podczas blokowania spamu. Kolejne

pozycje na li´scie s ˛

a przedzielone znakiem dwukropka. Jest to zreszt ˛

a specyfika

exim.conf

Teraz nale ˙załoby wł ˛

aczy´c wszystkie usługi jakie zainstalowali´smy

# /etc/rc.d/init.d/exim start
# /etc/rc.d/init.d/saslauthd start
# /etc/rc.d/init.d/clamd start
# /etc/rc.d/init.d/tpop3d start
# /etc/rc.d/init.d/rc-inetd restart

Na koniec przykładowy zapis z dziennika systemowego Exima

2004-03-04 21:05:24 H=(sina.com) [218.79.119.92] F=< jin@sina.com > \

rejected RCPT < user@domena.pl >: \
Serwer 218.79.119.92 figuruje na czarnej li´

scie dnsbl.sorbs.net

Obsługa wielu domen w Eximie

Je ˙zeli czytasz t ˛

a cz˛e´s´c opisu konfiguracji exima stan ˛

ałe´s przed problemem obsługi

przez niego wi˛ecej ni ˙z jednej domeny. Exim jest jak najbardziej do tego przystosowa-
ny. Poni ˙zej zamieszczam listing z pliku

/etc/mail/exim.conf

virtusertable_alias:

driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part@$domain}lsearch{/etc/mail/virtusertable}}
file_transport = address_file
pipe_transport = address_pipe

virtusertable_defaultalias:

driver = redirect
allow_fail
allow_defer
data = ${lookup{@$domain}lsearch{/etc/mail/virtusertable}}
file_transport = address_file
pipe_transport = address_pipe

Powy ˙zszy przykład umie´s´c umie´s´c na pocz ˛

atku sekcji

routers

. Dla przypomnienia

dodam, ˙ze pocz ˛

atek sekcji oznacza si˛e słowem kluczowym

begin

.

Jak słusznie zauwa ˙zyłe´s, wpisy z

virtusertable

do złudzenia przypominaj ˛

a te z

system_aliases

. Działa to wła´sciwie w ten sam sposób. Podczas odbierania prze-

syłki exim czyta linijk˛e

data

. Ma w niej zdefiniowane, ˙ze ma szuka´c na podstawie

local_part

czyli to co jest przed znakiem @ oraz

domain

czyli cz˛e´sci domenowej ad-

resu. Warto´sci które zostan ˛

a podstawione zamiast tych zmiennych zostan ˛

a porów-

nane z plikiem

/etc/mail/virtusertable

. Je ˙zeli wynik porównania wypadnie po-

my´slnie poczta zostanie dostarczona do odpowiedniego u ˙zytkownika, je ˙zeli za´s nie,
odpytane zostan ˛

a aliasy systemowe. Je ˙zeli i tam u ˙zytkownik nie zostanie odnalezio-

ny, zostanie wysłana wiadomo´s´c z odpowiedni ˛

a informacj ˛

a do nadawcy z komuni-

katem bł˛edu. Cz˛e´s´c

defaultalias

jest prawie identyczna. Ró ˙znica tkwi jedynie w

146

background image

Rozdział 12. Usługi dost˛epne w PLD

opcji

data

. Sprawdzana jest jedynie cz˛e´s´c domenowa. Poni ˙zej zamieszczam listing z

pliku

/etc/mail/virtusertable

user@domena.pl

user

mister@sample.com user2
@jakasdomena.pl

user3

Jak wida´c budowa pliku jest prosta i czytelna. User3 b˛edzie otrzymywał cał ˛

a poczt˛e

z domeny jakasdomena.pl. Po tych zabiegach exim powinien by´c ju ˙z przygotowany
do obsługi wielu domen. Musisz pami˛eta´c aby go zrestartowa´c po dokonaniu mody-
fikacji jego pliku konfiguracyjnego.

# /etc/rc.d/init.d/exim restart

Postfix - Transport poczty elektronicznej (MTA)

Postfix jest MTU czyli w wielkim skrócie demonem poczty elektronicznej. No tak,
w sumie powiecie ´sci ˛

agamy poldkiem instalujemy i działa... działa ale chcemy co´s

wi˛ecej... chcemy by nasz smtpd był ładnie skonfigurowany.

Zaczynamy

´Sci ˛agamy to co nam b˛edzie potrzebne. Wiadomo... postfix i dodatki, które mu s ˛a

potrzebne:

poldek -i postfix cyrus-sasl cyrus-sasl-plain cyrus-sasl-saslauthd \

cyrus-sasl-login

A tutaj co´s co b˛edzie nam potrzebne do tworzenia certyfikatów.

poldek -i openssl-tools

A tutaj co´s ˙zeby´smy mogli pobra´c poczt˛e z serwera.

poldek -i tpop3d inetd rc-inetd whoson-server

Konfiguracja

Przyszedł czas na konfiguracj˛e postfix-a.

# echo ’pwcheck_method:saslauthd’ > /etc/sasl/smtpd.conf

Nale ˙zy jeszcze sprawdzi´c czy w

/etc/pam.d/

znajduje si˛e plik

smtp

, je ˙zeli nie to

nale ˙zy przegra´c na to miejsce przykładowy konfig z

/usr/share/doc/cyrus-sasl-

saslauthd-*/cyrus.pam.gz

, rozpakowa´c i nazwa´c plik

smtp

.

Uruchom saslauthd:

# /etc/rc.d/init.d/saslauthd start

147

background image

Rozdział 12. Usługi dost˛epne w PLD

Uruchom postfix-a:

# /etc/rc.d/init.d/postfix start

Teraz chcemy, ˙zeby postfix wymagał autentykacji:

# postconf -e smtpd_sasl_auth_enable=yes
# postconf -e smtpd_recipient_restrictions=permit_mynetworks, \

permit_sasl_authenticated,reject_unauth_destination

Teraz linijka dla popsutych Outlook-ów.

# postconf -e broken_sasl_auth_clients=yes
# postconf -e mynetworks=127.0.0.0/8,192.168.1.1/32

Restart postfix-a:

# /etc/rc.d/init.d/postfix restart

No i to wszystko razem powinno wygl ˛

ada´c tak:

# postconf -n
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
biff = no
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/mail
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
default_privs = nobody
mail_owner = postfix
mail_spool_directory = /var/mail
myhostname = networking.ee
mynetworks = 127.0.0.0/8, 192.168.1.1/32, 192.168.1.1/32
myorigin = $myhostname
queue_directory = /var/spool/postfix
setgid_group = maildrop
smtpd_recipient_restrictions = permit_mynetworks, \

permit_sasl_authenticated,reject_unauth_destination

smtpd_sasl_auth_enable = yes

Szyfrowanie

Wł ˛

aczamy teraz szyfrowanie wysyłania poczty oraz transmisji mi˛edzy MX-ami dla

ró ˙znych domen

Nast˛epnie generujemy certyfikat SSL. Podczas generowania certyfikatu b˛edziesz mu-
siał odpowiedzie´c na kilka prostych pyta ´n.

Robimy to w sposób nast˛epuj ˛

acy:

# openssl genrsa -out key.pem 1024
# openssl req -new -x509 -key key.pem -out cert.pem

148

background image

Rozdział 12. Usługi dost˛epne w PLD

# cat cert.pem >> key.pem; mv -f key.pem cert.pem
# cp cert.pem /var/lib/openssl/certs/nasza.domena.pl.pem

Do pliku

/etc/mail/main.cf

nale ˙zy doda´c 4 linijki, takie jak poni ˙zej:

smtpd_tls_cert_file = /var/lib/openssl/certs/nasza.domena.pl.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_use_tls = yes
smtp_use_tls = yes

W pliku

/etc/mail/master.cf

nale ˙zy zast ˛

api´c aktualn ˛

a linijk˛e czyli t ˛

a z domy´slnej

instalacji:

#smtps inet

n

-

n

-

-

smtpd

na nasz ˛

a aktualn ˛

a:

smtps inet

n

-

y

-

-

smtpd -o smtpd_tls_wrappermode=yes \

-o smtpd_sasl_auth_enable=yes

Domeny

Je ˙zeli posiadamy wi˛ecej ni ˙z jedn ˛

a domen˛e na serwerze to w

/etc/mail/main.cf

dopisujemy:

mydestination = $myhostname, jakas.domena.pl, \

costam.gdziestam.pl, PLD.biz.pl

Je ˙zeli chcemy aby nasz postfix obsługiwał wirtualne domeny (przyznawał si˛e do
nich) dopisujemy w

/etc/mail/main.cf

takie dwie linijki:

relay_domains = hash:/etc/mail/domains
virtual_maps = hash:/etc/mail/virtual

Tworzymy

/etc/mail/domains

i robimy nastepuj ˛

ace wpisy:

# plik domains, w nim wpisane domeny dla których nasz serwer
#poczt˛

e b˛

edzie przyjmował.

pld-linux.org

relay

81.0.225.27

relay

Do

/etc/mail/virtual

dopisujemy na przykład co´s takiego:

# plik virtual, w nim wpisane s ˛

a konta w domenach które obsługujemy

# schemat wpisu
# ktostam.nazwisko@domena.pl

konto_w_systemie

rafal.drozd@networking.ee

grifter

rafal.drozd@jakas.domena.pl

grifter

rafal.drozd@costam.gdziestam.pl grifter
rafal.drozd@PLD.biz.pl

grifter

virusalert@networking.ee

grifter

# to ostatnie b˛

edzie nam pó´

zniej do amavisa potrzebne :)

Teraz musimy wklepa´c

149

background image

Rozdział 12. Usługi dost˛epne w PLD

# postmap /etc/mail/domains
# postmap /etc/mail/virtual

No i restart postfixa

# /etc/rc.d/init.d/postfix restart

Usprawnienia

Dodatkowe wpisy które poprawi ˛

a prac˛e naszego postfix-a Edytujemy

/etc/mail/main.cf

i dodajemy nast˛epuj ˛

ace wpisy:

disable_vrfy_command = yes
# liczba odbiorców max 100 dla jednego maila
smtpd_recipient_limit = 100
smtpd_error_sleep_time = 5
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
# ogranicz do 2 mega [2000000] wielko´

c przesyłki, wła´

sciwie maj ˛

ac \

# dobre ł ˛

acze mo˙

zna

# wpisa´

c 10 mega [10000000]

message_size_limit = 2000000
# spam fight! :>
header_checks = regexp:/etc/mail/header_checks
mail_name = PLD - $myhostname
smtpd_banner = $myhostname ESMTP $mail_name. We block/report all spam.
smtpd_soft_error_limit = 60
default_process_limit = 3
maps_rbl_domains = relays.ordb.org
smtpd_client_restrictions = reject_maps_rbl

Tworzymy

/etc/mail/header_checks

i dopisujemy:

/^To: .*friend@public/

REJECT Header-To address revoked \

due to too much spam.

/^Subject: ADV\W/

REJECT Header-Subject beginning with \

"spam" ADV tag rejected.

Ko ´

ncowa konfiguracja

# postconf -n
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
biff = no
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/mail
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
default_privs = nobody
default_process_limit = 3
disable_vrfy_command = yes

150

background image

Rozdział 12. Usługi dost˛epne w PLD

header_checks = regexp:/etc/mail/header_checks
mail_name = PLD - $myhostname
mail_owner = postfix
mail_spool_directory = /var/mail
maps_rbl_domains = relays.ordb.org
message_size_limit = 2000000
myhostname = networking.ee
mynetworks = 127.0.0.0/8,192.168.1.1/32
myorigin = $myhostname
queue_directory = /var/spool/postfix
relay_domains = hash:/etc/mail/domains
setgid_group = maildrop
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name. We block/report all spam.
smtpd_client_restrictions = reject_maps_rbl
smtpd_error_sleep_time = 5
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_recipient_limit = 100
smtpd_recipient_restrictions = permit_mynetworks, \

permit_sasl_authenticated,reject_unauth_destination

smtpd_sasl_auth_enable = yes
smtpd_soft_error_limit = 60
smtpd_tls_cert_file = /var/lib/openssl/certs/nasza.domena.pl.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_use_tls = yes
virtual_maps = hash:/etc/mail/virtual

Zawarto´s´c

master.cf

# grep -v ^# /etc/mail/master.cf
smtp

inet

n

-

n

-

-

smtpd

smtps

inet

n

-

y

-

-

smtpd -o smtpd_tls_wrappermode=yes \

-o smtpd_sasl_auth_enable=yes

pickup

fifo

n

-

n

60

1

pickup

cleanup

unix

n

-

n

-

0

cleanup

qmgr

fifo

n

-

n

300

1

qmgr

rewrite

unix

-

-

n

-

-

trivial-rewrite

bounce

unix

-

-

n

-

0

bounce

defer

unix

-

-

n

-

0

bounce

flush

unix

n

-

n

1000? 0

flush

smtp

unix

-

-

n

-

-

smtp

showq

unix

n

-

n

-

-

showq

error

unix

-

-

n

-

-

error

local

unix

-

n

n

-

-

local

virtual

unix

-

n

n

-

-

virtual

lmtp

unix

-

-

n

-

-

lmtp

cyrus

unix

-

n

n

-

-

pipe flags=R user=cyrus \

argv=/usr/lib/cyrus/deliver -e -m ${extension} ${user}

uucp

unix

-

n

n

-

-

pipe flags=Fqhu user=uucp \

argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)

ifmail

unix

-

n

n

-

-

pipe flags=F user=ftn \

argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)

bsmtp

unix

-

n

n

-

-

pipe flags=Fq. user=foo \

argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient

151

background image

Rozdział 12. Usługi dost˛epne w PLD

tpop3d

tpop3d + whoson, czyli co´s dzi˛eki czemu b˛edziemy mogli pobra´c poczt˛e z serwera.

No i wł ˛

aczamy tpop3d-a

# /etc/rc.d/init.d/tpop3d start

W celu poprawnego działania tpop3d wł ˛

aczamy whosond

# /etc/rc.d/init.d/whosond start

amavis + mks

Przyst˛epujemy do instalacji i konfiguracji amavisa + mks :)

Instalujemy poldkiem mks, serwer mksd, bazy, oraz skrypt aktualizuj ˛

acy bazy

poldek -i mks mksd mks-bases mks-updater mksd-clients

Teraz ´sci ˛

agamy jakiego´s wirusa i sprawdzamy czy mks32 działa...

# wget http://www.eicar.org/download/eicar.com
# mks32 eicar.com
mks_vir: init...

1.9.0 for Linux i386, 2003.07.02

mks_vir: database version 2003 7 11

13 23

mks_vir: init OK, scan mode
mks_vir: check file(s)
mks_vir: file: eicar.com
mks_vir:

--heuristic for virus Eicar.Test

mks_vir:

--heuristic for virus Eicar.Test

mks_vir: status: virus found: eicar.com
mks_vir: exit code: 0x01

Je´sli dostali´scie co´s takiego, tzn. ˙ze wszystko jest ok ;)

Teraz przetestujemy czy mksd działa poprawnie.

# /etc/rc.d/init.d/mksd

start

# mkschk /root/skaner/eicar.com
VIR Eicar.Test /root/skaner/eicar.com

Je´sli dostałe´s co´s takiego, tzn. ˙ze wszystko jest okej. mksd przy´spiesza znacznie prac˛e
na słabych maszynach... wtedy znacznie odczujesz.

Instalujemy teraz amavisa

poldek -i amavisd-new

No i teraz najgorsze ;)

Edytujemy

/etc/amavisd.conf

Odkomentuj lini˛e:

@bypass_spam_checks_maps

= (1);

# uncomment to DISABLE anti-spam code

152

background image

Rozdział 12. Usługi dost˛epne w PLD

Pozmieniaj odpowiednie linie

$mydomain = ’twoja.domena.pl’;

# (no useful default)

$daemon_user

= ’amavis’; # (no default;

customary: vscan or amavis)

$daemon_group = ’amavis’; # (no default;

customary: vscan or amavis)

Mo ˙zemy tutaj ustawi´c u ˙zytkownika

amavis

. Dodatkowo nale ˙zy dopisa´c

mksd

do

grupy

amavis

, dzi˛eki czemu b˛edzie on mógł korzysta´c z katalogów z cz˛e´sciami maili

amavisa.

# grep amavis /etc/group
amavis:x:116:mksd

Zakomentuj lini˛e:

#$unix_socketname = "$MYHOME/amavisd.sock"; # amavis helper protocol socket

Je´sli nie chcesz ˙zeby amavis u ˙zywał pewnych pakerów to zakomentuj odpowiednie
linie, np.

#$unrar

=

’unrar’;

Usu ´n wszystkie wpisy na temat antywirusów (@av_scanners = ) i zast ˛

ap to wpisem

z pliku README z archiwum mksd:

[’MkS_Vir daemon’,
’mksscan’, ’-s -Q {}’,
[0], [1..7],
qr/^... (\S+)/

],

Usu ´n wpisy z @av_scanners_backup =

W swoim systemie pocztowym (postfix) utwórz u ˙zytkownika (lub alias) "virusalert"
lub pozmieniaj wpisy:

$mailfrom_notify_admin
$mailfrom_notify_recip
$virus_admin

My zrobili´smy wcze´sniej aliasa dla virusalert ;)

Ja sobie jeszcze dopisałem:

$hdrfrom_notify_sender = $mailfrom_notify_admin;

Je´sli nie chcesz aby nadawcy listów oraz admini dostawali informacje o wirusach w
domy´slnym j˛ezyku (English) to odkomentuj linie i zrób własne wpisy w

/var/amavis/*.txt

# $notify_sender_templ

= read_text(’/var/amavis/notify_sender.txt’);

# $notify_virus_sender_templ=read_text(’/var/amavis/notify_virus_sender.txt’);
# $notify_virus_admin_templ = read_text(’/var/amavis/notify_virus_admin.txt’);
# $notify_virus_recips_templ=read_text(’/var/amavis/notify_virus_recips.txt’);

i zmie´

n

153

background image

Rozdział 12. Usługi dost˛epne w PLD

#$bdy_encoding = ’iso-8859-1’;

# (default: ’iso-8859-1’)

na

$bdy_encoding = ’iso-8859-2’;

# (default: ’iso-8859-1’)

Według licencji powiniene´s umie´sci´c w

notify_sender.txt

reklam˛e http://www.mks.com.pl

gdy ˙z jest do warunek licencji na u ˙zywanie mks. Na ko ´ncu pliku

/usr/sbin/amavisd

znajduj ˛

a si˛e przykładowe szablony.

W pliku

/etc/mail/master.cf

dopisujemy now ˛

a lini˛e:

localhost:10025 inet n

-

n

-

-

smtpd

No i restart postfix-a, amavisd-a i mks

# /etc/rc.d/init.d/postfix restart
# /etc/rc.d/init.d/mksd restart
# /etc/rc.d/init.d/amavisd restart

Teraz testujemy amavis-a:

# telnet 127.0.0.1 10024
Trying 127.0.0.1.10024...
Connected to localhost.
Escape character is ’^]’.
220 [127.0.0.1] ESMTP amavisd-new service ready
MAIL FROM: <root>
250 2.1.0 Sender root OK
RCPT TO: <root>
250 2.1.5 Recipient root OK
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: test bez wirusa
test
.

250 2.6.0 Ok, id=29569-01, from MTA: 250 Ok: queued as A1017FD1E

Dostałe´s 250? To znaczy, ze amavisd sprawdził przesyłk˛e :) nie wierzysz? tail -n 100
-f /var/log/maillog

A teraz sprawdzimy jak reaguje na przesyłk˛e z wirusem:

# telnet 127.0.0.1 10024
Trying 127.0.0.1.10024...
Connected to localhost.
Escape character is ’^]’.
220 [127.0.0.1] ESMTP amavisd-new service ready
MAIL FROM: <root>
250 2.1.0 Sender root OK
RCPT TO: <root>
250 2.1.5 Recipient root OK
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: test z wirusem

154

background image

Rozdział 12. Usługi dost˛epne w PLD

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
250 2.5.0 Ok, but 1 BOUNCE

No i znalazł wirusa :) w logach mamy:

Jul 14 04:17:43 networking amavis[29569]: (29569-02) INFECTED (Eicar.Test),
<root> -> <root>, quarantine virus-20030714-041716-29569-02, \

Message-ID: , Hits: -

Teraz jeszcze mała obróbka plików cf od postfix-a ;)

Edytujemy

/etc/mail/master.cf

Linijk˛

e:

smtp

inet

n

-

n

-

-

smtpd

zamieniamy na:

smtp

inet

n

-

n

-

-

smtpd -o \

content_filter=smtp-amavis:[127.0.0.1]:10024

oraz dodajemy jeszcze:

smtp-amavis unix -

-

n

-

2

smtp

-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes

Restart postfix-a:

# /etc/rc.d/init.d/postfix restart

i powinno wszystko nam pi˛eknie lata´c:)

Wy´slij sobie

eicar.com

w zał ˛

aczniku a zobaczysz, ˙ze smtp odrzuci i dostaniesz maila

z alertem :]

Apache - Serwer stron internetowych

Wst ˛ep

Ka ˙zdy, nawet pocz ˛

atkuj ˛

acy u ˙zytkownik sieci internet zetkn ˛

ał si˛e z apaczem ´swiado-

mie lub nie. Apache jest oprogramowaniem, które mo ˙zna powiedzie´c zdominowało
w pewnym stopniu rynek aplikacji serwerowych. Do działania wykorzystuje on pro-
tokół HTTP (RFC2616

15

). Jak sama nazwa wskazuje Apache (a patche server) składa

si˛e z wielu modułów. Mo ˙zna to zauwa ˙zy´c ju ˙z na pierwszy rzut oka. W tym rozdziale
zostanie opisana autoryzacja, obsługa skryptów php, virtualhosts oraz ogólna jego
konfiguracja. Przedstawiona poni ˙zej oparta została o apache z serii 2.x. Na pocz ˛

atek

powiniene´s zainstalowa´c takie pakiety jak:

155

background image

Rozdział 12. Usługi dost˛epne w PLD

apache

apache-mod_dir

Zakładam, ˙ze zapoznałe´s si˛e ju ˙z z rozdziałem siódmym

Zarz ˛

adzanie pakietami

,

wi˛ec przyst ˛

api˛e do krótkiego omówienia organizacji struktury katalogów Apache.

Tytułem wst˛epu pragn˛e jeszcze powiedzie´c, ˙ze niniejszy dokument nie mo ˙ze by´c
traktowany jako dokumentacja do Apache. Ma on na celu ułatwienie u ˙zytkownikowi
zapoznania si˛e z usług ˛

a oraz kilkoma jej mo ˙zliwo´sciami. Po bardziej szczegółowe

informacje odsyłam do stron podr˛ecznika systemowego (man) oraz dokumentacji
on-line

16

/etc/httpd/httpd.conf

W tym katalogu przechowywane s ˛

a pliki konfiguracyjne demona. Po instalacji po-

szczególnych składników Apache, wła´snie w tym miejscu nale ˙zy szuka´c plików
konfiguracyjnych od nich.

/home/services/httpd

W tym katalogu znajduj ˛

a si˛e pliki domy´slnej strony Apache, katalog z komunika-

tami o bł˛edach oraz katalog przeznaczony dla skryptów cgi.

/usr/lib/apache

W tym katalogu przechowywane s ˛

a moduły potrzebne do działania Apache oraz

poszczególnych jego składników. Warto o tym pami˛eta´c w przypadku problemów
z uruchomieniem usługi.

/usr/sbin

Nie jest to katalog nale ˙z ˛

acy stricte do Apache, jednak warto o nim wspomnie´c ze

wzgl˛edu na to i ˙z przechowywane s ˛

a w nim jego binaria. Aby si˛e dowiedzie´c które

nale ˙z ˛

a do niego wydaj nast˛epuj ˛

ace polecenie

# rpm -ql apache |grep ^\/usr\/sbin

Apache jest ponad to wyposa ˙zony w mechanizm loggera wraz z

logrotate

, strony

podr˛ecznika systemowego oraz pliki README.

Podstawowa konfiguracja

Głównym plikiem konfiguracyjnym jest

/etc/httpd/httpd.conf/10_httpd.conf

.

Zaraz po zainstalowaniu demon jest wst˛epnie skonfigurowany i gotowy do urucho-
mienia. Warto jednak zapozna´c si˛e ze specyfik ˛

a konfiguracji Apache. Podczas oma-

wiania zwróc˛e Twoj ˛

a uwag˛e na to, co mo ˙ze Ci si˛e przyda´c.

Plik konfiguracyjny podzielony jest na dwie sekcje.

156

background image

Rozdział 12. Usługi dost˛epne w PLD

Global Environment

Zdefiniowane s ˛

a w niej takie rzeczy jak parametry dotycz ˛

ace obsługi klientów ł ˛

a-

cz ˛

acych si˛e z serwerem, numeru portu na ktorym ma on nasłuchiwa´c nadchodz ˛

a-

cych poł ˛

acze ´n, ilo´sci procesów uruchamianych przez demona oraz w ˛

atków. Szcze-

gółowe informacje na ten temat znajdziesz w dokumentacji do Apache. Równie ˙z
tutaj znajduj ˛

a si˛e dyrektywy ładuj ˛

ace moduły skompilowane jako DSO (Dynamic

Shared Object). W zasadzie bie ˙z ˛

aca konfiguracja tej sekcji powinna by´c na razie

wystarczaj ˛

aca, wi˛ec nie trzeba nic w niej zmienia´c.

’Main’ server configuration

Jak sama nazwa wskazuje, jest to główna sekcja pliku konfiguracyjnego. Zaraz pod
definicj ˛

a grupy oraz u ˙zytkownika, na których b˛edzie pracował demon znajduje si˛e

poni ˙zsza opcja.

ServerAdmin root@example.net

Powiniene´s tutaj wpisa´c kontaktowy adres e-mail do siebie jako administratora
tego serwera.

Poni ˙zej znajduje si˛e opcja

ServerName

. Powinna ona wygl ˛

ada´c tak jak w poni ˙z-

szym przykładzie.

ServerName example.net:80

Dosłownie jest to nazwa tego serwera. A dokładniej nazwa domenowa skonfigu-
rowana na serwerze nazw opiekuj ˛

acym si˛e Twoj ˛

a domen ˛

a. Je ˙zeli nie posiadasz

zarejestrowanej domeny, powiniene´s wpisa´c tutaj adres IP.

Nast˛epn ˛

a opcj ˛

a jest

DocumentRoot

. Okre´sla ona domy´slny katalog w którym b˛e-

dzie przechowywana strona internetowa. Wpisuj ˛

ac nazw˛e lub adres IP okre´slony

przez

ServerName

wła´snie z tego katalogu zostan ˛

a pobrane i wczytane przez prze-

gl ˛

adark˛e pliki strony.

DocumentRoot "/home/services/httpd/html"

Domy´slnie wszystkie rz ˛

adania s ˛

a tutaj skierowane. Ta lokalizacja nie jest obligato-

ryjna, wi˛ec nie musisz si˛e jej trzyma´c. Mo ˙ze zosta´c zmieniona przy u ˙zyciu dowi ˛

a-

za ´n symbolicznych lub aliasów wskazuj ˛

acych w inne miejsca.

Nast˛epna opcja to

UserDir

. Definiuje ona nazw˛e katalogu przechowuj ˛

acego strony

u ˙zytkowników.

UserDir public_html

Oczywi´scie je ˙zeli nie podoba Ci si˛e ta nazwa mo ˙zesz j ˛

a zmieni´c, jednak nale ˙zy

pami˛eta´c o tym, aby nazwy katalogów ze stronami na kontach u ˙zytkowników od-
powiadały temu co jest w pliku konfiguracyjnym.

Przykład: U ˙zytkownik Jan Kowalski posiada konto o nazwie: jan. W

/home/users/jan

jest jego katalog domowy. Jego strona internetowa znajduje si˛e w katalogu

/ho-

me/users/jan/public_html

. Aby strona si˛e wy´swietliła nale ˙zy ustawi´c odpo-

wiednie prawa dost˛epu. Katalog domowy

jan

powinien mie´c ustawione prawa

711. Katalog przechowuj ˛

acy jego stron˛e czyli

public_html

powinien mie´c 755.

Ka ˙zdy katalog zawieraj ˛

acy elementy strony powinien mie´c równie ˙z uprawnie-

nia 755. Pliki strony natomiast 644. Nale ˙zy teraz uruchomi´c usług˛e aby dokonane
przez nas zmiany odniosły skutek.

157

background image

Rozdział 12. Usługi dost˛epne w PLD

# /etc/rc.d/init.d/httpd start

Zgodnie z dotychczasow ˛

a konfiguracj ˛

a Apache, stron˛e Jana b˛edzie mo ˙zna ogl ˛

ada´c

pod adresem: http://example.net/~jan

17

.

Zgodnie z obecnym standardem tworzenia stron internetowych, domy´slnym pli-
kiem który jest automatycznie wczytywany po wpisaniu w przegl ˛

adarce adresu

jest

index

, który w zale ˙zno´sci od konstrukcji strony mo ˙ze mie´c ró ˙zne rozszerzenia.

A wi˛ec sk ˛

ad Apache wie, co ma zosta´c wczytane jako pierwsze? Do tego wła´snie

słu ˙zy pakiet

apache-mod_dir

. Jego plikiem konfiguracyjnym jest

/etc/httpd/httpd.conf/59_mod_dir.conf

Poprzez dyrektyw˛e

DirectoryIndex

okre´sla si˛e czego i w jakiej kolejno´sci ma szu-

ka´c przegl ˛

adarka.

DirectoryIndex index.html index.html.var index.htm index.shtml \

index.cgi index.php

Oczywi´scie mo ˙zemy podawa´c tutaj ró ˙zne nazwy plików startowych stron w za-
le ˙zno´sci od naszych potrzeb.

Virtual Hosts - wiele nazw na jednym serwerze

Mechanizm hostów wirtualnych jest prosty w konfiguracji. Musi si˛e opiera´c o serwer
DNS dlatego, ˙ze nazwy które zostan ˛

a u ˙zyte musz ˛

a istnie´c w internecie. Zanim przy-

st ˛

apisz do konfiguracji sugerowałbym zapoznanie si˛e z rozdziałem

Serwer Nazw -

BIND

. Nale ˙zy zacz ˛

a´c od instalacji pakietu

apache-mod_vhost_alias

. Po jego zain-

stalowaniu utworzy si˛e plik:

/etc/httpd/httpd.conf/20_mod_vhost_alias.conf

.

Wyedytuj teraz plik

/etc/httpd/httpd.conf/10_httpd.conf

. Tam w sekcji

’Ma-

in’ server configuration

tu ˙z pod

ServerName

dodaj tak ˛

a opcj˛e jak w poni ˙zszym

przykładzie.

NameVirtualHost 123.45.67.8:80

Oczywi´scie mo ˙zesz u ˙zy´c zapisu w formie domenowej analogicznie do

ServerName

.

W tym momencie nale ˙zy zrobi´c odpowiedni wpis do pliku strefy opisuj ˛

acego do-

men˛e. Posługuj ˛

ac si˛e wykorzystanym ju ˙z wcze´sniej przykładem Jana Kowalskiego,

utwórzmy dla niego wpis jan typu

IN A

.

jan IN

A 123.45.67.8

Po przeładowaniu serwera DNS, nowy wpis powinien ju ˙z by´c widoczny przez wi˛ek-
szo´s´c serwerów nazw. Mo ˙zna teraz przyst ˛

api´c do konfiguracji Apache.

Posługuj ˛

ac si˛e swoim ulubionym edytorem tekstu otwórz plik

/etc/httpd/httpd.conf/20_mod_vhost_alias.conf

.

Jak szybko si˛e zorientujesz plik zawiera przykładow ˛

a konfiguracj˛e w postaci komen-

tarza. Na jego podstawie stworzymy własn ˛

a dla u ˙zytkownika jan.

<VirtualHost 123.45.67.8:80>

ServerAdmin root@example.net

158

background image

Rozdział 12. Usługi dost˛epne w PLD

DocumentRoot /home/users/jan/public_html
ServerName jan.example.net

</VirtualHost>

Oczywi´scie mo ˙zesz wyznaczy´c tutaj innego administratora serwera je´sli tego potrze-
bujesz. Mo ˙zesz równie ˙z przy u ˙zyciu opcji

ErrorLog

oraz

TransferLog

sprawi´c aby

logi z tej strony były zapisywane np. pod inn ˛

a nazw ˛

a. Jak widzisz, poprzez

Documen-

tRoot

został zmieniony domy´slny katalog przechowywania stron o czym wspomi-

nałem ju ˙z wcze´sniej. Kiedy przegl ˛

adarka za ˙z ˛

ada zawarto´sci

jan.example.net

de-

mon u ˙zyje zmienionego

DocumentRoot

, aby spełni´c to rz ˛

adanie.

Ko ´ncowym etapem uruchomienia bie ˙z ˛

acej konfiguracji jest zrestartowanie usług

na-

med

oraz

httpd

.

# /etc/rc.d/init.d/named restart
# /etc/rc.d/init.d/httpd restart

Wpisuj ˛

ac w przegl ˛

adarce adres: http://jan.example.net

18

otworzy si˛e strona inter-

netowa u ˙zytkownika jan. Adres wskazuje w to samo miejsce co wcze´sniejszy zapis
z tyld ˛

a. Jest jednak na pewno bardziej przyjazny i łatwiejszy do zapami˛etania dla

u ˙zytkownika a wi˛ec jest po prostu lepszy.

Autoryzacja

Apache udost˛epnia równie ˙z mechanizm autoryzacji. Cz˛esto u ˙zywany jest aby wy-
odr˛ebni´c z serwisu pewn ˛

a cz˛e´s´c przeznaczon ˛

a dla upowa ˙znionych u ˙zytkowników.

Uprawnienia działaj ˛

a na poziomie katalogów. Nie mo ˙zna w ten sposób chroni´c po-

szczególnych plików. Je ˙zeli potrzebujesz chroni´c jedynie jeden lub kilka plików, stwórz
w obr˛ebie strony katalog o dowolnej nazwie i umie´s´c je w nim. Oczywi´scie musisz
pami˛eta´c o przekonstruowaniu linków na stronie.

Zanim przyst ˛

apimy do konfiguracji musimy zainstalowa´c pakiet o nazwie

apache-

mod_auth

. Zawiera on polecenie htpasswd, które słu ˙zy do wygenerowania pliku z

nazw ˛

a u ˙zytkownika oraz hasłem, które go identyfikuje. Nie ma ˙zadnej konwencji na-

zewnictwa, jednak zalecam ze wzgl˛edów bezpiecze ´nstwa aby plik z hasłem zaczynał
si˛e od ci ˛

agu znaków: .ht, tak jak to zostało zdefiniowane w:

/etc/httpd/httpd.conf/10_httpd.conf

.

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">

Order allow,deny
Deny from all

</Files>

Musimy okre´sli´c katalog przechowywania dla tych plików. Oczywi´scie powinien on
by´c osi ˛

agalny z poziomu u ˙zytkownika

http

na którym pracuje apache. Mo ˙zemy je

trzyma´c w

/home/services/httpd

. Przyst˛epujemy do generowania.

# htpasswd -c /home/services/httpd/.htdostep jan

159

background image

Rozdział 12. Usługi dost˛epne w PLD

New password:
Re-type new password:
Adding password for user jan

W tym miejscu zostali´smy poproszeni o wpisanie hasła oraz jego potwierdzenie. Je-

˙zeli wszystko si˛e zgadza, dostaniemy informacj˛e tak ˛

a jak w powy ˙zszym przykładzie.

Nazwa u ˙zytkownika jest przechowywana w formie jawnej, natomiast hasło zostało
zaszyfrowane.

# cat /home/services/httpd/.htdostep
jan:SAEWgAGl6fzFY

Nale ˙zy ustawi´c odpowiednie prawa dost˛epu do tego pliku.

# chmod 600 /home/services/httpd/.htdostep
# chown http.http /home/services/httpd/.htdostep

W ten oto sposób dajemy mo ˙zliwo´s´c zapisu i odczytu u ˙zytkownikowi

http

do

.htdo-

step

. Pozostaje nam jeszcze zdefiniowanie który katalog b˛edziemy chroni´c. Nale ˙zy

w tym celu wyedytowa´c główny plik konfiguracyjny apache:

/etc/httpd/httpd.conf/10_httpd.conf

Powinni´smy zdefiniowa´c katalog, który b˛edziemy chroni´c. Robimy to sposobem przed-
stawionym poni ˙zej

<Directory "/home/users/jan/public_html/private">

Options Indexes FollowSymLinks Multiviews
AuthType Basic

AuthName "Witaj Janie, zaloguj sie."
AuthUserFile /home/services/httpd/.htdostep

Require valid-user

</Directory>

Aby ten wpis mógł zadziała´c powinien by´c umieszczony w obr˛ebie sekcji

’Main’

server configuration

. Po zako ´nczeniu edycji nale ˙zy zrestartowa´c demona pole-

ceniem

# /etc/rc.d/init.d/httpd restart

Obsługa skryptów PHP

Ze wzgl˛edu na du ˙z ˛

a funkcjonalno´s´c j˛ezyk PHP stał si˛e ju ˙z w zasadzie pewnym

standardem w tworzeniu interaktywnych stron internetowych. Współczesne serwisy
wykorzystuj ˛

a m. in. bazy danych, dlatego zostanie równie ˙z opisane jak tak ˛

a obsłu-

g˛e zapewni´c. Przegl ˛

adaj ˛

ac list˛e dost˛epnych do zainstalowania pakietów z php na

pierwszy rzut oka wida´c nacisk twórców dystrybucji jaki został nało ˙zony na modu-
larno´s´c. Daje to niesamowit ˛

a wolno´s´c w wyborze tego co jest Ci dokładnie potrzebne.

Podobnie jak wszystkie inne pakiety php mo ˙zesz zainstalowa´c przy u ˙zyciu poldka.
Uruchamiaj ˛

ac go w trybie interaktywnym usługa apache b˛edzie si˛e restartowała au-

tomatycznie. Je ˙zeli wystarczy Ci podstawowy zestaw funkcji j˛ezyka PHP zainstaluj
pakiet o nazwie

php

. Po instalacji wykonaj nast˛epuj ˛

ace polecenie

160

background image

Rozdział 12. Usługi dost˛epne w PLD

# grep ^register_globals /etc/php/php.ini
register_globals = Off

Ze wzgl˛edów bezpiecze ´nstwa zaleca si˛e wył ˛

aczenie zmiennych globalnych w PHP.

Je ˙zeli z jakich´s powodów ustawisz t ˛

a opcj˛e na

On

, robisz to na własn ˛

a odpowiedzial-

no´s´c. Jak sprawdzi´c czy php działa? Cz˛esto do sprawdzania obsługi danego modu-
łu wykorzystuje si˛e funkcj˛e

phpinfo()

. Aby z niej skorzysta´c w obr˛ebie katalogu

/home/services/httpd/html

przy u ˙zyciu ulubionego edytora tekstu stwórz plik

info.php

19

z zawarto´sci ˛

a tak ˛

a jak poni ˙zej

<? phpinfo(); ?>

Upewnij si˛e czy plik posiada uprawnienia do odczytu dla wszystkich. wpisuj ˛

ac w

przegl ˛

adarce adres

http://example.net/info.php

(lub zamiast domeny adres IP

serwera), powiniene´s uzyska´c informacje m. in. na temat wersji PHP, konfiguracji
serwera oraz obsługiwanych modułów.

Obsługa ró ˙znego typu systemów bazodanowych rozbita jest na osobne pakiety za-
wieraj ˛

ace definicje funkcji PHP które j ˛

a zapewniaj ˛

a. Poni ˙zej w tabeli znajduje si˛e lista

która to odzwierciedla.

Tabela 12-1. Obsługa baz danych

Nazwa pakietu

Baza Danych

php-dba

Moduł dla PHP dodaj ˛

acy obsług˛e dla

baz danych opartych na plikach (DBA).

php-dbase

Moduł PHP ze wsparciem dla DBase.

php-filepro

Moduł PHP dodaj ˛

acy mo ˙zliwo´s´c

dost˛epu (tylko do odczytu) do baz
danych filePro.

php-interbase

Moduł PHP umo ˙zliwiaj ˛

acy dost˛ep do

baz danych InterBase i Firebird.

php-mssql

Moduł PHP dodaj ˛

acy obsług˛e baz

danych MS SQL poprzez bibliotek˛e
FreeTDS.

php-mysql

Moduł PHP umo ˙zliwiaj ˛

acy dost˛ep do

bazy danych MySQL.

php-odbc

Moduł PHP ze wsparciem dla ODBC.

php-pgsql

Moduł PHP umo ˙zliwiaj ˛

acy dost˛ep do

bazy danych PostgreSQL.

php-sybase

Moduł PHP dodaj ˛

acy obsług˛e baz

danych Sybase oraz MS SQL poprzez
bibliotek˛e SYBDB.

php-sybase-ct

Moduł PHP dodaj ˛

acy obsług˛e baz

danych Sybase oraz MS SQL poprzez
CT-lib.

161

background image

Rozdział 12. Usługi dost˛epne w PLD

Aby skorzysta´c z którego kolwiek modułu wystarczy go po prostu zainstalowa´c.
Przeprowadzaj ˛

ac instalacj˛e w trybie wsadowym pami˛etaj o zrestartowaniu usługi

apache, o czym zostaniesz przez poldka poinformowany. Dystrybucja nie posiada
niestety pakietów do obsługi bazy danych Oracle. Je ˙zeli jest Ci ona potrzebna mu-
sisz zbudowa´c PHP wł ˛

aczaj ˛

ac obsług˛e oracla z serwera CVS, instaluj ˛

ac uprzednio

Oracla którego posiadasz.

Warto jeszcze wspomnie´c o narz˛edziach wspomagaj ˛

acych zarz ˛

adzanie bazami da-

nych. Do obsługi bazy MySQL słu ˙zy pakiet

phpMyAdmin

natomiast do PostgreSQL

zainstaluj

phpPgAdmin

. Szerzej o tych aplikacjach w dokumentacji do tych systemów.

Security Socket Layer (SSL)

Mechanizm ten wykorzystuje si˛e w serwisach wymagaj ˛

acych od u ˙zytkownika au-

toryzacji. Najbardziej typowymi aplikacjami tego typu s ˛

a ró ˙znego rodzaju klienci

poczty. SSL zapewnia szyfrowany kanał dla informacji przepływaj ˛

acej od u ˙zytkow-

nika do serwera. Dzi˛eki temu niemo ˙zliwe jest podsłuchanie hasła. UWAGA! Jeden
certyfikat SSL mo ˙ze zosta´c przypisany tylko dla jednego adresu IP.

Konfiguracj˛e zaczynamy od zainstalowania pakietu

apache-mod_ssl

. W wyniku in-

stalacji utworzony zostanie plik

/etc/httpd/httpd.conf/40_mod_ssl.conf

. Za-

nim zaczniemy go konfigurowa´c nale ˙zy wygenerowa´c certyfikaty. Słu ˙zy do tego po-
lecenie openssl. Program ten znajduje si˛e w pakiecie

openssl-tools

.

# openssl genrsa -out /etc/httpd/ssl/apache.key 1024

W wyniku tego polecenia zostanie utworzony plik

apache.key

który posłu ˙zy do

tworzenia certyfikatu. Robimy to w nast˛epujacy sposób.

# openssl req -new -x509 -days 365 -key /etc/httpd/ssl/apache.key \

-out /etc/httpd/ssl/apache.crt

Proces tworzenia certyfikatu b˛edzie wymagał podania kilku informacji. Zostaniesz o
nie poproszony trakcie jego trwania.

Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Województwo
Locality Name (eg, city) []:Miasto
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Firma
Organizational Unit Name (eg, section) []:Web Server
Common Name (eg, YOUR name) []:example.net
Email Address []:root@example.net

Pola, które widzisz w powy ˙zszym przykładzie nale ˙zy wypełni´c zgodnie z tym jak
zostało to przedstawione. W przypadku kiedy serwer jest prywatn ˛

a własno´sci ˛

a i nie

nale ˙zy do ˙zadnej firmy, w polu

Organization Name

mo ˙zesz wpisa´c imi˛e i nazwisko.

Para plików: klucz oraz certyfikat powinny mie´c takie uprawnienia, aby u ˙zytkownik

http

mógł je odczytywa´c.

Mo ˙zemy teraz wyedytowa´c plik

/etc/httpd/httpd.conf/40_mod_ssl.conf

. Po-

´sród szeregu opcji interesuje nas w zasadzie tylko konfiguracja katalogu, do którego

poł ˛

aczenie b˛edzie szyfrowane oraz ´scie ˙zki do plików z kluczem oraz certyfikatem.

Musimy odnale´z´c pocz ˛

atek sekcji o nazwie

VirtualHost

.

162

background image

Rozdział 12. Usługi dost˛epne w PLD

<VirtualHost _default_:443>

DocumentRoot "/home/services/httpd/html/webmail"
ServerName mail.example.net:443
ServerAdmin root@example.net
ErrorLog /var/log/httpd/error_log
TransferLog /var/log/httpd/access_log

Jak wida´c jej pocz ˛

atek nie ró ˙zni si˛e niczym od konfiguracji

VirtualHosts

. Zwró´c

uwag˛e na opcj˛e

ServerName

. Powinna ona ko ´nczy´c si˛e ci ˛

agiem :443 który oznacza

port na którym ma nasłuchiwa´c demon. Przechodzimy dalej i zmieniamy takie opcje
jak

SSLCertificateFile

oraz

SSLCertificateKeyFile

.

SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

Podajemy tutaj ´scie ˙zki do plików które wygenerowali´smy w poprzednim etapie.

Po zapisaniu i zako ´nczeniu edycji pliku restartujemy Apache, aby nasze zmiany od-
niosły skutek. Aby nawi ˛

aza´c poł ˛

aczenie szyfrowane z webmailem nale ˙zy w prze-

gl ˛

adarce wpisa´c adres https://example.net/webmail

20

. Aby ustanowi´c poł ˛

aczenie

szyfrowane i za ka ˙zdym razem nie wpisywa´c https://, powiniene´s u ˙zy´c mechani-
zmu vhosts. Stwórz katalog

/home/services/httpd/html/mail

dla którego zrobisz

wpis w pliku

20_mod_vhost_alias.conf

. Czyli zgodnie z tym czego ju ˙z si˛e dowie-

działe´s, robisz wpis w pliku strefy domeny oraz konfigurujesz apache. Natomiast w
katalogu

/home/services/httpd/html/mail

tworzysz plik o nazwie

index.php

z

zawarto´sci ˛

a tak ˛

a jak w przykładzie.

<?php

/**
* index.php -- Displays the main frameset
*
* Copyright (c) 1999-2002 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* Redirects to the login page.
*
* $Id: index.php,v 1.13 2002/02/19 15:05:03 philippe_mingo Exp $
*/

header("Location: https://poczta.example.net\n\n");
exit();

?>

Oczywi´scie domena, która jest podana na listingu musi odnosi´c si˛e do vhosta z opcj ˛

a

DocumentRoot

ustawion ˛

a na

/home/services/httpd/html/mail

.

Indeksowana zawarto ´s ´c katalogu

Jest to bardzo przydatna funkcja w Apache. Je ˙zeli chcemy komu´s udost˛epnia´c pliki
znajduj ˛

ace si˛e w jakim´s katalogu strony na serwerze mo ˙zemy j ˛

a dotego wykorzysta´c.

Przykładow ˛

a konfiguracj˛e mo ˙zesz obejrze´c na zamieszczonym poni ˙zej przykładzie.

163

background image

Rozdział 12. Usługi dost˛epne w PLD

<Directory "/home/users/jan/public_html/pliki">

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all

</Directory>

Opcj ˛

a odpowiadaj ˛

ac ˛

a za wy´swietlenie plików jest tutaj

Indexes

. Zadziała ona tylko

wtedy, kiedy w obszarze jej działania nie znajdzie si˛e ˙zaden plik okre´slony przez

DirectoryIndex

.

Ograniczanie dost ˛epu do serwera

By´c mo ˙ze spotkasz si˛e z problemem kiedy na Twoim serwerze znajdowa´c si˛e b˛edzie
kilka stron. Nie chcesz jednak aby ka ˙zda z nich była widoczna w internecie lub okre-

´slonych sieciach. Jest na to proste rozwi ˛

azanie. Wszystkie mechanizmy potrzebne do

rozwi ˛

azania tego problemu ju ˙z poznałe´s.

<Directory "/home/users/jan/public_html/intra">

Order allow,deny
Allow from 123.45.0.0/255.255.0.0
Allow from 56.67.9.34

</Directory>

Dost˛ep do katalogu

intra

maj ˛

a wszystkie komputery z okre´slonej w przykładzie

sieci oraz jeden komputer (b ˛

ad´z urz ˛

adzenie udost˛epniaj ˛

ace NAT) o wymienionym

adresie. Wszystkie poł ˛

aczenia nie pasuj ˛

ace do tych kryteriów traktowane s ˛

a jako

de-

ny

, zgodnie z porz ˛

adkiem wyznaczonym przez dyrektyw˛e

Order

.

PostgreSQL - Baza danych SQL

Co to jest PostgreSQL

PostgreSQL : The most advanced Open Source database system in the
world

PostgreSQL: Najbardziej zaawansowany system zarz ˛

adzania baz ˛

a danych na ´swiecie

typu OpenSource - w taki oto sposób grupa rozwijaj ˛

aca SZDB PostgreSQL reklamu-

je swój produkt. SZDB PostgreSQL jest implementacj ˛

a j˛ezyka SQL, która zawiera w

sobie bardzo wiele jego elementów, a na dodatek wprowadza wiele własnych roz-
szerze ´n. Porównywany z mySQL oddaje mu pola przy małych instalacjach, które w
prosty, a szybki sposób maj ˛

a obsługiwa´c baz˛e danych - typu małe portale interne-

towe, proste bazy, i tym podobne. Jednak ˙ze SZDB PostgreSQL dostaje skrzydeł w

164

background image

Rozdział 12. Usługi dost˛epne w PLD

wi˛ekszych projektach, jest cz˛esto porównywany do bardzo rozbudowanego SZDB
Oracle. Cechy SZDB PostgreSQL to mi˛edzy innymi:

osadzane j˛ezyki proceduralne wykonywane przez baz˛e danych (plperl, pl/perlu,
plpgsql, plpython, pltcl, pl/tcl)

mo ˙zliwo´s´c tworzenia funkcji w PostgreSQLu w j˛ezyku C, kompilowanych do bi-
bliotek dynamicznych

sterowniki dost˛epu do bazy z j˛ezyków C, C++, python, perl, czy Java (poprzez
JDBC), ODBC

wysoce zaawansowana implementacja standardu SQL, obejmuj ˛

aca SQL/92

obsługa BLOB (Binary Large OBjects) -- du ˙zych obiektów binarnych, takich jak
pliki graficzne, itp.

obsługa pól typu AUTOINCREMENT jako SERIAL lub SEQUENCE

licencj˛e BSD, która umo ˙zliwia zamykanie kodu SZDB PostgreSQL przy dokony-
waniu modyfikacji, co jest istotne w rozwi ˛

azaniach biznesowych

Instalacja pakietów

Uruchamiamy program poldek:

# poldek

Wykonujemy:

poldek>ls -l postgresql-*

Przykładowy wynik to:

poldek> ls -l postgresql-*
package

build date

size

postgresql-7.4-0.8

2003/12/16 20:45

8.8 MB

postgresql-backend-devel-7.4-0.8

2003/12/16 20:45

1.4 MB

postgresql-clients-7.4-0.8

2003/12/16 20:45

1.5 MB

postgresql-devel-7.4-0.8

2003/12/16 20:45

93.0 KB

postgresql-doc-7.4-0.8

2003/12/16 20:45

5.3 MB

postgresql-ecpg-7.4-0.8

2003/12/16 20:45

479.0 KB

postgresql-ecpg-devel-7.4-0.8

2003/12/16 20:45

17.0 KB

postgresql-libs-7.4-0.8

2003/12/16 20:45

252.0 KB

postgresql-module-pgcrypto-7.4-0.8

2003/12/16 20:45

91.0 KB

postgresql-module-plperl-7.4-0.8

2003/12/16 20:45

30.0 KB

postgresql-module-plpgsql-7.4-0.8

2003/12/16 20:45

100.0 KB

postgresql-module-plpython-7.4-0.8

2003/12/16 20:45

35.0 KB

postgresql-module-pltcl-7.4-0.8

2003/12/16 20:45

44.0 KB

postgresql-static-7.4-0.8

2003/12/16 20:45

303.0 KB

postgresql-tcl-7.4-0.8

2003/12/16 20:45

38.0 KB

postgresql-tcl-devel-7.4-0.8

2003/12/16 20:45

0.0 KB

postgresql-tcl-static-7.4-0.8

2003/12/16 20:45

36.0 KB

165

background image

Rozdział 12. Usługi dost˛epne w PLD

17 packages, 18.6 MB
poldek>

Do poprawnego działania SZDB PostgreSQL konieczne s ˛

a nast˛epuj ˛

ace pakiety:

postgresql

postgresql-clients

postgresql-libs

Zatem mo ˙zna przyst ˛

api´c do ich instalacji, wpisuj ˛

ac nast˛epuj ˛

ace polecenie:

# poldek -i postgresql postgresql-clients postgresql-libs

Aby SZDB PostgreSQL skorzystał z wewn˛etrznych j˛ezyków plpgsql czy te ˙z plphpy-
thon nale ˙zy doinstalowa´c pakiety postgresql-module-plpgsql

# poldek -i postgresql-module-plpgsql

oraz

root# poldek -i postgresql-module-plpython

Konfiguracja PostgreSQLa w PLD

Wst ˛epna konfiguracja

Edytujemy plik

/etc/sysconfig/postgresql

:

# vim /etc/sysconfig/postgresql

I wybieramy odopowiednie podej´scie do bazy danych. Polecam standard setting. Po
edycji wykonanie komendy

# grep PG_DB_CLUSTERS /etc/sysconfig/postgresql | egrep -v ^#

powinno da´c wynik:

PG_DB_CLUSTERS="/var/lib/pgsql"

Sortowanie po polsku

poldek -i localedb-src && localedb-gen -l pl_PL && echo LANG=pl_PL \

>>/etc/sysconfig/i18n

TODO: locale tylko dla PostgreSQLa.

166

background image

Rozdział 12. Usługi dost˛epne w PLD

Inicjalizacja

Wykonujemy polecenie:

# service postgresql init

Podczas inicjalizacji SZDB PostgreSQL stworzy pliki potrzebne mu do przechowy-
wania tabel, tabele systemowe jak i bazy danych template0 i template1 konieczne
do jego dalszego działania. Inicjalizacja PostgreSQLa nie jest równoznaczna z jego
uruchomieniem, o czym dalej.

Konfiguracja PostgreSQLa

W punkcie (3) (<- TODO, shufla docbook lame) został zainicjalizowany cluster, w
którym to mo ˙zna dodawa´c bazy danych. Trzeba teraz odpowiednio skonfigurowa´c
ten ˙ze cluster. Przyda si˛e edycja plików ${PG_DB_CLUSTERS}/{postgresql.conf,pg_hba.conf}:

# vim /var/lib/pgsql/{postgresql.conf,pg_hba.conf}

Przydatna opcja to

tcpip_socket = true

w pliku

/var/lib/pgsql/postgresql.conf

.

Uruchomienie PostgreSQLa

# service postgresql start

Dodanie u˙zytkownika

# su - postgres -c ’psql template1’
template1=# CREATE USER uzytkownik WITH ENCRYPTED PASSWORD ’hasło’ \

CREATEUSER CREATEDB;

CREATE USER

U ˙zytkownik ‘uzytkownik’ b˛edzie miał mo ˙zliwo´s´c tworzenia baz danych (za pomoc ˛

a

createdb lub CREATE DATABASE z poziomu psql) jak i dodawania u ˙zytkowników
(createuser lub CREATE USER z poziomu psql).

Ostatni test

$ psql -h 127.0.0.1 template1
template-1=# SELECT count(*) FROM pg_database;

count

-------

2

(1 row)

167

background image

Rozdział 12. Usługi dost˛epne w PLD

Dodatki

Warto wł ˛

aczy´c obsług˛e PostgreSQLa w PHP, instaluj ˛

ac pakiet php-pgsql, równie ˙z w

perl-u perl-DBD-Pg lub perl-Pg, oraz w python-ie python-postgresql. Pakiet postgresql-
devel jest przydatny przy pisaniu aplikacji w C/C++ korzystaj ˛

acych z PostgreSQLa.

Dokumentacja do PostgreSQLa znajduje si˛e, a jak ˙ze, w pakiecie postgresql-doc.

# poldek -i php-pgsql
# poldek -i perl-DBD-Pg
# poldek -i perl-Pg
# poldek -i python-postgresql
# poldek -i postgresql-devel
# poldek -i postgresql-doc

Odno ´sniki

Strona główna projektu PostgreSQL

21

Bardzo dobry zestaw isotnych informacji po polsku dotycz ˛

acych PostgreSQLa

22

FAQ PostgreSQLa po polsku

23

/usr/share/doc/postgresql-*/FAQ_polish.gz

- Lokalna wersja FAQ, instalowana

z pakietem postgresql (mo ˙ze by´c tak ˙ze w oddzielnej paczce z dokumentacj ˛

a).

MySQL - System Zarz ˛

adzania Relacyjnymi Bazami Danych (ang.

RDBMS)

Co to jest MySQL?

MySQL jest Systemem Zarz ˛

adzania Relacyjnymi Bazami Danych. Znany i ceniony

jest przede wszystkim ze wzgl˛edu na swoj ˛

a niebywał ˛

a wydajno´s´c i szybko´s´c działa-

nia. ´Swietnie nadaje si˛e do obsługi projektów internetowych, ale nie tylko - z powo-
dzeniem u ˙zywany jest równie ˙z w wielkich projektach informatycznych organizacji,
takich jak chocia ˙zby NASA. Przeciwnicy MySQL’a cz˛esto mówi ˛

a, jak to bardzo bra-

kuje mu wielu ficzerów, które posiadaj ˛

a prawdziwe, du ˙ze systemy baz danych. Ze

swojego do´swiadczenia wiem, ˙ze cz˛e´s´c z tych ludzi nawet nie rozró ˙znia wersji sys-
temu, które oferuje nam firma MySQL AB (producent MySQL).

Ogólne cechy MySQL

Napisany w C i C++ (wydajno´s´c!).

API dla wielu j˛ezyków programowania: C, C++, Eiffel, Java, Perl, PHP, Python,
Ruby, Tcl.

168

background image

Rozdział 12. Usługi dost˛epne w PLD

Pełna wielow ˛

atkowo´s´c, korzystaj ˛

aca z w ˛

atków kernela. Oznacza to, ˙ze MySQL

b˛edzie pracował na maszynie wieloprocesorowej, je´sli tylko tak ˛

a posiadasz.

Opcjonalna obsługa transakcji.

B-drzewa z kompresowanymi indeksami. To wam si˛e przyda, jakby´scie mieli wie-
eeelkie bazy ;) Wystarczy powiedzie´c, ˙ze znacz ˛

aco wpływa na czas wyszukiwania

i pobierania danych (wierszy) z bazy.

Istnieje mo ˙zliwo´s´c "osadzenia" (ang. embed) serwera MySQL w aplikacji, któr ˛

a pi-

szemy. Je´sli kto´s potrzebuje funkcjonalno´sci systemu baz danych, a niekoniecznie
chce si˛e bawi´c w klient-serwer, to czemu nie?

Du ˙za liczba typów danych w kolumnach. Liczby, ci ˛

agi znakowe, obiekty binarne

(BLOB), data & czas, typy wyliczeniowe, zestawy. Na uwag˛e zasługuje fakt, ˙ze w
MySQL mo ˙zemy dan ˛

a kolumn˛e dostosowa´c do pewnej wielko´sci danych, które

zamierzamy w niej przechowywa´c (np. TINYINT, a nie INT), tym samym uzysku-
jemy wi˛eksz ˛

a wydajno´s´c i mniejsze zu ˙zycie pami˛eci (równie ˙z dyskowej). Istnieje

mo ˙zliwo´s´c definiowania niektórych typów danych jako narodowych (ró ˙zne stan-
dardy kodowania chocia ˙zby).

Obsługa klauzul agreguj ˛

acych i grupuj ˛

acych SQL.

Zł ˛

aczenia zewn˛etrzne (LEFT & RIGHT).

Komenda SHOW pozwalaj ˛

aca przegl ˛

ada´c informacje na temat baz, tabel i indek-

sów. Komenda EXPLAIN opisuj ˛

aca prac˛e optymalizatora zapyta ´n.

Bardzo prosty (z punktu widzenia administratora) system zabezpiecze ´n. Wszyst-
kie hasła s ˛

a szyfrowane.

Poł ˛

aczenia z serwerem przez: TCP/IP, ODBC, JDBC.

Lokalizacja (w sensie j˛ezykowym) serwera. Komunikaty m.in. po polsku.

Instalacja

Instalacj˛e oprogramowania przeprowadzimy oczywi´scie z pomoc ˛

a naszego poldka.

Logujemy si˛e jako

root

, b ˛

ad´z u ˙zywamy polecenia

sudo

, je ˙zeli mieli´smy je skonfigu-

rowane do tego celu. Pierwsz ˛

a rzecz ˛

a, któr ˛

a b˛edziemy musieli zrobi´c, jest ´sci ˛

agni˛ecie

i zainstalowanie odpowiednich pakietów z repozytorium PLD. Mo ˙zna zrobi´c to u ˙zy-
waj ˛

ac zarówno trybu wsadowego, jak i interaktywnego. Podam oba sposoby, wy-

bierz sobie ten, który bardziej Ci odpowiada :) (osobi´scie wol˛e tryb interaktywny, ze
wzgl˛edu na tab-completion).

Najpierw uruchamiamy poldka. Mo ˙zna poda´c mu flag˛e

-n

, która oznacza ´zródło,

z którego zamierzamy ´sci ˛

aga´c pakiety. Je´sli nie podamy tej flagi, wówczas poldek

skorzysta z pierwszego ´zródła wpisanego do pliku

/etc/poldek.conf

. Ja korzystam

ze słowackiego serwera firmy Bentel Ltd., ale to nie ma znaczenia.

Instalacja w trybie wsadowym

W trybie wsadowym poldka, instalacja wygl ˛

ada nast˛epuj ˛

aco:

169

background image

Rozdział 12. Usługi dost˛epne w PLD

# poldek -n bentel -i mysql mysql-client mysql-libs

Instalacja w trybie interaktywnym

W trybie interaktywnym poldka, instalacja wygl ˛

ada tak:

# poldek -n bentel
Wczytywanie ftp://spirit.bentel.sk/mirrors/PLD/[...]/packages.dir.gz...
Przeczytano 5116 pakietów
Wczytywanie /root/.poldek-cache/packages.dir.dbcache.var.lib.rpm.gz...
Przeczytano 450 pakietów

Witaj w poldkowym trybie interaktywnym. Wpisz "help" aby otrzyma´

c pomoc.

poldek>

Teraz przyst˛epujemy do instalacji pakietów MySQL:

poldek> install mysql mysql-client mysql-libs

poldek sam zadba o spełnienie wymaganych zale ˙zno´sci.

Konfiguracja MySQL

˙Zeby móc sprawnie (i bezpiecznie) u ˙zywa´c naszego ´swie ˙zo zainstalowanego serwe-

ra, musimy go odpowiedno skonfigurowa´c.

Otworzymy naszym ulubionym edytorem tekstu plik konfiguracyjny demona My-
SQL. W przypadku u ˙zycia edytora Vim wydajemy nast˛epuj ˛

ac ˛

a komend˛e:

# vim /etc/mysql/clusters.conf

Je ˙zeli nie zamierzamy zmienia´c lokacji, w której b˛edzie u nas pracował MySQL, to po
prostu odkomentujmy linijk˛e z

MYSQL_DB_CLUSTERS

, a je ˙zeli zamierzamy umie´sci´c

serwer MySQL w innym miejscu, to nale ˙zy t ˛

a linijk˛e odkomentowa´c, ale dodatkowo

zmieni´c ´scie ˙zk˛e.

# standard setting
MYSQL_DB_CLUSTERS="/var/lib/mysql"

Upewniamy si˛e, ˙ze jeste´smy zalogowani na konsoli jako

root

i wydajemy polecenie:

# /etc/rc.d/init.d/mysql init

Polecenie to b˛edzie nam potrzebne tylko przy pierwszym uruchomieniu serwera -
słu ˙zy ono zainicjalizowaniu klastra baz danych. Powiedzmy, ˙ze nasz katalog jest
"formatowany", ok? ;) Je ˙zeli pojawiłby wam si˛e bł ˛

ad, mówi ˛

acy o duplikacie wpisu

localhost-mysql dla klucza 1 - mo ˙zecie go zignorowa´c.j

Teraz mo ˙zemy przyst ˛

api´c ju ˙z do edycji wła´sciwiego pliku konfiguracyjnego RDBMS.

U ˙zywaj ˛

ac naszego ulubionego edytora otwieramy plik

/var/lib/mysql/mysqld.conf

170

background image

Rozdział 12. Usługi dost˛epne w PLD

# vim /var/lib/mysql/mysqld.conf

Teraz mo ˙zemy przyst ˛

api´c do jego edycji. Pierwsz ˛

a grup ˛

a opcji, na jak ˛

a trafiamy jest:

# This section must be the first!
[mysqld]
datadir

= /var/lib/mysql/mysqldb/db

pid-file

= /var/lib/mysql/mysqldb/mysql.pid

port

= 3306

socket

= /var/lib/mysql/mysqldb/mysql.sock

user

= mysql

datadir

to oczywi´scie katalog, w którym składowane b˛ed ˛

a nasze bazy. Mo ˙zna zo-

stawi´c tak jak jest.

user

to u ˙zytkownik "pod którym" b˛edzie działał nasz serwer, w sensie - uruchomie-

nie serwera wygl ˛

ada tak, jakby to ten u ˙zytkownik, reprezentowany przez zmienn ˛

a

user go uruchomił (proces nale ˙zy do niego). Mo ˙zna zmieni´c, chocia ˙z nie polecam.
Nie zalecane jest wykorzystanie do tego u ˙zytkownika

root

!

To co nas natomiast bardzo interesuje, z dwóch wzgl˛edów, to opcja

port

. Chodzi o

dwa przypadki:

Chcemy umo ˙zliwi´c dost˛ep do naszego serwera baz danych z zewn ˛

atrz, a admin

naszej sieci "łaskawie" przekierował nam jaki´s port z bramki na nasz komputer, ale
niestety nie jest to port 3306, z którego standardowo korzysta MySQL. Edytujemy
sobie opcje

port

w ten sposób, ˙zeby wskazywała na ten, który mamy dost˛epny.

Mamy maszyn˛e z zewn˛etrznym IP (tak ˛

a, do której mo ˙zna si˛e podł ˛

aczy´c z Interne-

tu), nie blokowali´smy jednak dost˛epu do MySQL, ale chcieliby´smy podnie´s´c cho´c
troszeczk˛e poziom bezpiecze ´nstwa i udost˛epni´c serwer MySQL na innym porcie.
Wybieramy i jaki´s i wpisujemy go jako warto´s´c opcji

port

.

# Don’t allow connections over the network by default
skip-networking

Je ˙zeli chcemy zablokowa´c dost˛ep do serwera MySQL z zewn ˛

atrz (z sieci), to... nie

robimy nic. A je´sli chcemy umo ˙zliwi´c innym komputerom ł ˛

aczenie si˛e z naszym ser-

werem, to nale ˙zy wykomentowa´c (doda´c #) linijk˛e z

skip-networking

.

Gdyby nam si˛e kiedy´s co´s popsuło (zapomnieli´smy hasła, nie mo ˙zemy dosta´c si˛e do
bazy), to przyda si˛e odkomentowanie tej opcji:

# Emergency option. Use only if you really need this.
#skip-grant-tables

Przydatn ˛

a rzecz ˛

a (ale w sumie tylko, je´sli zamierzamy udost˛epnia´c bazy na zewn ˛

atrz),

b˛edzie wł ˛

aczenie logowania poł ˛

acze ´n i zapyta ´n (zwalnia prac˛e serwera). Dodam, ˙ze

mo ˙zna oczywi´scie zmieni´c standardow ˛

a ´scie ˙zk˛e, do której zapisywane s ˛

a logi.

# Log connections and queries. It slows down MySQL so
# it’s disabled by default
# log

= /var/log/mysql/log

171

background image

Rozdział 12. Usługi dost˛epne w PLD

Opcje z grupy

set-variable

wpływaj ˛

a bezpo´srednio na prac˛e i wydajno´s´c serwera,

nie b˛ed˛e si˛e wi˛ec w nie zagł˛ebiał. To troch˛e trudniejszy temat. Jak kto´s chce bardzo
zoptymalizowa´c prac˛e swojego serwera, to polecam lektur˛e dokumentacji MySQL.
Przydatna jest równie ˙z znajomo´s´c zagadnie ´n relacyjnych baz danych i SQL’a. Przy-
kładowo zerkniemy na jedn ˛

a zmienn ˛

a:

#set-variable = max_connections=100

Odkomentowanie tej linijki pozwoli nam na ustawienie maksymalnej liczby poł ˛

a-

cze ´n, które nasz MySQL b˛edzie mógł przyj ˛

a´c i obsłu ˙zy´c w danej chwili. Wszystko

zale ˙zy od tego, w jakim celu u ˙zywamy naszego RDBMS - nale ˙zy postawi´c sobie
pytanie - "ile osób mo ˙ze chcie´c podł ˛

aczy´c si˛e do mojego serwera w jednej chwili i

ile takich poł ˛

acze ´n przypada ´srednio na jedn ˛

a osob˛e?". Odpowied´z wpisujemy w

zmienn ˛

a max_connections. Innym pytaniem mogłoby by´c "czy skrypty obsługuj ˛

ace

moje strony www korzystaj ˛

a ze stałych (persistent) poł ˛

acze ´n?"

Poniewa ˙z "Polacy nie g˛esi i swój j˛ezyk maj ˛

a" odkomentujemy jeszcze jedn ˛

a linijk˛e w

pliku konfiguracyjnym, aby wł ˛

aczy´c polskie komunikaty:

# Language
language

= polish

W tej chwili nasz serwer powinien by´c ju ˙z skonfigurowany do pracy. Upewniamy
si˛e, ˙ze jeste´smy zalogowani na konsoli jako

root

i wydajemy polecenie:

# /etc/rc.d/init.d/mysql start

Wywołanie tego skryptu startowego spowoduje uruchomienie demona MySQL w
systemie. Upewnijmy si˛e jeszcze, ˙ze nasz serwer baz danych rzeczywi´scie "wstał":

# /etc/rc.d/init.d/mysql status
MySQL cluster /var/lib/mysql: running

Jak wida´c na zał ˛

aczonym obrazku serwer działa. Poniewa ˙z w tej chwili jest zainsta-

lowany w sposób domy´slny i dlatego mało bezpieczny, nale ˙zy ustawi´c jakie´s hasło
dla u ˙zytkownika

mysql

:

# mysqladmin -u mysql -S /var/lib/mysql/mysqldb/mysql.sock password ’nasze-
haslo’

Po opcji

-S

podajemy scie ˙zk˛e do pliku

mysql.sock

, który powinien znajdowa´c si˛e w

katalogu, w którym umie´scili´smy MySQL.

Demon MySQL

Demon MySQL standardowo startuje wraz z systemem, ale przydaje si˛e zna´c dwie
komendy. Aby wł ˛

aczy´c lub wył ˛

aczy´c serwer, b˛ed ˛

ac zalogowanym jako

root

, b ˛

ad´z

u ˙zywaj ˛

ac komendy sudo, wydajemy polecenie:

# /etc/rc.d/init.d/mysql start | stop

wstawiaj ˛

ac oczywi´scie opcje

start

lub

stop

, w zale ˙zno´sci od tego, co chcemy zrobi´c.

172

background image

Rozdział 12. Usługi dost˛epne w PLD

mysqladmin

mysqladmin

jest narz˛edziem, za pomoc ˛

a którego mo ˙zemy tworzy´c i usuwa´c bazy

oraz przeładowywa´c konfiguracj˛e. Nie b˛edziemy go u ˙zywa´c do wył ˛

aczania serwe-

ra, bo od tego jest skrypt omówiony powy ˙zej. Narz˛edzie wywołuje si˛e poleceniem
mysqladmin

, a flagi i argumenty (opcje) polecenia słu ˙z ˛

a do wykonywania okre´slo-

nych zada ´n. Poniewa ˙z wcze´sniej zmienili´smy hasło dla u ˙zytkownika

mysql

, winni-

´smy przy ka ˙zdym poleceniu doda´c

-u mysql

i

-p

na ko ´ncu (aby klient zapytał nas o

hasło), np tak dla komendy status:

# mysqladmin -u mysql status -p
Enter password:
Uptime: 6720

Threads: 1

Questions: 1

Slow queries: 0

Opens: 6 \

Flush tables: 1 Open tables: 0

Queries per second avg: 0.000

Kilka przydatnych komend:

create nazwabazy

- tworzy now ˛

a baz˛e danych o nazwie

nazwabazy

.

drop nazwabazy

- usuwa baz˛e danych o nazwie

nazwabazy

flush-privileges

albo reload - obie opcje robi ˛

a to samo - przeładowuj ˛

a tablice upraw-

nie ´n. Powinni´smy wykona´c przeładowanie zawsze, gdy dodamy np nowego u ˙zyt-
kownika do jakiej´s bazy, poniewa ˙z do czasu przeładowania takie konto jest nieak-
tywne.

mysqldump

mysqldump

to program, słu ˙z ˛

acy do "zrzucania" danych - czyli do robienia kopii

zapasowych. Polecenie to jest przydatne w przypadku wykonywania kopii zapaso-
wych podczas aktualizacji MySQL czy te ˙z przenoszenia danych na inny serwer.

Kilka przydatnych opcji:

--databases baza1 baza2...

- zrzuca dane z baz, których nazwy podali´smy w

li´scie oddzielonymi spacjami.

--all-databases

- to samo co wy ˙zej ale dla wszystkich bazy.

--add-drop-table

- dodaje

DROP TABLE

do skryptów tworz ˛

acych tabele z backup-

u (jak b˛edziemy przywraca´c dane). Przydatne, kiedy np chcemy przywróci´c ju ˙z
istniej ˛

ac ˛

a tabel˛e. Spowoduje to najpierw jej usuni˛ecie, a nast˛epnie utworzenie od

nowa z danych, które mieli´smy w kopii zapasowej. Ogólnie, ˙zeby unikn ˛

a´c ewen-

tualnych problemów z duplikatami wierszy, itp. warto t ˛

a opcj˛e wł ˛

aczy´c.

--no-create-info

- w kopii nie zostanie zawarta informacja o tworzeniu tabel

(nazwy tabel, typy pól, indeksy itp.). Przydatne, je ˙zeli chcemy zrobi´c kopi˛e tylko
danych, a nie całej struktury bazy.

--no-data

- Ta opcja pozwala zapisa´c sam ˛

a informacj˛e o strukturze bazy i tabel,

nie zapisuje natomiast danych.

173

background image

Rozdział 12. Usługi dost˛epne w PLD

--opt nazwabazy

- tworzy kopi˛e bazy

nazwabazy

wraz z rozszerzonymi infor-

macjami MySQL, blokowaniem tabel, itd. Chyba najcz˛e´sciej stosowana opcja przy
robieniu kopii zapasowych.

Nale ˙zy pami˛eta´c, ˙ze wynik polecenia mysqldump nale ˙zy przekierowa´c (>) do jakie-
go´s pliku. Podam mo ˙ze kilka przykładów u ˙zycia tego programu. Zrzucenie zawar-
to´sci bazy

baza1

do pliku

baza1_bkp.sql

:

# mysqldump -u mysql --databases baza1 > baza1_bkp.sql -p

Stworzenie kopii zapasowej struktury bazy (bez danych)

baza2

i zapisanie jej w pliku

baza2_str.sql

:

# mysqldump -u mysql --databases --no-data baza2 > baza2_str.sql -p

Niezwykle przydatn ˛

a opcj ˛

a jest

--opt

omówiona wcze´sniej. Polecam jej stosowanie

do wykonywania kopii całej bazy, wł ˛

acznie ze struktur ˛

a tabel i samymi danymi. Aby

stworzy´c pełn ˛

a kopi˛e zapasow ˛

a bazy

baza1

i zapisa´c j ˛

a w pliku

baza1_kopia.sql

:

# mysqldump -u mysql --opt baza1 > baza1_kopia.sql -p

Przywracanie ba,z wykonanych poleceniem mysqldump wygl ˛

ada tak:

# mysql -u mysql baza1 < baza1_kopia.sql -p

Inna metoda (w sumie ró ˙zni ˛

aca si˛e zapisem):

# mysql -u mysql -e ’source /sciezka_do_pliku/baza1_kopia.sql’ baza1 -
p

phpMyAdmin

TODO

ProFTPD - serwer FTP

Wst ˛ep

Du ˙z ˛

a zalet ˛

a ProFTPD jest jego prostota. Plik konfiguracyjny demona do złudzenia

przypomina ten od Apache. Jego zrozumienie nie powinno sprawia´c trudno´sci. Za-
nim przyst ˛

apisz do instalacji powiniene´s zdecydowa´c w jakim trybie ma pracowa´c

usługa. Jako demon, czy ma by´c uruchamiana poprzez inetd. Tryb inet polega na
tym, ˙ze proces proftpd zostanie uruchomiony dopiero po odebraniu przez inetd
rz ˛

adania o t ˛

a usług˛e. Natomiast w trybie daemon ProFTPD jest uruchomiony cały

czas i pracuje niezale ˙znie od inetd. Tak wi˛ec, je ˙zeli Twój komputer, który przezna-
czysz na serwer nie jest zbyt szybki, powiniene´s wybra´c ProFTPD uruchamianego
poprzez inetd. Dystrybucja udost˛epnia obie te mo ˙zliwo´sci. Pakiet

proftpd-inetd

174

background image

Rozdział 12. Usługi dost˛epne w PLD

zapewnia uruchamianie poprzez inetd, natomiast po zainstalowaniu usługi z pakie-
tu

proftpd-standalone

uruchamiana ona b˛edzie w trybie daemon.

Instalacja i konfiguracja

W opisie posłu ˙zymy si˛e wersj ˛

a

daemon

. Instalujemy pakiet

proftpd-standalone

.

Je ˙zeli jeszcze nie wiesz jak instalowa´c pakiety w systemie, przeczytaj koniecznie roz-
dział ósmy:

Zarz ˛

adzanie pakietami

. Jak ju ˙z wspomniałem we wst˛epie, ProFTPD

jest jednym z prostszych w konfiguracji programów serwerowych. Wszystkie pliki
potrzebne do jego skonfigurowania znajduj ˛

a si˛e w katalogu

/etc/ftpd

.

# ls -1 /etc/ftpd
ftpusers
proftpd.conf

W pliku

ftpusers

znajduje si˛e lista u ˙zytkowników, którym odebrana została mo ˙z-

liwo´s´c logowania si˛e do serwera ftp. Poszczególne pozycje z tej listy zako ´nczone s ˛

a

znakiem nowej linii, tak wi˛ec ka ˙zda pozycja jest rozmieszczona jedna pod drug ˛

a.

Natomiast plik

proftpd.conf

zawiera wła´sciw ˛

a konfiguracj˛e usługi.

ServerName

"ProFTPD"

ServerIdent

off

ServerType

standalone

DeferWelcome

off

DefaultServer

on

DefaultRoot

~

ServerName

okre´sla nazw˛e serwera wy´swietlan ˛

a ł ˛

acz ˛

acym si˛e z nim u ˙zytkown-

ikom.

ServerIdent

pozwala na wy´swietlenie wiadomo´sci powitalnej podczas poł ˛

aczenia,

np. zawarto´sci pliku

.message

. Domy´slnie wył ˛

aczona.

ServerType

ustawia tryb pracy demona ProFTPD

DeferWelcome

Nie pokazuje wiadomo´sci powitalnej dopóki u ˙zytkownik si˛e nie

zautoryzuje.

DefaultServer

Okre´slamy konfiguracj˛e jako domy´sln ˛

a

DefaultRoot

Wyznaczamy nadrz˛edny dla ka ˙zdego u ˙zytkownika katalog spoza

którego nie b˛edzie mógł wyj´s´c. W listingu powy ˙zej b˛edzie to katalog domowy.

Poni ˙zej znajduje si˛e szereg zakomentowanych opcji pozwalaj ˛

acych na konfiguracj˛e

poł ˛

acze ´n bezpieczn ˛

a metod ˛

a przy u ˙zyciu SSL. Je ˙zeli jeste´s zainteresowany ich u ˙zy-

ciem powiniene´s zapozna´c si˛e z dokumentacj ˛

a on line

24

serwera ProFTPD. Przecho-

dzimy teraz do dalszej konfiguracji.

Port

21

Umask

022

User

ftp

Group

ftp

AuthPAMAuthoritative

on

175

background image

Rozdział 12. Usługi dost˛epne w PLD

Port

Definiujemy tutaj port na którym serwer b˛edzie oczekiwał nadchodz ˛

acych

poł ˛

acze ´n

Umask

Tryb umask 022 jest typowym standardem dla ogolnie dost˛epnych plików i

katalogów

User

Konto u ˙zytkownika na którego uprawnieniach pracuje usługa

Group

Grupa do której nale ˙zy konto u ˙zytkownika usługi

AuthPAMAuthoritative

Dajemy mo ˙zliwo´s´c autoryzacji u ˙zytkowników poprzez

moduł PAM je´sli jest to mo ˙zliwe.

Przedstawione tutaj warto´sci poszczególnych opcji s ˛

a domy´snie ustawiane w pliku

konfiguracyjnym w trakcie instalacji pakietu. Jak najbardziej mo ˙zesz z nich korzy-
sta´c. Na pewno nie powiniene´s zmienia´c takich ustawie ´n jak u ˙zytkownik czy grupa,
port oraz sposób autoryzacji.

<Directory />

AllowOverwrite

on

</Directory>

Zezwalamy na nadpisywanie plików w obr˛ebie katalogu do którego u ˙zytkownik si˛e
zaloguje. Poni ˙zej w pliku znajduje si˛e przykładowa konfiguracja dla u ˙zytkownika
anonimowego. Sekcja mie´sci si˛e wewn ˛

atrz znacznika

<Anonymous ~ftp></Anonymous>

.

Poni ˙zszy wykaz omawia najcz˛e´sciej wykorzystywane dyrektywy w tej sekcji.

User

ftp

Group

ftp

AnonRequirePassword off
RequireValidShell off

User

- konto u ˙zytkownika którego prawa b˛edzie uzyskiwała osoba loguj ˛

aca si˛e do

serwera

Group

- grupa do której nale ˙zy powy ˙zsze konto.

AnonRequirePassword

- w powy ˙zszym przykładzie wył ˛

aczona. Umo ˙zliwia u ˙zytkown-

ikom anonimowym logowanie si˛e bez hasła.

RequireValidShell

- opcja ta powoduje, ˙ze ProFTPD nie sprawdza czy dany

u ˙zytkownik, który si˛e loguje posiada przypisan ˛

a w

/etc/shells

powłok˛e.

UserAlias

anonymous ftp

MaxClients

10

DisplayLogin

welcome.msg

DisplayFirstChdir .message
AllowStoreRestart

on

UserAlias

- przyporz ˛

adkowuje nazw˛e u ˙zytkownika do systemowego konta. W

przykładzie anonymous został przypisany kontu ftp.

MaxClients

- ilo´s´c jednoczesnych poł ˛

acze ´n anonimowych które b˛ed ˛

a realizowane

przez serwer.

176

background image

Rozdział 12. Usługi dost˛epne w PLD

DisplayLogin

- okre´slamy plik którego zawarto´s´c b˛edzie wy´swietlana po starcie.

DisplayFirstChdir

- plik którego zawarto´s´c b˛edzie wy´swietlana po pierwszym

wej´sciu do katalogu.

AllowStoreRestart

- pozwala klientom wznawia´c upload.

<Limit WRITE>

DenyAll

</Limit>

Zabraniamy klientom pisania do katalogu

/home/services/ftp/pub

.

<Directory /home/services/ftp/pub/Incoming>

<Limit READ>

DenyAll

</Limit>
<Limit WRITE>

AllowAll

</Limit>
<Limit STOR>

AllowAll

</Limit>

</Directory>

Katalogowi

Incoming

zostały precyzyjnie okre´slone prawa dost˛epu. W powy ˙zszym

przykładzie ka ˙zdy ma dost˛ep do zapisu w tym katalogu natomiast nikt nie posiada
prawa do jego odczytywania.

Dost˛ep do serwera ftp mo ˙zemy ogranicza´c na kilka sposobów. Mo ˙zna limitowa´c ilo´s´c
jednoczesnych poł ˛

acze ´n, stworzy´c list˛e adresów IP, które b˛ed ˛

a miały prawo do zapi-

su czy odczytu okre´slonych katalogów.

Na tym zako ´nczymy podstawow ˛

a konfiguracj˛e serwera ProFTPD. Wi˛ecej informacji

na jego temat znajdziesz na stroniach z jego dokumentacj ˛

a

25

.

NFS - Network File System

NFS jest to usługa pozwalaj ˛

aca udost˛epnia´c zasoby dyskowe komputerom w sieci.

Serwer udost˛epnia katalog(i) klientom, którzy mog ˛

a je podmontowa´c i działa´c jak na

lokalnym systemie plików.

Serwer

Najpierw instalujemy wszystkie potrzebne rzeczy poleceniem:

# poldek -i nfs-utils portmap

Zajmiemy si˛e teraz edycj ˛

a plików konfiguracyjnych nfs-a. W

/etc/exports

znajduj ˛

a

si˛e katalogi udost˛epnione. Do pliku wpisujemy:

katalog komputer1(opcja11,opcja12) komputer2(opcja21,opcja22)

177

background image

Rozdział 12. Usługi dost˛epne w PLD

katalog - udost˛epniony katalog. Warto tutaj wspomnie´c, ˙ze je ˙zeli udost˛epniamy
dany katalog to nie mo ˙zemy udost˛epni´c w nowej regułce katalogu b˛ed ˛

acego jego

ojcem jak i synem, je ˙zeli le ˙z ˛

a na tym samym systemie plików. Udost˛epnianie par-

tycji FAT, itp. te ˙z nie jest dobrym rozwi ˛

azaniem.

komputer - IP lub nazwa komputera, któremu udost˛epniamy katalog. Mo ˙zna po-
da´c tak ˙ze cał ˛

a sie´c, wtedy zezwolimy wszystkim komputerom w sieci na przegl ˛

a-

danie i/lub zapisywanie do katalogu.

opcje - tutaj mo ˙zemy ustali´c m.in. czy zasób ma by´c udost˛epniony tylko do od-
czytu, czy tak ˙ze do zapisu, oraz nało ˙zy´c inne ograniczenia. Wszystkie opcje opisane
s ˛

a w manualu (man exports).

Oto przykładowe wpisy do

/etc/exports

:

/usr/local

192.168.0.1(ro) 192.168.0.2(rw)

/home

192.168.0.0/255.255.255.0(rw)

Pomijaj ˛

ac sensowno´s´c wpisów, to pierwszy daje prawo odczytu katalogu

/usr/local

komputerowi 192.168.0.1, i prawo odczytu i zapisu komputerowi 192.168.0.2. Drugi
z kolei daje prawo zapisu do katalogu

home

komputerom z podsieci 192.168.0.0/24.

Teraz musimy zadba´c o bezpiecze ´nstwo naszego serwera. Do tego słu ˙z ˛

a pliki

/etc/tcpd/hosts.allow

i

/etc/tcpd/hosts.deny

Najpierw blokujemy wszystkim dost˛ep do naszych usług wpisuj ˛

ac do pliku pliku

/etc/tcpd/hosts.deny

:

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Nast˛epnie w

/etc/tcpd/hosts.allow

wpisujemy komputery, którym zezwalamy

na korzystanie z wymienionych usług. Mo ˙zemy zarówno wpisa´c adresy IP kompu-
terów jak i cał ˛

a podsie´c.

portmap: 192.168.0.0/255.255.255.0
lockd: 192.168.0.0/255.255.255.0
rquotad: 192.168.0.0/255.255.255.0
mountd: 192.168.0.0/255.255.255.0
statd: 192.168.0.0/255.255.255.0

Na koniec mo ˙zemy zerkn ˛

a´c na pik /etc/sysconfig/nfsd . Powinien on wygl ˛

ada´c po-

dobnie :

# Set nice level for rpc.mountd, rpc.nfsd or knfsd
SERVICE_RUN_NICE_LEVEL="+0"

# Customized setings for knfsd
RPCMOUNTOPTIONS="--no-nfs-version 3"
RPCNFSDCOUNT=8

# Server type we are running, U for userland NFSD, K for knfsd
NFSDTYPE=K

178

background image

Rozdział 12. Usługi dost˛epne w PLD

SERVICE_RUN_NICE_LEVEL

ustala priorytet serwera

RPCNFSDCOUNT

podaje liczb˛e instancji serwera, czyli ilu klientów mo ˙ze obsłu ˙zy´c jednocze´snie

NFSDTYPE

podaje czy serwer ma pracowa´c jako oddzielny demon czy w trybie j ˛

adra.

Mamy ju ˙z wst˛epnie skonfigurowany serwer nfs, uruchamiamy usług˛e nfs i portmap.
W pierwszej kolejno´sci musimy uruchomi´c portmap. Mo ˙zemy teraz przej´s´c do kon-
figuracji klienta nfs.

Klient

W PLD standardowo mo ˙zemy podmontowywa´c zasoby po nfs-ie, nie potrzeba in-
stalowa´c ˙zadnych dodatkowych pakietów.

Katalogi montujemy nast˛epuj ˛

aco:

# mount serwer.net:/usr/local /usr/local -t nfs

serwer.net

to numer ip b ˛

ad´z nazwa naszego serwera serwuj ˛

acego zasoby, a

/usr/local

nazwa udost˛epnionego katalogu na serwerze (wpisali´smy go wcze´sniej do

/etc/exports

.

Mo ˙zna poda´c jeszcze flag˛e -o a za ni ˛

a poda´c potrzebne nam opcje montowania. Je ˙zeli

zauwa ˙zysz, ˙ze mount niepokoj ˛

aco długo si˛e wykonuje, powiniene´s u ˙zywa´c opcji -o

rsize=8192,wsize=8192

. Pozwoli to na znaczne przyspieszenie poł ˛

aczenia z zasobem

udost˛epnianym przez nfs.

Nic nie stoi na przeszkodzie aby´smy podł ˛

aczali zasób przy starcie systemu. Robimy

w tym celu wpis do

/etc/fstab

:

192.168.0.1:/usr/local

/usr/local

nfs

rw,hard,intr

0

0

Wpis wygl ˛

ada znajomo, ale uwag˛e zwracaj ˛

a opcje hard i intr. Otó ˙z hard oznacza,

˙ze programy korzystaj ˛

ace z zasobów nfs w momencie awarii serwera zostan ˛

a zawie-

szone w oczekiwaniu na dost˛ep do danych i nie b˛edzie mo ˙zliwo´sci ich odwieszenia
w postaci polecenia kill, chyba, ˙ze dodamy opcj˛e intr dzi˛eki czemu b˛edziemy mo-
gli zabi´c dany proces. Zamiast hard mo ˙zemy u ˙zy´c opcji soft, jednak w przypadku
awarii serwera nfs sygnalizuje bł ˛

ad programom korzystaj ˛

acym z zasobów. Wad ˛

a te-

go rozwi ˛

azania jest to, ˙ze nie wszystkie programy potrafi ˛

a poradzi´c sobie z takim

komunikatem i mo ˙ze doj´s´c do utraty danych.

Warto wspomnie´c i ˙z istnieje mo ˙zliwo´s´c optymalizacji serwera nfs. Po stronie klienta
słu ˙z ˛

a do tego opcje rsize i wsize, ale po szczegóły odsyłam do dokumentacji nfs-a.

179

background image

Rozdział 12. Usługi dost˛epne w PLD

Podsumowanie

Warto po´swi˛eci´c kilka godzin na optymalizacj˛e i dobre zabezpieczenie serwera. Za-
znaczam, i ˙z nfs nie tylko słu ˙zy do współdzielenia plików na zasadzie serwera samby,
mo ˙zna z niego bootowa´c stacje bezdyskowe lub tylko montowa´c katalogi domowe.
Wi˛ecej informacji szczegółowych mo ˙zna znale´z´c w dokumentacji oraz stronach ma-
nuala.

DHCPD - Dynamic Host Configuration Protocol Daemon

DHCP to protokół pozwalaj ˛

acy urz ˛

adzeniom pracuj ˛

acym w sieci LAN na pobieranie

ich konfiguracji IP (adresu, maski podsieci, adresu rozgłoszeniowego itp.) z serwera.
Ułatwia on administracj˛e du ˙zych i ´srednich sieci.

Instalacja

Aby uruchomi´c serwer DHCP musimy oczywi´scie zainstalowa´c go. Instalacja w PLD
jest prosta:.

# poldek -i dhcp

Konfiguracja

Wszystkie zmiany b˛ed ˛

a odbywa´c si˛e w pliku

/etc/dhcpd.conf

. Plik nie jest two-

rzony podczas instalacji, wi˛ec nie zdziwcie si˛e ˙ze go nie ma. Stwórzmy go zatem np.
poleceniem touch /etc/dhcpd.conf i wyedytujmy ulubionym edytorem. Przykłado-
wy plik konfiguracyjny:

# /etc/dhcpd.conf
# Przykładowy plik konfiguracyjny
# Do zmiany wszystkie linijki z "$", reszt˛

e w wi˛

ekszo´

sci przypadkach

# mo˙

zna zostawi´

c tak jak jest. Przydatnym narz˛

edziem do konfiguracji

# niektórych opcji w stylu masek i ipków b˛

edzie ifconfig.

# $DOMENA - to domena na której pracuje serwer DHCPD (np. "mydomain.net")
option domain-name "$DOMENA";

# $DNS - adres ip serwera dns, z jakiego maj ˛

a korzysta´

c komputery w sieci

# (np. dla TPSA - 194.204.159.1)
option domain-name-servers $DNS;

# Adres maski podsieci.
option subnet-mask 255.255.255.0;

ddns-update-style none;

# Parametry czasowe od´

swierzania informacji po stronie klientów

# w sieci (w sekundach)
default-lease-time 600;
max-lease-time 7200;

180

background image

Rozdział 12. Usługi dost˛epne w PLD

# Adres ip podsieci.
subnet 192.168.1.0

# Maska sieci.
netmask 255.255.255.0 {
# $ip1 $ip2 zakres ipków mo˙

zliwych do przydzielenia przez serwer.

# np. 192.168.1.2 192.168.1.22 przy 20 komputerach w sieci.
# 192.168.1.1 rezerwujemy sobie na serwer.
range $ip1 $ip2;

# Adres rozgłoszeniowy sieci.
option broadcast-address 192.168.1.255;
# Adres bramy w podsieci (czyli zwykle serwera na którym
# jest uruchomione DHCPD)
option routers 192.168.1.1;

# Teraz przechodzimy do konfiguracji komputerów w sieci.

# $NAME - dowolna nazwa domeny komputera w sieci
# (np andrzej, kuchnia, czy parter)
host $NAME {

# $MAC - Adres sprz˛

etowy karty sieciowej do której przypisujemy ip.

# Wyst˛

epuje w postaci sze´

sciu liczb, po dwie cyfry w systemie

# szesnastkowym, oddzielonych dwukropkami.
# np 00:06:29:F5:22:81. Adres ten mo˙

zemy znale´

c dzi˛

eki programowi

# ifconfig w systemach Uniksowych i winipcfg w Windowsie.
# Mo˙

zna tak˙

ze na serwerze u˙

zy´

c komendy arp do wy´

swietlenia

# wszystkich dost˛

epnych w sieci kart sieciowych i ich adresów sprz˛

etowych.

hardware ethernet $MAC;

# $IP - adres ip który przypisujemy z puli opisanej w ’range’
# (np. 192.168.1.2)
fixed-address $IP;

}

}

I to ju ˙z prawie koniec, teraz zostaje nam sprawdzenie pliku

/etc/sysconfig/dhcp

.

Znajdujemy w nim linijki:

# The

names of the network interfaces on which dhcpd should

# listen for broadcasts (separated by space)
DHCPD_INTERFACES=""

W cudzysłów wpisujemy nazwy interfejsów na których b˛edzie nasłuchiwał dhcpd.
Na przykład eth1.

181

background image

Rozdział 12. Usługi dost˛epne w PLD

Uruchomienie

Serwer uruchamiamy standardowo:

# /etc/rc.d/init.d/dhcpd start

CUPS - Popularny system druku dla Uniksa

Wst ˛ep

CUPS

jest nowoczesnym i uniwersalnym systemem druku dla systemów uniksowych,

pozwalaj ˛

acym na drukowanie z u ˙zyciem protokołu IPP. Mo ˙ze by´c stosowany zarów-

no do drukowania lokalnego jak i do drukowania w sieciach.

Instalacja

Podstawowa cz˛e´s´c

CUPS

:

cups

cups-lib

cups-clients

cups-image-lib

cups-filter-foomatic

W przypadku drukarek nie obsługuj ˛

acych Postscriptu konieczny b˛edzie pakiet:

cups-filter-pstoraster

Nast˛epnie instalujemy jeden lub wi˛ecej kontrolerów interfejsów drukarki, najcz˛e´sciej
stosowane s ˛

a:

cups-backend-parallel

- port równoległy (parallel port)

cups-backend-serial

- port szeregowy RS-232 (serial port)

cups-backend-usb

- port szeregowy USB (usb printer)

cups-backend-smb

- drukowanie zdalne w sieci SMB

Czas uruchomi´c demona:

$ /etc/rc.d/init.d/cups start

182

background image

Rozdział 12. Usługi dost˛epne w PLD

Zarz ˛

adzanie drukarkami

Operacje takie jak dodawanie, czy konfigurowanie drukarek mog ˛

a by´c dokonywane

na kilka sposobów.

HTTP

Popularnym sposobem jest konfiguracja przy pomocy przegl ˛

adarki internetowej,

CUPS

posiada wbudowany niewielki serwer WWW, z którym ł ˛

aczymy si˛e dowoln ˛

a prze-

gl ˛

adark ˛

a na adres serwera i port 631 np.:

$ lynx localhost:631

Z poziomu tej strony mamy dost˛ep do wielu opcji administracyjnych: konfiguracji
drukarek, zarz ˛

adzania klasami, zadaniami druku i innymi. Ten sposób zarz ˛

adzania

systemem

CUPS

w niniejszej publikacji jest traktowany jako domy´slny.

lpadmin

lpadmin

jest programem administracyjnym dostarczanym z CUPS-em, obsługiwa-

ny jest całkowicie z linii wiersza polece ´n. Jest to narz˛edzie zaawansowane, przez co
stosunkowo trudne w obsłudze, jego dokładny opis zawarto w dokumentacji.

Inne

Dla CUPS powstały wygodne programy zarz ˛

adzaj ˛

ace przeznaczone działaj ˛

ace w ´sro-

dowiskach Gnome i KDE, programy te mog ˛

a by´c najlepszym rozwi ˛

azaniem dla zwy-

kłych u ˙zytkowników. Ich atutem jest prostota obsługi, wad ˛

a za´s mniejsza ilo´s´c opcji

konfiguracyjnych.

Konfiguracja serwera

Dodanie drukarki

System

CUPS

jest dostarczany z pewn ˛

a ilo´sci ˛

a sterowników drukarek. Aby skonfigu-

rowa´c now ˛

a drukark˛e ł ˛

aczmy si˛e z serwerem CUPS:

$ lynx localhost:631

i przechodzimy do opcji Managle Printers -> Add Printer.

Zaczynamy od okre´slenia nazwy drukarki oraz opcjonalnie komentarza i lokalizacji.
Nast˛epnie wybieramy jeden z dost˛epnych na li´scie lokalnych kontrolerów interfej-
sów drukarki (

USB

/

serial

/

parallel

/...), a na koniec sterownik.

Nie nale ˙zy si˛e martwi´c je´sli w bazie

CUPS

nie ma sterownika naszego urz ˛

adzenia. Mo-

˙zemy si˛e uda´c na stron˛e http://www.linuxprinting.org

26

gdzie znajduje si˛e ogromna

baza sterowników drukarek. Po wyszukaniu drukarki w bazie (Driver Listings) na-
le ˙zy klikn ˛

a´c link "download PPD". Po pobraniu pliku nale ˙zy go przekopiowa´c do

katalogu

/usr/share/cups/model

. Na koniec musimy na nowo uruchomi´c demona

cupsd:

# /etc/rc.d/init.d/cups restart

Po tej operacji przeprowadzamy normaln ˛

a instalacj˛e drukarki.

183

background image

Rozdział 12. Usługi dost˛epne w PLD

Uwaga! Nale ˙zy unika´c dodawania du ˙zej liczby sterowników (wi˛ecej ni ˙z kilkadzie-
si ˛

at) do katalogu

/usr/share/cups/model

, mo ˙ze to spowodowa´c odczuwalne wy-

dłu ˙zenie startu demona.

Konfiguracja demona

Za obsług˛e zlece ´n druku odpowiada demon

cupsd

, jego konfiguracja jest przecho-

wywana w pliku

/etc/cups/cupsd.conf

. Zawiera on opcje istotne dla serwera dru-

ku, w przypadku lokalnego korzystania z drukarki nie ma konieczno´sci ingerencji w
jego tre´s´c, tak wi˛ec osoby potrzebuj ˛

ace jedynie lokalnej drukarki mog ˛

a opu´sci´c ten

podrozdział.

Domy´slnie CUPS pozwala jedynie na drukowanie lokalne, aby uzyska´c dost˛ep z sie-
ci musimy dokona´c zmian w powy ˙zszym pliku konfiguracji. Nale ˙zy odszuka´c sekcj˛e
oznaczon ˛

a znacznikami

<Location /></Location>

. Dost˛ep z innych maszyn kon-

figurujemy za pomoc ˛

a opcji

Allow From {$klient}

($klient to nazwa lub adres IP

maszyn którym udost˛epniamy drukark˛e). Dla ka ˙zdego komputera lub klasy adre-
sów dodajemy kolejn ˛

a linijk˛e. Poni ˙zszy przykład przedstawia udost˛epnienie druka-

rek dla maszyny o adresie 10.0.0.12:

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 10.0.0.12
</Location>

Na koniec restartujemy usług˛e:

# /etc/rc.d/init.d/cups restart

Drukowanie lokalne

Po poprawnym skonfigurowaniu drukarki b˛edziemy mogli drukowa´c z niemal ka ˙z-
dego programu, CUPS akceptuje zlecenia druku w stylu klasycznego systemu LPD.

Uwaga! Sterownik "backend" nie odpowiada za ładowanie modułów j ˛

adra wymaga-

nych przez fizyczne interfejsy (USB/serial/parallel/...), musimy o to zadba´c same-
mu.

Udost˛epnienie w sieci - IPP

Protokół IPP jest u ˙zywany domy´slnie przez CUPS i nie wymaga ˙zadnych dodatko-
wych przygotowa ´n.

Udost˛epnienie w sieci - SMB

W systemie musi by´c zainstalowany i działaj ˛

acy pakiet Samba. Aby systemy Micro-

softu mogły "widzie´c" drukarki CUPS nale ˙zy dokona´c modyfikacji w głównym pliku
konfiguracji Samby -

/etc/samba/smb.conf

.

Nale ˙zy usun ˛

a´c wszystkie opcje dotycz ˛

ace druku z sekcji [global], za´s w ich miejsce

wstawi´c poni ˙zsze linijki:

printing = cups
printcap name = cups

Prosty przykład pliku konfiguracji pakietu Samba mo ˙ze wygl ˛

ada´c nast˛epuj ˛

aco:

184

background image

Rozdział 12. Usługi dost˛epne w PLD

[global]

printing = cups
printcap file = cups

[printers]

comment = Drukarki
printable = yes
path = /var/spool/samba

Konfiguracja klienta

Drukowanie przez IPP

Aby CUPS było klientem IPP musimy doda´c drukark˛e z backendem IPP oraz poda´c
prawidłowy URI zasobu, jako producenta wybieramy Raw, za´s jako model Raw Qu-
eue. URI powinno mie´c nast˛epuj ˛

ac ˛

a posta´c: ipp://{$serwer}/printers/{$drukarka} ($ser-

wer to nazwa lub IP serwera druku, za´s $drukarka to nazwa drukarki). Adres taki
mo ˙ze wygl ˛

ada´c nast˛epuj ˛

aco:

ipp://10.0.0.3/printers/laserowa

Drukowanie przez SMB

Jedyne co musimy zrobi´c to doda´c drukark˛e z u ˙zyciem odpowiedniego backendu
- Windows Printer via SAMBA i poda´c prawidłowy URI, na koniec musimy wskaza´c
sterownik danej drukarki. URI powinno mie´c nast˛epuj ˛

ac ˛

a posta´c: smb://{$serwer}/{$drukarka}

($serwer to nazwa lub IP serwera druku, za´s $drukarka to nazwa drukarki). Adres
taki mo ˙ze wygl ˛

ada´c nast˛epuj ˛

aco:

smb://wodz/laserowa

Nale ˙zy pami˛eta´c ˙ze serwery oparte o systemy z serii NT mog ˛

a wymaga´c podania

konta u ˙zytkownika i hasła.

Zarz ˛

adzanie kolejk ˛

a druku

Zarz ˛

adzanie wydrukami jest mo ˙zliwe z poziomu przegl ˛

adarki internetowej, progra-

mów dla X-Window oraz z poziomu linii wiersza polece ´n. Z po´sród tych ostatnich
mamy do dyspozycji: lpstat, lpmove, cancel, lpq oraz lprm.

Test drukarki i rozwi ˛

azywanie problemów

Drukarka powinna działa´c od razu po zainstalowaniu, mo ˙zna to przetestowa´c z po-
ziomu panelu konfiguracji drukarki drukuj ˛

ac stron˛e testow ˛

a.

W razie problemów pierwsz ˛

a rzecz ˛

a jak ˛

a nale ˙zy zrobi´c to przejrze´c plik rejestrowa-

nia bł˛edów (log):

/var/log/cups/error_log

. Je´sli ci ˛

agle nie mo ˙zemy odnale´z´c ´zró-

dła problemu mo ˙zemy spróbowa´c wł ˛

aczy´c wysoki poziom raportowania bł˛edów.

Dokonujemy to przez edycj˛e w pliku

/etc/cups/cupsd.conf

i przestawienie usta-

wienia opcji "

LogLevel

" z "

info

" na "

debug

" lub "

debug2

" np.:

LogLevel debug2

185

background image

Rozdział 12. Usługi dost˛epne w PLD

Kiedy rozwi ˛

a ˙zemy problem nale ˙zy przywróci´c poprzedni poziom raportowania ze

wzgl˛edu na szybki przyrost obj˛eto´sci logów. Po ka ˙zdej modyfikacji pliku konfiguracji
nale ˙zy przeładowa´c demona:

# /etc/rc.d/init.d/cups restart

Samba - współpraca z Windows

Serwer członkowski domeny NT4

W tym rozdziale przedstawiona zostanie konfiguracja samby w roli serwera człon-
kowskiego domeny Microsoft Windows NT4. Zalet ˛

a takiej konfiguracji jest mo ˙zli-

wo´s´c budowania polityki praw dost˛epu do zasobów zgromadzonych na serwerze w
oparciu o konta u ˙zytkowników lokalnego serwera PDC.

Instalacja

Do realizacji tego zadania potrzebne b˛ed ˛

a trzy pakiety: samba, samba-clients oraz

samba-winbindd. Znaczenie poszczególnych pakietów:

samba - pakiet ten zawiera serwer samby

samba-clients - zestaw narz˛edzi przydatnych w poruszaniu si˛e w ´srodowisku Mi-
crosoft Networks.

samba-winbindd - demon pozwalaj ˛

acy na pobieranie uprawnie ´n z serwera PDC.

Proces instalacji pakietów przedstawiony został w dziale Zarz ˛

adzanie pakietami.

Konfiguracja

Przy u ˙zyciu dowolnego edytora otwieramy plik

/etc/samba/smb.conf

. Cał ˛

a konfi-

guracj˛e z której b˛edzie równie ˙z korzystał demon winbindd nale ˙zy wykona´c w sekcji

[global]

. Przyj˛eta w nim została nast˛epuj ˛

aca konwencja: <opcja> = <warto´s´c>. Je ˙ze-

li dana opcja ma kilka warto´sci, oddziela si˛e je znakiem spacji. Poszczególne opcje
umieszczane s ˛

a w osobnych liniach. Komentarze w pliku rozpoczynaj ˛

a si˛e znakiem

"#" lub ";". Poni ˙zej znajduje si˛e wykaz najwa ˙zniejszych opcji które nale ˙zy ustawi´c
podczas realizacji zadania. Wykraczaj ˛

a one nieco poza czyst ˛

a konfiguracj˛e winbindd

ale s ˛

a konieczne do jego prawidłowego działania.

workgroup = DOM
server string = File Server

Ustawiamy nazw˛e domeny której członkiem b˛edzie nasz serwer oraz opcjonalnie
komentarz (opis) komputera.

security = domain

186

background image

Rozdział 12. Usługi dost˛epne w PLD

Okre´slamy poziom bezpiecze ´nstwa. Nasza konfiguracja wymaga ustawie ´n zabezpie-
cze ´n typu domenowego.

password server = PDC

Nazwa netbiosowa serwera PDC. To z tego wła´snie serwera demon winbind b˛edzie
pobierał uprawnienia.

To tyle, je ˙zeli chodzi o ogóln ˛

a konfiguracj˛e samby. Teraz czas na dodanie kilku opcji

potrzebnych winbindowi.

winbind separator = +
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
client signing = yes

winbind separator

- znak, którym oddzielana b˛edzie nazwa u ˙zytkownika b ˛

ad´z

grupy od nazwy domeny. Np. "DOM+jan"

idmap uid

- zakres uidów w systemie zarezerwowanych na u ˙zytkowników domenowych

idmap gid

- zakres gidów w systemie przeznaczonych na grupy domenowe

Na tym mo ˙zemy zako ´nczy´c edycj˛e pliku konfiguracyjnego samby. Aby nasza konfi-
guracja stała si˛e aktywna musimy przerestartowa´c usług˛e.

/etc/rc.d/init.d/smb restart

W ´slad za usług ˛

a smb zostan ˛

a przerestartowane tak ˙ze nmbd oraz interesuj ˛

acy nas

winbindd. Czynno´sci ˛

a któr ˛

a musimy bezwzgl˛ednie wykona´c jest podł ˛

aczenie na-

szego serwera do domeny. Aby to uczyni´c wykonujemy poni ˙zsze polecenie:

# net rpc join -S PDC -U Administrator%hasło
Joined the domain DOM

Je ˙zeli w tym momencie miałby´s problemy ze skomunikowaniem si˛e z serwerem do-
meny mo ˙zesz doda´c do polecenia opcj˛e

-I

a po niej adres IP serwera PDC. Po po-

my´slnej operacji podł ˛

aczenia mo ˙zemy sprawdzi´c działanie winbinda.

# wbinfo -g
DOM+Administrator
DOM+Basia
DOM+Darek
...
# wbinfo -g
DOM+Domain Admins
DOM+Domain Users
...

Opcja

-u

pokazuje list˛e u ˙zytkowników, natomiast

-g

list˛e grup.

Je ˙zeli wynik obu polece ´n wygl ˛

ada podobnie jak na listingu oznacza to, ˙ze winbind

pracuje poprawnie.

187

background image

Rozdział 12. Usługi dost˛epne w PLD

Zako ´

nczenie

Jakie korzy´sci płyn ˛

a z takiej konfiguracji samby? Otó ˙z sprawdza si˛e ona w ´srodo-

wisku sieciowym w którym zasoby udost˛epniaj ˛

a zarówno serwery pracuj ˛

ace pod

kontrol ˛

a Windows jak i linuksa. Pozwala to na budowanie spójnej polityki bezpie-

cze ´nstwa w oparciu o uwierzytelnianie u ˙zytkownika na poziomie domeny. Drug ˛

a

z zalet jest prostota w implementacji. Dzi˛eki winbindd dost˛ep do grup oraz u ˙zyt-
kowników domenowych odbywa si˛e w taki sam sposób jak do ich odpowiedników
lokalnych.

# chown DOM+Administrator.DOM+Domain\ Users plik.txt

Snort - Sieciowy System Wykrywania Włama ´

n

Snort

27

to bardzo silny sieciowy system wykrywania ataków (ang. Network Intru-

sion Detection System, NIDS), który daje szeroki zakres mechanizmów detekcji, mo-
g ˛

acych w czasie rzeczywistym dokonywa´c analizy ruchu i rejestrowania pakietów w

sieciach opartych na protokołach IP/TCP/UDP/ICMP. Potrafi przeprowadza´c ana-
liz˛e strumieni pakietów, wyszukiwa´c i dopasowywa´c podejrzane tre´sci, a tak ˙ze wy-
krywa´c wiele ataków i anomalii, takich jak przepełnienia bufora, skanowanie portów
typu stealth, ataki na usługi WWW, SMB, próby wykrywania systemu operacyjnego
i wiele innych.

Wymagania

Przed instalacj ˛

a Snorta warto zaopatrzy´c si˛e w baz˛e danych (w opisie wykorzystano

MySQL) i serwer Apache z obsług ˛

a PHP. W bazie b˛ed ˛

a składowane logi, a za wy-

godny interfejs do przegl ˛

adania alarmów posłu ˙zy ACID (ang. Analysis Console for

Intrusion Databases).

Instalacja Snorta i ACID

Gdy mamy ju ˙z baz˛e danych i serwer WWW z PHP, instalujemy nast˛epuj ˛

ace pakiety.

# poldek -i snort acid

Przed konfiguracja ´srodowiska NIDS zakładamy dwie bazy, dla Snorta i dla archi-
wum alarmów.

# mysql -u mysql -p
Enter password:
mysql> create database snort_log;
Query OK, 1 row affected (0.01 sec)
mysql> create database snort_archive;
Query OK, 1 row affected (0.01 sec)
mysql> quit

Dodajemy tabele w taki sam sposób dla obu baz.

188

background image

Rozdział 12. Usługi dost˛epne w PLD

# gzip -d /usr/share/doc/snort-{wersja}/create_mysql.gz
# mysql -D snort_log -u mysql -p < \

/usr/share/doc/snort-{wersja}/create_mysql

# gzip -d /usr/share/doc/acid-{wersja}/create_acid_tbls_mysql.sql.gz
# mysql -D snort_log -u mysql -p < \

/usr/share/doc/acid-{wersja}/create_acid_tbls_mysql.sql

# mysql -D snort_archive -u mysql -p < \

/usr/share/doc/snort-{wersja}/create_mysql

# mysql -D snort_archive -u mysql -p < \

/usr/share/doc/acid-{wersja}/create_acid_tbls_mysql.sql

Nast˛epnie (najpro´sciej przy u ˙zyciu popularnego narz˛edzia phpMyAdmin) tworzy-
my u ˙zytkownika i nadajemy mu prawa dla stworzonych baz.

Przechodzimy do edycji pliku

/etc/acid_conf.php

, w którym dodajemy parametry

dla poł ˛

aczenia si˛e z bazami.

[...]
/* Alert DB connection parameters */
[...]
$alert_dbname

= "snort_log";

$alert_host

= "localhost";

$alert_port

= "3306";

$alert_user

= "login";

$alert_password = "haslo";

/* Archive DB connection parameters */
$archive_dbname

= "snort_archive";

$archive_host

= "localhost";

$archive_port

= "3306";

$archive_user

= "login.;

$archive_password = "haslo";
[...]

Teraz strona z interfejsem jest dost˛epna pod adresem http://twoje_ip/acid. Oczywi-

´scie dla bezpiecze ´nstwa zalecane jest zastosowanie protokołu SSL do komunikacji z

zasobem i autoryzacji poprzez pakiet apache-mod_auth.

Snort zale ˙znie od ´srodowiska w jakim działa mo ˙ze generowa´c du ˙z ˛

a ilo´s´c zb˛ednych

alertów, te bardziej istotne mo ˙zna przenosi´c do drugiej bazy za pomoc ˛

a ACID, dla

przejrzysto´sci ogółu.

Konfiguracja Snorta

Do działania jako sieciowy system wykrywania włama ´n, Snort potrzebuj˛e sprecyzo-
wania zasad funkcjonowania cało´sci w głównym pliku konfiguracyjnym

snort.conf

.

W starszych wersjach systemu, wszystkie opcje, ł ˛

acznie z regułami ataków znajdo-

wały si˛e w jednym pliku. Ci ˛

agła rozbudowa Snorta, rosn ˛

aca liczba sygnatur i ogólna

funkcjonalno´s´c, wymusiła rozdzielenie niektórych cz˛e´sci konfiguracyjnych, w tym
reguł ataków. Przejrzysto´s´c i spójno´s´c snort.conf została przywrócona przy u ˙zyciu
polecenia include, którym doł ˛

acza si˛e odpowiednie zestawy sygnatur i inne cz˛e´sci

konfiguracyjne, np.:

189

background image

Rozdział 12. Usługi dost˛epne w PLD

include: ´

scie˙

zka_do_pliku/nazwa

Bazy reguł charakteryzuj ˛

a si˛e nazw ˛

a pliku z ko ´ncówk ˛

a

.rules

, pierwszy człon na-

zwy zawiera rodzaj usługi lub typ ataku, którego dotyczy dany zestaw.

Pozostałymi plikami konfiguracyjnymi s ˛

a:

classification.config

- zawieraj ˛

acy klasyfikatory rodzajów ataków z nadanym

priorytetem zagro ˙zenia, tak jak poni ˙zej:

config classification: web-application-attack,Web Application Attack,1

reference.config

- posiadaj ˛

acy skróty adresów do stron organizacji z baz ˛

a opisów

ataków, np.:

config reference: bugtraq http://www.securityfocus.com/bid/

threshold.conf

- metody łagodzenia licznych, fałszywych alarmów,

unicode.map

- zestaw kodowanych znaków unicode, na potrzeby preprocesora

http_inspect.

Główny plik konfiguracyjny mo ˙zna podzieli´c na cztery sekcje. Pierwsza, odpowie-
dzialna jest za ustalanie zmiennych var, wykorzystywanych w składni reguł ataków.

Przyjmijmy ˙ze docelowo Snort ma monitorowa´c dwie podsieci o adresach 192.168.1.0/24
i 192.168.2.0/24, jego pliki konfiguracyjne znajduj ˛

a si˛e bezpo´srednio w katalogu

/etc/snort

,

a regułki w

/etc/snort/rules

.

# Adres sieci lokalnej
var HOME_NET [192.168.1.0/24,192.168.2.0/24]
# Adres sieci zewnetrznej
var EXTERNAL_NET !$HOME_NET
# Lista adresow serwerow znajdujacych sie w strefie chronionej
var DNS_SERVERS $HOME_NET
var SMTP_SERVERS $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var TELNET_SERVERS $HOME_NET
var SNMP_SERVERS $HOME_NET
# Lista portow
var HTTP_PORTS 80
var SHELLCODE_PORTS !80
var ORACLE_PORTS 1521
# Lista serwerow czat, komunikatorow
var AIM_SERVERS [64.12.24.0/24,64.12.25.0/24,64.12.26.14/24,64.12.28.0/24,]
# Scie˙

zka do katalogu z regulami atakow

var RULE_PATH /etc/snort/rules

W tej samej sekcji znajduje si˛e zestaw parametrów uruchomieniowych, zaczynaj ˛

a-

cych si˛e od wyra ˙zenia

config

(pełna ich lista znajduj˛e si˛e w dokumentacji):

# wybor interfejsu do nasłuchu (jeden demon Snorta moze
# obslugiwac tylko jeden interfejs sieciowy)
config interface: eth0

190

background image

Rozdział 12. Usługi dost˛epne w PLD

Druga cz˛e´s´c głównego pliku konfiguracyjnego, zawiera ustawienia preprocesorów.
Parametry domy´slne nie b˛ed ˛

a przedstawione w poni ˙zszym opisie. Kompletn ˛

a list˛e

opcji, mo ˙zna znale´z´c w dokumentacji Snorta. Oto przykłady ustawie ´n preproceso-
rów:

Frag2:

# detect_state_problems . zwraca alarm przy pokrywaniu sie fragmentow.
preprocessor frag2: detect_state_problems

Stream4, Stream4_reassemble:

# disable_evasion_alerts - brak alarmow przy nakladaniu sie
#pakietow TCP, detect_scans - detektor prob cichego skanowania,
# detect_state_problems - detektor nienaturalnego zachowania
# pakietow.
preprocessor stream4: disable_evasion_alerts \

detect_scans detect_state_problems

# both - skladanie sesji TCP w obu kierunkach pomiedzy
# klientem i serwerem,
# ports - lista portow, na ktorych ma dzialac reasemblacja.
preprocessor stream4_reassemble: both ports [ 21 25 80 143 110 ]

Http_inspect:

# iis_unicode_map - wskazuje plik z kodowaniem unicode i wybiera stan-
dardowe.
preprocessor http_inspect: global is_unicode_map unicode.map 1252
# profile - wybor profilu ustawien dla serwerow typu iis, apacze i all.
preprocessor http_inspect_server: server adres_IP_serwera_MS_IIS \

profile iis \
ports { 80 }

preprocessor http_inspect_server: server adres_IP_serwera_Apache \

profile apache \
ports { 80 }

Powy ˙zszy przykład przedstawia mo ˙zliwo´s´c profilowania ustawie ´n dla poszczegól-
nych serwerów, które podlegaj ˛

a ochronie. Serwery IIS i Apache, pracuj ˛

a w odmien-

ny sposób, a zarazem posiadaj ˛

a inne słabe punkty wykorzystywane podczas ata-

ków. Operacja dostosowania ustawie ´n skupia mechanizmy ochronne na odpowied-
nich metodach ataków dla danego typu serwera b ˛

ad´z ich grupy w danej sieci obj˛etej

ochron ˛

a.

RPC_decode, Back Orfice, Telnet_decode, Arpspoof, Performance Monito:

# alert_fragments . wlacza alarm, przy fragmentowaniu pakietow RPC,
# Domy´

slne porty: 111 i 32771.

preprocessor rpc_decode: 111 32771 alert_fragments
preprocessor bo
preprocessor telnet_decode
preprocessor arpspoof
preprocessor arpspoof_detect_host: adresy_IP \

przypisane_do_nich_adresy_MAC

# console . wyswietlanie statystyk na ekranie,
# flow i events . statystyki badanego ruchu i ilosci dopasowanych
# regul,

191

background image

Rozdział 12. Usługi dost˛epne w PLD

# time . aktualizacja danych co 10s.
preprocessor perfmonitor: console flow events time 10

Flow i Flow-portscan:

# stats_interval . zapisywanie statystyk, 0 - wylaczone,
# hash . wybor metody mieszania.
preprocessor flow: stats_interval 0 hash 2
# server-watchnet . adresy IP, na ktorych flow bedzie
# prowadzic badania,
# server-learning-time . czas utrzymania punktow dla danego adresu IP,
# server-scanner-limit . ilosc zapytan decydujacych o przyznaniu
# statusu
#

skanowania z danego adresu,

# src-ignore-net, dst-ignore-net . lista ignorowanych adresow docelowych
#

i zrodlowych.

preprocessor flow-portscan: \

server-watchnet [xxx.xxx.xxx.xxx/xx] \
server-learning-time 14400 \
server-scanner-limit 10 \
src-ignore-net [xxx.xxx.xxx.xxx/xx, xxx.xxx.xxx.xxx/xx] \
dst-ignore-net [xxx.xxx.xxx.xxx/xx]

Trzecia sekcja

snort.conf

, zawiera metody konfiguracji modułów wyj´sciowych, czy-

li ró ˙znych sposobów logowania wyników i tzw. akcji reguł. Na potrzeby tego opisu
wymieniony b˛edzie tylko przykład logowania do bazy MySQL.

output database: alert, mysql, user=login password=haslo \
dbname=snort_log host=127.0.0.1

Za pomoc ˛

a reguł akcji mo ˙zna tworzy´c własne rodzaje reakcji na wykryte zdarzenie,

np.:

ruletype czerwony_alarm

{
type log
# zapis do demona syslogd, lokalnie
output alert_syslog: LOG_ALER
}

# Przykladowa regula:
czerwony_alarm $HOME_NET any -> $HOME_NET 6667 (msg:"Internal \

IRC Server";)

Czwarta, ostatnia cz˛e´s´c, głównego pliku konfiguracyjnego, zawiera odniesienia do
zestawów reguł i wcze´sniej ju ˙z opisanych plików,

classification.config, refe-

rence.config, threshold.conf

(przykład poni ˙zej).

include classification.config
include reference.config

include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/dos.rules

192

background image

Rozdział 12. Usługi dost˛epne w PLD

(...)
# dodatkowy zestaw regul Bleeding Snort -
# http://www.bleedingsnort.com
include $RULE_PATH/bleeding.rules
include threshold.conf

Dostosowanie Snorta do swoich potrzeb obejmuje, obok konfiguracji preprocesorów
przede wszystkim decyzje, jakie zbiory reguł maj ˛

a by´c brane pod uwag˛e (czyli jakie

pliki z regułami maj ˛

a by´c doł ˛

aczane za pomoc ˛

a polecenia include). W ´srodowisku, w

którym wszystkie serwery WWW to Apache, reguły chroni ˛

ace serwer IIS b˛ed ˛

a gene-

rowały zupełnie niepotrzebne alarmy. Je´sli nie udost˛epniamy FTP, reguły opisuj ˛

ace

ataki na t˛e usług˛e b˛ed ˛

a tylko spowalniały prac˛e całego systemu. To sprawy oczywi-

ste, jednak wła´sciwe dostosowanie NIDS do swoich potrzeb wymaga wiele pracy.
Dobranie odpowiednich dla danego ´srodowiska reguł jest kluczowe dla działania
całego systemu, du ˙za ilo´s´c fałszywych alarmów nie tylko zu ˙zywa zasoby (ka ˙zda z
reguł musi by´c przecie ˙z przeanalizowana), ale mo ˙ze równie ˙z bardzo skutecznie "za-
ciemni´c" obraz, sprawiaj ˛

ac, ˙ze prawdziwy atak mo ˙ze przej´s´c niezauwa ˙zony w zale-

wie informacji mało istotnych. Obecna baza sygnatur liczy sobie około 2500 reguł i
jest praktycznie ka ˙zdego dnia wzbogacana o nowe opisy ataków. Dla przybli ˙zenia
wyst˛epuj ˛

acych w bazie kategorii sygnatur, opisz˛e jakiego rodzaju ataki wykrywaj ˛

a:

attack-responses - odpowiedzi usług na prób˛e ataku;

backdoor - działalno´s´c tzw. tylnych drzwi, trojanów, rootkitów;

bad-traffic - nieprawidłowy ruch, np. na port 0;

chat - aktywno´s´c ró ˙znego rodzaju komunikatorów;

ddod, dos - zmasowane ataki Distributed Denial of Service (rozproszony atak typu
- blokada usługi);

deleted - reguły przestarzałe, wykasowane;

dns - ataki na usług˛e Domain Name System;

experimental - zestaw eksperymentalnych reguł;

exploit - programy maj ˛

ace na celu wykorzystywanie bł˛edów w oprogramowaniu;

icmp-info, icmp - komunikaty ICMP z ró ˙znych programów, testuj ˛

acych ruch;

imap, pop2, pop3, smtp - ataki na systemy pocztowe;

info - próby logowania na usługi Telnet, Ftp;

local - zestaw własnych reguł;

misc - ró ˙zne, dotycz ˛

ace usług CVS, MS Terminal, BOOT, UPnP itd.;

multimedia - strumienie audio, wideo;

mysql, sql, oracle - ataki na znane serwer baz danych;

netbios - anomalia zwi ˛

azane z protokołem Netbios/SMB;

nntp - ataki na serwer grup dyskusyjnych;

other-ids - działalno´s´c innych systemów IDS;

p2p - aktywno´s´c programów Peer to Peer;

193

background image

Rozdział 12. Usługi dost˛epne w PLD

policy - próby ataków na usługi policy ftp itp.

porn - aktywno´s´c stron pornograficznych;

rpc - ataki na usługi Remote Procedure Call;

finger, rservices, telnet - ataki na do´s´c słabo zabezpieczone usługi uniksowe: finger,
rlogin, rsh, rexec, telnet;

scan - ró ˙znego rodzaju techniki skanowania portów;

shellcode - wykorzystanie nieprawidłowego kodu do prób przepełnienia bufora;

snmp - ataki na usługi SNMP;

tftp, ftp - zdarzenia zwi ˛

azane z przesyłaniem plików poprzez serwer ftp;

virus - transfer poczty z podejrzanym zał ˛

acznikiem;

web-attacks, web-misc, web-client, web-cgi, web-php, web-coldfusion, web-frontpage, web-
iis - ataki na ró ˙znego typu serwery WWW, przewa ˙znie z wykorzystaniem bł˛edów
w skryptach cgi, php;

x11 - aktywno´sci sesji serwera XFree86.

Aktualizacja reguł

Do aktualizacji sygnatur posłu ˙zy nam perlowy skrypt Oinkmaster

28

. Ma on du ˙ze

mo ˙zliwo´sci które pozwalaj ˛

a w prosty sposób zarz ˛

adza´c regułami Snorta. Wymagane

pakiety do uruchomienia to: perl, perl-base, perl-modules i vixie-cron albo hc-cron .

Instalacja Oinkmaster

´Sci ˛agamy archiwum tar, rozpakowujemy, skrypt wgrywamy do katalogu

/usr/local/bin

,

a konfig do

/etc

:

# wget --passive-ftp \
ftp://ftp.it.su.se/pub/users/andreas/oinkmaster/oinkmaster-1.0.tar.gz
# tar -zxvpf oinkmaster-1.0.tar.gz
# cp oinkmaster-1.0/oinkmaster.pl /usr/local/bin/
# cp oinkmaster-1.0/oinkmaster.conf /etc/

Operacja aktualizacji odbywa si˛e po nast˛epuj ˛

acej sekwencji komend:

# /usr/local/bin/oinkmaster.pl -o /etc/snort/rules/

Dodanie innego ´zródła reguł:

# /usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ -q -u \
http://www.bleedingsnort.com/bleeding.rules.tar.gz

Aby aktualizacja odbywała si˛e automatycznie, w katalogu

/etc/cron.daily

two-

rzymy plik

uprules

.

# touch /etc/cron.daily/uprules
# chmod 700 /etc/cron.daily/uprules

194

background image

Rozdział 12. Usługi dost˛epne w PLD

I dodajemy do niego nast˛epuj ˛

ac ˛

a zawarto´s´c, podaj ˛

ac adres e-mail na który ma zosta´c

wysłany raport z codziennej aktualizacji je´sli pojawia si˛e co´s nowego:

TMP=‘mktemp /tmp/oinkmaster.XXXXXXXX‘ &&
(/usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ \

-q > $TMP 2>&1;

if [ -s $TMP ]; then mail -s "Update Snort Rules" root@twoja_domena < $TMP; fi;
rm $TMP)

# dodatkowy zestaw regul Bleeding Snort - http://www.bleedingsnort.com
TMP=‘mktemp /tmp/oinkmaster.XXXXXXXX‘ &&
(/usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ -q -u \
http://www.bleedingsnort.com/bleeding.rules.tar.gz > $TMP 2>&1;
if [ -s $TMP ]; then mail -s "Update Bleeding Rules" \

root@twoja_domena < $TMP; fi; rm $TMP)

/etc/rc.d/init.d/snort restart

Warto przyj ˙ze´c si˛e bli ˙zej ciekawym funkcjonalno´sciom oinkmastera. W pliku kon-
figuracyjnym mamy mo ˙zliwo´s´c wył ˛

aczania poszczególnych regułek po nr sid, do-

dawania do nich własnych modyfikacji itp. Wtedy jest pewno´s´c ˙ze po aktualizacji,
nasze zmiany w plikach reguł nie b˛ed ˛

a nadpisywane.

Architektura Snorta

Snort jest logicznie podzielony na kilka komponentów, które współpracuj ˛

a ze sob ˛

a

by wykrywa´c ataki i generowa´c wyniki w odpowiednim formacie. Głównymi skład-
nikami systemu s ˛

a: dekoder pakietów (sniffer), preprocesory, silnik detekcji i moduł

wyj´sciowy.

W swej najprostszej formie Snort mo ˙ze działa´c jako sniffer. Przechwytuje pakiety z
warstwy ł ˛

acza danych za pomoc ˛

a biblioteki pcap. Rozpoznaje ró ˙zne protokoły mo-

delu OSI - Ethernet, 802.11, Token Ring oraz wiele protokołów działaj ˛

acych w wy ˙z-

szych warstwach jak: IP, TCP, UDP i ICMP. Surowe pakiety z warstwy ł ˛

acza danych

(np. ramki Ethernetowe) po zdekodowaniu w ˛

adruj ˛

a do preprocesorów (warstwa

transportowa), gdzie s ˛

a testowane i w razie konieczno´sci obrabiane na potrzeby silni-

ka detekcji (warstwa sesji). Tam dokonywana jest analiza pakietów pod k ˛

atem zbio-

ru zadanych reguł. Nast˛epnie po wykryciu próby ataku b ˛

ad´z anomalii sieciowych,

system przekazuje odpowiednie dane do modułu wyj´sciowego, który to decyduje o
zapisaniu wyniku wykrycia w logach lub wszcz˛eciu alarmu.

Tryby pracy

Snort umo ˙zliwia du ˙z ˛

a swobod˛e konfiguracji, za pomoc ˛

a wielu parametrów, które po-

zwalaj ˛

a kontrolowa´c trzy podstawowe tryby pracy programu: sniffer, packet logger

i network intrusion detection.

Sniffer Mode - wychwytuje wszystkie pakiety w danym segmencie sieci i przed-
stawia ich zawarto´s´c na ekranie. Najprostszym sposobem u ˙zycia tego trybu jest
uruchomienie programu z parametrem

-v

w wyniku, czego Snort b˛edzie wy´swiet-

la´c informacje o nagłówkach IP, TCP/UDP/ICMP. Do uzyskania bardziej szczegółowych

195

background image

Rozdział 12. Usługi dost˛epne w PLD

danych o wychwyconych pakietach, słu ˙z ˛

a parametry

-d

(aby monitorowa´c ładunek

pakietów) i

-e

(dodatkowe nagłówki warstwy ł ˛

acza danych). Parametry mo ˙zna

ł ˛

aczy´c razem, bez znaczenia jest ich kolejno´s´c (np. snort -ved). Aby zako ´nczy´c

prac˛e w tym trybie nale ˙zy u ˙zy´c sekwencji klawiszy CTRL+C.

Packet Logger Mode - logowanie pakietów poprzez zapis na dysku. Czynno´s´c ta
odbywa si˛e po u ˙zyciu opcji

-l

, któr ˛

a wskazujemy katalog, gdzie Snort b˛edzie za-

pisywa´c w odpowiednio nazwanych podkatalogach i plikach, zawarto´s´c zebranych
pakietów. Program potrafi tak ˙ze zapisywa´c dane w formie binarnej tak jak robi to
znany sniffer tcpdump. Słu ˙zy do tego opcja

-b

, po jej u ˙zyciu nie trzeba stosowa´c

dodatkowych kombinacji parametrów

-ved

, poniewa ˙z format tcpdump, okre´sla

to, co ma by´c logowane (np. snort -b -l ./log). Uzyskane w ten sposób informa-
cje, mo ˙zna wykorzysta´c do pó´zniejszej analizy za pomoc ˛

a programów rozpoznaj ˛

a-

cych format binarny tcpdump (np. Ethereal). Oczywi´scie mo ˙zna t ˛

a sam ˛

a czynno´s´c

wykona´c z wykorzystaniem Snorta, u ˙zywaj ˛

ac opcji

-r

, po czym przetworzy´c sczy-

tane pakiety dost˛epnymi trybami. Snort czytaj ˛

ac swoje dzienniki (tak samo działa-

j ˛

ac w trybie sniffera) przyjmuje parametry w formacie BPF (Berkeley Packet Filter),

dzi˛eki którym mo ˙zemy sprecyzowa´c (na podstawie nagłówków), jakie konkretnie
pakiety chcemy obserwowa´c (np. okre´sli´c adres hosta, protokół, port). Je´sli np. in-
teresuje nas tylko ruch na porcie 80 mo ˙zna uruchomi´c Snorta poleceniem: snort
-r /var/log/snort/snort.log

port www, je´sli chcemy wy´swietli´c tylko odpowiedzi

serwera www: snort -vde src port www. Aby ignorowa´c cały ruch z sieci np.
192.168.1.0 na port 80: snort -vde not ( src net 192.168.1 and dst port 80). Poł ˛

acze-

nie Snorta z filtrami BPF znacznie zwi˛eksza wydajno´s´c całego systemu, gdy ˙z fil-
trowanie BPF odbywa si˛e w warstwie ł ˛

acza danych (a wi˛ec na poziomie biblioteki

pcap). Okre´slaj ˛

ac w ten sposób, jakie pakiety nas interesuj ˛

a (lub jakie chcemy zig-

norowa´c) mo ˙zna do´s´c dokładnie "zaw˛ezi´c" obszar poszukiwa ´n. Filtry BPF mo ˙zna
równie ˙z zapisa´c w oddzielnym pliku i załadowa´c w trakcie uruchamiania Snorta
parametrem

-F

: snort -r snort.log -F plik_z_bdf. Wi˛ecej na temat mo ˙zliwo´sci ofer-

owanych przez BPF mo ˙zna poczyta´c na stronach podr˛ecznika zarówno Snorta, jak
i Tcpdump.

Network Intrusion Detection Mode - sieciowy system wykrywania włama ´n. Jest na-
jbardziej skomplikowanym trybem działania programu. Za pomoc ˛

a parametru

-c

,

wskazujemy plik konfiguracyjny, w którym okre´slane s ˛

a zasady badania przech-

wyconego ruchu sieciowego, ustawienia preprocesorów, a tak ˙ze zestaw sygnatur
ataków. Aby program działał w tle jako demon, nale ˙zy u ˙zy´c opcji

-D

(np. snort

-d -D -c snort.conf

). Reszta operatorów i ich opisy, jakie mo ˙zna wykorzysta´c przy

starcie programu, przedstawia parametr

-h

.

Preprocesory

Preprocesory zostały wprowadzone do Snorta w wersji 1.5. Pozwalaj ˛

a u ˙zytkowni-

kom i programistom w prosty sposób na rozbudow˛e funkcjonalno´sci całego systemu
poprzez pisanie dodatkowych modułów (ang. plugins).

Preprocesory analizuj ˛

a pakiety przed wykorzystaniem ich przez silnik detekcji. W

ten sposób zwi˛ekszaj ˛

a mo ˙zliwo´sci całego procesu wykrywania ataków sieciowych,

wzbogacaj ˛

ac go o zdolno´s´c składania (reasemblacji) pakietów, wykonywania specy-

ficznych dla poszczególnych protokołów operacji (np. konwersja na ASCII znaków
z URI zakodowanych szesnastkowo, usuwanie ci ˛

agów binarnych z sesji FTP czy Tel-

196

background image

Rozdział 12. Usługi dost˛epne w PLD

net, normalizacja ˙z ˛

ada ´n RPC), jak i wykrywania niezgodno´sci z tymi protokołami.

Poni ˙zej pokrótce opiszemy standardowy zestaw preprocesorów wchodz ˛

acych w skład

darmowej dystrybucji Snorta w wersji 2.1.3.

Frag2 - defragmentuje i normalizuje dane przychodz ˛

ace w postaci fragmentów,

co utrudnia ukrywanie ataków prowadzonych za pomoc ˛

a nieprawidłowo sfrag-

mentowanych pakietów IP. W tym celu wykorzystuje ustalony przez u ˙zytkown-
ika bufor pami˛eci, w której przez okre´slony czas przetrzymuje do badania paki-
ety z tablicy stanów poł ˛

acze ´n. Im wi˛eksza liczba sfragmentowanych pakietów

tym wymagany jest wi˛ekszy bufor. Defragmentacja, układaj ˛

ac datagramy IP w

jedn ˛

a cało´s´c, ułatwia dalsz ˛

a analiz˛e danych poprzez pozostałe preprocesory i sil-

nik detekcji. Frag2 umo ˙zliwia wychwytywanie znanych ataków wykorzystuj ˛

acych

zniekształcenia fragmentów pakietów np. teardrop, fragroute.

Stream4 - rozwija model detekcji oparty na testowaniu pojedynczych pakietów
umo ˙zliwiaj ˛

ac ´sledzenie sesji (stanu poł ˛

aczenia) TCP i składanie (reasemblacji) stru-

mieni TCP, co nie byłoby mo ˙zliwe w mechanizmie opartym na wyszukiwaniu
wzorców. Na tym poziomie działa tak ˙ze wykrywanie niektórych prób skanowa-
nia portów, gdzie wymagane jest notowanie prób ł ˛

aczenia si˛e z poszczególnymi

usługami w okre´slonych odst˛epach czasu oraz wykrywanie prób oszukania Snorta
za pomoc ˛

a narz˛edzi takich, jak np. Stick lub Snot, które generuj ˛

a pojedyncze (niew-

chodz ˛

ace w skład poprawnych sesji TCP) pakiety maj ˛

ace za zadanie zala´c mech-

anizm detekcji mas ˛

a fałszywych alarmów (s ˛

a to pakiety budowane na losowo

wybranych sygnaturach). Snort broni si˛e przed takimi technikami wykorzystuj ˛

ac

stream4 preprocesor - losowe pakiety s ˛

a do´s´c łatwo identyfikowane (i ignorowane),

poniewa ˙z nie nale ˙z ˛

a do prawidłowej sesji TCP. Stream4 wychwytuje próby skanowa-

nia technikami: stealth, null, xmas, fin; wykrywanie systemu operacyjnego - finger-
print i inne anomalia zwi ˛

azane z protokołem TCP.

Flow i Flow-Portscan - posiada mechanizm ´sledzenia poł ˛

acze ´n, zapisuj ˛

ac cało´s´c do

tablicy stanów w celu dalszego przetwarzania. Na tej podstawie flow-portscan
wykrywa próby skanowania w bardziej wyrafinowany sposób ni ˙z preprocesory
stream4 i portscan. Celem wykrywania, s ˛

a skany z jednego hosta do wielu i z

jednego hosta na wiele portów. Flow-portscan prowadzi statystyki na podstawie
punktacji ró ˙znych rodzajów poł ˛

acze ´n, np. je´sli jaka´s usługa jest popularna i na jej

port przychodzi du ˙zo zapyta ´n, jednocze´snie dostaje najmniej punktów w ogólnej
skali. Preprocesor posiada bardzo wiele opcji za pomoc ˛

a, których reguluje si˛e skale

punktacji, rozmiary tablicy wyników, tolerancj˛e niepowtarzalno´sci zdarze ´n itp.

HTTP Inspect - jest ogólnym dekoderem protokołu HTTP na poziomie warstwy ap-
likacyjnej. Za pomoc ˛

a ustalonego bufora wynajduje odpowiedni ˛

a składnie HTTP i

j ˛

a normalizuje. HTTP Inspekt działa w obydwu trybach jednocze´snie: client requests

(pol. zapytania klienta) i server responses (pol. odpowiedzi serwera). Mnoga liczba
dost˛epnych opcji w konfiguracji preprocesora, umo ˙zliwia dostosowanie ustaw-
ie ´n do konkretnego typu serwera WWW. Głównymi zadaniami http_inspect jest
przetwarzanie adresów URI, konwertuj ˛

ac na ASCII znaki zakodowane w postaci

szesnastkowej. Utrudnia to ukrycie ataku przed modułem wykrywaj ˛

acym syg-

natury ataków przez zakodowanie typowych sekwencji. Dekoduje tak ˙ze znaki za-
kodowane jako Unicode, oraz wykrywa nielegalne kodowania, wykorzystywane
m.in. w ostatnich dziurach MS IIS.

197

background image

Rozdział 12. Usługi dost˛epne w PLD

Portscan Detector - wykrywa próby skanowania portów, polegaj ˛

ace na przekrocze-

niu pewnej progowej liczby prób poł ˛

acze ´n z ró ˙znymi portami w okre´slonym przedziale

czasu. Ze wzgl˛edu na brak mo ˙zliwo´sci unikni˛ecia fałszywych alarmów w typowych
przypadkach (np. obci ˛

a ˙zony serwer DNS), istnieje mo ˙zliwo´s´c wył ˛

aczenia alar-

mów wzbudzanych przez okre´slone adresy IP u ˙zywaj ˛

ac dodatkowego procesora

portscan-ignorehosts. Pozwala tak ˙ze, zapisa´c wyniki w oddzielnym pliku dzien-
nika.

Telnet Decode - usuwa z sesji TELNET i FTP binarne ci ˛

agi mog ˛

ace utrudni´c wyszuki-

wanie z udziałem sygnatur ataków.

RPC Decode - normalizuje ˙z ˛

adania po protokole RPC, utrudniaj ˛

ac ukrywanie pode-

jrzanych pakietów za pomoc ˛

a mniejszych operacji.

Back Orifice detektor - wyszukuje w pakietach UDP próby poł ˛

acze ´n konia troja ´nskiego

Back Orifice i próbuje złama´c zabezpieczaj ˛

ace je słabe kodowanie.

Arpspoof - wykrywa podejrzane pakiety ARP, mog ˛

ace sygnalizowa´c próby ARP

spoofingu.

Performance Monitor - udost˛epnia wszelkiego rodzaju statystyki liczbowe, odno´snie
ilo´sci przeanalizowanych pakietów, zu ˙zycia procesora itp. Cało´s´c wy´swietlana jest
na ekranie konsoli lub zapisywana do pliku, wg ustalonych wcze´sniej warto´sci.

Zarówno preprocesory, jak i mechanizm detekcji mog ˛

a zareagowa´c w okre´slony spo-

sób. Po wychwyceniu pakietów, spełniaj ˛

acych warunki nadane konfiguracj ˛

a prepro-

cesorów lub regułami, podejmowane jest odpowiednie działanie (np. zapisanie pa-
kietów b ˛

ad´z alarm).

Moduł sygnatur

Główny mechanizm systemu detekcji zagro ˙ze ´n polega na dopasowaniu przetworzo-
nych pakietów i ich zrekonstruowanych strumieni z baz ˛

a sygnatur. System detek-

cji porównuje cechy pakietu ze zbiorem reguł. Po dopasowaniu, zostaje podj˛eta od-
powiednia akcja. Do porównywalnych cech nale ˙z ˛

a atrybuty główne - adresy, porty

´zródłowe i docelowe oraz opcje pomocnicze: flagi TCP identyfikuj ˛

ace np. ˙z ˛

adania

zwi ˛

azane z WWW, ró ˙zne typy pakietów ICMP, opcje IP czy wreszcie sama tre´s´c pa-

kietu. Na razie w głównej cz˛e´sci reguł mo ˙zliwe jest ´sledzenie protokołów IP, ICMP,
TCP i UDP. Autorzy przewiduj ˛

a rozszerzenie Snorta o nast˛epne protokoły sieciowe,

m.in. IPX, GRE, czy protokoły wymiany informacji mi˛edzy routerami - RIP, OSPF
oraz IGRP.

Reguły identyfikowania ataku pozwalaj ˛

a na podj˛ecie pi˛eciu rodzajów akcji: prze-

puszczenia pakietu (pass), zapisania informacji do dziennika (log), ogłoszenia alar-
mu (alert), alarmowania i podj˛ecia do działania innej dynamicznej reguły (activate) i
pozostanie w spoczynku do czasu aktywowania przez reguł˛e activate, po czym dzia-
łanie jako reguła log (dynamic).

Sygnatury Snorta zazwyczaj składaj ˛

a si˛e z dwóch głównych sekcji - nagłówka i ciała

(tre´sci). Nagłówek okre´sla m.in., jak ˛

a akcj˛e nale ˙zy podj ˛

a´c po przypasowaniu regu-

ły, informacje o wykorzystanym protokole, adresy b ˛

ad´z porty ´zródłowe i docelowe.

Ciało reguły pozwala rozwin ˛

a´c informacje zawarte w nagłówku, tu tak ˙ze podaje si ˛

a

tre´s´c wzbudzanych alarmów i ró ˙znego rodzaju informacje dodatkowe (np. odnie-

198

background image

Rozdział 12. Usługi dost˛epne w PLD

sienia do bazy z opisami danego naruszenia, tzw. referencje - Bugtraq

29

, CERT

30

czy

CVE

31

).

Najprostsze sygnatury obejmuj ˛

a wskazanie akcji, protokołu, kierunku, adresów i

portów b˛ed ˛

acych przedmiotem obserwacji, jak np. poni ˙zsza reguła, stanowi ˛

aca re-

akcj˛e na prób˛e skorzystania z usługi pop3 (port 110):

log tcp any any -> 192.168.1.0/24 110

W sygnaturach mo ˙zna umieszcza´c zmienne zdefiniowane jako adresy sieci (wg CIDR)
lub porty zapisane w pliku konfiguracyjnym

snort.conf

:

log tcp $EXTERNAL_NET -> $HOME_NET 110

W podanych powy ˙zej regułach wykorzystany był jednokierunkowy operator "->". J˛e-
zyk sygnatur umo ˙zliwia zadeklarowanie reguły, który dopasuje pakiety poruszaj ˛

ace

si˛e w obu stronach operatorem dwukierunkowym "<>", np.:

alert tcp any any <> $HOME_NET 23

Do zasadniczej cz˛e´sci reguły mo ˙zna doda´c ograniczone okr ˛

agłymi nawiasami pole

opcjonalne (tzw. ciało), zawieraj ˛

ace definicj˛e bardziej zło ˙zonych i wyrafinowanych

działa ´n zwi ˛

azanych z przej˛eciem danego pakietu. U ˙zytkownik mo ˙ze tak ˙ze sformu-

łowa´c własny komunikat, np.:

log tcp $EXTERNAL_NET -> $HOME_NET 110 \

("msg: Proba polaczenia z pop3";)

Podj˛ete działania nie musz ˛

a by´c ograniczone do pojedynczej czynno´sci. ´Srednik se-

paruje deklaracje poszczególnych działa ´n, jak w poni ˙zszym przykładzie, w którym
opcj ˛

a content testowana jest tre´s´c przesyłanego strumienia TCP, a w razie odnotowa-

nia podejrzanego ci ˛

agu znaków generowany jest odpowiedni komunikat:

alert tcp any any -> 192.168.1.0/24 80 (content: "/cgi-bin/phf"; \

msg: "PHF probe!";)

Opcji

content

mo ˙zna u ˙zy´c nawet kilka razy w jednej regule. Pozwala to na wyszu-

kiwanie wielu ró ˙znych ci ˛

agów znaków w obr˛ebie przesyłanych tre´sci.

Warto nadmieni´c, i ˙z do przeszukania tre´sci pakietów i reasemblowanych strumie-
ni u ˙zywany jest obecnie najbardziej efektywny algorytm - Boyera-Moore’a, którego
wydajno´s´c ro´snie wraz z długo´sci ˛

a poszukiwanych ci ˛

agów. Mo ˙zliwo´s´c rekonstrukcji

całych strumieni transmisji TCP, wgl ˛

adu w warstw˛e aplikacyjn ˛

a i efektywne wyszu-

kiwanie tre´sci pozwala na walk˛e przy u ˙zyciu Snorta równie ˙z z zainfekowanymi za-
ł ˛

acznikami elektronicznych listów. Oprócz przeszukiwania tre´sci pakietów mo ˙zemy

bada´c pod ró ˙znymi k ˛

atami ich nagłówki, m.in. pola i kody ICMP, pole TTL, rozmiary

fragmentacji czy numery sekwencji.

Bardzo siln ˛

a konstrukcj ˛

a w regułach Snorta jest mo ˙zliwo´s´c aktywowania kolejnych

reguł po pierwszym dopasowaniu. Konstrukcja ta nosi nazw˛e activate/dynamic ru-
les i wygl ˛

ada w nast˛epuj ˛

acy sposób:

activate tcp any any -> $HOME_NET 143 (flags: PA; content: \
"|E8C0FFFFFF|bin|;activates: 1; msg: "IMAP buffer overflow!";)
dynamic tcp any any -> $HOME_NET 143 (activated_by: 1; count: 50;)

199

background image

Rozdział 12. Usługi dost˛epne w PLD

Opcje

activates

i

activated_by

wi ˛

a ˙z ˛

a reguły

activate

i

dynamic

. W powy ˙zszym

przykładzie wykrycie ataku typu buffer overflow na serwer IMAP powoduje uru-
chomienie kolejnej, dynamicznej reguły, która zbiera tre´s´c nast˛epnych 50 pakietów
(opcja count) w celu pó´zniejszej analizy. Druga opcja w reguły dynamicznej jest ob-
ligatoryjna - reguła zawieraj ˛

aca wył ˛

acznie opcj˛e dowi ˛

azania do innej, macierzystej

konstrukcji jest bezu ˙zyteczna.

Nast˛epne godne uwagi parametry, to

resp

i

react

wspieraj ˛

a mechanizm elastycz-

nego reagowania na atak. Opcja

resp

mo ˙ze doprowadzi´c do zerwania poł ˛

aczenia,

np. poprzez wysłanie do atakuj ˛

acego komunikatu ICMP o niedost˛epno´sci trasy do

zaatakowanego komputera, natomiast

react

słu ˙zy do blokowania dost˛epu do usług

zwi ˛

azanych z WWW.

Ciekawe projekty

Nessus

32

- sieciowy tester bezpiecze ´nstwa, przydatny do okre´slania skuteczno´sci

skonfigurowanego przez nas Snorta.

SnortALog

33

- skrypt Perlowy pozwalaj ˛

acy na generowanie ró ˙znego rodzaju ra-

portów, grafów i statystyk. Korzystaj ˛

ac z logów Snorta, format wygenerowanych

raportów mo ˙ze stanowi´c plik tekstowy, HTML, a nawet PDF.

Snort Inline

34

- poprawka dla Snorta, umo ˙zliwiaj ˛

aca współprace z regułami fire-

walla IPtables, stosowanego w systemach opartych na j ˛

adrze Linux. Specjalnie

sformułowane sygnatury Snorta, reaguj ˛

a na atak i blokuj ˛

a b ˛

ad´z przekierowuj ˛

a za

pomoc ˛

a ´sciany ogniowej drog˛e pakietów pochodz ˛

acych od intruza.

SnortSam

35

- jest to zestaw pluginów do Snorta pełni ˛

acych podobn ˛

a funkcje jak

Snort Inline, ale wspomagaj ˛

aca wi˛eksz ˛

a liczb˛e ró ˙znego rodzaju zapór ogniowych

(m.in. Checkpoint Firewall-1, Cisco PIX, Cisco Routers z ACL, Netscreen, IP Filter
dla *BSD, Linux IPchains, Linux IPtables, WatchGuard Firebox).

FLoP

36

- projekt ma na celu, przyspieszenie logowania w procesie wykrywania

włama ´n. Do tego wykorzystuje odpowiednie bufory i mo ˙zliwo´s´c szybkiego zapisu
przez gniazdo unixowe do baz danych MySQL i PostgreSQL. Bardzo przydatne
narz˛edzie przy pracy w sieciach o du ˙zej przepustowo´sci.

Przypisy

1. http://eu.org

2. http://www.kom.pl

3. http://www.one.pl

4. http://www.afraid.org

5. http://www.changeip.com

6. http://domeny.onet.pl

7. http://nask.pl

200

background image

Rozdział 12. Usługi dost˛epne w PLD

8. http://www.beep.pl

9. http://www.go-daddy.com

10. http://joker.com

11. http://freedns.sgh.waw.pl

12. http://www.ietf.org/rfc/rfc1035.txt

13. http://www.ordb.org/lookup/

14. http://www.ordb.org/lookup/rbls/?host=w.x.y.z

15. http://www.faqs.org/rfcs/rfc2616.html

16. http://httpd.apache.org/docs-2.0/

17. #

18. #

19. #

20. #

21. http://www.postgresql.org/

22. http://pgsql.spsk1.pl/

23. http://pgsql.spsk1.pl/postgresql-faq.html

24. http://www.proftpd.org/docs/

25. http://www.proftpd.org/docs/

26. http://www.linuxprinting.org/

27. http://www.snort.org

28. http://oinkmaster.sourceforge.net/

29. http://www.securityfocus.com/bid

30. http://www.cert.org/

31. http://www.cve.mitre.org/

32. http://www.nessus.org/

33. http://jeremy.chartier.free.fr/snortalog/

34. http://snort-inline.sf.net/

35. http://www.snortsam.net/

36. http://www.geschke-online.de/FLoP/

201

background image

Rozdział 12. Usługi dost˛epne w PLD

202

background image

Rozdział 13. X-Window

Rozdział opisuje konfiguracj˛e ´srodowiska graficznego.

Konfiguracja serwera X-Window

Wst ˛ep

Instalacja ´srodowiska Xwindow jest jednym z elementów systemu, w którym uwi-
dacznia si˛e jedna z głównych cech PLD - modularno´s´c. O tym powiniene´s pami˛eta´c
drogi czytelniku. Pomog˛e Ci w tym rozdziale przy doborze pakietów oraz po pokrót-
ce przedstawi˛e zestawienie dost˛epnych w dystrybucji sterowników kart graficznych.

Zestawienie obsługiwanego sprz ˛etu.

Po ni ˙zej zamie´sciłem tabelk˛e z w której s ˛

a nazwy pakietów wraz z krótkim opisem.

Tabela 13-1. Lista sterowników

Nazwa pakietu

Opis

X11-driver-apm

Sterownik do kart Alliance Promotion

X11-driver-ark

Sterownik do kart Ark Logic

X11-driver-ati

Sterownik do kart ATI

X11-driver-chips

Sterownik do kart na układach Chips

and Technologies

X11-driver-cirrus

Sterownik do kart Cirrus Logic

X11-driver-cyrix

Sterownik do grafiki na układzie Cyrix

MediaGX

X11-driver-firegl

Sterowniki do kart graficznych ATI

Radeon 8500, 9700, Mobility M9 oraz
graficznych akceleratorów FireGL
8700/8800, E1, Z1/X1.

X11-driver-glide

Sterownik do kart Voodoo1 i Voodoo2

firmy 3Dfx

X11-driver-glint

Sterownik do kart GLINT i Permedia

X11-driver-i128

Sterownik do kart Number 9 I128

X11-driver-i740

Sterownik do kart na układzie Intel i740

X11-driver-i810

Sterownik do grafiki na układach Intel

i810/i815/i830

X11-driver-mga

Sterownik do kart Matrox

X11-driver-neomagic

Sterownik do kart NeoMagic

203

background image

Rozdział 13. X-Window

Nazwa pakietu

Opis

X11-driver-nsc

Sterownik dla kart na układach z

rodziny GEODE firmy National
Semiconductors. Obsługuje GXLV
(układ towarzysz ˛

acy 5530), SC1200,

SC1400 oraz GX2 (układ towarzysz ˛

acy

5535)

X11-driver-nv

Sterownik do kart na układach firmy

nVidia: Riva128, RivaTNT, GeForce

X11-driver-nvidia

Obsługuj ˛

a karty nVidia

TNT/TNT2/GeForce/Quadro do
serwera X11 4.0; Karty nVidia NV1 i
Riva 128/128ZX s ˛

a obsługiwane przez

sterownik nv z pakietów X11 - NIE s ˛

a

obsługiwane przez ten pakiet

X11-driver-r128

Sterownik do kart ATI Rage 128

X11-driver-radeon

Sterownik do kart ATI Radeon

X11-driver-rendition

Sterownik do kart Verite firmowanych

przez Rendition/Micron

X11-driver-s3

Sterownik do kart na układach S3 Trio

X11-driver-s3virge

Sterownik do kart na układach S3

ViRGE i Trio3D

X11-driver-savage

Sterownik do kart na układach S3

Savage

X11-driver-siliconmotion

Sterownik do kart na układach Lynx

firmy Silicon Motion

X11-driver-sis

Sterownik do kart na układach SiS

X11-driver-tdfx

Sterownik do kart 3Dfx: Voodoo

Banshee, Voodoo3, Voodoo4, Voodoo5.
Sterownik DRI wymaga pakietu
Glide_V3-DRI do kart Banshee lub
Voodoo3, a Glide_V5-DRI do kart
Voodoo4 lub Voodoo5

X11-driver-tga

Sterownik do kart TGA

X11-driver-trident

Sterownik do kart Trident

X11-driver-tseng

Sterownik do kart firmy Tseng Labs

X11-driver-via

Sterownik do kart VIA CLE266

Tak oto wygl ˛

ada sytuacja z kartami graficznymi w PLD. Jak wida´c ka ˙zda rodzina

układów graficznych jest wyodr˛ebniona w oddzielnym pakiecie. Wszystko po to, by
jak najlepiej dostosowa´c system do sprz˛etu, który mamy w komputerze.

204

background image

Rozdział 13. X-Window

Instalacja pakietów

Po lekturze tabeli z poprzedniego podrozdziału, mniej wi˛ecej jeste´smy zorientowani
jaki pakiet nale ˙zy zainstalowa´c. Dla osób, które nie wiedz ˛

a jaki sprz˛et maj ˛

a w kom-

puterze (co cz˛esto mo ˙ze si˛e zdarzy´c w przypadku starszego sprz˛etu) polecam u ˙zycie
polecenia lspci | grep VGA. Oto przykładowy wynik tego polecenia.

$ sudo lspci |grep VGA
01:00.0 VGA compatible controller: nVidia Corporation NV17 \

[GeForce4 440 Go] (rev a3)

$

Program lspci znajduje si˛e w pakiecie pciutils.

Jeste´smy ju ˙z gotowi aby przyst ˛

api´c do instalacji serwera X Window. Uruchamiamy

menad ˙zera pakietów poldek. Instalacj˛e mo ˙zemy rozpocz ˛

a´c od zainstalowania pod-

stawowego pakietu czyli X11. Program poldek zaznaczy wszystkie pakiety od któ-
rych X11 jest zale ˙zne. Zostaniemy poproszeni o dokonanie wyboru takiego jak poni-

˙zej.

There are more than one package which provide "login":

a) heimdal-login-0.6-8
b) login-2.12-9
Which one do you want to install? [b]

Wybieramy domy´slnie zaznaczony pakiet login naciskaj ˛

ac enter. Po dokonaniu wcze-

´sniej wspomnianego wyboru, nast˛epuje instalacja pakietu X11 wraz z wszystkimi za-

le ˙zno´sciami. Jako nast˛epny pakiet mo ˙zemy wybra´c X11-driver-nvidia. Po raz kolej-
ny poldek zaznaczy wymagane zale ˙zno´sci. Tym razem nie zostaniemy poproszeni o
dokonanie wyboru pakietów. Po zako ´nczeniu instalacji tego zestawu, mo ˙zemy przy-
st ˛

api´c do kolejnego. B˛edzie nim instalacja czcionek które b˛edziemy wykorzystywali.

Zacznijmy od pakietów oznaczonych jako ISO8859-2 oraz podstawowego zestawu
fontów.

poldek> install X11-fonts-*ISO8859-2-* X11-fonts

Jak wida´c poldek akceptuje maski. Zastosowanie takiej jak w przykładzie powy ˙zej
pozwoli na instalacj˛e czcionek takich jak chcieli´smy. Warto w tym miejscu wspo-
mnie´c, ˙ze PLD wyposa ˙zone jest w bogaty zestaw czcionek. Znajdziemy w pakietach
nie tylko czcionki z rodziny ISO, ale równie ˙z tak egzotyczne jak Etiopskie, Cyrylic˛e
czy Starosyryjskie. To jeszcze nie koniec procesu instalacji. Potrzebne nam b˛ed ˛

a jesz-

cze narz˛edzia dzi˛eki którym b˛edziemy mogli skonfigurowa´c X serwer. Znajdziemy
je w pakiecie X11-setup. Na tym zako ´nczymy faz˛e instalacji potrzebnych pakietów.
Mo ˙zemy przyst ˛

api´c do konfiguracji serwera X window.

Konfiguracja

Jest kilka sposobów konfiguracji serwera X. Zaczynaj ˛

ac od narz˛edzi trybu okienko-

wego, tekstowego, poprzez r˛eczn ˛

a edycj˛e pliku

xorg.conf

. Je ˙zeli jeste´s pocz ˛

atkuj ˛

a-

cym u ˙zytkownikiem linuksa, polecam Ci u ˙zycie któregokolwiek sposobu konfigura-
cji, przy u ˙zyciu interaktywnych narz˛edzi. Konfiguracj˛e przeprowadzamy jako root
przy u ˙zyciu programu xorgconfig.

205

background image

Rozdział 13. X-Window

Po uruchomieniu programu pojawi ˛

a si˛e pocz ˛

atkowe informacje na temat jego dzia-

łania. Naciskamy enter aby rozpocz ˛

a´c proces konfiguracji.

First specify a mouse protocol type. Choose one from the following list:
1.

Auto

2.

SysMouse

3.

MouseSystems

4.

PS/2

5.

Microsoft

6.

Busmouse

7.

IMPS/2

8.

ExplorerPS/2

9.

GlidePointPS/2

10.

MouseManPlusPS/2

11.

NetMousePS/2

12.

NetScrollPS/2

13.

ThinkingMousePS/2

14.

AceCad

Pierwszym krokiem jest wybór myszki. Drobna podpowied´z. Je ˙zeli u ˙zywasz myszki
na zł ˛

aczu RS232 wybierz "6". Posiadacze myszek PS/2 dwu lub trzy przyciskowych

wybieraj ˛

a "4". Pojawiła si˛e ostatnio opcja, pozwalaj ˛

aca na wybór myszek z tzw. rol-

k ˛

a. Pozycja numer "7" okre´sla ten typ myszek. Je ˙zeli na powy ˙zszym spisie figuruje

myszka której nazw˛e rozpoznajesz, mo ˙zesz skorzysta´c z tego i wybra´c odpowiedni ˛

a

pozycj˛e. Je ˙zeli ˙zadna z powy ˙zszych mo ˙zliwo´sci nie spełnia Twoich oczekiwa ´n, wy-
bierz auto. Pozwoli Ci to na pó´zniejsz ˛

a r˛eczn ˛

a konfiguracj˛e posiadanego urz ˛

adzenia.

Posiadacze laptopów wybieraj ˛

a "4".

If your mouse has only two buttons, it is recommended that you enable
Emulate3Buttons.

Please answer the following question with either ’y’ or ’n’.
Do you want to enable Emulate3Buttons?

Pytanie w powy ˙zszym przykładzie skierowane jest do posiadaczy myszek z dwo-
ma przyciskami. Musimy dokona´c wyboru, czy chcemy wł ˛

aczy´c emulacj˛e trzeciego

przycisku, czy te ˙z nie. Emulacja trzeciego przycisku myszy polega na przyci´sni˛eciu
obu przycisków na raz. Cz˛esto si˛e przydaje podczas wklejania fragmentów tekstu z
jednego do drugiego okienka. Mo ˙zna to porówna´c do posługiwania si˛e programem
gpm.

Now give the full device name that the mouse is connected to, for ex-
ample
/dev/tty00. Just pressing enter will use the default, /dev/mouse.

Mouse device:

Musimy teraz poda´c pełn ˛

a ´scie ˙zk˛e do urz ˛

adzenia, które b˛edzie obsługiwało nasz ˛

a

myszk˛e. Je ˙zeli nic tutaj nie wpiszemy, naci´sniemy tylko klawisz enter, system b˛edzie
szukał myszki pod urz ˛

adzeniem /dev/mouse. Oczywi´scie mo ˙zemy wła´snie w tym

miejscu poda´c pełn ˛

a ´scie ˙zk˛e do naszego urz ˛

adzenia. Opis urz ˛

adze ´n obsługuj ˛

acych

myszy znajdziesz w rozdziale po´swi˛econym konfiguracji

/etc/sysconfig

. Posiada-

cze laptopów mog ˛

a wpisa´c /dev/psaux.

206

background image

Rozdział 13. X-Window

description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)

1

Generic 101-key PC

2

Generic 102-key (Intl) PC

3

Generic 104-key PC

4

Generic 105-key (Intl) PC

5

Dell 101-key PC

6

Everex STEPnote

7

Keytronic FlexPro

8

Microsoft Natural

9

Northgate OmniKey 101

10

Winbook Model XP5

11

Japanese 106-key

12

PC-98xx Series

13

Brazilian ABNT2

14

Acer AirKey V

15

ACPI Standard

16

Advance Scorpius KI

Enter a number to choose the keyboard.

Press enter for the next page

Przechodzimy do wyboru klawiatury. Je ˙zeli posiadasz jeden z modeli wymienionych
na li´scie oczywi´scie mo ˙zesz go wybra´c. List˛e nale ˙zy przewija´c klawiszem enter. Je´sli
nie znajdziesz swojego modelu, mo ˙zesz wybra´c jeden z modeli Generic.

55

Norwegian

56

Ogham

57

Oriya

58

Polish

59

Polish (qwertz)

60

Portuguese

61

Romanian

62

Russian

63

Northern Saami (Finland)

64

Northern Saami (Norway)

65

Northern Saami (Sweden)

66

Serbian (Cyrillic)

67

Serbian (Latin)

68

Slovenian

69

Slovak

70

Slovak (qwerty)

71

Spanish

72

Swedish

Enter a number to choose the country.
Press enter for the next page

Podobnie jak w poprzednim kroku mamy i tutaj przewijan ˛

a list˛e wyboru. Słu ˙zy ona

do zdefiniowania układu klawiatury. Warto pami˛eta´c, ˙ze nie musisz przewija´c listy
w ˙zadnym przypadku, o ile znasz numery przypisane do interesuj ˛

acych Ci˛e pozycji.

Please enter a variant name for ’pl’ layout. Or just press enter
for default variant

207

background image

Rozdział 13. X-Window

Tutaj je´sli chcesz mo ˙zesz poda´c własn ˛

a nazw˛e układu klawiatury. Je´sli odpowiada

Ci ta, która jest proponowana, mo ˙zesz nacisn ˛

a´c enter.

Please answer the following question with either ’y’ or ’n’.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)?

Je ˙zeli chcesz, mo ˙zesz przypisa´c tutaj klawiszom jakie´s dodatkowe funkcje. Je´sli nie,
wybierz ’n’ i naci´snij klawisz enter aby przej´s´c do kolejnego kroku konfiguracji X
serwera.

Zajmiemy si˛e teraz konfiguracj ˛

a naszego monitora. Przyda si˛e w tej chwili specy-

fikacja dot. Twojego modelu. Je´sli jej nie posiadasz, mo ˙zesz skorzysta´c z gotowych
predefiniowanych warto´sci parametrów. Naciskamy enter i przechodzimy do kolej-
nego kroku.

It is VERY IMPORTANT that you do not specify a monitor type with a hor-
izontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.

hsync in kHz; monitor type with characteristic modes

1

31.5; Standard VGA, 640x480 @ 60 Hz

2

31.5 - 35.1; Super VGA, 800x600 @ 56 Hz

3

31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)

4

31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz

5

31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz

6

31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz

7

31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz

8

31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz

9

31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz

10

31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz

11

Enter your own horizontal sync range

Enter your choice (1-11):

Wa ˙zna informacja. Je ˙zeli nie jeste´s pewien co do warto´sci cz˛estotliwo´sci od´swie ˙zania
poziomego swojego monitora, wybierz warto´s´c wzgl˛ednie wypo´srodkowan ˛

a. S ˛

adz˛e,

˙ze z cał ˛

a pewno´sci ˛

a warto´sci zdefiniowane w punkcie "4" mog ˛

a odpowiada´c wi˛ek-

szo´sci monitorów. Natomiast je ˙zeli znasz parametry, wybierasz "11" i konfigurujesz
samodzielnie.

You must indicate the vertical sync range of your monitor. You can ei-
ther
select one of the predefined ranges below that correspond to industry-

standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).

1

50-70

2

50-90

3

50-100

4

40-150

5

Enter your own vertical sync range

208

background image

Rozdział 13. X-Window

Enter your choice:

Definiujemy teraz warto´s´c cz˛estotliwo´sci od´swie ˙zania pionowego. Podobnie jak po-
przednim razem mo ˙zesz skorzysta´c z kilku predefiniowanych warto´sci, lub na pod-
stawie danych swojego monitora wprowadzi´c warto´sci zgodne z jego specyfikacj ˛

a.

Je ˙zeli nie znasz go w ogóle, wybierz wzgl˛ednie niski przedział warto´sci.

The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition:

Je ˙zeli chcesz, mo ˙zesz Nada´c nazw˛e dla sekcji okre´slaj ˛

acej konfiguracj˛e Twojego mo-

nitora. Wprowadzenie pustego znaku nowego wiersza (enter) spowoduje wstawie-
nie domy´slnej nazwy.

Do you want to look at the card database?

Przyst˛epujemy teraz do konfiguracji karty graficznej. Na pytanie które widzimy po-
wy ˙zej musimy odpowiedzie´c naci´sni˛eciem klawisza ’y’. Wy´swietli nam si˛e baza ob-
sługiwanych kart graficznych. Jest ona tak samo indeksowana jak lista wyboru ukła-
du klawiatury.

342

Miro Crystal 40SV

S3 964

343

Miro Crystal 80SV

S3 968

344

Miro Crystal 8S

S3 801/805

345

Miro Crystal DVD

SiS6326

346

Miro MiroMedia 3D

S3 ViRGE

347

Miro MiroVideo 20TD

ET4000/W32(i/p)

348

Miro Video 20SV

S3 968

349

NVIDIA GeForce

GeForce

350

NeoMagic (laptop/notebook)

MagicGraph 128 series

351

Number Nine FX Motion 331

-

352

Number Nine FX Motion 332

S3 ViRGE

353

Number Nine FX Motion 531

S3 868

354

Number Nine FX Motion 771

S3 968

355

Number Nine FX Vision 330

-

356

Number Nine GXE Level 10/11/12

S3 928

357

Number Nine GXE Level 14/16

S3 928

358

Number Nine GXE64

S3 864

359

Number Nine GXE64 Pro

S3 964

Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

Wybieramy pozycj˛e "349" czyli NVIDIA GeForce. Poka ˙ze nam si˛e informacja pod-
sumowuj ˛

aca nasz wybór taka jak w przykładzie poni ˙zej.

Your selected card definition:

Identifier: NVIDIA GeForce
Chipset:

GeForce

Driver:

nvidia

Do NOT probe clocks or use any Clocks line.

Press enter to continue, or ctrl-c to abort.

209

background image

Rozdział 13. X-Window

Wygl ˛

ada na to, ˙ze wszystko si˛e zgadza. Mo ˙zemy kontynuowa´c proces. Zgodnie z

instrukcj ˛

a na dole naciskamy enter aby przej´s´c dalej. W kolejnym kroku zajmiemy

si˛e pami˛eci ˛

a karty graficznej.

How much video memory do you have on your video card:

1

256K

2

512K

3

1024K

4

2048K

5

4096K

6

8192K

7

16384K

8

32768K

9

65536K

10

131072K

11

262144K

12

Other

Enter your choice:

Je ˙zeli zdefiniowane tutaj warto´sci s ˛

a niewystarczaj ˛

ace, mo ˙zesz okre´sli´c samodzielnie

wielko´s´c pami˛eci Twojej karty graficznej wybieraj ˛

ac pozycj˛e "12".

Przechodz ˛

ac dalej zostaniemy poproszeni o podanie identyfikatora dla naszej karty

graficznej. Przyda nam si˛e to, kiedy spotkamy si˛e z potrzeb ˛

a r˛ecznej edycji pliku

konfiguracyjnego

/etc/X11/xorg.conf

.

Your card definition is NVIDIA GeForce.

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:

Wprowadzona nazwa mo ˙ze składa´c si˛e równie ˙z ze spacji, wielkiech i małych liter.
Mo ˙ze by´c zupełnie dowolna.

1

Change the modes for 8-bit (256 colors)

2

Change the modes for 16-bit (32K/64K colors)

3

Change the modes for 24-bit (24-bit color)

4

The modes are OK, continue.

Enter your choice:

Wybieramy gł˛ebi˛e kolorów. Zakładam, ˙ze u ˙zywałe´s ju ˙z wcze´sniej komputera i wiesz
co to za parametr. Wybieramy odpowiedni ˛

a opcj˛e i wykonujemy kolejny krok.

Select modes from the following list:

1

"640x400"

2

"640x480"

3

"800x600"

4

"1024x768"

5

"1280x1024"

6

"320x200"

7

"320x240"

8

"400x300"

210

background image

Rozdział 13. X-Window

9

"1152x864"

a

"1600x1200"

b

"1800x1400"

c

"512x384"

d

"1400x1050"

Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes?

Dla osób nie znaj ˛

acych j˛ezyka angielskiego drobny komentarz. Jak dobrze si˛e domy-

´slacie jest to lista trybów rozdzielczo´sci. Karta któr ˛

a konfigurujemy w tym przykła-

dzie obsługuje ich przynajmniej kilka. Ta lista umo ˙zliwia nam wybór kilku rozdziel-
czo´sci z których b˛edziemy korzysta´c. Je ˙zeli wpiszemy 432, wtedy nasz ˛

a domy´sln ˛

a

rozdzielczo´sci ˛

a b˛edzie 1024x768. Oprócz tej b˛edziemy mogli równie ˙z przeł ˛

acza´c na-

sz ˛

a kart˛e do rozdzielczo´sci 800x600 oraz 640x480.

Please answer the following question with either ’y’ or ’n’.
Do you want a virtual screen that is larger than the physical screen?

W tym miejscu musimy wybra´c ’n’, je´sli chcemy aby obraz mie´scił nam si˛e w obr˛ebie
ekranu. Po zatwierdzeniu zmian wracamy znowu do menu z gł˛ebi ˛

a kolorów. Tym

razem wybieramy pozycj˛e "4".

Please specify which color depth you want to use by default:

1

1 bit (monochrome)

2

4 bits (16 colors)

3

8 bits (256 colors)

4

16 bits (65536 colors)

5

24 bits (16 million colors)

Enter a number to choose the default depth.

Menu takie jak powy ˙zej słu ˙zy do wyboru domy´slnej gł˛ebi kolorów w której b˛edzie-
my pracowa´c. W przypadku naszej przykładowej karty mo ˙zemy wybra´c pozycj˛e "5".

I am going to write the xorg.conf file now. Make sure you don’t acci-
dently
overwrite a previously configured one.

Shall I write it to /etc/X11/xorg.conf?

To ju ˙z ostatni dialog z konfiguratorem. Komunikat ostrzega nas przed mo ˙zliwo´sci ˛

a

nadpisania istniej ˛

acego pliku konfiguracyjnego. Pyta si˛e czy zapisa´c bie ˙z ˛

ac ˛

a konfi-

guracj˛e do pliku:

/etc/X11/xorg.conf

. Wyra ˙zamy na to zgod˛e wpisuj ˛

ac ’y’.

Skonfigurowany X serwer to jeszcze nie wszystko. B˛edziesz potrzebował jeszcze za-
rz ˛

adc˛e okien. PLD Linux posiada bogaty wybór pakietów z ró ˙znymi WM (Window

Managers). Potrzebne opisy znajduj ˛

a si˛e w rozdziale po´swi˛econym Window Mana-

gerom.

211

background image

Rozdział 13. X-Window

Blackbox - Szybki i lekki zarz ˛

adca okien

Wst ˛ep

Blackbox jest lekkim mened ˙zerem okien dla XFree86. Jest napisany w C++, a jego
projekt zakładał wydajno´s´c, niskie u ˙zycie pami˛eci oraz brak zale ˙zno´sci od zewn˛etrz-
nych bibliotek. Blackbox zabiera bardzo niewiele miejsca na ekranie na dekoracje
okien. Mimo swojego minimalizmu, jest bardzo wygodny i funkcjonalny. Zawiera
wszystko, czego oczekuje si˛e od mened ˙zera okien - obsług˛e wirtualnych pulpitów,
okna typu sticky, zwijanie okien, okna pozbawione dekoracji. Posiada te ˙z pasek do-
kowania, zwany slitem, na którym mog ˛

a umieszcza´c si˛e aplety w stylu NEXTstep

(np. Window Maker, AfterStep) oraz okna w trybie withdrawn (np. gkrellm). Te ce-
chy sprawiły, ˙ze Blackbox stał si˛e całkiem popularny w´sród osób nie lubi ˛

acych prze-

ładowania towarzysz ˛

acego ´srodowiskom KDE i GNOME

Dzi˛eki swoim zaletom Blackbox stał si˛e na tyle znany, ˙ze wyp ˛

aczkowało z niego kilka

odmian z nowymi cechami. Nale ˙z ˛

a do nich Fluxbox, Openbox i Kahakai. Blackbox i

jego pochodne s ˛

a doskonałym wyborem, je´sli po ˙z ˛

adane jest oszcz˛edzanie pami˛eci i

niskie wykorzystanie procesora. S ˛

a te ˙z dobre dla tych, którzy wol ˛

a elegancj˛e ponad

nadmiar elementów, jaki wyst˛epuje w popularnych ´srodowiskach. My w tym opisie
zajmiemy si˛e instalacj ˛

a Blackbox.

Instalacja pakietów

Czas zainstalowa´c potrzebne nam pakiety.

# poldek -i blackbox vfmg xinitrc

Instalacja zajmuje bardzo mało czasu, poniewa ˙z jak ju ˙z wspomniane zostało wcze-

´sniej Blackbox jest bardzo mało wymagaj ˛

acy je ˙zeli chodzi o zasoby.

Konfiguracja

Teraz aby Blackbox był naszym domy´slnym menad ˙zerem okien nale ˙zy ustawi´c go w
pliku

/etc/sysconfig/desktop

# cat /etc/sysconfig/desktop
# PREFERRED can be GNOME, KDE or empty
# when left empty $DEFAULTWM will be started
PREFERRED=blackbox
DEFAULTWM=
# Default window manager to use. Should be basename of file from
# /etc/sysconfig/wmstyle/
WMSTYLE=

W tym momencie mamy ju ˙z skonfigurowanego Blackbox i w zasadzie mo ˙zna by go
ju ˙z uruchomi´c ale my skonfigurujemy sobie menu, aby było zgodne z zainstalowa-
nymi przez nas programami

W tym celu z pomoc ˛

a przyjdzie nam program vfmg, który ju ˙z wcze´sniej zainstalo-

wali´smy. Komendy które s ˛

a poni ˙zej nale ˙zy wykonywa´c w katalogu domowym ~/

212

background image

Rozdział 13. X-Window

# mkdir ~/.blackbox
# vfmg blackbox > .blackbox/menu

Mamy ju ˙z gotowe menu, ale nie ma w nim opcji "Wyj´scie", która jest niew ˛

atpliwie

przydatn ˛

a opcj ˛

a.

W

~/.blackbox/menu

nale ˙zy pod sam koniec dopisa´c "Wyj´scie" tak, aby 3 ostatnie

linijki wygl ˛

adały nast˛epuj ˛

aco:

# tail -3 ~/.blackbox/menu
[end]

[exit] (Wyj´

scie)

[end]

Dodatkowo nale ˙zy edytowa´c plik

~/.blackboxrc

i zmieni´c w nim linijk˛e session.menuFile

na:

# grep menu .blackboxrc
session.menuFile:

.blackbox/menu

Maj ˛

ac ju ˙z menu Blackbox mo ˙zemy go wreszcie uruchomi´c:

# startx

Aby wszystko poprawnie funkcjonowało nale ˙zy zapozna´c si˛e z działem "Konfigura-
cja ´srodowiska graficznego", który znajduje si˛e w dokumentacji PLD.

Fluxbox - Nast ˛epca BlackBoxa

Wst ˛ep

Młodszym bratem BlackBoxa jest Fluxbox, bazuj ˛

acy na kodzie 0.61.1 Blackboxa. Flu-

xbox wygl ˛

ada tak samo jak Blackbox, który korzysta z tych samych styli, kolorów,

poło ˙zenia okien i generalnie jest zachowana pełna kompatybilno´s´c z Blackboxem.

Jakie s ˛

a wi˛ec ró ˙znice? Odpowied´z brzmi: DU ˙ZE. Np:

Konfigurowalne taby okien

Pasek ikon (do zminimalizowanych okien)

Scroll myszki u ˙zywany do zmiany obszarów roboczych.

Wsparcie dla KDE i GNOME, a tak ˙ze rozsze ˙zone wsparcie dla WindowMakera.

i jeszcze wiele innych udogodnie ´n.

Instalacja pakietów

Czas zainstalowa´c potrzebne nam pakiety.

213

background image

Rozdział 13. X-Window

# poldek -i fluxbox fluxconf

Wła´sciwie do pracy potrzebny nam jest tylko fluxbox, ale fluxconf troch˛e ułatwia
konfiguracje.

Konfiguracja

Aby fluxbox był naszym domy´slnym menad ˙zerem okien w

.Xclients

dajemy wpis.

exec fluxbox

wygl ˛

ad menu mo ˙zna zmienia´c edytuj ˛

ac plik

~/.fluxbox/menu

Przykładowy wpis:

[begin] (Fluxbox)

[exec]

(aterm) {aterm -tr}

[exec] (Run) {fbrun }
[submenu] (Net)

[exec] (PSI) {psi}

[end]

[end]

Mo ˙zemy tak ˙ze automatycznie wygenerowa´c menu korzystaj ˛

ac z programu vfmg.

Instalujemy go poleceniem:

# poldek -i vfmg

Nast˛epnie wydajemy polecenia:

# mkdir ~/.fluxbox
# vfmg blackbox > ~/.fluxbox/menu

Mamy ju ˙z gotowe menu, ale nie ma w nim opcji "Wyj´scie", która jest niew ˛

atpliwie

przydatn ˛

a opcj ˛

a.

W

~/.fluxbox/menu

nale ˙zy pod sam koniec dopisa´c "Wyj´scie" tak, aby 3 ostatnie

linijki wygl ˛

adały nast˛epuj ˛

aco:

# tail -3 ~/.blackbox/menu
[end]

[exit] (Wyj´

scie)

[end]

Chc ˛

ac doda´c tło pulpitu mo ˙zemy si˛e posłu ˙zy´c np. programem dispalay z pakietu

ImageMagik. Instalujemy go:

# poldek -i ImageMagick

dodatkowo konieczne jest doinstalowanie modułów kodera dla plików np. jpeg, png
i tiff

# poldek -i ImageMagick-coder-jpeg-5.5.7.12-2 ImageMagick-coder-png-5.5.7.12-
2 ImageMagick-coder-tiff-5.5.7.12-2

214

background image

Rozdział 13. X-Window

nast˛epnie w pliki

~/.fluxbox/init

odszukujemy wpis:

session.screen0.rootCommand: i dodajemy: display -size ROZDZIELCOZ´

C -

window root NAZWA_PLIKU_Z_GRAFIKA

u mnie wpis ten wygl ˛

ada nast˛epuj ˛

aco:

session.screen0.rootCommand:

display -size 1024x768 \

-window root

~/DREAMVISIONS.jpg

I to by było wła´sciwie ju ˙z tyle, mo ˙zna ju ˙z uruchomi´c naszego menagera okien pole-
ceniem

# startx

215

background image

Rozdział 13. X-Window

216

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym
developerem PLD

Co jest potrzebne

Ka ˙zdego u ˙zytkownika Linuxa pracuj ˛

acego na swojej maszynie nachodziła refleksja

na tematy filozoficzne - kto to wymy´slił? kto to zrobił? i jak to zrobił? Pytania ciekawe
- Prezentuj ˛

ac sposób pracy przy PLD mo ˙zemy cz˛e´sciowo zrozumie´c mechanizmy

tworzenia takich projektów.

Naszym miejscem pracy b˛edzie samo PLD i dodatki, które poni ˙zej spróbuje opisa´c.
W chwili pisania tego tekstu była to wersja 1.0 ”Ra”. Pó´zniej jest ju ˙z z górki - insta-
lujemy par˛e pakietów - sam proces instalacji w praktycznie zostanie pomini˛ety, gdy ˙z
u ˙zytkownicy ju ˙z powinni wiedzie´c co to jest poldek i jak si˛e go u ˙zywa.

# rpm -qa |grep rpm
rpm-4.0.2-106
rpm-build-tools-4.0.2-106
rpm-utils-4.0.2-106
rpm-perlprov-4.0.2-106
rpm-build-4.0.2-106
rpm-devel-4.0.2-106
rpm-pythonprov-4.0.2-106

# rpm -qa |grep cvs
cvs-1.11.5-2

# rpm -qa |grep mc
mc-4.5.55-10

Zwróc˛e uwag˛e tylko na CVS. Sposób instalacji ´srodowiska

1

bardzo dobrze opisuje

Baseciq

2

- ten krok nale ˙zy wykona´c ze szczególn ˛

a staranno´sci ˛

a

Innym wa ˙znym pakietem jest rpm plus dodatki. Głównym zaj˛eciem szeregowego
developera jest tworzenie lub modyfikacja plików .spec, które s ˛

a głównym czynni-

kiem budowania pakietów RPM. S ˛

a jeszcze potrzebne ró ˙zne inne pakiety i ´zródła -

ale to ju ˙z w zale ˙zno´sci od tego co b˛edziemy budowa´c.

´

Zródła wiedzy

Najwi˛eksz ˛

a skarbnic ˛

a wiedzy o RPMie i budowaniu pakietów mo ˙zemy znale´z´c w

publikacji Maximum RPM

3

- opis jest w j˛ezyku angielskim i nie jest mi znane tłuma-

czenie na nasz j˛ezyk. Na szcz˛e´scie s ˛

a jeszcze inne ´zródełka, a tak ˙ze i niniejszy opis

- wi˛ec powinno nam by´c l ˙zej przyswaja´c wiedz˛e. Szczególnie polecam stron˛e Grze-
gorza Niew˛egłowskiego

4

(lub lokaln ˛

a kopie)

5

gdzie du ˙zo teorii i praktycznych rad

mo ˙ze nam rozja´sni´c w naszych głowach czym jest praca ze "specami".

Jest dost˛epny tak ˙ze opis stworzony przez Developera PLD

6

lecz z tego co si˛e dowie-

działem jest ju ˙z troch˛e leciwy i niektóre dane mog ˛

a by´c nie´scisłe.

217

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

Po tej bombie teorii jak ˛

a niestety musimy przej´s´c, czeka nas przestudiowanie jeszcze

jednego dokumentu, którego najnowsz ˛

a wersje mo ˙zemy ´sci ˛

agn ˛

a´c z CVS PLD. B˛edzie

to nasze pierwsze ´cwiczenie.

Uruchamiamy terminal (czy to zwykły, czy te ˙z np. przez SSH) i wykonujemy kroki:

$ cd rpm
$ cvs get PLD-doc/devel-hints-pl.txt
U PLD-doc/devel-hints-pl.txt
$

Jak wida´c kroki wykonujemy jako zwykły u ˙zytkownik (nie root) i tej zasady b˛edzie-
my si˛e konsekwentnie trzymali.

Do katalogu ~/rpm/PLD-doc/ ´sci ˛

agneli´smy z repozytorium PLD dokument tek-

stowy devel-hints-pl.txt

7

. W tym dokumencie zawarte s ˛

a zalecenia i ustalenia jakich

powinni´smy si˛e trzyma´c aby tworzy´c wła´sciwe dla PLD pakiety RPM.

Przykład budowania

Teraz spróbujemy ´sci ˛

agn ˛

a´c jaki´s .spec z CVS PLD i zbudujemy sobie jak ˛

a´s paczk˛e -

np. pakiet tar (przykład budowania ’ekg’ mogli´smy obejrze´c tak ˙ze podczas instalacji
CVS na stronie Baseciq

8

):

$ cd rpm
$ cvs get SPECS/tar.spec
U SPECS/tar.spec
$ cd SPECS/
$ rpmbuild -ba tar.spec
bł ˛

ad: File /home/users/marekc/rpm/SOURCES/tar-1.13.25.tar.gz: \

Nie ma takiego pliku ani katalogu

$ ./getsrc tar.spec
Trying to download sources for tar-1.13.25-7
Searching for file: tar-1.13.25.tar.gz
Trying CVS... OK
Searching for file: tar-non-english-man-pages.tar.bz2
Trying CVS... OK
Searching for file: tar-man_from_debian_tar_1.13.25-2.patch
Trying CVS... OK
Searching for file: tar-info.patch
Trying CVS... OK
Searching for file: tar-pipe.patch
Trying CVS... OK
Searching for file: tar-namecache.patch
Trying CVS... OK
Searching for file: tar-error.patch
Trying CVS... OK
Searching for file: tar-sock.patch
Trying CVS... OK
Searching for file: tar-nolibrt.patch
Trying CVS... OK
Searching for file: tar-man.patch
Trying CVS... OK
Searching for file: tar-ac25x.patch
Trying CVS... OK

218

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

Searching for file: tar-dots.patch
Trying CVS... OK
Searching for file: tar-pl.po-fix.patch
Trying CVS... OK
Download opreation completed: all files retrieved successfully

W przykładzie, za szybko chcieli´smy zbudowa´c pakiet - zaraz po ´sci ˛

agni˛eciu ”tar.spec”.

Sam .spec bez ´zródeł jest jak karabin bez amunicji... Mo ˙zna wykorzysta´c skrypt ’bu-
ilder’ (i pó´zniej nawet zalecam go u ˙zywa´c) w katalogu SPECS, który to sam przeana-
lizuje potrzeby i ´sci ˛

agnie odpowiedniego .speca (oczywi´scie je ˙zeli tylko zawiera go

repozytorium CVS), ´zródła i wykona paczki rpm i srpms - ale my nie b˛edziemy tutaj
sobie za bardzo ułatwia´c pracy :-)

Po ´sci ˛

agni˛eciu plików dobrze jest obejrze´c danego .speca aby zobaczy´c, co jest jesz-

cze potrzebne do zbudowania - mo ˙zna to zrobi´c zwykłym edytorem tekstowym lub
wykona´c:

$ cat tar.spec |grep BuildReq
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: gettext-devel

Wiemy ju ˙z co nam jest potrzebne - Teraz sprawdzimy czy mamy te pakiety w naszym
PLD:

$ rpm -q autoconf
autoconf-2.53a-1
$ rpm -q automake
automake-1.6.3-1
$ rpm -q bison
pakiet bison nie jest zainstalowany
$ rpm -q gettext-devel
pakiet gettext-devel nie jest zainstalowany
$

Czyli dwóch, potrzebnych pakietów brak. A wi˛ec ’poldek’ rusza do boju (tutaj ju ˙z
lepiej u ˙zy´c konta ’root’ - chyba ˙ze mamy poldka skonfigurowanego do pracy ’sudo’):

# poldek
Wczytywanie ftp://ftp.pld-linux.org/dists/[...]/RPMS/packages.dir.gz...
Wczytywanie ftp://ftp.pld-linux.org/dists/ra/[...]/packages.dir.gz...
Wczytywanie ftp://ftp.pld-linux.org/dists/ra/[...]/packages.dir.gz...
Wczytywanie ftp://ep09.kernel.pl/pub/People/[...]/packages.dir.gz...
Wczytywanie ftp://ftp.pld-linux.org/dists/[...]/packages.dir.gz...
Wczytywanie http://pld.mysza.eu.org/Ra/i686/packages.dir.gz...
Przeczytano 6814 pakietów

Usuni˛

eto 16 zdublowanych pakietów z listy dost˛

epnych

Wczytywanie /root/.poldek-cache/packages.dir.dbcache.var.lib.rpm.gz...
Przeczytano 559 pakietów

Witaj w poldekowym trybie interaktywnym. Wpisz "help" aby otrzyma´

c pomoc.

poldek> install bison gettext-devel

219

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

Przetwarzanie zale˙

zno´

sci...

Zaznaczono 1 pakiet do instalacji:
I bison-1.35-5
Pobieranie ftp://ftp.pld-linux.org/dists/[...]/bison-1.35-5.i686.rpm...
.................................................. 100.0% [196.5K]
Uruchamianie rpm --upgrade -vh --root / --noorder...
Preparing... ########################################### [100%]
1:bison ########################################### [100%]
Installing set #2
Przetwarzanie zale˙

zno´

sci...

Zaznaczono 1 pakiet do instalacji:
I gettext-devel-0.10.40-4
Pobieranie ftp://[...]/gettext-devel-0.10.40-4.i686.rpm...
.................................................. 100.0% [295.6K]
Uruchamianie rpm --upgrade -vh --root / --noorder...
Preparing... ########################################### [100%]
1:gettext-devel ########################################### [100%]
poldek>

I jak tu nie kocha´c Poldka? :-)

Mamy ju ˙z teoretycznie wszystko aby zbudowa´c pakiet ’tar’. Wracamy wi˛ec do na-
szego zwykłego konta i:

$ rpmbuild -ba tar.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.22007
Patch #0 (tar-man_from_debian_tar_1.13.25-2.patch):
Patch #1 (tar-info.patch):
Patch #2 (tar-pipe.patch):
Patch #3 (tar-namecache.patch):
Patch #4 (tar-error.patch):
Patch #5 (tar-sock.patch):
Patch #6 (tar-nolibrt.patch):
Patch #7 (tar-man.patch):
Patch #8 (tar-ac25x.patch):
Patch #9 (tar-dots.patch):
Patch #10 (tar-pl.po-fix.patch):
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.97619

[...]

Zapisano: /home/users/marekc/rpm/SRPMS/tar-1.13.25-7.src.rpm
Zapisano: /home/users/marekc/rpm/RPMS/tar-1.13.25-7.i686.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.54009
+ umask 022
+ cd /home/users/marekc/rpm/BUILD
+ _autoreqprov=n
+ [ n = y ]
+ cd tar-1.13.25
+ rm -rf /home/users/marekc/tmp/tar-1.13.25-root-marekc
+ exit 0
$

[...] oznacza, wyci˛ete przeze mnie komunikaty jakie generuje kompilowany ’tar’.

Polecenie ’rpmbuild -ba ’ ka ˙ze nam zbudowa´c ze speca kompletny pakiet - ale to ju ˙z
wiemy z teoretycznych szkole ´n ;-)

220

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

Wszelkie komunikaty w razie jakiego´s bł˛edu podczas budowania mo ˙zemy odnale´z´c
w pliku: ’/var/tmp/rpm-tmp.22007’

Widzimy, ˙ze gotowe pakiety mamy w okre´slonych katalogach i mo ˙zemy je spokojnie
zainstalowa´c. A komunikat ’exit 0’ oznacza brak bł˛edów podczas budowania.

Nasz pierwszy pakiet został zbudowany.

Pozostaje jednak niedosyt - ci ˛

agle czujemy, ˙ze jak na razie korzystamy z czyje´s pracy,

a w ko ´ncu pragniemy tak ˙ze co´s zrobi´c dla potomno´sci i sami chcemy stworzy´c plik
.spec

Pierwszy spec

No to zaczynamy. Naszym pierwszym (a wła´sciwie moim) wykonanym specem b˛e-
dzie Mantis

9

czyli system kontroli bł˛edów oparty o stron˛e WWW (PHP) i baz˛e SQL

Mysql.

Tutaj mała dygresja - wi˛ekszo´s´c pakietów powstaje dlatego, ˙ze danemu Developero-
wi był on akurat potrzebny; oznacza to ˙ze nie ma sensu pisanie na list˛e dyskusyjn ˛

a

z pro´sb ˛

a o stworzenie okre´slonego pakietu bo mo ˙zna otrzyma´c par˛e przykrych ko-

mentarzy (w najlepszym razie).

Pierwsz ˛

a czynno´sci ˛

a jest zainstalowanie pakietu ze ´zródeł. Potem notujemy sobie co

nale ˙zy zrobi´c aby dany pakiet zacz ˛

ał działa´c - wszystko po to aby przewidzie´c co da-

ny .spec powinien zrobi´c aby pakiet pracował w miar˛e bezproblemowo po instalacji
RPMa - Mo ˙zna to zanotowa´c np. na kartce papieru - ale od czego mamy komputery?

Moje notatki wygl ˛

adały tak:

// MANTIS

// Mysql init
# cd /etc/rc.d/init.d
# ./mysql init
# /usr/bin/mysqladmin -u mysql password ’password’

// Tworzenie bazy w mysql
# mysqladmin -umysql -p create bugtracker
# cd /mantis/sql
# mysql -umysql -p bugtracker < db_generate.sql

// Plik config_inc.php

// Sprawdzenie i poprawka
http:/mantis/admin/check.php

// Pierwsze logowanie
u: administrator
p: root
Doda´

c nowe i skasowa´

c stare :-)

// co potrzebne do uruchomienia
- mysql
- mysql-client
- php

221

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

- php-common
- php-pcre
- php-mysql
- apache

// do rpma (zmiany w zwi ˛

azku z j˛

ezykiem)

plik: config_defaults_inc.php
$g_default_language = ’english’;
$g_default_language = ’polish’;
// Zamiana ła´

ncucha w config_defaults_inc.php

sed -e s/$g_default_language = ’english’;/$g_default_language = ’polish’;/g
config_defaults_inc.php

// Zamiana usera z root na mysql
w config_inc.php

Do ka ˙zdego pakietu nale ˙zy podchodzi´c indywidualnie - dlatego par˛e słów o samym
mantisie. System jest oparty o gotowe pliki składaj ˛

ace si˛e na stron˛e WWW, doku-

mentacje i plik potrzebny do stworzenia odpowiedniej bazy Mysql. Nie b˛edziemy
dokonywali ˙zadnych kompilacji - wi˛ec upro´sci to nasz proces budowania i testowa-
nia pakietu.

Ł ˛

acz ˛

ac informacje zawarte w dostarczonej dokumentacji i własnych notatek wiemy

ju ˙z ˙ze głównym zadaniem naszego RPMa b˛edzie takie zaprojektowanie go, aby od-
powiednie pliki PHP zostały przekopiowane w odpowiednie miejsce, dokona´c nie-
zb˛ednych poprawek w plikach konfiguracyjnych lub innych poprawek, które na-
szym zdaniem mog ˛

a ułatwi´c prac˛e przyszłym u ˙zytkownikom. Pami˛etajmy jednak

˙zeby nie przedobrzy´c.

Niestety nie wszystko uda nam si˛e zautomatyzowa´c - dlatego stworzymy dwa pli-
ki tekstowe (w dwóch wersjach j˛ezykowych PL i EN) z krótkim opisem, co nale ˙zy
wykona´c aby system zadziałał.

Wydaje mi si˛e tak ˙ze, ˙ze dobrym zwyczajem jest po zainstalowaniu ´zródeł przewi-
dzie´c wła´sciwe zale ˙zno´sci, aby nasz pakiet działał bez problemu na innym kompute-
rze. Na przykład w instrukcji do instalacji mantisa w wymaganiach jest wymieniony
m.in. pakiet PHP - W PLD po instalacji samego PHP, mantis b˛edzie wy´swietlał bł˛edy.
Okazuje si˛e ˙ze pakiety w PLD s ˛

a maksymalnie ”rozdrobnione” i do działania po-

trzebny jest jeszcze pakiet ’php-pcre’ - a do tego, ˙zeby strony PHP odpowiednio ko-
munikowały si˛e z baz ˛

a ’mysql’ jest potrzeba zainstalowania ’php-mysql’. Zale ˙zno´sci

mo ˙ze by´c wiele i moim skromnym zdaniem lepiej ˙zeby´smy umie´scili jaki´s nadmia-
rowy pakiet w zale ˙zno´sciach ni ˙z ˙zeby jakiego´s brakowało.

W naszym przypadku po zainstalowaniu i uruchomieniu pakietu Mantis ze ´zródeł,
wystarczy wykona´c np. ’rpm -qa |grep php’ aby wybra´c odpowiednie pliki. To samo
robimy z ’mysql’ i ’apache’.

Zaczynamy od stworzenia pliku (mo ˙zemy u ˙zy´c polecenia ’touch’) lub korzystamy z
innego pliku .spec w celu modyfikacji do naszych potrzeb (np. ’cvs get SPECS/template.spec’
spowoduje ´sci ˛

agni˛ecie szkieletu z CVS PLD). Otwieramy go w naszym ulubionym

edytorze tekstowym (vim, emacs, pico, mcedit itp.)

Summary: The Mantis Bug Tracker
Summary(pl): Mantis - System Kontroli Bł˛

edów

Name: mantis
Version: 0.18.0a4

222

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

# define _alpha a4
Release: 1
License: GPL
Group: Development/Tools

[...]

Zaczynamy wypełnia´c tzw. preambuł˛e, czyli wst˛ep w którym opisujemy nasz pakiet
- my´sl˛e, ˙ze wyja´snianie powy ˙zszego nie jest specjalnie potrzebne. Zwróc˛e tylko uwa-
g˛e na lini˛e ’Version’ i ’Ralease’ - zgodnie z devel-hints-pl.txt

10

powinno ono raczej

wygl ˛

ada´c tak (poniewa ˙z ta wersja mantis’a jest okre´slona jako alpha):

Version: 0.18.0 %define alpha a4 Release: 0.%{_alpha}.1

ale u mnie powodowało to bł ˛

ad przy budowaniu, gdy ˙z jak dalej zobaczymy nazwa

´zródeł korzysta z pola ’Version’ i ka ˙zda manipulacja na nim powoduje potrzeb˛e prze-

budowania .speca lub zmian˛e nazwy archiwum w którym s ˛

a ´zródła (co jest bardzo

złym nawykiem i karygodnym bł˛edem!). Tak wi˛ec w ko ´ncu zostawiłem tak jak jest i
nikt specjalnie nie zwrócił mi na to uwagi :-) (przyp. autora: jednak pó´zniejsza prak-
tyka poka ˙ze nam, ˙ze zmiany takie s ˛

a jednak chlebem powszednim wi˛ec nie bójmy

si˛e ich dokonywa´c)

[...]

Source0: http://dl.sourceforge.net/mantisbt/%{name}-%{version}.tar.gz
# Source0-md5: 4c730c1ecf7a2449ef915387d85c1952
Source1: %{name}-doc-PLD.tar.gz
URL: http://mantisbt.sourceforge.net/

[...]

Dalej mamy opis ´zródełek - w PLD podaje si˛e go najcz˛e´sciej w formie linku plus fraza
%{name}-%{version}.tar.gz i tak naprawd˛e ta fraza jest najwa ˙zniejsza do zbudowania
pakietu, poniewa ˙z URL (w naszym przypadku http://dl.sourceforge.net/mantisbt/)
jest ignorowany. Tak wi˛ec z makra %name i %version budowana jest nazwa pakietu
i taka nazwa jest wyszukiwana w ~/rpm/SOURCES/

´

Zródeł programu mo ˙ze by´c kilka. U nas wyst˛epuje jeszcze Source1

11

- jest to dodatko-

wa dokumentacja składaj ˛

aca si˛e z dwóch plików tekstowych zawieraj ˛

aca dodatkowe

wskazówki po instalacyjne. Pierwotnie próbowałem zrobi´c to korzystaj ˛

ac z mecha-

nizmu Patch i polecenia:

diff -urN katalog_z_oryginałem katalog_z_poprawionym_oryginałem > ´zródła-powód.patch

opisanego w devel-manual

12

(rozdział 1.2.2), ale mechanizm ten nie pozwala tworzy´c

nowych plików wi˛ec pozostało tylko wykona´c dodatkowe ´zródła.

Pami˛etajmy tak ˙ze aby w ˙zadnym przypadku nie modyfikowa´c r˛ecznie ´zródeł pro-
gramu. Prawidłowy .spec powinien wykorzystywa´c natywne ´zródła, a wszelkie zmia-
ny dokonujemy w %build, %install lub za pomoc ˛

a patch’ów.

Sygnatura md5 po # jest wynikiem wykorzystania tzw. distfiles i na razie to musi
nam wystarczy´c. Distfiles omówimy gdy b˛edziemy zapisywa´c do CVS PLD - czyli
niepr˛edko ;-)

[...]

223

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

Requires: apache >= 1.3.27-4
Requires: apache-mod_dir >= 1.3.27-4
Requires: php >= 4.0.3
Requires: php-mysql >= 4.0.3
Requires: php-pcre >= 4.3.1-4
Requires: php-common >= 4.3.1-4
Requires: mysql >= 3.23.2
Requires: mysql-client >= 3.23.56-1
Requires: sed
BuildArch: noarch
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)

[...]

W ’Requires’ podajemy zale ˙zno´sci, czyli co musi by´c zainstalowane aby dany pakiet
działał lub ˙zeby wykonały si˛e poprawnie polecenia wykonywane przez .spec (np.
sekcja %post)

W ’BuildArch’ architektur˛e pod który przeznaczony jest RPM - u nas jest to ’noarch’
czyli bez ˙zadnej konkretnej architektury - z moich obserwacji wynika ˙ze developerzy
PLD omijaj ˛

a to pole - chyba ˙ze jest to wła´snie ’noarch’.

’BuildRoot’ jest bardzo wa ˙znym tagiem - na szcz˛e´scie wyst˛epuje zawsze w takiej
postaci jak u nas - a oznacza katalog w którym rpm b˛edzie budował pakiet z sekcji
%install naszego .speca.

[...]

%define _mantisdir /home/services/httpd/mantis
# define _mantisdir /home/httpd/html/mantis

%description
Mantis is a web-based bugtracking system.

%description -l pl
Mantis jest systemem kontroli bł˛

edów opartym na interfejsie \

WWW i MySQL.

[...]

W tej cz˛e´sci wykorzystujemy przydatn ˛

a wła´sciwo´s´c RPMa czyli definiowanie sta-

łych. W naszym przykładzie ’_mantisdir’ jest katalogiem w którym b˛ed ˛

a zainstalo-

wane pliki dla serwera WEB. Tutaj mała uwaga dotycz ˛

aca komentarza ’#’ - Gdy de-

finiujemy makro wtedy komentarz nie działa, dlatego usun˛eli´smy ’%’ przed słowem
’define’ (mo ˙zemy tak ˙ze u ˙zy´c frazy ’%%’) czyli gdyby´smy napisali:

%define _mantisdir /home/services/httpd/mantis

# %define _mantisdir /home/httpd/html/mantis

To wtedy stała ’_mantisdir’ miała by warto´s´c /home/httpd/html/mantis, mimo ˙ze
nie taka jest nasz intencja - Nie musz˛e chyba wyja´snia´c jakie to mo ˙ze spowodowa´c
problemy?

224

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

W ’%description’ opisujemy krótko charakterystyk˛e pakietu, a ni ˙zej widzimy jak to
zrobi´c dla opisu w j˛ezyku polskim - pó´zniej RPM wykorzystuj ˛

ac zmienne locale wy-

´swietla odpowiedni ˛

a wersje j˛ezykow ˛

a ’description’ gdy sobie tego od RPMa ˙zyczy-

my.

[...]

%prep
%setup -q -a1

[...]

Od tego momentu sko ´nczyli´smy wypełnia´c dane preambuły. Sekcja %prep mo ˙ze wy-
kona´c skrypt potrzebny przed instalacj ˛

a plików. My akurat nic przed instalacj ˛

a robi´c

nie musimy dlatego sekcja ta jest pusta.

Dalej jest ’%setup -q -a1’ - czyli rozpakowanie ´zródeł do katalogu zdefiniowanego
wcze´sniej przez ’BuildRoot’. Dodatkowe parametry tego tagu wył ˛

aczaj ˛

a komunika-

ty przy rozpakowaniu ’-q’, a parametr ’-a1’ okre´sla które ´zródła nale ˙zy rozpakowa´c.
Po ’%setup’ mo ˙zemy tak ˙ze korzysta´c z makra ’%patch’ który nakłada łatki na ´zró-
dła. Umo ˙zliwia to tak ˛

a modyfikacj˛e ´zródeł jakie tylko chcemy bez potrzeby zmian w

samych ´zródłach (o czym pisali´smy wcze´sniej).

[...]

%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_mantisdir}

cp -af *.php admin core css graphs images lang sql \

$RPM_BUILD_ROOT%{_mantisdir}

sed -e ’s/root/mysql/g’ config_inc.php.sample > \

$RPM_BUILD_ROOT%{_mantisdir}/config_inc.php

[...]

Tak naprawd˛e w wi˛ekszo´sci pakietów przed ’%install’ wykonywane jest makro ’%bu-
ild’, które kompiluje nam ´zródła, a w najprostszej postaci wygl ˛

ada tak:

%build %configure make

U nas nie ma potrzeby wykonywania ˙zadnych kompilacji wi˛ec od razu wykonywana
jest sekcja ’%install’. Na pocz ˛

atku czy´scimy sobie katalog w którym b˛edziemy insta-

lowali nasz program (czyli ’fake root’) - mimo ˙ze prawdopodobnie jest pusty - ale
lepiej dmucha´c na zimne. Potem dokonujemy instalacji pakietu przekazuj ˛

ac mu w

parametrze ’-d’ ˙ze docelowo ma by´c zainstalowany w ’fake root’, ale same pliki po-
jawi ˛

a si˛e w naszym katalogu tymczasowym (TMPDIR), dlatego pó´zniej za pomoc ˛

a

polecenia ’cp’ kopiujemy pliki, jakie s ˛

a potrzebne, do wła´sciwego ’fake root’ - za-

uwa ˙zmy ˙ze pomin˛eli´smy np. katalog ’doc’.

Nast˛epnie jeszcze za pomoc ˛

a komendy ’SED’ dokonujemy drobnej poprawki w pliku

konfiguracyjnym mantisa - zamieniaj ˛

ac domy´slnego u ˙zytkownika MYSQL z ’root’

na ’mysql’. Tak ˛

a poprawk˛e mogli´smy wykona´c wcze´sniej w sekcji ’%prep’ i tagu

’%patch’ ale przy tak małych poprawkach bardziej efektywniej jest to zrobi´c tutaj.

225

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

[...]

%clean
rm -rf $RPM_BUILD_ROOT

[...]

Tag ’%clean’ jest w .specach tworzonych dla PLD obowi ˛

azkowy i okre´sla co nale ˙zy

zrobi´c gdy cały pakiet zostanie zbudowany. Tutaj mała uwaga - ten tag w tym miej-
scu nie oznacza ˙ze jest w tej chwili wykonany - je ˙zeli by tak było, to wyst˛epuj ˛

acy

pó´zniej tag ’%files’ miałby niejakie problemy z nieistniej ˛

acymi ju ˙z plikami. Czyli po

poprawnym zbudowaniu pakietu, wykonywane jest makro ’%clean’, a w przypadku
jakiegokolwiek bł˛edu, nie jest - czyli rozpakowane i zainstalowane ´zródła pozostaj ˛

a.

Umo ˙zliwia nam to np. diagnostyk˛e w przypadku bł˛edów podczas budowania pa-
kietu.

[...]

%post
if [ "$LANG" = "pl_PL" ]; then
#sed -e "s/= ’english’;/= ’polish’;/g" \

%{_mantisdir}/config_defaults_inc.php > \
#%{_mantisdir}/config_defaults_inc_PLD.php

#mv -f %{_mantisdir}/config_defaults_inc_PLD.php \

%{_mantisdir}/config_defaults_inc.php

echo
echo "Mantis zapisany..."
echo "Wi˛

ecej: /usr/share/doc/mantis-%{version}/PLD_Install_PL.txt.gz"

echo
else
echo
echo "Mantis loaded..."
echo "More: /usr/share/doc/mantis-%{version}/PLD_Install_EN.txt.gz"
echo
fi

[...]

Tutaj mamy przykład co mo ˙zemy zrobi´c z plikami, które b˛ed ˛

a instalowane po zbu-

dowaniu pakietu. Makro ’%post’ wykonywane jest przez RPM podczas instalacji
pakietu. Zakomentowane polecenia umo ˙zliwiaj ˛

a zmian˛e w zainstalowanym pliku

’config_defaults_inc.php’ zgodnie z zawarto´sci ˛

a zmiennej locale ’LANG’. Pó´zniej w

zale ˙zno´sci od tej zmiennej wy´swietlany jest komunikat w j˛ezyku PL lub EN.

Zadacie pytanie dlaczego cz˛e´s´c tych polece ´n jest ”wył ˛

aczona" - otó ˙z, pó´zniej gdy

dany .spec chcemy ju ˙z udost˛epni´c ogółowi zostanie on sprawdzony pod wzgl˛edem
”czysto´sci rasowej” :-) - W tym przypadku okazało si˛e, ˙ze taka zmiana w plikach kon-
figuracyjnych, mo ˙ze spowodowa´c kłopoty podczas np. zmiany u ˙zytkownika. Pro-
gramy korzystaj ˛

ace z ’locale’ powinny odpowiednio reagowa´c na zmiany ’locale’ -

np. po modyfikacji LANG na ’EN_en’ zacz ˛

a´c pracowa´c po angielsku - W naszym

przypadku strona PHP nie zacznie pracowa´c po angielsku, dlatego dodany został
w/w komentarz, a w pliku ’PLD_Install_PL.txt.gz’, który jest dodatkow ˛

a instrukcj ˛

a,

co nale ˙zy zrobi´c po instalacji pakietu RPM aby ’mantis’ po uruchomieniu rozmawiał
z nami po polsku.

226

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

[...]

%files
%defattr(644,root,root,755)
%doc doc/* PLD_Install_PL.txt PLD_Install_EN.txt config_inc.php.sample
%dir %{_mantisdir}
%{_mantisdir}/admin/
%{_mantisdir}/core/
%{_mantisdir}/css/
%{_mantisdir}/graphs/
%{_mantisdir}/images/
%{_mantisdir}/lang/
%{_mantisdir}/sql/
%{_mantisdir}/account*
%{_mantisdir}/bug*
%{_mantisdir}/core.*
%{_mantisdir}/csv*
%{_mantisdir}/docum*
%{_mantisdir}/file*
%{_mantisdir}/history*
%{_mantisdir}/index*
%{_mantisdir}/jump*
%{_mantisdir}/log*
%{_mantisdir}/ma*
%{_mantisdir}/me*
%{_mantisdir}/news*
%{_mantisdir}/print*
%{_mantisdir}/proj*
%{_mantisdir}/set*
%{_mantisdir}/sig*
%{_mantisdir}/sum*
%{_mantisdir}/view*

%config(noreplace) %{_mantisdir}/config_inc.php
%config(noreplace) %{_mantisdir}/config_defaults_inc.php
%exclude %{_mantisdir}/core/.cvsignore

[...]

Dochodzimy powoli do finału :-). W sekcji tej okre´slamy co, gdzie i jak ma zosta´c
zainstalowane u u ˙zytkownika instaluj ˛

acego naszego RPMa. Tag %files jest bardzo

wa ˙zny gdy ˙z bł˛edy spowodowane tutaj mog ˛

a uniemo ˙zliwi´c działanie pakietu u ko ´n-

cowego u ˙zytkownika. W ’podtagu’:

%defattr(644,root,root,755)

okre´slamy domy´slne atrybuty instalowanych plików - mo ˙zemy oczywi´scie okre´sla´c
atrybuty dla ka ˙zdego pliku osobno.

Nast˛epnie w:

%doc doc/* PLD_Install_PL.txt PLD_Install_EN.txt config_inc.php.sample

okre´slamy nasze pliki, które znajd ˛

a si˛e w dokumentacji. Czyli katalog ’doc/’ z kata-

logu ’TMPDIR’ i pliki z ’SOURCE1’ oraz ’config_inc.php.sample’ zostan ˛

a spakowane

i przy instalacji pakietu RPM umieszczone w domy´slnym katalogu dokumentacji -
w PLD jest to /usr/share/doc/...

227

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

I wreszcie w:

%dir %{_mantisdir}

nakazujemy podczas instalacji RPM’a stworzenie katalogu zgodnie ze stał ˛

a ’%{_man-

tisdir}’ i kopiujemy pliki jakie s ˛

a poni ˙zej tego tagu. Na pocz ˛

atku nie wypisywałem

wszystkich tych katalogów i plików indywidualnie, a po prostu u ˙zyłem frazy:

%{_mantisdir}

Jednak przy takiej konstrukcji i wykorzystaniu makra %config(noreplace), pojawi si˛e
bł ˛

ad podczas budowania pakietu:

[...]

RPM build errors:
File listed twice: /home/services/httpd/mantis/config_defaults_inc.php
File listed twice: /home/services/httpd/mantis/config_inc.php

Czyli dwa pliki miały podwójne znaczenie - wyst˛epowały na li´scie do skopiowa-
nia i jako pliki konfiguracyjne. Dlatego trzeba niestety zrobi´c list˛e plików jak to my
zrobili´smy minus pliki, które znajd ˛

a si˛e w makro ’%config’. Samo makro ’%config’

pozwala szczególnie traktowa´c pliki konfiguracyjnie podczas kasowania RPMa lub
jego aktualizacji.

Ostatnie makro:

’%exclude %{_mantisdir}/core/.cvsignore’

nakazuje wył ˛

aczenie pliku z pakietu RPM - w tym przypadku jest to pozostało´s´c po

CVS mantisa.

I to ju ˙z koniec naszej pracy. Po wykonaniu polecenia ’rpmbuild -ba mantis.spec’ po-
winien nam zbudowa´c si˛e pakiet rpm i srpm. Zostaje jeszcze przetestowanie czy
wszystkie pliki s ˛

a tam gdzie chcieli´smy, czy maj ˛

a odpowiednie prawa i czy pakiet

działa tak jak powinien. Jeszcze ewentualne poprawki i musimy przepu´sci´c nasz ˛

a

prac˛e przez zestaw adaptuj ˛

acy ’adapter.awk’.

´Sci ˛agamy go z CVSu:

$ cvs get SPECS/adapter.awk
U SPECS/adapter.awk
$

nast˛epnie zmieniamy nazw˛e pliku .speca dodaj ˛

ac na ko ´ncu np. org i wykonujemy:

$ ./adapter.awk mantis.spec.org > mantis.spec
$

W wyniku tej operacji otrzymamy ’mantis.spec’ który zostaje przystosowany do wy-
maga ´n PLD. Zainteresowanych zmianami, zapraszam do przestudiowania ’nowego’
.speca.

Teraz mo ˙zemy szuka´c kogo´s, kto umie´sci naszego .speca i ´zródła w repozytorium
CVS PLD. Mamy do dyspozycji list˛e developerów: w mailu umieszczaj ˛

ac zał ˛

acznik

z naszym .specem (oczywi´scie bez ´zródeł - lub je ˙zeli mamy jakie´s własne ´zródła to
umieszczamy je na jakie´s stronie WWW lub innym ftp. i podajemy linka - ´zródła

228

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

natywne powinny da´c si˛e ´sci ˛

agn ˛

a´c z lokacji jak ˛

a umie´scili´smy w naszym .specu.).

Zał ˛

acznik powinien by´c typu plain-text.

Mo ˙zna tak ˙ze spróbowa´c na grupie IRC #PLD znale´z´c ofiar˛e, która umie´sci nasz ˛

a pra-

ce w repozytorium.

Dobrze te ˙z w czasie nauki robienia .speców podgl ˛

ada´c jak to robi ˛

a inni - W repozy-

torium CVS jest naprawd˛e z czego wybiera´c. A my nabywaj ˛

ac umiej˛etno´s´c czytania

plików .spec mo ˙zemy skupi´c si˛e ju ˙z tylko na odpowiednim ich napisaniu.

W ko ´ncu otrzymamy mo ˙zliwo´s´c zapisu do CVS i wtedy czytamy nast˛epn ˛

a cz˛e´s´c

poradnika ”W krainie CVS”

Przypisy

1. http://developer-doc.pld-linux.org/baseciq/slack2pld.html

2. http://www.baseciq.org/

3. http://developer-doc.pld-linux.org/maximum%20rpm/index.htm

4. http://lubuska.zapto.org/~hoppke/too_much_to_learn/rpm/index.html

5. http://developer-doc.pld-linux.org/hoppke/too_much_to_learn/rpm/index.htm

6. http://developer-doc.pld-linux.org/develmanual/develmanual-packages.html

7. http://developer-doc.pld-linux.org/develhints/developer_hints.htm

8. http://developer-doc.pld-linux.org/baseciq/slack2pld.html

9. http://mantisbt.sourceforge.net/

10. http://developer-doc.pld-linux.org/develhints/developer_hints.htm

11. http://developer-doc.pld-linux.org/source1.htm

12. http://developer-doc.pld-linux.org/develmanual/develmanual-packages.html

229

background image

Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD

230

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

Wst ˛ep

Umiemy ju ˙z w miare kleci´c nowe spece, naprawia´c stare - chcemy doł ˛

aczy´c do dru-

˙zyny PLD... Musimy mie´c wi˛ec mo ˙zliwo´s´c pogrania na boisku, a nie tylko zasiada´c

na trybunach jako widz. Naszym boiskiem b˛edzie CVS a mo ˙zliwo´s´c czytania i pisa-
nia do niego (Read-Write) naszym sposobem na gr˛e :)

Jak to ˙zyciu, aby co´s dosta´c musimy najpierw si˛e postara´c i wykona´c pare czynno´sci.

˙Zeby otrzyma´c własne konto CVS nale ˙zy uzyska´c poparcie ju ˙z aktywnych dewelope-

rów. Zwykle osoby wykazuj ˛

ace si˛e aktywno´sci ˛

a na listach dyskusyjnych (podsyłaj ˛

ace

patche, itp.) pr˛edzej czy pó´zniej s ˛

a wr˛ecz proszone o zgłoszenie si˛e po konto. W typo-

wym przypadku wystarczy, ˙ze trzech deweloperów wyrazi poparcie kandydata na
dewelopera (trzeci z nich powinien wskaza´c mu dok ˛

ad powinien si˛e zgłosi´c po kon-

to). Osoba popieraj ˛

aca kandydata jednocze´snie staje si˛e jego opiekunem i nadzoruje

jego działania w pocz ˛

atkowej fazie. W przypadku gdyby, mimo poparcia przez nie-

których, osoba kandydata wywoływała kontrowersje, decyzja o jego przyj˛eciu (lub
nie) b˛edzie podj˛eta zgodnie z obowi ˛

azuj ˛

ac ˛

a procedur ˛

a rozwi ˛

azywania konfliktów.

Kiedy ju ˙z zostaniemy przyj˛eci, musimy wymy´sle´c sobie ksywke i hasło. Potem z
linii polece ´n wykonujemy jednolinijkowe polecenie - wstawiaj ˛

ac za login i haslo od-

powiednie dane:

perl -e ’print "login:" . crypt("haslo", join "", (".", "/", 0..9, "A".."Z", "a".."z")[rand 64,
rand 64]) . "\n"’

w wyniku którego otrzymamy ci ˛

ag znaków podobny do:

login:/APGG.cfeqPpk

Ci ˛

ag ten kopiujemy do listu e-mail z pro´sb ˛

a o mo ˙zliwo´s´c RW na CVS PLD i wysyła-

my na adres cvsadmin@pld-linux.org

1

To narazie wszystko co mo ˙zemy zrobi´c - trzeba czeka´c na odpowied´z od władzy
CVS. Po kilku, kilkunastu lub kilkudziesi˛eciu dniach przyjdzie mail z odpowiedzi ˛

a.

U mnie była to wiadomo´s´c podobna do:

Quoting Marek Ciesielski <marekc@adres.email>:

> Prosze o dostep RW do CVS PLD.
> dane do <login>:/APGG.cfeqPpk // oczywi´

scie tej linii

// w mailu nie ma - dodałem j ˛

a dla przykładu :)

Witam,

twoje konto zostało zało˙

zone, prosz˛

e dopisz si˛

e do CVSROOT/users

--
Admin CVS <imi˛

e i nazwisko> :)

Czyli pierwsze formalno´sci mamy za sob ˛

a. Mo ˙zemy ju ˙z działa´c na CVS. Jednak pro-

ponuje znowu troch˛e teorii - tym razem zdecydowana wi˛ekszo´s´c dokumentacji jest
w j˛ezyku angielskim. Mamy wi˛ec bardzo dobry, oficjalny podr˛ecznik CVS

2

(uwaga

231

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

ponad 800KB), ksi ˛

a ˙zke kucharsk ˛

a CVS

3

(uwaga ponad 600KB) - jest tak ˙ze opis po

polsku

4

- stworzony przez developerów PLD, a tak ˙ze ksi ˛

a ˙zka z cyklu leksykon kie-

szonkowy "CVS" Gregor N. Purdy (koszt ok. 10PLN) - tak wi˛ec jest w czym wybiera´c.

Jeszcze raz zwró´cmy uwag˛e na maila którego otrzymali´smy. Jest tam co´s o dopisaniu
"users". Musimy wykona´c zalecenie. Aby to zrobi´c musimy znowu przygotowa´c so-
bie ´srodowisko CVS - albo modyfikuj ˛

ac istniej ˛

ace, dotychczasowe konto "anonymo-

us" albo tworz ˛

ac od pocz ˛

atku ´srodowsko w nowym katalogu. Ja wybrałem pierwszy

sposób (troche wbrew zaleceniom z dokumentacji - ale za to szybszy), polega on na
modyfikacji ka ˙zdego pliku "Root" w podkatalogach "CVS" - nale ˙zy tam wpisa´c fraze:

:pserver:<nasz_login>@cvs.pld-linux.org:/cvsroot

Czyli w naszym przypadku wchodzimy do katalogu ./rpm i wchodzimy do ka ˙z-
dego podkatalogu "CVS" i zmieniamy r˛ecznie plik "Root" - nie ma w tej chwili tych
katalogów wiele, wi˛ec nie powinno to sprawi´c kłopotu.

Proponuje tak ˙ze poustawia´c sobie zmienne CVS np. CVSEDITOR itp. (szczegóły -
oczywi´scie dokumentacja).

Nast˛epnie mo ˙zemy ju ˙z spróbowa´c zalogowa´c si˛e do CVS PLD:

$ cvs login
Logging in to :pserver:<nasz_login>@cvs.pld-linux.org:2401/cvsroot
CVS password:
$

Wpisujemy hasło które wymy´sleli´smy i jeste´smy zalogowani. Ka ˙zdy komunikat bł˛e-
du oznacza ˙ze co´s wcze´sniej ´zle wykonali´smy, albo ˙ze np. nie działa sie´c. Login wy-
konujemy praktycznie raz i dopóki nie wykonamy polecenia "cvs logout" jeste´smy
ci ˛

agle gotowi do pracy.

Czas ju ˙z zabra´c si˛e za plik "users"

$ cvs get CVSROOT/users
U CVSROOT/users
$

Do naszego lokalnego repozytorium, do katalogu CVSROOT ´sci ˛

agneli´smy plik users,

który słu ˙zy w PLD do wpisania aliasu pocztowego - przy okazji mo ˙zemy zobaczy´c
w jakim towarzystwie przyjdzie nam pracowa´c :)

nasz_login:u ˙zytkownik_mail@domena_naszego_email:Imie i Nazwisko:user@jabber.domena

Ostatnie pole jest opcjonalne - wypełniamy je tylko je´sli posiadamy swój własny JID
(o ile go posiadamy). Je´sli z ró ˙znych przyczyn nie korzystamy z Jabbera - omijamy
t˛e cz˛e´s´c i zatrzymujemy si˛e na imieniu i nazwisku. Dla zainteresowanych - istnieje
oficjalny serwer Jabbera projektu PLD Linux - konta na nim zakłada Mariusz Mazur.

Edytujemy odpowiednio wi˛ec plik users (pami˛etajmy, ˙zeby zachowa´c alfabetyczn ˛

a

kolejno´s´c wpisów) - wystarczy tylko drobna znajomo´s´c alfabetu i robimy nasz pierw-
szy commit - czyli potwierdzamy zmiany.

$ cvs ci CVSROOT/users // po tym poleceniu edytujemy log
Checking in CVSROOT/users;
/cvsroot/CVSROOT/users,v <-- users
new revision: 1.40; previous revision: 1.39

232

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

done
cvs server: Rebuilding administrative file database
Mailing the commit message
$

Po wydaniu polecenia cvs ci CVSROOT/users otworzy si˛e nasz ulubiony edytor i
pojawi si˛e co´s podobnego do:

- added nasz_login // tu wpisujemy komentarz z kreseczk ˛

a i po angiel-

sku!!!
CVS: ----------------------------------------------------------------
-----
CVS: Enter Log. Lines beginning with ‘CVS:‘ are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Updated Files:
CVS: CVSROOT/users
CVS: ----------------------------------------------------------------
-----

Wła´snie dokonali´smy pierwszej zmiany w repozytorium PLD. Od tej chwili ka ˙zdy
mail adresowany na <nasz_login>@pld-linux.org trafi na nasz ˛

a skrzynk˛e pocztow ˛

a.

Dalsza cz˛e´s´c naszych rozwa ˙za ´n b˛edzie ju ˙z w formie konkretnych przykładów, ponie-
wa ˙z to co chcemy zrobi´c w repozytorium CVS PLD zale ˙zy od konkretnych potrzeb.
Od tej chwili nikt ju ˙z nas za r ˛

aczke nie b˛edzie prowadził, a czekaj ˛

a nas pot, krew,

łzy i pierwsze "recenzje" naszych poczyna ´n - np. na grupie PLD-devel czy kanale
#PLD - a jedynymi nagrodami b˛edzie brak tych recenzji, zdobyta wiedza, satysfakcja
i działaj ˛

ace paczki, których przez chwil˛e nikt na ´swiecie nie b˛edzie miał :)

Dodawanie plików do CVS PLD

Ka ˙zdy nowy plik, który chcemy umie´sci´c w repozytorium nale ˙zy doda´c za pomoc ˛

a

polecenia "cvs add"

$ cvs add nasz_nowy_pakiet.spec
cvs server: scheduling file ‘nasz_nowy_pakiet.spec’ for addition
cvs server: use ’cvs commit’ to add this file permanently
$

Jak wida´c z komentarza, aby zako ´nczy´c dodanie pliku nale ˙zy zatwierdzi´c zmian˛e za
pomoc ˛

a polecenia "cvs ci" (polecenia podaje w formie skróconej) - Samo zatwierdza-

nie (commit) robili´smy ju ˙z wcze´sniej przy okazji pliku "users".

Aktualizacja plików

Pliki mo ˙zemy zaktualizowa´c wzgl˛edem CVS - je ˙zeli nasz plik jest nowszy nie zo-
stanie dokonana ˙zadna zmiana na naszym lokalnym repozytorium. Aktualizacj ˛

a nie

dokonujemy zmian na zdalnym repozytorium.

233

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

Je ˙zeli w danym katalogu mamy ju ˙z zdefiniowan ˛

a kartotek˛e (czyli mamy ju ˙z odpo-

wiedni podkatalog CVS) to aktualizacj ˛

a mo ˙zemy ´sci ˛

agn ˛

a´c nowy plik.

$ cvs up python.spec
P python.spec
$

W powy ˙zszym przykładzie dokonali´smy aktualizacji pliku "python.spec". Literka
"P" okre´sla stan aktualizacji. Poni ˙zej przedstawie mo ˙zlwe kody:

"A" - Plik dodany. Oznacza ˙ze na pliku dokonano operacji "ADD" (czyli dodanie
do repozytorium) ale nie wykonano commitu (zatwierdzenia)

"C" - Plik aktualizowany jest w konflikcie ze zdalnym repozytorium. Czyli np.
dokonali´smy zmian na lokalnym repozytorium i nasz plik jest "nowszy" wzgl˛edem
zdalnego repozytorium.

"M" - Plik został zmodyfikowany w zdalnym repozytorium ale nie było ˙zadnych
konfliktów.

"P" - Plik był "łatany" przez serwer (kod podobny do "U")

"R" - Plik usuni˛ety ale nie zatwierdzony. Czyli dokonano operacji "cvs remove" ale
nie zatwierdzono zmian (poleceniem "cvs ci")

"U" - Plik został zaktualizowany

"?" - Plik jest w naszym repozytorium lokalnym ale nie ma go w zdalnym repozy-
torium CVS

Zatwierdzanie zmian i Distfiles

Sam przykład zatwierdzania zmian mogli´smy pozna´c wcze´sniej. Jest to najcz˛e´sciej
wykonywana operacja na CVS.

Jednak chciałbym zwróci´c uwag˛e na inny sposób składowania ´zródeł natywnych.
W pewnym momencie okazuje si˛e, ˙ze składowanie wszystkich plików w repozyto-
rium CVS jest mało efektywne i powoduje zbyt du ˙ze obci ˛

a ˙zenia serwerów. Dlatego

te ˙z w PLD zastosowano mechanizm Distfiles

5

którego krótki opis mo ˙zemy odszu-

ka´c tu

6

. W wielkim skrócie oznacza to ˙ze preparuj ˛

ac odpowiednio spec (pami˛etacie

tajemnicze md5?) i korzystaj ˛

ac z odpowiednich opcji programu ./builder mo ˙zemy

sterowa´c ´sci ˛

aganiem plików do distfiles. Tak naprawd˛e najcz˛e´sciej wykorzystane s ˛

a

dwie opcje ./builder - "5" i "U". Jest to tak ˙ze powód u ˙zywania programu ./builder (a
nie frazy "rpmbuild -ba"), którego kopie najlepiej ´sci ˛

agn ˛

a´c z CVS. Pami˛etajmy tak ˙ze

o tym, ˙ze w systemie istnieje inny builder, który jest dostarczany z narz˛edziami rpm
ale oczywi´scie nie ma on mo ˙zliwo´sci pracy z distfiles. I jeszcze jedna uwaga: Dist-
files jest przeznaczony tylko dla ´zródeł natywnych - wszelkie patche i nasze pliki
dodajemy normalnie do CVS (najcz˛e´sciej do katalogu SOURCES).

Oto przykłady u ˙zycia ./builder z odpowiednimi opcjami:

$ ./builder -5 mantis.spec
# $Revision$, $Date: 2004-09-26 17:31:14 +0200 (nie, 26 wrz 2004) $
--20:32:59-- http://dl.sourceforge.net/mantisbt/mantis-0.18.0a4.tar.gz
=> ‘mantis-0.18.0a4.tar.gz’

234

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

Translacja dl.sourceforge.net... zrobiono.
Ł ˛

aczenie si˛

e z dl.sourceforge.net[193.1.219.87]:80... poł ˛

aczono si˛

e.

˙

Z ˛

adanie HTTP wysłano, oczekiwanie na odpowied´

z... 200 OK

Długo´

c: 485,797 [application/x-tar]

100%[====================================>] 485,797 17.99K/s ETA 00:00

20:33:25 (17.99 KB/s) - zapisano ‘mantis-0.18.0a4.tar.gz’ [485797/485797]

Updating source-0 md5.
$

Opcje "5" i "U" s ˛

a podobne, z tym ˙ze "5" próbuje poprawi´c md5 korzystaj ˛

ac z istnie-

j ˛

acego sources w lokalnym repozytorium. Natomiast "U" próbuje zawsze ´sci ˛

agn ˛

a´c

´zródła z podanego przez spec URL. Taka jest teoria. Ja praktycznie u ˙zywam opcji "U"

kasuj ˛

ac wcze´sniej ´zródła z lokalnego repozytorium, poniewa ˙z w innym przypadku

wyskakuj ˛

a dziwne bł˛edy o konflikcie z parametrem -nd

$ ./builder -U mantis.spec
# $Revision$, $Date: 2004-09-26 17:31:14 +0200 (nie, 26 wrz 2004) $
--20:44:39-- http://dl.sourceforge.net/mantisbt/mantis-0.18.0a4.tar.gz
=> ‘mantis-0.18.0a4.tar.gz’
Translacja dl.sourceforge.net... zrobiono.
Ł ˛

aczenie si˛

e z dl.sourceforge.net[193.190.198.97]:80... poł ˛

aczono si˛

e.

˙

Z ˛

adanie HTTP wysłano, oczekiwanie na odpowied´

z... 200 OK

Długo´

c: 485,797 [application/x-gzip]

100%[====================================>] 485,797 18.80K/s ETA 00:00
20:45:04 (18.80 KB/s) - zapisano ‘mantis-0.18.0a4.tar.gz’ [485797/485797]

Updating source-0 md5.
$

Odnogi (Branche) i Etykiety (Tag)

W ka ˙zdym wi˛ekszym CVSie, projekty główne rozgał˛eziaj ˛

a si˛e tworz ˛

ac tzw. branche

- W przypadku PLD np. istnieje stabilny, lecz ju ˙z troche leciwy branch "RA-branch",
który wywodzi si˛e z brancha głównego HEAD. W pewnym momencie RA-branch
został "zamro ˙zony" i dokonywane s ˛

a na nim tylko zmiany zawieraj ˛

ace poprawki

powa ˙znych bł˛edów lub aktualizacje zwi ˛

azane z bezpiecze ´nstwem. Branch HEAD

" ˙zyje" dalej i s ˛

a w nim dokonywane zmiany i powstaj ˛

a nowe pakiety. Odgał˛ezie ´n

mo ˙ze by´c (i jest) wiele, co na pocz ˛

atku troche gmatwa spojrzenie na CVS ale pó´zniej

doceniamy zalety tego rozwi ˛

azania. Dane odnogi maj ˛

a przydzielone odpowiednie

etykiety "lepkie" (ang. sticky tag) - czyli etykieta jest przekazywana ka ˙zdej nast˛epnej
wersji w danej odnodze. Zwykłe etykiety (ang. tag) mo ˙zemy u ˙zy´c np. do okreslenia
indywidualnego stanu danego pliku - okre´slaj ˛

ac np. tag STABLE, UNSTABLE lub

DEVELOP.

Je ˙zeli chodzi o etykietowanie to trzeba zachowa´c rozwag˛e. Musimy by´c pewni ˙ze
wiemy co chcemy osi ˛

agn ˛

a´c, bo mo ˙zemy popsu´c prace komu´s innemu (dotyczy to

tak ˙ze zmian w cudzych specach).

235

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

Praktycznie najcz˛e´sciej wykorzystywane s ˛

a nast˛epuj ˛

ace opcje zwi ˛

azane z odnogami

i etykietami:

$ cvs status -v mldonkey.spec // Statystyka odnóg i etykiet
===================================================================
File: mldonkey.spec Status: Up-to-date

Working revision: 1.14.2.8 // Rewizja (wersja) robocza na lokalnym CVS
Repository revision: 1.14.2.8 /cvsroot/SPECS/mldonkey.spec,v

// Rewizja na zdalnym CVS

Sticky Tag: RA-branch (branch: 1.14.2)

// Dane dotycz ˛

ace lepkiej etykiety - zwi ˛

azanej z branchem (odnog ˛

a)

Sticky Date: (none)
Sticky Options: (none)

Existing Tags: // Istniej ˛

ace etykiety zwykłe

mldonkey-2_5_3-2 (revision: 1.14.2.7)
STABLE (revision: 1.14.2.7)
mldonkey-2_5-1 (revision: 1.14.2.2)
RA-branch (branch: 1.14.2)

$

Sam sposób robienia odnóg pozostawiam innym - lepiej poczyta´c np. opis CVS PLD

7

bo sam tego jeszcze nie robiłem :). Etykietowanie mo ˙zemy wykona´c np.: maj ˛

ac plik

w naszym lokalnym repozytorium wydajemy polecenie:

cvs tag UNSTABLE plik.spec

czyli plik.spec otrzymał etykiet˛e UNSTABLE.

Ostatnim przykładem b˛edzie przenoszenie zmian mi˛edzy odnogami (branchami).
Robi ˛

ac jaki´s spec w głównej odnodze HEAD doszli´smy do wniosku, ˙ze zmiany mo ˙z-

na ogłosi´c w odnodze RA-branch. Mo ˙zna spróbowa´c wykona´c polecenie:

cvs update -r RA-branch -j HEAD mldonkey.init

ale najcz˛e´sciej ró ˙znice mi˛edzy wersjami w odnogach s ˛

a tak du ˙ze, ˙ze otrzymamy ko-

munikat o braku automatycznej mo ˙zliwo´sci przeniesienia zmian. Wtedy mo ˙zna roz-
wi ˛

aza´c ten problem innym sposobem. Tworzymy np. w podkatalogu "SPECS" kata-

log "RA-branch" (nazwa katalogu jest nieistotna, ale pomocna). W podkatalogu "RA-
branch" wykonujemy:

$ cvs get -A SPECS/plik.spec // parametr "A" usuwa tag
$ cd SPECS
$ cvs tag -b RA-branch plik.spec // nowy tag dla odnogi RA-branch
$ cp z_HEAD_plik.spec // podmieniamy plik na wła´

sciwy z HEAD

$ cvs commit -r RA-branch plik.spec // zatwierdzamy zmiany jako RA-branch
$

My´sl˛e ˙ze komentarze s ˛

a czytelne. Gdy zrobimy co najmniej jedn ˛

a tak ˛

a operacj˛e, to

istniej ˛

acy katalog RA-branch mo ˙ze nam słu ˙zy´c do pó´zniejszych operacji kopiowania

zmian mi˛edzy odnogami (np. korzystaj ˛

ac z opcji "cvs up".

236

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

Zlecenia dla builderów

Zdarza si˛e cz˛esto, ˙ze chcemy da´c sygnał i ˙z dany pakiet powinien zosta´c przebudo-
wany przez buildery PLD (czyli takie zdalne komputery-muły

8

robocze, które przy-

gotowuj ˛

a pakiety) - wtedy podczas wpisywania komentarza po wydaniu polecenia

"cvs ci" nale ˙zy napisa´c np.

- updated to version 2.5.3. Release 1 STBR for RA update general

STBR jest skrótem od "Send To Builder Request"

Zako ´

nczenie

Zbli ˙zamy si˛e do ko ´nca naszego praktycznego poradnika. Nie zostało poruszonych
wiele kwestii, które wyjd ˛

a w codziennej pracy. Dlatego mamy do pomocy dokumen-

tacje, listy dyskusyjne, IRC, zasoby CVS i przegl ˛

adark˛e GOOGLE ;). Praca ta miała

na celu wprowadzi´c w ´swiat pracy developerskiej i pokaza´c praktyczne rozwi ˛

azania

niektórych problemów - reszta zale ˙zy od naszej wiedzy i pracowito´sci - i pami˛etaj-
my, ˙ze najwa ˙zniejsze to rozwija´c swoje zdolno´sci, bo od tego zale ˙zy nasza przyszło´s´c
i przyszło´s´c projektu dla którego pracujemy :)

Przypisy

1. mailto:cvsadmin@pld-linux.org

2. http://developer-doc.pld-linux.org/cvs_official_eng/cederqvist-1.11.6.html

3. http://developer-doc.pld-linux.org/cvs_book/cvsbook.html

4. http://developer-doc.pld-linux.org/cvs_pld/cvs_pld.html

5. http://developer-doc.pld-linux.org/distfiles/distfiles.htm

6. http://developer-doc.pld-linux.org/distfiles/distfiles.htm

7. http://developer-doc.pld-linux.org/cvs_pld/cvs_pld.html

8. http://buildlogs.pld-linux.org/

237

background image

Rozdział 15. W krainie CVS - czyli wielki kocioł

238

background image

Rozdział 16. O podr ˛eczniku

Autorzy dokumentacji PLD

W tworzeniu tej pracy po´srednio lub bezpo´srednio udział wzieli (w kolejno´sci alfa-
betycznej):

Abramowicz Michał (abram)

Boguszewski Paweł (pawelb) <

pawelb.at.pld-linux.org

>

Buziak Tomasz (uho) <

uho.at.xhost.one.pl

>

Chomicki Arkadiusz (ChomAr) <

chomar.at.wla.pl

>

Ciesielski Marek (Ciesiel) <

ciesiel.at.pld-linux.org

>

Doli ´nski Marcin <

averne.at.pld-linux.org

>

Drozd Rafał (Grifter)

Gandecki Łukasz (gozda) <

gozda.at.pld-linux.org

>

Goł˛ebiowski Adam (adamg) <

adamg.at.pld-linux.org

>

Krakowiak Paweł

Królikowski Krzysztof <

krolik.at.pld-linux.org

>

Kwiatkowski Paweł (qwiat) <

qwiat.at.o2.pl

>

Mozer Łukasz Jarosław (Baseciq)

Nowak Łukasz (Shufla) <

Lukasz.at.Nowak.eu.org

>

Paszkiewicz Sławomir (PaSzCzUs) <

paszczus.at.pld-linux.org

>

Pawłowicz Sergiusz (Ser)

Po´slad Marcin (Lop)

Szafko Bartłomiej

Wojtaszek Marek (speedo) <

speedo.at.linux.pl

>

239

background image

Rozdział 16. O podr˛eczniku

240

background image

Rozdział 17. Licencja i prawa autorskie

Tłumaczenie Licencji GNU Wolnej Dokumentacji

Niniejsza dokumentacja jest wydawana na licencji GNU Wolnej Dokumentacji. Ory-
ginalny tekst licencji wersji 1.2 w j˛ezyku angielskim mo ˙zemy odnale´z´c na stronie
GNU Free Documentation License

1

. Tłumaczenie starszej wersji 1.1 zostanie tutaj

przytoczone i znajduje si˛e na stronie GNU.org.pl

2

. Ró ˙znice mi˛edzy wersj ˛

a 1.1 a 1.2 ni-

niejszej licencji w wersji angielskiej mo ˙zemy przeczyta´c korzystaj ˛

ac z tego odno´snika

3

Wersja 1.1, marzec 2000

Copyright (c) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA Zezwala si˛e na kopiowanie i rozpowszechnianie wiernych kopii
niniejszego dokumentu licencyjnego, jednak bez prawa wprowadzania zmian.

0. Preambuła

Celem niniejszej licencji jest zagwarantowanie wolnego dost˛epu do podr˛ecznika, tre-

´sci ksi ˛

a ˙zki i wszelkiej dokumentacji w formie pisanej oraz zapewnienie ka ˙zdemu

u ˙zytkownikowi swobody kopiowania i rozpowszechniania wy ˙zej wymienionych,
z dokonywaniem modyfikacji lub bez, zarówno w celach komercyjnych, jak i nie
komercyjnych. Ponad to Licencja ta pozwala przyzna´c zasługi autorowi i wydawcy
przy jednoczesnym ich zwolnieniu z odpowiedzialno´sci za modyfikacje dokonywa-
ne przez innych.

Niniejsza Licencja zastrzega te ˙z, ˙ze wszelkie prace powstałe na podstawie tego do-
kumentu musz ˛

a nosi´c cech˛e wolnego dost˛epu w tym samym sensie co produkt ory-

ginalny. Licencja stanowi uzupełnienie Powszechnej Licencji Publicznej GNU (GNU
General Public License), która jest licencj ˛

a dotycz ˛

ac ˛

a wolnego oprogramowania.

Niniejsza Licencja została opracowana z zamiarem zastosowania jej do podr˛eczni-
ków do wolnego oprogramowania, poniewa ˙z wolne oprogramowanie wymaga wol-
nej dokumentacji: wolny program powinien by´c rozpowszechniany z podr˛ecznika-
mi, których dotycz ˛

a te same prawa, które wi ˛

a ˙z ˛

a si˛e z oprogramowaniem. Licencja

ta nie ogranicza si˛e jednak do podr˛eczników oprogramowania. Mo ˙zna j ˛

a stosowa´c

do ró ˙znych dokumentów tekstowych, bez wzgl˛edu na ich przedmiot oraz niezale ˙z-
nie od tego, czy zostały opublikowane w postaci ksi ˛

a ˙zki drukowanej. Stosowanie tej

Licencji zalecane jest głównie w przypadku prac, których celem jest instrukta ˙z lub
pomoc podr˛eczna.

1. Zastosowanie i definicje

Niniejsza Licencja stosuje si˛e do podr˛eczników i innych prac, na których umieszczo-
na jest pochodz ˛

aca od wła´sciciela praw autorskich informacja, ˙ze dana praca mo ˙ze

by´c rozpowszechniana wył ˛

acznie na warunkach niniejszej Licencji. U ˙zywane poni ˙zej

słowo "Dokument" odnosi´c si˛e b˛edzie do wszelkich tego typu publikacji. Ich odbior-
cy nazywani b˛ed ˛

a licencjobiorcami.

241

background image

Rozdział 17. Licencja i prawa autorskie

"Zmodyfikowana wersja" Dokumentu oznacza wszelkie prace zawieraj ˛

ace Doku-

ment lub jego cz˛e´s´c w postaci dosłownej b ˛

ad´z zmodyfikowanej i/lub przeło ˙zonej

na inny j˛ezyk.

"Sekcj ˛

a drugorz˛edn ˛

a" nazywa si˛e dodatek opatrzony odr˛ebnym tytułem lub sekcj˛e

pocz ˛

atkow ˛

a Dokumentu, która dotyczy wył ˛

acznie zwi ˛

azku wydawców lub autorów

Dokumentu z ogóln ˛

a tematyk ˛

a Dokumentu (lub zagadnieniami z ni ˛

a zwi ˛

azanymi)

i nie zawiera ˙zadnych tre´sci bezpo´srednio zwi ˛

azanych z ogóln ˛

a tematyk ˛

a (na przy-

kład, je ˙zeli Dokument stanowi w cz˛e´sci podr˛ecznik matematyki, Sekcja drugorz˛edna
nie mo ˙ze wyja´snia´c zagadnie ´n matematycznych). Wy ˙zej wyja´sniany zwi ˛

azek mo ˙ze

si˛e natomiast wyra ˙za´c w aspektach historycznym, prawnym, komercyjnym, filozo-
ficznym, etycznym lub politycznym.

"Sekcje niezmienne" to takie Sekcje drugorz˛edne, których tytuły s ˛

a ustalone jako ty-

tuły Sekcji niezmiennych w nocie informuj ˛

acej, ˙ze Dokument został opublikowany

na warunkach Licencji.

"Tre´s´c okładki" to pewne krótkie fragmenty tekstu, które w nocie informuj ˛

acej, ˙ze Do-

kument został opublikowany na warunkach Licencji, s ˛

a opisywane jako "do umiesz-

czenia na przedniej okładce" lub "do umieszczenia na tylnej okładce".

"Jawna" kopia Dokumentu oznacza kopi˛e czyteln ˛

a dla komputera, zapisan ˛

a w for-

macie, którego specyfikacja jest publicznie dost˛epna. Zawarto´s´c tej kopii mo ˙ze by´c
ogl ˛

adana i edytowana bezpo´srednio za pomoc ˛

a typowego edytora tekstu lub (w

przypadku obrazów zło ˙zonych z pikseli) za pomoc ˛

a typowego programu graficzne-

go lub (w przypadku rysunków) za pomoc ˛

a ogólnie dost˛epnego edytora rysunków.

Ponadto kopia ta stanowi odpowiednie dane wej´sciowe dla programów formatuj ˛

a-

cych tekst lub dla programów konwertuj ˛

acych do ró ˙znych formatów odpowiednich

dla programów formatuj ˛

acych tekst. Kopia spełniaj ˛

aca powy ˙zsze warunki, w której

jednak zostały wstawione znaczniki maj ˛

ace na celu utrudnienie dalszych modyfikacji

przez czytelników, nie jest Jawna. Kopi˛e, która nie jest "Jawna", nazywa si˛e "Niejaw-
n ˛

a".

Przykładowe formaty kopii Jawnych to: czysty tekst ASCII bez znaczników, format
wej´sciowy Texinfo, format wej´sciowy LaTeX, SGML lub XML wykorzystuj ˛

ace pu-

blicznie dost˛epne DTD, standardowy prosty HTML przeznaczony do r˛ecznej mo-
dyfikacji. Formaty niejawne to na przykład PostScript, PDF, formaty własne, które
mog ˛

a by´c odczytywane i edytowane jedynie przez własne edytory tekstu, SGML lub

XML, dla których DTD i/lub narz˛edzia przetwarzaj ˛

ace nie s ˛

a ogólnie dost˛epne, oraz

HTML wygenerowany maszynowo przez niektóre procesory tekstu jedynie w celu
uzyskania danych wynikowych.

"Strona tytułowa" oznacza, w przypadku ksi ˛

a ˙zki drukowanej, sam ˛

a stron˛e tytułow ˛

a

oraz kolejne strony zawieraj ˛

ace informacje, które zgodnie z t ˛

a Licencj ˛

a musz ˛

a poja-

wi´c si˛e na stronie tytułowej. W przypadku prac w formatach nieposiadaj ˛

acych strony

tytułowej "Strona tytułowa" oznacza tekst pojawiaj ˛

acy si˛e najbli ˙zej tytułu pracy, po-

przedzaj ˛

acy pocz ˛

atek tekstu głównego.

2. Kopiowanie dosłowne

Licencjobiorca mo ˙ze kopiowa´c i rozprowadza´c Dokument komercyjnie lub nieko-
mercyjnie, w dowolnej postaci, pod warunkiem zamieszczenia na ka ˙zdej kopii Doku-
mentu tre´sci Licencji, informacji o prawie autorskim oraz noty mówi ˛

acej, ˙ze do Doku-

mentu ma zastosowanie niniejsza Licencja, a tak ˙ze pod warunkiem nie umieszczania

242

background image

Rozdział 17. Licencja i prawa autorskie

˙zadnych dodatkowych ogranicze ´n, które nie wynikaj ˛

a z Licencji. Licencjobiorca nie

ma prawa u ˙zywa´c ˙zadnych technicznych metod pomiarowych utrudniaj ˛

acych lub

kontroluj ˛

acych czytanie lub dalsze kopiowanie utworzonych i rozpowszechnianych

przez siebie kopii. Mo ˙ze jednak pobiera´c opłaty za udost˛epnianie kopii. W przy-
padku dystrybucji du ˙zej liczby kopii Licencjobiorca jest zobowi ˛

azany przestrzega´c

warunków wymienionych w punkcie 3.

Licencjobiorca mo ˙ze tak ˙ze wypo ˙zycza´c kopie na warunkach opisanych powy ˙zej, a
tak ˙ze wystawia´c je publicznie.

3. Kopiowanie ilo ´sciowe

Je ˙zeli Licencjobiorca publikuje drukowane kopie Dokumentu w liczbie wi˛ekszej ni ˙z
100, a licencja Dokumentu wymaga umieszczenia Tre´sci okładki, nale ˙zy doł ˛

aczy´c

kopie okładek, które zawieraj ˛

a cał ˛

a wyra´zn ˛

a i czyteln ˛

a Tre´s´c okładki: tre´s´c przedniej

okładki, na przedniej okładce, a tre´s´c tylnej okładki, na tylnej okładce. Obie okładki
musz ˛

a te ˙z jasno i czytelnie informowa´c o Licencjobiorcy jako wydawcy tych kopii.

Okładka przednia musi przedstawia´c pełny tytuł; wszystkie słowa musz ˛

a by´c rów-

nie dobrze widoczne i czytelne. Licencjobiorca mo ˙ze na okładkach umieszcza´c tak ˙ze
inne informacje dodatkowe. Kopiowanie ze zmianami ograniczonymi do okładek,
dopóki nie narusza tytułu Dokumentu i spełnia opisane warunki, mo ˙ze by´c trakto-
wane pod innymi wzgl˛edami jako kopiowanie dosłowne.

Je ˙zeli napisy wymagane na której´s z okładek s ˛

a zbyt obszerne, by mogły pozosta´c

czytelne po ich umieszczeniu, Licencjobiorca powinien umie´sci´c ich pocz ˛

atek(tak ˛

a

ilo´s´c, jaka wydaje si˛e rozs ˛

adna) na rzeczywistej okładce, a pozostał ˛

a cz˛e´s´c na s ˛

asied-

nich stronach.

W przypadku publikowania lub rozpowszechniania Niejawnych kopii Dokumentu
w liczbie wi˛ekszej ni ˙z 100, Licencjobiorca zobowi ˛

azany jest albo doł ˛

aczy´c do ka ˙zdej

z nich Jawn ˛

a kopi˛e czyteln ˛

a dla komputera, albo wymieni´c w lub przy ka ˙zdej kopii

Niejawnej publicznie dost˛epn ˛

a w sieci komputerowej lokalizacj˛e pełnej kopii Jawnej

Dokumentu, bez ˙zadnych informacji dodanych -- lokalizacj˛e, do której ka ˙zdy u ˙zyt-
kownik sieci miałby bezpłatny anonimowy dost˛ep za pomoc ˛

a standardowych pu-

blicznych protokołów sieciowych. W przypadku drugim Licencjobiorca musi podj ˛

a´c

odpowiednie ´srodki ostro ˙zno´sci, by wymieniona kopia Jawna pozostała dost˛epna we
wskazanej lokalizacji przynajmniej przez rok od momentu rozpowszechnienia ostat-
niej kopii Niejawnej (bezpo´sredniego lub przez agentów albo sprzedawców) danego
wydania.

Zaleca si˛e, cho´c nie wymaga, aby przed rozpocz˛eciem rozpowszechniania du ˙zej licz-
by kopii Dokumentu, Licencjobiorca skontaktował si˛e z jego autorami celem uzyska-
nia uaktualnionej wersji Dokumentu.

4. Modyfikacje

Licencjobiorca mo ˙ze kopiowa´c i rozpowszechnia´c Zmodyfikowan ˛

a wersj˛e Dokumen-

tu na zasadach wymienionych powy ˙zej w punkcie 2 i 3 pod warunkiem ´scisłego
przestrzegania niniejszej Licencji. Zmodyfikowana wersja pełni wtedy rol˛e Doku-
mentu, a wi˛ec Licencja dotycz ˛

aca modyfikacji i rozpowszechniania Zmodyfikowanej

243

background image

Rozdział 17. Licencja i prawa autorskie

wersji przenoszona jest na ka ˙zdego, kto posiada jej kopi˛e. Ponadto Licencjobiorca
musi w stosunku do Zmodyfikowanej wersji spełni´c nast˛epuj ˛

ace wymogi:

A. U ˙zy´c na Stronie tytułowej (i na okładkach, o ile istniej ˛

a) tytułu innego ni ˙z tytuł

Dokumentu i innego ni ˙z tytuły poprzednich wersji (które, o ile istniały, powinny
zosta´c wymienione w Dokumencie, w sekcji Historia). Tytułu jednej z ostatnich
wersji Licencjobiorca mo ˙ze u ˙zy´c, je ˙zeli jej wydawca wyrazi na to zgod˛e.

B. Wymieni´c na Stronie tytułowej, jako autorów, jedn ˛

a lub kilka osób albo jednos-

tek odpowiedzialnych za autorstwo modyfikacji Zmodyfikowanej wersji, a tak ˙ze
przynajmniej pi˛eciu spo´sród pierwotnych autorów Dokumentu (wszystkich, je´sli
było ich mniej ni ˙z pi˛eciu).

C. Umie´sci´c na Stronie tytułowej nazw˛e wydawcy Zmodyfikowanej wersji.

D. Zachowa´c wszelkie noty o prawach autorskich zawarte w Dokumencie.

E. Doda´c odpowiedni ˛

a not˛e o prawach autorskich dotycz ˛

acych modyfikacji obok

innych not o prawach autorskich.

F. Bezpo´srednio po notach o prawach autorskich, zamie´sci´c not˛e licencyjn ˛

a zezwala-

j ˛

ac ˛

a na publiczne u ˙zytkowanie Zmodyfikowanej wersji na zasadach niniejszej Li-

cencji w postaci podanej w Zał ˛

aczniku poni ˙zej.

G. Zachowa´c w nocie licencyjnej pełn ˛

a list˛e Sekcji niezmiennych i wymaganych

Tre´sci okładki podanych w nocie licencyjnej Dokumentu.

H. Doł ˛

aczy´c niezmienion ˛

a kopi˛e niniejszej Licencji.

I. Zachowa´c sekcj˛e zatytułowan ˛

a "Historia" oraz jej tytuł i doda´c do niej informa-

cj˛e dotycz ˛

ac ˛

a przynajmniej tytułu, roku publikacji, nowych autorów i wydawcy

Zmodyfikowanej wersji zgodnie z danymi zamieszczonymi na Stronie tytułowej.
Je ˙zeli w Dokumencie nie istnieje sekcja pod tytułem "Historia", nale ˙zy j ˛

a utworzy´c,

podaj ˛

ac tytuł, rok, autorów i wydawc˛e Dokumentu zgodnie z danymi zamieszc-

zonymi na stronie tytułowej, a nast˛epnie dodaj ˛

ac informacj˛e dotycz ˛

ac ˛

a Zmody-

fikowanej wersji, jak opisano w poprzednim zdaniu.

J. Zachowa´c wymienion ˛

a w Dokumencie (je´sli taka istniała) informacj˛e o lokaliza-

cji sieciowej, publicznie dost˛epnej Jawnej kopii Dokumentu, a tak ˙ze o podanych
w Dokumencie lokalizacjach sieciowych poprzednich wersji, na których został on
oparty. Informacje te mog ˛

a si˛e znajdowa´c w sekcji "Historia". Zezwala si˛e na po-

mini˛ecie lokalizacji sieciowej prac, które zostały wydane przynajmniej cztery lata
przed samym Dokumentem, a tak ˙ze tych, których pierwotny wydawca wyra ˙za na
to zgod˛e.

K. W ka ˙zdej sekcji zatytułowanej "Podzi˛ekowania" lub "Dedykacje" zachowa´c tytuł
i tre´s´c, oddaj ˛

ac równie ˙z ton ka ˙zdego z podzi˛ekowa ´n i dedykacji.

L. Zachowa´c wszelkie Sekcje niezmienne Dokumentu w niezmienionej postaci (doty-
czy zarówno tre´sci, jak i tytułu). Numery sekcji i równowa ˙zne im oznaczenia nie
s ˛

a traktowane jako nale ˙z ˛

ace do tytułów sekcji.

M. Usun ˛

a´c wszelkie sekcje zatytułowane "Adnotacje". Nie musz ˛

a one by´c zał ˛

aczane

w Zmodyfikowanej wersji.

N. Nie nadawa´c ˙zadnej z istniej ˛

acych sekcji tytułu "Adnotacje" ani tytułu pokry-

waj ˛

acego si˛e z jak ˛

akolwiek Sekcj ˛

a niezmienn ˛

a.

244

background image

Rozdział 17. Licencja i prawa autorskie

Je ˙zeli Zmodyfikowana wersja zawiera nowe sekcje pocz ˛

atkowe lub dodatki stano-

wi ˛

ace Sekcje drugorz˛edne i nie zawieraj ˛

ace materiału skopiowanego z Dokumentu,

Licencjobiorca mo ˙ze je lub ich cz˛e´s´c oznaczy´c jako sekcje niezmienne. W tym celu
musi on doda´c ich tytuły do listy Sekcji niezmiennych zawartej w nocie licencyjnej
Zmodyfikowanej wersji. Tytuły te musz ˛

a by´c ró ˙zne od tytułów pozostałych sekcji.

Licencjobiorca mo ˙ze doda´c sekcj˛e "Adnotacje", pod warunkiem, ˙ze nie zawiera ona

˙zadnych tre´sci innych ni ˙z adnotacje dotycz ˛

ace Zmodyfikowanej wersji -- mog ˛

a to

by´c na przykład stwierdzenia o recenzji kole ˙ze ´nskiej albo o akceptacji tekstu przez
organizacj˛e jako autorytatywnej definicji standardu.

Na ko ´ncu listy Tre´sci okładki w Zmodyfikowanej wersji, Licencjobiorca mo ˙ze do-
da´c fragment "do umieszczenia na przedniej okładce" o długo´sci nie przekraczaj ˛

a-

cej pi˛eciu słów, a tak ˙ze fragment o długo´sci do 25 słów "do umieszczenia na tylnej
okładce". Przez ka ˙zd ˛

a jednostk˛e (lub na mocy ustale ´n przez ni ˛

a poczynionych) mo-

˙ze zosta´c dodany tylko jeden fragment z przeznaczeniem na przedni ˛

a okładk˛e i je-

den z przeznaczeniem na tyln ˛

a. Je ˙zeli Dokument zawiera ju ˙z tre´s´c okładki dla danej

okładki, dodan ˛

a uprzednio przez Licencjobiorc˛e lub w ramach ustale ´n z jednostk ˛

a,

w imieniu której działa Licencjobiorca, nowa tre´s´c okładki nie mo ˙ze zosta´c dodana.
Dopuszcza si˛e jednak zast ˛

apienie poprzedniej tre´sci okładki now ˛

a pod warunkiem

wyra´znej zgody poprzedniego wydawcy, od którego stara tre´s´c pochodzi.

Niniejsza Licencja nie oznacza, i ˙z autor (autorzy) i wydawca (wydawcy) wyra ˙zaj ˛

a

zgod˛e na publiczne u ˙zywanie ich nazwisk w celu zapewnienia autorytetu jakiejkol-
wiek Zmodyfikowanej wersji.

5. Ł ˛

aczenie dokumentów

Licencjobiorca mo ˙ze ł ˛

aczy´c Dokument z innymi dokumentami wydanymi na wa-

runkach niniejszej Licencji, na warunkach podanych dla wersji zmodyfikowanych w
cz˛e´sci 4 powy ˙zej, jednak tylko wtedy, gdy w poł ˛

aczeniu zostan ˛

a zawarte wszystkie

Sekcje niezmienne wszystkich oryginalnych dokumentów w postaci niezmodyfiko-
wanej i gdy b˛ed ˛

a one wymienione jako Sekcje niezmienne poł ˛

aczenia w jego nocie

licencyjnej.

Poł ˛

aczenie wymaga tylko jednej kopii niniejszej Licencji, a kilka identycznych Sekcji

niezmiennych mo ˙ze zosta´c zast ˛

apionych jedn ˛

a. Je ˙zeli istnieje kilka Sekcji niezmien-

nych o tym samym tytule, ale ró ˙znej zawarto´sci, Licencjobiorca jest zobowi ˛

azany

uczyni´c tytuł ka ˙zdej z nich unikalnym poprzez dodanie na jego ko ´ncu, w nawiasach,
nazwy oryginalnego autora lub wydawcy danej sekcji, o ile jest znany, lub unikalne-
go numeru. Podobne poprawki wymagane s ˛

a w tytułach sekcji na li´scie Sekcji nie-

zmiennych w nocie licencyjnej poł ˛

aczenia.

W poł ˛

aczeniu Licencjobiorca musi zawrze´c wszystkie sekcje zatytułowane "Historia"

z dokumentów oryginalnych, tworz ˛

ac jedn ˛

a sekcj˛e "Historia". Podobnie ma post ˛

api´c

z sekcjami "Podzi˛ekowania" i "Dedykacje". Wszystkie sekcje zatytułowane "Adnota-
cje" nale ˙zy usun ˛

a´c.

6. Zbiory dokumentów

Licencjobiorca mo ˙ze utworzy´c zbiór składaj ˛

acy si˛e z Dokumentu i innych dokumen-

tów wydanych zgodnie z niniejsz ˛

a Licencj ˛

a i zast ˛

api´c poszczególne kopie Licencji po-

245

background image

Rozdział 17. Licencja i prawa autorskie

chodz ˛

ace z tych dokumentów jedn ˛

a kopi ˛

a doł ˛

aczon ˛

a do zbioru, pod warunkiem za-

chowania zasad Licencji dotycz ˛

acych kopii dosłownych we wszelkich innych aspek-

tach ka ˙zdego z dokumentów.

Z takiego zbioru Licencjobiorca mo ˙ze wyodr˛ebni´c pojedynczy dokument i rozpo-
wszechnia´c go niezale ˙znie na zasadach niniejszej Licencji, pod warunkiem zamiesz-
czenia w wyodr˛ebnionym dokumencie kopii niniejszej Licencji oraz zachowania za-
sad Licencji we wszystkich aspektach dotycz ˛

acych dosłownej kopii tego dokumentu.

7. Zestawienia z pracami niezale˙znymi

Kompilacja Dokumentu lub jego pochodnych z innymi oddzielnymi i niezale ˙znymi
dokumentami lub pracami nie jest uznawana za Zmodyfikowan ˛

a wersj˛e Dokumen-

tu, chyba ˙ze odnosz ˛

a si˛e do niej jako do cało´sci prawa autorskie. Taka kompilacja

jest nazywana zestawieniem, a niniejsza Licencja nie dotyczy samodzielnych prac
skompilowanych z Dokumentem, je´sli nie s ˛

a to pochodne Dokumentu.

Je ˙zeli do kopii Dokumentu odnosz ˛

a si˛e wymagania dotycz ˛

ace Tre´sci okładki wymie-

nione w cz˛e´sci 3 i je ˙zeli Dokument stanowi mniej ni ˙z jedn ˛

a czwart ˛

a cało´sci zestawie-

nia, Tre´s´c okładki Dokumentu mo ˙ze by´c umieszczona na okładkach zamykaj ˛

acych

Dokument w obr˛ebie zestawienia. W przeciwnym razie Tre´s´c okładki musi si˛e poja-
wi´c na okładkach całego zestawienia.

8. Tłumaczenie

Tłumaczenie jest uznawane za rodzaj modyfikacji, a wi˛ec Licencjobiorca mo ˙ze roz-
powszechnia´c tłumaczenia Dokumentu na zasadach wymienionych w punkcie 4. Za-
st ˛

apienie Sekcji niezmiennych ich tłumaczeniem wymaga specjalnej zgody wła´scicie-

li prawa autorskiego. Dopuszcza si˛e jednak zamieszczanie tłumacze ´n wybranych lub
wszystkich Sekcji niezmiennych obok ich wersji oryginalnych. Podanie tłumaczenia
niniejszej Licencji mo ˙zliwe jest pod warunkiem zamieszczenia tak ˙ze jej oryginalnej
wersji angielskiej. W przypadku niezgodno´sci pomi˛edzy zamieszczonym tłumacze-
niem a oryginaln ˛

a wersj ˛

a angielsk ˛

a niniejszej Licencji moc prawn ˛

a ma oryginalna

wersja angielska.

9. Wyga ´sni ˛ecie

Poza przypadkami jednoznacznie dopuszczonymi na warunkach niniejszej Licencji
nie zezwala si˛e Licencjobiorcy na kopiowanie, modyfikowanie, czy rozpowszechnia-
nie Dokumentu ani te ˙z na cedowanie praw licencyjnych. We wszystkich pozostałych
wypadkach ka ˙zda próba kopiowania, modyfikowania lub rozpowszechniania Do-
kumentu albo cedowania praw licencyjnych jest niewa ˙zna i powoduje automatycz-
ne wyga´sni˛ecie praw, które licencjobiorca nabył z tytułu Licencji. Niemniej jednak
w odniesieniu do stron, które ju ˙z otrzymały od Licencjobiorcy kopie albo prawa w
ramach niniejszej Licencji, licencje nie zostan ˛

a anulowane, dopóki strony te w pełni

si˛e do nich stosuj ˛

a.

246

background image

Rozdział 17. Licencja i prawa autorskie

10. Przyszłe wersje Licencji

W miar˛e potrzeby Free Software Foundation mo ˙ze publikowa´c nowe poprawione
wersje GNU Free Documenation License. Wersje te musz ˛

a pozostawa´c w duchu po-

dobnym do wersji obecnej, cho´c mog ˛

a si˛e ró ˙zni´c w szczegółach dotycz ˛

acych nowych

problemów czy zagadnie ´n. Patrz http://www.gnu.org/copyleft/. Ka ˙zdej wersji ni-
niejszej Licencji nadaje si˛e wyró ˙zniaj ˛

acy j ˛

a numer. Je ˙zeli w Dokumencie podaje si˛e

numer wersji Licencji, oznaczaj ˛

acy, i ˙z odnosi si˛e do niego podana "lub jakakolwiek

pó´zniejsza" wersja licencji, Licencjobiorca ma do wyboru stosowa´c si˛e do postano-
wie ´n i warunków albo tej wersji, albo którejkolwiek wersji pó´zniejszej opublikowa-
nej oficjalnie (nie jako propozycja) przez Free Software Foundation. Je´sli Dokument
nie podaje numeru wersji niniejszej Licencji, Licencjobiorca mo ˙ze wybra´c dowoln ˛

a

wersj˛e kiedykolwiek opublikowan ˛

a (nie jako propozycja) przez Free Software Foun-

dation.

Zał ˛

acznik: Jak zastosowa´c t˛e Licencj˛e dla swojego dokumentu.

Aby zastosowa´c t˛e Licencj˛e w stosunku do dokumentu swojego autorstwa, doł ˛

acz

kopi˛e Licencji do dokumentu i zamie´s´c nast˛epuj ˛

ac ˛

a informacj˛e o prawach autorskich

i uwagi o licencji bezpo´srednio po stronie tytułowej.

Copyright (c) ROK TWOJE IMIE I NAZWISKO Udziela si˛e zezwolenia do kopio-
wania rozpowszechniania i/lub modyfikacj˛e tego dokumentu zgodnie z zasadami
Licencji GNU Wolnej Dokumentacji w wersji 1.1 lub dowolnej pó´zniejszej opubliko-
wanej przez Free Software Foundation; wraz z zawartymi Sekcjami Niezmiennymi
LISTA TYTUŁÓW SEKCJI, wraz z Tekstem na Przedniej Okładce LISTA i z Tekstem
na Tylnej Okładce LISTA. Kopia licencji zał ˛

aczona jest w sekcji zatytułowanej "GNU

Free Documentation License"

Je´sli nie zamieszczasz Sekcji Niezmiennych, napisz "nie zawiera Sekcji Niezmien-
nych" zamiast spisu sekcji niezmiennych. Je´sli nie umieszczasz Teksu na Przedniej
Okładce wpisz "bez Tekstu na Okładce" w miejsce "wraz z Tekstem na Przedniej
Okładce LISTA", analogicznie post ˛

ap z "Tekstem na Tylnej Okładce"

Je´sli w twoim dokumencie zawarte s ˛

a nieszablonowe przykłady kodu programu, za-

lecamy aby´s tak ˙ze uwolnił te przykłady wybieraj ˛

ac licencj˛e wolnego oprogramowa-

nia, tak ˛

a jak Powszechna Licencja Publiczna GNU, w celu zapewnienia mo ˙zliwo´sci

ich u ˙zycia w wolnym oprogramowaniu.

Przypisy

1. http://www.fsf.org/copyleft/fdl.html

2. http://gnu.org.pl/text/GFDL-pl.html

3. http://www.fsf.org/licenses/fdl-1.2-diff.txt

247

background image

Rozdział 17. Licencja i prawa autorskie

248


Document Outline


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron