Dla początkujących
FreeBSD – chwila dla admina, cz. 2
10
wrzesień 2009
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
11
www.lpmagazine.org
lin
ux
@
so
ftw
ar
e.
co
m
.p
l
FreeBSD – chwila
dla admina, cz. 2
Czy zastanawiałeś się kiedyś w jaki sposób można ułatwić sobie codzienną pracę i administrowanie
siecią? Z pewnością każdy o tym niejednokrotnie rozmyślał. Wielu uważa, że jest to skomplikowane
i pochłania wiele cennego czasu. Nie jest to prawdą, a dowodem tego jest poniższy tekst, który
prezentuje kilka szybkich i nieskomplikowanych zabiegów mogących sprawić, że zarządzanie grupą
komputerów wreszcie stanie się przyjemnością. Przeczytaj w jaki sposób sprawić, aby raz wykonana
konfiguracja owocowała przez długi czas.
Łukasz Ciesielski
N
a początku zajmiemy się zagadnieniem
często pomijanym, lecz niesłychanie istot-
nym, czyli uruchamianiem w systemie Fre-
eBSD oprogramowania stworzonego dla
Linuksa. Choć problem wydaje się błahy, w rzeczywisto-
ści jest niezwykle istotny, ponieważ niekiedy zachodzi po-
trzeba importowania oprogramowania dedykowanego dla
systemu Linux.
Mając już zainstalowane ulubione oprogramowanie,
przejdziemy do pakietu Samba. Oferuje on ogromne moż-
liwości i zdecydowanie ułatwia współpracę, pomiędzy
kilkoma komputerami. To właśnie dzięki niemu użytkow-
nicy sieci lokalnej (np. pracownicy firmy) mogą współ-
dzielić nie tylko pliki, ale również sprzęt biurowy taki jak
drukarki. Aby jednak odpowiednio skonfigurować całość
prześledzimy także wzorcowy proces instalacji drukarki
i odpowiedniego oprogramowania. Kilka prostych zabie-
gów zakończy problemy małych sieci.
Ponieważ jednym z największych utrapień każdego
administratora jest konieczność pamiętania o aktualiza-
cjach systemów, tworzeniu bieżących kopii zapasowych,
czy uruchamianiu określonych usług – częstokroć w ści-
śle określonym czasie – w artykule został zaprezentowa-
ny sposób konfiguracji jednego z najlepszych pakietów te-
go typu, czyli Cron. Jego zalety zostały także wykorzy-
stane w ostatnim zagadnieniu omówionym na końcu, któ-
rym jest współdzielenie plików konfiguracyjnych. Czyż
ustawianie każdego komputera w sieci z jednego stano-
wiska nie jest luksusem? Oczywiście, że jest i wie o tym
każdy administrator. Jeżeli nie, to zapraszam do pozna-
nia przedstawionych technik upraszczania tego, co wy-
daje się żmudne i skomplikowane, choć wcale takim być
nie musi.
Znów ten Linux!
To nieprawdopodobne, ale nawet korzystając z systemu
BSD może się zdarzyć sytuacja, w której będziemy zmu-
szeni do korzystania z aplikacji stworzonej z myślą o Li-
nuksie. Choć wydaje się to nonsensem, niestety jest praw-
dą. Podstawowym nasuwającym się pytaniem jest – Dla-
czego aplikacje nie są tworzone równolegle dla Linuksa i
BSD? Odpowiedź jest prosta i wydawałoby się, że oczy-
wista. Otóż firmy tworzące oprogramowanie bardzo czę-
sto nie zdają sobie sprawy jak często ich wyroby są wyko-
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
10
wrzesień 2009
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
11
www.lpmagazine.org
rzystywane w systemach z rodziny BSD. Dla
większości z nich nawet tworzenie klonów
aplikacji przeznaczonych wcześniej dla sys-
temu Microsoft Windows i przekompilowa-
nych tak aby działały w systemach Linux jest
zabiegiem raczej świeżym. Niekiedy komplet-
nie zapomniano o takich systemach jak Fre-
eBSD, NetBSD itd. choć są one powszechnie
wykorzystywane. W niektórych przypadkach
uznano, że skoro poszczególne gałęzie rodzi-
ny BSD nadają się najlepiej np. na serwery to
nie warto tworzyć dla nich oddzielnej wersji
oprogramowania (multimedia, grafika), ponie-
waż nie będzie ono wykorzystywane. W takich
sytuacjach skupiono się całkowicie na pakie-
tach przeznaczonych dla systemów Linux. Co
zaskakujące po uruchomieniu niektórych apli-
kacji tworzonych dla Linuksa w systemie Fre-
eBSD, okazało się że część z nich działa sta-
bilniej i wydajniej niż w pierwotnym środowi-
sku. W dużej mierze zależy to oczywiście od
posiadanego sprzętu i stopnia w jakim jest on
obsługiwany przez dany system.
Aby móc korzystać we FreeBSD z pa-
kietów binarnych stworzonych dla systemu
Linux, należy najpierw uruchomić tą usłu-
gę. Kompatybilność linuksowych plików bi-
narnych nie jest domyślnie włączona. Jeżeli
nie uruchomiliśmy jej na poziomie instalacji,
można bez problemu zrobić to wykorzystując
KLD (ang. Kernel LoaDable object), czy ładu-
jąc odpowiedni moduł jądra. W naszym przy-
padku jest to moduł linux. Aby można było
wykonać taką operację konieczne są upraw-
nienia superużytkownika. Teraz wystarczy w
konsoli wpisać polecenie
kldload linux
. Jak
nietrudno się domyśleć spowoduje to włącze-
nie kompatybilności jedynie na czas danej se-
sji. Po ponownym uruchomieniu systemu oka-
że się, że zabieg ten należy powtórzyć. Istnie-
je jednak możliwość włączenia tego modu-
łu na stałe. W tym celu wystarczy edytować
plik /etc/rc.conf i – jeżeli taka nie istnieje z pa-
rametrem
NO
– dodać linijkę
linux_enable-
=”YES”
. W celu sprawdzenia, czy moduł zo-
stał poprawnie załadowany można posłużyć
się poleceniem
kldstat
. W wyniku powi-
nien zostać wyświetlony plik linux.ko. Niekie-
dy może się zdarzyć, że z niewiadomych przy-
czyn kompatybilność nie zostanie uruchomio-
na. Należy wtedy ponownie skompilować ją-
dro systemu dodając do pliku konfiguracyjne-
go opcję
options COMPAT_LINUX
.
Uruchomienie oprogramowania tworzo-
nego dla systemu Linux zakończy się niepo-
wodzeniem, jeżeli nie zostaną zainstalowane
odpowiednie biblioteki spełniające wszystkie
zależności. Najprostszą metodą jest instalacja
za pomocą drzewa portów. Wystarczy przejść
do katalogu, w którym znajdują się źródła (tu
jest nim /usr/ports/emulators/linux_base), a
następnie wydać polecenia
make install
distclean
. Po zakończonej kompilacji i insta-
lacji linuksowe aplikacje zaczną działać. Jeśli
tak się nie stanie, a system nadal będzie zgła-
szał niespełnione zależności, można to w pro-
sty sposób naprawić. Niezbędny będzie sys-
tem Linux, ponieważ to właśnie z niego zosta-
ną skopiowane wymagane przez program bi-
blioteki. Pierwszą czynnością jest sprawdzenie
zależności dla danego programu, z których ko-
rzysta w systemie Linux. Wystarczy w konso-
li wydać polecenie
ldd /usr/bin/htop
(dla
programu htop). W efekcie zostaną wyświe-
tlone wszystkie biblioteki wykorzystywane
przez niego podczas pracy. Teraz wystarczy
je skopiować, przenieść do FreeBSD i umie-
ścić w katalogu /compat/linux. Ważne jest, aby
wewnętrzna struktura tego katalogu odpowia-
dała strukturze z systemu Linux. Choć brzmi
to skomplikowanie w rzeczywistości takie nie
jest. Jeśli biblioteka wymagana przez htop,
np. libncurses.so.5 znajdowała się w katalogu
/lib/libncurses.so.5, to po przeniesieniu jej do
systemu FreeBSD powinna znajdować się w
/compat/linux/lib/libncurses.so.5.
Dzięki kilku prostym zabiegom FreeBSD
umożliwia korzystanie z oprogramowania do-
stępnego dla systemów z rodziny Linuksa, ta-
kich jak np. Matlab, Mathematica, Oracle czy
htop. Może wydawać się nieco nienaturalnym
zabiegiem korzystanie z binariów Linuksa we
FreeBSD. Czasem jednak nie ma innej moż-
liwości lub metoda ta jest po prostu szybsza.
Emulowanie takiego oprogramowania w za-
łożeniach jest podobne do korzystania z ma-
szyn wirtualnych, a przecież nikt tego nie ne-
guje i nie potępia. Kolejnym powodem, który
utwierdza w przekonaniu, że nie zawsze war-
to rezygnować z możliwości jakie daje kom-
patybilność aplikacji linuksowych z systema-
mi BSD jest niekiedy stopień zaawansowania
danego projektu. Może się bowiem okazać,
że program przeznaczony dla Linuksa jest w
nowszej wersji niż jego odpowiednik dla BSD.
Wiąże się to nie tylko z dodatkową funkcjonal-
nością takiego pakietu, ale także z większym
bezpieczeństwem i stabilnością.
Samba
W sieciach biurowych korzystanie z tych sa-
mych sprzętów przez użytkowników pracują-
cych na wielu komputerach jest codziennością.
Stworzenie sprawnie działającej sieci jest nie-
kiedy sporym wyzwaniem. Wyobraźmy sobie
jednak, że na każdym komputerze został za-
instalowany inny system operacyjny, np. Mi-
crosoft Windows, BSD i Linux. W jaki sposób
sprawić, aby poszczególni użytkownicy mogli
bez problemu dzielić się plikami i współdzie-
lić urządzenia jak chociażby drukarki, czy ska-
nery? Bez dodatkowego oprogramowania by-
łoby to niezwykle trudne zadanie. W takich sy-
tuacjach z pomocą przychodzi Samba. To wła-
śnie dzięki niej możliwe jest dzielenie się za-
równo systemem plików jak i podłączonymi
urządzeniami. Jak to możliwe? Otóż syste-
my takie jak wspomniany już Microsoft Win-
dows i OS/2 wykorzystują do sieciowej ko-
munikacji zachodzącej pomiędzy serwerami
i klientami protokół SMB (ang. Server Mes-
sageBlock). Samba jest zbiorem aplikacji, któ-
re nie tylko rozumieją ten protokół, ale potra-
fią z niego sprawnie korzystać. Dzięki takiemu
podejściu serwery stworzone na BSD czy Li-
nuksie korzystają z tego samego protokołu co
serwery Microsoft Windows. Fakt ten wiąże
się z możliwością naśladowania, a właściwie
podszywania się systemu BSD z zainstalowa-
nym pakietem Samby pod serwer w sieci Win-
dows. Oferuje to użytkownikom wiele możli-
wości i udogodnień. Najważniejszą jest oczy-
wiście możliwość współdzielenia plików po-
między komputerami z zainstalowanymi róż-
nymi systemami operacyjnymi. Drugą ważną
usługą jest współdzielenie podłączonych do
serwera i poszczególnych klientów drukarek.
To jednak nie wszystko! Dzięki Sambie użyt-
kownicy mogą nie tylko przeglądać otoczenie
sieciowe, ale także – w przypadku logujących
się do domeny Windows – zostać automatycz-
nie uwierzytelnieni. Zdecydowanie usprawnia
to proces współpracy użytkowników zarówno
w małych jak i dużych sieciach lokalnych.
Najważniejszymi składnikami pakietu
Samba są daemony: smbd oraz nmbd. Pierw-
szy z wymienionych jest odpowiedzialny za
współdzielenie plików i drukarek. Do jego
zadań należy także uwierzytelnianie klien-
tów protokołu SMB. Należy jednak pamiętać,
że Samba świadczy także usługi WINS (ang.
Windows Internet Name Service), czyli tłuma-
czenie nazw komputerów na adresy interneto-
we. Dzięki temu użytkownik nie musi znać ad-
resu IP komputera z którym chce nawiązać po-
łączenie. Wystarczy, że poda jego nazwę, np.
kierownik, a daemon nmbd automatycznie
przetłumaczy ją na odpowiedni adres IP. Jest
to niezwykle istotne, gdyż w znaczącym stop-
niu ułatwia pracę.
Instalacja Samby we FreeBSD nie po-
winna przysporzyć trudności. Pierwszą me-
todą jest oczywiście możliwość skorzysta-
nia z gotowej paczki binarnej. Instalujemy ją
wydając – jako root – polecenie
pkg_add -r
-v samba
. Plik zostanie automatycznie pobra-
ny i zainstalowany w systemie. Druga metoda
12
wrzesień 2009
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
13
www.lpmagazine.org
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
to oczywiście instalacja z portów. W tym celu
wystarczy przejść do katalogu /usr/ports/net/
samba i wydać polecenie
make install cle-
an
. Zanim jednak będzie możliwe korzystanie
z Samby, należy ją odpowiednio skonfiguro-
wać. Na początku konieczna będzie zmiana
nazw dwóch plików: smb.conf.sample i sam-
ba.sh.sample. Pierwszy z nich powinien mieć
postać /usr/local/etc/smb.conf, natomiast drugi
/usr/local/etc/rc.d/samba.sh. Plik smb.conf za-
wiera szczegółową konfigurację pakietu Sam-
ba. To właśnie on odpowiada za prawidłowe
funkcjonowanie programu. Aby uruchomić
Sambę można wykorzystać plik inetd.conf,
jednak znacznie wygodniejszą i prostszą me-
todą jest wykorzystanie skryptu samba.sh i da-
emonów. W tym celu należy wydać polece-
nia
smbd start
i
nmbd start
. W dowolnej
chwili użytkownik może zatrzymać działanie
Samby poleceniem
/usr/local/etc/rc.d/
samba.sh stop
, lub wywołać jej przełado-
wanie poleceniem
/usr/local/etc/rc.d/
samba.sh restart
.
Sercem pakietu Samba jest plik konfigu-
racyjny smb.conf. W jaki sposób poprawnie go
skonfigurować? Otóż najistotniejszą sprawą
jest dokładne zaplanowanie charakteru sieci,
stopnia zabezpieczeń, zebranie niezbędnych
informacji, a na końcu wyposażenie pliku w
odpowiednie wpisy. Prace nad konfiguracją
zaczynamy od ustawienia trzech zmiennych o
charakterze globalnym. Pierwsza pozwala na
określenie grupy roboczej w naszej sieci. Je-
żeli nie ma, to należy dopisać nazwę zmien-
nej, czyli
workgroup
i przypisać do niej grupę.
Warto zwrócić uwagę, że przypisanie wartości
następuje zawsze po znaku równości. Następ-
nie należy ustawić nazwę NetBIOS-u, czyli
nazwę pod którą będzie widoczny serwer np.
w Otoczeniu Sieciowym – zmienna
netbios
name
. Dla uproszczenia można także dodać
komentarz opisujący dany komputer. W przy-
padku rozbudowanych sieci zabieg ten potrafi
znacznie ułatwić pracę.
Jeżeli pragniemy, aby nasze dane były do-
brze chronione, to właśnie dzięki wykorzysta-
niu tego pliku w prosty sposób można określić,
który host będzie mógł korzystać z zasobów,
a który nigdy nie zostanie do nich dopuszczo-
ny. Można wykorzystać do tego zmienne
ho-
sts allow
i
host deny
. Pierwsza z nich okre-
śla grupę, która będzie mogła korzystać z udo-
stępnionych zasobów. Druga zmienna to nic
innego, jak nazwy hostów bez uprawnień do
łączenia się z Sambą. Jest to rodzaj czarnej li-
sty, na której znajduje się każdy niechciany
host, np.
host deny = xxx.xxx.xxx.xxx
.
Oczywiście istnieje także możliwość udostęp-
nienia zasobów dla tzw. konta gościa. Wystar-
czy ustawić zmienną
guest account
przy-
pisując jej odpowiednie wartości. Wiąże się
z tym również opcja
security
, która powin-
na mieć jedną z dwóch postaci:
security =
share
lub
security = user
. Pierwszy pa-
rametr zabezpiecza dostęp na poziomie zaso-
bów, natomiast drugi ze wspomnianych na po-
ziomie użytkownika. Dostępne jest także po-
lecenie
security = server
działające na po-
ziomie serwera.
Ostatnim krokiem jest przypisanie od-
powiednich ustawień poszczególnym udzia-
łom. Nie ma idealnej receptury, ponieważ za-
leżą one w dużej mierze od indywidualnych
wymagań użytkownika. Warto jednak wspo-
mnieć, że charakterystyki udziału dokonuje
się dzięki kilku zmiennym. Zanim jednak do
nich przejdziemy sprawdźmy jakie przydziały
mają znajdować się w pliku konfiguracyjnym.
Z całą pewnością będą to takie udziały jak ho-
mes (katalogi domowe), printers (dukarki),
cdrom, netlogon (skrypty logowania) i public.
Oczywiście nie są to wszystkie możliwości, a
jedynie te, które są najczęściej wykorzystywa-
ne. Aby możliwe było szybkie rozpoznawanie,
każdy udział zawiera zmienną
comment
zawie-
rającą komentarz. Jeżeli mamy już opis war-
to określić, czy dany udział ma być widocz-
ny dla wszystkich. W tym celu ustawiamy
odpowiednio wartość
yes
lub
no
dla zmien-
nej
browseable
. Niezwykle ważnym punk-
tem jest określenie możliwości zapisu i odczy-
tu danego udziału. Jeśli zależy nam, aby był
on tylko do odczytu ustawiamy zmienną
read
only
. Jest to parametr stosowany zamiennie z
writeable
, który zezwala na zapis kiedy zo-
stanie mu przypisana wartość
yes
. O ile
brow-
seable
sprawia, że udział staje się widoczny
dla wszystkich, funkcja guest ok powoduje, że
jest on dla wszystkich dostępny. Jeżeli zależy
nam na bezpieczeństwie należy przemyśleć
zastosowanie tych opcji, ponieważ źle użyte
mogą stać się luką wykorzystaną przez osoby
nieuprawnione. Właśnie dlatego warto niekie-
dy przypisać listę konkretnych użytkowników,
którzy będą mieli dostęp do danych. Można
to osiągnąć w prosty sposób, przypisując li-
stę osób do zmiennej
valid users
. Aby wy-
branym użytkownikom lub grupom dać prawo
do zapisu w obrębie danego udziału, wystar-
czy dodać ich nazwy (zapisując po przecinku)
do
write list
. W ten prosty sposób można
uzyskać pewien stopień bezpieczeństwa. Nie
oznacza to jednak, że nie można zrobić nicze-
go więcej. Wręcz przeciwnie, wystarczy zain-
teresować się nakładaniem odpowiednich ma-
sek na nowo tworzone pliki i katalogi (
create
mode
,
directory mode
) oraz zapoznać się z
plikiem haseł Samby (
smbpasswd
).
Samba jest doskonałym oprogramowa-
niem, które w wielu sytuacjach pozwala na
usprawnienie współpracy pomiędzy poszcze-
gólnymi użytkownikami, co z kolei wpływa
na efektywność ich pracy. Warto zapoznać się
z oryginalną dokumentacją, ponieważ jedynie
w ten sposób będziemy mogli w pełni wyko-
rzystać potencjał tkwiący w Sambie. Znajduje
się tam również wiele dodatkowych opcji, któ-
rych omówienie w znacznym stopniu wykra-
cza poza ramy tego tekstu.
Drukarki i bohomazy
Jak wiadomo najwięcej problemów pojawia
się zawsze na etapie konfigurowania sprzę-
tu. Ponieważ najczęściej wykorzystywanym
są właśnie drukarki, zajmiemy się teraz ich
ustawieniami i przygotowaniem do popraw-
nej pracy. Prześledzimy proces konfiguracyj-
ny od początku, ponieważ umożliwi to każ-
demu zdiagnozowanie ewentualnych proble-
mów, a dokładniej miejsca, w którym wystę-
pują. Na początek koniecznie należy spraw-
dzić, czy wszystko jest poprawnie podłączo-
ne: kable, zasilacz itd. Choć wydaje się, że to
błahostka może przysporzyć wielu kłopotów,
a najważniejszym jest błąd konfiguracji. W ta-
kim wypadku niepotrzebnie stracimy czas i nie
uda się poprawnie ustawić sprzętu. Po dokład-
nych oględzinach i włączeniu drukarki, można
przejść do dalszych działań. Na początek za-
leca się niewielką przebudowę jądra systemo-
wego, lecz w przypadku jego nowych wersji
nie jest to konieczne. Dla całościowego przed-
stawienia tego zagadnienia sprawdźmy co po-
winno znaleźć się w systemowym jądrze. Za-
sadniczo są to ustawienia związane z obsługą
portu USB. Ponieważ wszystkie nowe drukar-
ki podłącza się przez ten właśnie port, kernel
musi zawierać opcję device usb. Jeżeli nasz
kontroler USB jest zintegrowany z chipse-
tem Intel, powinniśmy dodać również opcję
device uhci. Dla producentów innych niż In-
tel będzie to device ohci. No dobrze, ale jak to
sprawdzić? Najprostszym sposobem jest po-
służenie się poleceniem
dmesg
(np.
dmesg |
grep uhub
). Na końcu dodajemy port drukar-
ki – device ulpt – i kompilujemy jądro z nowy-
mi ustawieniami. Kompilacja może przebie-
gać na kilka sposobów, jednak tradycyjnie po-
lega na przejściu do katalogu, w którym znaj-
duje się nowe jądro systemu i wydaniu pole-
cenia
make depend
(buduje zależności),
ma-
ke
a następnie
make install
(buduje i insta-
luje gotowe jądro). Prostszym sposobem jest
jednak wykorzystanie polecenia
make bu-
ildkernel
KERNCONF=NAZWA_KERNELA
. Spo-
woduje to zbudowanie jądra, natomiast aby je
zainstalować wydajemy polecenie
make in-
12
wrzesień 2009
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
13
www.lpmagazine.org
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
stallkernel
KERNCONF=NAZWA_KERNELA
.
Trudno przewidzieć, czy zmiana domyślnych
parametrów okaże się niezbędna, jednak war-
to o niej pamiętać w razie pojawienia się pro-
blemów. Wiedza ta może pomóc w poszuki-
waniu ich źródła.
Teraz należy uruchomić daemona odpo-
wiedzialnego za obsługę portów USB. Robi-
my to poprzez edycję pliku /etc/rc.conf i do-
danie (jeżeli nie istnieje) linii
usbd_enable-
="YES"
. Dzięki temu drukarka powinna zo-
stać wykryta, jednak aby się upewnić warto
sprawdzić listę urządzeń. Oczywiście nas in-
teresuje ULPT, np. ulpt0. Można tego doko-
nać wpisując w konsoli ls /dev/ulpt*. Polece-
nie to wyświetli wszystkie urządzania tego ty-
pu odnalezione przez jądro. Jeśli jednak oka-
że się, że drukarka nie została wykryta, należy
samodzielnie stworzyć odpowiednie urządze-
nie w katalogu /dev, np. ./MAKEDEV ulpt0.
Dobrą praktyką jest także przeglądanie komu-
nikatów jądra, ponieważ pozwala to niezwy-
kle precyzyjnie określić aktualny stan danego
urządzenia. Nie jest to trudne, a dodatkowym
ułatwieniem jest polecenie grep, które wyszu-
ka dla nas dowolny ciąg z wszystkich komuni-
katów. Jest to kolejny dowód na to, że świado-
mość tego, czego się szuka jest podstawą. W
konsoli wydajemy polecenie
dmesg | grep
ulpt
. Jeśli drukarka została poprawnie wykry-
ta zobaczymy numer i nazwę urządzenia, np.
ulpt0: HP Deskjet.
Kiedy drukarka jest już podłączona i po-
prawnie wykryta przez jądro systemu, nale-
ży zainstalować odpowiednie oprogramowa-
nie. W przypadku FreeBSD jest ono dostępne
w portach i wystarczy je skompilować. Pod-
stawę stanowią trzy pakiety: cups (ang. Com-
mon UNIX Printing System), ghostscript-gnu
i cups-lpr. Pierwszy z nich jest nowocze-
snym systemem obsługującym takie urządze-
nia jak drukarki. To właśnie on wraz z pakie-
tem cups-lpr są podstawą do prawidłowego
funkcjonowania całego systemu druku. Gho-
stscript natomiast odpowiada za interpreto-
wanie plików PS (PostScript) oraz PDF (Por-
table Document Format). Dla drukarek firmy
Hewlett-Packard niezbędny okaże się rów-
nież odpowiedni sterownik, który uzyskamy
instalując pakiet hpijs (znajdujący się w por-
tach). Wszystkie z wymienionych pakietów
znajdują się w katalogu /usr/ports/print. Pra-
widłowo zakończony proces instalacji pakie-
tu CUPS, powinien zakończyć się utworze-
niem pliku /usr/local/etc/rc.d/cupsd.sh.sam-
ple. Jego nazwę należy zmienić na cupsd.sh,
dzięki czemu zyskamy właściwy plik konfi-
guracyjny. Teraz możemy już uruchomić da-
emona druku, np. poleceniem
sh cupsd.sh
start
. Od tej pory CUPS będzie działał, a
nam nie pozostaje nic innego jak dodać naszą
drukarkę. Zarówno dodanie nowego sprzętu
jak i wprowadzanie jego ustawień odbywa się
za pomocą panelu administracyjnego urucho-
mionego w przeglądarce internetowej. Aby
go uruchomić wystarczy wpisać adres http:
//127.0.0.1:631/admin/ lub http://localhost:
631/admin. Aby dodać nową drukarkę klika-
my na Dodaj drukarkę (ang. Add printer) a
następnie wypełniamy trzy pola: nazwa (ang.
Name), położenie i opis (ang. Description).
Obowiązkowe jest podanie nazwy drukarki w
pierwszym polu. Warto jednak zwrócić uwa-
gę, że powinna ona mieć możliwie najkrótszą
postać, np. HP2280. Ostatnie pole jest prze-
znaczone do opisu i tam można dokładnie
opisać nasz sprzęt. Po wskazaniu nazwy do-
dawanego sprzętu przechodzimy do kolejne-
go etapu, w którym wskażemy sposób podłą-
czenia urządzenie. Jeżeli dodawana drukarka
została podłączona przez USB, odpowiednim
wyborem będzie USB Printer #1. W przy-
padku drukarki Helwett-Packard może być
to również opcja APP/Socket HP/JetDirect.
Jako adres URI najczęściej podaje się lpd://
hostname/queue, choć nie jest to regułą. Dal-
sza część konfiguracji ogranicza się jedynie
do wyboru odpowiedniego modelu sprzętu i
sterownika (dla HP będzie nim wspomnia-
ny wyżej hpijs). Nie powinno to jednak ni-
komu sprawić trudności. Jeżeli konfiguracja
przebiegła pomyślnie – o czym powinniśmy
zostać poinformowani – drukarka jest goto-
wa do pracy.
Aby przetestować drukarkę korzystając
z konsoli możemy wykorzystać program lpr.
Wystarczy wpisać, np. lpr -P HP2280 /jakiś/
plik. Podany identyfikator drukarki musi być
tożsamy z nazwą podaną w panelu administra-
cyjnym podczas dodawania sprzętu. Równie
prosty w obsłudze jest program cupsdoprint,
pozwalający na drukowanie zarówno tekstu
jak i zdjęć. Zanim jednak skorzystamy z jego
usług należy wyeksportować drukarkę, dzię-
ki czemu nie będzie konieczności jej każdora-
zowego wskazywania. Robimy to poleceniem
export PRINTER=HP2280
. Teraz nie pozosta-
ło nam nic innego jak tylko wpisać w konso-
li
cupsdoprint /jakiś/plik
i cieszyć oczy
wydrukiem na papierze.
Drukarka jest niezaprzeczalnie jednym z
najczęściej wykorzystywanych sprzętów za-
równo w biurze jak i w domu. Poprawna kon-
figuracja pozwoli zaoszczędzić wiele czasu i
nerwów, a w połączeniu z takim oprogramo-
waniem jak Samba staje się potężnym na-
rzędziem wspomagającym nas w codzien-
nej pracy.
Twój przyjaciel Cron
FreeBSD oferuje doskonały system o tajemni-
czej nazwie cron, którego celem jest cyklicz-
ne wykonywanie zadań, uruchamianie usług
itp. Zapewne każdy stanął kiedyś przed dy-
lematem uruchamiania napisanego skryptu o
konkretnej godzinie, danego dnia, miesiąca
lub nawet dnia tygodnia. Wydawałoby się to
niezwykle skomplikowanym zadaniem, gdy-
by nie przyszedł z pomocą pakiet cron i jego
daemon crond. To właśnie dzięki nim można
dokładnie zaplanować wykonanie kopii zapa-
sowej, sprawdzenie statusu aktualizacji opro-
gramowania, a nawet uruchomić skrypt ak-
tualizujący kursy walut. Oczywiście zadania
te zazwyczaj wykonują programy zewnętrz-
ne. Warto jednak pamiętać, że bez odpowied-
niego daemona pracującego w tle robienie ko-
pii zapasowej danych, np. co pięć minut było-
by niezwykle uciążliwym zadaniem, ponieważ
wiązałoby się to z nieustannym przebywaniem
przed komputerem i uruchamianiem odpo-
wiedniego oprogramowania. Praca z plikami
dynamicznie zmieniającymi swoją zawartość
jest dosyć powszechna, natomiast awaria sys-
temu może się zdarzyć w najbardziej nieocze-
kiwanym momencie. Co wtedy zrobić? Naj-
prościej byłoby odtworzyć utracone dane, ale
problem pojawia się jeśli ich nie posiadamy.
Oczywiście tworzenie kopii zapasowych to
jedynie jedno z wielu możliwych zastosować
programu cron. Jego mocną stroną jest dosko-
nały mechanizm działania w tle, co nie zakłó-
ca pracy użytkownika.
Zasada działania tego pakietu jest pro-
sta i opiera się na okresowym sprawdzaniu
tzw. plików-tabel (crontab) znajdujących się
w katalogu /var/spool/cron/crontabs oraz pli-
ku /etc/crontab. Zanim zaczniemy je dokład-
nie analizować warto zauważyć, że pliki w ka-
talogu /var/spool/cron/crontabs różnią się od
pliku /etc/crontab nie tylko składnią ale też na-
zewnictwem. O ile nazwa tego drugiego jest
stała, to nazwy poszczególnych plików z ka-
talogu /var/spool/cron/crontabs odpowiadają
nazwom kont systemowych. To właśnie w tym
katalogu znajdą się pliki zawierające konfigu-
racje poszczególnych użytkowników systemu.
Ogromną zaletą crona jest automatyczna aktu-
alizacja stanu plików konfiguracyjnych, dzię-
ki czemu nie ma konieczności zatrzymywania
i ponownego uruchamiania daemona. Co mi-
nutę program sprawdza, czy zmienił się czas
modyfikacji każdego z plików i jeżeli wykryje
różnice, natychmiast wczytuje jego zawartość.
Choć mogłoby się wydawać, że odstęp jednej
minuty jest zbyt długi, w rzeczywistości mi-
ja się to z prawdą. Gdyby częstotliwość uak-
tywniania się programu była większa, efektem
14
wrzesień 2009
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
15
www.lpmagazine.org
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
mogłoby być zbędne zaśmiecanie pamięci.
Dlaczego tabela systemowa /etc/crontab nie
ma takiej składni jak pliki crontab użytkowni-
ków? Wynika to z faktu, że zawiera ona dodat-
kowe informacje dla programu, natomiast ta-
bele użytkowników zawierają jedynie określe-
nie czasu i zadania do wykonania, co znacznie
upraszcza pracę z programem i sprawia, że są
one bardziej czytelne.
Właściwa konfiguracja może przebiegać
dwojako. Po pierwsze można umieścić polece-
nia do wykonania w pliku /etc/crontab, jednak
najczęściej każdemu użytkownikowi przypi-
suje się jego własny plik konfiguracyjny. Za-
pis poleceń programu cron jest nietypowy, jed-
nak już po kilku próbach konfiguracja staje się
czytelna i przejrzysta. Pojedyncze polecenie
składa się z sześciu pól, z których każde mu-
si zostać uwzględnione. Wyjątkiem jest tabe-
la zawarta w pliku /etc/crontab, gdzie do dys-
pozycji mamy siedem pól, ale o tym poniżej.
Pierwsze dwie pozycje określają czas podawa-
ny jednak w odwrotnej kolejności, czyli na po-
czątku znajdują się minuty, a następnie godzi-
ny. Każda z kolejnych wartości musi być od-
dzielona spacją lub tabulatorem. Następnie na-
leży ustawić datę, a dokładniej dzień i miesiąc.
Na koniec określamy dzień tygodnia. W tym
miejscu ważna uwaga! Cron liczy zaczyna-
jąc od zera, czyli to właśnie ono będzie ozna-
czało niedzielę, jedynka poniedziałek itd. Je-
śli chcemy podać kilka godzin, minut, dni itp.
to należy wpisać kolejne wartości po przecin-
ku, np.
00 12,13 01 10
. Zapis ten oznacza,
że program uruchomi polecenie punktualnie
o godzinie dwunastej i trzynastej pierwszego
października. Aby polecenie było uruchamia-
ne codziennie pomiędzy, np. dziesiątym a pięt-
nastym dniem miesiąca używamy znaku myśl-
nika (
10-15
). Opisane tu opcje można stoso-
wać do wszystkich wprowadzanych warto-
ści. Nic nie stoi na przeszkodzie, aby urucho-
mić nasz skrypt jedynie w dni parzyste. Wy-
starczy w miejscu przeznaczonym na podanie
dnia wpisać
*/2
. Należy pamiętać, że nie wol-
no zostawiać żadnego pola pustego. Jeśli nie
zależy nam na konkretnej wartości, wpisuje-
my w to miejsce znak gwiazdki.
Podsumowując, w programie wyróżnia-
my dwa rodzaje tabel: systemową składającą
się z siedmiu pól oraz poszczególnych użyt-
kowników (sześć pól). Pierwsze dwie warto-
ści to określenie godziny, czyli minuty (
0-59
)
i godziny (
0-23
). Liczba mnoga została użyta
celowo, ponieważ cron dopuszcza ustawienie
kilku godzin. Następnie należy określić dzień
(
1-31
), miesiąc (
1-12
) i dzień tygodnia (
0-6
),
w którym mają zostać wykonane zadania. W
przypadku tabeli użytkownika kolejną war-
tością byłyby właśnie polecenia do wykona-
nia. W odniesieniu do konfiguracji globalnej
są one poprzedzone określeniem praw z jaki-
mi mają zostać wykonane polecenia. Podawa-
nia nazwy użytkownika w tabelach użytkow-
ników mijałoby się z celem, ponieważ zada-
nia są automatycznie wykonywane z prawami
właściciela danego konta.
Twórcy programu zadbali również o udo-
stępnienie możliwości stosowania w tabelach
zmiennych środowiskowych. Pierwszą jest
SHELL
, dzięki której użytkownik może wybrać
powłokę jaka będzie używana podczas wy-
konywania poleceń, np.
sh
(domyślna),
bash
itd. Aby wszystkie polecenia działały popraw-
nie, należy także ustawić odpowiednie ścieżki
do plików wykonywalnych. Przypisujemy je
do zmiennej
PATH
, oddzielając poszczególne
ścieżki znakiem dwukropka. Jeśli chcemy, aby
powiadomienia były wysyłane do konkretnego
użytkownika lub na podany adres e-mail, wy-
starczy przypisać tą wartość do zmiennej
MA-
ILTO
. Także na ten adres będą wysyłane infor-
macje z tzw. standardowego strumienia błę-
dów. Dostępne są również takie zmienne jak:
HOME
,
USER
,
LOGNAME
. Są one jednak wykorzy-
stywane nieco rzadziej.
Aby ułatwić pracę z cronem, dokonano
podziału na zadania wykonywane co godzi-
nę, codziennie, raz w tygodniu i raz w mie-
siącu. Utworzono w tym celu odpowiednie
katalogi, których nazwy jednoznacznie wska-
zują w jakim okresie mają zostać wykonane
skrypty. Są to kolejno: cron.hourly, cron.da-
ily, cron.weekly i cron.monthly. W katalogach
tych umieszcza się pliki z poleceniami do wy-
konania. Choć zasadniczo domyślna konfigu-
racja nie zezwala użytkownikom na tworze-
nie własnych zadań crona, można to zmie-
nić. Wystarczy dopisać danego użytkownika
do pliku cron.allow. Wygodnym sposobem na
kontrolę i dodawanie zadań jest program cron-
tab. Posiada on opcję pozwalającą na szybkie
wyświetlenie listy zdefiniowanych poleceń
(
-l
), a także na usuwanie ich (
-r
) i edycję pli-
ku konfiguracyjnego (
-e
) w celu dodania no-
wych zadań. Aby móc kontrolować zadania
użytkowników, root ma do dyspozycji dodat-
kową opcję
-u
.
Cron jest niewielkim programem, jednak
posiada ogromny potencjał i pozwala na ła-
twą organizację pracy. Dzięki niemu zniknie
problem zadań, które muszą być wykonywa-
ne niemalże rutynowo, np. kopie danych, a o
których często się zapomina. Możliwość nie-
zwykle precyzyjnego ustawienia czasu i cy-
kliczności uruchamiania skryptów spowo-
dowały, że częstokroć program ten okazu-
je się doskonałym rozwiązaniem. Odpowied-
nio skonfigurowany potrafi zaoszczędzić użyt-
kownikom wiele czasu i stać się ukrytym stró-
żem systemu.
Centralizacja administrowania
Administrowanie siecią komputerów, np. w
szkole czy na uniwersytecie, które nie posia-
dają centralnego punktu administracyjnego
może być niezwykle uciążliwe i przysporzyć
niekiedy wiele problemów. Należy zadbać,
aby na każdym komputerze był zainstalowa-
ny ten sam system operacyjny wyposażony w
te same ustawienia (hasła itp.). Dodawanie ko-
lejnych użytkowników wiąże się w takim wy-
padku z powtarzaniem tej czynności na każ-
dym komputerze. W tym momencie nieoce-
niony okazuje się NIS/YP (ang. Network In-
formation Service). Zastanówmy się, czym w
ogóle jest NIS? Uogólniając jest to system,
który został oparty na technologii klient-ser-
wer i RPC. Dzięki takiemu rozwiązaniu kom-
putery będące w tej samej domenie co NIS
mogą współdzielić pomiędzy sobą ustawienia
plików konfiguracyjnych. Po skonfigurowa-
niu klienta systemu NIS, administrator może
wprowadzać dowolne modyfikacje dla każde-
go komputera jednocześnie, korzystając przy
tym wyłącznie z jednego stanowiska. Biorąc
pod uwagę funkcjonalność, system NIS jest
podobny – ale nie tożsamy – do systemu do-
men Windows NT.
Przygotowanie systemu NIS do pracy we
FreeBSD wiąże się z ustawieniem kilku para-
metrów i uruchomieniem niezbędnych proce-
sów. Zanim jednak zajmiemy się ich szcze-
gółowym opisem, zastanówmy się jak może
wyglądać przykładowa konfiguracja. Przede
wszystkim niezbędny będzie główny serwer o
adresie np. x.x.x.1. Zaleca się także utworze-
nie zapasowego serwera NIS. Jego brak może
niekiedy być powodem poważnych kłopotów
z całą lokalną siecią, korzystającą ze współ-
dzielonych plików konfiguracyjnych (przy-
kładowy adres to x.x.x.2). W dalszej kolej-
ności będą znajdowały się komputery klienc-
kie (np. x.x.x.3, x.x.x.4 itd.). Ważnym punk-
tem jest wybór odpowiedniej maszyny pełnią-
cej rolę serwera. Ponieważ w przypadku sys-
temu NIS istnieją niezwykle silne zależności
pomiędzy poprawnym działaniem połączeń
klient-serwer, komputer funkcjonujący w ro-
li serwera powinien być zawsze dyspozycyj-
ny. Idealnym rozwiązaniem jest przeznaczenie
oddzielnej maszyny, która będzie tę rolę speł-
niała. W sytuacji, kiedy klient nie będzie mógł
połączyć się z serwerem aby pobrać potrzebne
dane (np. informacje o użytkownikach i gru-
pach), najprawdopodobniej nastąpi zawiesze-
nie się systemu operacyjnego, co uniemożliwi
14
wrzesień 2009
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
15
www.lpmagazine.org
Dla początkujących
FreeBSD – chwila dla admina, cz. 2
pracę na tym komputerze. Oczywiście jest wy-
mogiem, aby serwer NIS pracował na oddziel-
nym komputerze, jednak jedynie w ten sposób
można mieć pewność, że będzie on zawsze do-
stępny dla maszyn działających w charakterze
klientów.
Do przechowywania informacji zosta-
ła stworzona specjalna baza danych, nazwa-
na mapą NIS. W przypadku FreeBSD znaj-
duje się ona w katalogu /var/yp/nazwa_do-
meny. Fakt posługiwania się oddzielny-
mi katalogami dla każdej domeny jest nie-
zwykle istotny, ponieważ umożliwia jedne-
mu serwerowi obsługę kilku domen jedno-
cześnie. Należy jednak pamiętać, że każda
grupa korzysta z niezależnej od pozostałych
mapy NIS. Obsługą przychodzących zapy-
tań zajmuje się daemon ypserv, który tłuma-
czy domeny i nazwy map na konkretne ścież-
ki do plików konfiguracyjnych itp. Po wyko-
naniu tych czynności, również ypserv przesy-
ła odpowiednie dane do klientów jako odpo-
wiedzi na wcześniejsze zapytania. Poprawne
działanie serwera NIS zależy od jego konfi-
guracji. Aby we FreeBSD ustawić serwer ja-
ko tzw. out-of-the-box należy zmodyfikować
plik /etc/rc.conf. Na początku konieczne bę-
dzie ustalenie nazwy domenowej w konfigu-
racji sieci. Robimy to dodając linię
nisdoma-
inname="lucas-domain"
. Teraz należy prze-
kazać systemowi operacyjnemu, aby urucho-
mił serwer NIS (
nis_server_enable="Y-
ES"
). Oczywiście nastąpi to dopiero w trak-
cie następnego uruchamiania sieci. Ostat-
nia zmienna –
nis_yppasswdd_enable="Y-
ES"
– zezwala na zmianę haseł użytkowni-
ków z dowolnego komputera będącego klien-
tem, poprzez uruchomienie daemona rpc.yp-
passwdd. Aby wprowadzone zmiany zostały
wczytane, a system NIS/YP aktywowany, na-
leży wykonać polecenie
/etc/netstart
(ja-
ko root).
Kolejnym krokiem konfiguracji serwera
NIS, jest ustawienie wspomnianych już baz
danych, czyli map. Ich zawartość jest tworzo-
na na podstawie plików znajdujących się w ka-
talogu /etc głównego serwera. Wyjątkiem jest
plik /etc/master.passwd. Dobrą praktyką jest
odpowiednia modyfikacja tego pliku, ponie-
waż uniemożliwia to dostęp do chronionych
informacji, np. hasło superużytkownika. W
tym celu kopiujemy plik do katalogu /var/yp, a
następnie edytujemy. Po usunięciu wpisów do-
tyczących wszystkich kont, których nie chce-
my udostępniać klientom NIS (chociażby kon-
to roota), koniecznie trzeba nadać – za pomo-
cą polecenia chmod 600 – uprawnienia pozwa-
lające na odczyt pliku jedynie jego właścicie-
lowi. Zainicjowanie map odbywa się za pomo-
cą skryptu ypinit z opcją
-m
(ponieważ będą to
mapy dla głównego serwera) i nazwą naszej
domeny. Skrypt ten jest standardowo dostępny
we FreeBSD, a jego obsługa ogranicza się do
udzielenia odpowiedzi na kilka prostych pytań,
np. czy ma on zostać zakończony, jeśli pojawią
się błędy nie zakłócające jego pracy. Efektem
końcowym będzie plik /var/yp/Makefile. Jeże-
li w danej domenie będzie pracował jeden ser-
wer, to należy pozostawić plik Makefile bez
zmian, natomiast w przypadku dodatkowych
serwerów konieczna będzie jego edycja i usu-
nięcie linii
NOPUSH = "True"
.
O wiele mniej skomplikowana jest konfi-
guracja serwera zapasowego. Na początku na-
leży dokonać odpowiednich wpisów w pliku
/etc/rc.conf, tak jak robiliśmy to w przypadku
serwera głównego. Następnie należy urucho-
mić serwer ypinit z opcją
-s
, nazwą głównego
serwera oraz nazwą domeny. Udzielamy od-
powiedzi na znane już z poprzedniej konfigu-
racji pytania i czekamy aż skrypt dokona od-
powiednich ustawień. Finalnie powinien po-
wstać katalog /var/yp/nazwa_domeny z kopią
mapy NIS z głównego serwera. Aby zachować
aktualność informacji zaleca się skorzystanie
z opisanego powyżej programu Cron. W pliku
/etc/crontab wpisujemy dwie linie, które będą
dbać o aktualizowanie danych:
58 11 * * * root /usr/
libexec/ypxfr passwd.byname
59 11 * * * root /usr/
libexec/ypxfr passwd.byuid
Aby uruchomić zapasowy serwer NIS należy
wydać polecenie
/etc/netstart
.
Mając skonfigurowany serwer moż-
na przystąpić do ustawiania poszczególnych
klientów. Należy przy tym pamiętać, że połą-
czenia klientów NIS są ustanawiane za pomo-
cą daemona ypbind. Jego zadaniem jest spraw-
dzenie nazwy domeny, a następnie rozgłasza-
nie w sieci lokalnej zapytań RPC do momentu
otrzymania odpowiedzi ze strony serwera. Co
pewien czas ypbind będzie sprawdzał, czy ser-
wer jest aktywny. Jeśli wynik będzie negatyw-
ny, rozpocznie rozgłaszanie RPC i będzie cze-
kał na odzew ze strony serwera.
Konfiguracja klienta NIS zdecydowa-
nie nie należy do skomplikowanych. Opie-
ra się głównie na edycji i uzupełnieniu pliku
/etc/rc.conf oraz zaimportowaniu odpowied-
nich danych. Aby całość mogła działać, nale-
ży w pliku rc.conf zamieścić wpis z nazwą do-
meny –
nisdomainname="nazwa_domeny"
– a
następnie zapis wskazujący na udostępnienie
usługi NIS, czyli
nis_client_enable="YES"
.
Ponowne uruchomienie spowoduje wczytanie
ustawień. Ostatnim krokiem podstawowej
konfiguracji jest importowanie użytkowni-
ków z serwera NIS, a następnie wpisów doty-
czących grup użytkowników. Dodajemy linię
+:::::::::
do pliku /etc/master.passwd (ko-
rzystamy z vipw), a następnie
+:*::
do pliku
/etc/group. Jeżeli wszystko przebiegło bez błę-
dów, można przetestować klienta wpisując po-
lecenie
ypcat passwd
. Naszym oczom powin-
ny ukazać się wszystkie zaimportowane hasła
z serwera NIS. Nie pozostało nic innego jak
cieszyć się wygodnym administrowaniem lo-
kalną siecią.
Podsumowanie
Choć początkowo niektóre zaprezentowa-
ne techniki mogą wyglądać przerażająco,
nie należy ich unikać. To właśnie dzięki tym
metodom i przedstawionemu oprogramowa-
niu każdy może sprawić, aby jego praca sta-
ła się nie tylko lżejsza, ale także przyjemniej-
sza. Mniej czasu poświęconego na wprowa-
dzanie ustawień dla poszczególnych kom-
puterów lokalnej sieci oznacza jednocześnie
więcej czasu, który może zostać poświęco-
ny na dopracowanie zabezpieczeń i likwida-
cję rozmaitych luk. Jeśli dodatkowo zostanie
zastosowane oprogramowania przeznaczo-
ne do współdzielenia zasobów, które zdecy-
dowanie wpływa korzystnie na efektywność
pracy społeczności sieci, z całą pewnością
efektywność pracy wzrośnie. Z kolei dzięki
usługom oferowanym przez program Cron,
nie trzeba nieustannie zaprzątać własnej pa-
mięci terminami uruchamiania usług i skryp-
tów. Jest to ogromna zaleta i zapewne doce-
ni ją każdy obecny i przyszły administrator.
Warto korzystać z dostępnego, a w dodatku
darmowego oprogramowania mającego na
celu uczynić pracę łatwiejszą. To właśnie w
tym celu zostało ono stworzone, aby poma-
gać a nie przerażać. Warto też zajrzeć na stro-
ny domowe omówionych w artykule projek-
tów, ponieważ znajduje się tam wiele szcze-
gółowych wskazówek i omówień, na któ-
re nie udało się wygospodarować miejsca w
tekście. A zatem drogi Adminie nie czekaj i
spraw, by praca była przyjemnością!
Autor jest dziennikarzem, którego pasją
stało się programowanie (C/C++, Java,
Pascal, Qt, Gtk+) oraz systemy spod zna-
ku pingwina (Slackware, Debian).
Kontakt z autorem:
lucas.ciesielski@gmail.com
O autorze