PLD Linux Distribution
Podr ˛ecznik u˙zytkownika, administratora i twórcy
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
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
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
IV. Podr˛ecznik administratora .........................................................................................57
adzanie pakietami..........................................................................................57
Informacje podstawowe ..................................................................................57
Zarz ˛
................................................60
Program RPM....................................................................................................69
9. Konfiguracja systemu ............................................................................................73
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
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
6
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
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
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
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
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
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
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
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
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
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
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
Rozdział 2. Zasoby sieciowe PLD
4
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
Rozdział 3. Historia powstania naszego logo
Rysunek 3-1. Logo główne
6
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
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
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
Rozdział 3. Historia powstania naszego logo
10
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Rozdział 4. Instalacja systemu
30
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
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
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
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]
]
[
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
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
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
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
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
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
Rozdział 5. Alternatywna metoda instalacji PLD przy pomocy RescueCD lub LiveCD
40
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
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
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
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
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
Rozdział 6. Instalacja PLD przy u˙zyciu chroota
46
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
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
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
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
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
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
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
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
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
Rozdział 7. Podstawy
56
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 ´
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Rozdział 8. Zarz ˛
adzanie pakietami
72
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
. 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 ˛
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
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
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
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
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
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
Rozdział 9. Konfiguracja systemu
94
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
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
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
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
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
Rozdział 10. Administracja
100
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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´
s´
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
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
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
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
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
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
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
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´
s´
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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´
z´
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Rozdział 12. Usługi dost˛epne w PLD
202
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
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
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
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
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
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
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
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
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
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
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
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
Rozdział 13. X-Window
nast˛epnie w pliki
~/.fluxbox/init
odszukujemy wpis:
session.screen0.rootCommand: i dodajemy: display -size ROZDZIELCOZ´
S´
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
Rozdział 13. X-Window
216
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
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
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
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
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
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
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
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
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
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
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
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
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
Rozdział 14. Mo˙zliwa droga do zostania szeregowym developerem PLD
230
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
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
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
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
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´
s´
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´
s´
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
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
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
Rozdział 15. W krainie CVS - czyli wielki kocioł
238
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
Rozdział 16. O podr˛eczniku
240
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
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
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
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
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
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
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
Rozdział 17. Licencja i prawa autorskie
248