Sunteți pe pagina 1din 207

Linux Basic Administration

Capitolul 1 - Introducere & Instalare


1.1 Istorie Unix/Linux
Anii 60
Bell Laboratories (devizie de cercetare a AT&T) formeaza un consortiu impreuna
cu MIT (Massachusetts Institute of Technolo!) si "eneral #lectric pentru a dezvolta un
sistem de operare interactiv$ multiuser si multi%tas&in numit Multics (Multiple'ed
Information and (omputin )ervice) care sa ruleze pe Mainframe%uri "#%6*+, -roiectul nu
a avut succesul scontat$ iar Bell Labs se retrae, .n proramator pe nume /en Thompson
nu renunta si continua dezvoltarea proiectului impreuna cu un alt proramator pe nume
0ennies 1itchie,
2340
5oul proiect este numit .nics (.niple'ed Information and (omputin )ervice),
5umele este atribuit de Brian /ernihan$ iar mai tarziu este schimbat in .5I6, )istemul de
operare este scris in limba7 de asamblare,
2348
.ni' este rescris in ( pentru a putea fi portabil (sa ruleze si pe alte masini), Acest
lucru a dus la o dezvoltare accelerata, AT&T distribuie noul sistem universitatilor$ marilor
firme dar si uvernului .)A,
2348%2343
.ni'%ul este in continuare dezvoltat in cadrul .niversitatii Ber&ele! din (alifornia,
9este adauat suportul pentru lucrul in retea,
23:0%23:8
AT&T lanseaza prima versiune comerciala de .5I6 fara a introduce modificarile
aduse de Ber&ele!,
23:;
.n proramator din cadrul proiectului B)0 (Ber&ele! )oft<are 0istribution %
Ber&ele! .ni') impreuna cu cativa colei de la )tanford .niversit! creaza firma ).5 %
)tanford .niversit! 5et<or&, -rima lansare de .ni' are loc in 23:8 si se numeste )un=),
-rintre altele sunt introduse 5>) (5et<or& >ile )!stem) care devine un standard,
23:*
1ichard Matthe< )tallman (nic&name 1M)) paraseste MIT (care crea doar
soft<are proprietar) pentru a crea un sistem de operare complet >1## (>ree as in >reedom)
% FREE (Free as in Freedom), 5oul proiect poarta numele de GNU (GNU's not UNIX), -rimul proram creat a fost
editorul emacs, In 23:+ 1M) creaza fundatia >)> % >ree )oft<are >oundation, )copul
acesteia este ca soft<are%ul sa fie free in sensul de liber si oricine sa poata avea acces liber
si fara restrictii la sursa, Acest tip de licenta se numeste GPL - General Public License.
23::
)un=)?B)0$ AT&T )!stem @ 1elease 8 si 6eni' ( Microsoft version of .ni'
pentru -( cu procesoare Intel cumparat de la AT&T in 2343) au fost combinate in )!stem
@ 1elease * ()@1*),
5ota
6eni' a fost versiunea Microsoft de .ni' pentru -( cu procesoare Intel cumparata de la
AT&T in 2343, Aceasta a fost ulterior vanduta firmei )anta (ruz =peration()(=) si a
devenit )(= .5I6,
2330
"5. continea aproape toate componentele necesare unui nou sistem de operare$
mai putin &ernel%ul,
2332
-rofesorul olandez Andre< Tanenbaum scrie o carte intitulata "Operating System"
in care e'plica conceptul unui nou sistem de operare numit Minix, .n student finlandez pe
nume Linus Torvalds de la .niversitatea din Aelsin&i scrie un /ernel pentru "5. care sa
ruleze pe calculatoarele AT%8:6 si *:*$ bazandu%se pe anumite concepte din cartea lui
Tanenbaum,
.lterior intre Linus Torvalds si Andre< Tanenbaum se isca un conflict bazat pe
viziunea diferita pe care acestia o aveau asupra noului /ernel, Detalii
(elebrul anunt al lui Linus Tor<alds precum ca a dezvoltat un &ernel a fost postat pe un
ne<sroup comp,os,mini'B

5ota
Hello everybody out there using minix - I'm doing a (free) operating system (ust a hobby!
"on't be big and professional li#e gnu) for $%&('%&) () *lones+ )his has been bre"ing
sin*e april! and is starting to get ready+ I'd li#e any feedba*# on things people li#e,disli#e
in minix! as my OS resembles it some"hat (same physi*al layout of the file-system (due to
pra*ti*al reasons) among other things)+ I've *urrently ported bash(-+.%) and g**(-+'.)!
and things seem to "or#+ )his implies that I'll get something pra*ti*al "ithin a fe" months!
and I'd li#e to #no" "hat features most people "ould "ant+ (ny suggestions are "el*ome!
but I "on't promise I'll implement them?/) 0inus (torvalds1#ruuna+helsin#i+fi) 2S+ 3es -
it's free of any minix *ode! and it has a multi-threaded fs+ It is 4O) portable (uses $%& tas#
s"it*hing et*)! and it probably never "ill support anything other than ()-harddis#s! as
that's all I have/-(+
)istemul de operare creat astfel prin folosirea &ernelului lui Linus si a proramelor si
utilitarelor "5. poata numele de "5.?Linu',
5ota
5umele complet si corect al sistemului de operare nu este Linu' ci "5.?Linu',
"5.?Linu' este un sisteme de operare multiuser si multitas&in care ruleaza pe
procesoare 8; si 6* biti pe aproape toate platformele hard<are e'istente, #ste format din
&ernelul lui Linus Torvalds si proramele de la "5., Intre Linu' si .ni' e'ista o mare
diferenta, .ni'%ul este un sistem de operare proprietar cu sursa inchisa$ iar "5.?Linu' este
un sistem de operare >1## cu sursa deshisa care la inceput a incercat sa imite sistemul
.ni' oriinal,
Marile firme private si%au dezvoltat propriile sisteme de operare .ni' astfelBA-%%%%
.6 % .ni'%ul celor de la Ae<lard -ac&ard ()@1*), @ersiunea actuala este 22,i
%AI6 % .ni'%ul celor de la IBM bazat pe )@1
%B)0 % .ni'%ul celor de la universitatea din (alifornia,
In prezent e'ista >reeB)0$ =penB)0$ 5etB)0, -rima distributie de Linu' a fost
lac!"arelansata in 2338,
.lterior au aparut multe alte distributii fiecare avand specificul sauB
1A#L (1edAat #nterprise Linu' % )istem (omercial)
>edora (varianta free de la 1edAat)
)u)# (cumparat de 5ovell$ )istem (omercial)
0ebian
.buntu
"entoo
Mandriva
(ent=) (bazat pe 1A#L$ necomercial)
/noppi' (prima distributie de Linu' care ruleaza direct de pe (0 % Live(0)
-upp!
M#-I)
1.2 Cosideratii Hardware
1.2.1 ACPI
A(-I (Advanced (onfiuration and -o<er Interface) este un standard dezvoltat de
un consortiu format din A-$ Intel$ Microsoft$ -hoeni' si Toshiba in 2336, .ltima versiune
dateaza din =ctombrie ;006,
A(-I reprezinta un standard prin care =) are controlul asupra recunoasterii
elementelor hard<are si po<er manaement, >olosind aceasta interfata BI=)%ul furnizeaza
=) toate mecanismele necesare pentru controlul lo<%level ale componentelor hard<are, =)
poate determina ca sistemul sa consume putina enerie in anumite perioade si multa
enerie cand este cazul (ca si in cazul laptop%urilor), #'ista pe tastatura Cpo<er
manaement &e!sC pentru oprirea sistemului$ cresterea luminozitatii monitorului etc,
Aard<are%ul (placa de baza si chiar (-.) trebuie sa fie compatibil cu acest standard,
.n sistem compatibil A(-I poate sa se aseasca in urmatoarele stariB
a)"0 % Dor&in % starea normala de operare a unui calculator cand aplicatiile ruleaza$
(-. e'ecuta instructiuni etc
b)"2 % )leepin % are * substari ( )tandb!$ A!bernation etc)
c) "; % )oft off % Apro'imativ asemantor cu "8 (mechanical off) doar ca anumite
componente raman alimentate cu enerie astfel incat diferite evenimente sa poate aduce
statia in starea "0 (&e!board$ LA5$ .)B), 0in aceasta stare sistemul trebuie sa buteze
pentru a intra in starea "0,
d)"8 % Mechanical =ff % 5ivelul de enerie consumat este aproape zero,
Da&e on LA5 (DoL)
DoL este o tehnoloie care permite pornirea unui calculator de la distanta prin
trimiterea unui frame #thernet special, -laca de retea este alimentata continuu cu enerie si
asculta primirea frame%ului special,
)upportul pentru Da&e on Lan (DoL) este implementat pe placa de baza, 5I(%ul
(care inca primeste enerie) asculta dupa acel pachet special numit "Magi* 2a*#et", 0aca
acesta este valid buteaza calculatorul,
Maic -ac&etB se trimite pe adresa de broadcast folosind .0- si portul 0 (la
inceput)$ 4 sau 3 (mai recent),
0atele din Maic-ac&etB >>>>>>>>>>>> urmat de 26 repetitii ale MA(%ului
taretului si eventual o parola formata din * sau 6 b!tes
In afara de hard<are (placa de baza) compatibil e'ista si componenta soft<are si anume
proramul care enereaza si trimite taret%ului maic pac&et, #'ista mai multe astfel de
aplicatii atat pentru Dindo<s cat si pentru Linu', .n e'emplu de astfel de proram este
5ota
0aca se doreste pornirea calculatorului dintr%o alta retea de e'emplu Internet$ 1outerul
trebuie confiurat pentru redirectarea pachetelor C0irected BroadcastC
1.2.2 Hard Disks
In prezent pentru -(%uri e'ista ; standarde de conectare a hard dis&%urilor la placa
de bazaB )ATA si -ATA
ATA % Advanced Technolo! Attachment reprezinta o interfata prin care hard dis&%
urile$ (0?0@0 se conecteaza la placa de baza, =data cu introducerea )ATA ()erial ATA)
in ;008$ ATA a fost redenumita -ATA (-arallel ATA),
-e placa de baza a arhitecturii 6:6 e'ista ; sloturi pentru conectarea hardis&urilor
-ATA, -e fiecare cablu paralel se pot conecta ; hdd, Avem astfel in total ma'im * hdd,
#le sunt reprezentate in Linu' astfelB
?dev?hda % primar! master hard dis&
?dev?hdb % primar! slave hard dis&
?dev?hdc % secondar! master
?dev?hdd % secondar! slave
>iecare Aard 0is& poate contine partitii primare care pot fi ma'im * si partitii loice care
se asesc in cadrul unei partitii e'tinse, A *%a partitie primara este considerata partitia
e'tinsa$ este unica si va contine restul partitiilor loice,
5ota
In cazul hard dis&%urilor )ATA sau )()I acestea sunt reprezentate prin fisierele
?dev?sda$ ?dev?sdb$ ?dev?sdc si ?dev?sdd
1.2. !AID
1AI0 (1edundant Arra! of Ine'pensive?Independent 0is&s)
0efinitie
1AI0 reprezinta o metoda prin care mai multe hard dis&uri fizice se rupeaza intr%o
sinura unitate loica, Tehnoloia 1AI0 a fost definita prima data de catre un rup de
cercetatori de la universitatea Ber&ele! din (alifornia,
#'ista ; cateorii de confiuratii
2, )oft<are 1AI0, Aard dis&urile sunt combinate intr%o sinura unitate loica de catre
sistemul de operare, =) vede fiecare dis& si trebuie confiurat sa le foloseasca ca
un sinur ansambl % "#$D (Eust a Bunch =f 0is&s),
;, Aard<are 1AI0, Aard dis&urile sunt combinate intr%o sinura unitate loica de
catre un controller, =) (=peratin )!stem) vede ansamblul ca un sinur hard dis&,
5u este nevoie de nicio confiuratie la nivel de sistem de operare,
Aard<are 1AI0 ofera mai multa securitate si performata a datelor dar este mai scump,
5ivele 1AI0
a) 1AI0 0 (0ata )tripin <ithout redundanc!), Acest nivel este cel mai eficient ca si
performanta dar nu ofera protectia datelor, )e formeaza din minimum ; hard dis&%
uri, Informatia este CspartaC in framente si redistribuita pe mai multe dis&uri din
arra! (ansamblul de dis&uri fizice care pentru sistemul de operare reprezinta sinura
unitate loica), )e poate scrie?citi in paralel, 0aca un sinur dis& se defecteaza
intre sistemul devine inutilizabil,
b) 1AI0 2 (0is& Mirrorin), 5r, minim de dis&uri din arra! este ;, 0atele sunt salvate
pe fiecare dintre cele ; hard dis&uri, )ecuritatea datelor este ma'ima iar
performantele de citire?scriere sunt mari, )inurul dezavanta7 este ca acest nivel
necesita de doua ori mai mult spatiu de stocare,
c) 1AI0 ; % 5u se foloseste,
d) 1AI0 8 si 1AI0 * ()triped )et <ith dedicated parit!) % minimum 8 discuri,
e) 1AI0 + ()triped )et <ith 0istributed -arit!), 5r, minim de dis&uri este 8, =
defectiune a unui dis& nu duce la distruerea tuturor datelor, 0atele aflate pe dis&ul
defect pot fi recuperate de pe celelalte dis&uri,
f) 1AI0 0?2$ 1AI0 20 % reprezinta o combinatie intre 1AI0 0 si 1AI0 2, 5r, minim
de discuri este *,
-entru 1AI0 0 si 1AI0 2 avem nevoie de cel putin ; partitii pe ; hard dis&uri diverite,
1AI0 + necesita 8 partitii, )e recomanda folosirea partitiilor de aceeasi marime,
5ota
#'ista si posibilitatea folosirii unui sinur hard dis&$ doar ca beneficiile 1AI0 dispar,
1.2.% L&'
L@M (Loical @olume Manaement)
1eprezinta posibilitatea prin care se pot crea CLoical @olumesC care se intind pe
mai multe dis&uri si partitii, .n volum loic poate fi folosit ca o partitie si anume se poate
formata cu un sistem de fisiere si monta intr%un anumit mount%point,
Mai multe Cph!sical partitionsC % hard dis&uri intrei sau partitii se combina intr%un
sinur Cvolume roupC, L@M nu trebuie confundat cu 1AI0, Acestea sunt ; tehnoloii
diferite care se completeaza, #@M) (#nterprise @olume Manaement )!stem) reprezinta o
interfata comuna pentru L@M si 1AI0
Avanta7e L@MB
o se pot combina mai multe partitii sau hdd intr%un sinur Cvolume roupC
o un Cloical volumeC poate fi larit cand este nevoie de mai mult spatiu intr%un mod
foarte simplu,
o se pot adaua noi Cloical volumesC la Cvolume roupC fara a fi nevoie de oprirea
sistemului sau demontarea partitiilor,
o se pot adaua noi hdd la Cvolume roupC intr%un Crunnin s!stemC
1. #oot Loader/#oot 'an(er
Boot manaer & Boot loader
Boot Loaderul este primul proram e'ecutat in momentul butarii unui calculator,
Acesta este responsabil sa transfere controlul catre &ernelul sistemului de operare, Acesta
din urma incarca intre sistemul de operare,
0efinitie
-rocesul de butare (bootin) reprezinta incarcarea?copierea sistemului de operare de
pe Aard 0is& in 1AM si e'ecutarea de catre acesta a diferitelor functii pentru initializarea
dispozitivelor hard<are (recunoasterea placii rafice pentru afisare la monitor$ stabilirea
rezolutiei monitorului$ montarea sistemelor de fisiere de pe hard dis&$ initializarea
porturilor seriale$ usb$ initializarea mouse%ului si a tastaturii etc, Detalii),
.n boot manaer este un proram care a7uta utilizatorul sa aleaa intre mai multe
sisteme de operare$ sa seteze sistemul default$ timeout etc,
-e Linu' se folosesc in principal ; prorame care contin atat boot loader cat si boot
manaer, Acestea sunt LIL= % Linu' Loader si "1.B % "1and .nified Bootloader, "rub
este mai fle'ibil$ este de preferat,
"rub este instalat automat de multe distributii de Linu' dar si .ni' (e', )olaris),
"rub poate incarca si alte sisteme de operare (Dindo<s$ )olaris$ etc),
>isierul de confiurare al lui "rub este default in ?etc?rub,conf sau in
?boot?rub?menu,lst
Boot Loaderul se instaleaza intr%un sinur sector al hard dis&%ului numit sector de
boot, #'ista ; cateorii de sectoare de bootB
2, @B1 % @olume Boot 1ecord % reprezinta primul sector al unui hard dis& care nu a
fost partitionat sau primul sector al unei partitii a unui hard dis& care a fost
partitionat, (ontine cod pentru a incarca sistemul de operare de pe acel hard dis&
sau de pe acea partitie,
;, MB1 % Master Boot 1ecord % reprezinta primul sector al unui hard dis& care a fost
partitionat, (ontine cod pentru a identifica partitia activa si a invoca @olume Boot
1ecord al acelei partitii, 0imensiunea MB1 este +2; b!tes din care ma'imum **6
reprezinta cod e'ecutabil,
>isierul de confiurare al "1.B esteB ?boot?rub?menu,lst In momentul in care dorim
modificari referitoare la modul de functionare al acestuia precum adauarea unui nou
sistem de operare in meniul rubului de la inceput$ stererea unui sistem de operare in care
sa butam$ modificare timeout etc trebuie sa modificam fisierul precizat mai sus,
)tructura acestuia esteB
default 0
timeout :
title Dindo<s 6-
rootnoverif! (hd0$0)
chainloader F2
title >edora (ore
root (hd0$2)
&ernel ?boot?vmlinuz rootG?dev?sda;
initrd ?boot?initrd
title )olaris
rootnoverif! (hd0$;)
chainloader F2
1.% Instalare
Instalarea unui sistem de operare Linu' modern decure asemanator cu instalarea
sistemului Dindo<s, Installer%ul recunoaste componentele hard<are$ instaleaza drivere
pentru acestea$ partitioneza hard dis&%ul$ creaza utilizatori$ confiureaza reteaua etc, La
sfarsit avem un sistem de operare Linu' perfect functional,
5ota
In comparatie cu Dindo<s$ o distributie Linu' contine aproape toate proramele necesare
utilizatorului, Acestea sunt incluse pe 0@0%ul sau (0%urile de instalare$ iar daca sunt alese
de utilizator sunt instalate o data cu sistemul de operare, La final vom avea acces la la
ma7oritatea proramele necesare precumB editoare de te't$ pla!ere video$ mp8 pla!er$
proram de copiere (0%uri$ proram de Bac&up$ client de #%mail$ Bro<ser$ client de
messener etc,
-entru o echivalenta a proramelor Dindo<s%Linu' cititi sectiunea capitolului CMediul
"raficC a acestui curs numita C-rorame 0es&topC,
Aspecte care trebuie avute in vedere inaintea inceperii instalarii unui sistem de operare
Linu'B
2, Linu' are nevoie de propria partitie pe care sa se instaleze, Aceasta poate fi creata
anterior din Dindo<s folosind un proram precum -artition Maic sau in timpul
instalarii Linu', 0imensiunea partitiei se recomanda sa fie de circa 20 "B pentru o
folosire normala a sistemului Linu', In cazul in care aceasta se creaza din Dindo<s
poate sa fie formatata cu orice sistem de fisiere (fat$ ntfs etc)$ iar in timpul instalarii
Linu' aceasta trebuie formatata cu un sistem de fisiere precum e't8 sau reiserfs,
;, -entru performante crescute$ Linu' necesita o partitie speciala de tip s<ap, )e
recomanda ca dimensiunea partitiei sa fie de ; ori dimensiunea memoriei 1AM,
-artitia de s<ap trebuie creata anterior din Dindo<s sau in timpul instalarii Linu',
)e va formata ca s<ap in timpul instalarii, -artitia de s<ap 5. este obliatorie,
1.) Linux rescue
1.).1 !e*acerea con*i(uratiei de +oot
#'ista foarte multe cazuri in care sistemul de operare nu mai buteaza din cauza unei
erori$ cand am CpierdutC parola de root sau cand vrem sa rescriem "rub%ul pe MB1 pentru
butarea in mai multe sisteme, 0upa instalarea Dindo<s (Linu' fiind de7a instalat) MB1%ul
este suprascris de Dindo<s astfel incat nu vom mai putea alee sistemul de operare in care
sa butam sau sa intram in Linu',
5ota
(0%ul de rescue poate sa fie primul (0 dintre (0%urile de instalare$ un (0 special in
cazul >edora sau 0@0%ul de instalare, La butare folosind (0%ul de rescue trebuie aleasa
butarea in modul rescue sau la anumite distributii precum )lac&<are sau >edora (ore
;$8$*$+ sau 6 se scrie linu' rescue in linie de comanda din prima fereastra care apare,
#tapele sunt urmatoarele (in cazul in care folosim primul (0 >edora$ similar pentru alte
distributii)B
2, Butam folosind (0%ul de rescue
;, )criem in linia de comanda din prima fereastraB linu' rescue
8, )istemul va intra in modul rescue$ iar dupa o serie de intrebari (daca pornim
interfata de retea$ aleerea limbii) va incerca sa identifice daca e'ista un sistem de
operare Linu' de7a instalat, In acest caz acesta este montat automat in
?mnt?s!simae
*, 0aca sistemul de operare anterior a fost asit si montat in ?mnt?s!simae trebuie sa
e'ecutam comanda chroot ?mnt?s!simae,
(omanda chroot are urmatoarea sinta'aB chroot 5#D1==T H(=MMA50 HA1")I,,,I
In mod normal comenzile si fisierele sunt cautate incepand cu root director! care este
C?C, chroot schimba C?C cu un nou director 5#D1==T si e'ecuta comanda (=MMA50
cu arumentele A1"), 0aca comanda nu este specificata este pornit shellul default sau
Bourne ( ?bin?sh) daca acesta nu este definit, (omanda chroot permite e'ecutarea
urmatoarelor comenzi in sistemul de fisiere avand root director! ?mnt?s!simae (unde se
aseste sistemul de operare Linu' care este de7a instalat) in loc de C?Ccare contine sistemul
de fisiere enerat automat de modul rescue,
+, )e instaleaza "rub cu vechea confiuratie pe MB1 prin comanda rub%install
?dev?hda,
5ota
?dev?hda se inlocuieste cu fisierul care reprezinta Aard 0is&%ul pe care se instaleaza
"rub, In cazul hard dis&%urilor )ATA sau )()I acestea sunt reprezentate prin sda$ sdb$
sdc si sdd,
1.).2 !ecuperarea parolei de root
#'ista cazuri in care parola userului root a fost uitata$ schimbata accidental sau in mod
intentionat de o alta persoana care avea acces la contul de root astfel incat nu mai ne putem
loa ca root in sistem,
Important
=rice sarcina administrativa din Linu' poate fi realizata 0=A1 de userul root deci accesul
la contul root este obliatoriu, In Linu' orice modificare a unei setari a sistemului de
operare se realizeaza modificand un fisier te't aferent numit fisier de confiurare, Aceste
fisiere se asesc in directorul ?etc
.n user normal sau neprivileiat are permisiunea de a modifica 0=A1 fisierele si
directoarele din propriul Aome 0irector!,
#'ista in eneral ; posibilitati de recuperare a parolei de rootB
2) Butarea sistemului folosind (0%ul de rescue, In cazul in care e'ista acces fizic la
calculator se buteaza folosind (0%ul de rescue dupa care se monteaza partitia pe
care se aseste sistemul de fisiere C?C si care contine fisierele ?etc?pass<d (contine
userii din sistem inclusiv root) si ?etc?shado< (contine hash%ul parolei uitate),
In continuare e'ista 8 posibilitatiB
a) )e editeaza folosind editorul preferat (#'emplu @I) fisierul ?etc?shado< si
se stere hash%ul parolei lui root, 0upa restartarea calculatorul se poate loa
ca root fara a mai cere parola
b) )e inlocuieste hash%ului parolei lui root cu hash%ul unei parole cunoscute a
unui cont oarecare, )e loheaza ca root folosind acea parola
c) )e monteaza sistemul de fisiere pe care se aseste sistemul Linu' in root si
se foloseste comanda pass<d root,
#'emplu
-resupunem ca Linu' s%a instalat pe prima partitie primara de pe primul hard dis&
)ATA ( ?dev?sda2)
mount ?dev?sda2 ?mnt
chroot ?mnt
pass<d root
;, Modificarea boot loader ("1.B), )copul acestei metode este de a instrui "rub%
ul sa buteze in run%level 2 (sinle mode) caz in care e'ista un sinur utilizator si anume
root caruia nu i se mai cere parola pentru loare, .lterior se schimba parola folosind
comanda pass<d root,
Capitolul 2 - ,tructura Linux
2.1 ,tructura Linux
.n sistem de operare este format din urmatoarele componenteB
-ernel
1eprezinta partea cea mai importanta a =)$ cea care lucreaza cu (-. si este cea
mai apropriata de Aard<are, >izic &ernelul se reaseste intr%un fisier iar de cele mai multe
ori acesta este ?boot?vmlinuz%versionJno
>unctiiB
o I?= Manaement
o manaementul memoriei 1AM si )DA-
o apelarea functiilor de sistem
o lucrul cu echipamentele periferice prin drivere
o manaementul sistemului de fisiere$ a proceselor care ruleaza
.ltima versiune de /ernel este ;,6,;*,; (22,0;,;00:)
Memoria )DA- reprezinta un tip special de memorie care se aseste pe Aard dis&$
dar care este folosita de /ernel ca si cand ar fi memorie 1AM, 0imensiunea acesteia se
recomanda a fi de doua ori mai mare decat 1AM, -e Linu' se foloseste o partitie speciala
pentru memoria de tip )<ap,
,.ell
.tilizatorul nu poate comunica direct cu /ernelul, Accesul la functiile &ernelului se
face prin intermediul shell%ului, Acesta este un proram care primeste comenzi de la user
sau alte aplicatii$ le interpreteaza si le transmite &ernelului pentru a le e'ecuta,
-rintre functiile shell%ului se afla si customizarea intreului environment (mediu de
lucru) precum si proramarea folosind shell scripts,
#'ista mai multe shell%uri printre cele mai importante amintimB
a) Bourne )hell (sh) % -rimul shell pentru .ni', A fost dezvoltat de )tephen Bourne la
AT&T, 5u are foarte multe optiuni,
b) /orn )hell (&sh) % A fost dezvoltat de 0avid /orn la Bell Labs,
c) ( )hell (csh) % A fost dezvoltat de Bill Eo! la )un si se bazeaza pe limba7ul de
proramare (,
d) #nhanced ( )hell (tcsh)
e) K )hell (zsh) % #ste asemanator de /orn shell dar are mai multe functii,
f) Bash (bash) % Bourne Aain )hell % 0efault pe Linu', (el mai folosit si mai
puternic shell, )istemul de fisiere , -entru detalii cititi subcapitolul C)istemul de
fisiereC a acestui curs,
2.2 ,tructura unei co/en0i
-entru manaementul sistemului Linu' (copiere de fisiere sau directoare$ sterere$
redenumire$ afisare continut$ listare$ editare etc) se folosesc comenzi, #'ista peste *00
comenzi de baza in .ni'?Linu',
#'ista comenzi incluse in shell ( #'empluB alias$ cd$ umas&) si comenzi
independente reprezentate prin prorame ( #'empluB ls$ cp$ rm etc),
)tructura unei comenzi este urmatoareaB
5.M#J(=MA50A =-TI.5I HA1".M#5T 2I HA1".M#5T ;I
5.M#J(=MA50A G reprezinta numele comenzii, Trebuie sa apara primul, 0irectorul
in care se aseste comanda trebuie sa fie in variabila -ATA (la fel ca si in DI50=D)),
5ota
In contrast cu Dindo<s$ in Linu' directorul curent reprezentat prin , (punct) nu se aseste
in -ATA, -entru a e'ecuta o anumita comanda nu este suficient sa ne mutam in directorul
care contine proramul respectiv sau comanda si sa e'ecutam respectiva comanda,
=-TI.5I
o pot fi scurte (o litera), #'empluB ls %1 sau pot fi combinate mai multe litere,
#'empluB ls %>al
o pot fi formate din unul sau mai multe cuvinte, #'empluB smart %%inore%loc&s
A1".M#5T#
o reprezinta scopul comenzii, -ot fi fisiere sau directoare$ adrese I-$ nume de
domenii 05) etc
2. Co/en0ile ls si less
Co/anda ls
.na dintre cele mai folosite comenzi in Linu' este ls (list), Aceasta afiseaza informatii
diverse despre fisiere si directoare,
ls =-TI=5) >IL# % listeaza continut
%l listare luna$ sortare dupa nume
%> afiseaza tipul fisierului
%t sortare dupa mtime
%h human readable
%i afiseaza inode
%1 afiseaza recursiv
%) sortare dupa marime
%d afiseaza informatii despre director in loc de continutul acestuia
%c afiseaza ctime (in combinatie cu %l)
%u afiseaza atime (in combinatie cu %l)
%a afiseaza hidden files
Co/anda less
Intreaa confiuratie a unui sistem Linu'$ fie ca ne referim la servere care ruleaza$ fire<all
sau la rezolutia monitorului se aseste aproape e'clusiv in fisiere te't, .na dintre sarcinile
cele mai frecvente ale unui admin este vizualizarea diferitelor fisiere te't, (ea mai folosita
comanda pentru vizualizare care se aseste pe orice distributie de Linu' sau chiar de .ni'
este less,
less >IL# % afiseaza continut fisier te't
In timpul vizualizarii continutului fisierului putem folosi urmatoarele tasteB
enter afisare urmatorul rand
space afisare urmatoarea fereastra
d afisare urmatoarea 7umatate de fereastra
u afisare 7umatatea de fereastra anterioara
?sir cautare sir for<ard
Lsir cautare sir bac&<ard
n urmatoarea aparitie a sirului
5 aparitia anterioara a sirului
salt la inceputul fisierului
" salt la sfarsitul fisierului
M Muit
h help
2.% Console/ter/inale 1irtuale
In Linu' si .ni' e'ista conceptul de (onsola @irtuala si Terminal @irtual sau
Terminal Te't,
(onsiderente istorice
Initial se folosea un sinur calculator de tip mainframe sau similar la care se
conectau mai multi useri simultan folosind fiecare o consola, = consola era reprezentata
printr%un ansamblu de tastatura si monitor,
Linu' pune la dispozitia utilizatorului 4 console virtuale (loice) care pot fi
accesate folosind combinatia de taste (T1LFALTF>2 pt consola 2$ (T1LFALTF>;
pentru consola ; etc, In consola 4 este pornit mediul rafic, Terminal <indo<s$ terminal
emulator sau terminal virtual reprezinta o consola pornita din modul rafic,
5ota
>izic$ cele 4 console virtuale sunt reprezentate prin fisierele ?dev?tt!2%4$ iar terminalele
virtuale sunt reprezentate prin fisierele ?dev?ptsN, >isierul ?etc?securett! contine pe fiecare
linie locatiile de unde userul root are voie sa se loheze
2.) !unle1el
1eprezinta starea in care se afla si opereaza sistemul de operare la un anumit
moment dat,
#'empluB un sistem de operare Linu' care intra in runlevel 0 se opreste$ daca intra
in runlevel 6 tocmai se restarteaza,
In functie de runlevel%ul in care opereaza sistemul de opereare e'ista anumite
facilitati oferite si anumite procese care ruleaza, .n sistem de operare Linu' se poate afla
la un moment dat intr%un sinur runlevel,
Linu' runlevels

1unlevel )emnificatie 0escriere
0 Aalt$ )hut do<n
=prirea sistemului$ aducerea lui in starea in care se intrerupe
alimentarea cu enerie electrica
2 sinle%user
Modul administrator folosit pentru mentenanta, 5u e'ista
retea$ mediu rafic si doar sistemele de fisiere locale sunt
montate, #'ista un siur user care se poate loa in sistem si
anume root, #ste echivalentul lui )afe%Mode din Dindo<s
; multi%user Modul multi%user fara retea,
8 multi%user F retea 1unlevel default pentru servere,
* 5?A 5u e'ista
+
multi%user F retea
F mediul rafic
1un level default pentru 0es&top
6 reboot?restart 1estartarea calculatorului
Mai poate e'ista runlevel%ul ) sau s$ care nu este folosit direct ci de catre prorame
si scripturi care se e'ecuta cand se intra in runlevel 2, -entru trecerea dintr%un runlevel in
altul se foloseste comandaB init noulJrunlevel
#'emplu
2,1estartare calculator ?sbin?init 6
;, =prire calculator ?sbin?init 0
8, Intrare in sinle%user mode ?sbin?init 2
*, 1evenire in runlevel + ?sbin?init +
2.2 ,iste/ul de *isiere
2.2.1 Pre0entare (enerala
)istemul de fisiere reprezinta modul de oranizare$ structurare si accesare a
fisierelor$ directoarelor si lin&urilor pe hard dis&, Modul de oranizare$ accesare si
recunoastere particularitarilor fiecarui sistem de fisiere cade in sarcina /ernelului, Acesta
trebuie sa Cofere suportC pentru acel sistem de fisiere,
In prezent /ernelul de Linu' recunoaste ma7oritatea sistemelor de fisiere e'istenteB
fat26$ fat8;$ ntfs$ e't;$ e't8$ 1eiser>)$ nfs$ smb$ iso3660 etc, -entru ma7oritatea
distributiilor de Linu' default este e't8 % Third #'tended >ile )!stem (default pt, 1edAat$
>edora$ .buntu) sau 1eiser>) (default pt, )lac&<are$ )u)#$ 6andros$ Ooper),
0e multe ori in studiul sistemelor de operare .ni'?Linu' asim sintama %
Cever!thin is a fileC, Acest lucru se refera la faptul ca fiecare proram$ sau dizpozitiv
hard<are este reprezentat printr%un fisier, 5u mai e'ista alta modalitate de reprezentare a
informatiei, In Linu' fisierele sunt case sensitive % se face distinctie intre litera mare si
mica,
.n fisier se considera ascuns (hidden) daca numele sau incepe cu C,C (punct),
#'emplu
?dev?hda2 reprezinta prima partitie de pe hard dis&%ul primar! master
?dev?cdrom reprezinta (0%1=M%ul, = scriere sau o citire de pe hard dis& sau (0 inseamna
de fapt o scriere sau citire din fisierul respectiv,
In Linu' un director este tot un fisier (dar special care are anumite proprietati),
)istemul de fisiere in Linu' este arborescent (ca si in <indo<s) doar ca avem un siur
arbore chiar daca avem mai multe partitii sau hard dis&%uri, 1adacina sistemului de fisiere
se numeste 1==T si se noteaza cu C?C,
2.2.2 3H,
0e%a lunul timpului s%a incercat standardizarea sistemului de fisiere pentru
sistemele .ni'?Linu' luand nastere astfel >A) % >iles!stem Aierarch! )tandard, (u toate
acestea nu e'ista un standard eneral acceptat in prezent,
-rincipalele directoare care e'ista in ma7oritatea distributiilor de Linu' si .ni' suntB
?sbin % utilitare pentru administrarea sistemului$ multe accesibile doar lui
root
?bin % utilitarele sistemului care trebuie sa fie disponibile atat userilor
normali cat si lui 1oot
?dev % fisiere speciale care reprezinta dispozitivele din sistem
?lib % librarii de functii folosite de aplicatii$ &ernel etc ?var % fisiere care in
eneral isi modifica continutul (louri$ mailuri etc)
?usr % o ierarhie asemanatoare cu C?C ( ?usr?sbin$ ?usr?bin$ ?usr?etc )
?etc % fisierele de confiurare ale sistemului$ ale serverelor care ruleaza etc
?root % home director! userului root
?home % home director! pentru userii din sistem, >iecare user are home
director! un director in interiorul lui
?home (de cele mai multe ori directorul poarta numele userului)
?proc % printre functiile principale ale &ernelului este si aceea de a controla
dispozitivele fizice si de a coordona modul in care procesele folosesc aceste
resurse, In ?proc se aseste statusul curent al &ernelului cu toate informatiile
pe care acesta le cunoaste, Aceste fisiere si directoare sunt create automat la
butare, #le se numesc virtuale, 0e aici vine si numele de C)istem de >isiere
@irtualC (acesta este proc), Aceste fisiere contin multe informatii utile$ iar
cu toate acestea dimensiunea lor este de 0 b!tes,
5ota
>isierele din ?proc pot fi modificate pentru a confiura sistemul Con%the%fl!C,
#'empluB echo Cne<%hostnameC P ?proc?s!s?&ernel?hostname
?media % mount point pt, sisteme de fisiere temporare
?mnt % mount point pentru sisteme de fisiere remote
?lost&found % fisiere care au fost salvate in timpul unui CfailureC
?boot % fisiere necesare boot loader%ului$ &ernel%ului
?opt % prorame si aplicatii adauate ulterior care nu fac parte din distributie
?cdrom % mount point pt (0
'ount Point % reprezinta locul din sistemul de fisiere .5I( in care se alipesc sisteme
dfisiere de pe alte partitii locale sau e'terne$ de pe (0%1=M?0@0%1=M$ .)B )tic& etc,
2.2. ,tructura siste/ului de *isiere
)istemul de fisiere in Linu' este arborescent si unic, 1adacina se numeste root si se
noteaza cu C?C, In Linu' fisierele sunt case%sensitive % se face distinctie intre litera mare si
mica, In Linu' Ctotul este un fisierC, 5u mai e'ista alta forma de reprezentare a informatiei,
.n sistem de fisiere poate fi impartit in * parti distincte in urmatorea ordineB
2, Boot Bloc& % aflat la inceputul partitiei si care contine cod (BootLoder) pentru a
incarca sistemul de operare,
;, )uper Bloc& % contine informatii actuale despre sistemul de fisiereB marimea
acestuia$ nr, de blocuri de date libere$ locatia acestora$ marimea lui inode table$ nr
ma'im de inoduri etc,
8, Inode Table (List) % Lista statica definita initial la instalare si care nu se poate
schimba si care contine inodurile din sistem,
*, 0ata Bloc&s % 0atele sunt salvate in blocuri (in eneral 2 bloc& G +2; b!tes),
Boot Bloc& )uper Bloc& Inode Table 0ata Bloc&
2.2.% ,tructura unui *isier
.n fisier consta in informatia pe care acesta o contine (te't$ date$ imaine$ sunet
etc) dar si o structura de date care se numeste inode (inde' node) si care contine informatii
suplimentare despre acel fisier,

)tandardul -=)I6 stabileste ca fiecare inode sa contina urmatoarele informatiiB
tipul de fisier
o<ner
roup o<ner
drepturile de acces (citire$ scriere$ e'ecutie) pentru o<ner$ roup si others
nr, de hard lin&uri catre aceiasi informatie
atime
ctime
mtime
marimea unui fisier (size)
pointer catre blocurile de date care reprezinta informatia tinuta de fisier,
inum % nr, intre care identifica unic fiecare inode
5ota
Atentie QQQ 5umele fisierului nu este pastrat in structura inodului,
Un director este un *isier de tip container care contine perec.i de nu/e4*isier
si inode-ul corespun0ator,
In momentul in care ne referim (utilizatorul sau un proces) la un fisier$ &ernelul
cauta in structura de directoare conform cu calea relativa sau absoluta de referire la fisier$
inode%ul corespunzator pentru acel nume, >iecare inode se identifica unic printr%un numar
de tip intre numit Cinode numberC sau i number, Acesta poate fi vizualizat folosind
comanda ls Ri, #'ista un nr, ma'im pt, acest i%number care se defineste automat la
instalarea sistemului in functie de dimensiunea partitiei si deci e'ista un nr, ma'im de
fisiere (comanda df %i),
In Linu' fiecarui fisier sau director i se ataseaza 8 (trei) timpiB
ctime ( chane time ) % reprezinta data la care s%au modificat informatiile continute
in inode%ul fisierului sau directorului (permisiuni$ o<ner$ roup etc), 5u se refera la
timpul cand au avut loc modificari ale continutului, )e afiseaza cu comanda ls%lc
mtime (modif! time) % data la care s%a modificat informatia din fisier, )e afiseaza
cu lsRl
atime ( access time ) % data la care s%a afisat continutul fisierului, )e afiseaza cu lsR
lu
(omanda stat afiseaza de asemenea acesti 8 timpi, -entru modificarea celor 8 timpi ai unui
fisier sau director se foloseste comanda touch,
touch =-TI=5) >IL# % listeaza continut
fara optiuni modifica atime$ mtime si ctime cu timpul curent
%t 0AT#JTIM#)TAM-
motifica atime si mtime cu 0AT#JTIM#)TAM- in loc de data
curenta
e'B touch %t ;00802;82;80 a,t't
%d 0AT#J)T1I5"
modifica atime si mtime cu 0AT#J)T1I5"
e'B touch %d S2 Ma! ;006 20B;;S ?etc?roup
%a
modifica doar atime cu data curenta sau cu o alta data daca este
specificata
e'B Ttouch %a %d S;8 Ma! ;006 20B;;S ?etc?roup
%m
modifica doar mtime cu data curenta sau cu o alta data daca este
specificata
%r 1#>#1#5(#J>IL#
schimba atime si mtime cu cele ale lui 1#>#1#5(#J>IL#
e'B touch %r b,t't a,t't
5ota
ctime nu poate fi setat in mod e'pres si independent de catre user
2.2.) 5ipuri de *isiere
In .ni' si Linu' fisierele se impart in urmatoarele cateoriiB
2, fisiere standard (reular files), Acestea pot fi te't$ e'ecutabile$ binare etc
;, directoare, Acestea sunt tot fisiere care au rol de container pentru alte fisiere sau
directoare, #le reprezinta un tip special de fisier (container) folosit pentru formarea
structurii arborescente,
8, lin&%uri, -ot fi soft lin&s?s!m lin&s (echivalentele shortcut%urilor din <indo<s) si
hard lin&s % se refera la aceiasi zona de date$ dar identificata prin nume diferite,
*, fisiere speciale (device files), Toate dispozitivele fizice (hard dis&$ 1AM$ etc) sunt
reprezentate printr%un fisier, Accesul la aceste dispozitive se realizeaza prin
scrierea?citirea din aceste fisiere,
#'ista mai multe feluri de fisiere (dispozitive) specialeB
a, de tip caracter % folosite pentru accesarea b!te cu b!te a fisierului care reprezinta
dispozitivul hard<are ( #'empluB ?dev?pts?0)
b, de tip bloc % folosite pentru accesarea in blocuri de date a fisierului care reprezinta
dispozitivul hard<are ( #'empluB ?dev?sda2)
c, named pipes % procesele in Linu' comunica cu a7utorul unui pipe (conducta) care se
creaza cu a7utorul caracterului CUC, In acest mod outputul unui proces poate fi
directionat ca input pentru un alt proces, Acest tip de pipe e'ista doar pe timpul
e'ecutiei comenzii, #'ista un al doilea tip de pipe numit Cnamed pipeC introdus
initial in .ni'%ul de tip AT&T si care este folosit pentru comunicarea dintre
procese prin intermediul unei cozi de tip >I>= (>irst In >irst =ut), Acest tip de
fisier se creaza de catre administratorul sistemului pentru a interconecta ; procese
cu comanda m&fifo
d, )oc&et (uni' domain soc&et) este asemanator cu pipe%ul$ adica se foloseste pentru a
conecta doua procese, #'ista o oarecare asemanare cu soc&etul T(-?I- chiar daca
este vorba despre un alt concept,
(omanda ls %l> afiseaza diferitele tipuri de fisiere folosind anumite simboluriB

)imbol 0escriere
nimic fisier standard
? director
N fisier e'ecutabil (e'B ?bin?ls)
V s!m lin& (e'B ?etc?rub,conf)
G soc&et (e'B ?dev?lo) % procesele scriu in ?dev?lo pentru a comunica cu s!slod
U named pipe (e'B ?dev?initctl) % folosit pentru a comunica cu init
2.2.2 Links
In Linu'$ comparativ cu Dindo<s e'ista ; cateorii de lin&uriB
16 .ard links
o se refera la asocierea unui nume de fisier cu un inode number (asocierea va fi
prezenta intr%un director), Avem astfel doua sau mai multe nume care sunt asociate
cu aceiasi structura de tip inodeW
o nr, de hard lin&uri din structura inodului este incrementat de fiecare data cand se
creaza un nou hard lin&W
o in momentul in care se stere un fisier$ se decrementeaza nr, hard lin&urilor din
inode$ iar cand se a7ue la zero este dealocat inodul si marcat ca liberW
o nu se pot crea MA5.AL hard lin&uri catre directoare, .n director nou creat are
default ; hard lin&uri, 0e fiecare data cand se creaza un subdirector$ numarul de
hard lin&uri al directorului parinte este incrementat fiindca se creeaza o noua
referinta catre acesta si anume C,,C care e'ista in orice director, 0aca un director are
24 hard lin&uri inseamna ca acesta contine 26 subdirectoare, Al 24%lea este C,C care
se aseste in orice director,
o nu se pot crea hard lin&uri intre fisiere de pe partitii diferiteW
o daca fisierul initial este sters$ redenumit sau mutat hard lin&ul nu este influentatW
o un hard lin& se creaza folosind comanda ln
26 so*t links / s7/ links
o echivalentul shortcuts din Dindo<sW
o daca fisierul sau directorul initial este sters$ mutat sau redenumit soft lin&ul nu mai
functioneazaW
o listarea continutului folosind comanda ls %> identifica un s!mlin& dupa caracterul
CVC de la sfarsitul numeluiW
o se pot crea s!mlin&uri catre directoare sau fisiere de pe alte partitiiW
o un s!mlin& se creaza folosind comanda ln cu optiunea %s
#'emplu
2, -entru a crea un soft lin& numit m!lin&,t't care pointeaza la ?home?stud?proiect,t't se
foloseste comandaB ln %s ?home?stud?proiect,t't ?home?stud?m!lin&,t't
;, -entru a crea un hard lin& al lui ?etc?pass<d in ?etc numit hl%pass<d se foloseste
comandaB ln ?etc?pass<d ?etc?hl%pass<d
2.2.8 Pipin( & !edirectare
.ni'?Linu' este un sistem de operare care se bazeaza pe comenzi foarte
specializate care lucreaza impreuna, Astfel mai multe comenzi pot fi combinate si se poate
crea astfel o comanda comple'a, )e foloseste astfel caracterul pipe CUC,
#'emplu
ls %l U less % outputul comenzii ls %l este trimis lui less pentru painare
ls %a U sort % outputul comenzii ls %l este trimis comenzii sort care sorteaza in ordine
alfabetica
!edirectarea outputului
In eneral scopul unei comenzi este de a trimite outputul catre standard output care
este monitorul, #ste posibil ca outputul unei comenzi sa fie redirectat catre un fisier care
e'ista sau nu, )e foloseste CPC sau CPPC
#'emplu
ls %l ?bin P ?home?student?binaries,t't % creaza fisierul ?home?student?binaries,t't (daca
acesta e'ista il suprascrie) care va contine outputul comenzii ls %l ?bin
ls %l ?sbin PP ?home?stud?binaries,t't % adaua outputul comenzii ls %l ?sbin fisierului
?home?student?binaries,t't (daca acesta nu e'ista il creaza)
=utputul unei comenzi poate fi redirectat in afara de standard output si catre
standard error, -entru acesta se foloseste C;PC, -entru a combina standard output cu
standard error se foloseste C&PC
#'emplu
cc proram,c P output,t't ;P errors,t't % redirecteaza outputul compilarii fisierului
proram,c catre output,t't$ iar erorile sunt redirectate catre fisierul errors,t't
cc proram,c &P output,t't % redirecteaza catre fisierul output,t't atat standard output cat
si standard error,
Capitolul - Co/en0i si 9ditoare
.1 9ditorul &I
In .ni'?Linu' e'ista mai multe editoare de te't acestea impartindu%se in editoare
rafice ( edit$ &ate ) si editoare care ruleaza in consola ( vi$ vim$ emacs$ 7oe$ pico$ nano
etc), #ditorul omniprezent pe orice sistem .ni'?Linu' este @I (@isual #ditor), Acesta este
e'trem de fle'ibil$ comple' si plin de optiuni,
)e caracterizeaza prin 8 modalitati de operareB
Co//and 'ode
In momentul in care se deschide @I suntem introdusi in "*ommand mode", )e
foloseste pentru a accesa celelalte moduri$ pentru a vizualiza si edita fisierul curent$
cop!?paste$ search etc, -entru a schimba intre celelalte ; moduri de operare ( Insert Mode si
Last Line Mode) trebuie sa trecem prin (ommand Mode, )e foloseste tasta #)(, Modul
comanda se foloseste pentru a stere un caracter$ un cuvant$ un rup de cuvinte sau litere
precum si pentru a inlocui un te't, In modul command ne asim dupa deschiderea unui
fisier ( #'empluB vim ?etc?pass<d) sau din celelalte moduri apasand tasta #)(,
In timp ce ne aflam in modul comanda avem urmatoarele optiuniB
2, r % replace a char
;, ' % stere caracterul de sub cursor,
8, c< % chane <ord % stere cuvantul incepand cu litera de unde este pozitionat
cursorul si ne introduce in Insert Mode,
*, dd % stere o linie
+, 4dd % stere 4 linii
6, d< % stere cuvantul de sub cursor incepand cu caracterul care se aseste sub
cursor,
4, u R undo
:, " % se duce la sfarsitul fisierului
3, X % muta cursorul la sfarsitul liniei
20, 0(zero) sau Y(carret) % muta cursorul la inceputul unei linii
22, B' % muta cursorul pe linia nr, ', #'empluB B84 % muta pe linia 84
2;, shiftFv$ altFv si ctrlFv ne introduce intr%un sub mod in care putem selecta vizual un
bloc de te't sau mai multe randuri (valabil doar in @IM),
28, !(!an&) % echivalentul lui cop! din Dindo<s
2*, p(paste)
2+, ?(slash) % search for<ard,
26, L % search bac&<ard
24, n % urmatoarea aparitie
2:, 5 % aparitia anterioara
23, KK (z mare$ z mare) % salvare cu iesiere din fisier
Insert 'ode
#ste folosit pentru a insera te't in documentul curent, -entru a intra in Insert Mode
din (ommand Mode se pot folosi urmatoarele tasteB
i % insereaza inaintea caracterului de sub cursor
I % insereaza la inceputul unui rand
a % insereaza dupa caracterul de sub cursor
A % insereaza la sfarsitul randului
o % insereaza pe randul urmator,
Last Line 'ode
)e foloseste pentru a salva documentul curent$ pentru revenire la varianta de la
ultima salvare a fisierului sau pentru a e'ecuta diferite comenzi (te't substitution$ afisarea
nr, de linii etc), -entru a intra in acest mod se foloseste B (doua puncte) din (ommand
mode,
In Last Line mode utilizatorul are la dispozitie urmatoarele comenziB
<M % <rite and Muit
MQ % Muit fara salvare
<Q % salvare fara Muit
eQ R undo
et nu % numeroteaza lini
#ditorul @I foloseste fisierul de confiurare Z?,e'rc, Acesta poate fi modificat pentru
customizarea editorului,
5ota
@IM (@I Improved) reprezinta o varianta imbunatatita a lui @I care ofera multe facilitati
suplimentare si este de recomandat sa fie folosit atunci cand se poate, Toate reulile din @I
raman valabile
.2 Co/en0i de +a0a
In Linu' e'ista peste 800 de comenzi folosite pentru manaementul sistemului, 5u
toate sunt insa utilizate pentru tas&urile zilnice ale unui administrator de sistem, Mai 7os ne%
am propus sa e'plicam cele mai folosite comenzi din Linu', = inteleere buna a acestora
este e'trem de importanta pentru a putea avansa in studiul unui sistem de operare Linu',
Important
(unoasterea tuturor comenzilor si a tuturor optiunilor acestora este imposibila chiar
si pentru cei mai e'perimentati admini, 0ocumentatia comenzilor se aseste in man pae%
uri care trebuie folosite intesiv in momentul in care se doreste aflarea efectului unei
comenzi sau a unei optiuni a comenzii, #'empluB man ls
pwd - Print :orkin( Director7
Afiseaza directorul curent, 5u are optiuni sau arumente,
cd - C.an(e Director7
)chimba directorul curent,
cd 5#DJ0I1#(T=1O % mutare in directorul 5#DJ0I1#(T=1O
,, G directorul parinte
, G directorul curent
Z G home director!
#'emplu
2, 0irectorul curent se schimba cu ?etc? cd ?etc
;, @iitorul director curent va fi parintele directorului curent actual cd ,,
8, 0irectorul curent devine Aome 0irector! al userului care e'ecuta comanda, 0aca
se ruleaza comanda cd fara arumente se schimba directorul curent cu Aome
0irector!, (ele ; comenzi sunt echivalente
cd Z
cd
*, 0irectorul curent devine ultimul director in care ne%am aflat cd % G mutare in
directorul anterior
/kdir - 'ake Director7
m&dir =-TI=5) 0I1#(T=1O
=ptiuniB
%p G creaza atat directorul sau directoarele parinte daca acestea nu e'ista, 0aca directorul
parinte nu e'ista comanda m&dir returneaza eroare daca se foloseste fara optiunea %p
%v G verbose
#'empluB m&dir ?home?stud?documents?privat
ls - List
Listeaza continut director sau listare informatii despre fisier,
ls =-TI=5) >IL#?0I1#(T=1O
/1 - 'o1e
Muta sau redenumeste (in functie de conte't) fisiere si directoare, In Linu' nu
e'ista comenzi diferite pentru mutare respectiv redenumire,
mv =-TI=5) )=.1(# 0#)TI5ATI=5
=ptiuniB
%f G force (do not prompt before over<ritin)
%i G interactive (prompt before over<ritin)
%u G update (muta doar daca sursa este mai noua ca destinatia sau destinatia lipseste)
%v G verbose
#'emplu
2, Muta fisierul file2,t't din ?home?paul? in ?home?dan? sub numele de file;,t't
mv ?home?paul?file2,t't ?home?dan?file;,t't
;, 1edenumire director mv ?home?dan ?home?andrei
cp - Cop7
(opiaza fisiere sau directoare din sursa in destinatie,
cp =-TI=5) )=.1(# 0#)TI5ATI=5
=ptiuniB
%i G interactiv
%p G pastreaza o<ner$ roup si permisiuni pt, fisierul destinatie creat
%r G copiaza recursiv (obliatoriu pentru directoare)
%f G force (do not prompt before over<ritin)
r/ - !e/o1e
)tere fisiere sau directoare,
rm =-TI=5) >IL#)?0I1#(T=1I#)
=ptiuniB
%i G interactiv
%r G stere recursiv$ obliatoriu pentru directoare
%f G force
5ota
(omanda rm (ca si comenzile asemanatoare din Dindo<s) nu stere efectiv
informatia reprezentata de fisier ci doar marcheaza inode%ul si blocurile de date catre care
acesta pointeaza ca fiind Clibere pentru a fi utilizate din nouC, >olosind prorame speciale
informatia stearsa poate fi recuperata >=A1T# .)=1,
-rorame cunoscute si folosite pentru investiarea unui sistem dupa
compromiterea sa de catre un Blac& Aat Aac&er si care contin inclusiv utilitare pentru
recuperarea informatiei sterse accidental sau intentional sunt #$e leut$ %it$ &uto's( )ro"ser si #$e
*oroner's #ool!it (#*#),
Important
.n fisier sau director sters folosind comanda rm nu mai poate fi recuperat in mod
standard din 1ec!cle Bin, In Linu' pentru fisierele si directoarele sterse din consola cu
cumanda rm nu e'ista 1ec!cle Bin,
touc.
(reaza un fisier ol daca >IL# nu e'ista sau reseteaza atime$ mtime si ctime pentru >IL#
daca acesta e'ista,
touch =-TI=5) >IL#
cat
(oncateneaza si?sau afiseaza continutul unui fisier
cat =-TI=5) >IL#)
=ptiuniB
%b G no, of nonblan& lines
%n G no, of output lines
#'emplu
1. Afiseaza fisierul ?etc?pass<d la consola cat ?etc?pass<d
2. (oncateneaza fisierele ?etc?pass<d si ?etc?shado< in fisierul ?home?dan?pass<d
shado< pe care il si creaza daca nu e'ista sau il suprascrie daca e'ista,
cat ?etc?pass<d ?etc?shado< P ?home?dan?pass<d%shado<
/ore & less
-rorame de painare,
more >IL#
less >IL#
.ead
Afiseaza primele linii (default 20) dintr%un fisier
head =-TI=5) >IL#
=ptiuniB
%n nr G afiseaza primele SnrS linii
tail
Afiseaza ultimele linii (default 20) dintr%un fisier
tail =-TI=5) >IL#
=ptiuniB
%n nr G afiseaza ultimele SnrS linii
%n Fnr G afiseaza incepand cu linia SnrS
%f G afiseaza in timp real ultimele linii dintr%un fisier, tail %f fisier este cea mai importanta
comanda pentru urmarirea modificarii in timp real a lourilor,
#'emplu
Afiseaza fisierul ?etc?pass<d incepand cu linia nr, + si pana la final
tail %n F+ ?etc?pass<d tail %n + ?var?lo?messaes
Afiseaza in timp real ultimele 20 linii din fisierul cu louri
var?lo?messaes tail %f ?var?lo?messaes
strin(s
Afiseaza caracterele printabile?ascii dintr%un fisier binar,
strins >IL#
#'empluB strins ?bin?ls
wc
Afiseaza nr, de randuri$ caractere sau cuvinte dintr%un fisier
<c =-TI=5) >IL#
=ptiuniB
%l G nr, de linii
%< G nr de cuvinte
%m G nr de caractere
*ile
0etermina tipul fisierului
file =-TI=5) >IL#
=ptiuniB
%p G preserve atime
du - disk usa(e
Afiseaza marimea unui fisier sau director
du =-TI=5) >IL#
=ptiuniB
%& G adaua prefi'ul /B
%s G sum (summarize)
%h G human readable format
#'empluB du %&sh ?etc?
d* - disk *ree
Afiseaza spatiul total$ spatiul ocupat si spatiul liber de pe fiecare partitie de pe hard dis&,
df =-TI=5)
=ptiuniB
%h G human readable
%i G print used?free inodes
#'empluB df %hi
c/p - co/pare
(ompararea a ; fisiere fara afisarea diferentelor dintre ele,
cmp >IL#2 >IL#;
di**
(ompara >IL#2 si >IL#; dupa continut si afiseaza diferentele
diff =-TI=5) >IL#2 >IL#;
=ptiuniB
%i G case insensitive
%B G inora liniile oale (blan& lines)
%< G inora spatiile libere (<hite spaces)
%c G comparare detaliata
%! G afiseaza pe coloane
stat - statistics
Afiseaza informatii despre >IL# (size$ t!pe$ atime$ mtime$ ctime)
stat >IL#
.istor7
Afiseaza comenzile din histor!
histor! =-TI=5)
=ptiuniB
%c G stere comenzile din histor!
%d nr G stere linia nr, din histor!
w.ic.
(auta si afiseaza calea catre o comanda
w.ereis
(auta si afiseaza calea catre o comanda$ man pae sau sursa
upti/e
Afiseaza timpul de cand hostul este pornit precum si load%ul din ultimele 2$+ si 2+ minute
date
Afiseaza?modifica data

*ree
Afiseaza informatii despre 1AM si )DA-
free =-TI=5)
=ptiuniB
%t G total
%m G MB
%& G /B
una/e
Afiseaza informatii despre sistem (&ernel version etc)
uname =-TI=5)
=ptiuniB
%a G all info
%s G &ernel name
%r G &ernel release
%v G &ernel version
%m G machine
%p G processor
%o G operatin s!stem
#'empluB uname %a uname %s %r %v %m
1/stat - 1irtual /e/or7 statistics
Afiseaza informatii despre despre memorie$ cpu$ I?= bloc&s, Informatiile afisate sunt
documentate in man pae%ul comenzii,
i*con*i( - Inter*ace con*i(uration
Afiseaza informatii despre interfetele de retea, )e foloseste si pentru a seta caracteristicile
interfetelor de retea (I-$ 5et<or& Mas&$ MA( etc),
5ota
Multe e'emple din aceasta paina au folosit fisierul ?etc?pass<d, Acesta este unul dintre
cele mai importante fisiere din sistem in care se asesc utilizatorii sistemului$ cate unul pe
fiecare linie$ impreuna cu multe informatii despre acestia,
. !e(ular 9xpressions
= e'presie reulata (ree') reprezinta o modalitate (metoda) de identificare a unui
strin (sir de caractere) dintr%un te't dat conform anumitor reuli, .n ree' este reprezentat
fizic printr%un strin format din caractere speciale,
1euliB
2, Blocul fundamental reprezinta un sinur caracter si se selecteaza pe sine
;, = e'presie paranteza patrata (brac&et e'pression) reprezinta o lista de caractere
cuprinsa intre CHC si CIC si descrie un siur caracter din acea lista,
8, 0aca primul caracter este Y (caret) descrie orice caracter care nu se aseste in lista,
#'empluB ree'%ul H02;8*+64:3I % reprezinta o sinura cifra iar HY02;8*+64:3I
reprezinta orice caracter care nu este cifra,
*, In interiorul unei e'presii paranteza patrata un Crane e'pressionC reprezinta ;
caractere separate prin %(minus) si selecteaza(identifica) orice caracter care se aseste
intre cele ; caractere din rane e'pression,
+, Y (caret) in afara parantezelor drepte reprezinta un metacaracter care identifica
inceputul unei linii (daca este primul caracter din ree'),
6, X reprezinta un metacaracter care identifica sfarsitul unei linii (daca este ultimul
caracter din ree')
#'emplu
Yab % linie care incepe cu ab
abX % linie care se termina cu ab[
YX % linie oala
YaHa%z0%3I % linie care incepe cu CaC urmat de orice caracter intre CaC si CzC sau C0C si C3C
4, bac&slash (C[C) urmat de un caracter special selecteaza caracterul special respectiv,
(aractere speciale suntB ,$ N$ H$ [ (punct$ asteri'$ paranteza dreapta deschisa si bac&slash),
(aracterul special C,C (punct) selecteaza orice caracter mai putin 5#DLI5# (linie oala)
:, CLC (semnul intrebarii) selecteaza 0 sau 2 caractere anterioare
3, N (asteri') selecteaza zero (0) sau mai multe caractere anterioare
20, F (doar pt, e'presii reulate e'tinse) selecteaza caracterul anterior o data sau de mai
multe ori
22, \n] #lementul precedent este selectat de n ori (e'act)
2;, \n$] #lementul precedent este selectat de n sau mai multe ori
28, \n$m] #lementul precedent este selectat de cel putin n ori dar nu mai mult de m ori
(and folosim acolade trebuie sa le precedam cu bac&slash (C[C)
#'emplu
1. "asirea tuturor liniilor care contin un strin de tip (5- dintr%un fisier numit file2
rep SH02IH0%3I[\2;[]S file2,0aca se doreste asirea tuturor liniilor care contin 0=A1 strin
de tip (5- se foloseste CYC pentru ancorarea ree'%ului la inceput de rand si CXC pentru
ancorarea ree'ului la sfarsit de rand, rep SYH02IH0%3I[\2;[]XS file2
;, )a se creeze un fisier care sa contina toate fisierele si doar fisiere (de tip reular file)
din ?etc eliminand liniile oale liniile care contin cuvantul StotalS sau liniile care afiseaza
directoare ls %l1 ?etc? U erep %v S(YXUYtotalUY?)S P etcJcontent
.% Co/en0ile *ind si (rep
2,find
(omanda find cauta fisiere si directoare dupa criterii comple'e in mod recursiv find
Hpath,,,I He'pressionI, 0aca unul dintre arumente este numeric si are valoarea n se poate
folosiB
Fn for reater than n
%n for less than n
n for e'actl! n
%t!pe f G tipul este fisier
%t!pe d G tipul este director
%user uname G userul este uname
%roup name G rupul o<ner este name
%lin&s n G fisierul are n hard lin&%uri
%perm mode G permisiunile fisierului sunt e'act mode (octal or s!mbolic),
%perm %mode G all of the permission bits mode are set for the file,
%perm Fmode G an! of the permission bits mode are set for the file,
%size n G marimea fisierului este n (poate fi folosit ca sufi' cGb!tes$ bGblocuri de +2;
b!tes$&G&ilob!tes$ MGmeab!tes$ "Giab!tes),
)e poate folosi Fn G mai mare decat n$ %n mai mic decat n
%inum inodeJnumber G fisierul are nr, inod inodeJnumber
%name 1#"#6 G cauta dupa nume folosind reular e'pression (vezi capitolul referitor la
reular e'pressions)
#'emplu
1. (auta recursiv fisiere cu dimensiunea mai mare de ;M care%l au o<ner pe root
find ? %size F;M %user root %t!pe f
;, (auta fisiere din ?etc care nu%l au o<ner pe root find ?etc %not %user root
(riteriile comenzii find sunt asociate folosind )I loic (optiunea %a care este default) si
)A. loic ( %o)
;, rep
rep HoptionsI -ATT#15 H>IL#,,,I % cauta sabloane de te't (strin patterns) in >IL# sau
in outputul unei comenzi
%i G inore case
%n G line number din fisierul in care a fost asit patternul
%1 G recursive
%v G invert match
%< G cauta numai cuvinte
%A G afiseaza numele fisierului in care a fost asit pattern%ul
#'emplu
2,(autare cuvantul SnameserverS in toate fisierele din ?etc? rep SnameserverS ?etc?N
;, (autare cuvantul SrootS in ?etc?pass<d cu afisarea numarului liniei pe care se aseste
rep %n SrootS ?etc?pass<d
8, (autarea tuturor proceselor numite httpd care ruleaza ps %ef U rep httpd
Capitolul % - Useri
%.1 Concepte (enerale
(onturile de utilizator permit sistemului de operare sa identifice si sa restrictioneze
accesul la resurse, Administrarea conturilor de utilizator reprezinta una dintre principalele
sarcini ale unui administrator de sistem, In Linu' sau in .ni' fiecare actiune care are loc
(proces care ruleaza) sau fiecare resursa de tip fisier este controlata de un anumit utilizator,
#'ista ; cateorii principale de utilizatoriB
2, useri de siste/,
>iecare daemon care ruleaza foloseste un user pentru a avea acces la resurse si
pentru a e'ecuta tas&urile necesare,
De*initie
.n daemon este un proces care ruleaza in bac&round fara interactiunea unui
utilizator, #'empluB httpd ruleaza sub userul <<<user si <<<roup$ sendmail ruleaza sub
userul mail etc,
I/portant
In Linu' si .ni' orice proces sau daemon ruleaza cu drepturile utilizatorului care%l
lanseaza in e'ecutie, #'empluB daca root lanseaza un proces$ procesul are acces total asupra
sistemului, 0aca un utilizator normal lanseaza acelasi proces$ procesul va avea acces doar
asupra fisierelor la care are acces utilizatorul si in acelasi mod, Acest concept este
fundamental$ iar pe el se bazeaza o mare parte din securitatea enerala Linu'?.ni',
;, useri persoane,
)e autentifica in eneral prin username si parola, .n asemenea cont de user este
format dinB username$ parola$ home director!$ mediul de lucru (environment) % X-ATA$
umas&$ shell%ul folosit etc,
>iecare user este identificat printr%un .I0, .I0 este in eneral pe 26 sau 8; de biti
(intre 0 si 6++8+ sau 0 si *;3*364;3+), .serul root are .I0 G 0, (u toate ca se recomanda
ca .I0%ul sa fie unic pentru fiecare utilizator acest lucru nu este obliatoriu, 0aca mai
multi utilizatori au acelasi .I0 ei vor fi tratati in mod identic de catre sistem,
.serii sunt oranizati in rupuri pentru a se putea seta permisiuni la nivel de rup,
>iecare user face parte din unul sau mai multe rupuri, #'ista deci pentru fiecare user un
rup principal (cel definit in ?etc?pass<d) si optional mai multe rupuri secundare, >iecare
rup este identificat printr%un nr, unic numit "I0,
%.2 3isiere speci*ice
2, /etc/passwd
.serii sistemului se asesc in fisierul ?etc?pass<d, )tructura acestuia este formata
din campuri separate prin CBC (doua puncte) astfelB
user4na/e;parola;uid;(id4principal;co/entariu;.o/e4director7;s.ell4de*ault
#'emplu
studB'B+00B+00B.ser principalB?home?studB?bin?bash
user2B'B+02B+02Buser folosit pentru testeB?home?user2B?bin?bash
sshdB'B42B6+B))A daemonB?var?lib?sshdB?bin?false
0aca in loc de parola in ?etc?pass<d este C'C parola se aseste in fisierul
?etc?shado< (hash%ul acesteia sau criptata), (omanda p<c& verifica interitatea fisierului
?etc?pass<d
2. /etc/s.adow
)tructura fisierului ?etc?shado< este urmatoareaB
userna/e;password;last4c.an(e4/in;/ax;warn;inacti1e;expire
userna/eB userul din ?etc?pass<d, 1eprezinta leatura intre fisierul ?etc?pass<d si
?etc?shado<
passwordB forma criptata a parolei sau hash%ul acesteia
last4c.an(eB nr, de zile de la 2 Ian 2340 pana in ziua in care a avut loc ultima schimbare a
parolei
/inB nr minim de zile intre doua schimbari succesive
/axB nr ma'im de zile intre doua schimbari succesive
warnB nr, de zile dinaintea e'pirarii parolei in care userul este avertizat
inacti1eB nr de zile de la e'pirarea parolei si pana cand contul este dezactivat
expireB nr, de zile de la 2 Ian 2340 de cand contul este dezactivat
In fisierul ?etc?loin,defs se asesc informatii care vor fi foloste default in
momentul in care se creaza un user (lunimea minima a parolei$ in cat timp e'pira contul
etc),
. /etc/(roup
"rupurile se asesc in fisierul ?etc?roup )tructura acestuia este formata din
campuri separate prin CBC (doua puncte) astfelB
(roup4na/e;parola;<UID;userii4din4acest4(rup
#'emplu
proramatoriB'B200Bdan$vali$eore
rootB'B0Broot
%. 'ana(e/ent conturi
Administrarea conturilor de utilizator presupune adauarea de noi conturi$
schimbarea parametrilor unui cont (parola$ rupuri$ etc)$ stererea de conturi etc, #'ista 8
modalitati principale de a administra conturile utilizatorilorB
2,9ditarea directa a *isierelor care contin informatii despre useri$ rupuri si parole
folosind editorul preferat cum ar fi @I, >iesierele care trebuie modificate suntB
?etc?pass<d$ ?etc?shado< si ?etc?roup, Aceasta metoda trebuie evitata fiindca poate duce la
erori si deci la instabilitate,
2.Ad/istrarea *olosind unelte (ra*ice
>iecare distributie de Linu' are propriile utilitare, In >edora in /0# si "5=M#B
)!stem )ettins %P .sers and "roups 0e multe ori$ in special pe calculatoare cu rol de
server mediul rafic nu este instalat sau nu ruleaza, In plus de cele mai multe ori
administrarea se face remote prin ssh deci aceasta metoda nu ne este mereu la indemana,
.3olosind co/en0i de s.ell in consola.
a) -entru adauare?modificare?sterere useriB useradd$ userdel$ usermod
useradd =-TI=5) .)#1 %P adaua un utilizator
%c ScommentS
%d home director!
% rupul principal
%" rup2$ ,,, rup5
%s shell
%u uid
%m create home dir, 0aca se foloseste optiunea %& s&eletonJdir$ fisierele si directoarele
din scheletonJdir vor fi copiate in home$ daca nu vor fi copiate cele din ?etc?s&el
%& s&eleton dir (doar impreuna cu %m)
#'emplu
useradd %c Sdan proramatorS %d ?home?dan %m % proramatori %" users$office Rs ?bin?bash
%u 4:4: dan
userdel %r .)#1 %P stere un user si rupul principal corespunzator (daca nu mai e'ista
useri in acel rup),
=ptiunea %r se refera la faptul ca va fi sters si home director!,
passwd .)#1 %P modifica parola utilizatorului user
user/od .)#1 %P modifica datele unui user, (ommand usermod foloseste aceleasi
optiuni ca si useradd
#'emplu
usermod %c Sdan contabilitateS %d ?home?dan; %m % contabilitate %" users$office %s ?bin?bash
%u :0 dan
b) -entru adauare?sterere?modificare rupuriB roupadd$ roupdel$ roupmod
#'emplu
roupadd proramatori
roupdel proramatori
roupmod %n profesori proramatori % schimba denumirea rupului proramatori in
profesori,
.nui rup i se poate seta o parola folosind comanda (passwd,
#'empluB pass<d proramatori
Aceasta este ceruta in momentul in care un utilizator doreste sa ruleze un shell (sa devina
parte a unui rup pentru a avea permisiunile rupului respectiv) cu un alt ".I0 folosind
comandaB
ne<rp 5=.LJ"1=.-,
Modificare o<ner?rup o<ner pentru un fisier sau director
>iecare fisier sau director are un o<ner si un rup o<ner, Acestea fac parte din
structura inodului unui fisier respectiv director, 0efault o<nerul unui fisier este userul
care%l creaza$ iar rupul o<ner al fisierului este rupul principal al userului care creaza
fisierul sau directorul,
9xe/pluB 0aca userul dan creaza un fisier numit a,t't$ fisierul il va avea o<ner pe dan$ iar
rupul o<ner al fisierului va fi rupul principal din care face parte dan, -entru a
schimba o<nerul si rupul o<ner al unui fiser?director se foloseste comanda cho<n si
chrp, root este sinurul user care poate modifica o<nerul respectiv rupul o<ner pentru
fisiere si directoare,
#'emplu
1. )chimba o<nerul fisierului a,t't in dan
cho<n paul a,t't
;, )chimba rupul o<ner al directorului ?home?prorame in proramatori
chroup proramatori ?home?prorame
8, )e schimba in mod recursiv atat o<nerul cat si rupul o<ner al directorului
?home?prorame in dan respectiv proramatori, Modul recursiv se refera la schimbarea
o<nerului si rupului atat pentru director cat si pentru toate subdirectoarele si fisierele
continute de acesta, Acest mod de folosire al comenzii cho<n face ca comanda chrp sa
fie folosita e'trem de rar in practica, cho<n %1 paul,proramatori ?home?prorame
I/portant
AtentieQ Intre rupul o<ner al unui fisier si rupul principal sau rupurile secundare
ale o<nerului fisierului nu e'ista leatura, .n fiser poate sa%l aiba ca o<ner pe userul dan$
ca rup o<ner sa apartina rupului proramatori fara ca dan sa faca parte din rupul
proramatori
%.% su & sudo
=data loat in sistem un user poate "deveni" un alt user folosind comanda su
(substitute user) care ruleaza un nou shell cu .I0 si "I0 noului user, .rmatoarele comenzi
vor fi e'ecutate cu .I0 si ".I0 userului nou, su H%I HusernameI caracterul C%C are ca efect
imprumutarea mediului de lucru (environmet) al noului user,
Apar in acest moment ; noi concepteB 1.I0 (1eal .ser I0) ca fiind .I0%ul
utilizatorului care s%a loat initial in sistem si #.I0 (#ffective .ser I0) ca fiind .I0%ul
utilizatorului devenit in urma rularii comenzii su,
-entru a vizualiza 1.I0 se foloseste comanda <ho am i$ iar pentru a vizualiza
#.I0 se foloseste comanda <hoami sau id
5ota
)e poate confiura ce useri au dreptul sa devina root folosind su, 0in pdv al securitatii
sistemului este esential sa permitem numai catorva useri sa poata deveni root (chiar daca si
altii stiu parola ei nu pot deveni root),
#'emplu
)e editeaza fisierul ?etc?pam,d?su astfel (pentru >edora)B

aut. su**icient /li+/securit7//pa/4w.eel.so trust use4uid
aut. re=uired /li+/securit7//pa/4w.eel.so use4uid
-rima linie specifica faptul ca este suficient ca un user sa faca parte din rupul <heel
pentru a deveni root, Acesta devine root fara a i se mai cere parola,
A doua linie specifica faptul ca doar userii care fac parte din rupul <heel vor putea
deveni root, Alti useri chiar daca cunosc parola de root nu pot deveni root prin folosirea
comenzii su,
5umai una dintre cele ; linii poate sa apara in fisier, -entru a comenta o linie se
foloseste caracterul T (diez),
Important
.n principiu de baza in Linu' este ca userul root nu trebuie folosit in mod curent,
Administratorul trebuie sa se loheze folosind un user neprivileiat iar in momentul in care
are nevoie de e'ecutia unui tas& ce necesita drepturi de root$ acesta CdevineC root folosind
comanda su, Altfel sunt introduse rave probleme de securitate care pot duce la rezultate
distructive pentru intre sistemul,
sudo reprezinta o alta modalitate de a e'ecuta comenzi cu drepturi de root fara a fi
root sau a cunoaste parola de root necesara devenirii root folosind comanda su,
Modul de folosire al comenzi sudo esteB sudo co//and, (ommanda command este
e'ecutata cu drepturi de root,
#'emplu
Toate e'emplele de mai 7os sunt rulate de useri neprivileiati dar cu drepturi de root
2, Instalarea unui proram pe .buntu folosind apt%et
sudo apt%et install &8b
;, (onfiurarea parametrilor placii de retea precum I- si 5et<or& Mas&
sudo ifconfi eth0 23;,26:,0,2 netmas& ;++,;++,;++,0
5ota
Modalitatea de a e'ecuta comenzi cu drepturi de root folosind sudo este folosita
intensivpe anumite distributii de Linu' si mai putin pe altele, 0istributiile bazate in mod
intensivpe folosirea comenzii sudo sunt cele derivate din 0ebian precum .buntu$
/ubuntu$/noppi' etc, -e alte distributii precum cele bazate de 1edAat sau )lac&<are$
"entoo etc se obisnuieste rularea de comenzi cu drepturi de root dupa ce in prealabil userul
neprivileiat a devenit root folosind comanda su
%.) 'onitori0are useri
Aceasta sarcina a administratorului de sistem presupune monitorizarea loarilor in
sistem sau vizualizarea userilor loati la un moment dat (prezent sau trecut), )e folosesc
urmatoarele comenziB
16 w.o % afiseaza userii loati in sistem la momentul prezent, (omanda afiseaza informatia
sub forma tabelara in urmatorul modB
username terminalul de unde s%a loat data loarii
=ptiuniB
%A % afiseaza un header pentru a interpreta mai usor output%ul
%M % afiseaza nr, userilor loati
#'emplu
T <ho
stud B0 ;004%02%80 03B8;
root tt!; ;004%02%80 22B8+
dan pts?0 ;004%02%80 22B88 (B0,0)
dan pts?2 ;004%02%80 22B8+ (B0,0)
I/portant
(omanda w.o afiseaza 1.I0 adica userul loat initial in sistem,
26 w % afiseaza cine este loat in sistem si comanda curenta a fiecarui user,
-e prima linie se afiseazaB data curenta$ uptime$ nr user loati si Cs!stem loadC pt, ultimele
2$ + si 2+ minute, Informatii despre userii loati se asesc in fisierul ?var?run?utmp
(informatii despre utilizatorii loati in acel moment) si ?var?lo?<tmp (informatii despre
istoria loarii in sistem)
6 last % afiseaza informatii din ?var?lo?<tmp in ordine cronoloica inversa,
Lourile se rotesc periodic, -entru a vizualiza inreistrariile dintr%un fisier <tmp mai vechi
precum ?var?lo?<tmp,8 se foloseste optiunea %f
#'empluB last %f ?var?lo?<tmp,8
=ptiuniB
%n nr G nr, de linii afisate
numeJterminal G loarile de la terminalul specificat
#'empluB last pts?;
%6 lastlo( % afiseaza inreistrarile din ?var?lo?lastlo (ultimile loari in sistem pentru
fiecare user)
=ptiuniB
%u user G lastlo doar pentru userul user
Capitolul ) - ,iste/ul de per/isiuni
).1 Concepte (enerale
)istemul de fisiere in Linu' imparte in mod standard utilizatorii in 8 cateoriiB
a) o<ner (proprietarul fisierului), B! default (implicit) un fisier nou creat primeste ca
o<ner creatorul sau, =<ner%ul are drepturi totale asupra fisierului$ poate sa%l steara$ sa%l
modifice sau sa%i schimbe proprietatile,
#'empluB 0aca userul numit dan creaza un fisier nou numit raport,pdf$ o<nerul fisierului
va fi userul dan
b) roup (rupul proprietar al fisierului), >olosind rupul care detine fisierul se pot seta
drepturi pentru un nr, mai mare de utilizatori, B! default un fisier nou creat primeste ca
rup o<ner$ rupul principal al userului care%l creaza,
#'empluB 0aca userul dan are ca rupul principal numit contabili$ fisierele create de
acesta vor avea ca o<ner pe dan$ iar ca rup o<ner contabili,
c) others (ceilalti sau restul lumii), Toti utilizatorii care nu fac parte din cele ; cateorii,
5ota
(onceptele referitoare la o<ner si roup o<ner mai sus mentionat sunt adevarate atat
pentru fisierele nou create cat si pentru directoarele nou create,
>iecare dintre cele 8 cateorii detine independent urmatoarele drepturi asupra unui
fisier sau directorB
a) r (read) % dreptul de citire
b) < (<rite) % dreptul de scriere
c) ' (e'ecute) % dreptul de e'ecutie
Aceste drepturi au efect diferit in functie tipul fisierului (fisier normal sau director),
Per/isiune 3isier Director
read
dreptul de citire al
continutului fisierului
dreptul de a afisa continutul directorului
<rite
dreptul de modificare al
continutuluifisierului
dreptul de a modifica continutul
directorului(sterere$ creare$ redenumire
fisiere?directoare continute in director) impreuna
cu '
e'ecute dreptul de a e'ecuta fisierul
acces la fisierele continute, dreptul de a ne muta
in director,
5ota
0aca un director contine dreptul de scriere ( <) pentru o anumita cateorie de user ( o<ner$
roup sau other)$ acea cateorie are dreptul de a stere?modifica continutul directorului
(doar fisiere 5. si directoare) chiar daca pentru acele fisiere nu e'ista drepturi,
-entru a stere?modifica continutul directorului trebuie sa avem atat < cat si ',
#'emplu
2, 0aca un director are pentru o<ner permisiunile de read(r) si <rite(<) dar nu si
e'ecute(')$ o<ner%ul nu va putea crea noi fisiere in director$ nu va putea stere continutul
directorului si nu se va putea muta in director, Motivul este lipsa permisiunii e'ecute
pentru director,
).2 Per/isiuni speciale
In afara permisiunilor standard (read$ <rite si e'ecute) e'ista urmatoarele
permisiuni specialeB
2) ,UID >setuid6.
1eprezinta o permisiune speciala pentru fisierele e'ecutabile,
Important
In Linu' un fisier e'ecutabil are aceleasi drepturi ca si userul care il e'ecuta,
)etand bit ul ).I0$ la e'ecutare fisierul are drepturile o<ner%ului si nu al celui care il
e'ecuta, >isierele cu ).I0 setat si cu o<ner root reprezinta o rava problema de securitate,
=ricine le poate e'ecuta$ iar in urma e'ecutiei procesul creat va avea drepturi de root,
#'emplu
2, (omanda rm este reprezentata fizic prin fisierul e'ecutabil ?bin?rm care are drept o<ner
pe root, In momentul in care root e'ecuta comanda rm efectul este ca aceasta comanda
are drepturile lui root si poate stere orice fisier din sistem, 0aca un alt user e'ecuta
comanda rm$ efectul este ca aceasta comanda va avea drepturile userului care a e'ecutat%o
si deci nu va putea stere niciun fisier important,
In schimb daca se seteaza permisiunea ).I0 pentru fisierul ?bin?rm$ orice user non%root
care e'ecuta comanda rm va putea stere =1I(# fisier din sistem, Acest lucru se intampla
fiindca comanda rm are drepturile o<nerului adica root si nu drepturile celui care o
e'ecuta cum este default,
;, .ser neprivileiat care poate vizualiza fisierul ?etc?shaho< fiindca comanda less are
).I0 setat
(omanda ls %l afiseaza pentru fisierele cu ).I0 setat CsC (s mic) pe pozitia
dreptului de e'ecutie pentru o<ner daca fisierul are dreptul de e'ecutie pt, o<ner sau C)C (s
mare) daca fisierul nu are dreptul de e'ecutie pentru o<ner,
;) ,<ID >set(id6.
1eprezinta o permisiune speciala care are efecte diferite daca se aplica unui fisier
sau unui director, (and se aplica unui fisier$ daca fisierul este e'ecutabil$ procesul creat in
urma e'ecutiei fisierului va rula cu drepturile rupului care detine fisierul si nu cu rupul
primar al userului care e'ecuta fisierul,
Aceasta permisiune ( )"I0) este folosita mai ales pentru directoare si anume pentru
a crea directoare "shared", >isierele noi create in interiorul directorului vor avea ca rup
care le detine rupul directorului si nu al userului care le creaza cea ce se intampla default,
(omanda ls %l afiseaza pentru fisiere cu )"I0 setat CsC (s mic) pe pozitia dreptului
de e'ecutie pentru rup daca fisierul sau directorul are dreptul de e'ecutie pt, rup sau C)C
(s mare) daca fisierul sau directorul nu are dreptul de e'ecutie pentru rup,
8) ,tick7 +it.
)e foloseste pentru directoarele ""orld "riteable" si are rolul de a preveni
posibilitatea stererii continutului acestora de catre useri altii decat o<nerul directorului cu
stic&! bit setat sau o<nerul fisierului din acel director$ chiar daca drepturile directorului ar
permite acest lucru (r<'),
#'empluB ?tmp
5ota
1oot face e'ceptie$ iar rupul fisierului se supune reulii (nu poate modifica),
AplicatieB )tic&! Bit se foloseste in momentul in care se doreste crearea unui
director <orld <riteable (toate permisiunile pentru toti userii)$ dar cu prote7area
continutului, >ara stic&! bit orice user poate creare fisiere in director$ dar poate si stere
fisierele create de alti useri, 0aca directorul are stic&! bit$ fiecare user are dreptul sa steara
doar propriile fisiere,
(omanda ls %l afiseaza pentru directoarele cu stic&! bit setat CtC (t mic) pe pozitia
dreptului de e'ecutie pentru other daca fisierul are dreptul de e'ecutie pentru other sau CTC
(t mare) in rest,
).% 'odi*icare per/isiuni
-entru a modifica drepturile de acces ale unui fisier se foloseste comanda chmod
(chane mode) cu urmatoarea sinta'aB
chmod H=-TI=5I,,, M=0#,,, >IL#)
#'ista doua posibilitati de setarea a drepturilor de accesB
16 'odul si/+olic >relati16
Trebuie avute in vedere urmatoareleB
a) ale cui drepturi se modifica (u pentru o<ner$ pentru roup$ o pentru other$ a pentru all)
b) ce presupune modificarea (F (plus) pentru adauare$ % (minus) pentru eliminare$ G
(eal) pentru setare indiferent de permisiunile de7a e'istente)
c) ce permisiuni se modifica (r pentru read$ < pentru <rite$ ' pentru e'ecute$ s pentru
setuid?setid si t pentru stic&! bit)
#'emplu
1. -entru fisierul ?home?stud?orar,doc se modifica drepturile de acces astfelB pentru o<ner
se adua r$< si '$ pentru rup se adaua r si <$ iar pentru o se adaua r, Totul este relativ la
drepturile avute de7a,
chmod uFr<'$Fr<$oFr ?home?stud?orar,doc
2. -entru fisierul ?home?stud?testJcone'iuneJinternet,sh se modifica drepturile de acces
astfelB pentru o<ner si roup se adaua dreptul de e'ecutie iar pentru other se elimina toate
drepturile,
chmod uF'$o%r<' ?home?stud?testJcone'iune,sh
. )e seteaza stic&! bit pentru directorul ?home?stud?tmp
chmod Ft ?home?stud?tmp
Totul este relativ la permisiuniele de7a e'istente,
2. 'odul octal >a+solut6
)e folosesc * cifre in baza : (intre 0 si 4) in mod pozitional astfelB pentru fiecare
rupa de permisiuni (u$ si o) in functie de e'istenta sau lipsa unei permisiuni specific se
aduna o cifra conform cu puterea lui ; corespunzatoare acelei pozitii, Lipsa unei permisiuni
se marcheza su semnul C%C (minus),
#'emplu
r < % r % ' r % %
* ; 0 * 0 2 * 0 0
-ermisiune fisier G 6+*
-rima cifra din cele * reprezinta biti speciali care se pot seta ( ).I0$ ".I0 si
)tic&! bit), 0aca este zero reprezinta lipsa lor, 0aca se omite se considera zero ( #'empluB
permisiunea 6+* este de fapt 06+*),
-entru prima cifra se poate folosiB
2 pentru stic&! bit
; pentru )"I0
* pentru ).I0
#'emplu
#chivalenta dintre modul relativ si obsolutB
r<' r<' r<' G 0444
#'empluB chmod 0444 ?home?stud?a,t't
r%% %%% %%% G 0*00
#'empluB chmod 0*00 ?home?stud?b,t't
r<) r<% r%' G *66*
#'empluB chmod *66* ?home?stud?c,t't
r<% r%s r<' G ;6+4
#'empluB chmod ;6+4 ?home?stud?d,t't
).) U/ask
(onceptul de umas& se foloseste pentru a stabili modul default de permisiuni cu
care este creat un director sau fisier,
B! default fisierele au permisiunile 0666(r<% r<% r<%) iar directoarele 0444(r<'
r<' r<'), -entru a modifica modul default de permisiuni se foloseste umas& in urmatorul
modB din valoarea default se scade umas& (pozitional)$ rezultand modul in care vor fi
create fisierele in ceea ce priveste permisiunile,
#'emplu
daca umas& este 000; noile fisiere create vor avea permisiunile 066* iar directoarele 044+
daca umas& este 00;; noile fisiere create vor avea permisiunile 06** iar directoarele 04++
#'ista o sinura valoare umas& pentru fiecare user, )e vizualizeaza cu comandaB
umas&,-entru a modifica umas& se foloseste comanda umas& 4O5(6M(S7( ( #'empluB
umas& 0;;;),
4O5(6M(S7( poate fi reprezentata octal sau simbolic,
5ota
.mas& nu trebuie schimbata decat in situatii deosebite, Modificarea umas& poate duce la
caderea intreului sistem,
5ota
=data modificat umas& noua valoare nu se pastreaza decat pana la urmatorul restart, -entru
ca modificarea umas& sa fie permanenta se scrie comanda de modificare a umas& intr%un
fisier de initializarea al environment%ului utilizatorului precum Z?,bashrc,
).) Atri+ute speciale
)istemele de fisiere e'tinse precum e't8 folosesc pe lana permisiunile clasice si
cateva atribute speciale pentru fisiere si directoare, -entru setarea acestora se foloseste
comanda chattr,
chattr AT1IB.T >I)I#1
%i G immutable (nu poate fi sters sau modificat)
%A G nu actualizeaza atime
%1 G modifica atributele speciale recursiv pentru directoare
%a G 7ust append
#'empluB
chattr Fi a,t't
chattr %a a,t't
-entru vizualizare atribute se foloseste comanda lsattr
%1 G listeaza recursiv continutul directorului
%d G listeaza atributele directorului in loc de continutul acestuia
%a G listeaza atributele fisierelor ascunse
#'empluB lsattr a,t't
Capitolul 2 - Procese
2.1 Concepte (enerale
.na dintre sarcinile &ernelului este si alocarea resurselor (1AM$ (-. etc)
diferitelor aplicatii,
0efinitie
.n proces reprezinta unitatea elementara de alocare a resurselor in sistem si ruleaza
in propriul sau spatiu de memorie,
In momentul in care se e'ecuta o comanda este creat un nou proces, -arintele acelui
proces este shell%ul curent, Imainea procesului reprezinta proramul care se e'ecuta si
care se incarca in memoria 1AM,
#'ista diferente intre un proram si un proces, Acelasi proram poate enera mai
multe procese diferite,
#'empluB deschiderea simultana a editorului @I sau folosirea de mai multi useri a
comenzii ls,
5ota
-rocesoarele (e'ceptie cele dual%core) e'ecuta un sinur proces la un anumit moment dat,
>iecare primeste un anumit slot de timp in care poate folosi procesorul$ apoi ofera
posibilitatea altui proces de a folosi (-., Astfel este creata senzatia de e'ecutie simultana,
Important
>iecare proces care se e'ecuta are anumite drepturi asupra sistemului si anume
drepturile userului care l%a e'ecutat (user de sistem sau persoana), .n proces pornit de root
are drepturile lui root (totale)$ iar acelasi proces pornit de un user normal are drepturile
userului (limitate), #'ceptie fac proramele care au ).I0 sau ".I0 setat, Acestea pleaca
cu drepturile o<nerului sau rupului o<ner si nu ale celui care le e'ecuta,
#'ista comenzi care sunt incluse in shell si care nu se asesc ca prorame
independente (fisiere e'ecutabile)
#'empluB cd$ 7obs$ alias$ umas&$ ulimit$ echo etc
Acestea nu creaza un nou proces cand se e'ecuta,
2.2 Caracteristici procese
2,)istemul de operare foloseste functia de sistem for&() pentru a crea noi procese, -rima
etapa este crearea unui proces identic cu parintele sau (aceleasi resurse$ drepturi$ practic se
creaza o copie identica a parintelui), .lterior procesul nou creat Curmeaza propriul sau
drumC adica modifica datele primite de la parinte pentru a e'ecuta propria sarcina,
;,>iecare proces are un parinte$ cel care l%a creat, #'ceptie face procesul init,
8,-rocesele sunt identificate dupa un nr, unic pentru intre sistemul numit -I0 (-rocess
I0),
*,-arintele fiecarui proces este identificat cu un --I0 (-arent -rocess I0),
+,-rocesul init este primul care porneste la butarea sistemului si are -I0 G 2, Init se mai
numeste si parintele tuturor proceselor,
6,.n proces dureaza din momentul in care este creat de parintele sau si pana cand
proramul e'ecutat de proces se termina iar rezultatul procesului este intors parintelui, In
acest moment parintele comunica /ernelului sa elibereze resursele alocate procesului,
,tarile unui proces
.n proces se afla in urmatoarele stari de la nastere (for&()) si pana la terminarea sa,
a6 created
1eprezinta etapa in care procesul este creat si astepta permisiunea schedulerului pentru
starea read!,
+6 read7 >waitin( sau runna+le6
-rocesul a fost incarcat in memorie si asteapta e'ecutia procesorului, #'ista mai multe
procese care se asesc simultan in aceasta stare,
c6 +lockin( >sleepin(6
-rocesul este blocat din cauza unei resurse inaccesibile (fisier$ variabila de tip semafor$
device), #ste sters din lista de asteptare pentru a fi e'ecutat de procesor, 0aca resursa se
elibereaza procesul intra in starea Cread!C,
d6 runnin( >acti1e sau executin(6
-rocesul este e'ecutat de procesor in acest moment, 0aca isi depaseste slice%ul (timpul)
alocat pentru e'ecutie va trece din nou in starea read!,
e6 ter/inated
.n proces intra in aceasta stare fie din starea runnin daca a terminat e'ecutia sau daca
este omorat (&illed) printr%un semnal, 0aca nu este sters din memorie devine zombie,
0aca procesul are copii$ acestia sunt preluati de init,
*6 suspended and waitin(
1eprezinta procesele care au fost indepartate din memoria principala si duse in memoria de
tip s<ap,
(6 suspended and +locked
1eprezinta procesele care se asesc in memoria de tip s<ap in starea de suspendare,
Atri+utele unui proces
.n proces detine urmatoarele atributeB
a) -I0 %P -rocess I0 % identificatorul unic al unui proces
b) --I0 %P -arent -rocess I0 % identificatorul parintelui procesului
c) .I0 %P .ser I0 % Identificatorul userului sub care ruleaza procesul
d) ".I0 %P "roup I0 % Identificatorul rupului sub care ruleaza procesul
e) -rioritate
2. Cate(orii de procese
In Linu' e'ista urmatoarele cateorii de proceseB
1. Parinte >parent6
>iecare proces poate enera un alt proces si devine parinte, In afara procesului init
fiecare proces are un parinte,
2. Copil >c.ild6
In momentul in care procesul copil se e'ecuta$ parintele intra in starea de sleepin
pana cand copilul termina e'ecutia, 0aca copilul se e'ecuta in bac&round parintele
intra?ramane in starea read!,
. Dae/on
1eprezinta un proces care ruleaza in bac&round,
%. $r*an >orp.an6
1eprezinta procesele ale caror parinti au intrat in starea terminated inaintea lor,
)unt preluate automat de init$ parintele tututor proceselor,
). ?o/+ie >de*unct6
1eprezinta procesele care au terminat e'ecutia dar nu sunt sterse din tabele de
procese, 5u pot fi terminate in modul conventional (folosind comanda &ill) ci doar de catre
procesul parinte sau init daca procesul parinte termina e'ecutia, In eneral zombie nu fac
rau sistemului fiindca nu consuma resurse,
2.% Co/en0i 1i0uali0are
1. ps >process status6 - a*isarea ta+elara a listei de procese
=ptiuniB
fara optiuni G afiseaza procesele pornite din terminalul curent
%e (sau A) G toate procesele tuturor userilor
%f G full description
%u user G doar procesele userului user,
%%forest G afiseaza arborescent
>iindca de cele mai multe ori lista de procese nu incape pe un ecran$ comanda ps se
foloseste in combinatie cu rep sau less,
#'emplu
ps %ef
ps %ef U rep init
ps %u stud %f U less
2. pstree - a*isare ar+orescenta a proceselor
%a G afisarea arumentelor liniei de comanda
%c G afisare decompactata a sub arborilor
%h G sublinierea procesului curent si a parintilor acestuia
%p G afisare -I0
#'empluB pstree %ahp
. p(rep - a*isea0a procesele care rulea0a@ cautandu-le dupa nu/e.
%l G afiseaza si -I0
%u username G afiseaza procesele detinute de username (#.I0),
#'empluB pre %l %u root$stud sshd
%.top A a*isarea in ti/p real a proceselor cu optiuni di1erse de ordonare dupa di*erite
criterii
=ptiuniB
%c G afisarea comenzii complete,
%p -I0 G afiseaza doar procesul cu -I0
%d ss,tt (seconds,tenths)G refresh la fiecare secunda,zecime (sunt permise numere mai
mici ca 2)
%u username G doar procesele care ruleaza sub username,
#'empluB top %d 0,8 G refres la fiecare 8 zecimi de secunda,
In timpul operarii putem apasa urmatoarele tasteB
h sau L G vizualizam un help pentru top
M G Muit
f G selectarea campurilor care vor fi afisate
o(o mic) G selectarea ordinii de afisare
=(= mare) G selectarea campului de sortare
d G insert dela! refresh
u G afisarea proceselor doar pentru un user,
& G trimite un semnal unui proces,
)emnificatia celor mai importante coloane afisate de topB
-I0 G process id
--I0 G parent process id
.)#1 G utilizatorul sub care ruleaza procesul
-1 G prioritatea procesului
5I G 5I(# G valoarile neative reprezinta o prioritate mai mare$ iar cele pozitive o
prioritate mai mica,
1#) G 1esident )ize G (antitatea de memorie non%s<ap (&b) folosita
@I1T G @irtual Imae ()<ap F 1es)
)A1 G )hared Memor! % memoria shared folosita, Acest tip de memorie poate fi
impartita intre mai multe procese,
) G -rocess )tatus
)tatusul unui proces poate fi
0 G uninterruptible sleep
1 G runnin
) G sleepin
T G stopped
K G zombie
^(-. G procentul din timpul (-. folosit de la ultima afisare
^M#M G procentul din memorie folosit
TIM#
(=MMA50
5ota
Tas&s sho<n as runnin should be more properl! thouht of as Sread! to runS %% their
tas&Jstruct is simpl! represented on the Linu' run%Mueue, #ven <ithout a true )M-
machine$ !ou ma! see numerous tas&s in this state dependin on topSs dela! interval and
nice value, )M- G )!metric multiprocessin (multiprocessor computin)
httpB??en,<i&ipedia,or?<i&i?)!mmetricJmultiprocessin
)ortarea dupa un camp afisat de topB
b G tole on?off % afecteaza daca top va arata boldat coloanele dupa care se sorteaza si
procesele runnin,
' G afiseaza boldat coloana de sortare
! G afiseaza boldat randurile care reprezinta procesele CrunninC sau Cread! to runC
-entru a modifica campul de sortare se apasa C=C (o mare) si se alee campul
corespunzator, )e poate trece dintr%un camp in altul cu C_C si CPC
)hortcutsB
M G sort b! memor!
- G sort b! processor
1 G schimba modul de ordonare (crescator$ descrescator),
-entru a salva modificarile facuteB D (salveaza in Z?,toprc)
). nice
-entru a modifica prioritatea unui proces se foloseste comanda nice (default F20)
#'empluB
nice %n %;0 sort nr,t't G prioritate ma'ima
nice %n F23 top G prioritate minima
2.) Co/unicatia dintre procese / ,e/nale
In Linu' si .ni' procesele comunica prin doua modalitati principaleB
1.Pipes >conducte6
-rocesele pot cumunica prin canale speciale numite pipes, .n proces trimite
informatie pe acest canal care va fi folosita de celalalt proces, )incronizarea este posibila
fiindca in momentul in care un proces doreste sa citeasca dintr%o conducta oala este blocat
pana cand e'ista date disponibile,
#'ampleB sort _ numere,t't U head
(omanda sort ordoneaza fisierul numere,t't care reprezinta inputul sau, =utputul
comenzii sort in loc sa fie redirectat catre standard output este conectat la o conducta (care
e'ista doar pe durata e'ecutiei comenzilor) care transmite datele ca input comenzii
head, 0aca conducta Cse umpleC$ sort asteapta ca head sa folosesca si sa indeparteze
informatia din conducta,
-rocesele pot comunica si folosind conducte de tipul named pipes sau domain
named soc&ets,
5ota
#'emplu de procese care folosesc soc&ets pentru comunicareB
-rocesul server de e%mail comunica printr%un soc&et cu procesul antivirus si printr%un alt
soc&et cu procesul care verifica daca un e%mail este spam, Astfel e%mailul este transmis
prin soc&et intre aceste procese$ fiecare actionand intr%un anumit mod,
2. Intreruperi so*tware >,e/nale6
= alta modalitate de comunicare dintre procese este prin semnale sau intreruperi
soft<are, #'ista intreruperi soft<are care pot fi inorate de procese sau care nu pot fi
inorate, #'ista multe semnale in .ni' (de ordinul sutelor),
0intre acestea cateva mai importante suntB
,i(nal Ba/e Bu/+er Description
)I"A.- 2 Aanup (-=)I6)
)I"I5T ; Terminal interrupt (A5)I) % (T1L F (
)I"`.IT 8 Terminal Muit (-=)I6)
)I"ILL * Illeal instruction (A5)I)
)I"/ILL 3 /ill(canSt be cauht or inored) (-=)I6)
)I"AL1M 2* Alarm cloc& (-=)I6)
)I"T#1M 2+ Termination (A5)I)
)I"(=5T 2: (ontinue e'ecutin$ if stopped (-=)I6) (b ^7obid)
)I")T=- 23 )top e'ecutin(canSt be cauht or inored) (-=)I6)
)I"TTI5 ;2
Bac&round process tr!in to read$ from TTO (-=)I6) % ((trl F
K)
)I"TT=. ;; Bac&round process tr!in to <rite$ to TTO (-=)I6)
)I"I= ;3 I?= no< possible (*,; B)0)
)I"-D1 80 -o<er failure restart ()!stem @)
-rocesele pot inora$ bloca sau "prinde" toate semnalele cu e'ceptia )I")T=- si
)I"/ILL, 0aca un process CprindeC un semnal inseamna ca include cod care va actiona
corespunzator la primirea semnalului, 0aca semnaului nu este CprinsC de proces$ &ernelul
va e'ecuta actiunea default,
-entru a trimite un semnal in mod e'pres unui proces se foloseste comanda &ill ,
Aceasta primeste ca arument -I0%ul procesului si tipul de semnal pe care sa%l trimita
(default trimite )I"T#1M(2+))
5ota
Trimiterea semnalui )I"/ILL (3) lui init nu are niciun efect,
(omanda p&ill primeste ca arument numele comenzii care ruleaza in procesul
caruia ii va trimite semnalul,(omanda &illall se foloseste pentru a trimite semnale tuturor
proceselor care ruleaza sub acelasi nume,
0iferenta intre p&ill si &illall este ca p&ill primeste ca arument doar o parte din
numele procesului$ iar &illall primeste ca arument intre numele, -entru a specifica
semnalul trimis se poate folosi codul numeric al semnalului sau numele acestuia,
#'emplu
Tps %ef U rep bash
root 2826; 282+: 0 22B+3 pts?2 00B00B00 %bash
root 28*08 28*00 0 2;B23 pts?; 00B00B00 %bash
T&ill %2+ 2826;
sau
T&ill %)I"T#1M 2826;
sau
Tp&ill bash
sau
T&illall bash
AplicatiiB
2) sa se trimita procesului reprezentat de comanda sleep 200 semnalul corespunzator
combinatiei (trlFK
;) sa se trimita procesului reprezentat de comanda sleep +0 semnalul corespunzator
combinatiei (trlF(
2.2 "o+ Control
Eob control se refera la posibilitatea de a opri?suspenda e'ecutia unui proces si
repornirea sa la un moment ulterior, -entru a rula o comanda in bac&roud se foloseste C&C
la sfarsitul comenzii,
#'empluB updatedb &
>iecare 7ob care ruleaza in bac&round primeste un id (incepand cu 2), (omanda
7obs afiseaza toate aceste id%uri sub forma H2I ;+6*4, -rimul nr, reprezinta Eob I0 iar cel
de%al doilea -rocess I0,
0aca sunt mai multe 7oburi in bac&round$ semnul CFC identifica 7ob%ul care va fi
utilizat ca default in cazul comenzilor b si f$ iar semnul C%C identifica 7ob%ul care devine
default daca 7ob%ul curent termina e'ecutia,
#'emplu
f ^7obJid % aduce in foreround un 7ob din bac&round,
b ^7obJid % porneste in bac&round un 7ob suspendat cu (trlFK
La inchiderea terminalului acesta primeste semnalul )I"A.-, Toate procesele
pornite din terminal primesc la randul lor semnalul )I"A.-, (omanda nohup este folosita
cand se doreste ca un proces sa nu reactioneze la primirea semnalului )I"A.- (hanup),
La inchiderea terminalului$ parintele (bash) intra in starea terminated si procesul este
preluat de init,
#'empluB nohup comanda &
#'emplu
)e porneste un proces dintr%un terminal in mod normal (fara nohup) in foreround, )e
doreste inchiderea terminalului astfel incat procesul sa isi continue e'ecutia
T<et %c $tt'+,,do"nload.-edora'ro.ect.or/,...,i012,iso,Fedora-1-i012-D3D.iso
T(trlFK
T7obs
Tb ^7obid
Tdiso<n %h ^7obid
Capitolul 8 - #ackup & Ad/inistrare so*tware
8.1.1 ,trate(ii de +ackup
Introducere
-entru orice afacere datele reprezinta una dintre cele mai importante resurse$ o
resursa strateica fara de care firma respectiva nu poate e'ista, Toata activitatea unei
societati se afla pe hard dis&%ul computerelor, = defectiune a acestora$ un incendiu sau o
inundatie este echivalenta cu pierderea datelor si chiar cu falimentul companiei respective,
5imeni nu%si poate imaina astazi o banca ce isi pierde toate datele referitoare la
clienti$ conturi$ sume de bani trasferate$ sau o companie de telefonie care nu mai aseste
informatiile referitoare la abonati$ numerele de telefon inca disponibile$ plata facturilor etc,
Aceste pierderi fatale pentru o firma nu se intampla in realitate, @a puteti intreba de ce$ din
moment ce hard dis&urile se defecteza mereu$ incendiile sau furturile echipamentelor sunt
tot mai frecventeL -entru ca fiecare firma de pe lob care isi desfasoara activitatea fara a se
intreba daca a doua zi mai e'ista$ are un sistem de bac&up al datelor,
>ie ca datele importante sunt copiate manual pe cd?dvd$ fie e'ista un alt computer
secundar pe al carui hard dis& se afla toate informatiile$ fie este implementat un sistem
profesionist de bac&%up pe banda manetica$ o solutie de bac&up este nelipsita din strateia
oricarei companii,
Important
Bac&up%urile trebuiesc depozitate off%site (in alta locatie fizica) in eneral in seif
sau intr un loc siur astfel incat o compromitere fizica a locului unde se afla datele
(incendiu$ furt$ inundatie) sau nu afecteze si bac&up%ul,
In principal e'ista 8 feluri de bac&upB
1. *ull +ackup % toate datele sunt salvate
2. +ackup incre/ental % doar datele care s%au modificat in raport cu ultimul bac&up sunt
salvate
. +ackup di*erential % doar datele care s%au modificat in raport cu o perioada de referinta
( #'empluB prima zi a saptamanii) sunt salvate
Medii de stocare
1. Hard disk pe un alt calculator$ eventual un hard dis& e'tern pe .)B sau >ireDire de
capacitate mare (peste 800 "B) care poate fi depozitat off%site, Avanta7ele acestei metode
sunt multipleW pretul hardis&%urilor tinde sa devina tot mai redus$ viteza de copiere si de
restaurare este foarte mare$ accesul la date este direct, .n dezavanta7 este fiabilitatea
scazuta, Aard dis&%urile sunt sensibile la socuri mecanice$ fluctuatii electrice sau manetice
etc, 5u de putine ori auzim ca un anume hard dis& s%a ars sau s%a spart,
2. 'ediul optic - CD/D&D, -rincipalul avanta7 este costul e'trem de redus, 0ezavanta7ele
sunt multipleB spatiu foarte redus de stocare (intre 600 MB % * "B)$ imposibilitatea de a fi
folosit acelasi cd?dvd un timp intelunat$ dificultatea de a automatiza procesul, Aceasta
solutie este folosita mai mult de utilizatorii casnici$ nu in mediul de afaceri,
. #en0ile /a(netice, Acesta solutie este preferata in mediul #nterprise, >iabilitatea
casetelor cu banda manetica este ma'ima, = caseta poate fi utilizata in conditii optime
pana la 80 de ani fara intrerupere daca sunt respectate recomandarile producatorului
(umiditate$ temperatura etc), Tape%urile nu au nimic electronic in componenta$ doar suport
manetic, Astfel devin imune la socurile mecanice, Informatia de pe o caseta care a fost
scapata 7os si s%a spart sau a fost udata poate fi recuperata foarte usor (eventual doar o mica
parte din informatie a fost deteriorata), -e o astfel de caseta incap pana la ;*0 "B,
0ezavanta7e ar fi timpul lun necesar recuperarii datelor (acces secvential)$ viteza mica de
scriere si citire,
#'ista prorame de bac&up profesioniste atat comerciale cat si =pen)ource, .n
proram de referinta este AMA50A (The Advanced Mar!land Automatic 5et<or& 0is&
Archiver), Acest sistem solid este folosit cu succes in multe medii de afaceri, >olosind
proramele clasice de .ni' ( tar$ dump etc)$ pentru a realiza un bac&up incremental pe
banda manetica$ recuperarea datelor poate fi facuta doar cu aceste utilitati aflate pe orice
sistem .ni'?Linu', .ltimele versiuni sunt compatibile cu )amba$ astfel incat pot fi incluse
in circuitul de bac&up si share%uri Dindo<s, Alte solutii profesioniste includ Ar&eia$
@eritas si A1(serve,
.n alt aspect important este recuperarea informatiei aflata in circuitul de bac&up,
Acest proces trebuie sa fie siur$ usor si eficient, 0upa setarea sistemului de bac&up$
trebuie verificat ca in caz de pierdere a fisierelor$ ba&up%ul chiar functioneaza si datele pot
recuperate efectiv, Altfel cel mai comple' sistem de bac&up este nefolositor,
)ecuritatea datelor nu este de neli7at, 0e curand o companie aflata in >ortune Top
+00 declara ca firma de trasport >ed#' a pierdul casetele cu bac&up in timp ce le transporta
intr%o alta locatie, Imainati%va toate acele informatii in valoare de miliarde de dolari la
indemana oricui Q 0e aceea este recomandat ca datele sa fie criptate, In caz de pierdere?furt
nimeni nu le poate accesa,
8.1.2 Co/en0i speci*ice
(omenzi de arhivare si comprimare
1. tar >tape arc.i1e6 % reprezinta principala comanda de arhivare pe Linu', Tar nu
realizeaza comprimare (in mod default) ci doar arhivare,
tar optiuni outputJfile files?dirs
(omanda tar primeste obliatoriu una dintre optiunileB
%c G create % creaza o arhiva
%' G e'tract % e'trae fisierele din arhiva
%t G table of content (vizualizare continut)
%r G adaua la sfarsitul arhivei
%u G adaua in arhiva doar fisierele noi
Important
>olosind optiunea %' se pot suprascrie fisierele care e'ista pe hard dis& cu cele care se
dezarhiveaza,
Alte optiuniB
%f G file (se specifica fisierul arhiva care se creaza)
%v G verbose
%%atime%preserve G nu schimba atime pentru fisierele adauate
#'emplu
a) se creaza arhiva,tar in directorul curent din directorul
?home?stud?dirJcareJseJarhiveaza
tar %cvf arhiva,tar ?home?stud?dirJcareJseJarhiveaza
b) vizualizarea continutului unei arhive
tar %tf arhiva,tar
c) adauare fisier a,t't la arhiva,tar
tar %rf arhiva,tar a,t't
d) adauare fisiere noi in arhiva, Acestea sunt adauate$ versiunile mai vechi din arhiva
nu sunt inlocuite,
tar %uf arhiva,tar fN
e) pastreaza atime pentru fisierele adauate
tar %%atime%preserve %cvf arhiva,tar dir2?
f) #'trae doar un fisier din arhiva
tar %'zvf arhiva,tar a,t't
2. #?IP2@ <?IP
-roramul tar poate fi folosit si pentru a compresa fisiere, )e folosesc optiuni specifice
care au drept efect trecerea fisierelor printr%un proram de compresie inainte de arhivare,
=ptiuni ale comenzii tar pentru comprimareB
%7 G create bzip; (fisierul care se arhiveaza sunt trecute prin filtrul de compresie bzip;)
#'emplu
(reaza in directorul curent arhiva directorului ?home?dan?dir2 numita archivefile,tar,bz;
comprimata cu bzip;
tar %cv7f archivefile,tar,bz; ?home?dan?dir2 echivalent cu
tar %cvf % ?home?dan?dir2 U bzip; P archivefile,tar,bz;
#'traere arhiva bz;B
tar %'7vf arhiva,tar,bz;
echivalent cu
bunzip; arhiva,tar,bz; % rezulta fisierul arhiva,tar
tar %'vf arhiva,tar
%z G create zip arhive
#'emplu
tar %czvf arhiva,tar,z dir2?
tar %'zvf arhiva,tar,z
#'ista si comenzile zip$ unzip$ zip si unzip dar sunt mai putin folosite datorita faptului
ca in eneral se foloseste comanda tar impreuna cu optiuni de compresie,
#'empluB Bac&up la directorul ?etc in ?root B tar %c7vf ?root?etc%X(date F^>),tar,bz; ?etc
. ,CP - ,ecure Cop7 >Cop7 o1er ,,H6
1eprezinta posibilitate de a copia fisiere remote de pe calculatoare conectate in
LA5 sau pe Internet, (opierea are loc criptat, -entru aceasta avem nevoie de acces prin
))A la calculatorul de pe care dorim sa copiem sau pe care dorim sa copiem, 0atele sunt
copiate folosindu%se un tunel ))A creat intre sursa si destinatie,
scp optiuni ).1)A 0#)TI5ATI#
% - G port (poate folosi un alt port % default ;;)
% p G preserve (atime$ mtime si permisiunile)
% r G recursive cop! (pt, directoare)
% v G verbose
#'emplu
a) )e copiaza fisierul arhiva,tar,bz; de pe calculatorul local pe calculatorul cu I-%ul
23;,26:,0,2 in directorul ?home?dan sub numele de arhiva%stud,tar,bz;, .serul dan
trebuie sa aiba acces prin ssh la 23;,26:,0,2
scp ?home?stud?arhiva,tar,bz; dan4567.521.8.5+,$ome,dan,ar$i9a-stud.tar.b:7
b) )ursa poate fi host%ul remote identificat prin nume 05), (one'iunea foloseste portul
destinatie ;8;8 (daemonul ssh trebuie sa asculte pe acest port), )e copiaza fisierul
?etc?pass<d in dir, curent,
scp %- ;8;8 rootVhost,roB?etc?pass<d
c)(opiaza recursiv directorul ?etc? sub numele ?bac&up%etc?
scp %rpv ?etc? rootVbac&uphostB?bac&up%etc?
%. rs7nc
)olutie de bac&up incrementala folosind rs!nc si Linu'
Inainte de a confiura o solutie de bac&up$ care este critica pentru orice utilizator
privat sau din mediul de afaceri$ trebuie sa ne punem cateva intrebariB
La ce vreau sa fac ba&upL
-entru cat timp vreau sa pastrez bac&up%ulL
-e ce mediu vreau sa salvez dateleL
(e importanta au datele care sunt salvateL
(el mai rau lucru care se poate intampla este ca solutia de bac&up in care ne%am pus toata
increderea sa nu functioneze la momentul oportun (dupa ce s%a produs pierderea datelor$ sa
nu le putem recupera), 0e acea verificarea functionarii bac&up%ul este de importanta
capitala,
rs7nc (remote s!ncronization) este o utilitara inclusa in toate distributiile moderne de
Linu', Aceasta realizeaza sincronizarea fisierelor si directoarelor locale cu cele de pe un alt
calculator remote sau cu un alt director local,
)inta'a de baza esteB
Crs7nc /sursa /destinatie
Acesta comanda copiaza directorul numit ?sursa in directorul numit ?destinatie (cu crearea
directorul destinatie daca nu e'ista),
= varianta mai comple'a poate fiB
C rs7nc -e ss. -a1 --delete /usr/local/+ackup/ daniel4bac!u'.$ost+,$ome,bac!u's,
Acesta comanda face un bac&up incremental (doar diferentele dintre sursa si destinatie) pe
un calculator remote,
-e ss.B reprezinta modalitatea de transport a datelor folosind protocolul ssh, )e creaza un
tunel criptat prin care fisierele si directoarele sunt copiate, -entru a folosi ssh ca protocol
de comunicare trebuie sa fie setat ssh sa realizeze autentificare fara parola folosind chei
publice si private, Altfel procesul nu poate fi automatizat fiindca trebuie introdusa parola
de autentificare,
-aB archive mode$ echivalent cu %rlpto0 ( r G recursive$ l G copiaza si lin&urile$ p G
pastreaza permisiunile fisierelor intre sursa si destinatie$ t G pastreaza ctime$ atime$ mtime$
oGpastreaza o<ner$ Group pt fisier sau director$ 0 G preserve device (numai pt 1oot))
-1B verbose
--deleteB stere fisierele sau directoarele de la destinatie care sunt diferite fata de sursa
?usr?local?bac&up reprezinta sursa bac&up%ului
danielVbac&up,hostB?home?bac&ups %P username daniel pe calculatorul remote bac&up,host
(poate fi dat si ca I-) care are drept de scriere in directorul destinatie$ iar ?home?bac&ups
reprezinta destinatia
!ularea auto/ata a script-ului de +ack-up
-entru a e'ecuta un bac&up incremental automat in fiecare seara$ se creeaza un
cron7ob, Intr%un script (fisier cu drept de e'ecutie pt o<ner care trebuie sa fie root pentru a
evita eventualele probleme leate de drepturile de acces) scriem comanda de mai sus care
realizeaza bac&up incremental apoi ca root e'ecutam
C cronta+ -eB deschide fisierul cu cron 7oburile lui root pentru editare folosind editorul
implicit (vi$ emacs$ etc) 0 0 N N N ?caleaJcatreJscriptulJcreatJmaiJsusB ruleaza scriptul cu
numele caleaJcatreJscriptulJcreatJmaiJsus la ora 0B0 in fiecare zi
Alta posibilitate ar fi sa copiem scriptul creat mai sus in ?etc?cron,dail! (redhat$
fedora$ slac&<are etc), >isierele aflate in ?etc?cron,dail! se e'ecuta automat la ora ;;B00
(sau cea confiurata in ?etc?crontab) a fiecarei zile,
rs7nc este o unealta cu foarte multe optiuni (vezi man rs!nc) simpla$ dar foarte fle'ibila,
#'emplu
2, -entru a realiza o sincronizare a doua directoare( ?home si ?bac&up?home) de pe acelasi
computerB rs!nc %a %%delete ?home ?bac&up?home
;, 0aca vrem sa sincronizam?copiem un director recursiv$ dar vrem sa omitem un anume
director sau fisier$ putem folosi optiunea %filter rs!nc %e ssh %aM %%delete %%filterGSB
?etc?,rs!nc%filterS ?home?mihai? 20,0,0,;B?home?mihai?
Aceasta comanda sincronizeaza ?home?mihai? de pe calculator local cu ?home?mihai? de pe
calculatorul 20,0,0,; omitand directoarele ?home?mihai?samba$ ?home?mihai?7en! si
?home?mihai?7ocuri,
>isierul ?etc?,rs!nc%filter trebuie creat si trebuie sa contina pe cate o linie numele
directoarelor sau fisierelor pe care vrem sa le e'cludem de la sincronizare?copiere (pot si
folosite si reular e'pressions),
In acest e'emplu$ fisierul ,rs!nc%filter contineB
samba?
7en!?
7ocuri?
8, -entru a realiza o arhiva zip a lui ?usr?local?bac&up si a o copia temporar in ?tmp si apoi
pe host%ul remote 23;,26:,8,l ca username 7en! cu stererea ulterioara din ?tmp
TQ?bin?bash
0AT#Gadate F^>a
tar %czpf ?tmp?bac&upfile%,z ?usr?local?bac&up
rs!nc %e ssh %a ?tmp?bac&upfile%X0AT#,z .en(4567.521.0.5+,$ome,bac!u's
rm ?tmp?bac&upfile%X0AT#,z
*, rs!nc poate fi folosit si pentru o simpla copiere ( ca si cp) rs!nc ?etc?named,conf
?home?omi?named,conf
(omanda este echivalenta cuB
cp ?etc?named,conf ?home?omi?named,conf
rs!nc poate functiona si client%server, (u clientul de rs!nc ne conectam la serverul rs!nc
de pe calculatorul destinatie, Astfel nu mai este nevoie de ssh ca protocol de trasport,
8.2 Cron Do+s
Cron dae/on
)e foloseste pentru a e'ecuta o comanda sau proram intr%un mod repetat$ la un
moment dat in viitor, -roramul este e'ecutat in bac&round, (rontab este proramul care
instaleaza$ dezinstaleaza si editeaza lista de 7ob%uri pentru fiecare utilizator folosite de cron
daemon, (ron daemon cauta fisierele crontab in directorul numit cron spool director! si
care este ?var?spool?cron? si unde se aseste un fisier pentru fiecare user din sistem, Aceste
fisiere sunt incarcate in memorie, >iecare utilizator din sistem are propriile cron 7ob%uri
independent de ceilalti useri, (ron daemon verifica la fiecare minut daca mtime al spool
director! s%a modificat,
#'ista ; fisiere ( ?etc?cron,den! si ?etc?cron,allo<) care stabilesc userii care au
dreptul sa foloseasca crontab, 0aca fisierul cron,allo< nu e'ista$ dar cron,den! e'ista si
este ol$ fiecare user are dreptul sa foloseasca crontab, 0aca nici cron,allo< nici cron,den!
nu e'ista utilizatorii nu au dreptul sa foloseasca crontab, 0aca ambele fisiere e'ista dar
sunt oale$ niciun utilizator nu are dreptul sa foloseasca crontab,
Aceste fisiere se editeaza cu username%ul celui la care ne referim (cel care are
dreptul sau nu sa foloseasca crontab)$ cate un username pe fiecare linie, -oate fi folosit
cuvantul ALL sau 5=5#,
Accesul sau restrictia unui utilizator la crontab se refera la dreptul acestuia de a
edita fisierul din ?var?spool?cron folosind crontab sau direct folosind un editor, 5u se refera
la dreptul de a avea si e'ecuta cron 7ob%uri, .serul root va putea in continuare sa editeze
cron%urile pentru utilizator,
#'ista ; cateorii de cron 7obsB
2, Eoburi pentru fiecare utilizator ( ?var?spool?cron)
;, Eoburi lobale
)tructura unui fisier crontab este urmatoareaB
5u se recomanda editarea in mod direct (cu editorul preferat precum @I) a fisierului
care este folosit de cron daemon ci folosind crontab, (ron 0aemon pastreaza lourile in
?var?lo?cron, (omentariile sunt permise dar trebuie sa fie unice pe linie, )e foloseste CTC,
#'emplu
N 2; 20%26?; N N bac&up,sh
identic cu
N 2; 20$2;$2*$26 N N bac&up,sh
=ptiuneB
%e G editare crontab sau creare daca nu e'ista % foloseste editorul default$ cel definit in
variabila lobala #0IT=1 sau @I).AL
%l G listare cron 7obs
%r G remove user crontab
%i G interactiv la delete
La editarea crontab%ului se pot folosi intervale continue sau discrete folosit caracterul C%C
(minus) sau C$C (virula)
#'empluB 2%+ N N 2$; N script
In afara cron7ob%urilor pentru fiecare utilizator care se asesc in ?var?spool?con?$
cron daemon foloseste fisierul de confiurare numit ?etc?crontab, )tructura acestuia este
urmatoareaB
)A#LLG?bin?bash
-ATAG?sbinB?binB?usr?sbinB?usr?bin
MAILT=Groot
A=M#G?
T run%parts
02 N N N N root run%parts ?etc?cron,hourl!
0; * N N N root run%parts ?etc?cron,dail!
;; * N N 0 root run%parts ?etc?cron,<ee&l!
*; * 2 N N root run%parts ?etc?cron,monthl!
0upa declarea variabilelor pe care le va folosi cron$ pe fiecare linie se aseste un
7ob de rulat, 0upa cele + coloane care reprezinta timpii folositi de cron se aseste user%ul
care va e'ecuta proramul si comanda de e'ecutat, run%parts este un concept oriinal din
0ebian care are drept scop e'ecutarea tuturor scripturilor dintr%un director, 0eci cron
daemon va e'ecuta la fiecare ora$ zi$ saptamana si luna scripturile aflate in directoarele
?etc?cron,hourl!$ ?etc?cron,dail!$ ?etc?cron,<ee&l! si ?etc?cron,monthl!
LimitariB e'ista prorame care nu pot fi rulate de catre cron ( #'empluB ssh%aent)
acest lucru in special fiindca variabilele de environment nu sunt accesibile lui crond,
Important
La specificarea scripturilor care trebuie sa fie rulate in mod repetat este obliatoriu
sa folosim cai absolute fiindca crond nu are acces la variabilele lobale ale sistemului si
e'ista astfel posibilitatea sa nu functioneze corect, Aceasta eroare este frecventa si reu de
depistat,
8. Ad/inistrarea pac.etelor so*tware
8..1 !p/
1-M reprezinta un acronim recursiv de la 1-M -ac&ae Manaer, Initial s%a numit
1ed Aat -ac&ae Manaer si a fost dezvoltat de firma 1edAat,
1-M se refera la ; aspecteB
2, .n format de fisier binar care reprezinta un proram?aplicatie
;, = aplicatie care ruleaza in consola in modul te't folosita pentru instalare$ dezinstalare$
update si interoare a bazei de date cu toate proramele 1-M instalate,
1-M foloseste o baza de date care se vaseste in ?var?lib?rpm, #ste formata din
fisierul -ac&aes care contine informatii de tip metadata despre rpm%urile instalate precum
si alte fisiere folosite cu scop de inde'are,
5umele unui pac&et 1-M este de cele mai multe ori conform unui CstandardC si
contine urmatoarele informatiiB
a) numele proramului
b) versiunea proramului
c) pac&ae releaseB identifica distributia pentru care a fost compilat (fc6$ mdv$ rhel*$
suse200 etc)
d) arhitectura pentru care a fost compilat (i8:6$ i6:6$ athlon$ noarch), noarch se refera la
pachete care nu sunt compilate pentru o arhitectura anume ( #'empluB fonturi$ sau alte
elemente folosite de alte aplicatii),
#'empluB apache%2,8,88%6md&,':6J6*,rpm
l!'%2,*,8%8,fc*,i8:6,rpm
.n fisier rpm este format din urmatoarele componenteB
2) Lead (identifica fisierul ca fiind rpm si contine headere absolute)
;) )emnatura diitala
8) Aeader (meta information % pac&ae name$ version$ file list$ arhitecture)
*) arhiva zip cu binarele proramului
0istributiile de Linu' care folosesc 1-M sunt urmatoarele (lista incompleta)B
1edAat #nterprise Linu'
>edora (ore
Mandriva
(ent=)
)u)#
Oello< 0o (>edora pentru -o<er-()
Turbo Linu'
Co/anda rp/
rpm =-TI=5) pac&aeJname
=ptiuniB
%i G install
%M GMuer!
%e G erase
%> G freshen (uprade doar daca o versiune mai veche e'ista de7a)
%. G uprade (instaleaza pachet daca pachetul nu e'ista sau uprade pachet daca e'ista,
0aca e'ista versiunea mai veche este stearsa)
%v G verbose
%f fileJname G Muer! pac&ae o<nin file
%l G list files in pac&ae
%%force G forteaza instalarea chiar daca nu sunt satisfacute dependintele
#'emplu
2, Afiseaza toate fisierele documentatie ale pachetului samba
rpm %Md samba
;, Afiseaza numele pachetului din care face parte un fisier din sistem
rpm %Mf ?usr?bin?clamav
8, Afiseaza toate fisierele care fac parte dintr%un pachet
rpm %Ml tihtvnc
*, 1einitializeaza baza de date daca aceasta se corupe
rpm %%rebuilddb
+, Instalare prorame din rpm%uri locale sau direct de pe Internet
rpm %ivh httpd%2,8,8,fc*,rpm
rpm %ivh -t'+,,r'm-ind.net,linu;,-edora,core,<,i012,os,Fedora,RP=,/-t'-7.8.51
;,i8:6,rpm
8..2 de+
.n format binar foarte des intalnit si folosit este deb, Acesta isi are oriinea in
0ebian si se foloseste acum pe orice distributie 0ebian Based (0ebian$ .buntu$ /ubuntu$
/noppi'$ 0amm )mall Linu'$ Mepis$ Line'$ 6andros etc),
5ota
5umele 0ebian a fost dat de creatorul acestei distributii Ian Murdoc& si reprezinta o
combinatie intre numele sotiei sale 0ebra si numele sau Ian,
.n fisier deb este de fapt o arhiva .ni' de tip ar care contine ; alte arhive zip sau
bzip, Intr%una se asesc informatii metadata (versiune$ release$ dependinte etc) iar in
cealalta binarele efective ale proramului care se asesc in deb,
-roramul folosit pentru instalarea$ stererea sau modificarea proramelor instalate
din deb%uri se numeste dp&, 0e multe ori acesta se foloseste cu a7utorul unui alt proram
numit apt, )!naptic este o interfata rafica pentru apt,
apt-(et
apt%et este o aplicatie in linie de comanda folosita pentru manaementul pachetelor deb
si este considerat user bac&%end tool pentru apt
Mod folosireB
apt%et HoptionsI HcommandI Hpac&ae ,,,I
(omenziB
update G se foloseste pentru sincronizarea caracteristicilor pachetelor soft<are instalate in
sistem cum ar fi versiunea acestora cu sursele acestora din repositoarele specificate in
?etc?apt?sources,list , )e recomanda rularea comenzii apt%et update inainte de rularea lui
apt%et folosind optiunea uprade, (u a7utorul acestei comenzi apt%et ia la cunostinta
despre ultimele versiuni e'istente in repozitoare,
up(rade G se foloseste pentru instalarea automata a ultimei versiuni a tuturor pachetelor
instalate in sistem din repositoarele specificate in ?etc?apt?sources,list, -achetele sunt
automat do<nloadate din repositoare si upradate la ultima versiune, 5. se instaleaza
pachete noi si nu se dezinstaleaza pachete de7a instalate,
dist-up(rade G pe lana procesul de uprade$ optiunea dist%uprade are ri7a in mod
intelient si de dependintele pachetelor care se upradeaza,
install nu/e-pac.et1 nu/e-pac.et2 etc G se foloseste pentru instalarea de noi prorame
din repozitoare impreuna cu dependintele necesare,
re/o1e nu/e-pac.et1 nu/e-pac.et2 etc G se foloseste pentru dezinstalarea respectivelor
pachete
c.eck G reprezinta un tool de dianostic folosit pentru update%ul cache%ului pachetelor
precum si verificare dependintelor cu probleme
clean G stere pachetele do<nloadate din repositor (cache%ul pachetelor) si care au fost sau
nu de7a instalate,
=ptiuniB
%m G inora pachetele lipsa
%d G doar do<nloadeza pachetele$ dar nu le si instaleaza
%f G repara Cbro&en dependenciesC
#'empluB apt%et %f install bind3
%! G se asuma raspunsul !es la orice intrebare, >olositor pentru uprade automat,
%h G printeaza help%ul comenzii
%@ G printeaza versiunile pachetelor care se instaleaza
#'empluB apt%et %@ install bind3

8.. Aplicatii pentru /ana(e/entul pro(ra/elor
0eoarece comanda rpm este in eneral reoaie si nu rezolva automat dependintele
aparute$ e'ista multe alte aplicatii care au drept scop manaementul 1-M%urilor, Aceste
prorame evoluate do<nloadeaza proramul dorit de pe Internet din repositoare speciale
impreuna cu toate dependintele sale, >olosind astfel de aplicatii manaementul proramelor
pe Linu' este mult mai eficient si usor de realizat decat pe Dindo<s,
Important
.na dintre cele mai frecvente probleme in Linu' leate de instalarea de noi
prorame este satisfacerea diferitelor dependinte, = dependinta este un alt proram sau o
librarie de care depinde proramul care se doreste a fi instalat,
#'empluB )e doreste instalarea )nort (cel mai folosit si cunoscut Intrusion
0etection )!stem pentru Linu'), >unctionarea )nort depinde de alte librarii si prorame
precumB pcre$ libpcap$ m!sMl%headers % daca se doreste salvarea alertelor intr%o baza de date
M!)Ml etc, Aceste librarii si prorame se numesc dependinte ale lui )nort si nu se asesc in
arhiva cu sursele snortului pe care o do<nloadam sau in rpm%ul acestuia, -entru instalarea
snortului trebuie mai inainte sa instalam toate dependintele sale,
0intre cele mai importante$ cunoscute si folosite prorame pentru manaementul
proramelor din sistem putem enumeraB
2, !um
;, Oa)T ()u)#)
8, up;date (1A#L)
*, apt?s!naptic (initial folosit pentru 0ebian$ mere si pe 1edAat sau >edora)
+, )mart -ac&ae Manaer ()use$ >edora etc)
6, urpmi (Mandriva)
EU' >Eellow Do( Updater 'odi*ied6
Oum reprezinta rescrierea completa a proramului initial O.- (Oellor 0o
.pdater) si se foloseste pentru manaementul sistemelor bazate pe 1-M, Oum este o
aplicatie in linie de comanda$ dar e'ista si prorame front%end rafice pentru aceasta (pup$
pirut$ !ume'$ !um e'tender)
>isierul de confiurare al lui O.M este ?etc?!um,conf
HmainI
cachedirG?var?cache?!um
debulevelG;
lofileG?var?lo?!um,lo
p&polic!Gne<est
distroverp&Gredhat%release
tolerantG2
e'actarchG2
retriesG;0
obsoletesG2
pchec&G2
T -.T O=.1 1#-=) A#1# =1 I5 separate files named file,repo
T in ?etc?!um,repos,d
O.M foloseste repositoare pentru do<nload%ul si instalarea de prorame,
De*initie
.n repositor este un director de pe un server ATT- sau >T- la care !um are acces,
Acel repositor! contine pachetele soft<are precum si fisiere inde',
Oum cauta$ do<nloadeaza si instaleaza automat pachetele dorite (impreuna cu toate
dependintele) de pe repozitoarele pentru care a fost confiurat, >iecare repozitor poate fi
scris in ?etc?!um,conf sau in propriul fisier in directorul ?etc?!um,repos,d?, Adauarea de
noi repositoare inseamna instalarea acelui repositor,
1epozitoarele care vin default cu >edora sau cu o alta distributie nu sunt suficiente
daca dorim o ama lara de prorame, -entru acestea trebuie sa instalam asa numitele
Cthird part! repositoriesC precumB
The 0A" repositor!
ATrpms repositor!
1-Mfore repositor!
>resh1-M) repositor!
0ries repositor!
3olosire EU'
2) -entru a cauta$ do<nloada si instala un pac&et impreuna cu toate dependintele sale
!um install SnumeJpac&etS
;) -entru a updata un pachet
!um update numeJpachet
8) -entru a verifica daca e'ista update%uri disponibile
!um c&ec&%update
*) )tere pachetul specificat impreuna cu alte pachete care depind de pachetul specificat
!um H erase U remove I numeJpachet
+) Afiseaza informatii despre un pachet
!um info numeJpachet
6) (auta pachete dupa descriere sau nume, .til atunci cand nu stim numele e'act al
-achetului
!um search cuvant
#'empluB !um search sniffer
=ptiuniB
%! G assume !es at an! Muestion
%c confiJfile G folosirea unui fisier de confiurare alternativ in loc de ?etc?!um,conf
%d nr G debu level (intre 0 % minim si 20 % ma'im),
%1 G nr, ma'im de minute pe care le asteapta !um pentru a e'ecuta o comanda
%%e'clude numeJpachet G e'clude un pachet
Important
#ste important ca proramele esentiale precum /ernelul$ diferite servere de baza
etc sa fie e'cluse de la instalarea automata, >iindca intre sistemul se bazeaza pe
functionalitatea si stabilitatea acestora este bine sa se faca o verificare manuala (ce versiune
se instaleaza$ ce aduce nou noua versiune$ daca este necesara$ daca s%au raportat bu%uri
etc) a acestora inainte de instalare,
>rament din man pae%ul lui !um referitor la cautare si listareB
LI)T =-TI=5)
The follo<in are the <a!s <hich !ou can invo&e !um in list mode,
!um list Hall U ree'p2I Hree'p;I H,,,I
List all available and installed pac&aes,
!um list available Hree'p2I H,,,I
List all pac&aes in the !um repositories available to be installed,
!um list updates Hree'p2I H,,,I
List all pac&aes <ith updates available in the !um reposito% ries,
!um list installed Hree'p2I H,,,I
List the pac&aes specified b! ars, If an arument does not match the name of an
available pac&ae$ it is assumed to be a shell%st!le lob and an! matches are printed,
!um list e'tras Hree'p2I H,,,I
List the pac&aes installed on the s!stem that are not available in an! !um repositor! listed
in the confi file,
!um list obsoletes Hree'p2I H,,,I
List the pac&aes installed on the s!stem that are obsoleted b! pac&aes in an! !um
repositor! listed in the confi file
)pecif!in pac&ae names
All the list options mentioned above ta&e file%lob%s!nta' <ild% cards or pac&ae names
as aruments$ for e'ample !um list avail% able fooN <ill list all available pac&aes that
match fooN,
(L#A5 =-TI=5)
The follo<in are the <a!s <hich !ou can invo&e !um in clean mode,
!um clean pac&aes
#liminate an! cached pac&aes from the s!stem, 5ote that pac&% aes are not
automaticall! deleted after the! are do<nloaded,
!um clean headers
#liminate all of the files <hich !um uses to determine the remote availabilit! of pac&aes,
.sin this option <ill force !um to do<nload all the headers the ne't time it is run,
!um clean all
1uns !um clean pac&aes and !um clean headers as above,
Capitolul F - 5CP/IP & Betworkin(
F.1 5CP/IP
=rice calculator comunica in retea folosind stiva de protocoale T(-?I-, T(-?I- este
Cde factoC industr! standard,
T(-?I- este o colectie de protocoale cele mai cunoscute si importante fiind T(-
(Transmission (ontrol -rotocol) si I- (Internet -rotocol) de unde si numele T(-?I-, -e
lana aceste protocoale e'ista multe altele fiecare asindu%se la un anumit la!er si avand o
anumita functionalitate, )tiva T(-?I- se instaleaza automat la instalarea sistemului de
operare (Dindo<s sau Linu'),
Acesta stiva de protocoale a fost creata de 0o0 (0epartment of 0efense$ .)A) la
inceputul anilor S40$ avand drept scop crearea unei retele care sa supravietuiasca in orice
conditii$ chiar in cazul unui atac nuclear,
#ste impartit in * la!ereB
1. Application La7er
La acest la!er se asesc protocoale precumB 05)$ ATT-$ >T-$ T>T-$ )MT-$
IMA-$ -=-8$ ))L$ )5M- etc, La acest la!er se asesc serviciile oferite de retea cele mai
apropiate de utilizatorul final, -roramele e'istente sunt client sau server care
implementeaza protocoalele enumerate mai sus,
2. 5ransport La7er
La acest la!er se asesc protocoalele T(- si .0-,
5CP >5rans/ission Control Protocol6 este un protocol comple' care aranteaza
a7unerea datelor la destinatie, Inainte de a se initializa transferul datelor are loc un schimb
de mesa7e intre sursa si destinatie pentru se se sincroniza, Acest fapt il face sa fie
C(onnection%orientedC
UDP >User Data(ra/ Protocol6 este mai simplu decat T(-$ nu aranteaza sosirea datelor
la destinatie si este C(onnection%lessC
La!erul Transport este responsabil cu prima impachetare a datelor, Informatia$ pe
care o primeste de la nivelul aplicatie este impartita in semente si ii sunt adauate headere
(informatie specifica nivelul transport), La acest nivel are loc sementarea datelor, -rintre
altele$ headerul contine ; numere$ numite -=1T.1I, .n port ocupa 26 biti si este intre 0 si
6++8+,
(ele ; numere (porturi) se numescB
a) port sursa (identifica proramul care a enerat mesa7ul) % adresa aplicatiei sursa
b) port destinatie (identifica carui proram ii este destinat mesa7ul pe hostul destinatie)
adresa aplicatiei destinatie, Acesta este de obicei un server
#'empluB daca unul dintre cele ; porturi este ;2$ proramul este >T-$ daca este ;+ este
vorba despre un e%mail$ daca portul este :0 proramul de la nivelul aplicatie este serverul
<eb,
IA5A este responsabila cu alocarea si inreistrarea porturilor,
IA5A a definit 8 cateorii de porturiB
1. :ell -nown ports (intre 0 si 20;8)
#'empluB :0 pt http$ 220 pentru -=-8$ 338 pentru IMA-s (IMA- over ))L)
2. !e(istered Ports (intre 20;* si *32+2)
#'empluB 8086 pentru M!)Ml$ 84+6 pentru canon
. D7na/ic / Pri1ate Ports (intre *32+; si 6++8+)
.n port se poate afla in urmatoarele 8 stariB
16 Desc.is >open6. 5e putem conecta (folosind 8%<a! handsha&e) la un port deschis$ e'ista
o aplicatie (server) care accepta cone'iuni folosind acel port, )e spune ca aplicatia
destinatie (serverul) CascultaC pe acel port,
#'empluB un server <eb care ruleaza si care este confiurat sa asculte pe portul :0,
26 Inc.is >close6. 5u e'ista nicio aplicatie care sa primeasca cone'iuni pe acel port,
6 3iltrat >stealt.6. -ortul este deschis$ dar un fire<all sau o lista de acces blocheaza
cone'iunile catre acel port,
)copurile nivelului transportB
a) sementeaza informatia conform cu lunimea ma'ima admisa pe canalul de comunicatie
(sementation)
b) numeroteaza aceste semente pentru a%le pune cap%la%cap la destinatie si a forma mesa7ul
initial
c) trimite confirmari (ac&no<ledment) celeilalte parti cum ca a primit pachetele, )e
foloseste Cpositive ac&no<ledmentC % confirmarea se refera la urmatorul sement pe care
asteapta sa%l primeasca,
#'empluB daca trimite ca ac&no<ledment nr, 4$ inseamna ca asteapta sementul cu nr, 4$
iar sursa stie ca destinatia le%a primit cu succes pe primele 6
d) identifica sementele primite resit (cu erori) si notifica destinatia sa le retransmita
(error recover!)
e) releaza flu'ul datelor (viteza de transmisie) (flo< control)
. Internet La7er
La acest la!er se asesc protocoale precum I- (protocol rutabil sau rutat)$ I(M-
(protocol de detectare a erorilor si de testare a leaturii)$ protocoale de rutare (routin
protocols) precum 1I-$ =)->$ #I"1-$ I"1-$ B"-$ I)%I)
)copul unui protocol rutabil este de a transporta informatia catre destinatie prin
incapsulare pe calea pe care protocoalele de rutare o asesc,
-rimeste semenul de la nivelul transport si ii adaua headerele specifice,
)ementul primit de la La!er Transport se numeste la La!er Internet pachet, La acest nivel
are loc impachetarea datelor,
)copurile nivelului InternetB
a) rutarea pachetelor folosind cea mai buna cale (drum) pe care pachetele o pot urma catre
destinatie (routin)
b) asirea celei mai bune cai catre destinatie dintre mai multe cai posibile (best effort
deliver!)
c) avertizarea celor implicati in comunicatie print%o serie de mesa7e specifice$ testarea
liniei de comunicatie etc (protocolul I(M-),
d) impachetarea datelor ( sementelor primite de la la!er* li se adaua un Aeader si devin
pachete)
)e folosesc ; adrese$ numite si loice (adrese I-)B
a) adresa sursa (identifica calculatorul sursa)
b) adresa destinatie (calculatorul destinatie)
= adresa I- are 8; de biti si se reprezinta prin * numere intre 0 si ;++ separate prin ,
(punct) #'empluB 20,0,0,2 sau 23;,:3,*8,;+2
%. Betwork Access La7er
La acest La!er se asesc protocoale care definesc tipul de reteaB #thernet$ DLA5$
---$ A0)L$ (aT@$ >rame1ela!$ I)05 etc
Acest la!er primeste pachetul de la La!er Internet si ii face o noua impachetare (a
8%a) astfelB adaua in fata pachetului un header si la finalul lui un trailer, -achetul se va
numi la acest la!er >rame,
In >rame se vor asi alte ; adrese care identifica placa de retea a fiecarui calculator
implicat in comunicatie (adrese fizice sau MA(),
= adresa MA( are lunimea de *: de biti reprezentati prin 2; cifre he'azecimale,
#'empluB 00B02BA(B24BABB(3
)copurile nivelului 5et<or& AccessB
a) stabileste topoloia retelei (bus$ star$ e'tended star$ mesh)
b) adresarea fizica a fiecarui calculator folosind adrese MA(
c) identificarea erorilor (nu si corectia sau recuperarea lor)
5ota
Adresele de tip MA( e'ista doar in cadrul retelei locale de tip #thernet, Acestea nu se
transmit pe Internet, 0aca se folosesc alte tehnoloii la 5et<or& Access La!er precum
I)05$ ---$ (atv etc adresele MA( nu se folosesc pe lin&ul respectiv,
Important
-rotocoalele de la!erele aplicatie$ transport si internet sunt independente de
protocoalele de la 5et<or& Access, -rotocolul 05)$ I- sau T(- functioneaza indentic$
fara nicio modificare indiferent daca la la!er C5et<or& AccessC avem #thernet$ DLA5$
A0)L sau I)05, 0e fapt protocoalele superioare nu au cunostinta despre protocoalele de
la 5et<or& Access La!er,
Important
-rocesul prin care datele (email%ul$ paina <eb etc) sunt transformate in semente
la La!er* apoi in pachete la La!er8 apoi in frame%uri la La!er; si in biti la La!er2 se
numeste incapsulare si are loc la sursa care a enerat mesa7ul, -rocesul invers se numeste
decapsulare si are loc la destinatie, IncapsulareB data%Psement%Ppac&et%Pframe%Pbiti
0ecapsulareB biti%Pframe%Ppac&et Psement%Pdata
-entru o buna inteleere a modului in care retelele comunica este necesara o
cunoastere aprofundata a protocoalelor care fac parte din stiva T(-?I-,
-entru vizualizarea tuturor pachetelor care parasesc interfata (placa de retea)
calculatorului sau a celor care sunt primite de interfata calculatorului se folosesc prorame
numite sniffere,
(ele mai cunoscute si folosite suntB Direshar& si tcpdump, Acestea sunt cele mai
utile prorame pentru troubleshootin in retea,
Direshar& functioneaza atat pe Linu' cat si pe Dindo<s iar modul in care
pachetele sunt afisate este rafic, Tcpdump ruleaza doar pe Linu' in linie de comanda,
F.2 Clasi*icarea adreselor IP
= adresa I- se mai numeste si adresa loica si apartine L8 =)I,
)e foloseste pentru a identifica loic hosturile conectate la retea, 1utarea pachetelor
(trimiterea acestora de la sursa la destinarie pe calea cea mai buna) se bazeaza in primul
rand pe I-%uri, >iecare calculator conectat la retea trebuie sa aiba o adresa I- unica pentru
acea retea pentru a putea fi identificat,
In comparatie cu adresa MA( care apartine L; =)I si care nu se poate
modifica(teoretic)$ adresele I- sunt setate de catre user, >iecare placa de retea poate avea
una sau mai multe I-%uri,
= adresa I- este format din * b!tes (8; de biti in total),
#cesta poate fi scris in baza zece$ trasformand fiecare b!te din baza ; in baza 20 si
separandu%i prin punct,
= adresa I- este format din ; partiB
16 Betwork Address (adresa retelei sau adresa firului)
26 Host Address (adresa hostului din retea), 0eci biti componenti ai unei adrese I- se
impart in biti de retea si biti de host,
Toate hosturile din aceiasi retea trebuie sa aiba aceiasi 5et<or& Address,
Betwork 'ask
)trans leat de I- este notiunea de masca de retea (5et<or& Mas&), )copul acesteia
este de a stabili care biti din I- sunt biti de retea si care sunt de host, Adresa I- nu e'ista
fara masca$ intotdeauna se confiureaza doar impreuna,
#'emplu
2, ;++,0,0,0 sau ?:
0aca transformam aceasta masca in baza ; observam ca primii : biti sunt 2, 1ezulta ca
primii : biti din adresa I- sunt biti de net<or&$ iar ultimii ;* de host,
;, ;++,;++,;++,0 sau ?;*
0aca transformam aceasta masca in baza ; observam ca primii ;* biti sunt 2, 1ezulta ca
primii ;* biti din I- sunt biti de net<or&$ iar ultimii : de host,
Important
.n 1outer realizeaza o operatie de A50 L="I( (si loic) intre I- si masca pentru a afla
5et<or& Address,
@arianta simplificata pentru a separa net<or& address de host address esteB
2) se transforma I-%ul si masca in baza ;
;) se aseaza I- si masca una sub celalalta$ bit sub bit
8) biti din I- care sunt in dreptul bitilor de C2C (unu) din masca se numesc biti de retea si
formeaza 5et<or& Address, Biti din I- care sunt in dreptul bitilor de zero (C0C) se numesc
biti de host,
Masca se mai poate scrie si sub forma slash (C?C) urmat de nr, bitilor de 2, 5et<or&
-refi' este sinonim cu 5et<or& Address
#'emplu
;++,0,0,0 sau ?:
;++,;++,0,0 sau ?26
;++,;++,;++,0 sau ?;*
;++,;++,2;:,0 sau ?24
Clasi*icarea adreselor IP
2, In functie de primii biti din primul octet e'ista + clase de I-%uri,
bitii primului octet interval primul octet Masca default
clasa A 0''''''' 0%2;4 ;++,0,0,0 sau ?:
clasa B 20'''''' 2;:%232 ;++,;++,0,0 sau ?26
clasa ( 220'''''' 23;%;;8 ;++,;++,;++,0 sau ?;*
clasa 0 2220'''' ;;*%;83 5u e'ista
clasa # 2222'''' ;*0%;++ 5u e'ista
#'emplu
20,0,0,2 % I- de clasa A
;,2;,;++,: % I- de clasa A
2:3,2:3,2:3,2:3 % I- de clasa B
;28,2;,0,2 % I- de clasa (
28+,3,3,2 % I- de clasa B
;;*,0,0,20 % I- de clasa 0 (clasa de multicast)
;*3,30,30,2 % I- de clasa # (clasa rezervata)
5ota
2, 2;4,0,0,2 este rezervata si folosita ca adresa de loopbac&, )e foloseste de hosturi entru
redirecta traficul pentru ele insele, (el mai folosit caz concret este atunci cand atat clientul
cat si serverul se afla pe acelasi host, #'empluB instalam un server Apache si ne conectam
la acesta de pe acelasi calculator folosind un Bro<ser
;, (lasa 0 este o clasa speciala folosita pentru multicast, 5u se confiureaza interfete
sau placi de retea cu aceasta adresa,
8, (lasa # este rezervata pentru studii sau cercetari, 5u este foloseste in realitate,
Adrese I- speciale
2, (lasa # (adrese e'perimentale % rfc 8880) % ;*0,0,0,0 % ;++,;++,;++,;+*
;, (lasa 0 (Multicast) % ;;*,0,0,0 % ;83,;++,;++,;++
8, Lin&%local addressB 263,;+*,0,0 % 263,;+*,;++,;++ si se foloseste de hosturi pentru
setarea automata a unui I- cand nicio alta metoda nu este disponibila (0A(-$ Boot-$ ---$
static etc), )e pot folosi doar in reteau locala$ iar TTL este 2,
*, T#)T%5#T AddressB 23;,0,;,0 % 23;,0,;,;++ % teachin and learnin purpose, -ot fi
folosite in documentatii si e'emple, 0evice%urile le accepta in confiuratie, )e asesc in
multe ori in 1>( pt, I- ale domeniilor e'ample,com$ e'ample,net sau in
documentatii ale producatorilor
+, Loopbac&B 2;4,0,0,2
;, In functie de destinatia pachetelor$ adresele I- pot fiB
a6 Unicast Identifica un siur host intr%o retea,
+6 'ulticast Identifica un rup de hosturi dintr%o retea, .n calculator sursa poate
comunica simultan cu un rup de calculatoare folosind adresa I- destinatie de tip multicast,
c6 #roadcast Indentifica toate hosturile dintr%o retea,
#'ista ; cateorii de Broadcast AddressB
a, 0irected Broadcast Address
)e calculeaza punand toti bitii din portiunea de host address pe C2C
#'emplu
2, -entru I-%ul 23;,26:,0,2?;*,
Masca este ?;* sau ;++,;++,;++,0 adica din cei 8; de biti ai mastii primii ;* sunt 2 iar
restul 0, 1ezulta ca 5et<or& Address este reprezentata de primii ;* de biti din I- (atitia
cati biti de 2 sunt in componenta mastii), 1estul bitilor se pun pe valoarea 0, 5et<or&
Address G 23;,26:,0,0
0aca primii ;* biti din I- identifica 5et<or& Address$ restul bitilor pana la 8; (: biti)
identifica bitii de host, -entru a afla broadcast address se scrie adresa de retea
(23;,26:,0,0) si se pun toti bitii din Aost Address pe 2, 1ezulta Broadcast AddressG
23;,26:,0,;++
;, -entru I-%ul 20,0,0,0?: broadcast address este 20,;++,;++,;++,0
8, -entru I-%ul 230,230,0,24?;6 broadcast address este 230,230,;++,;++,
*, -entru I-%ul ;20,;20,;20,64?;4 broadcast address este ;20,;20,;20,3+
b, Limited Broadcast Address, #ste invariabil ;++,;++,;++,;++
8, In functie de modul de procurare si utilizare e'ista I-%uri
a6 Pu+lice
% se cumpara sau se inchiriaza de la un LI1 (Local Internet 1eistr!) sau de la un I)-
Local,
% sunt publice$ oricine poate afla informatiile despre proprietarul unui I- (adresa$ nume$
email de contact etc),
% indentifica in mod unic un host pe Internet, >iecare calculator conectat 0I1#(T la
Internet trebuie sa aiba o adresa publica,
+6 Pri1ate
% nu se cumpara$ nu se inchiriaza$ nu se platesc
% sunt folosite doar in cadrul unui LA5
% pachetele de date nu au voie sa contina pe Internet I- sursa sau destinatie de tip privat
(vor fi blocate la primul 1outer)
% un 1outer trebuie sa fie confiurat pentru 5AT (5et<or& Address Translation) astfel
incat un LA5 care foloseste I-%uri private sa poate comunica pe Internet % I#T> (Internet
#nineerin Tas& >orce) a definit clasele de I-%uri private in 1>(232:,
Acestea suntB
a) de clasa A %P 20,0,0,0 % 20,;++,;++,;++
b) de clasa B %P 24;,26,0,0 % 24;,82,;++,;++
c) de clasa ( %P 23;,26:,0,0 % 23;,26:,;++,;++
*, In functie de modul de alocare I-%urile pot fiB
a6 ,tatice sunt confiurate pentru fiecare interfata de catre administrator sau user
+6 Dina/ice sunt confiurate prin intermediul unor prorame speciale fara interventia
user%ului, #'empluB 0A(-$ Boot- sau --- pentru 0ial.p
Important
(unoasterea in profunzime a protocoalelor din stiva T(-?I- precum si modul
acestora de functionare reprezinta un aspect e'trem de importat pentru o cariera perfomanta
in domeniul 5et<or&in,
F. Con*i(urare retea
(onfiurarea statica a interfetelor de retea
-entru a comunica intr%o retea T(-?I- un host trebuie sa fie confiurat cuB
16 IP (obliatoriu)
26 Betwork 'ask (obliatoriu) % se confiureaza impreuna cu I-
#'ista ; posibilitati de a confiura I-%ul si mascaB
a) #ditand fisierul in care se salveaza confiuratia placii de retea,
Acesta poate sa difere de la distributie la distributie, In 1edAat$ >edora core si
).)# acesta este ?etc?s!sconfi?net<or&%scripts?ifcf%eth5r$ unde 5r reprezinta numele
interfetei de retea #thernet,
#'empluB fisierul ifcf%eth0 sau ifcf%eth2, In acest caz modificarea confiuratiei se
salveaza la reboot,
Tconfinutul fisierului ifcf%eth0 pentru interfata eth0
0#@I(#Geth0
B==T-1=T=Gstatic
B1=A0(A)TG23;,26:,0,;++
ADA001G00B06B*>B00B6#B>*
I-A001G23;,26:,0,28
5#TMA)/G;++,;++,;++,0
5#TD=1/G23;,26:,0,0
=5B==TG!es
TO-#G#thernet
In .buntu e'ista un sinur fisier pentru toate interfetele si anume ?etc?net<or&?interfaces
auto lo
iface lo inet loopbac&
iface eth2 inet static
address 23;,26:,0,200
netmas& ;++,;++,;++,0
ate<a! 23;,26:,0,2
auto eth2
b) >olosind comanda ifconfi, Modificarea confiuratiei nu se salveaza la reboot$ iar
sinta'a acesteia este identica pe orice distributie de Linu',
#'emplu
2, Afiseaza confiuratia interfetelor active
ifconfi
;, Afiseaza confiuratia tuturor interfetelor instalate si recunoscute de sistem
ifconfi %a
8, pornesete?opreste o interfata (enable?disable)
ifconfi eth0 do<n U up
*, (onfiureaza I- si Masca pentru o interfata
ifconfi eth0 20,0,0,2 netmas& ;++,;++,;++,0 broadcast 20,0,0,;++
+, )chimba adresa MA( interfata
ifconfi eth0 h< ether 82B8;B88B8*B8+B86
6, Modificare MT.
ifconfi eth0 mtu 2*2;
4, (rearea subinterfata si setare I- si Masca
ifconfi eth0B0 20,0,0,0 netmas& ;++,0,0,0 broadcast 20,;++,;++,;++
6 De*ault <atewa7 (optional)
)e poate confiura de asemenea in ; moduriB
a) #ditand fisierul in care se aseste, -e 1edAat >amil! acesta este
?etc?s!sconfi?net<or&
echo C"AT#DAOG23;,26:,0,2C PP ?etc?s!sconfi?net<or&
In .buntu se aseste in acelasi fisier cu I-%ul si Masca ( ?etc?net<or&?interfaces)
b) >olosind comanda route
route add default < 23;,26:,0,2
(omanda route fara optini listeaza tabela de rutare a hostului,
%6 ,er1ere DB, (optional)
)e confiureaza in ?etc?resolv,conf pentru =1I(# distributie de Linu'
(ontinut ?etc?resolv,confB
nameserver 238,;82,;86,8
nameserver 238,;82,;86,;+
-entru a crea o mapare statica I-?5.M# se editeaza fisierul ?etc?hosts
(ontinut ?etc?hosts
23;,26:,0,2 ate<a!
23;,26:,0,2: server
:;,8*,2,3 home
>isiereul ?etc?host,conf determina ordinea de translatare a domeniului in I- (defaultB
?etc?hosts si apoi Muer! catre serverele 05)), 0upa fiecare modificare a parametrilor
interfetelor de retea$ serviciul retea trebuie restartatB ?etc?init,d?net<or&in restart,
F.% 'ana(e/entul ser1iciilor si Procesul de #utare
Linux #oot Process
= sarcina importanta a oricarui administrator de sistem este de a stabili ce servicii
pornesc automat la butare$ ce servicii trebuie oprite etc,
#tapele butarii unei calculator care ruleaza Linu' sunt urmatoareleB
16 #I$, executa P$,5 (-o<er on )elf Test) si conform cu confiuratia sa (de unde este
confiurat sa butezeB Aard 0is&$ (0%1=M$ 0@0%1=M etc) citeste MB1%ul care
reprezinta primul sector al hard dis&ului (primii +2; b!tes),
26 In '#! (Master Boot 1ecord % primul sector al Aard dis&ului) se aseste un boot loader
("1.B sau LIL=) care incarca in memorie de pe dis&$ &ernelul si initrd inainte sa monteze
root file s!stem, >unctionalitatea interna a lui "1.B permite sa citeasca de pe dis&
&ernelul si initrd si sa le incarce in memorie intainte sa monteze partitia pe care acestea se
asesc, /ernelul se decomprima si foloseste modulele din initrd (monteaza initrd) pentru a
buta de pe dis&, 0aca nu e'ista initrd funtionalitatea pt, a buta de pe dis& trebuie sa fie
compilata in &ernel,
5ota
initrd reprezinta un 1AM0I)/
>izic acesta este un fisier, #'empluB ?boot?initrd,im%;,6,;;%2*%server
initrd contine module necesare &ernelului in prima faza a procesului de butare inainte sa
monteze root file s!stem,
#'empluB initrd ar putea contine un modul care reprezinta driver pentru )ATA si care nu a
fost compilat in &ernel, /ernelul are nevoie de acest driver pentru a putea monta hard
dis&ul,
6 Pri/ul pro(ra/ pe care kernelul il executa de pe disk este init (parintele tuturor
proceselor),
>isierul de confiurare al lui init este ?etc?inittab, Acesta controleaza modul in care init
initializeaza sistemul,
Important
>isierul ?etc?inittab stabileste runlevelul in care sistemul buteazaB
T 0efault runlevel, The runlevels used b! 1A) areB
T 0 % halt (0o 5=T set initdefault to this)
T 2 % )inle user mode
T ; % Multiuser$ <ithout 5>) (The same as 8$ if !ou do not have net<or&in)
T 8 % >ull multiuser mode
T * R unused
T + % 622
T 6 % reboot (0o 5=T set initdefault to this)
T idB +BinitdefaultB
*) .buntu?0ebianB ?etc?rc,d?rc) se e'ecuta precum si toate scripturile din directorul
?etc?rc),d?
>edora?1edAat?)u)eB ?etc?rc,s!sinit se e'ecuta
+) In functie de runlevelul in care intra sistemul se e'ecuta ?etc?rcN,d?N
N (asteri') reprezinta runlevelul in care intra sistemul, -oate fi 0$2$;$8$*$+ sau 6,
#'empluB
0aca se intra in runlevel 8 se e'ecuta scripturile din ?etc?rc8,d?
0aca se intra in runlevelul + se e'ecuta scripturile din ?etc?rc+,d?
-entru fiecare serviciu e'ista in ?etc?rcH0%6I,d? un fisier de forma )nr5ume)erviciu si
/nr5umeserviciu,
#'empluB )20net<or& si /20net<or&,
>isierele care incep cu litera ) se e'ecuta la intrarea in runlevelul respectiv iar cele care
incep cu litera / se e'ecuta la iesirea din runlevelul respectiv,
=rdinea de e'ecutie a fiecarui serviciu este importanta si se stabiliteste in functie de
numarul care urmeaza dupa litera ) sau /,
>isierele din ?etc?rcH0%6I,d? sunt de fapt s!mlin&uri catre fisierele din ?etc?init,d? % directorul
lobal cu startup files, >iecare fisier din ?etc?init,d? trebuie sa poata primi ca parametru
startUstopUreloadUrestart,
#'empluB e'ecutia fisierului ?etc?rc8,d?)20net<or& este echivalenta cu e'ecutia scriptului
?etc?init,d?net<or& start,
5ota
rc G 1unlevel )cript ? resource control
'ana(e/entul ser1iciilor
-entru a stabili ce servicii pornesc la butare avem mai multe optiuniB
16 &arianta 1
a) se creaza un script in ?etc?init,d? care sa porneasca serviciul atunci cand primeste
parametrul start si sa%l opreasca atunci cand primeste parametrul stop,
b) se creaza ; s!m lin&uri in ?etc?rcH0%6I,d? catre ?etc?init,d?numeJscript, .n s!mlin trebuie
sa fie de forma )nr5ume iar celalalt /nr5ume,
N (asteri') reprezinta runlevelul in care intra sistemul,
26 &arianta 2
a6 3edora/!ed.at
)e foloseste comanda ch&confi pentru a stabili ce servicii vor porni la butare,
c.kcon*i( % se foloseste pentru crearea?stererea automata a s!mlin&urilor din
?etc?rcH06I,d?
%%lists G listeaza toate serviciile precum si modul in care sunt confiurate sa porneasca in
fiecare runlevel,
%%add serviceJname G adaua un serviciu pentru a fi administrat cu ch&confi,
%%del serviceJname G stere un serviciu
%%level G stabileste runlevelul pentru care se confiureaza serviciul,
#'emplu
ch&confi %%list sendmail
ch&confi Rlist
ch&confi %%add sendmail
ch&confi %%del sendmail
ch&confi %%level 8+ sendmail on
+6 U+untu
)e foloseste comanda update%rc,d
#'emplu
2, -ornire serviciu ssh in mod default (cuvantul cheie default porneste serviciul in runlevel
;$8$* si + si%l opreste in 0$2 si 6)
update%rc,d scriptJname defaults
;, 1emove the s!mlin& from ?etc?rcH0%6Id?, )erviciul nu va mai porni in runlevelul
specificat,
update%rc,d ssh remove
8, )tabilire runlevel e'plicit in care se porneste?opreste serviciul
update%rc,d ssh start 02;8 stop *+6
$prire/Pornire de ser1icii;
-entru a opri?porni un serviciu e'ista in principiu ; modalitati,
2, >olosind startup scripts si pasand arumentul start$ stop sau restart,
#'empluB
?etc?init,d?sendmail start
?etc?init,d?sshd restart
;, >olosind comanda service
#'empluB
service sendmail start
service httpd stop
service sshd restart
(omanda service ruleaza scriptul pe care il primeste ca parametru ( #'empluB sendmail)
cu optiunile aferente (start$ stop etc), )criptul trebuie sa se aseasca in ?etc?init,d?
5ota
?sbin?service este un script de shell
0aca nu dorim sa cream cate un script pentru fiecare serviciu putem adaua
comenzi in fisierul ?etc?rc,local care este e'ecutat dupa terminarea tuturor celorlalte
scripturi de initialiazare, Trebuie sa e'iste un s!mlin& catre el in ?etc?rcH0%6I,d?
Linux Server Administration
Capitolul 1 G ,.ell ,cripts
1.1 Introducere #as.
)hellul este interpretorul de comenzi, Acesta parseaza comenzile introduse de
utilizator$ le verifica din punct de vedere al sinta'ei si le trimite &ernelului spre e'ecutie,
#'ista mai multe shelluri (Bourne$ /orn$ ( )hell etc)$ dar default pe Linu' este shellul
numit Bash (Bourne Aain )hell), >izic Bash%ul este reprezentat de fisierul ?bin?bash
-e lana interpretarea si e'ecutia comenzilor$ Bash%ul ofera si alte facilitati printre
careB editarea liniei de comanda$ histor!$ alias%uri$ dar si un limba7 de proramare structurat
propriu,
.n script de shell este un fisier te't (A)(II) care contine comenzi de shell
oranizate intr%un mod loic, -e lana comenzi$ script%ul mai contine si variabile (locale
sau lobale)$ parametri pozitionali precum si structuri de proramare specifice
(if,,then,,else$ <hile$ do$ until$ for$ case$ selsect etc),
.n script este folosit pentru a imbina comenzi si diverse structuri de control pentru
a oferi o noua functionalitate sau a automatiza tas&%uri,
#tapele crearii unui script suntB
a) crearea unui fisier te't folosind editorul preferat ( #'empluB vim)
b) editarea fisierului pentru a contine functionalitatea dorita
c) testarea scriptului adica e'ecutia?rularea acestuia
Moduri de e'ecutie a unui script numit script2B
2, 0in directorul care contine scriptul se ruleaza B ,?script2
>isierul script2 trebuie sa aiba dreptul de e'ecutie, >iindca directorul curent (,) nu
se afla in X-ATA (altfel rave probleme de securitate)$ scriptul trebuie sa fie e'ecutat cu
calea absoluta sau cu ,?numeJscript In acest caz se porneste un shell nou ca sub proces al
shellului curent in care se e'ecuta comenzile din script,
;, 0in directorul care contine fisierul script2 se ruleazaB , script2 sau source script2,
)e e'ecuta comenzile din script2 in shell%ul curent, >isierul script2 nu trebuie sa
aiba dreptul de e'ecutie, .na dintre diferentele dintre prima si a doua varianta este ca
variabilele e'portate sau lobale sunt vizibile in shell%ul curent in varianta a doua$ dar nu si
in prima varianta,
5ota
@arianta cea mai folosita de e'ecutie a unui script este primaB ,?script
.n script trebuie sa contina pe prima linie o referire la proramul cu care se e'ecuta
(Bash$ -erl$ -A-$ -!thon etc), Astfel prima linie a unui script Bash este invariabilB
TQ?bin?bash, In interiorul scriptului T(diez) reprezinta un comentariu, #'ceptie face prima
linie,
echo se foloseste pentru afisa un strin (sir de caractere) sau o variabila la consola,
#'empluB echo CLinu'C
#'emplu
2, )cript care afiseaza mesa7ulB Acesta este primul e'emplu Q
TQ?bin?bash echo CAcesta este primul e'emplu QC
;, )cript care creaza un fiser numit continutJetc,t't in directorul curent ce contine fisierele
si directoarele din directorul ?etc$ iar apoi afiseaza spatiul total$ ocupat si liber de pe fiecare
partitie de pe Aard 0is&,
TQ?bin?bash ls %l ?etc P continutJetc,t't echo C>isierul continutJetc,t't a fost creat in
directorul curentQC echo CInformatii partitiiBC df %h
Important
= cunoastere acceptabila a modului de creare de scripturi este esentiala pentru orice
Administrator de sistem, In cazul persoanelor incepatoare care nu au e'perienta in
proramare (orice limba7) procesul de scriptin pare la prima vedere e'trem de complicat,
#ste nevoie de multe e'ercitii si e'emple pentru o inteleere aprofundata, Intotdeauna se
incepe cu e'ercitii simple si anume scripturi formate din cateva randuri,
1.2 &aria+ile@ constante si *unctii
-rezentare eneralaB
2, = variabila reprezinta un nume pentru o locatie de memorie unde se aseste o valoare,
)e obisnuieste (nu este obliatoriu) ca variabilele sa se scrie cu litera mare,
;, (omparativ cu alte limba7e de proramare ((?(FF$ EA@A) variabilele in Bash nu au tip,
#le sunt strin%uri$ dar in functie de conte't pot fi evaluate ca intre$ double etc,
8, = variabila se declaraB 5.M#J@A1Gvaloare
Important
5u se foloseste spatiu intre 5.M#J@A1 si valoare, i G 2 reprezinta eroare, )inta'a bash %
ului este e'trem de stricta, .n spatiu in plus sau in minus reprezinta o eroare fatala,
#'empluB
5.M#GCdanC
varstaG;0
*, -entru a ne referi la continutul unei varibile se foloseste semnul X (dollar) in fata
numelui variabilei,
#'empluB echo Xvarsta
+, @ariabilele pot fi locale sau lobale, (ele locale sunt vizibile doar in shell%ul curent$ iar
cele lobale sunt vizibile in shell%ul curent si in toate subprocesele shell%ului curent,
Astfel in interiorul unui script daca se foloseste o variabila lobala aceasta va fi
accesibila oricarei comenzi?proram lansata din acel script, @ariabilele lobale nu sunt
accesibile parintelui unui proces$ adica shell%ului de unde s%a e'ecutat scriptul, #'ceptie
face varianta ; de e'ecutie a unui script adica folosind source numeJscript
6, -entru a declara o variabila lobala aceasta trebuie e'portata, )e foloseste cuvantul cheie
e'port
#'empluB e'port @A1)TAG;0
variabilele lobale se numesc de environmentW
pentru a vizualiza variabilele locale se foloseste comanda setW
pentru a vizualiza variabilele lobale se foloseste comanda envW
pentru stere o variabila se foloseste comanda unset 5.M#J@A1W
#'emplu de varibile lobale predefiniteB
-ATA %P contine o lista de directoare in care shell%ul cauta comanda care se e'ecuta,
-entru a concatena un strin la variabila -ATA se foloseste caracterul B (doua puncte),
#'emplu
0aca dorim sa adauam directorul ?home?dan?scripts in -ATAB e'port
-ATAG-ATAB?home?stud?scripts
0upa aceasta scripturi si comenzi din ?home?stud?scripts pot fi rulate in orice director ne
am afla doar prin numele lor, Altfel trebuie folosita calea absoluta sau aflandu%ne in
director se e'ecutaB ,?numeJcomanda
A=)T5AM# %P contine hostname%ul calculatorului
)A#LL %P contine shell%ul default
AI)T)IK# % contine nr, de comenzi care vor fi memorate in histor!
.)#1 %P contine #.I0
-D0 %P contine directorul curent
=L0-D0 %P contine directorul precedent si se foloseste de comandaB cd R
A=M# %P contine home director! al #.I0
1A50=M %P variabila al carei continut este pseudoaleator
TM=.T %P nr in secunde dupa care se face loout automat daca nu se e'ecuta nicio
comanda
4, 0iferenta dintre hilimele simple(apostrof) si hilimele duble este aceea ca hilimele
simple nu interpreteaza X ca si caracter special, In interiorul hilimelelor simple fiecare
caracter special cu e'ceptia S (hilimea simpla) este interpretat literal,
#'emplu
varstaG;0 echo CXvarstaC TTse afiseaza ;0 echo SXvarstaS TTse afiseaza Xvarsta
:, = variabila poate fi declarata read%onl! sau de tip arra!, = variabila read%onl! se mai
numeste si constanta,
#'emplu
2, var2 este readonl!, Aceasta nu poate fi modificata sau stearsa folosind unset,
declare %r var2G4
;, -entru a declara un arra!?vectorB
A11AOG(unu doi trei) echo X\A11AOHNI] echo X\A11AOH2I] iG; echo
X\A11AOHI] unset A11AOH2I unset A11AO
A11AO nu este cuvant cheie, In loc de A11AO poate fi orice cuvant,
3, -entru a citi o variabila de la tastatura se foloseste cuvantul cheie read
#'empluB
TQ?bin?bash echo CIntrodu nume fisierBC read >IL# echo C>isierul introdus este X>IL#C
20, In bash e'ista caractere speciale care sunt interpretate in mod deosebit,
#'empleB X (dollar)$ C(hilimea dubla) sau [ (bac&slash), -entru a anula efectul special al
caracterului$ acesta se precede cu [ (bac&slash),
#'empluB echo [Xvar %P Afiseaza Xvar, X nu mai este caracter special,
1. Para/etri po0itionali
Bash%ul foloseste parametri speciali la care ne putem referi in interiorul unui script
pentru a avea acces la anumite valori, Acesti parametri speciali se pot folosi ca si
variabilele$ doar ca e'ista default si nu trebuie creati, (ontinutul acestora este de asemenea
standard,
Acestia suntB
2, X0 % contine numele scriptului
)criptul poate actiona diferit in functie de numele cu care a fost rulat ( #'empluB
daca se ruleaza folosind un simlin& al scriptului, @ezi comanda ?bin?erep care este un
simlin& catre ?bin?rep dar are totusi functionalitate diferita),
;, X2 % reprezinta primul arument al scriptului$ X; al doilea arument al scriptului etc,
Incepand cu arumentul 20 acesta trebuie incadrat intre acolade X\20]$ X\22] etc,
)e folosesc pentru a evita erori in momentul in care scriptul este rulat fara arumente sau
cu un alt nr, de arumente (iar acesta asteapta sa primeasca arumente),
8, XL % reprezinta statusul ultimei comenzi e'ecutate,
In Bash Kero este statusul pentru non%error iar diferit de zero este statusul pentru
eroare, =rice comanda?proram are un status de e'it$ zero sau non%zero, )e foloseste pentru
a continua e'ecutia scriptului (sau a modifica comportamentul acestuia) in functie de
statusul comenzilor anterioare,
*, XT % reprezinta nr, de arumente ale scriptului )e poate lua o decizie in functie de nr, de
arumente cu care a fost rulat scriptul,
+, XN % reprezinta toate arumentele date scriptului,
6, XX % reprezinta -I0 shell,
Astel in functie de cum rulam scriptul XX are alta valoareBsource f2 % XX reprezinta
-I0 bash (shell curent) ,?f2 % XX reprezinta -I0 noului sub%shell creat in care se e'ecuta
comenzile
4, XQ % reprezinta -I0 ultimului proces e'ecutat in bac&round,
#'emplu
2, )cript care stere fisierul sau directorul pe care%l primeste ca arument
TQ?bin?bash rm %rf X2
;, Afisarea numelui scriptului
TQ?bin?bash #cho C5umele scriptului e'ecutat esteB X0C
1.% Alte *acilitati #as.
1.%.1 Alias
.n alias reprezinta un mod prin care o comanda sau o serie de comenzi se e'ecuta folosind
un alt nume,
-entru a crea un alias se foloseste comandaB alias comandaJnouaGScomandaJsubstituitaS
#'emplu
2, alias cop!GScpS
;, alias searchGSrepS
8, alias lsGSls %>S
*, alias rmGSrm %iS
+, alias llGSls %lS
6, alias stopGS&ill %3S
0aca aliasul este compus din mai multe cuvinte acestea trebuie incadrate intre
hilimele simple (apostrof),-entru a vizualiza toate aliasurile din sistem se foloseste
comanda alias fara nici un arument,-entru a e'ecuta comanda oriinala in locul aliasului
se foloseste [ (bac&slash) urmat de comanda,
#'ampleB [ls
-entru a stere un alias se foloseste comanda unalias
#'ampleB unalias ls
5ota
.n alias e'ista doar in shell%ul curent (nu e'ista nici macar in subshell%urile shell%ului
curent),
1.%.2 Custo/i0are 9n1iron/ent
Pro/ptin( 1aria+les >pro/pt strin(s6
Bash foloseste * variabile speciale numite Cprompt strinsCB -)2$ -);$ -)8 si -)*,
2, -)2 este numit Cprimar! prompt strinC si reprezinta prompterul curent,
0e cele mai multe ori acesta se modifica pentru a arata informatii cat mai utile despre
sesiunea curenta,
-)2 foloseste niste macro%uri care se e'pandeaza cu un anumit continut astfelB
[A % current time in AABMM hours format
[d % current date
[V % the current time in 2; hours format
[A % the hostname
[h % the hostname up to the first dot (,)
[s % the name of the shell
[u % username of the #.I0
[< % the current <or&in director!
[D % the current <or&in director! (basename) % relativ
[X % if #.I0GG0 print T else print X
5ota
.n e'emplu e'celent de modificare -)2 esteB e'port -)2GSH[uV[h [<IXS
Avand acest prompter adminul are intotdeauna informatii despre userul cu care s%a
conectat$ host%ul pe care este conectat precum si calea absoluta a directorului curent, Linia
de mai sus se adaua in fisierul de customizare Z?,bashrc
;, -); este numit Csecondar! prompt strinC si are valoarea default P (mai mare),
)e foloseste atunci cand se scrie o comanda incompleta si se apasa #5T#1,
#'empluB echo Cdfasfdas
8, -)8 se numeste Cprompt strin for the select commandC si se foloseste in scriptin
impreuna cu comanda select
*, -)* se numeste Cprompt strin for the 'trace optionC si reprezinta un prompt strin
folosit in debuin si flo< control,
9n1iron/ent
>iecare utilizator are propriul mediu de lucru numit si #nvironment, (ustomizarea
#nvironmentului presupune modificarea unor variabile si parametri astfel incat mediul de
lucru sa fie cat mai prietenos si sa ne ofere cat mai multe informatii,
0in mediul de lucru al unui utilizator fac parteB aliasurile sale$ umas&$ modul de
afisare al prompterului$ variabila -ATA in care shellul cauta comenzile$ ulimit etc
#'ista fisiere de initializare pentru fiecare user care sunt citite de shell la fiecare
pornire a acestuiaB
Z?,bashrc % este primul fisier citit de shell la loin, In acest fisier trebuie declarate variabile$
alias%uri etc pentru fiecare user,
Z?,bashJprofile % este citit dupa Z?,bashrc
Z?,bashJloout % este citit de shell inainte de loout, In acest fisier se pot reseta variabile$
stere fisiere temporare sau alte functii care vrem sa aiba loc inainte de loout,
>isierul ?etc?profile este un alt fisier de customizare Cs!stem%<ideC, Acesta nu
apartine unui anumit user$ iar in el se confiureaza mediul pentru toti userii, Il folosim de
e'emplu daca dorim setarea unui alias pentru toti userii din sistem,
Aceste fisiere nu sunt recitite automat de shell dupa modificare, Toate confiurarile
au efect dupa o noua loare in cazul Z?,bashrc sau Z?,bashJprofile sau dupa o restartare a
sistemului in cazul ?etc?profile,-entru a forta recitirea lor se foloseste comanda source sau ,
(dot) urmata de nume fisier, source sau , e'ecuta comenzile din interiorul fisierului in shell%
ul curent,
#'empluB source Z?,bashrc sau , Z?,bashrc
0aca Z?,bashJprofile nu e'ista shell%ul cauta Z?,bashJloin, 0aca nici aceasta nu e'ista
cauta Z?,profile,
In aceste fisiere speciale de initializare se seteazaB -)2$ TM=.T$ -ATA$ alias$ umas& etc
pentru fiecare utilizator
5ota
>isierele de initializare pentru fiecare utilizator se asesc in home director! al acestuia (Z)
si sunt ascunse fiindca incep cu ,(punct), -entru vizualizarea lor se foloseste comanda ls cu
optiunea %a #'empluB ls %la Z
5ota
In functie de distributia de Linu' numele si ordinea de citire a fisierelor de customizare a
mediului de lucru pentru fiecare user poate sa difere, Totusi$ pe marea ma7oritate a
distributiilor de Linu' (1edAat$ >edora$ (ent=)$ )use$ .buntu$ /ubuntu$ 0ebian) e'ista
Z?,bashrc, In acest caz se recomanda folosirea doar a acestuia
#'emplu Z?,bashrcB
T .ser specific aliases and functions alias rmGSrm %iS alias cpGScp %iS alias mvGSmv %iS alias
cautaGfind alias mutaGmv alias )GSssh %l root %p 4:30 ssh,cr!stalmind,roS T )ource lobal
definitions if H %f ?etc?bashrc IW then , ?etc?bashrc fi e'port -)2GSH[uV[h [<IXS e'port
-ATAGB?home?dan?scripts umas&G00;;
1.) 3low Control
1.).1 Conditii de testare
5ota
Informatiile din acesta paina au scopul de referinta pentru testele folosite de structurile de
control ce urmeaza a fi prezentate, #le nu trebuie invatate la acest moment in afara
cone'tului de flo< control ci doar impreuna cu structurile if,,then,,else$ <hile$ case etc
)tructurile de control (if,,then,,else$ <hile etc) presupun conditii de testare,
Acestea suntB
1. Pentru *isiere
%e G fisierul e'ista
%f G fisierul e'ista si este de tipul reular file
#'empluB %f X>IL#
%s G fisierul nu are dimensiunea zero
%d G fisierul e'ista si este de tip director
%c G fisierul e'ista si este de tip char device
%b G fisierul e'ista si este de tip bloc& device
%r G fisierul e'ista si are permisiunea read
%< G fisierul e'ista si are permisiunea <rite
%' G fisierul e'ista si are permisiunea e'ecute
% G fisierul are ".I0 setat
%u G fisierul are ).I0 setat
%& G fisierul are stic&! bit setat
%nt G fisierul este mai nou decat un alt fisier
#'empluB file2 %nt file G file2 is ne<er than file;
Q %P inverseaza sensul (neaa)
2. Pentru co/paratie
%eM G eMual to
%ne G not eMual to
%t G reater than
#'empluB Xi %t %X7
%e G reater than or eMual
%lt G less than
%le G less than or eal
. Pentru strin(uri >siruri de caractere6
%z G lunimea sirului este zero
%n G lunimea sirului este non%zero
G eal (comparativ cu alte limba7e de proramare operatorul de comparatie este un sinur
eal)
QG diferit
#'empluB Xstr2 QG Xstr;
%a G )I L="I( (A50)
%o G )A. L="I( (=1)
#'emplu
2, Testul este adevarat daca ambele conditii sunt adevarate simultan (valoarea variabilei
.)#1 este root si valoarea variabilei )A#LL este bash)
X.)#1 G CrootC %a X)A#LL G CbashC
In cazul comparatiei a doua strinuri din punct de vedere al sinta'ei bash este obliatoriu
un spatiu inainte de G (eal) si un spatiu dupa G (eal),
#'empluB X.)#1GCrootC este resit$ X.)#1 G CrootC este corect,
;, Testul este adevarat daca una dintre conditii este adevarata(i mai mic ca 20 )A. i mai
mare ca 200)
Xi %lt 20 %o Xi t 200
5ota
(ontiditiile de testare prezentate mai sus sunt doar cele mai folosite, -entru lista completa
e'ecutatiB man test
test #6-1 sau H #6-1 I au acelasi rezultat,
1.).2 I*..t.en..else
(ea mai simpla constructie de flo< control este cea conditionala reprezentata de if,
In functie de o valoarea de adevar a unei conditii se stabilesc instructiunile ce trebuie
e'ecutate, (onditiile de test se refera la proprietati ale fisierelor$ comparatii numerice sau
sunt referitoare la strinuri,
)inta'a pentru if esteB
if H conditieJdeJtest I then listaJdeJinstructiuni fi
0aca conditia de test este adevarata se e'ecuta lista de instructiuni$ altfel aceasta nu se
e'ecuta,
#'emplu
2, 0aca primul arument al scriptului este fisier se e'ecutaB cat fisier
if H %f X2 I then cat X2 fi
;, 0aca valoarea variabilei i este 20 se afiseaza mesa7ul C@ariabila i are valoarea 20C
if H Xi %eM 20 I then echo C@ariabila i are valoarea 20C fi
,intaxa pentru i*..else este;
if H conditieJdeJtest I then listaJdeJinstructiuni else listaJdeJinstructiuniJdefault fi
0ata conditia de test este adevarata se e'ecuta listaJdeJinstructiuni$ altfel se e'ecuta
listaJdeJinstructiuniJdefault
#'emplu
0aca valoarea variabilei @A1)TA citita de la tastatura este mai mica decat 2: se afiseaza
mesa7ul C#sti minorQC$ altfel se afiseaza mesa7ul C#sti ma7orQC
TQ?bin?bash echo CIntrodu varstaBC read @A1)TA if H X@A1)TA %lt 2: I then echo C#sti
minorQC else echo C#sti ma7orQC fi
,intaxa pentru i*..eli*..else este;
if H conditieJdeJtest2 I then listaJdeJinstructiuni2 elif H conditieJdeJtest; I then
listaJdeJinstructiuni; elif H conditieJdeJtest8 I then listaJdeJinstructiuni8 else
listaJdeJinstructiuniJdefault fi
#'emplu
0aca variabila =1A citita de la tastatura este mai mica decat 2; se afiseaza mesa7ul CBuna
dimineataC daca este intre 2; si 2: se afiseaza mesa7ul CBuna ziuaC$ daca este intre 2: si ;*
se afiseaza C5oapte BunaQC, -entru orice alta situatie se afiseaza mesa7ul C#roareQC,
TQ?bin?bash read i if H Xi %lt 2; I then echo CBuna dimineataQC elif H Xi %e 2; %a Xi %lt 2: I
then echo CBuna ziuaQC elif H Xi %e 2: %a Xi %le ;* I then echo C5oapte buna QC else echo
C#roareQC fi
%a reprezinta )I L="I( (A50), Testul este adevarat daca ambele conditii sunt adevarate
simultan,
%o reprezinta )A. L="I( (=1), Testul este adevarat daca una dintre contitii este
adevarata,
#'emplu
2, Testul este adevarat daca ambele conditii sunt adevarate (primul parametru este fisier si
e'ista )I are permisiunea de read), Ambele conditii sunt adevarate simultan,
if H %e X2 %a %r I
;, Testul este adevarat daca primul parametru primit de script este fisier )A. acesta este
director, .na dintre conditii este adevarata,
if H %f X2 %o %d X2 I
1.). 3or
>or se foloseste pentru a e'ecuta o sectiune de cod de un numar repetat de ori
(ciclu), @arianta clasica de for din Bash este diferita de cea din alte limba7e de proramare,
,intaxa pentru *or este;
for @A1 in listaJdeJvalori do instructiuni done
)e e'ecuta instructiunile specificate de atatea ori cate valori avem in lista, -entru fiecare
iteratie variabila @A1 ia o valoare din listaJdeJvalori, )eparatorul pentru valorile din lista
este default spatiu sau valoarea variabilei lobale I>),
#'emplu
2, )cript care e'emplifica ciclul de tip for prin trimiterea unui pachet pin la fiecare din
cele 8 I-%uri,
Instructiunile dintre do si done se e'ecuta de atatea ori cate valori avem in lista (8 valori),
-entru fiecare ciclu valoarea variabilei I- este o valoare din lista, @alorile din lista sunt
separate prin spatiu,
TQ?bin?bash for I- in 23;,26:,0,2 23;,26:,0,; 23;,26:,0,8 do pin %c 2 XI- done
;, #'emplu for modificand valoara variabilei I>) care este separatorul valorilor,
TQ?bin?bash TAcest script afiseaza fiecare director din X-ATA pe cate un rand I>)GB for
0I1 in X-ATA do echo X0I1 done
In Bash e'ista si structura de tip for ca in (?(FF, Aceasta este insa mai putin folosita,
#'emplu for ca in (?(FFB
LIMITG20 for((aG0Wa_GXLIMITWaFF)) do echo Xa done
1.).% :.ile
)tructura de tip <hile se foloseste pentru a e'ecuta o serie de instructiuni (cele
dintre do si done) atata timp cat conditia de test este adevarata,
<hile H conditieJdeJtest I do listaJdeJinstructiuni done
#'emplu <hileB
TQ?bin?bash
Tscript care afiseaza numerele intre 0 zi 200
LIMITG200
iG0
<hile H Xi Rle XLIMIT I
do
echo CiGXiC
let iGiF2
done
1.).) Case
)tructura de tip case se foloseste pentru a e'ecuta o serie de instructiuni in functie de
diferite conditii de testare,
)inta'a pentru case esteB
case @A1IABILA in
valoare2)
instructiuni2
WW
valoare;)
instructiuni
WW
N)
instructiuniJdefault
WW
esac
N %P reprezinta instructiunile ce se vor e'ecuta default daca variabila nu are niciuna dintre
valorile de mai sus,
#'emplu
TQ?bin?bash echo CIntrodu nrBC read nr case Xnr in 2) echo Cnr este 2C WW ;) echo Cnr este
;C WW N) echo Cnr are alta valoareC WW esac
)tructura de tip case poate fi oricand inlocuita cu o structura de tip if,,elif,,else
#'emplu de mai sus folosind if,,elif,,else esteB
TQ?bin?bash
echo CIntrodu nrBC
read nr
if H Xnr %eM 2 I
then echo Cnr este 2C
elif H Xnr %eM ; I
then
echo Cnr este ;C
else
echo Cnr este altcevaC fi
Important
)tructura de tip case este foarte importanta si trebuie inteleasa bine, Toate
scripturile de initializare a serviciilor (cele din ?etc?init,d ) folosesc o structura de tip case,
,tructura unui script de initiali0are din /etc/init.d este;
case X2 in
start) instructiuni de pornire serviciu
WW
stop) instuctiuni de oprire serviciu
WW
restart) instructiuni de restartare serviciu
WW
N) afisare help script
esac
X2 reprezinta primul parametru al scriptului si poate fi start$ stop sau restart,
#'empluB -entru restartarea retelei se folosesteB ?etc?init,d?net<or& restart$ unde net<or&
este scriptul de initializare iar restart primul parametru pe care%l primeste,
#'emplu
-resupunem ca am compilat si instalat serverul Apache in directorul ?opt?apache,
0aemonul http se porneste ruland comandaB ?opt?apache?bin?apachectl start$ se opreste cu
?opt?apache?bin?apachectl stop si se restarteaza cu ?opt?apache?bin?apachectl restart,
)e doreste pornirea serverului la butarea sistemului$ mai e'act la intrarea in runlevel 8,
#tapeB
2, )e creaza un script in ?etc?init,d, 5umele poate fi ales aleator$ in e'emplul nostru acesta
se numeste initJapache
;, )e creaza un s!mlin& catre ?etc?init,d?initJapache in ?etc?init,d?rc8,d numit )33Apache,
5umele s!mlin&ului este important sa inceapa cu litera ) urmata de un umar intre 0 si 33,
La intrarea in runlevell 8 se va rula automat acest script cu parametrul start,
)tructura scriptului ?etc?init,d?initJapache esteB
TQ?bin?bash
case X2 in
start)
echo C)tartin Apache,,,C ?opt?apache?bin?apachectl start echo C=/C
WW
stop) echo C)huttin do<n Apache,,,C ?opt?apache?bin?apachectl stop echo C=/C
WW
restart) X0 stop X0 start
WW
N) echo CinitJapache _startUstopUrestartPC
esac
5ota
-entru detalii complete despre modul de pornire a serviciilor la butare cititi capitolul
CManaementul )erviciilorC din cursul CLinu' Basic AdministrationC disponibil de
asemenea online,
1.).2 ,elect
)tructura de tip select este specifica doar Bash%ului si se foloseste pentru crearea de
meniuri,
,intaxa acesteia esteB
select M#5.IT#M in menuJlist
do
listaJdeJcomenzi
done
0etaliiB
% menuJlist este lista de meniuri, @alorile din lista sunt separate prin spatiuW
% intre do si done sunt instruciunile ce se e'ecuta in functie de meniul alesW
% intre do si done avem acces la urmatoarele ; variabileB M#5.IT#M care contine meniul
selectat si 1#-LO care se creaza automat si contine inputul userului (ce a scris acesta la
consola)W
% -)8 contine prompterul de selectare a meniurilorW
% userul alee un meniu din lista folosind un nr, de ordineB alee 2 pentru primul meniu$ ;
pentru al doilea etcW
#'empluB
TQ?bin?bash
-)8GCAleeBC
select IT#M in CAfiseaza continut ?etcC CAfiseaza spatiu liberC C#'itC
do
case X1#-LO in
2) ls %l ?etc
WW
;) df %h
WW
8) e'it 0
WW
N) echo C=ptiune incorectaC
esac
done
1.2 ,u+stituirea co/en0ilor
.nei variabile i se poate asina o valoare in ; moduriB
2, >olosind 5.M#J@A1Gvaloare
#'empluB #0IT=1GC@IMC
;, )ubstituind o comanda cu outputul ei
#'empluB
@A1Gals ?etca %P in acest e'emplu comanda ls ?etc se substituie sau inlocuieste cu outputul
ei care se asineaza variabilei @A1, @ariabila @A1 va contine outputul comenzii ls %l,
5ota
)ubstituirea unei comenzi cu outputul ei reprezinta unul dintre caracteristicile cele mai
puternice ale Bashului$ iar ma7oritatea scripturilor folosesc acest mod de lucru,
-entru a substitui o comanda cu outputul ei e'ista ; varianteB
2, (omanda sa incadreza in bac&Muotes ( aa), Atentie$ bac&Muotes nu sunt apostroafe sau
hilimele simple,
#'empluB M#G a<hoiam a %P variabila M# va contine outputul comenzii <hoami
;, (omanda se incadreza intre X( si )
#'empluB #TA0G X(ifconfi eth0) %P variabila numita #TA0 va contine outputul comenzii
ifconfi eth0
#'emplu script ce nu poate fi rulat de catre root
TQ?bin?bash
if H CX(<hoami)C G CrootC I
then
echo C#sti root$ sorr! QC
e'it 2W
fi
Tincep instructiunile ce nu pot fi rulate de catre rootC
ls %la Z
5ota
In momentul in care o variabila de tip strin este testat folosind un test pentru strinuri este
bine ca aceasta sa fie incadrata intre hilimele duble pentru a forta tipul ei catre strin,
#'empluB
@A1GCaifconfi eth0aC if H %z CX@A1C I then echo CInterfata eth0 nu e'istaQC fi
rihts reserved
Capitolul 2 - Co/pilare -ernel
2.1 Introducere@ necesitate co/pilare
/ernelul sistemului de operare Linu' reprezinta componenta cea mai importanta a
acestuia, Toata functionalitatea sistemului este realizata de &ernel,
0intre cele mai importante functii ale &ernelului Linu' amintimB
% alocarea resurselor diferitelor procese (o parte din 1AM$ o parte din (-. etc)W
% contine drivere pentru toate dispozitivele hard<are de la placa de baza$ placa video$ placa
de sunet$ placa de retea$ monitor$ tastatura etcW
% lucrul cu sistemele de fisiereW
% orice operatie de creare$ sterere$ citire$ modificare fisier sau director este realizata de o
functie din /ernelW
% fire<all & routinW
% `o)W
=rice administrator de sistem s%a lovit macar o data de necesitatea uprade%arii
&ernelului,
Un up(rade de kernel se poate *ace in 2 /oduri;
2, >olosind o versiune de &ernel direct compilata pentru o anumita distributie si arhitectura,
In acest caz noul &ernel se instaleaza dintr%un fisier 1-M sau 0#B,
Aceasta metoda are numeroase dezavanta7e printre care cele mai importante suntB
% &ernelul este compilat pentru o arhitectura enerica, Acesta nu este optimizat special
pentru tipul nostru de procesor$ placa de baza etc, Astfel performantele vor fi mai scazuteW
% facilitatile oferite sunt enerice si anume acesta include facilitati necesare ma7oritatii
utilizatorilorW
#'empluB poate include suport pentru 1AI0$ iar serverul nostru nu foloseste 1AI0$ nu va
include suport pentru un fire<all la nivel de aplicatie$ iar necesitatile serverului nostru
presupun folosirea unui astfel de fire<all$ nu va include driver pentru o anumita placa de
retea <ireless pe care o folosim daca aceasta este putin mai CdeosebitaC etcW
% &ernelul cuprinde multe optiuni nefolositoare in cazul nostru particularW
#'empluB va cuprinde drivere pentru ma7oritatea placilor de baza$ a placilor de retea$
diferite aplicatii pe care nu le folosim niciodata etcW
% dupa aparitia unei noi versiuni de &ernel dureaza o perioada de timp pana cand apare
forma sa compilata ca 1-M sau 0#B, In acest fel e'ista un Cvulnerabilit! <indo<C in care
nu suntem prote7ati impotriva ultimelor vulnerabilitati sau pur si simplu &ernelul nostru nu
acopera diferite buuriW
;, (ompiland direct sursele &ernelului
Aceasta este metoda preferata in cele mai multe cazuri, 0orim sa compilam un nou &ernel
in urmatoarele conditiiB
a) vrem sa includem drivere pentru hard<are nou aparut sau pentru hard<areul ale carui
drivere nu sunt incluse in versiunea standard de &ernel care vine cu distributiaW
b) includerea de optiuni pentru diferite aplicatii sau servicii (`o) % ATB$ fire<all la nivel
de aplicatie$ criptorafie$ L@M$ 1AI0 etc)W
c) vrem sa acoperim diferite bu%uri sau probleme de securitate, In medie apare o noua
versiune de &ernel la circa ; saptamani, Aceasta acopera bu%urile din versiunea trecuta
descoperite intre timpW
d) dorim un Cfine tuninC al &ernelului e'act pentru confiuratia hard<are a serverului
nostru (tipul nostru de procesor in special)W
5ota
Indiferent de distributia de Linu' folosita$ &ernelul este acelasi, Acesta este marca
inreistrata a lui Linus Torvalds$ iar dezvoltarea sa este supraveheata si avizata de
acesta,
2.2 ,tructura -ernel Linux
5umele &ernelul de linu' are formaB linu'%ma7or,minor,patchlevel,e'traJversion
#'empluB linu'%;,6,;+,2; lansat in Iulie ;00:
Important
@ersiunile minore pare sunt stabile$ iar cele impare sunt pentru teste (development),
-e un server in productie se instaleaza doar versiuni stabile de preferat ultima versiune,
@ersiunile de test se folosesc doar pentru developerii de &ernel sau testeri,
.n &ernel se poate asi in ; formeB
1. 'odular
.n &ernel modular se caracterizeaza prin faptul ca intreaa sa functionalitate nu
este inclusa in acesta ci in alte fisiere numite module si care se pot incarca?descarca in?din
&ernel in timp ce acesta este incarcat in 1AM si ruleaza,
#'empluB /ernelul nu include suport pentru ipv6 sau pentru ntfs, )uportul pentru ipv6 sau
ntfs se aseste in fisiere separate numite module, Acestea se pot incarca in &ernel in
momentul in care avem nevoie de respectiva functionalitate respectiv dorim sa folosim
ipv6 sau sau sa montam o partitie ntfs,
2. Be/odular
.n &ernel nemodular se caracterizeaza prin faptul ca intreaa sa functionalitate este
inclusa in acesta, 5u se pot incarca?descarca module din &ernelul care ruleaza,
Important
/ernelul de linu' este reprezentat fizic printr%un )I5".1 fisier care se aseste de
obicei in directorul ?boot sub numele ?boot?vmlinuz%versiune
Acesta reprezinta imainea compilata si compresata a &ernelului care se incarca in 1AM la
butare si doar la butare,
#'empluB ?boot?vmlinu'%;,6,;+,2;
>iecare optiune pe care &ernelul o ofera poate fi compilata ca parte interanta a
&ernelului sau ca modul,
L-' >Loada+le -ernel 'odules6 sunt fisiere binare care contin cod folosit pentru a
e'tinde functionalitatea &ernelului care ruleaza (the base &ernel), Acestea se compileaza
odata cu &ernelul,
(omenzi folosite pentru listare?incarcare?descarcare module din &ernelB
lsmod % listeaza modulele incarcate in memorie
-entru a incarca?descarca module in?din &ernel se foloseste comanda modprobe (fisierul de
confiurare este ?etc?modprobe,conf)
modprobe numeJmodul % incarca un modul
%l G listeaza toate modulele disponibile (nu neaparat incarcate in &ernel)
%r moduleJname G descarca un modul din &ernel
#'empluB modprobe ip6Jtunnel
Modulele se asesc fizic pe hard dis& in ?lib?modules intr%un director cu numele
&ernelului si intr%o cateorie anume,
5ota
/ernelul de Linu' precum si marea ma7oritate a serverelor si proramelor sunt scrise in
limba7ul de proramare (
2. <.id co/pilare kernel
0e cele mai multe ori compilarea &ernelului se realizeaza cu a7utorul unui hid de
compilare, #'ista mai multe astfel de hiduri si anume pasi care trebuie urmati pentru
compilarea &ernelului, Toate acestea au in comun aceiasi pasi importanti,
"hidul de compilare prezentat mai 7os a fost testat cu succes pe ma7oritatea
distributiilor de Linu', In e'emplul nostru compilarea s%a realizat pentru o distributie
>#0=1A, -uteti urma aceiasi pasi identici sau doar cu mici modificari pentru orice alta
distributie,
9tape co/pilare kernel
9tapa 1
0o<nload ultima versiune de &ernel de la <<<,&ernel,or$ decomprimarea si
dezarhivarea sa intr%un director la aleere, 0upa decomprimarea arhivei ne mutam in
directorul nou creat,
Important
Toate operatiile si comenziile care vor urma se vor e'ecuta din directorul care
contine sursele &ernelului, -ana la ultima etapa si anume restartarea calculatorului
ramanem in acest director,
In e'emplul acestui curs sursele &ernelului se do<nloadeaza in ?home?dan$ iar in
urma decomprimarii arhivei cu sursele rezulta directorul ?home?dan?linu'%;,6,;+,2;, Toate
comenzile vor fi e'ecutate din directorul ?home?dan?linu',;,6,;+,2;
In functie de versiunea &ernelului si de directoarele din propriul sistem$ caile
absolute si relative pot diferi, Acestea trebuie a7ustate corespunzator,
#'emplu
2, cd ?home?dan
;, <et %c $tt'+,,""".!ernel.or/,'ub,linu;,!ernel,97.2,linu;-7.2.7>.57.tar.b:7
8, tar %'7vf linu'%;,6,;+,2;,tar,bz;
9tapa 2 >Aceasta etapa este optionala@ dar *oarte reco/andata6
>iind cea mai importanta componenta a sistemului$ este aproape obliatoriu sa
verificam semnatura diitala a arhivei, Aceasta operatie aranteaza faptul ca avem o
versiune de &ernel oriinala (nemodificata si do<nloadata fara erori),
-entru verificarea semanturii diitale a unui fisier avem nevoie de urmatoareleB
2, >isierul a carui semnatura diitala se verifica (in acest caz arhiva care contine sursele
&ernelului)
;, >isierul care reprezinta semnatura diitala, In acest e'emplu acesta este linu'
;,6,;+,2;,tar,bz;,sin, Acesta se obtine din acelasi loc din care se do<nloadeaza &ernelul (
""".!ernel.or/)
8, (heia publica a celui care a semnat fisierul si anume producatorul &ernelului,
*, .n proram care verifica semanatura diitala si care este invariabil p,
5ota
Intreaa teorie leata de criptorafie si semanaturi diitale este prezentata in cursul
CAdvanced Linu' & InfosecC disponibil de asemenea online,
#'emplu
2, 0o<nload semnatura diitala
<et httpB??<<<,&ernel,or?pub?linu'?&ernel?v;,6?linu'%;,6,;+,2;,tar,bz;,sin
;, Importarea chei publice cu care s%a semnat, >iecare cheie are un I0 unic,
p %%&e!server <<<&e!s,pp,net %%recv%&e!s +24d0f0e
8, @erificare
p %%verif! ?home?dan?linu'%;,6,;+,2;,tar,bz;,sin ?home?dan?linu'%;,6,;+,2;,tar,bz;
9tapa
/ernelul foloseste un fisier de confiurare numit ,confi, Acesta se numeste C&ernel
confiuration startin pointC, La acest pas copiem fisierul de confiurare ,confi al
&ernelului care ruleaza in directorul cu sursele &ernelului abia do<nloadat si care se doreste
a fi compilat,
>isierul ,confi pentru &ernelul care ruleaza se aseste cel mai probabil in directorul
?usr?src?&ernels?@#1)I.5#J/#15#LJ(A1#J1.L#AKA sau in directorul ?boot
5ota
-e >edora (ore 3 fisierul de confiurare al &ernelului care ruleaza este ?boot?confi
;,6,;+%2*,fc3,i6:6 pentru versiunea ;,6,;+,2*
5ota
(ompilarea unui nou &ernel presupune pornirea de la o baza de facilitati si anume cele
oferite de &ernelul care ruleaza, -ractic pentru noul &ernel adauam facilitati noi sau
renuntam la facilitati in raport cu Crunnin &ernelC, Acesta este motivul pentru care avem
nevoie de ,confi al &ernelului care ruleaza,
0aca ,confi nu e'ista in directoarele specificate mai sus$ se poate do<nloada un
&ernel in format 1-M pentru distributia si arhitectura respectiva si i se foloseste fisierul
,confi,
>isierul de confiurare al &ernelului este format din optiunile care vor fi incluse in
&ernel$ una pe cate o linie urmate de ! (!es) daca se compileaza in imainea &ernelui sau m
daca se compileaza ca modul,
#'emplu
2, cp ?boot?confi%;,6,;+%2*,fc3,i6:6 ?home?dan?linu'%;,6,;+,2;
;, cd ?home?dan?linu'%;,6,;+,2;
8, mv confi%;,6,;+%2*,fc3,i6:6 ,confi
9tapa %
#'ecutam comandaB ma&e oldconfi
Atentie Q Aceasta comanda precum si urmatoarele se e'ecuta din directorul cu sursele
&ernelului,
1ularea comenzii determina aparitia unei interfate te't care foloseste fisierul de
confiurare de la &ernelul vechi ( ,confi) pe care il modifica astfel incat sa introduca noile
optiuni din &ernelul nou care se compileaza$ in vechiul fisier de confiurare,
9tapa )
#'ecutam comandaB ma&e menuconfi
(omanda ma&e confi reprezinta o alternativa rafica la ma&e menuconfi
1ularea comenzii determina aparitia unei interfete te't sau rafice pentru a alee optiunile
ce vor fi incluse in &ernel la compilare,
Important
Acesta este momentul in care trebuie sa adauam optiunile pe care le dorim in
&ernel$ sa le scoatem pe cele in plus etc, -entru compilarea &ernelului in cele mai optime
conditii este nevoie de o cunoastere foarte buna a hard<are%ului hostului,
9tapa 2
#'ecutam comandaB ma&e
In acest moment are loc compilarea &ernelului si a modulelor$ rezultand imainea
comprimata a acestuia numita bzImae, Aceasta operatie poate sa dureze mult (2%; ore),
9tapa 8
#'ecutamB cp )!stem,map ?boot?)!stem,map%;,6,;+,2;
ln %sf ?boot?)!stem,map%;,6,;+,2; ?boot?)!stem,map
.n simbol reprezinta un nume de variabila sau un nume de functie, )!stem,map
reprezinta un tabel cu echivalenta dintre numele simbolurilor si adresele acestora din
memorie si este folosit de &ernel,
9tapa F
#'ecutamB ma&e modulesJinstall
(omanda de mai sus instaleaza modulele,
9tapa H
#'ecutamB cp arch?':6?boot?bzImae ?boot?vmlinuz%;,6,;+,2;
In functie de arhitectura directorul ':6 poate sa fie i8:6,
bzImae vine de la Cbi zImaeC % Imaine &ernelului comprimata cu aloritmul zlib
(u toate ca numele nu este important$ prin conventie se foloseste denumirea de
vmlinuz sau bzImae pentru imainea binara comprimata a &ernelului,
5ota
Intre &ernelul se aseste intr%un sinur fisier si anume fisierul bzImae sau vmlinuz,
)ursele &ernelului nu mai sunt necesare si pot fi sterse,
9tapa 1I
#'ecutamB ?sbin?m&initrd ?boot?initrd%;,6,;+,2;,im ;,6,;+,2; pentru
1edAad?>edora?)u)# sau m&initramfs %o ?boot?initrt%;,6,;+,2;,im ;,6,;+,2; pentru
.buntu?/ubuntu?etc
#'empluB )e doreste suport pentru 1AI0$ L@M sau )ATA sau pentru alte functionalitati
lo< level, (omanda de mai sus creaza un 1AM 0is& care contine modulele necesare la
butarea sistemului,
5ota
-rimul arument al comenzii m&initrd este fisierul de tip 1AM 0is& care se va crea, Al
doilea arument si anume ;,6,;+,2; este numele directorului din ?lib?modules in care se
asesc modulele noului &ernel, Automat in fata arumentului ; se pune ?lib?modules?
9tapa 11
)e modifica bootloaderul si anume rub,conf pentru a adaua noul &ernel,
5ota
/ernelul compilat nu este inca folosit de sistem, Acesta va fi folosit doar dupa restartarea
calculatoruliu si aleerea sa din lista de &ernele din meniul "rub, 1eferirea la vechiul
&ernel din rub,conf 5. se stere Q
Important
-osibilitatea ca sistemul sa nu mai buteze datorita unei erori sau datorita lipsei unei
optiuni incluse in &ernel este destul de mare, #ste e'trem de important sa nu sterem
vechiul &ernel (cel butabil) pentru a buta cu el in caz de nevoie, #roarea fatala care poate
sa apara este /#15#L -A5I(,
Capitolul - ,er1erul DHCP
.1 Protocolul DHCP
-rotocolul 0A(- (0!namic Aost (onfiuration -rotocol) este definit in 1>(;282
si se foloseste pentru confiurarea automata a placii de retea (I-$ 5et<or& Mas&$ 0efault
"ate<a!$ 05) )ervers etc),
0A(- ruleaza client%server$ serverul fiind acela care inchiriaza o anumita
confiuratie clientului pentru o anumita perioada de timp numita Clease timeC,
5ota
0A(- este urmasul protocolului B==T-,
Toate sistemele de operare moderne includ un client de 0A(-, (el mai folosit
server 0A(- =pen)ource este cel de la I* (Internet (stem *onsortium),
DHCP - /od operare
(omunicatia dintre client si server se imparte in * faze distincte si anume e'ista *
tipuri de mesa7e care se schimba intre client si server,
1. DHCP Disco1er7
(lientul trimite 0A(- 0iscover! folosind I- destinatie de tip Climited broadcastC si
anume ;++,;++,;++,;++ iar ca I- sursa 0,0,0,0 )e foloseste protocolul .0-, (lientul
utilizeaza portul 6:$ iar serverul 64, Acestea nu trebuie sa fie filtrate de vreun fire<all,
I- )ursaG0,0,0,0
I- 0estinatieG;++,;++,;++,;++
-ort )ursaG6:
-ort 0estinatieG64
2. DHCP $**er
)erverele 0A(- (pot e'ista mai multe intr%un LA5) care au primit 0A(-
0iscover! raspund cu un mesa7 numit 0A(- =ffer in care ofera clientului o anumita
confiuratie (I-$ Masca$ 0"$ 05) etc), (onfiuratia poate fi statica$ stabilita apriori de
catre administrator in functie de MA(,
I- )ursaG)erverJI-
I- 0estinatieG;++,;++,;++,;++
-ort )ursaG64
-ort 0estinatieG6:
. DHCP !e=uest
(lientul alee o oferta (daca e'ista mai multe servere de la care a primit) trimitand
un pachet numit 0A(- 1eMuest % in eneral pe prima primita % si trimite un broadcast in
care isi face cunoscuta aleerea, In pachet se aseste I-%ul serverului ales astfel incat toate
celelalte servere sa cunoasca aleerea clientului si sa elibereze oferta facuta in caz ca nu a
fost aleasa de client,
I- )ursaG0,0,0,0
I- 0estinatieG;++,;++,;++,;++
-ort )ursaG6:
-ort 0estinatieG64
%. DHCP Acknowled(/ent
)erverul ales trimite 0A(-A(/ clientului in care precizeaza Clease timeC precum
si alte informatii necesare,
I- )ursaG 0A(-J)erverJI-
I- 0estinatieG;++,;++,;++,;++
-ort )ursaG64
-ort 0estinatieG6:
5ota
In momentul in care Clease timeC pentru oferta primita e'pira$ clientul trebuie sa
reinnoiasca confiuratia de la server, Acesta trimite doar 0A(- 1eMuest pentru aceiasi
confiuratie$ iar serverul raspunde cu 0A(- A(/,
Important
-entru o buna inteleere a protocolului 0A(- se recomandaB
a) citirea 1>(;282 care reprezinta de fapt documentatia oficiala,
b) pornirea unui sniffer precum Direshar& sau tcpdump si urmarirea modului de
comunicatie dintre client si server,
.2 Co/pilare si instalare ser1er
I)( este o oranizatie non%profit al carei scop este dezvoltarea de soft<are pentru
Internet, (ele mai cunoscute aplicatii sunt serverul 05) numit BI50 si serverul 0A(-,
Ambele sunt si cele mai folosite servere de 05) respectiv de 0A(- =pen)ource,
I)( 0A(- reprezinta o suita de prorame (dhcp daemon$ dhpc client si dhcp rela!
aent) care implementeaza toate aspectele protocolului 0A(- definit in 1>(;282,
Pasi de ur/at;
2, 0o<nload sursele ultimei versiuni I)( 0A(- de pe site%ul producatorului
""".isc.or/
)e ruleazaB <et %c $tt'+,,-t'.isc.or/,isc,d$c',d$c'-0.8.?.tar./:
;, @erificare interitate arhiva tar,z folosind hash%ul sau semnatura diitala (=ptional
dar foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva
)e ruleazaB tar %'zvf dhcp%8,0,4,tar,z
*, 1ularea scriptului confiure care verifica sistemul si anume daca acesta contine toate
componentele necesare compilarii si instalarii serverului 0A(-,
)e ruleazaB ,?confiure
5ota
Instalarea prin compilare a serverului 0A(- este atipica datorita faptului ca nu se pot
transmite parametri scriptului confiure si deci nu se poate instala serverul intr%un anumit
director sau compila cu anumite optiuni speciale,
+, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat, In urma
compilarii rezulta din fisierele sursa fisiere e'ecutabile,
)e ruleazaB ma&e
6, Instalare
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii in
directoarele corespunzatoare precum ?sbin?$ ?usr?bin etc, (omanda poate fi e'ecutata doar
de root,
)e ruleazaB ma&e install
. Con*i(urare ser1er
(a si in cazul celorlalte servere confiurarea serverului dhcp presupune editarea
catorva fisiere te't de confiurare,
,er1erul I,C DHCP *oloseste 2 *isiereB
2, In fisierul ?var?state?dhcp?dhcpd,leases se pastreaza informatii despre confiuratiile
inchiriate de7a clientilor$ leased time pentru fiecare etc
5ota
0upa instalarea serverului prin compilare acest fisier nu e'ista, #l trebuie creat manual
altfel serverul nu porneste,
)e ruleazaB touch ?var?state?dhcp?dhcpd,leases
;, >isierul de confiurare al serverului care este b! default ?etc?dhcpd,conf
#'emplu ?etc?dhcpd,conf
authoritativeW
T(diez) reprezinta un comentariu
ddns%update%st!le interimW Tinterim sau none, 0A(-0 face update la fisierul zona al
clientului de pe serverul 05)
Tinore client%updatesW
Tallo< client%updatesW Tvezi man dhcpd,conf
subnet 23;,26:,0,0 netmas& ;++,;++,;++,0 \ Tstabileste subnetul pentru care va furniza
servicii
rane 23;,26:,0,+0 23;,26:,0,60W Trane%ul de I- furnizat
rane 23;,26:,0,200 23;,26:,0,2;0W Tun al doilea rane
Tallo< un&no<n%clientsW
default%lease%time 600W Tlease time default daca clientul nu cere un anumit timp
ma'%lease%time 4;00W Tma' lease time
option routers 23;,26:,0,2W
option subnet%mas& ;++,;++,;++,0W
option domain%name%servers 238,;82,;86,;+$238,;82,;86,80W
option domain%name Ccr!stalmind,roCW
host pc2
\
hard<are ethernet 00B08B*4B>6BB0B**W
fi'ed%address 23;,26:,0,2;+W
option routers 23;,26:,0,20W Tprimeste 0efault "ate<a! diferit
]
]
Detalii *isier d.cpd.con*;
% fiecare linie se termina cu CWC (punct si virula)
% sinta'a este e'trem de sensibila$ orice caracter precum W (punct si virula) lipsa reprezinta
o eroare fatalaW
% semnul CTC (diez) inseamna un comentariuW
% subnet 23;,26:,0,0 netmas& ;++,;++,;++,0 % se stabileste subnetul din care serverul va
furniza I-%uri
% rane 23;,26:,0,+0 23;,26:,0,60W % se stabileste rane%ul din care serverul va funiza I-
uri, In e'emplul nostru primul client va primi 23;,26:,0,+0$ al doilea 23;,26:,0,+2 etc, -ot
e'ista mai multe directive rane, Atentie Q Ip%urile setate static pe alte hosturi trebuie
e'cluseW
% option routers 23;,26:,0,2W % stabileste 0efault "ate<a! oferit clientilorW
% option subnet%mas& ;++,;++,;++,0W % stabileste masca retelei oferite clientilor
% option domain%name Ccr!stalmind,roCW % stabileste un domeniu care va fi oferit clientilor$
acestia facand parte din elW
% daca se doreste furnizarea unei confiuratii in functie de MA(%ul clientului$ pentru
>I#(A1# astfel de client in fisierul de confiurare al serverului si anume dhcpd,conf
trebuie sa apara un container de tip host in care se specifica MA(%ul precum si confiuratia
oferita, 0aca nu se specifica un anumit parametru (e'emplu servere 05))$ clientul
respectiv va primi serverele 05) specificate in sectiunea lobalaW
% allo< un&no<n%clientsW % specifica daca serverul va oferi confiuratie clientilor al caror
MA( nu se aseste intr%un container de tip hostW
Pornire ser1er
1uleaza serverul in foreround cu trimiterea mesa7elor de debu la consola
dhcpd %d %f
=ptiuni dhcpdB
%cf file,conf Tspecificarea unui fisier de confiurare alternativ
%p port Tspecifica un alt port pe care sa asculte serverul, B! default foloseste portul .0-
64,
%t Ttesteaza fisierul de confiurare fara a porni serverul,
5ota
-ornirea serverului in modul 0ebu are loc doar dupa instalare sau in perioade de teste
pentru a observa modul de comunicatie al acestuia cu clientii, -e un server stabil$ serverul
0A(- trebuie sa porneaza automat la butare folosind fisierele de manaement al
serviciilor (?etc?inid,d?), In cazul compilarii$ fisierul care porneste serverul nu e'ista si
trebuie creat, -entru detalii citeste capitolul CManaementul serviciilorC din cursul CLinu'
Basic AdministrationC oferit de asemenea online,
Clientul DHCP pe Linux
-roramul se numeste dhclient si se aseste cel mai probabil in ?sbin, >oloseste fisierul
de confiurare ?etc?dhclient,conf
Utili0are;
Activeaza modul de confiurare al interfetei prin 0A(-
dhclient numeJinterfata
#'empluB ?sbin?dhclient eth0
1eturneaza serverului confiuratia primita
dhclient %r numeJinterfata
#'empluB dhclinet %r eth0
>isierul ?var?lib?dhcp?dhclient,leases este folosita de dhclient pentru a tine evidenta
confiuratiilor primite,
La pornire dupa ce citeste ?etc?dhclient,conf$ dhclient citeste ?var?lib?dhcp?dhclient,leases
5ota
5umele interfetei si anume eth0 poate sa difere de la caz la caz, Acesta se afla cu
comanda ifconfi,
Capitolul % - ,er1erul 35P
%.1 Protocolul 35P
>T- (>ile Transfer -rotocol) este un protocol de nivel aplicatie =)I care foloseste
T(- la nivelul transport si se foloseste pentru a transfera fisiere intre ; hosturi$ client si
server, -rotocolul >T- este definit in 1>(3+3,
)erver de >T- G calculator pe care ruleaza un proram numit server de >T- (Linu'B
-ro>T-$ -ure%>T-$ Dindo<sB Bullet-roof>T-$ (ure>T- etc)
(lient de >T- G calculator pe care este instalat un proram care se conecteaza la
serverul de >T- (Linu'B ftp$ /rusader Dindo<sB Total (ommander$ >T- (ommander
etc)
=rice sistem de operare (Dindo<s$ Linu'$ .ni'$ NB)0) include un client ftp in
linie de comanda, Acesta este comanda ftp, #'ista si se prefera a se folosi clienti de >T- in
modul rafic,
>T- este un protocol considerat comple' ca mod de operare si asta fiindca foloseste
mai multe canale de comunicare si doua moduri de operare complet diferite (modul pasiv si
modul activ),
>T- foloseste un canal de comunicare pentru control sau comenzi specifice
protocolului (portul ;2) si un canal pentru transferul datelor (portul ;0 pentru >T- active
sau un alt port pentru >T- pasive),
0eci orice cone'iune >T- presupune ; etapeB
a) conectarea la server folosind portul de control (;2)
b) conectarea folosind portul de date (in functie de modul de operare poate fi sau nu portul
;0)
Important
Intreaa comunicatie dintre client si server se realizeaza in cazul >T- in clar necriptat,
=rice dispozitiv intermediar sau host din LA5 care ruleaza un atac& en A1- )poofin
poate intercepta informatia schimbata intre client si server,
%.2 'oduri de operare
-rotocolul >T- include ;
moduri diferite de operareB activ si
pasiv,
35P acti1
(aracteristica enerala a acestui mod este ca in prima etapa clientul se conecteaza
la server la portul ;2 pentru a schimba comenzi folosind un port aleator mai mare ca 20;8$
iar apoi serverul devine activ si se conecteaza el la client pentru a schimba date cu acesta,
0eci in etapa ; se poate spune ca serverul a devenit client$ iar clientul server,
#tapeB
2, (lientul se conecteaza la server la portul destinatie ;2 (portul de comanda) folosind
portul sursa 5 (5 P 20;8), (lientul trimite serverului comanda -=1T 5F2 si incepe sa
asculte pe portul 5F2 pentru cone'iuni de date,
;, )erverul trimite A(/ la client pentru portul de comanda de la pasul anterior,
8, )erverul se conecteaza la client folosind ca port sursa portul ;0 (port date) iar ca port
destinatie 5F2 (portul de date al clientului) trimis anterior de client,
*, (lientul trimite A(/ serverului pentru pasul 8,
0in punctul de vedere al clientului cone'iunea serverului de la punctul 8 este
vazuta ca o cone'iune din e'terior si este de cele mai multe ori blocata de orice fire<all
(inclusiv fire<all standard din Dindo<s), (lientii care se afla in spatele unui 1outer si
folosesc 5AT nu pot folosi de multe ori modul activ fiindca cone'iunea serverului de la
pasul 8 nu poate trece de router catre client,
(oncluzieB Modul activ este e'trem de dezavanta7os pentru client$ dar este
avanta7os pentru server,
35P pasi1
1eprezinta o alternativa la modul activ si anume permite clientilor care se afla in
spatele unui 1outer si fac 5AT sa se conecteze la server, (lientii cu fire<all pot de
asemenea folosi modul pasiv, Aceasta este modalitatea folosita in ma7oritatea cazurilor,
(aracteristica enera a modului pasiv este ca atat pentru sesiunea de control cat si pentru
sesiunea de date clientul este cel care initializeaza cone'iunea, )erverul asculta pe portul
;2 pentru control dar nu mai e'ista portul ;0 pentru date,
9tape;
2, (lientul deschide ; porturiB 5 si 5F2 si se conecteaza la server folosind portul sursa 5
(5P20;8) si portul destinatie ;2, In loc sa trimita comanda -=1T ca in cazul >T- activ$
trimite comanda -A)@ prin care anunta serverul ca este preatit pentru modul pasiv,
;, )erverul deschide portul M ( M P 20;8) si%l trimite clientului pentru ca acesta sa se
conecteze la portul M folosind portul sursa 5F2 pentru a transfera date,
8, (lientul se conecteaza la portul destinatie M folosind portul sursa 5F2,
*, )erver trimite A(/ clientului,
(oncluzieB Modul pasiv este avanta7os pentru client$ dar este complet dezavanta7os
pentru server, Acesta trebuie sa deschida porturile mai mari ca 20;8 pentru a se conecta
clientul la acestea,
%. Co/pilare si instalare ser1er
(ele mai cunoscute si folosite servere de >T- pe Linu' sunt -ro>T-0 si -ure>T-,
In e'emplul acestui curs vom instala si confiura serverul -ro>T-0,
Instalarea prin compilare a -ro>T-0 se realizeaza in mod standard fara probleme
deosebite, #'emplu de mai 7os s%a realizat pe >edora (ore 3, In mod I0#5TI( se
compileaza si instaleaza pe orice distributie Linu',
Pasi de ur/at;
2, 0o<nload sursele ultimei versiuni -ro>T-0 de pe site%ul producatorului """.'ro-t'd.or/,
Acestea pot fi do<nloadate in orice director din sistem,
<et %c ftpB??ftp,proftpd,or?distrib?source?proftpd%2,8,2,tar,z
;, @erificare interitate arhiva tar,z folosind hash%ul sau semnatura diitala (=ptional dar
foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva )e ruleazaB tar %'zvf proftpd%2,8,2,tar,z
*, 1ularea scriptului confiure care verifica sistemul si anume daca acesta contine toate
componentele necesare compilarii si instalarii serverului -ro>T-0, 0orim instalarea in
directorul ?opt?proftpd astfel incat sa putem urmarii si studia toate componentele cu care
vine serverul, )e recomanda rularea scriptului confiure de catre un user neprivileiat, )e
ruleaza din directorul cu surseB ,?confiure %%prefi'G?opt?proftpd
5ota
>ara optiunea %%prefi'G?opt?profptd instalarea are loc in directoarele standard precum
?usr?bin$ ?usr?sbin$ ?etc, In acest caz ne va fi reu sa asim fisierele componente ale
serverului sau sa%l dezinstalam?sterem,
+, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat,
In urma compilarii rezulta din fisierele sursa fisiere e'ecutabile,
)e ruleazaB ma&e
6, Instalare
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii din
directorul cu surse in directorul dorit ( ?opt?proftpd), (omanda poate fi e'ecutata doar de
root,
)e ruleazaB ma&e install
%.% Con*i(urare /ini/ala ser1er
>isierul de confiurare al serverului -ro>T-0 este proftpd,conf Acesta este format
din directive si valorile acestora care stabilesc modul in care serverul functioneaza,
#'empluB
proftpd,conf
Tserverul asculta pe portul ;2 pentru cone'iuni de control -ort ;2
)e recomanda pornirea de la un CscheleteC de fisier de confiurare care se modifica
in functie de necesitati,
= astfel de mostra este ?opt?proftpd?proftpd,conf, Aceasta nu contine toate
directivele de confiurare ci doar pe cele mai importante,
Con*i(urarea /ini/ala a ser1erului Pro35PD presupune;
2, (rearea unui user si a unui rup sub care sa ruleze serverul,
>isierul default de confiurare cu care vine serverul si anume ?opt?proftpd?proftpd,conf in
cazul compilarii in directorul ?opt?proftpd specifica faptul ca acesta ruleaza ca user nobod!
si rup noroup, Acest user si rup sunt folositi in mod default de multe servere ceea ce
duce la probleme de securitate,
#'empluB In cazul in care e'ista un server Apache si un server -roftpd care ruleaza ca
nobod! si noroup$ iar serverul Apache este compromis$ crac&erul va avea acces total si la
serverul -roftpd fiindca ruleaza sub acelasi user,
Important
0in punct de vedere al securitatii sistemului este obliatoriu ca fiecare server sa ruleze sub
propriul user si roup$ iar acestea sa nu mai fie folosite in alt scop,
proftpd,conf
T )et the user and roup under <hich the server <ill run, .ser ftpuser "roup ftproup
;, )tabilirea modului de acces la sistemul de fisiere a unui utilizator odata loat,
Trebuie stabilit daca acesta este blocat (chrooted?7ailed) in propriul home director! sau se
poate CplimbaC in mod liber prin tot sistemul de fisiere,
0irectiva 0efault1oot 5.M#J0I1#(T=1 stabileste directorul in care un user odata loat
este plasat, -entru respectivul utilizator radacina sistemului de fisiere este
5.M#J0I1#(T=1, Acesta nu poate iesi din director,
proftpd,conf
0efault1oot Z
Important
0efault directiva 0efault1oot este comentata ceea ce inseamna ca un user conectat prin ftp
la server poate iesi din propriul home director! si se muta in orice director din sistemul de
fisiere,
8, Activare?dezactivare modul anon!mous
-rotocolul >T- face referire la un mod special si anume modul anon!mous, Acesta se
foloseste in momentul in care se doreste loarea userilor fara autentificare,
#'empluB do<nloadarea serverului -ro>T-0 s%a realizat prin >T-, (lientul de >T- s%a
conectat la serverul >T- pe care se aseau sursele loandu%se anonim (fara username sau
parola), 0e multe ori username%ul introdus este anon!mous iar parola o adresa de e%mail,
>isierul sample profptd,conf face referire la sfarsitul sau la modul anon!mous, 0aca se
doreste dezactivarea acestui mod (de recomandat daca nu este un server public) trebuie
comentata intreaa sectiune,
0etalii sectiune anon!mous din proftpd,conf
)pecifica directorul home al userilor anonimi, Acesta poate fi modificat$ dar atentie la
permisiunile pentru acel director,
_Anon!mous ?var?ftpP
)pecifica userul care se va loa anonim, Acesta este ftp sau anon!mous (directiva
.serAlias) .ser ftp "roup ftp T De <ant clients to be able to loin <ith Canon!mousC as
<ell as CftpC .serAlias anon!mous ftp
Limit the ma'imum number of anon!mous loins
Ma'(lients 20
%. Alte con*i(uratii
a) specificarea porturilor pasive pe care le va folosi serverul, 0efault acesta poate trimite
clientului care doreste folosirea modului pasiv orice port mai mare ca 20;8 pentru ca acesta
sa se conecteze la server la portul trimis, )e recomanda limitarea intervalului de porturi
pasive folosite,
-assive-orts *32+; 6++8*
b) modificare umas& si anume pentru stabilirea permisiunilor default cu care se creaza noile
fisiere si directoare,
.mas& 00;;
c) modificare umas& doar pentru un anumit director,
_0irector! Z?testP umas& 0066 0044 _?0irector!P
d) 0ezactivare loarii userului root, )e recomanda din considerente de securitate,
1ootLoin off
9xe/plu con*i(uratie co/pleta ser1er pro*tpd;
server asculta pe portul tcp?;2 pentru cone'iuni pentru sesiunea de control (default)W
serverul ruleaza sub userul ftpuser si ftproupW
fiecare user conectat si autentificat la server este C7ailedC sau izolat in propriul home
director!W
nr, ma'im de cone'iuni concurente este 20W
modul anon!mous este dezactivatW
autentificarea userilor are loc pe baza informatiilor din ?etc?pass<d si ?etc?shado<W
porturile pasive folosite de server sunt doar cele din intervalul *32+;%*324;W
loin%ul userului root nu este permisW
#'emplu proftpd,conf completB
)erver5ame C-ro>T-0 0efault InstallationC
)erverT!pe standalone
0efault)erver on
T -ort ;2 is the standard >T- port,
-ort ;2
T .mas& 0;; is a ood standard umas& to prevent ne< dirs and files
T from bein roup and <orld <ritable,
.mas& 0;;
T To prevent 0o) attac&s$ set the ma'imum number of child processes
T to 80, If !ou need to allo< more than 80 concurrent connections T at once$ simpl!
increase this value, 5ote that this =5LO <or&s
T in standalone mode$ in inetd mode !ou should use an inetd server
T that allo<s !ou to limit ma'imum number of processes per service
T (such as 'inetd),
Ma'Instances 20
T )et the user and roup under <hich the server <ill run,
.ser ftpuser
"roup ftproup
T To cause ever! >T- user to be C7ailedC (chrooted) into their home
T director!$ uncomment this line,
0efault1oot Z
T 5ormall!$ <e <ant files to be over<riteable,
Allo<=ver<rite on
T Bar use of )IT# (AM=0 b! default
_Limit )IT#J(AM=0P
0en!All
_?LimitP
T stabilirea umas& pentru directorul test din home director! al userului
T care se conecteaza pentru fisiere respectiv directoare
_0irector! Z?testP
umas& 0066 0044
_?0irector!P
T-orturile pe care le deschide serverul pentru cone'iuni pasive (default sunt porturile mai
mari ca 20;8)
-assive-orts *32+; *324;
TImportant Q >ara urmatoarele ; directive serverul ar putea incerca rezolvarea inversa a I-%
ului clientului
Tcare se conecteaza ceea ce duce la dela! foarte mare la conectare
.se1everse05) off
IdentLoo&ups off 1ootLoin off
T A basic anon!mous confiuration$ no upload directories, If !ou do not
T <ant anon!mous users$ simpl! delete this entire _Anon!mousP section,
T_Anon!mous ZftpP
T .ser ftp
T "roup ftp
T De <ant clients to be able to loin <ith Canon!mousC as <ell as CftpC
T .serAlias anon!mous ftp
T Limit the ma'imum number of anon!mous loins
T Ma'(lients 20
T De <ant S<elcome,msS displa!ed at loin$ and S,messaeS displa!ed
T in each ne<l! chdired director!,
T 0ispla!Loin <elcome,ms T 0ispla!(hdir ,messae
T Limit D1IT# ever!<here in the anon!mous chroot
T _Limit D1IT#P
T 0en!All
T _?LimitP
T_?Anon!mousP
%.) Con*i(urare a1ansata ser1er
%.).1'odalitati de autenti*icare
-ro>T-0 poate folosi + modalitati diferite de autentificare a userilor care se loheaza la
server,
Acestea sunt;
2) modJauthJuni'
#ste metoda default si se foloseste schema clasica de autentificare din .ni'?Linu', .serii
care se conecteaza la server sunt cei definiti in ? etc?pass<d$ rupurile sunt cele din
?etc?roup$ iar informatiile de autentificare sunt cele din ?etc?pass<d si ?etc?shado<
;) modJauthJfile
)e foloseste un alt fisier$ diferit de ?etc?pass<d sau ?etc?roup in care se asesc userii si
parolele acestora, Acestia se numeste si useri virtuali,
8) modJldap
)e folosesc informatii din L0A- 0irectories (Liht<eiht 0irector! Access -rotocol),
*) modJradius
)e foloseste un server 1A0I.) (1emote Authentication 0ial In .ser )ervice ) pentru
autentificare,
+) modJsMl
Informatiile despre utilizatori sunt pastrate intr%o baza de date M!)Ml,
).2 &irtual Users
Modalitatea default de autentificare la serverul >T- este cea folosind un username
definit in ?etc?pass<d si parola din ?etc?shado<,
-entru un server cu putine conturi aceasta varianta de autentificare este optima$ dar
in cazul unui server pe care se asesc sute de conturi ( #'empluB un server dedicat de
hostin) varianta clasica de autentificare nu mai este scalabila si nici optima,
-entru fiecare cont >T- dintre cele cateva sute$ ar trebui creat un cont de sistem
identificat prin username$ parola dar si un intre mediu de lucru (home director!$ variable
de mediu precum -ATA$ shell default etc), .serii respectiv sunt folositi doar pentru
conectarea la serverul >T-$ nu se doreste autentificarea acestora la server prin ssh$ loarea
acestora printr%o consola etc,
)olutia este folosirea de useri virtuali numiti si C>T- onl! usersC, Acestia nu e'ista
in sistem ci sunt folositi doar de >T-,
@ariantele cele mai folosite pe care le avem la dispozitie ar fiB modJsMl si anume
informatiile despre useri sa asesc intr%o baza de date m!sMl si modJauthJfile caz in care
informatiile despre useri se asesc in fisiere speciale altele decat ?etc?pass<d si
?etc?shado<,
(onfiurarea -ro>T-0 pentru useri virtuali folosind modJauthJfile
9tape;
2, #ditare proftpd,conf pentru folosire useri virtuali
Tspecificarea fisierului cu userii virtuali, Acesta nu e'ista si va trebui creat, -oate fi folosit
orice nume
Auth.ser>ile ?opt?proftpd?etc?passfile
Tspecificarea fisierului cu rupurile virtuale, Acesta nu e'ista si va trebui creat, -oate fi
folosit orice nume
Auth"roup>ile ?opt?proftpd?etc?rpfile
Tordinea in care proftpd incearca sa autentifice userii,
Auth=rder modJauthJfile,c modJsMl,c modJauthJuni',c
Tuserii care se autentifica la server nu sunt useri de sistem si deci nu necesita shell valid
1eMuire@alid)hell off
;, (rearea fisierelor in care se asesc userii si rupurile si crearea conturilor virtuale
(usernameFparolaFrup la care apartine user)
-entru a creare useri?rupuri virtuale se foloseste un script in perl numit ftpass<d, Acesta
se aseste in directorul contrib din directorul cu sursele serverului (in e'emplul nostru este
?home?dan?proftpd%2,8,2?contrib),
#'emplu de folosire ftpass<dB
a) (reare user virtual numit tom cu uid 2008 si fara shell valid
?home?dan?proftpd%2,8,2?contrib?ftpass<d %%pass<d %%fileG?opt?proftpd?etc?passfile R
nameGtom %%uidG2008 %%homeG?opt?proftpd?tom %%shellG?bin?false
b) (reare rup virtual numit proramatori cu id 2000
?home?dan?proftpd%2,8,2?contrib?ftpass<d %%roup %%nameGproramatori %%idG2000 R
memberGbob %%memberGtom %%file ?opt?proftpd?etc?rpfile
c) )chimbare parola user virtual,
?home?dan?proftpd%2,8,2?contrib?ftpass<d %%pass<d %%nameGbob %%chane%pass<ord R
fileG?opt?proftpd?etc?passfile
)e poate folosi orice I0 pentru userii virtuali$ doar ca este bine sa fie diferit (nu
obliatoriu) de I0%urile userilor din ?etc?pass<d pentru a pastra diferite nivele de securitate,
0aca avem acelasi .I0$ userii din ?etc?pass<d vor avea aceleasi drepturi,
Important
>isierul cu useri virtuali si anume cel definit de directiva Auth.ser>ile trebuie sa poata fi
citit doar de userul care ruleaza daemonul proftpd, 0efault fisierul nu e'ista dar este creat
la prima rulare a comenzii ftpass<d
8, )etare permisiuni useri virtuali
.serul virtual nu va avea acces la propriul home director! cel definit la crearea sa fiindca
sistemul verifica in ?etc?pass<d o<ner%ul$ iar userul virtual nu e'ista in ?etc?pass<d, -entru
aceasta se foloseste comanda cho<n care ia drept arument uid%ul userului virtual pentru a
schimba o<nerul directorului home al userului virtual, .I0%ul o<nerului unui director se
vizualizeaza cu comanda ls %n
5ota
-entru folosirea diferitelor moduri de autentificare precum modJsMl$ modJldap sau
modJradius$ serverul trebuie sa fi fost compilat cu suport pentru acestea,
Capitolul ) - B3, - Betwork 3ile ,7ste/
).1 Pre0entare (enerala
5>) (5et<or& >ile )!stem) reprezinta un protocol dezvoltat initial de )un
Micros!stems in 23:* care permite accesarea de resurse (file sharin) intre calculatoarele
dintr%o retea, #'ista mai multe versiuni$ ultima fiind * care a fost standardizata de I#T> in
1>( 8+80,
5>) ruleaza pe arhitectura client%server$ astfel serverul este hostul care ofera
resurse si anume unul sau mai multe directoare al caror continut poate fi accesat de pe alte
hosturi numite clienti, (lientii monteaza local directoarele shared de pe server, 5>) se
foloseste de 1-( (1emote -rocedure (all), 1-( reprezinta o modalitate prin care se pot
rula functii si metode lo<%level de catre un host$ remote prin retea pe un alt host,
#'emplu
-resupunem ca un host client monteaza directorul ?bac&up de pe un server 5>), -entru a
putea modifica$ stere sau crea fisiere in directorul ?bac&up (care se aseste pe un alt host)
clientul trebuie sa ruleze functii precum fread()$ f<rite()$ fopen() etc pe server unde se
asesc fisierele, 1-( realizeaza acest aspect,
).2 Con*i(urare
(onfiurarea 5>) presupuneB
1. Pe ser1er
a) 0aemonul nfsd trebuie sa ruleze,
b) -rocesul portmap sau rpcbind (in functie de distributie) trebuie sa ruleze, -entru a obtine
informatii despre rpcbind se ruleaza comandaB rpcinfo %p
c) >isierul ?etc?e'ports stabileste accesul la resurse, Acesta contine o lista de directoare ce
pot fi e'portate in retea precum si permisiunile cu care acestea pot fi montate local de catre
clienti,
>isierul ?etc?e'ports face referire la cate un director pe fiecare linie,
)tructura sa esteB dirJtoJe'port hostJallo<edJtoJmount(option2$option;$option8) unde
dirJtoJe'port este directorul care se doreste a fi e'portat$ hostJallo<edJtoJmount
reprezinta I-%ul hostului client care are permisiunea sa monteze directorul$ iar cele mai
folosite optiuni suntB ro$ r<$ rootJsMuash si noJrootJsMuash
0etaliiB
ro %P directorul se monteaza read?onl! pe clientW
r< %P directorul se monteaza read?<rite pe clientW
rootJsMuash %P userul root de pe client nu va avea drepturi de root in sistemul de fisiere
remoteW
noJrootJsMuash %P userul root pe client are drepturi de root si pe sistemul remote care se
monteaza localW
#'emplu ?etc?e'portsB
?home?shared 23;,26:,0,;(r<$noJrootJsMuash) ?bac&up 23;,26:,0,2(r<$noJrootJsMuash)
?home?pro7ects 23;,26:,0,0?;*(ro$rootJsMuash)
d) )e ruleaza comanda e'portfs %a care e'porta toate directoarele specificate in ?etc?e'ports,
2. Pe client
)e monteaza directorul remote astfelB mount %t nfs 23;,26:,0,2B?sharedJdir ?mnt$
unde 23;,26:,0,2 este I-%ul serverului 5>),
5ota
0aca se doreste montarea automata la butare pe client se modifica fisierul ?etc?fstab
adauand linia de mai sus,
Important
(omunicatia dintre client si server se realizeaza in cazul 5>) in clar, 5u se recomanda
montarea de directoare remote peste Internet folosind 5>) din motive de securitate Q
Capitolul 2 ,er1erul DB,
2.1 Protocolul DB,
2.1.1 ,patiul de nu/e DB,
DB, - Do/ain Ba/e ,7ste/ % reprezinta un protocol la nivelul aplicatie (la!er 4)
al modelului de referinta =)I care are drept scop principal translatarea numelor de domenii
in adrese loice sau I-, Acesta este definit de I#T> intr%o serie de 1>(%uri,
5ota
05) reprezinta un acronim care inseamna C0omain 5ame )!stemC si 5. C0omain 5ame
)erverC
-rotocolul 05) cuprinde un ansamblu de concepte si prorame printre careB
2, )patiul de nume 05)
;, )ervere 05)
8, (lienti 05) sau 05) 1esolver
)patiul de nume 05) reprezinta ansamblul de nume 05), Acest spatiu are o
structura arborescenta asemanatoare cu structura sistemului de fisiere din Linu', >iecare
nume de domeniu complet reprezinta o cale in acest arbore inversat numit spatiul de nume,
IA5A este oranizatia care se ocupa de alocarea si manaementul numelor de domenii,
I/portant
)patiul de nume 05) este unic in Internet asa cum un I- public este de asemenea unic, 5u
pot e'ista ; sau mai multe domenii identice,
In varful arborelui se aseste domeniul radacina (root), Acesta se reprezinta printr%
un punct (C,C), .rmeaza pe urmatorul nivel domenii enerice numite TL0 (Top Level
0omains),
#'empluB com$ net$ or$ biz$ ro$ de $ fr$ eu$ b etc,
>iecare nod al arborelui are o eticheta (label) % cu e'ceptia root % formata din
ma'imum 68 de caractere fara punct (litere$ cifre si semnul minus C%C), .nderscore nu este
permis, >iecare nod poate fi la randul sau radacina pentru un subarbore al arborelui eneral,
De*initie
.n nume complet se numeste >`05 (>ull! `ualified 0omain 5ame) si se
specifica de la frunza pana la radacina C,C (punct) care trebuie specificata,
#'empluB <<<,invata%online,ro, sau mail,!ahoo,com, sau calendar,oole,com,
2.1.2 Dele(are
>iecare domeniu se aseste in administrarea unei oranizatii,
#'empluB 0omeniul !ahoo,com se aseste sub administrarea lui Oahoo$ domeniul invata
online,ro se aseste sub administrarea oranizatiei (r!stal Mind Academ! etc,
= oranizatie cumpara sau inchiriaza un domeniu la fel ca pe o adresa I- publica, =
oranizatie care administreaza un domeniu poate sa%l imparta in subdomenii si sa delee
administrarea acestora catre alte oranizatii, 0elearea de autoritate presupune ca pentru
noul domeniu toate informatiile despre translatarea acestuia in adrese I- se afla in ri7a
oranizatiei catre care se face deleare,
Impartirea unui domeniu in subdomenii presupune crearea de noduri sub nodul
principal, Aceasta impartire se aseste la libera dorinta a oranizatiei care detine domeniul,
#'empluB 0omeniul test,com poate fi impartit in subdomenii in urmtorul modB
<<<,test,com$ loin,test,com$ mail,test,com$ linu',test,com etc
5u este obliatoriu ca intre domeniul sa fie deleat ci doar subdomenii din acesta,
#'emplu
)ubdomeniul cursuri,cr!stalmind,ro se poate asi in administrarea unei companii$
e'amene,cr!stalmind,ro se poate asi in administrarea unei alte companii iar
cr!stalmind,ro poate fi sub autoritatea unei alte oranizatii, (ompania care detine
cr!talmind,ro a deleat autoritatea catre celelalte pentru subdomeniile respective,
Cine delea(a autoritatea pentru un do/eniu@ al cui este do/eniulJ
0omeniul din varful arborelui 05) si anume root reprezentat prin punct C,C
apartine lui IA5A, Aceasta a deleat autoritatea catre domeniile TL0 ( ro$ de$ u&$ com$ net$
biz etc) catre alte oranizatii,
#'empluB 0omeniul ro se afla sub autoritatea R@#LD$ domeniul de se afla sub autoritatea
0#5I($ domeniul eu se afla sub autoritatea 5I(#. etc,
>aptul ca domeniul ro se afla sub autoritatea 1=TL0 presupune ca doar 1=TL0
poate sa creeze subdomenii ro si sa delee autoritatea, In momentul in care dorim sa
cumparam un domeniu ro precum invata%linu',ro trebuie sa facem cererea la 1=TL0 si sa
indicam numele si I-%ul serverului care va fi autoritativ pentru noul domeniu, Acest server
poate fi orice calculator conectat la internet care ruleaza un server 05), Acesta va face
translatiile in I- si din I- pentru respectivul domeniu,
(a proprietari ai domeniului invata%linu',ro putem crea subdomenii in numar
nelimitat precum <<<,invata%linu',ro sau loin,invata%linu',ro$ iar o parte din acestea pot
fi date in administrarea unei alte companii (deleare de autoritate),
5ota
0omeniile ro se inchiriaza pe timp nelimitat de la 1=TL$ iar pretul unui domeniu este de
circa +0X, Marea ma7oritate a restului de domenii precum com$ biz$ net$ or$ eu etc se
inchiriaza pe o perioada de un an$ iar pretul unui domeniu este de circa 20X,
2.1. ,er1ere DB,
-rin procesul de deleare un server 05) este responsabil doar cu o parte din spatiul
de nume si nu cu intre domeniul, Astfel un domeniu poate fi imprastiat pe mai multe
servere,
= zona 05) este acea parte din spatiul de nume 05) care se aseste pe un anumit
server, = zona poate cuprinde un domeniu intre sau doar o parte din acesta$ restul
subdomeniilor aflandu%se pe alte servere in alte zone,
>isierul zona este acela care pastreaza informatiile referitoare la zona aflata in
administrarea serverului,
)erverul care stocheaza fisierul zona se numeste autoritativ pentru acea zona, .n
server poate fi autoritativ pentru o zona sau mai multe zone,
)erverele 05) se impart in ; cateoriiB
1. Pri/ar7 'aster Ba/e ,er1er
(iteste informatiile referitoare la zona dintr%un fisier aflat pe hard dis&%ul sau, #ste
acela declarat in resursa )=A, Modificarile referitoare la o zona se pot face doar pe
primar! master,
2. ,econdar7 /aster na/e ser1er sau sla1
Isi ia informatia referitoare la zona automat de la un alt server numit masterul sau,
Acesta poate fi primar! master sau un alt server secondar! master,
Informatia referitoare la zona nu se poate modifica pe secondar! master, In
momentul in care porneste$ secondar! master contacteaza primar! masterul sau pentru a%si
copia fisierului zona, Aceasta operatiune se numeste Czone transferC,
.lterior serverul slave face bac&up la fisierul zona pe propriul A00$ iar la
urmatorul restart incarca intai fisierul local si apoi contacteaza masterul sau pentru a vedea
daca informatia mai este actuala, Atat primar! master cat si secondar! master sunt
autoritativi pentru acea zona,
5otiunile de -rimar! Master si )econdar! Master (slave) sunt relative, .n server
poate fi primar! master pentru o zona si secondar! master pentru alte zone,
Be(ati1e cac.in(
In momentul in care un alt server 05) trimite serverului nostru o informatie despre
un domeniu ine'istent$ serverul face cache si la acea informatie, .rmatoarele cereri pentru
domeniu vor fi raspunse din cache,
Clientul DB,
#ste reprezentat printr%un modul al sistemului de operare numit C05) resolverC,
1ezolverul 05) primeste din partea aplicatiei (firefo'$ thunderbird etc) sarcina de a
transforma numele domeniului intr%o adresa loica sau I-, Acesta interoheaza serverul
05) confiurat in sistem,
)erverul 05) va raspunde cu informatia ceruta sau cu o eroare, 05) resolver
dispune de un cache propriu local in care salveaza raspunsurile de la cererile facute, In
Dindo<s cache%ul local poate fi vizualizat cu comanda ipconfi ?displa!dns si sters cu
comanda ipconfi ?flushdns
2.1.% DB, Kueries
.n client 05) poate trimite catre server ; cateorii de Muer!B
1. Kuer7 iterati1
(lientul trimite un Muer! serverului iar acesta trebuie sa raspunda IM#0IAT fie din
fisierul zona (daca este autoritativ) fie din cache%ul sau (daca nu este autoritativ) dar are
raspunsul, )erverul trebuie sa dea cel mai bun raspuns pe care il stie chiar daca acesta nu
este raspunsul final,
0aca informatia ceruta nu ii este cunoscuta serverului 05)$ acesta raspunde cu un
CreferalC adica o lista de servere 05) care ar putea furniza raspunsul,
#'emplu
0aca cererea clientului incearca sa translateze numele <<<,cr!stalmind,ro in I-$ serverul
05) ar putea raspunde cu o serie de servere autoritative pentru domeniul ro, In acest caz
cade in sarcina clientului sa contacteze serverele respective pentru a afla raspunsul,
'od *unctionare =uer7 interati1.
-resupunem ca 05) resolverul doreste translatarea numelui de domeniu """.in9ata
online,ro in I-,
#tapeB
2, (lientul trimite Muer! iterativ la serverul 05) default (cel confiurat in ?etc?resolv,conf),
;, 0aca serverul 05) este autoritativ (are in fisierul zona de pe propriul hard dis&
informatia) raspunde cu valoarea adresei I-, 0aca nu este autoritativ incearca sa caute in
cache, >iecare server mentine un cache cu ultimele cereri facute de clienti$ astfel incat in
momentul in care un nou client face o cerere daca aceasta a mai fost facuta de un alt client
in trecut$ serverul va raspunde din cache, 0aca serverul nu este autoritativ si nici nu are
raspunsul in cache trece la pasul 8,
8, )erverul 05) trimite Muer! iterativ in care doreste aflarea ip%ului pentru domeniul
<<<,invata%online,ro la unul dintre serverele root (cele autoritative pentru domeniul C,C
(punct))
5ota
=rice server 05) cunoaste default fara nicio confiuratie numele si I-%urile serverelor
autoritative root, Acesta sunt in nr, de 28 distribuite eorafic in mod uniform in toata
lumea,
*, )erverul root va raspunde cu un referal si anume numele si ip%ul serverului autoritativ
pentru domeniul ro, )erverul root cunoaste informatia fiindca el a facut delearea de
autoritate pentru domeniul ro (domeniul ro se afla sub el si este un subdomeniu),
Important
.n server cunoaste numele si ip%urile tuturor serverelor pentru domeniile imediat de sub
domeniul pentru care este autoritativ,
+, )erverul nostru trimite acelasi Muer! iterativ catre serverul autoritativ pentru domeniul ro
aflat la pasul *, )erverul autoritativ pentru domeniul ro raspunde cu un referal care indica
numele si ip%ul serverului autoritativ pentru domeniul invata%online,ro, Acesta cunoaste
informatia fiinca el a facut delearea de autoritate (domeniul invata%online,ro este un
subdomeniu al domeniului ro)
6, )erverul nostru trimite Muer! iterativ catre serverul autoritativ al domeniului invata
online,ro, Acesta din urma fiind autoritativ raspunde cu ip%ul domeniului """.in9ata online,ro
Important
In eneral un server este autoritativ (are informatia pe propriul hard dis&) pentru doar
cateva domenii$ dar poate raspunde la Muer! pentru orice domeniu din Internet folosind
Muer! iterative din aproape in aproape,
2. Kuer7 recursi1
(lientul trimite un Muer! serverului$ iar acesta trebuie sa furnizeze valoarea finala
ceruta sau un mesa7 de eroare, )erverul este acela care trebuie sa contacteze alte servere
05) in cazul in care nu cunoaste raspunsul la intrebare, Aceasta modalitate este cea mai
des intalnita, In mod implicit orice client dns trimite la server Muer! recursive (doreste
raspunsul final nu raspunsul intermediar adica un referal % un alt server pe care sa%l
intrebe), Astfel ramane in sarcina serverului sa afle prin cereri iterative valoarea ceruta de
client,
5ota
.n for<arder este un server 05) catre care alte servere 05) trimit Muer! recursive pentru
a evita parcurerea arborelui de nume de sus in 7os pentru aflarea raspunsului, >or<arderul
este acela care trebuie sa afla valoarea ceruta prin cereri iterative si sa o transmita
serverului initial, In eneral >or<arderul este un server mai puternic$ eventual cel furnizat
de I)-,
2.1.) !e0olutii DB,
-rotocolul 05) defineste ; tipuri de rezolutii sau translatii,
1. !e0olutia directa
-resupune translatarea unui nume de domeniu in I-, )e foloseste 11 de tip A,
5ota
#'emplu de Muer! trimis de client la server esteB <<<,test,com A
2. !e0olutia in1ersa
-resupune transformarea adreselor I- in nume de domeniu, 1ezolutia directa si
inversa sunt doua concepte diferite, (u a7utorul protocolului 05) 5. se realizeaza
echivalente intre domenii si I- ci doar corespondente intr%un sinur sens, Astfel nu orice
nume de domeniu care se rezolva intr%un I- se poate rezolva si invers adica I-%ul sa rezolve
sau sa se translateze in domeniu,
-entru rezolutia inversa se foloseste un domeniu special si anume in%addr,arpa,
Acesta are ca subdomenii (noduri) octetii corespunzatori adresei I- scrisi de la stana la
dreapta,
5odul in%addr,arpa, poate avea ;++ subdomenii$ iar fiecare nod mai departe poate
avea ;+6 subdomenii, 5umerele de mai sus sunt apro'imative fiindca e'ista I-%uri
rezervate, -entru rezolutia inversa se solicita serverului un 1esource 1ecord (11) de tip%ul
-T1,
5ota
#'emplu de Muer! pentru rezolutia inversa trimis de client la server esteB 232,24,2,2 -T1
2.1.2 !! >!esource !ecords6
)erverul 05) foloseste o baza de date in care pastreaza informatiile pe care le va
furniza clientilor pentru un anumit domeniu pentru care este autoritativ, Tipurile de
informatii pe care le pastreaza un server 05) autoritativ pentru un domeniu in fisierul zona
al acelui domeniu se numesc 1esource 1ecords (11),
5ipuri de !!.
,$A
)tart of Authorit! % declara serverul autoritativ pentru acea zona, In fiecare
fisier zona trebuie sa e'iste un 11 de tip )=A, -oate fi unul sinur pentru o
zona, #ste obliatoriu sa se aseasca in fiecare fisier zona,
B,
5ame server % declara numele serverului autoritativ pentru acel domeniu, #ste
obliatoriu sa se aseasca in fiecare fisier zona,
A I-v* Address % 0eclara o corespondenta intre domeniu si I- (rezolutie directa)
P5!
-ointer % declara o echivalanta intre I- si domeniu (rezolutie inversa), Acest
11 este optional
CBA'9
(anonical 5ame % declara un alias al unei resurse, .n alias reprezinta un alt
nume pentru acelasi lucru, Acest 11 este optional
'L
Mail #'chaner % declara un server de e%mail pentru acea zona, )e foloseste
impreuna cu o prioritate (preferinta ) care poate fi intre 0 si 6++8+, (u cat nr,
este mai mic cu atat serverul este de preferat, )e pot seta astfel servere de
Bac&up, Acest 11 este optional,
2.2 ,er1erul #IBD
2.2.1 Co/pilare si instalare
Instalarea prin compilare a BI50%ului se realizeaza in mod standard fara probleme
deosebite, #'emplu de mai 7os s%a realizat pe >edora (ore 3, In mod I0#5TI( se
compileaza si instaleaza pe orice distributie Linu',
Pasi de ur/at;
2, 0o<nload sursele ultimei versiuni BI50 de pe site%ul producatorului """.isc.or/, Acestea
pot fi do<nloadate in orice director din sistem, )e ruleazaB <et $tt'+,,-t'.isc.or/,isc,bind6,6.>.8-P7,bind-
6.>.8-P7.tar./:
;, @erificare interitate arhiva tar,z folosind hash%ul sau semnatura diitala (=ptional dar
foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva
)e ruleazaB tar %'zvf bind%3,+,0%-2,tar,z
*, 1ularea scriptului confiure verifica sistemul si anume daca acesta contine toate
componentele necesare compilarii si instalarii serverului 05), 0orim instalarea in
directorul ?opt?bind astfel incat sa putem urmari si studia toate componentele cu care vine
BI50, )e recomanda rularea scriptului confiure de catre un user neprivileiat,)e ruleazaB
,?confiure %%prefi'G?opt?bind
5ota
>ara optiunea %%prefi'G?opt?bind instalarea are loc in directoarele standard precum ?usr?bin$
?usr?sbin$ ?etc, In acest caz ne va fi reu sa asim fisierele componente ale serverului sau
sa%l dezinstalam?sterem,
+, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat,
In urma compilarii rezulta din fisierele sursa fisiere e'ecutabile,
)e ruleazaB ma&e
6, Instalare
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii din
directorul cu surse in directorul dorit ( ?opt?bind), (omanda poate fi e'ecutata doar de root,
)e ruleazaB ma&e install
2. Con*i(urare #IBD
2..1 Aspecte (enerale
In urma compilarii si instalarii serverului 05) in directorul ?opt?bind sunt formate
mai multe subdirectoare care contin fisierele necesare functionarii serverului 05) BI50,
0intre cele mai importante enumeramB
?opt?bind?bin % contine utilitare pentru testarea functionalitatii serverului precum di$ host$
nsloo&up nsupdate
?opt?bind?include % contine headere care contin constante si alte date necesare
?opt?bind?lib % contine librarii necesare serverului
?opt?bind?man % contine man pae%uri pentru utilitarele cu care a venit pachetul BI50
?opt?bind?sbin % contine daemonul dns reprezentat prin fisierul named precum si alte
utilitare dintre care cele mai importanteB
rndc % utilitar de control al serverului (start$ restart$ stop etc)
rndc%confen % utilitar de confiurare al modului de comunicare intre rndc si server
named%chec&conf % utilitar de validare a fisierului de confiurare named,conf
named%chec&zone % utilitar de validare a fisierelor zona
Con*i(urarea ser1erului DB, #IBD pentru un do/eniu autoritati1 presupune;
2, #ditarea fisierului lobal de confiurare numit named,conf care se aseste in
?opt?bind?etc, In acest fisier se definesc aspecte care tin de functionarea enerala a
serverului precum si referire la zonele?domeniile pentru care serverul este autoritativ
5ota
In cazul in care instalam serverul dintr%un pachet binar de7a compilat precum rpm sau deb
sau daca il compilam fara optiunea %%prefi' a scriptului confiure$ fisierul lobal de
confiurare named,conf se va asi cel mai probabil in ?etc
;, (rearea si editarea fisierelor zona pentru domeniile pentru care serverul este autoritativ,
#'ista un fisier zona pentru fiecare domeniu autoritativ
8, Alte confiurari specifice cum ar fi controlul lourilor$ controlul accesului etc,
2..2 'aster pentru do/eniu autoritati1
In e'emplul nostru ne propunem confiurarea serverului ca autoritativ pentru
domeniul invata%linu',ro,
(onfiurea serverului BI50 ca master pentru un domeniu autoritativ presupuneB
1. 9ditarea *isierului (lo+al de con*i(urare na/ed.con*
0etalii named,confB
% fiecare linie se termina cu CWC (punct si virula)
% sinta'a este e'trem de sensibila$ orice caracter precum W (punct si virula) lipsa reprezinta
o eroare fatalaW
% fisierul contine ; sectiuni$ sectiunea lobala care se refera la modul de functionare al
intreului server si care se defineste in containerul options si sectiunea zonelor pentru care
serverul este autoritativW
% directiva director! din options defineste un director in care serverul va cauta fisierele la
care ne referim in continuare folosind calea relativaW #'empluB daca ne referim la fisierul
zoneInvata%linu',ro$ serverul il va cauta in ?opt?bind?etcW
% pentru fiecare zona pentru care serverul este autoritativ trebuie sa specificam numele
zonei$ faptul ca serverul este master sau slave precum si numele fisierului zona (in
e'emplul nostru zoneInvata%linu',ro), 5umele fisierului poate fi ales fara vreo restrictieW
% ultima linie se refera la o cheie folosita pentru comunicatia dintre rndc si named, -entru a
enera cheia se foloseste comanda ?opt?bind?sbin?rndc%confen %aW
#'emplu named,conf minimal
options\
director! C?opt?bind?etcCW
]W
zone Cinvata%linu',roC
\
t!pe masterW file CzoneInvata%linu',roCW
]W
include C?opt?bind?etc?rndc,&e!CW
2. Crearea si editarea *isierului 0ona pentru respecti1ul do/eniu
0etalii fisier zona pentru domeniu invata%linu',roB
% fisierul zona este format din linii care continB
numeJdomeniu tipJ11 valoareJ11
#'empluB
ns2,invata%linu',ro, A 23;,26:,0,2
<<< A 23;,26:,0,2
% in intre fisierul zona$ numele de domenii trebuie sa fie >`05 si sa se termine cu punct
(domeniu root)
#'empluB
loin,invata%linu',ro, A 23;,26:,0,2
In momentul in care un domeniu nu se termina cu punct$ acesta este considerat un
subdomeniu al domeniului pentru care serverul este autoritativ (se adaua ca sufi' intre
domeniul)
#'empluB
<<< A 23;,26:,0,2
este echivalent cu
<<<,invata%linu',ro, A 23;,26:,0,2
% V este un caracter special si reprezinta >`05, In cazul nostru V se inlocuieste cu invata%
linu',ro,
% in fisierul zona conteaza indentarea
#'empluB
V )=A ns2,invata%linu',ro, admin,invata%linu',ro, (
8
8h
+m
8<
2h )
5) ns2,invata%linu',ro,
M6 20 mail,invata%linu',ro,
>iindca pe linia care contine 11 5) este liber pe prima pozitie (pozitie rezervata
numelui de domeniu)$ se preia automat numele de domeniu de deasupra adica V care
reprezinta invata%linu',ro,
In e'emplu nostru 5) ns2,invata%linu',ro, este echivalent cu invata%linu',ro, 5)
ns2,invata%linu',ro, #chivalent si pentru 11%ul M6, 5r, 20 de pe linia care defineste M6
reprezinta prioritatea serverului de e%mail, In cazul in care se definesc mai multe servere de
e%mail pentru domeniu in scop de bac&up cel cu prioritate minima va fi folosit,
AtentieB valoarea resursei M6 nu poate fi definita ca (5AM#, Acesteia trebuie sa i
se ataseze o resursa de tip A, In tutorialul video in mod intentionat a fost definit domeniul
mail,invata%linu',ro, ca (5AM# (alias) al lui <<< rezultand astfel o eroare,
#'emplu fisier zona pentru domeniul invata%linu',ro, >isierul se numeste zoneInvata
linu',ro
XTTL 8hW
V )=A ns2,invata%linu',ro, admin,invata%linu',ro, (
8 Wserial
8h Wrefresh in 8 hours
+m Wretr! in + minutes
8< We'pire in 8 <ee&s
2h Wmin in 2 hour )
5) ns2,invata%linu',ro,
M6 20 mail,invata%linu',ro,
ns2,invata%linu',ro, A 23;,26:,0,26
invata%linu',ro, A 23;,26:,0,26
mail A 23;,26:,0,2
<<< (5AM# mail
pc2 A 23;,26:,0,22
pc; A 23;,26:,0,2;
(ei + timpi au urmatoarea semnificatieB
serial G orice nr, intre 0 zi *;3*364;3+, Trebuie modificat de fiecare data cand se modifica
fisierul zona
re*res. G timpul dupa care serverele slave vor incerca sa reciteasca fisierul zona de pe
master
retr7 G timpul dupa care serverele slave vor incerca sa faca retr! la citirea zonei de pe
master daca are loc o eroare
expire G timpul dupa care serverul slave nu mai este autoritativ pentru o zona, Are efect in
cazul in care nu poate face zone%tranfer, 5u va mai raspunde la Muer! pentru acea zona
/in G perioanda de timp in care neative response sunt pastrate in cache, In aceasta
perioada slave%ul raspunde 560=MAI5, 0upa ce perioada e'pira incerca din nou
interoarea masterului,
2.. !e0olutia in1ersa
1ezolutia inversa presupune translatarea de catre serverul 05) a I-%urilor in nume
de domenii, 1ezolutia inversa nu este obliatorie$ dar se recomanda in anumite cazuri,
#'empluB 0aca e'ista un server de email
(onfiurarea serverului pentru rezolutie inversa pentru domeniu autoritativ presupuneB
2, 0efinirea unei noi zone in named,conf si anume zona pentru rezolutia inversa In
named,conf se adauaB
zone C0,26:,23;,in%addr,arpaC\
t!pe masterW
file Czone23;,26:,0,0CW ]W
;, (rearea si editarea unui fisier zona pentru rezolutia inversa
0etaliiB
% ca si in cazul fisierului zona pentru rezolutia directa sunt obliatorii 11%urile )=A si 5),
In plus apare 11%ul -T1 folosit special pentru translatia ip%ului in nume de domeniuW
>isier zona pentru rezolutia inversa, Acesta este zone23;,26:,0,0B
V )=A ns2,invata%linu',ro, root,invata%linu',ro (
2
2h
;h
8h
2h )
5) ns2,invata%linu',ro,
2 -T1 """.in9ata-linu;.ro,
2 -T1 mail,invata%linu',ro,
22 -T1 pc2,invata%linu',ro,
2; -T1 pc;,invata%linu',ro,
0etaliiB
randulB 2 -T1 <<<,invata%linu',ro, este echivalent cu 2,0,26:,23;,in%addr,arpa -T1
<<<,invata%linu',ro$ fiindca numele domeniului si anume 2 nu este >`05$ caz in care i se
adaua ca sufi' zona pentru care este serverul autoritativ si anume 0,26:,23;,in addr,arpa
<<<,invata%linu',ro se va translata in 23;,26:,0,2$ iar pc;,invata%linu',ro se va translata in
23;,26:,0,2;
2..% ,er1er ,la1e
(onfiurarea unui server 05) slave autoritativ pentru un domeniu presupuneB
% editarea fisierului lobal de confiurare named,conf al acestuiaW
% editarea fisierului lobal de confiurare al masterului astfel sa permita conectarea
serverului slave pentru copierea fisierului zona pentru domeniu (zone transfer)W
#'emplu named,conf pentru slaveB
options \
director! C?opt?bind?etcCW ]W
zone Cinvata%linu',roC \
t!pe slaveW
file CzoneInvata%linu',roCW
masters \ 23;,26:,0,28W ]W
]W
23;,26:,0,28 reprezinta I-%ul serverului Master,
In fisierul named,conf al masterului in cadrul containerului options trebuie adauatB
allo<%transfer \ 23;,26:,0,2+W ]W
)erverul master permite serverului slave cu I-%ul 23;,26:,0,2+ sa se conecteze pentru zone
trasfer,
Astfel named,conf al serverului master devineB
options
\ director! C?opt?bind?etcCW
allo<%transfer \ 23;,26:,0,2+W ]W
]W
zone Cinvata%linu',roC \
t!pe masterW
file CzoneInvata%linu',roCW
]W
include C?opt?bind?etc?rndc,&e!CW
5ota
>isierul zona pentru slave nu trebuie creat?editat de catre admin, Acesta este copiat
automat de pe master in momentul in care slave%ul face zone transfer, )lave%ul are o copier
read%onl! a fisierului zona,
=rice modificare a fisierului zona are loc pe master si trebuie sa fie insotita de
incrementarea numarului serial pentru zona respectiva,
)lave%ul face zone transfer doar daca fisierul zona de pe master are numarul serial mai
mare decat copia locala de pe slave,
Important
Acelasi server poate sa fie master pentru un domeniu sau mai multe si slave pentru alte
domenii,
2..) Dele(are
CerintaB se doreste delearea autoritatii pentru subdomeniul servers,invata%linu',ro unui
alt server,
I/ple/entareB
% in fisierul zona al serverului autoritativ pentru domeniul invata%linu',ro se adaua un 11
de tip 5) care indica numele serverului catre care se deleaa autoritatea ( #'empluB
ns2,servers,invata%linu',ro)
% in acelasi fisier zona se adaua un 11 de tip A pentru numele serverului catre care se face
delearea si anume ns2,servers,invata%linu',ro
In fisierul zona al serverului autoritativ pentru domeniul invata%linu',ro adauamB
servers,invata%linu',ro, 5) ns2,servers,invata%linu',ro,
ns2,servers,invata%linu',ro, A 23;,26:,0,222
Important
)erverul catre care s%a realizat delearea trebuie confiurat pentru domeniul servers,invata%
linu',ro in acelasi mod in care serverul principal a fost confiurat pentru domeniul invata%
linu',ro
5ota
-resupunem cumpararea unui domeniu ro si anume cr!stalmind,ro
)erverul autoritativ pentru domeniul ro trebuie sa delee autoritatea catre noul subdomeniu
cr!stalmind,ro
In formularul de la <<<,rotld,ro ne sunt cerute urmatoarele informariiB numele serverului
autoritativ pentru domeniul cr!stalmind,ro si I-%ul acestuia, -resupunand ca furnizam ca
informatie ns2,cr!stalmind,ro si ::,0,0,2$ administratorul domeniului ro adaua in fisierul
zona al acestuiaB
cr!stalmind,ro, 5) ns2,cr!stalmind,ro,
ns2,cr!stalmind,ro, A ::,0,0,2
2..2 Lo((in(
)erverul BI50 este e'trem de comple' de multe ori fiind foarte complicat sa facem
troubleshootin, .n aspect foarte important in vederea procesului de troubleshootin
reprezinta loarea?salvarea informatiilor despre modul in care acesta functioneaza,
5ota
.nii administratori de sistem loheaza toate cererile clientilor catre serverul 05) ceea ce
poate fi interpretat ca o incalcare a dreptului la intimitate, )alvand toate Muer!%urile catre
server avem informatii despre fiecare <eb site vizitat$ frecventa cu care un user intra pe un
site$ domeniile unde userul are cont de email$ nr, de accesari al acestuia etc
-entru loarea activitatii BI50 trebuieB
% modificare named,confW
% modificare fisier confiurarea s!slo (serverul responsabil cu procesul de loare din
intre sistemul)W
In named,conf se adauaB
loin
\ channel m!Js!slo
\ s!slo local2W
severit! infoW ]W
cateor! Mueries \ m!Js!sloW ]W
cateor! default \ m!Js!sloW ]W
]W
In ?etc?s!slo,conf se adauaB
local2,info ?var?lo?bind
5ota
-entru ca modificarile sa fie preluate$ ambele servere ()!slod si Bind) trebuie restartate
)!slo este prezentat in capitolul CManaementul LourilorC,
2.% DB, 5rou+les.ootin(
2.%.1 nslookup
nsloo&up este un utilitar care are drept scop interoarea manuala a serverelor 05),
)e foloseste in scop de troubleshootin si pentru aflarea de informatii despre diferite
domenii
#'emplu
)erverul 05) default este cel confiurat in ?etc?resolv,conf
2, Interoheaza serverul 05) default cerand valoarea resursei de tip A pentru domeniu
nsloo&up <<<,cr!stalmind,ro
;, Interoheaza serverul default folosind rezolutia inversa (translatarea I-%ului in domeniu)
nsloo&up 23;,26:,0,2
8, Interoheaza un alt server 05) si anume cel de la I-%ul ::,0,0,2
nsloo&up cr!stalmind,ro ::,0,0,2
*, Interoheaza un alt server (cel de la ::,0,0,2) folosind rezolutia inversa (translatarea I-%
ului 6*,;88,264,33) nsloo&up 6*,;88,264,33 ::,0,0,2
+, Interoheaza serverul 05) de la 238,;+,22;,;*+ pentru valoarea resursei de tip M6
nsloo&up %t!peGM6 mail,cr!stalmind,ro 238,;+,22;,;*6
6, Modul interactiv al lui nsloo&up
nsloo&up %all
P """.domeniu.com
Pmail P23;,26:,0,2
Pserver 05)J)#1@#1JI- ??urmatoarele interoari vor fi facute catre acest server
P set t!peGsoa
P ro
Pset t!peGm'
Pcr!stalmind,ro
Important
(omanda nsloo&up e'ista si pe Dindo<s$ iar sinta'a este identica,
2.%.2 di(
di este un utilitar comple' cu foarte multe optiuni folosit pentru interoarea
manuala a unui server 05),
#'emplu
2, Interoarea serverului 05) care ruleaza pe localhost (translatarea domeniului
<<<,cma,ro in I-)
di Vlocalhost <<<,cma,ro
;, Interoarea serverului 05) care ruleaza la ::,0,0,2 (translatarea domeniului
<<<,cma,ro in I-)
di V::,0,0,2 <<<,cma,ro 8, Interoarea de tip rezolutie inversa a serverului care ruleaza
pe localhost (translatarea I-%ului 23;,264,8*,; in domeniu)
i Vlocalhost %' 23;,264,8*,;
*, Interoarea serverului care ruleaza la ::,0,0,2 despre resursa de tip M6 a domeniului
cr!stalmind,ro
di V::,0,0,2 %t m' cr!stalmind,ro
Di( output
>lasB
Mr G Muer! response
aa G authoritative ans<er
rd G recursion desired
ra G recursion available
ad G authenticated data (05))#()
05) statusB
5=#11 G 5o error
>=1M#11 G >ormat error, serverul 05) nu a putut interpreta Muer!
)#1@>AIL G )erver fails, )erverul nu a putut satisface cererea datorita unor erori,
560=MAI5 G 5ame error, 0omeniul din Muer! nu e'ista,
5=TIM- G 5ot implemented,
1#>.)#0
Capitolul 8 ,er1erul Apac.e
8.1 Protocolul H55P
ATT- (A!perte't Transfer -rotocol) reprezinta un protocol la nivel de aplicatie
care defineste modalitatea de comunicatie dintre un server care implementeaza protocolul
ATT- si un client, 0intre serverele ATT- cele mai folosite sunt Apache si Microsoft II)$
iar dintre clientii ATT- Mozilla >irefo'$ Internet #'plorer si =pera,
0ezvoltarea protocolului ATT- a fost coordonata de oranizatia D8( (Dorld Dide
Deb (onsortium) care a culminat cu publicarea a o serie de 1>(%uri de catre I#T> dintre
care 1>(;626 defineste ATT-?2,2
-rotocolul ATT- este cel care a dus la formarea Dorld Dide Deb care reprezinta o
colectie de documente interconectate prin lin&%uri,
5ota
.n server ATT- se mai numeste si server <eb, .n client ATT- se mai numeste si
Bro<ser,
1olul unui server D#B este de a translata adrese numite .1L%uri cerute de bro<ser
in fisiere si trimiterea continutului acestora prin retea (Internet sau LA5) la client,
-rotocolul ATT- foloseste default portul T(-?:0, Acesta este portul pe care serverul <eb
asculta dupa cone'iuni de la clienti,
.n .1L (.niform 1esource Locator) este format dinB
_schemePB??_hostP?_pathP
_schemeP reprezentat de http ceea ce indica protocolul folosit de client si serverW
_hostP reprezinta numele sau I-%ul serverului D#B la care se conecteaza bro<serul cum
ar fi <<<,cr!stalmind,ro sau ::,0,0,2W
_pathP reprezinta calea catre fisierul cerut de client relativ la 0ocument1ootW
Bro<serul primeste de la server 0=A1 continut te't formatat dupa standardul
ATML, >olosind pluin%uri speciale clientul poate primi si un fisier non%te't in format
binar precum flash$ audio$ video$ pdf etc
Important
0ocument1oot reprezinta un termen eneric dar si o directiva de confiurare a unui
server <eb care reprezinta un director din sistemul de fisiere al serverului de unde acesta va
servi fisierele cerute de clientii,
#'emplu
0aca 0ocument1oot este directorul ?var?<eb$ iar un client se conecteaza la server folosit
schema httpB??<<<,cr!stalmind,ro?cursuri?linu',html$ atunci serverul va translata
httpB??<<<,cr!stalmind,ro?cursuri?linu',html in ?var?<eb?cursuri?linu',html si va incerca sa
livreze fisierul clientului,
H55P,
ATT- este un protocol te't (tot ceea ce transmite serverul clientului este te't in
format ATML) si in clar (informatia nu se cripteaza),
=data cu dezvoltarea e'ploziva a <eb%ului si cu aparitia de servicii critice care
folosesc ATT- (online ban&in$ online shoppin etc) modul in clar de operare a ATT-%ului
a inceput sa reprezinta un mare dezavanta7, Informatia dintre client si server poate fi usor
interceptata folosind un simplu sniffer precum tcpdump sau <ireshar&,
ATT-) inseamna ATT- )ecure sau ATT- over ))L ()ecure )oc&et La!er) si este
un protocol cu acelasi scop ca si ATT- la care comunicatia dintre client si server este
criptata folosind ))L?TL),
Initializarea unei sesiuni criptate presupune folosirea schemei https in loc de http
ceea ce are ca efect conectarea la serverul <eb pe portul tcp?**8 in loc de tcp?:0,
#'empluB httpsB??mail,oole,com
8.2 Pre0entare (enerala ser1er
Apache reprezinta un server care implementeaza protoculul ATT- (A!per Te't
Transfer -rotocol) si care ruleaza pe mai toate sistemele de operare (Dindo<s$ Linu'$
.ni'$ B)0$ Mac=) etc), #ste cel mai folosit server <eb din lume fiind instalat pe zeci de
milioane de hosturi, (ota sa de piata variaza intre 60%40^,
0intre cele mai populare <eb site%uri care ruleaza Apache enumeramB "oole
(ruleaza o versiune putin modificata de Apache numita "D) % "oole Deb )erver)$ (isco
)!stems$ Di&ipedia etc
Apache a pornit ca un proiect al 5ational (enter for )upercomputin Applications
(5()A) pentru crearea unui server <eb, In momentul in care coordonatorul de proiect
1obert Mc(ool a parasit 5()A in 233*$ dezvoltarea proiectului a fost sistata, .lterior
ceilalti membri ai echipei au infiintat CApache "roupC si au continuat dezvoltarea
serverului,
Initial aplicatia s%a numit 5()A ATT-d,0in punct de vedere istoric numele
Apache are ; radaciniB
2, (onform cu >A` de la Apache "roupB The name SApacheS <as chosen from respect for
the 5ative American Indian tribe of Apache$ <ell%&no<n for their superior s&ills in <arfare
strate! and their ine'haustible endurance,
;, >iind bazat pe cod initial (de la 5()A) serverul s%a dezvolatat prin adauarea de patch%
uri, (a patch! server)
8. Co/pilare si instalare
Instalarea prin compilare a Apache%ului se realizeaza in mod standard fara
probleme deosebite, #'emplu de mai 7os s%a realizat pe >edora (ore 3, In mod I0#5TI(
se compileaza si instaleaza pe orice distributie Linu',
-asi de urmatB
2,0o<nload sursele ultimei versiuni Apache de pe site%ul producatorului $tt'd.a'ac$e.or/,
Acestea pot fi do<nloadate in orice director din sistem,
)e ruleazaB <et $tt'+,,mirrors.e9ol9a.ro,a'ac$e.or/,a'ac$e-dist,$tt'd,$tt'd-7.7.6.tar.b:7
;, @erificare interitate arhiva tar,bz; folosind hash%ul sau semnatura diitala (=ptional dar
foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva, )e ruleazaB tar %'7vf httpd%;,;,3,tar,bz;
*, 1ularea scriptului confiure care verifica sistemul si anume daca acesta contine toate
componentele necesare compilarii si instalarii serverului Apache, 0orim instalarea in
directorul ?opt?apache astfel incat sa putem urmari si studia toate componentele cu care
vine serverul, )e recomanda rularea scriptului confiure de catre un user neprivileiat, )e
ruleaza din directorul cu surseB ,?confiure %%prefi'G?opt?apache %%enable%so %%enable%mods
sharedGall
5ota
>ara optiunea %%prefi'G?opt?apache instalarea are loc in directoarele standard precum
?usr?bin$ ?usr?sbin$ ?etc, In acest caz ne va fi reu sa asim fisierele componente ale
serverului sau sa%l dezinstalam?sterem,
=ptiunea %%enable%so are rolul de a compila serverul cu suport modular$ iar optiunea
enable%mods%sharedGall are rolul de a compila toate modulele disponibile, Acestea se vor
asi in directorul ?opt?apache?modules si trebuie incarcate la pornirea serverului pentru ca
acesta sa se foloseasca de functionalitatea oferita de acestea,
)criptul confiure al serverului are foarte multe optiuni de compilare,-entru vizualizarea
tuturor optiunilor se poate rula din directorul cu surse ,?confiure %%help U less

+, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat, In urma
compilarii rezulta din fisierele sursa fisiere e'ecutabile, )e ruleazaB ma&e
6, Instalare
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii din
directorul cu surse in directorul dorit ( ?opt?apache), (omanda poate fi e'ecutata doar de
root, )e ruleazaB ma&e install
5ota
0upa instalare se recomanda editarea fisierului ?etc?man,confi pentru includerea man
pae%urilor utilitarelor venite odata cu instalarea serverului,In ?etc?man,confi se adauaB
MA5-ATA ?opt?apache?man
8.% ,tructura Apac.e
In mod standard o versiune compilata a serverului contine in directorul reprezentat
prin )erver1oot (in cazul nostru ?opt?apache) urmatoarele directoare si utilitareB
% +in % contine daemonul httpd (serverul <eb) precum si alte utilitare cum ar fi apachectl
folosit pentru controlul serverului si anume pornirea$ oprirea sau restartarea acestuia$
httpass<d folosit pentru crearea de useri pentru accesul restrictionat la anumite directoare$
ab folosit pentru benchmar&in$ ap's (A-ache e6ten)ion tool) folosit pentru e'tinderea
functionalitatii Apache prin compilarea de noi module$ lorotate folosit pentru rotirea
lourilor etcW
% /an % contine man paes (help%ul oficial) pentru aplicatiile instalate ( httpd$ apachectl$
htpass<d etc)W
% .tdocs % contine fisierele care vor fi servite clientilor, Acest director si toate de sub el
poata denumirea enerica de Deb)pace si sunt accesibile tuturor (Atentie )ecuritateQ),
0irectorul ?opt?apache?htdocs este default 0ocument1ootW
% lo(s % contine lourile serverului Apache, #'ista ; fisiere importante accessJlo si
errorJloW
% c(i-+in % contine scripturi ("I ((ommon "ate<a! Interface)W
% con* % contine fisiere de confiurare dintre care cel mai important este httpd,confW
% /odules % contine module 0)= (0!namic )hared =b7ects) reprezentate prin fisiere
e'ecutabile ce sunt incarcate de server la pornire pentru a%si e'tinde functionalitateaW
% /anual % contine manualul de utilizare si confiurare al serverului in format ATMLW
% error % contine fisiere care reprezinta paini ATML ce vor fi servite clientilor in caz de
eroare standard, >iecare eroare standard are un cod unic ( #'empluB *0* % -ae not found)W
5ota
Apache poate fi compilat modular sau nemodular, In primul caz functionalitatea sa se
aseste in fisiere speciale numite module, In al doilea caz functionalitatea sa se afla chiar
in daemonul httpd, -entru a afisa modulele compilate in daemon se ruleazaB
?opt?apache?bin?httpd %l,
In cazul in care Apache se compileaza modular (optiunea %%enable%so a scriptului
confiure)$ modulele se asesc in directorul ?opt?apache?modules (si mai corect in
directorul numit modules din directorul reprezentat de directiva )erver1oot care este in
cazul nostru ?opt?apache), 0aca acesta este ol cu toate ca s%a dorit compilarea modulara
inseamna cel mai probabil o optiune eronata a scriptului confiure,
8.%.1 Con*i(urare Apac.e
(onfiurarea serverului Apache presupune editarea fisierului de confiurare
httpd,conf sau a altor fisiere care ulterior sunt incluse in acesta,
#'ista peste 800 de directive de confiurare$ iar fiecare directiva este introdusa de
un anumit modul (daca serverul a fost compilat modular)$ deci directiva e'ista si poate fi
folosita in masura in care modulul a fost incarcat in server,
.n modul este reprezentat printr%un fisier e'ecutabil din directorul modules din
)erver1oot (#'empluB ?opt?apache?modules),
-entru ca serverul sa incarce un modul$ in httpd,conf trebuie adauat in acestaB
LoadModule 5.M#JM=0.L
(AL#AJ(AT1#J>I)I#1.LJ(A1#J1#-1#KI5TAJM=0.L.L
#'empluB
LoadModule aliasJmodule modules?modJalias,so
>isierul de confiurare este citit de catre Apache doar la pornire (ca la toate
serverele Linu' de altfel), =rice modificare in fisierul de confiurare presupune restartarea
serverului,
)erverul se porneste$ opreste sau restarteaza folosind utilitarul apachectl din
directorul ?opt?apache?bin, Acesta primeste ca parametri start$ stop sau restart,
#'empluB
cd ?opt?apache?bin
,?apachectl restart
8.%.2 Con*i(urare 'ini/ala
(onfiurarea serverului Apache presupune editarea fisierului de confiurare
httpd,conf, In eneral se porneste de la un schelet de fisier cu care serverul CvineC in mod
default,
Important
)erverul Apache este e'trem de comple', = inteleere aprofundata a modului in care
acesta opereaza poate fi dobandita numai dupa foarte multa de e'perienta, -entru un server
in productie$ modificarea fisierului de confiurare trebuie facuta cu ri7a dupa inteleerea
rolului si scopului fiecarei directive pe care o modificam,
In primele randuri ale fisierului mostra httpd,conf asim un avertisment din partea
Apache "roupB C0o 5=T simpl! read the instructions in here <ithout understandin <hat
the! do, The!Sre here onl! as hints or reminders, If !ou are unsure consult the online docs,
Oou have been <arned,C
(onfiurarea minimala a serverului presupuneB
% modificarea )erver1oot cu directorul in care acesta este instalatW
% stabilirea I-%ului si portului pe care asculta serverulB directiva ListenW
% stabilirea userului si rupului sub care ruleaza serverulB directivele .ser si "roup, Acestea
nu trebuie sa fie sub nicio forma useri enerici folositi si de alte servere, Trebuie creat un
user si un roup pentru Apache care sa nu mai fie folosit in alt scopW
% modificarea )erver5ame cu numele sau I-%ul serveruluiW
% stabilirea 0ocument1oot$ directorul din care serverul va furniza fisiere clientilorW
% stabilirea fisierelor default pe care serverul le ofera clientilorB directiva 0irector!Inde'W
% confiurarea modului de loare$ fisierele in care serverul salveaza lourile si cantitatea de
informatii loataW
% alte confiuratii cum ar fi documentele standard de eroare etcW
8.%. Directi1e principale
2, Adresa si portul pe care va asculta serverul,
Listen 23;,26:,0,28B:0
In cazul in care serverul are mai multe interfete si deci I-%uri si se doreste ca
Apache sa asculte pe toate interfetele se folosesteB Listen NB:0
;, .serul si rupul sub care ruleaza Apache
.ser <<<user "roup <<<roup
8, 5umele folosit de server pentru a se identifica clientilor, @aloarea directivei )erver5ame
este in mod normal numele serverului ( #'empluB <<<,cr!stalmind,ro), )e poate folosi si
adresa I-,
)erver5ame 23;,26:,0,28B:0
*, 0irectiva )erver1oot reprezinta directorul in care se aseste Apache si toate fisierele
necesare lui, 0aca pe viitor in fisierul de confiurare 5. se va folosi o cale absoluta si o
cale relativa aceasta va fi adauata la )erver1oot,
)erver1oot ?opt?apache
#'empluB dir2?access inseamna ?opt?apache?dir2?access
+, 0irectorul din care Apache va servi continut clientilor, Acesta este Debspace%ul, )e
poate folosi directiva Alias pentru a indica alte locatii 0ocument1oot ?opt?apache?htdocs
6, Modulul dirJmodule introduce directiva 0irector!Inde',
0irector!Inde' reprezinta fisierul servit default clientilor in momentul in care acestia nu
specifica in mod e'press un fisier,
#'empluB daca 0irector!Inde' are valoarea inde',php$ iar un client se conecteaza la server
folosind httpB??<<<,cr!stalmind,ro$ serverul va furniza clientului fisierul inde',php din
0ocument1oot ca si cand acesta s%ar fi conectat la server folosind
httpB??<<<,cr!stalmind,ro?inde',php
LoadModule dirJmodule modules?modJdir,so _IfModule dirJmoduleP 0irector!Inde'
inde',html inde',php home,php _?IfModuleP
4, 0irectiva Inde'=ptions enereaza inde'%ul unui director automat$ asemanator comenzii
ls, 0irectiva este introdusa de autoinde'Jmodule
LoadModule autoinde'Jmodule modules?modJautoinde',so Inde'=ptions
>anc!Inde'in >olders>irst Inde'Inore N,7pe
:, 0irectivele Alias si )criptAlias se folosesc pentru a mapa un .1L cu un director din
sistemul de fisiere care se aseste in afara directorului definit de 0ocument1oot,
Bro<serul poate accesa astfel fisiere din afara lui 0ocument1oot, 0irectiva )criptAlias se
foloseste daca directorul taret contine doar scripturi ("I, (ele ; directive sunt introduse
de aliasJmodule care trebuie incarcat,
LoadModule aliasJmodule modules?modJalias,so Alias ?icons ?var?apache?imaes
Alias se foloseste pentru a mapa o resursa din <ebspace cu una locala$ iar 1edirect
pentru a mapa o resursa cu una remote, 0irectiva 1edirect este introdusa de modJalias
1edirect ?help httpB??<<<,invata%online,ro
3, 0irectiva #rrorLo stabileste fisierul in care serverul va salva mesa7ele de eroare, >oarte
util pentru troubleshootin si debuin,
#rrorLo los?errorJlo
TLoLevelB (ontrol the number of messaes loed to the errorJlo,
T-ossible values includeB debu$ info$ notice$ <arn$ error$ crit$ alert$ emer,
LoLevel <arn
20, 0irectiva #rror0ocument specifica fisierul sau mesa7ul pe care serverul il returneaza in
caz de eroare standard, >iecare eroare este identifica printr%un cod,
TModificarea painilor default care vor fi furnizate in caz de eroare
#rror0ocument +00 CThe server made a boo boo,C
#rror0ocument *0* CLipsesteQC
T#rror0ocument *0* $tt'+,,"""./oo/le.com
T#rror0ocument *0* ?missin,html
#rror0ocument *0; httpB??<<<,e'ample,com?subscriptionJinfo,html
5ota
Apache status return codes (lista incompleta)B
*00 Bad 1eMuest % ATT-JBA0J1#`.#)T
*02 Authorization 1eMuired % ATT-J.5A.TA=1IK#0
*0; -a!ment 1eMuired % ATT-J-AOM#5TJ1#`.I1#0
*08 >orbidden % ATT-J>=1BI00#5
*0* 5ot >ound % ATT-J5=TJ>=.50
*0+ Method 5ot Allo<ed % ATT-JM#TA=0J5=TJALL=D#0
*06 5ot Acceptable % ATT-J5=TJA((#-TABL#
*04 -ro'! Authentication 1eMuired
ATT-J-1=6OJA.TA#5TI(ATI=5J1#`.I1#0
*0: 1eMuest Time%out % ATT-J1#`.#)TJTIM#J=.T
*03 (onflict % ATT-J(=5>LI(T
*20 "one % ATT-J"=5#
*22 Lenth 1eMuired % ATT-JL#5"TAJ1#`.I1#0
*28 1eMuest #ntit! Too Lare % ATT-J1#`.#)TJ#5TITOJT==JLA1"#
*2* 1eMuest%.1I Too Lare % ATT-J1#`.#)TJ.1IJT==JLA1"#
+00 Internal )erver #rror % ATT-JI5T#15ALJ)#1@#1J#11=1
+02 Method 5ot Implemented % ATT-J5=TJIM-L#M#5T#0
+08 )ervice Temporaril! .navailable % ATT-J)#1@I(#J.5A@AILABL#
+0+ ATT- @ersion 5ot )upported % ATT-J@#1)I=5J5=TJ).--=1T#0
22, -entru a seta optiuni pentru un anumit director din Deb)pace se folosesc directive in
cadrul unui container de tipul _0irector!P
_0irector! directorulJcaruiaJiiJsetamJoptiunileP =ptiune2 =ptiune; _?0irector!P
#'empluB
_0irector!
?opt?apache?htdocs?docsP
=ptions Inde'es >ollo<)!mLin&s
Tapartine modulului core si poate sa apara doar in _0irector!P lobal, )pecifica directivele
care pot aparea in ,htaccess si suprascriu directivele din conte'tul lobal sau _0irector!P,
0aca Allo<=verride este 5=5#$ serverul nici macar nu va mai incerca sa citeasca
,htaccess Allo<=verride ALL
_?0irector!P
Important
,htaccess este un fisier special care se foloseste pentru a seta optiuni pentru un director din
Deb)pace, La pornire serverul scaneaza directoarele din Deb)pace pentru fisierul
,htaccess si incarca directive folosite in acesta, #ste modalitatea prin care se pot seta
optiune pentru diferite directoare fara a modifica fisierul lobal de confiurare httpd,conf,
5u orice directiva poate fi folosita in ,htaccess,
0eci pentru a seta optiuni pentru un director acestea pot sa apara in fisierul lobal de
confiurare (doar root il poate modifica) sau intr%un fisier numit ,htaccess in directorul
respectiv (orice user cu drepturi de scriere pe director poate crea si modifica ,htaccess),
2;, 0irectiva >ilesMatch se foloseste de cele mai multe ori pentru restrictionarea accesului
la anumite fisiere,
#'empluB se doreste confiurarea serverului astfel incat acesta sa nu transmita clientilor
anumite fisiere cum ar fi imaini sau documente,
-oate fi folosita si in ,htaccess (in contrast cu _0irector!P si _LocationP care nu
pot fi folosite in ,htaccess) -ermite folosirea de reular e'pressions, #ste echivalenat cu
directiva _>ilesP$ dar de preferat, 0aca se foloseste _>ilesP$ strinul care trebuie CprinsC de
reular e'pression trebuie precedat cu CZC (tilda),
_>ilesMatch CY[,htCP
=rder allo<$den! 0en! from all
_?>ilesMatchP
_>iles Z C[,(ifU7pLUpn)XCP
=rder allo<$den! Allo< from 23;,26:,0,;
_?>ilesP
-entru detalii despre directivele =rder$ Allo< si 0en! cititi capitolul C(ontrolul
accesului la resurseC a acestui curs,
28, Modulul mimeJmodule se foloseste pentru a asocia o anumite actiune a serverului in
functie de e'tensia fisierului cerut de client, Detalii.
#'empluB clientul cere serverului un fisier html sau un fisier pdf,
LoadModule mimeJmodule modules?modJmime,so
0efaultT!pe te't?plain
T!pes(onfi conf?mime,t!pes
0e obicei e'ista fisierul mime,t!pes care contine toate informatiile necesare despre
tipurile de fisiere si care se include in httpd,conf
8.) &irtual Hostin(
0e cele mai multe ori pe un server Apache se doreste azduirea mai multor <eb
site%uri, In cazul unui server dedicat de hostin$ pot fi azduite cateva sute de site%uri,
5ota
"azduirea mai multor site%uri pe un sever poarta denumirea de @irtual Aostin,
)erverul Apache trebuie sa poata face diferenta intre site%uri si sa serveasca
continutul corespunzator,
#'ista ; modalitati de virtual hostinB
1. IP-+ased &irtual Hostin(
)erverul <eb se confiureaza cu mai multe I-%uri$ cate unul pentru fiecare site, I-%
urile se confiureaza pentru fiecare interfata sau se pot crea interfete virtuale astfel incat
unei sinure interfete fizice i se pot asocia mai multe I-%uri,
>iecare nume de domeniu care reprezinta un site se translateaza intr%un alt I-, In
functie de I-%ul destinatie din pachet$ serverul <eb alee 0ocument1oot al unui anume site
si serveste continutul din acesta,
#'emplu
-resupunem azduirea a 8 site%uri pe un server, Acestea sunt """.cr(stalmind.ro$ <<<,invata%
online,ro si """.limbistraine.net, )erverul trebuie confiurat cu 8 I-%uri cate unul pentru fiecare
site,
In functie de I-%ul destinatie din pachetele pe care le primeste serverul identifica site ul la
care se conecteaza clientul si serveste continutul astfel (fiecare site are propriul
0ocument1oot)B pentru primul I- 0ocument1oot este ?opt?apache?htdocs?cr!stal$ pentru al
doilea I- 0ocument1oot este ?opt?apache?htdocs?invata$ iar pentru al 8%a I- Apache
serveste clientilor fisiere din ?opt?apache?htdocs?limbistraine
In cazul unui numar mare de site%uri I-%based @irtual Aostin nu este o
confiuratie scalabila mai ales daca ne referim la un server conectat direct la Internet care
trebuie confiurat cu I-%uri publice,
2. Ba/ed-+ased &irtual Hostin(
1eprezinta varianta cea mai folosita si la indemana de azduire a mai multor site%
uri pe un sinur server, Acesta este confiurat cu un sinur I- catre care sunt rezolvate prin
05) toate domeniile,
#'emplu
-resupunem azduirea a doua site%uri <<<,cr!stalmind,ro si """.in9ata-linu;.ro, (ele ; domenii
se translateaza catre unicul I- public al serverului care este ::,0,0,2, .n user de pe Internet
se va conecta atat la <<<,cr!stalmind,ro cat si la <<<,invata%linu',ro folosind I-%ul
::,0,0,
Intrebarea care apare esteB cum diferentiaza serverul <eb la ce site s%a conectat clientulL
1aspunsul sta in implementarea protocolului ATT-?2,2 si anume folosirea unui header din
protocolul ATT- de catre client numit A=)T, Astfel un client va folosi I-%ul destinatie
::,0,0,2 si A=)T """.cr(stalmind.ro pentru a se conecta la primul site si I-%ul destinatie ::,0,0,2
si A=)T """.in9ata linu',ro pentru cel de%al doilea site, In functie de valoarea A=)T serverul
Apache stabileste 0ocument1oot din care trebuie sa serveasca continutul,
-entru confiurarea 5amed%based @irtualAostin in httpd,conf se adauaB
5ame@irtualAost ::,0,0,2
_@irtualAost """.cr(stalmind.roP
)erver5ame """.cr(stalmind.ro
)erverAdmin admin4cr(stalmind.ro
0ocument1oot ?opt?apache?htdocs?cr!stalmind
#rrorLo?opt?apache?error?cr!stalmJerorr
TransferLo ?opt?apache?los?cr!stalmJaccessJlo
_?@irtualAostP
_@irtualAost """.in9ata-linu;.roP
)erver5ame """.in9ata-linu;.ro
)erverAdmin admin4in9ata-linu;.ro
0ocument1oot ?opt?apache?htdocs?invata%linu'
#rrorLo ?opt?apache?error?invatalJerorr
TransferLo ?opt?apache?los?invatalJaccessJlo
_?@irtualAostP
0etaliiB
0irectiva 5ame@irtualAost specifica serverului Apache ca reMuesturile catre I-%ul ::,0,0,2
trebuie mai departe sub divizateW pentru fiecare site este nevoie de un container
_@irtualAostPW
_@irtualAost <<<,cr!stalmind,roP % specifica numele site%ului, -oate fi folosit si I-%ul pe
care asculta serverulW
0irectivele cruciale pentru 5amed%based @irtual Aostin sunt )erver5ame care indica
valoarea headerului A=)T trimis de bro<ser si deci site%ul la care se conecteaza clientul si
0ocument1oot care identifica directorul din care serverul va servi continut pentru acel siteW
restul directivelor sunt optionale$ dar recomandate in cazul in care dorim pentru fiecare site
sa confiuram o alta adresa de e%mail a adminului$ un alt fisier cu lourile de eroare sau de
transfer etcW
5ota
2,5amed%based @irtual Aostin functioneaza doar pentru bro<serele care implementeaza
versiunea 2,2 a protocolului ATT-,
;,(onceptul de 5amed%based @irtual Aostin a fost implementat pentru prima data de
Apache$ ulterior fiind inlobat de cam toate serverele <eb,
8.2 Controlul accesului la resurse
Modul default de functionare al serverului Apache presupune ca acesta serveste
orice fisier din orice director de sub directorul definit de 0ocument1oot clientilor, -entru
un site de prezentare acest comportament este acceptabil$ dar pentru un sistem informatic$
pentru o sectiune de administrare$ pentru un Intranet sau pentru un site care contine
informatii sensibile sau confidentiale$ Apache trebuie sa limiteze accesul la resurse doar
pentru clientii autorizati,
#'ista ; moduri in care Apache poate limita accesul la resurseB
1. In *unctie de IP-ul de la care se conectea0a clientul
Aceasta varianta este optima in momentul in care accesul la informatiile
confidentiale se realizeaza de la un I- sau rup de I-%uri cunoscute dinainte,
In cazul in care cone'iunea are loc de pe Internet limitarea accesului in functie de
I- este considerata foarte siura, I-%ul public este furnizat de un I)-$ iar un posibil (rac&er
nu poate sub nicio forma folosi un I- care nu i%a fost setat de provider,
2. In *unctie de userna/e si parola
Aceasta varianta este optima in momentul in care accesul la informatiile
confidentiale se realizeaza de la I-%uri dinamice$ necunoscute apriori cum ar fi cazul
utilizatorilor mobili care doresc accesarea informatiei de oriunde s%ar afla,
5ota
-entru o securitate crescuta serverul <eb poate fi confiurat pentru ambele moduri de
restrictionare a accesului,
Acces in *unctie de IP
Modulul care introduce directivele ce realizeaza accesul la resursele serverului in
functie de I-%ul clientului este modJauthzJhost pentru Apache ;,; si modJaccess pentru
Apache 2,8 si ;,0
0irectivele folosite pentru restrictionara accesului suntB =rder$ Allo< si 0en! si se
folosesc in interiorul unui container _0irector!P pentru stabilirea accesului la un intre
director$ _LocationP$ _>ilesP sau _>ilesMatchP pentru stabilirea accesului doar la anumite
fisiere,
0irectiva Allo< specifica I-%urile de la care se permit cone'iuni, )e pot folosi atat
I-%uri cat si clase de I-%uri sau nume de domenii,
#'emplu
2, -ermite un sinru I-
Allo< from 23;,26:,0,2 Allo< from ::,0,0,2
;, -ermite un intre domeniu ( com sau <<<,cr!stalmind,ro), )erverul realizeaza un
reverse 05) pentru translatarea I-%ului in nume de domeniu care ulterior este folosit
pentru evaluare Allo< from ,com Allo< from <<<,cr!stalmind,ro
8, -ermite un intre rane de I-%uri folosind un prefi' (?:)
Allo< from 20,0,0,0?:
*, @erifica doar partial (sa inceapa cu 20 sau 24;,26)
Allo< from 20 24;,26
+, -ermite pentru un I-v6
Allo< from ;002Bdb:BBa00B;0ffBfea4Bccea
6, -ermite toate I-%urile
Allo< from all
0irectiva 0en! specifica I-%urile de unde nu se permit cone'iuni, Modul de
folosire este identic cu cel al directivei Allo<
#'emplu
2, Blocheaza un sinur I-
0en! from 23;,26:,0,30
;, Blocheaza un intre rane de I-%uri
0en! from ::,0,0,0?26
8, Blocheaza in functie de domeniu, )erverul Apache realizeaza reverse 05)
0en! from evil,linu',com
*, Blocheaza cone'iuni de la toate I-%urile
0en! from all
A 8%a directiva necesara$ =rder poate avea ; forme si stabileste ordinea de evaluare,
(ele ; forme suntB
1. $rder Allow@Den7
-rima data sunt evaluate toate directivele Allo<, 0aca nici una nu este adevarata
reMuestul clientului este re7ectat,
0en! este polic!B ce nu este permis de un Allo< este re7ectat
_0irector!
?opt?apache?htdocs?cr!stalmind,ro?<ebsite?cursuriP
=rder Allo<$0en!
Allo< from cr!stalmind,ro
0en! from ::,0,0,2
_?0irector!P
-entru directorul ?opt?apache?htdocs?cr!stalmind,ro?<ebsite?cursuri sunt permise
doar reMuesturile de la I-%urile care se rezolva invers in 05) in cr!stalmind,ro,
1eMuesturile de la ::,0,0,2 precum si restul reMuesturilor sunt re7ectate,
2. $rder Den7@ Allow
-rima data sunt evaluate toate directivele 0en!, 0aca vreuna este adevarata >A1A ca I- ul
clientului sa fie CprinsC si de o directiva Allo<$ reMuestul este re7ectat, 1eMuesturile care nu
corespund cu nicio directiva 0en! sau Allo< sunt permise,
Allo< este -olic!B ce nu este re7ectat de un 0en! este permis
_0irector!
?opt?apache?htdocs?cr!stalmind,ro?<ebsiteP
=rder 0en!$Allo<
0en! from ::,0,0,2
0en! from 23;,26:,0,0?;*
_?0irector!P
-entru directorul ?opt?apache?htdocs?cr!stalmind,ro?<ebsite reMuesturile de la I-%ul
::,0,0,2 sau din subnetul 23;,26:,0,0?;* sunt re7ectate, 1estul reMuesturilor sunt premise
din cauza ordinei de evaluare 0en!$ Allo<
=rice fisier cu terminatia sau e'tensia 'ls este servit doar daca clientul se
conecteaza de la ::,0,0,2
_>ilesMatch C[,'lsXCP
=rder Allo<$0en!
Allo< from ::,0,0,2 _?>ilesMatchP
Important
Modulul de evaluare al directivelor Allo< si 0en! este diferit de modul de evaluare
a reulilor unui >ire<all, 1eulile unui fire<all sunt evaluate pana cand o reula SprindeS
pachetul caz in care se e'ecuta o actiune fara a se mai evalua restul reulilor,
In cazul directivelor Allo< si 0en! toate reulile se evalueaza pana la final ceea ce
determina ca ordinea in care acestea apar sa nu fie importanta ceea ce este in contrast cu un
fire<all,
8.8 PHP
-rezentare enerala
-A- a fost inventat in 233+ de catre un proramator danez pe nume 1asmus
Lerdorf, La inceput -A- insemna C-ersonal Aome -aeC, In prezent se considera ca -A-
reprezinta un acromim recursiv de la C-A- % A!perte't -reprocessorC si este un limba7 de
scriptin =pen)ource care este rulat de serverul <eb pentru a furniza in mod dinamic
continut clientului (bro<serului),
Pro(ra/e interpretate 1ersus pro(ra/e executate
-A- este un limba7 de proramare interpretat si nu e'ecutat, Alte prorame
interpretate sunt -#1L$ -!thon si Eava,
Limba7ele e'ecutate creaza prin compilare un fisier binar care se ruleaza, 0e fiecare
daca cand se modifica ceva in sursa proramului acesta trebuie recompilat, Limba7ele
compilate sunt ($ (FF$ @isual Basic etc
Limba7ele interpretate nu enereaza prorame$ fisiere binare e'ecutabile in urma
compilarii, Acestea nu se compileaza, In schimb proramul este impartit in mai multe
operatii elementare numite opcodes care se e'ecuta de catre serverul <eb (in cazul php de
catre Apache) una cate una, 0aca se modifica ceva in proram$ se modifica doar operatia
elementara corespunzatoare,
0e fiecare data cand se acceseza printr%un .1L paina o -A-$ serverul trimite
paina spre procesare interpretorului -A- care e'ecuta instructiunile din paina si apoi
returneaza cod ATML clientului (I#GInternet #'plorer$ >irefo' etc),
8.8.1 Instalare si co/pilare
5ota
-entru instalarea -A- presupunem e'istenta serverului Apache instalat conform cu
indicatiile din capitolele anterioare,
Instalarea prin compilare a -A- se realizeaza in mod standard folosind scriptul
confiure$ ma&e si ma&e install, #'emplu de mai 7os s%a realizat pe >edora (ore 3, In mod
I0#5TI( se compileaza si instaleaza pe orice distributie Linu',
-asi de urmatB
2, 0o<nload sursele ultimei versiuni -A- de pe site%ul producatorului '$'.net,
Acestea pot fi do<nloadate in orice director din sistem,
<et %c $tt'+,,""".'$'.net,/et,'$'->.7.2.tar.b:7,-rom,ro.'$'.net,mirror
;, @erificare interitate arhiva tar,bz; folosind hash%ul sau semnatura diitala (=ptional
dar foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva
)e ruleazaB tar %'7vf php%+,;,6,tar,bz; apoi cd php%+,;,6
*, 1ularea scriptului confiure care verifica sistemul si anume daca acesta contine toate
componentele necesare compilarii si instalarii -A-, 0orim instalarea in directorul ?opt?php,
)e recomanda rularea scriptului confiure de catre un user neprivileiat,
)e ruleazaB ,?confiure %%<ith%ap's;G?opt?apache?bin?ap's %<ith%m!sMl %%prefi'G?opt?php
5ota
2,>ara optiunea %%prefi'G?opt?php instalarea are loc in directoarele standard precum
?usr?bin$ ?usr?sbin$ ?etc, In acest caz ne va fi reu sa asim fisierele componente sau sa%l
dezinstalam?sterem,
;, ap's % A-ache e6ten)ion tool % is a tool for buildin and installin e'tension modules
for the Apache A!perTe't Transfer -rotocol (ATT-) server, This is achieved b! buildin a
0!namic )hared =b7ect (0)=) from one or more source or ob7ect files <hich then can be
loaded into the Apache server under runtime via the LoadModule directive from modJso,
8, -latforma LAM-(Linu'FApacheFM!)MlF-A-?-erl?-!thon) presupune folosirea ca
baza de date a serverului M!)Ml, -latforma pentru aplicatii <eb presupune interactiunea
dintre -A- si M!sMl pentru servirea de continut dinamic clientilor din baza de date,
=ptiunea %%<ith%m!sMl compileaza in -A- suport pentru M!)Ml,
Important
In cazul in care se doreste compilarea -A- cu suport de M!)Ml$ componentele M!sMl si
anume m!sMl$ m!sMl%server$ m!sMl%devel si m!sMl%lib trebuie sa fie de7a instalate, Altfel
scriptul confiure returneaza eroare,
+, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat,
In urma compilarii rezulta din fisierele sursa fisiere e'ecutabile,
)e ruleazaB ma&e
6, Instalare
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii din
directorul cu surse in directorul dorit ( ?opt?php), (omanda poate fi e'ecutata doar de root,
)e ruleazaB ma&e install
8.8.2 Con*i(urare Apac.e si PHP
-entru ca Apache si -A- sa poata comunica si deci lucra impreuna este nevoie de
urmatoarele confiuratiiB
2, #ditare httpd,conf
>isierul de confiurare al daemonului httpd (serverul Apache) trebuie modificat
astfel incat acesta sa incarce modulul -A- (daca -A- a fost compilat ca modul pentru
Apache e'emplul nostru si cel mai folosit in practica) si sa trimita fisierele cu e'tensia
,php preprocesorului -A- pentru a le e'ecuta,
In httpd,conf trebuie adauatB
LoadModule php+Jmodule modules?libphp+,so
_>iles N,phpP
)et=utput>ilter -A- )etInput>ilter -A-
_?>ilesP
AddT!pe application?'%httpd%php ,php
5ota
0e multe ori daca -A- a fost compilat ca modul pentru Apache folosind ap's;$ liniile de
mai sus sunt adauate automat in httpd,conf$ caz in care trebuie doar sa verificam prezenta
lor,
>isierul care reprezinta modulul -A- apare in directorul cu module al lui Apache$ in cazul
nostru ?opt?apache?modules, 5umele modulului poate sa difere$ caz in care trebuie sa
adaptam in httpd,conf
;, Testare
-entru a testa functionarea Apache F -A- se creeaza un fisier cu e'tensia ,php
(#'empluB phpJtest,php) in 0ocument1oot care sa contina urmatoarele liniiB _Lphp
phpinfo()W LP
.lterior se acceseaza acest fisier conectandu%ne cu Bro<serul la serverul <eb si
cerand fisierul phpJtest,php,
Important
In cazul in care Bro<serul doreste do<nloadarea fisierului sau afiseaza e'act cele 8 linii de
mai sus$ -A- nu a fost instalat sau confiurat corect, #ste nevoie de troubleshootin,
In cazul in care -A- (si Apache) a fost instalat si confiurat corect la accesarea
painii phpJtest,php este afisat mult continut care indica modul de operare al -A-$ diferite
variabile,
8, (onfiurare -A-
(onfiurarea modului in care -A- opereaza este controlata de un fisier numit
php,ini, In mod e'press acest pas a fost trecut dupa pasul de testare pentru simplu fapt ca
locatia unde -A- cauta fisierul php,ini nu este standard$ nu poate fi modificata decat la
compilare$ iar unui user incepator ii este foarte reu sa aseasca locatia sa,
Locatia fisierului php,ini se identifica in outputul enerat de paina phpJtest,php de
la pasul ;, 0upa identificarea locatiei in care trebuie sa se aseasca php,ini$ un SscheletS de
fisier trebuie copiat in directorul respectiv (in cazul nostru este ?opt?php?lib), = astfel de
mostra asim in directorul cu surse si se numeste php,ini%recommented, Acesta se copiaza
in ?opt?php?lib sub numele de php,ini si se editeaza pentru a confiura modul de operare al
-A-,
8.8. ,ecuritate :e+
)ecuritatea unui sistem informatic este la fel de buna ca cea mai slaba veria a sa,
#ste suficient ca un crac&er sa compromita serverul <eb sau sa ruleze un e'ploit la nivel de
aplicatie cum ar fi un )Ml In7ection pentru ca apoi sa mai aiba un mic pas pana sa devina
root pentru intre sistemul de operare,
-latformele <eb formate din server http$ php$ server baze de date si aplicatiile
instalate au un istoric plin de vulnerabilitati, 0e foarte multe ori compromiterea unui sistem
de operare a plecat de la confiurarea resita a modului in care -A- opereaza sau de la
serverul M!)Ml ori Apache,
)ecuritatea informatiei este un proces continuu$ o stare de fapt,
)ecurizarea unui server presupune cunostinte avansate si e'perienta,
Imi propun enumerarea catorva aspecte minimale care conduc catre o platforma <eb stabila
si siura,
2, Ascunderea a cat mai multa informatie despre serverul <eb care ruleaza$ versiunea
acestuia$ versiunea de -A- sau de M!)Ml,
-rimul pas al oricarui atac informatic este identificarea serviciilor si versiunilor
care ruleaza, .lterior un crac&er e'perimentant sau nu$ poate cauta pe Internet e'ploit%uri
pentru anumite versiuni de Apache sau de -A- si le poate rula,
Ascunderea de informatie in vederea cresterii securitatii informatice poarta
denumirea deCsecurit! throuh obscurit!C, In eneral acest proces nu imbunatateste
securitatea enerala a sistemului ci doar evita atacuri din partea persoanelor
nee'perimentate si care cauta tinte la intamplare,
;, Instalarea ultimei versiuni stabile de server <eb$ php si server M!)Ml
Intre specialistii in securitate si crac&eri e'ista o cursa continua, =ricat de bun ar fi
un produs acesta nu poate fi Sbu%freeS, -eriodic se descopera erori de proramare in
ma7oritatea serverelor care pot fi e'ploatate de persoane rau intentionate, )inura solutie
finala este aplicarea unui patch care SastupaS respectiva Saura de securitateS,
8, 1ularea serverului Apache si M!)Ml sub propriul user care sa nu mai fie folosit in alt
scop,
#'empluB apache ruleaza sub <<<user si <<<roup$ iar M!)Ml sub m!sMluser si
m!sMlroup
*, )etarea accesului la resursele oferite de server in functie de I-%ul clientilor sau de
username si parola,
0irectoarele sau fisierele sensibile si confidentiale trebuie prote7ate impotriva
accesului neautorizat, Acces neautorizat poate fi chiar si inde'area painilor respective de
catre motoare de cautare precum "oole, In ultima vreme multe tipuri de atacuri se bazeaza
pe cautarea pe "oole de continut confidential care a fost inde'at datorita confiurarii
necorespunzatoare a serverelor ATT-,
+, -A- )ession )ecurit!,
6, Instalarea si confiurarea modJstatus pentru a urmarii activitatea si performantele
serverului Apache
4, Instalarea Apache in 7ail (chrooted)
:, Instalarea si confiurarea modJsecurit!
modJsecurit! reprezinta cel mai cunoscut si folosit DA> (Deb Application >ire<all),
Acesta este e'trem de comple'$ iar pentru inteleerea aprofundata a modului in care acesta
functioneaza este nevoie de cunostinte avansate,
3, >olosirea protocolului ATT-) in loc de ATT- pentru continut confidential, =ricat de
siur ar fi confiurat sistemul si oricat de bun ar fi fire<all%ul$ informatia poate fi captata si
citita pe drumul dintre sursa si destinatie in cel mai simplu mod fiindca aceasta circula in
clar, )olutia este criptarea informatiei folosind ssl?tls (ATT-)),
20, M!)Ml )ecurit!
setarea de parola pentru userul root
stererea userilor anonimi
Important
5u e'ista sistem 200^ siur, =ricat de preatit este adminul si oricata munca depune in
vederea securizarii serverului$ tot e'ista posibilitatea ca acesta sa fie compromis, )ansa ca
serverul sa fie compromis trebuie luata in calcul intotdeauna, 0e multe ori un bac&up
eficient reprezinta salvarea,
Capitolul F ,er1erul '7,=l
F.1 Pre0entare (enerala
M!)Ml reprezinta cel mai cunoscut si folosit 10BM) (1elational database
manaement s!stem) =pen)ource scris aproate interal in (?(FF,
5ota
In vara anului ;00: )un Micros!stems a cumparat firma M!)Ml AB din )uedia$
producatorul M!)Ml,
#'ista in prezent peste 22 milioane de instalari M!)Ml pe servere in productie din
intreaa lume, )uccesul realizat de aceasta baza de date se datoreaza in primul rand
costurilor minime si performantelor crescute,
-roprietatiB
% M!)Ml ruleaza client%serverW
% m!sMld reprezinta serverul baze de date (daemonul m!sMl)$ m!sMl reprezinta clientul de
m!sMl in linie de comanda$ iar m!sMldJsafe este un script cu a7utorul caruia se initializeaza
serverul m!sMlW
% fisierul de confiurare atat pentru client cat si pentru server este ?etc?m!,cnfW
% in momentul in care clientul se conecteaza la server prin retea$ acesta se conecteaza
folosind T(- si portul destinatie 8806 pe care asculta serverul, 0aca serverul si clientul se
afla pe acelasi host$ comunicatia dintre acestea nu se realizeaza prin T(-?I- ci printr%un
)oc&et care este default ?var?lib?m!sMl?m!sMl,soc&W
% administrarea serverului de baze de date se realizeaza folosind clientul m!sMl$ utilitarul
m!sMladmin care ruleaza in consola$ M!)Ml Administrator care ruleaza rafic atat pe Linu'
cat si pe Dindo<s sau phpM!Admin in cazul aplicatiilor <ebW
% M!)Ml ruleaza e'celent impreuna cu -A- ceea ce a dus si la numele de Cthe d!namic
duoC, -rintre aplicatiile care folosesc -A- si M!sMl asim (M) ((ontent Manaement
)!stem) precum 0rupal$ EoomlaQ$ Dord-ress$ Moodle dar si site%uri celebre precum
Di&ipediaW
Important
-entru a putea folosi -A- si M!sMl pachetul php%m!sMl trebuie sa fie instalat,
8es*ription/ )he php-mys9l pa*#age *ontains a dynami* shared obe*t that "ill add
MyS:0 database support to 2H2+ MyS:0 is an obe*t-relational database management
system+ 2H2 is an H)M0-embeddable s*ripting language+ If you need MyS:0 support for
2H2 appli*ations! you "ill need to install this pa*#age and the php pa*#age+
F.2 Instalare '7,=l
(ompilarea componentelor M!)Ml poate fi dificila datorita dependintelor dintre
acestea, -e cat posibil se recomanda instalarea automata folosind un manaer de pachete
precum !um sau apt%et,
-achetele care trebuie instalate pentru o functionare corecta suntB m!sMl$ m!sMl%
server$ m!sMl%libs$ m!sMl%devel si php%m!sMl,
F.2.1 Con*i(urare '7,=l
(onfiurare de baza
>isierul de confiurare atat pentru server ( m!sMld)$ pentru client ( m!sMl) cat si
pentru scriptul ms!MldJsafe este default ?etc?m!,cnf
)ectiunea Hm!sMldI sau HserverI identifica directivele de confiurare pentru server$
sectiunea HclientI sau Hm!sMlI identifica directivele pentru client$ iar sectiunea
Hm!sMldJsafeI identifica directivele pentru scriptul de initializare m!sMldJsafe,
#'emplu ?etc?m!,cnf
Hm!sMldI
datadirG?var?lib?m!sMl
soc&etG?var?lib?m!sMl?m!sMl,soc&
userGm!sMl
T 0efault to usin old pass<ord format for compatibilit! <ith m!sMl 8,' T clients (those
usin the m!sMlclient20 compatibilit! pac&ae),
oldJpass<ordsG2
HclientI
portG8086
Hm!sMldJsafeI
lo%errorG?var?lo?m!sMld,lo
pid%fileG?var?run?m!sMld?m!sMld,pid
0etaliiB
C>die06 %P reprezinta un comentariuW
M/7s=ldN %P identifica inceputul sectiunii de confiurare pentru serverW
datadir %P reprezinta directorul in care se asesc fizic fisierele care reprezinta bazele de
dateW
socket %P reprezinta fisierul de tip soc&et prin care clientul comunica cu serverul daca
acestea se asesc pe acelasi hostW
user %P user%ul sub care ruleaza serverulW
MclientN %P identifica inceputul sectiunii de confiurare pentru client (m!sMl)W
port %P seteaza portul la care se conecteaza clientulW
M/7s=ld4sa*eN %P identifica inceputul sectiunii de confiurare pentru criptul de initializare
al serveruluiW
(onfiurarea de baza a serverului m!sMl presupuneB
2, )tabilirea username%ului sub care ruleaza serverul,
Acesta nu trebuie sa fie un user eneric precum nobod! ci un user folosit special si doar
pentru m!sMl, In fisierul de confiurare ?etc?m!,cnfB userGm!sMl
;, )etarea ca o<ner pentru directorul in care se asesc bazele de date ( ?var?lib?m!sMl) a
userului sub care ruleaza serverul,
)e ruleazaB cho<n %1 m!sMl ?var?lib?m!sMl
8, Initializarea bazelor de date m!sMl si test
)erverul M!)Ml pastreaza informatii despre userii care se conecteaza la acestas$
permisiunile fiecaruia etc tot intr%o baza de date, Aceasta se numeste m!sMl, test este o baza
de date folosita pentru benchmar&in sau alte teste,
)e ruleazaB m!sMlJinstallJdb care este un script ce creeaza bazele de date m!sMl si test
*, )ecurizarea serverului M!)Ml
)erverul M!)Ml autentifica fiecare cone'iune pe baza unui cont, .n cont m!sMl este format
din usernameFparolaFhost$ unde host reprezinta I-%ul sau numele hostului de unde se
conecteaza userul,
#'empluB un cont pentru conectarea la server poate fiB danFpasstestFlocalhost$ iar
danFpasstestF23;,26:,0,2 reprezinta un cu totul alt cont fara nicio leatura cu primul,
Acest concept este fundamental pentru inteleerea modului in care M!)Ml functioneaza,
Important
)erverul M!)Ml instalat default adaua o rava problema de securitate, Implicit
e'ista 8 conturi de root fara parola, Acestea sunt rootF-A1=LAJLI-)AFlocalhost$
rootF-A1=LAFLI)-AF2;4,0,0,2 si rootF-A1=LAJLI)-AFhostname
.serii folositi de m!sMl sunt Cm!sMl onl! usersC, Acestia nu trebuie sa e'ista in
?etc?pass<d si se folosesc doar pentru conectarea la server, Implicatia modului in care
m!sMl opereaza default este ca =1I(# user se poate conecta ca root de m!sMl la server si
are acces complet,
)ecurizarea minimala a serverului presupune stererea userilor root sau setarea unei
parole pentru acestia,
#tape (serverul m!sMld trebuie sa ruleze)B
a) conectarea la server de pe localhost folosind userul root fara parola m!sMl %h localhost %u
root
b) aleerea bazei de date m!sMl pentru urmatoarele comenzi m!sMlPuse m!sMlW
c) setarea de parole pentru userii root sau stererea acestora .serii de m!sMl impreuna cu
toate privileiile acestora se asesc in tabelul user din baza de date m!sMl,
(olectarea de informatiiB
% pentru vizualizarea structurii tabelei user se ruleazaB m!sMlPdescribe userW
% coloanele care prezinta interes suntB user$ pass<ord si host
% pentru vizualizarea conturilor de root se ruleazaB select user$pass<ord$host from userW
,etare parola pentru un cont;
m!sMlPset pass<ord for rootV2;4,0,0,2Gpass<ord(SparolaJdoritaS)W
,ter(ere cont root *ara parola;
m!sMlPdelete from user <here userGSrootS and pass<ordGSSW
Crearea unui nou cont>ad/inO/7passO1H2.12F.I.16 cu setarea de pri1ile(ii;
m!sMlPrant all privilees on m!sMl,N to adminV23;,26:,0,2 identified b! Sm!passSW
% m!sMl reprezinta baza de date pe care userul va avea privileii$ iar N inlocuieste orice
tabel din baza de date, 0upa e'ecutarea comenzii de mai sus userul admin cu parola
m!pass care se conecteaza la server de la 23;,26:,0,2 va avea drepturi totale pentru toate
tabelele din baza de date m!sMl, Acesta este echivalent cu root,
5ota
2, 0upa crearea sau modificarea informatiilor despre un cont se recomanda rularea
comenzii ms!MlPflush privileesW si restartarea serverului,
;, .n user se conecteaza la server folosind comanda ms!Ml e'ecutand din consolaB
m!sMl %h I-J)#1@#1JMO)`L %u .)#15AM# %p$ unde %h identifica serverul$ %u
username%ul cu care se conecteaza$ iar %p faptul ca acesta are parola setata,
F. PHP & '7,=l
-latforma pentru aplicatii <eb numita LAM- (Linu'FApacheFM!)MlF-A-)
presupune folosirea bazei de date M!)Ml si a limba7ului de scriptin -A- pentru
manipularea informatiilor din baza de date,
-entru ca -A- sa poata interactiona cu M!)Ml sunt necesareB
% -A- trebuie sa fie compilat cu suport de M!)Ml (optiunea %%<ith%m!sMl a scriputului
confiure), -entru detalii recititi capitolul C-A- % (ompilare si instalareC a acestui cursW
% -A- ruleaza ca modul pentru Apache si interactioneaza corect cu serverul ATT-, -entru
detalii recititi capitolul C(onfiurare Apache si -A-C a acestui cursW
% libraria php%m!sMl trebuie sa fie instalata, Aceasta librarie contine un set de functii -A-
pentru interactiunea cu serverul baze de date ( #'empluB m!sMlJconnect$
m!sMlJfetchJassoc$ m!sMlJarra! etc)W
% un cont (usernameFparolaFhost) m!sMl folosit in scripturile -A- pentru conectarea la
baza de dateW
5ota
-latforma pentru aplicatii <eb LAM- presupune
Linu'FApacheFM!)MlF-hp?-erl?-!thon,
Multi developeri de aplicatii <eb folosesc sistemul de operare Dindo<s ca si mediu de
proramare ceea ce a dus la termenul de DAM-
(Dindo<sFApacheFM!)MlF-hp?-erl?-!thon), Toate componentele platformei adica
serverul Apache$ M!sMl si -A- ruleaza si pe Dindo<s, Acestea pot fi instalate
independent sau folosind anumite prorame care le contin pe toate cele 8 componente,
Astfel de prorame sunt Eas(PAP sau Bam' er9er, Aplicatiile <eb profesionale sunt azduite pe
servere Linu' daca acestea folosesc Apache, 0e multe ori proramatorii dezvolta
aplicatiile de Dindo<s pe DAM-$ iar ulterior in faza de productie acestea sunt mutate pe
Linu',
-roramatorul nu trebuie sa cunoasca in mod detaliat cum se instaleaza si confiureaza un
server$ cum functioneaza acesta pentru a crea aplicatii de calitate, -roramarea si
Administrare de )istem sunt doua profesii diferite,
5ota
cPanel reprezinta o solutie de administrare a unui server Linu' folosind un Bro<ser, )e
utilizeaza in special pe serverele dedicate de hostin unde sarcinile administrative sunt
multe si dese, (u a7utorul c-anel se poate confiura Apache$ -A-$ M!sMl$ se pot crea
conturi de e%mail$ seta parole$ vizualiza procese etc, 0ezavanta7ul este o fle'ibilitate si un
control oarecum scazut, Adminul nu stie e'act ce comenzi sau prorame ruleaza c-anel in
spate$ unde salveaza fisire etc, c-anel nu este un produs ratuit,
-les& este o alta aplicatie folosita pentru administrarea LAM-, 5iciun proram de
administrare rafic nu poate inlocui complet consola,
F.% B953IL59!
F.%.1 Pre0entare (enerala
5#T>ILT#1 repezinta un frame<or& din /ernelul de Linu' responsabil cu filtrarea
pachetelor$ marcarea acestora in vederea prioritizarii traficului$ modificarea structurii
headerelor de la!er8 (Aeader I-) si la!er* (Aeader T(- sau .0-)$ )ource 5AT$
0estination 5AT?-ort >or<ardin etc,
Important
(omparativ cu alte sisteme de operare precum Dindo<s in care se pot instala o
varietate de aplicatii de tip fire<all$ 5#T>ILT#1 reprezinta )I5".1A posibilitate in
Linu' de realizarea a unui fire<all$ 5AT$ marcare si modificare de pachete$ in eneral tot
ce inseamna interactiune cu pachetele,
5ota
)uportul pentru 5#T>ILT#1 trebuie sa fie compilat in /ernel sau ca modul, In cazul in
care &ernelul nu cuprinde 5#T>ILT#1 acesta trebuie recompilat, 5#T>ILT#1 este in
C&ernel spaceC,
iptables este o comanda cu a7utorul careia putem comunica cu 5#T>ILT#1, Iptables este
in Cuser spaceC,
3irewall
.n >ire<all reprezinta o componenta a infrastructurii de securitate care separa
retele de calculatoare sau calculatoare care au nivele diferite de securitate,
.n fire<all poate fi de ; feluriB
a) Aard<are % echipament dedicat$ special creat$ care are drept scop filtrarea datelor dintre
; entitati ( #'empluB (isco A)A),
b) )oft<are % aplicatie$ care ruleaza pe calculator(server) impreuna cu alte prorame care
are acelasi scop ca si un fire<all hard<are
5ota
.n fire<all hard<are foloseste soft<are pentru a realiza filtrarea, -e lana filtrarea propriu
zisa un fire<all hard<are are si alte functii precum @-5$ criptarea datelor etc,
Important
>iltrarea pachetelor se bazeaza pe headerele protocoalelor din stiva T(-?I-, =
inteleere foarte buna a acestor protocoale (inclusive structura headerelor) este esentiala
pentru crearea?confiurarea unui fire<all eficient,
#'ista 8 eneratii de fire<allB
1. Packet +ased
>iltreaza in functie de campurile din headerele de la La!er 8 (5et<or&) si * (Transport) ale
=)I, 5u diferentiaza intre pachete,
2. Circuit-+ased nu/it si state*ul *irewall
>iltreaza in functie de campurile din headerele de la La!er 8 (5et<or&?I-) si *
(Transport?T(-$.0-) =)I, )uplimentar se tine cont de relatiile dintre pachetul curent si
celelalte,
#'empluB un pachet adresat hostului local este permis daca acesta reprezinta raspuns la un
pachet enerat din interior (de hostul local),
. Application La7er 3irewall >Prox7 #ased 3irewalls6
>ire<all care CcitesteC datele de la nivelul aplicatie (>T-?ATT-?05) etc),
In Linu' sinura modalitatea de a crea un fire<all este reprezentata de arhitectura
5#T>ILT#1, Aceasta arhitectura foloseste comanda iptables (user space tool) pentru a
filtra pachetele de date,
5#T>ILT#1 este o tehnoloie foarte avansata care permite crearea unui fire<all de
la zero e'trem de eficient care poate fi folosit cu incredere pe servere din mediul
#nterprise,
5#T>ILT#1 inlobeaza caracteristicile tuturor celor 8 eneratii amintite mai sus
(aplication la!er fire<all cu module speciale),
F.%.2 ,tructura B953IL59!
a6 C.ains
5#T>ILT#1 foloseste default + chain%uri numite si hoo&s (carlie) prin care
pachetele trec si in care 5#T>ILT#1 poate interactiona cu acestea, Acestea sunt de fapt
puncte de interactiune cu pachetele,
(ele + chain%uri predefinite suntB
1. P!9!$U5IB<
Acest chain este atins de pachete inaintea procesului de routare$ imediat ce driverul
placii de retea a acceptat pachetul,
#ste folosit pentruB
% modificarea headerelor pachetelor (manlin) inaintea procesului de rutareW #'empluB
modificare T=) (T!pe of service) sau modificare TTL (Time to live) pentru a influenta
procesul de rutare
% 05AT (0estination 5AT sau -ort >or<ardin)W
In acest chain trebuie evitata filtrarea fiindca nu toate pachetele trec prin el,
2. IBPU5
-rin acest chain trec pachetele destinate calculatorului local, =rice pachet care
a7une la statia locala trece prin acesta indiferent pe ce interfata intra sau de unde vine,
#ste folosit pentruB
% modificarea pachetelor (manlin) dupa rutare$ dar inainte sa fie trimise procesului localW
% filtrarea pachetelorW
. $U5PU5
-rin acest hoo& trec pachetele enerate de calculatorul local,
#ste folosit pentruB
% filtrare sau manipulare pachete enerate de hostul localW
%. 3$!:A!D
-rin acest chain trec pachetele care tranziteaza hostul (acesta a devenit router$ leaa
minim ; retele), -achetele care trec prin chain%ul >=1DA10 nu sunt destinate hostului
local si nici nu sunt enerate de acesta,
). P$,5!$U5IB<
.ltimul chain prin care trec pachetele$ dupa procesul de rutare, -rin acest chain trec
atat pachetele care transiteaza hostul daca acesta este 1outer cat si cele enerate de host,
#ste folosit pentruB
% modificarea pachetelor (manlin) dupa procesul de rutare$ dar inca pe hostul localW
% )5A0 ()ource 5AT & MasMueradin)W
>iecare din aceste + hoo&%uri?chain%uri (puncte de interactiune cu pachetele) se
foloseste pentru a interveni intr%un anume mod asupra pachetelor, #'ista 8 destinatii
posibile pentru un pachet functie de care acesta trece prin anumite chain%uri din cele +B
a) vine din retea si este destinat hostului localW
b) este enerat de hostul localW
c) trece prin hostul localW
5ota
Iptables ofera posibilitatea definirii de chainuri de catre utilizatori pe lana cele + chainuri
default, Acest subiect este considerat avansat si va fi tratat in amanunt in cursul CAdvanced
Linu' & I5>=)#(C disponibil de asemenea online,
+6 5a+les
>iecarui hoo&?chain 5#T>ILT#1 ii este asociat un set de reuli definite intr%un
tabel, In momentul in care un pachet ClovesteC un chain acesta este verificat de fiecare
reula din tabel,
= reula contine criterii care trebuie satisfacute de pachet si un taret precum
A((#-T$ 01=- sau )5AT, Taretul este actiunea intreprinsa daca pachetul satisface
reula din tabel, >iecare reula are un taret,
#'emplu
(erintaB 0orim sa blocam?dropam toate pachetele care vin catre serverul ))A ce ruleaza pe
hostul local si asculta pe portul T(-?;;,
Mod realizareB =rice pachet destinat hostului local va trece prin chain%ul I5-.T, Acesta
va fi si chain%ul in care intervenim pentru droparea?blocarea pachetelor ssh, Intr%un tabel
(numit filter) atasat chainului I5-.T vom adaua o reula compusa din criterii precumB
pachetul este destinat hostului local$ iar portul destinatie este ;;, Taret%ul va fi 01=-,

In mod implicit 5#T>ILT#1 ofera * tabele ce contin reuli pentru CprindereaC
pachetelor si care se ataseaza de cele + chain%uri, Tabele 5#T>ILT#1B
1. *ilter
#ste folosit doar pentru filtrarea pachetelor ( A((#-T sau 01=-) si se foloseste doar pe
chainurile >=1DA10$ I5-.T sau =.T-.T,
2. nat
#ste folosit doar pentru 5AT ()5AT si 05AT), 0oar primul pachet dintr%un stream va fi
procesat de reulile din acest tabel, Asupra celorlalte pachete se va actiona identic, )e
poate atasa de chainurile -1#1=.TI5" in cazul )5AT si -=)T1=.TI5" in cazul
05AT,
. /an(le
#ste folosit pentru manipularea?modificarea pachetelor si anume modificarea headerelor de
La!er8 si La!er* (modificare tos$ ttl etc), Acest tabel poate fi atasat de orice chain,
%. row
)e foloseste doar pentru marcarea pachetelor care nu trebuie sa fie procesate de
Cconnection trac&in s!stemC, Tabelul se poate folosi doar pentru chainurile
-1#1=.TI5" si?sau =.T-.T, Mecanismul de Cconnection trac&inC este consumator de
resurse$ astfel pentru un anumit tip de trafic se poate opri connection trac&in s!stem,
#'empluB e'cluderea traficul enerat pentru localhost
5ota
(ele * tabele descrise mai sus sunt implicite, Acestea nu pot fi sterse si nici alte tabele nu
pot fi create,
c6 5.e state /ac.ine
(onnection trac&in este componenta 5#T>ILT#1 care ofera acestuia statutul de fire<all
stateful, Acesta poate lua decizii de filtrare a pachetelor nu in functie de headerul La!er8
(I-) si La!er* (T(-?.0-) ci in functie de relatia pachetului cu celelalte pachete,
(onnection trac&in este realizat de un frame<or& din &ernel care se numeste
conntrac&, Acesta poate fi incarcat ca modul sau poate fi parte interanta a &ernelului,
conntrac& reprezinta o parte din 5#T>ILT#1 care identifica pachetele ca aflandu%se intr o
anume stare in functie de relatia cu celelalte pachete din acelasi stream, 5#T>ILT#1
defineste * stari pentru fiecare pachetB
1. B9:
-rimul pachet dintr%o cone'iune enerat de hostul local se aseste in starea 5#D,
2. 9,5A#LI,H9D
-achetul destinat hostului local ca raspuns la pachetul trimis anterior isi schimba starea in
#)TABLI)A#0 in momentul in care intra in -1#1=.TI5", )unt toate pachetele dintr o
cone'iune mai putin primul care a initiat cone'iunea si care se afla in starea 5#D,
. !9LA59D
In starea 1#LAT#0 se asesc acele pachete leate de un alt flu' de date
#'empluB in cazul >T- activ$ cone'iunea de date de pe portul ;0 ca raspuns la cone'iunea
de control initiata catre portul ;2
%. IB&ALID
)unt acele pachete ale caror header contine informatii neconcordante,
#'empluB un pachet al carui header T(- contine atat fla%ul s!n cat si fin
Informatiile pe care modulul conntrac& le foloseste pentru a sti in ce stare se aseste
un pachet$ pot fi vizualizate in ?proc?net?nfJconntrac& (>(3)
tcp 6 224
)O5J)#5T
srcG23;,26:,2,6
dstG23;,26:,2,3
sportG8;44+
[ dportG;;
H.51#-LI#0I
srcG23;,26:,2,3
dstG23;,26:,2,6 sportG;;
[ dportG8;44+
HA)).1#0I useG;
0etaliiB
tcp % protocolul de transportW
2 % valoarea campului protocolului din headerul I-W
118 % nr, de secunde in care aceasta intrare este valida, Timpul este decrementat continuu
pana cand apare trafic leat de aceasta cone'iune, Apoi timpul este resetat cu valoarea
defaultW
,EB4,9B5 % trafic doar intr%o directieW
src % ip sourceW
dst % ip destinatieW
sport % port sursaW
dport % port destinatieW
UB!9PLI9D % nu a e'istat trafic in ambele directii, In momentul in care apare trafic in
ambele directii .51#-LI#0 se inlocuieste cu A)).1#0W
A,,U!9D >la *inal6 % informatii despre aceasta cone'iune nu vor fi sterse cand se atine
nr, ma'im de cone'iuniW
5ota
>isierele referitoare la 5#T>ILT#1 apar doar dupa ce se foloseste conntrac& machine
adica dupa ce se incarca in memorie fire<all%ul ce contine reule cu referire la starile unui
pachet,
F.%. ,intaxa ipta+les
(ommanda iptables (user space tool) se foloseste pentru a comunica cu
5#T>ILT#1,
Important
2, )copul comenzii iptables este de a adaua$ stere$ inlocui$ lista$ vizualiza etc reuli din
cele * tabele standard care sunt atasate de cele + chainuri,
;, In mod default nu e'ista nicio reula in tabele$ acestea fiind oale, Implicit nu e'ista
fire<all,
8, .n pachet traverseaza in mod secvential reulile din tabelele atasate chainurilor pana in
momentul in care o reula CprindeC pachetul$ caz in care se e'ecuta TA1"#T%ul reulii,
1estul reulilor din tabel nu se mai verifica ulterior,
*, 0aca pachetul nu este prins de nicio reula din tabel se e'ecuta politica default (%-
-=LI(O) care este implicit A((#-T,
,tructura co/en0ii ipta+les esteB
iptables %t numeJtabel %=-#1ATI#JA).-1AJ(AAI5 5.M#J(AAI5 %criterii R7
TA1"#T
undeB
Bu/e ta+el;
filter
nat
ra<
manle
5ota
5umele tabelului in care se adaua reula trebuie scris cu litera mica, 0aca se omite
numele tabelului acesta este default filter,
#'emplu
iptables %t filter %A I5-.T %p tcp %%dport :0 %7 A((#-T este echivalent cuB
iptables %A I5-.T %p tcp %%dport :0 %7 A((#-T
$peratii asupra unui c.ain
%A %P adauare reula la sfarsitul tabelului atasat chainuluiW
%I %P adauare reula pe prima pozitie in tabelul atasat chainuluiW
%L %P listare reuliW
%- %P polic!$ actiunea default care se e'ecuta daca nicio reula nu prinde pachetulW
%5 %P creare chain nou definit de utilizatorW
%6 %P stere chain definit de utilizatorW
%> %P flush$ oleste reulile din tabelul atasat chainuluiW
%K %P zero$ reset countersW
5ota
=peratiile asupra reulilor din tabelele atasate chainurilor trebuie scrise cu litera mare,
#'empluB
Adaua o reula la sfarsitul tabelului filter (default daca nu se specifica) pentru chain%ul
=.T-.T care permite trimiterea de pachete catre I-%ul din spatele domeniului
<<<,invata%online,ro
2, iptables %A =.T-.T %d <<<,invata%online,ro %7 A((#-T
Adaua polic! 01=- pentru I5-.T, =rice pachet destinat hostului local care nu este
acceptat de nicio reula din tabelul filter de pe chainul I5-.T este dropat
;, iptables %- I5-.T 01=-
)tere toate reulile din tabelul filter (default daca nu se specifica) de pe chainul
>=1DA10I5"
8, iptables %> >=1DA10I5"
Bu/e C.ain;
-1#1=.TI5"
I5-.T
=.T-.T
>=1DA10
-=)T1=.TI5"
5ota
5umele chainului se scrie cu litera mare
#'empluB
2, Adauam o reula in tabelul nat din -=)T1=.TI5" care realizeaza )5AT, I-%ul
privat 20,0,0,8 este inlocuit cu ip%ul public al ruterului linu' care este :0,0,0,20 iptables %t
nat %A -=)T1=.TI5" %o eth0 %s 20,0,0,8 %7 )5AT %%to%source :0,0,0,20
;, 0ropeaza toate pachetele enerate de hostul local catre orice server http care daca acesta
asculta pe portul :0 iptables %A =.T-.T %p tcp %%dport :0 %7 01=-
Criterii
%s I-Jsursa
#'empluB %s :0,0,0,2 sau %s 23;,26:,0,0?;* sau %s 0?0, )pecifica I-%ul sursa din pachet, 0?0
inseamna orice I-
%d I-Jdest
#'empluB %d 2:;,0,20,2 sau %d 20,20,0,0?;6 sau %d 0?0 %P specifica I-%ul destinatie din
pachet, 0?0 inseamna orice I-
%p protocol
#'empluB %p tcp sau %p udp sau %p icmp
%%sport portJsursa
#'empluB iptables %I I5-.T %p udp %%sport +8 %7 01=- %P dropeaza toatea pachetele .0-
care sunt destinante hostului local si vin de la un server 05) (port +8)
%%dport portJdest
#'empluB iptables %A >=1DA10 %p tcp %%dport :0:0 %7 01=- %P dropeaza toata
pachetele catre portul tcp :0:0 care tranziteaza ruterul linu'
%i interfataJin
#'empluB iptables %A I5-.T %i eth0 %7 A((#-T %P accepta toate pachetele destinate
hostului local care intra pe interfata eth0
%o interfataJout
#'empluB iptables %t manle %A =.T-.T %o eth2 %7 TTL %%ttl%set 64 %P modifica TTL%ul
din headerul I- setand valoarea 64 pentru toate pachetele enerate de hostul local care ies
pe interfata eth2
5ota
Intre criterii unei reuli e'ista )I loic, Acestea trebuie sa fie adevarate simultan pentru ca
pachetul sa fie CprinsC de reula si sa se e'ecuta TA1"#T%ul reulii,
5ar(et
)pecifica actiunea intreprinsa asupra pachetului daca criteriile sunt indeplinite,
A((#-T %P pachetul este acceptatW
01=- %P pachetul este dropatW
1#E#(T %P pachetul este re7ectat si hostul raspunde cu un mesa7 de eroare surseiW
L=" %P loheaza?salveaza informatii despre pachet intr%un fisierW
LIMIT %P limiteaza nr, de pachete pe unitatea de timpW
)5AT %P realizeaza source natW
MA)`.#1A0# %P realizeaza source natW
05AT %P realizeaza destination nat?port for<ardinW
TTL %P modifica TTL din pachet (headerul I-)W
5ota
5umele taretului se scrie cu litera mare,
Important
(uvintele cheie de mai sus trebuie scrise cu litera mare sau litera mica intocmai$
altfel rezulta o eroare,
1ezumatB
% numele tabelului se scrie cu litera mica (%t nat)W
% operatia asupra chain%ului se scrie cu litera mare (%A)W
% numele chain%ului se scrie cu litera mare (>=1DA10)W
% criteriile se scriu cu litera mica (%s 23;,26:,0,0?26)W
% taretul se scrie cu litera mare (%7 01=-)W
F.%.% ,cenarii si exe/ple
-entru a crea un fire<all folosind 5#T>ILT#1$ sinura modalitate in Linu'$ e'ista
mai multe posibilitatiB
1. 3olosind scripturi deDa create precu/ -irestarter
Aceste scripturi contin o sectiune de confiurare unde adminul seteaza modul in
care fire<all%ul va opera (alee porturile pe care asculta severele locale si catre care se pot
conecta utilizatorii$ seteaza I-%urile de la care se accepta cone'iuni etc),
)criptul odata rulat enereaza in spate comenzi iptables, Modalitatea este
recomandata pentru adminii incepatari care nu doresc un control total al modului in care
fire<all%ul opereaza,
2. 3olosind aplicatii (ra*ice disponi+ile in <B$'9 sau -D9.
)copul cursului este de a forma administratori de sistem pentru administrarea de
servere, )erverele Linu' ruleaza in runlevel 8 fara mod rafic$ iar intreaa administrare se
face remote folosind ssh din consola in mod te't,
. Creand propriul *irewall de la 0ero.
Aceasta este modalitatea cea mai recomandata, (hiar daca la un moment dat vom
folosi din anumite considerente sau politici stabile un script eneral ata facut$ pentru o
buna inteleere a modului in care 5#T>ILT#1 functioneaza orice admin trebuie sa creeze
si sa testeze un fire<all de la zero,
Important
(omenzile iptables se pot e'ecuta direct in consola, -entru o buna oranizare
metoda cea mai folosita este urmatoareaB se creaza im script care contine comenzile
iptables si care se e'ecuta,
5ota
La primul contact cu 5#T>ILT#1 si iptables$ acestea pot parea e'trem de comple'e cu
multe optiuni reu de retinut, 0upa cateva e'ercitii sinta'a iptables si modul de oranizare
se va clarifica si va deveni natural (presupunand o buna cunoastere a stivei T(-?I-),
16 3irewall +asic
Important
(rearea unui fire<all eficient folosind comanda iptables poate avea loc doar dupa
inteleerea in profunzime a conceptelor prezentate in sectiunile anterioare, #'ersati doar
dupa ce notiunile de (AAI5$ tabele$ reuli$ traversarea chainurilor etc va sunt foarte clare Q
5ota
1eulile unui fire<all se scriu intr%un fisier te't$ caruia i se seteaza ulterior dreptul de
e'ecutie si se ruleaza pentru a fi incarcat in memorie (e'ceptie acolo unde este precizat ca
rularea comenzii iptables are loc direct din consola),
5ota
-rima reula dintr%un fire<all este aceea care stere orice fire<all e'istent ( iptables %>),
Altfel rulari succesive ale scriptului determina incarcarea aceleiasi reuli de mai multe ori,
,cenariul 1
)e doreste obtinerea de help pentru comanda iptables pentru diferite optiuni ale
acesteia,
5ota
In eneral se completeaza comanda iptables pana la momentul la care dorim obtinerea
helpului apoi se foloseste optiunea %h, (omanda se e'ecuta direct in consola
a) I(M- help$ specificarea tipurilor I(M-
iptables %p icmp %h
=utput eneratB
I(M- v2,*,0
optionsB
%%icmp%t!pe HQI t!pename match icmp t!pe (or numeric t!pe or t!pe?code)
@alid I(M-
T!pesB
an! echo%repl! (pon)
destination%unreachable
net<or&%unreachable
host%unreachable
protocol%unreachable
port%unreachable
framentation%needed
source%route%failed
net<or&%un&no<n
host%un&no<n
net<or&%prohibited
host%prohibited
T=)%net<or&%unreachable
T=)%host%unreachable
communication%prohibited
host%precedence%violation
precedence%cutoff
source%Muench redirect
net<or&%redirect
host%redirect
T=)%net<or&%redirect
T=)%host%redirect
echo%reMuest (pin)
router%advertisement
router%solicitation
time%e'ceeded (ttl%e'ceeded)
ttl%zero%durin%transit
ttl%zero%durin%reassembl!
parameter%problem
ip%header%bad
reMuired%option%missin
timestamp%reMuest
timestamp%repl!
address%mas&%reMuest
address%mas&%repl!
b) =btinerea de informatii despre filtrarea dupa MA( (doar in LA5), )e foloseste optiunea
%m mac, )e poate filtra doar dupa mac sursa si doar pe I5-.T,
iptables %m mac %h
=utput eneratB
MA( v2,*,0 optionsB %%mac%source HQI 66B66B66B66B66B66 Match source MA(
address
c) =btinerea de informatii despre optiunile referitoare la T(- (specificarea porturilor sursa
si destinatie dupa care se filtreaza$ filtrarea dupa flauri etc)
iptables %p tcp %h
=utput eneratB
T(- v2,*,0
optionsB
%%tcp%flas HQI mas& comp match <hen T(- flas & mas& GG comp (>lasB )O5 A(/ >I5
1)T .1" -)A ALL 5=5#) HQI
%%s!n match <hen onl! )O5 fla set (eMuivalent to %%tcp%flas )O5$1)T$A(/$>I5 )O5)
%%source%port HQI portHBportI
%%sport ,,, match source port(s)
%%destination%port HQI portHBportI
%%dport ,,, match destination port(s)
%%tcp%option HQI number match if T(- option set
,cenariul 2
)e doreste crearea unui fire<all stateful pentru sistem Linu' folosit ca 0es&top, -e
acesta nu ruleaza servere$ iar utilizatorul poate comunica cu orice serviciu e'tern, (erinteB
% hostul poate enera orice fel de trafic T(-$ .0- sau I(M- catre orice I- e'ternW
% pachetele destinate hostului sunt acceptate doar daca reprezinta raspuns la traficul enerat
din interiorW
% pachetele care reprezinta initializarea unei cone'iuni din e'terior catre interior sunt
filtrateW
TQ?bin?bash
Tstererea tuturor reulitor din tabelul filter din toate (AAI5%urile
iptables %>
Tpermitea tuturor pachetelor enerate de host (starea 5#D$#)TABLI)A#0 si 1#LAT#0)
iptables %A =.T-.T %m state %%state 5#D$#)TABLI)A#0$1#LAT#0 %7 A((#-T
Tpermitea pachetelor care se intorc catre host si nu reprezinta initializarea unei
cone'iuni(starea #)TABLI)A#0 si 1#LAT#0)
iptables %A I5-.T %m state %%state #)TABLI)A#0$1#LAT#0 %7 A((#-T
Tsetare polic! 01=- pe I5-.T si =.T-.T, -achetele care nu sunt prinse de cele ; reuli
de mai sus sunt dropate
iptables %- I5-.T 01=- iptables %- =.T-.T 01=-
,cenariul
0orim crearea unui fire<all statefull pentru 0es&top pe care ruleaza si un server
))A care asculta pe portul T(-?;;,
(erinteB
% hostul poate enera orice fel de trafic T(-$ .0- sau I(M- catre orice I- e'tern
pachetele destinate hostului sunt acceptate doar daca reprezinta raspuns la traficul enerat
din interior userul se conectaza uneori la host prin ))A de la un anumit I- (#'empluB I- ul
:0,0,0,2 setat in locatia de unde se conecteaza userul)
% pachetele care reprezinta initializarea unei cone'iuni din e'terior (e'ceptand ))A de la
I-%ul de mai sus) catre interior sunt filtrate
TQ?bin?bash
Tstererea tuturor reulitor din tabelul filter din toate (AAI5%urile
iptables %>
Tpermiterea pachetelor ))A din e'terior catre interior de la I- :0,0,0,2
iptables %A I5-.T %p tcp %%dport ;; %s :0,0,0,2 %7 A((#-T
Tpermitea pachetelor enerate de host (starea 5#D$#)TABLI)A#0 si 1#LAT#0)
iptables %A =.T-.T %m state %%state 5#D$#)TABLI)A#0$1#LAT#0 %7 A((#-T
Tpermitea pachetelor care se intorc catre host (starea #)TABLI)A#0 si 1#LAT#0)
iptables %A I5-.T %m state %%state #)TABLI)A#0$1#LAT#0 %7 A((#-T
Tsetare polic! 01=- pe I5-.T si =.T-.T, -achetele care nu sunt prinse de cele ; reuli
de mai sus sunt dropate
iptables %- I5-.T 01=- iptables %- =.T-.T 01=-
,cenariul %
)e doreste oprirea oricarui fire<all care ruleaza pe host cu stererea oricarei
confiuratii de )5AT sau 05AT sau de modificare de pachete,
TQ?bin?bash
Tstererea tuturor reulilor din tabelul filter de pe toate chainurile
iptables %t filter %>
Tstererea tuturor reulilor din tabelul nat de pe toate chainurile
iptables %t nat %>
Tstererea tuturor reulilor din tabelul manle de pe toate chainurile
iptables %t manle %>
Tsetarea polic! A((#-T pe toate chainurile unde se poate realiza filtrare
(I5-.T$=.T-.T si >=1DA10)
iptables %- I5-.T A((#-T iptables %- =.T-.T A((#-T iptables %- >=1DA10
A((#-T
,cenariul )
>iltrarea dupa MA(
(erinteB
% se doreste acceptarea de pachete doar de la un sinur MA(
% scenariu poate fi util cand se doreste limitarea hosturilor cu care poate comunica un
% server in LA5$ sau comunicarea doar cu default ate<a! si deci doar pe Internet
TQ?bin?bash
iptables %>
Tframe%urile cu mac%ul sursa specificat sunt permite pe I5-.T
iptables %A I5-.T %i eth0 %m mac %%mac%source 00B2AB3;B36B2:B+: %7 A((#-T
Tpolic! pe I5-.T este 01=- (restul frame%urilor sunt filtrate)
iptables %- I5-.T 01=- Tpe ouput se poate lasa polic! A((#-T iptables %- =.T-.T
A((#-T
,cenariul 2
Listarea unui fire<all sau verificare fire<all care ruleaza, (omanda se e'ecuta
direct in consola,
iptables %vnL
=utputul acestei comenzi ne indicaB
% polic! de pe fiecare (AAI5
% reulile din tabelele atasate chain%urilor
% nr de pachete prinse de fiecare reula
(omanda de mai sus listeaza toate reulile din tabelul filter (este default) de pe
toate chainurile, 0aca se doreste listarea reulilor din tabelul nat sau manle se folosesteB
iptables %t nat %vnL
,cenariul 8
.n host Linu' a fost transformat in 1outer pentru conectarea unui LA5 la Internet,
Acesta este confiurat cu ; placi #thernet si realizeaza 5AT, )e doreste modificarea TTL%
ului inainte procesului de rutare
(erinteB
%un I)- pentru nu permite unui client sa creeze o retea locala si deci pentru a impune
conectarea unui sinur calcular la Internet ar putea trimite toate pachetele catre client cu
TTLG2, In momentul in care se conecteaza un 1uter$ acesta va decrementa TTL%ul
pachetelor I- si fiindca acesta a7une la zero$ ruterul va arunca pachetele
%se doreste setarea TTL pentru toate pachetele primite de router la 6* (valoarea default pe
Linu') inaintea procesului de rutare
TQ?bin?bash
Torice retula pentru manipularea pachetului se adaua in tabelul manle, >iind se doreste
modificarea TTL inaintea procesului de rutare se foloseste chainul -1#1=.TI5", )e mai
poate folosi si =.T-.T pentru modificarea ttl%ului pentru pachetele trimise inaintea
procesului de rutarea sau -=)T1=.TI5" pentru modificare dupa procesul de rutare
iptables %t manle %A -1#1=.TI5" %i eth0 %7 TTL %%ttl%set 6*
,cenariul F
Loarea de pachete
(erintaB
% se doreste loarea tuturor pachetele de tip ATT- care sunt enerate de host in vederea
analizarii ulterioare a site%urilor vizitate sau pentru analiza continutului headerelor acestora
TQ?bin?bash
Tse foloseste taretul L="
T%%lo%level specifica facilitatea s!slo folosita
T%%lo%prefi' specifica un strin care se va asi in fata fiecarui pachet loat pentru o
identificare mai usoara
iptables %A =.T-.T %p tcp %%dport :0 %7 L=" %%lo%level info %%lo%prefi' CATT- enerat
de hostC
5ota
-entru vizualizarea pachetelor poate fi rulata comanda dmes fiindca se foloseste
facilitatea &ernel din s!slo, Intr%un setup profesional acestea informatii trebuie redirectate
catre un fisier special, -entru aceasta este nevoie de confiurarea s!slo, -entru detalii
cititi capitolul CManaementul LourilorC a acestui curs,
26 3irewall a1ansat
,cenariu 1
)e doreste crearea unui fire<all pentru un server din LA5
(erinteB
% pe host ruleaza server ssh (tcp?;;)$ http (tcp?:0)$ https (tcp?**8)$ smtp (tcp?;+)$ pop
(tcp?220)$ imap (tcp?2*8) si dns (dns?+8), Toate aceste servicii si doar acestea trebuie sa fie
accesibile userilor din LA5
% fire<all%ul trebuie sa dropeze si sa loheze pachetele invalide
% serverul poate accesa pe internet doar servere <eb (pentru update) si dns (pentru Muer!
iterative sau pentru a folosi un for<arder)
TQ?bin?bash
T@A1IABL# )#(TI=5
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T(-JI5JLA5GC;; ;+ :0 220 2*8 **8C
.0-JI5JLA5GC+8C
T(-J=.TJDA5GC:0C
.0-J=.TJDA5GC+8C
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
Tsterere orice reula din toate tabelele de pe toate chainurile
iptables %t filter %>
iptables %t nat %>
iptables %t manle %>
Tloarea pachetelor invalide trimise sau primite de server
iptables %A I5-.T %m state %%state I5@ALI0 %7 L=" %%lo%level info %%lo%prefi' CI5-.T
I5@ALI0 -A(/#TC
iptables %A =.T-.T %m state %%state I5@ALI0 %7 L=" %%lo%level info %%lo%prefi'
C=.T-.T I5@ALI0 -A(/#TC
Tdropara pachetelor invalide trimise sau primite de server
iptables %A I5-.T %m state %%state I5@ALI0 %7 01=-
iptables %A =.T-.T %m state %%state I5@ALI0 %7 01=-
Tciclu for pentru adauarea unei reuli pentru fiecare port tcp permis (cone'iune din LA5
catre server)
for tcpJlan in
do
Tpermiterea pachetelor din LA5 catre server
iptables %A I5-.T %s 23;,26:,0,0?;* %p tcp %%dport %7 A((#-T
Tpermitearea raspunsului la pachetele din LA5 catre server
iptables %A =.T-.T %d 23;,26:,0,0?;* %p tcp %%sport %7 A((#-T
done
Tciclu for pentru adauarea unei reuli pentru fiecare port tcp permis (cone'iune din LA5
catre server)
for udpJlan in
do
iptables %A I5-.T %s 23;,26:,0,0?;* %p udp %%dport %7 A((#-T
iptables %A =.T-.T %d 23;,26:,0,0?;* %p udp %%sport %7 A((#-T
done
Tciclu for pentru adauarea unei reuli pentru fiecare port tcp permis (cone'iuni de la
server catre Internet)
for tcpJ<an in
do
iptables %A =.T-.T %d 0?0 %p tcp %%dport %7 A((#-T
iptables %A I5-.T %s 0?0 %p tcp %%sport %7 A((#-T
done
Tciclu for pentru adauarea unei reuli pentru fiecare port udp permis (cone'iune de la
server catre Internet)
for udpJ<an in
do
iptables %A =.T-.T %d 0?0 %p udp %%dport %7 A((#-T
iptables %A I5-.T %s 0?0 %p udp %%sport %7 A((#-T
done
Tadauare reuli pentru pachete I(M- din LA5 (userii din LA5 pot da pin la server,
Acesta nu raspunde la pin de pe Internet)
iptables %A I5-.T %s 23;,26:,0,0?;* %p icmp %7 A((#-T
iptables %A =.T-.T %d 0?0 %p icmp %7 A((#-T
Tsetare polic! 01=- pentru pachetele care nu au fost permise de reulile de mai sus
iptables %- I5-.T 01=- iptables %- =.T-.T 01=- iptables %- >=1DA10 01=-
,cenariul 2
)e doreste crearea unui fire<all pentru un 1outer Linu', 1outerul este un host
Linu' cu ; interfete #thernet, Interfata eth0 este de LA5 iar interfata eth2 este de DA5,
I)-%ul furnizeaza un sinur I- public$ iar subnetul de LA5 este 23;,26:,0,0?;* )e
considera ca 1outerul este de7a confiurat corect pentru 5AT,
(erinteB
% userii din LA5 pot accesa pe Internet doar site%uri <eb$ pot sa%ti citeasca e%mailul
folosind un client dedicat precum Mozilla Thunderbird sau se pot conecta prin ssh la alte
servere, Alte servicii nu trebuie sa fie accesibile
% 1outerul nu poate fi verificat cu pin de pe Internet ci doar din LA5
TQ?bin?bash
T@A1IABL# )#(TI=5
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
LA5JA((#))GC;; ;+ :0 220 2*8 **8C
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
Tsterere orice reula din toate tabelele de pe toate chainurile
iptables %t filter %>
iptables %t nat %>
iptables %t manle %>
Tloarea pachetelor invalide trimise sau primite de server
iptables %A I5-.T %m state %%state I5@ALI0 %7 L=" %%lo%level info %%lo%prefi' CI5-.T
I5@ALI0 -A(/#TC
iptables %A =.T-.T %m state %%state I5@ALI0 %7 L=" %%lo%level info %%lo%prefi'
C=.T-.T I5@ALI0 -A(/#TC
Tdropara pachetelor invalide trimise sau primite de server
iptables %A I5-.T %m state %%state I5@ALI0 %7 01=-
iptables %A =.T-.T %m state %%state I5@ALI0 %7 01=-
Tciclu for pentru permiterea pachetelor ce au voie sa tranziteze router
for port in
do
Tpermiterea pachtelor in directia LA5%PDA5
iptables %A >=1DA10 %s 23;,26:,0,0?;* %p tcp %%dport %7 A((#-T
Tpermiterea pachetelor in directia DA5%PLA5
iptables %A >=1DA10 %d 23;,26:,0,0?;* %p tcp %%sport %7 A((#-T
done
Tpermiterea pachetelor 05) din LA5 catre DA5 (altfel userii nu pot accesa site%uri
folosind nume de domenii)
iptables %A >=1DA10 %s 23;,26:,0,0?;* %p udp %%dport +8 %7 A((#-T
iptables %A >=1DA10 %d 23;,26:,0,0?;* %p udp %%sport +8 %7 A((#-T
Tblocarea pachetelor I(M- de timp echo%reMuest (t!pe :) daca sursa este diferita de
23;,26:,0,0?;*
iptables %A I5-.T Q %s 23;,26:,0,0?;* %p icmp %%icmp%t!pe : %7 01=-
Tsetare polic! 01=- pentru pachetele care nu au fost permise de reulile de mai sus
iptables %- >=1DA10 01=-
!outin( >,BA56
0e cele mai multe ori utilizatorii casnici folosesc o cone'iune broadband de tip
A0)L sau (aT@ pentru conectarea la Internet,
5ota
In ultima vreme datorita cresterii vitezei oferite de A0)L$ acest timp de tehnoloie de
DA5 incepe sa fie folosita si pentru companii, A0)LF ofera un Band<idth 0o<nstream
de peste ;;Mbs,
Indiferent de tehnoloia de DA5 folosita I)-%ul furnizeaza un sinur I- public sau
in cel mai bun caz cateva I-%uri publice,
)olutia folosita pentru a lea mai multe calculatoare la Internet (neavand atatea I-%
uri publice cate calculatoare) este confiurea unui 1outer care sa realizeze 5AT (5et<or&
Address Translation),
)e foloseste asfel un router dedicat sau un calculator care ruleaza Linu' cu cel putin
; placi de retea #thernet (leaa ; retele si anume LA5%ul si Internetul), = interfata si
anume cea care se conecteaza cu providerul se confiureaza cu I-%ul public$ iar cealalata
interfata numita interfata de LA5 se confiureaza cu un I- privat,
5ota
I#T> a definit in 1>( 232: 8 clase de I-%uri private care pot fi folosite in mod liber pentru
adresarea unui LA5,
Acestea suntB
20,0,0,0%20,;++,;++,;++
24;,26,0,0%24;,82,;++,;++
23;,26:,0,0%23;,26:,;++,;++
-rocesul prin care hosturile din LA5 (din spatele routerului) pot comunica pe
Internet si anume procesul de 5AT presupune inlocuirea I-%ului privat de catre router din
pachetele enerate de hosturile din LA5 cu unicul I- public si trimiterea acestora pe
Internet, #fectul este ca pe Internet intre LA5%ul este ascuns si nu se poate determina ce
host din LA5 a enerat pachetul sau ca e'ista LA5%ul, -achetele par sa vina de la 1outer,
Avanta7e 5ATB
#conomia de I-%uri publice, (u un sinur I- public putem crea o retea localta
conectata la Internet formata din zeci sau sute de hosturiW
)ecuritate, Lan%ul este izolat$ nu se pot initializa cone'iuni din e'terior catre un
host din interior fara confiuratii speciale ale routerului (port for<ardin)W
.n host Linu' poate fi transformat intr%un router nededicat, (omponenta soft<are
care realizeaza 5AT este 5#T>ILT#1 (unica posibilitatea),
5ota
-rocesul de 5AT descris mai sus este referit de multe ori ca )5AT (source 5AT) pentru
faptul ca se modifica I-%ul sursa privat cu I-%ul public, Aceasta referire nu este in
totalitate corecta fiindca )5AT este insotit intotdeauna de 05AT (destination 5AT) si
anume la intoarcerea pachetului de pe Internet se inlocuieste I-%ul destinatie public cu I-%
ul destinatie privat$ iar pachetul este trimis la hostul din LA5 de catre 1outer
0in punct de vedere al confiurarii 5#T>ILT#1 urmatoarele aspecte sunt
importanteB
% )5AT se realizeaza pe chainul -=)T1=.TI5" folosind tabelul nat care este suficient sa
contina o sinura reulaW
% se foloseste taretul )5AT, )e poate folosi si taretul MA)`.A1A0# in momentul in
care I-%ul public nu este static ci este obtinut dinamicW
% default hostul Linu' nu ruteaza, -entru a fi transformat intr%un router trebuie ca in fisierul
?proc?s!s?net?ipv*?ipJfor<ard sa se aseasca valoarea 2 (unu)W
#'emplu transformare host in router si confiurare pentru )5AT (confiuratie completa)B
Tpresupunem ca ip%ul public este ;28,;8;,8;,8$ subnetul local este 20,0,0,0?;* iar interfata
de DA5 se numeste eth0
iptables %t nat %A -=)T1=.TI5" %o eth0 %s 20,0,0,0?;* %7 )5AT %%to%source ;28,;8;,8;,8
Tactiveaza procesul de rutare
echo C2C P ?proc?s!s?net?ipv*?ipJfor<ard
5ota
)e recomanda rularea scriptului de mai sus la butare automat folosind scripturi de
manaement a serviciilor din directorul ?etc?init,d
Port 3orwardin(>DBA56
-rin procesul de 5AT intrea retea privata din spatele routerului este ascunsa pe
Internet, 0e multe ori se doreste conectarea la un serviciu ( #'empluB un server <eb) care
ruleaza pe un host din LA5 care este confiurat cu I- privat ( #'empluB 20,0,0,2)
-rocesul prin care 1outerul se confiureaza astfel incat sa ofere posibilitatea
conectarii de pe Internet la un host din LA5 cu I- privat se numeste 05AT (0estination
5et<or& Address Translation) sau -ort >or<ardin,
#'emplu topoloieB
1outerul are confiurat un I- public pe interfata de DA5 ( #'empluB ::,0,0,2) si
un I- privat pe interfata de LA5 ( #'empluB 20,0,0,2), In LA5 e'ista un server <eb care
asculta pe portul :0 si care are confiurat I-%ul 20,0,0,20, .tilizatorii de pe Internet care
doresc conectarea la serverul <eb privat nu%l pot accesa fara ca routerul sa fie confiurat
pentru 05AT,
-entru userii de pe Internet reteaua 20,0,0,0?;* si implicit 20,0,0,20 sunt ascunse
(nu e'ista),
Modul de functionare 05AT este urmatorulB userul de pe Internet se conecteaza la
I-%ul public al routerului si anume ::,0,0,2 si portul :0, 1outerul in momentul in care
primeste pachete catre portul :0 le redirecteaza catre serverul din LA5 20,0,0,20
modificand I-%ul destinatie din fiecare pachet (::,0,0,2 se transforma in 20,0,0,20) % de
unde si numele de 05AT, -achetele a7un astfel la serverul <eb intern care raspunde catre
I-%ul sursa public (acesta nu se modifica),
5ota
0in perspectiva clientilor de pe Internet acestia se conecteaza la serverul <eb care ruleaza
pe router si nu la serverul <eb din spatele routerului,
0in punct de vedere al confiurarii 5#T>ILT#1 urmatoarele aspecte sunt importanteB
%05AT se realizeaza pe chainul -1#1=.TI5" folosind tabelul nat care este suficient sa
contina o sinura reula, (hainul folosit este -1#1=.TI5" fiindca reulile din acesta
sunt evaluate inainte de procesul de rutare, In momentul in care are loc decizia de rutarea$
routerul trebuie sa aiba acces la I-%ul final si anume cel privat pentru o deciezie de rutare
corectaW
% se foloseste taretul 05ATW
#'emplu confiurare router pentru 05ATB
% Tpresupunem ca I-%ul public este ::,0,0,2 iar I-%ul serverului <eb din LA5 este
20,0,0,20, -achetele din e'terior catre ::,0,0,2 vor fi redirectate la 20,0,0,20
iptables %t nat %A -1#1=.TI5" %p tcp %d ::,0,0,2 %%dport :0 %7 05AT %%to%destination
20,0,0,20
Important
-entru ca 05AT sa functioneza 1outerul linu' trebuie sa fie confiurat si pentru
)5AT, Altfel pachetele ca raspuns ale serverului <eb din LA5 care au ip sursa privat nu ar
putea fi trimise catre I-%ul public destinatie care este pe Internet,
Capitolul H ,iste/ul de e-'ail
>undamente
In conte'tul mesa7elor electronice un e%mail este format dinB envelope si content (continut),
I, #nvelope reprezinta un <rapper (invelitoare) in care se aseste mesa7ul format din header
si bod! si este folosita de serverul )TM- pentru a sti cum sa livreze e%mailul, .n envelope
contine cel putin envelope sender si envelope recipient,
II, (ontent (continut) este format dintr%un header si optional un bod!,
2, Aeaderul are o structura aparte definita in diferite 1>(%uri, (ontine informatie tip
metadata precum 0ate$ To$ >rom etc
Aeadere obliatoriiB
a) 0ateB specifica data la care mesa7ul a fost compus si trimis, 0aca clientul omite acest
camp serverul il adaua automatW
b) >romB specifica identitatea celui care trimite mesa7ul, 0aca clientul omite acest camp
erverul de email il adaua automatW
Alte headere optionaleB
c) Messae%IdB identificator unic pentru mesa7 enerat de client sau de server daca clientul
il omiteW
d) ToB identitatea destinatarului sau destinatarilor principali (primar! recipients), 0aca
clientul omite acest camp serverul )MT- -ostfi' va adaua valoarea din parametrul
undisclosedJrecipientsJheaderW
#'empluB undisclosedJrecipientsJheader G ToB dan
e) )ub7ectB descrierea pe scurt e mesa7uluiW
f) (cB identitatea destinatarilor secundari (secondar! recipientsW)
) 1epl!%ToB indica adresa la care clientul trebuie sa trimita raspuns la mesa7W
h) (ontent%t!peB indica structura bod! (1>( 20*3)W
i) 1eceivedB >iecare MTA ()M-T )erver) care primeste mesa7ul adaua un astfel de
Aeader pentru a indica de unde$ cand si cum a a7uns mesa7ul, Aceasta informatie este foarte
utila in detectarea rutei mesa7uluiW
Inafara acestor Aeadere standard e'ista 6%Aeaders care au rolul de furniza informatie non%
standard$ optionala,
#'empluB 6%Mailer$ 6%-riorit!$ 6%=riinal%To etc
;, Bod! reprezinta o secventa de caractere care urmeaza dupa header separate de aceasta
print%o linie oala, Atasamentele fac de asemenea parte din Bod! si reprezinta o
reprezentare te't?A)(II codata,
8, Attachments?Atasamente sunt in eneral fisiere binare (e'ecutabile$ audio$ video etc)
care sunt codate dupa anumite standarde in format A)(II si fac parte din Bod!,
5ota
MIM# #ncodin % Multipurpose Internet Mail #'tensions % reprezinta un sistem?standard
de codare a informatiei binare in format te't,
@aloarea din headerul (ontent%t!pe care indica structura bod! poate fiB
te't?plain %P mesa7 te't
multipart?mi'ed %P mesa7 te't F atasament non%te't (e'ecutabile$ audio$ video etc)
messae?rfc:;; %P repl! cu mesa7ul oriinal atasat
In cazul tipului multipart e'ista un boundar! care delimiteaza fiacare parte a bod!B te't de
atasament2$ de atasament; etc
#'empluB boundar! este %%G%::=d6vc#K&M?T8!D=E6
(ontent%T!peB multipart?mi'edW
boundar!GCG%::=d6vc#K&M?T8!D=E6C
0ateB Ded$ 80 Ean ;00: ;0B;:B;2 F0;00
Messae%IdB_2;02424402,4648,;+,camelVtoshibaP
Mime%@ersionB 2,0 6%MailerB #volution ;,2;,2 %%G%::=d6vc#K&M?T8!D=E6
(ontent%T!peB te't?plain (ontent%Transfer%#ncodinB 4bit unu doi trei %%G
::=d6vc#K&M?T8!D=E6
(ontent%0ispositionB attachmentW
filenameGcat
(ontent%T!peB application?'%e'ecutableW
nameGcat
(ontent%Transfer%#ncodinB base6*
f0@M1#BA`AAAAAAAAAAAAIAA<ABAAAAAI<#(0`AAA(s`AAAAAA
0`AIAAAA(A"<AaAAOAA
AAAA5IA#(0)ABA7AAAA*AAAAA.AAAA#AAAAA<AAAB`BAAA.``I>
##(BMAAAATAAAABAAAAA %%G%::=d6vc#K&M?T8!D=E6%%
#'ista ; standarde principale de codare sau transformare a atasamentelor binare in
caractere A)(II?te'tB
2, base6*
#ste cel mai folosit standar de codare definit in 1>( 2*;2 si 1>( ;0*+, )e folosesc
caracterele a%zA%K0%3 precum CFC si C?C, (aracterul CGC are un rol special,
.tilitarele mpac& si munpac& realizeaza codarea unui fisier binar in ascii,
#'empluB mpac& %o output,t't a,zip
(odarea?decodarea informatiei se realizeaza de catre M.A (clientul de e%mail), Tot acesta
adaua headere specifice,
Mime%@ersionB 2,0 %%G%2Mt*d4O0<)!r&'Mou=n6
(ontent%0ispositionB attachmentW
filenameGM-62;%en,pdf ?Nt!pe?subt!pe of the messae contentN?
(ontent%T!peB application?pdfW
nameGM-62;%en,pdf
(ontent%Transfer%#ncodinB base6*
E@B#1i0'L7.5EeL7z3M5(7I8=T&M(BvOmo-0<vT"luKD>!a6plK(A'L0<M
#zM7I<M(3-I0I*
M0Ov1)A0M0&<5i3=I0OzL2`M7A857#8M)3II>sM7M'5iA'50I!6T*F0D@
K"3ia0I(AI(A
;, Muated%printable
Important
-e scurt un e%mail este format din #nvelope si (ontent, (ontent este format din Aeadere
si Bod!,
-rotocolul )MT- este un protocol Cte't onl!C, (hiar daca userul trimite un email care
contine imaini sau atasamente binare cum ar fi fisiere #'cel$ acestea sunt transformate in
caractere A)(II la sursa si trimise catre destinatie dupa un standard de codare (base6*),
0estinatia decodeaza caracterele A)(II dupa acelasi standard in informatia binara
oriinala,
1ela!in
#ste procesul prin care un server de e%mail accepta mesa7e pentru a le transmite, .n server
trebuie sa faca rela! doar pentru userii din reteaua locala sau doar dupa ce acesta a
autentificat cumva userii, Altfel serverul poate fi folosit de spammeri pentru a trimite
mesa7e nesolicitate,
-romiscuous rela!in este procesul prin care un server accepta emailuri din afara retelei
locale sau de la useri neautentificati si le transmite la destinatii aleatoare, Anumite servere
(sendmail) erau confiurate default pana nu de mult ca promiscuous rela!,
0efinitie
5otiunea de 1e7ect sau Bounce reprezinta procesul de trimiterea a unui mesa7 de eroare
inapoi la destinatar in momentul in care un e%mail nu poate fi livrat,
Inbo'
1eprezinta locatia in care se asesc e%mailurile fiecarui utilizator pe server, 0efault acesta
se aseste in directorul ?var?spool?mail intr%un fisier cu numele utilizatorului,
#'empluB ?var?spool?mail?dan sau ?var?spool?mail?paul,
In cazul in care se foloseste IMA- si se creaza foldere$ acestea se asesc in
?home?.)#15AM#?mail, #'empluB ?home?dan?mail?)ent sau ?home?paul?mail?-roiecte
#'ista ; formate pentru Inbo'B
2, mbo'
#ste formatul clasic si inca foarte folosit, Toate e%mailurile din Inbo' se asesc intr%un
)I5".1 fisier pe server, ( #'empluB ?var?spool?mail?dan),
#'ista un separator folosit de clientul de e%mail pentru a diferentia intre doua e%mailuri,
0ezavanta7ul acestei metode este ca daca un sinur email se corupe intre Inbo' devine
inutilizabil, In plus performantele sunt scazute fiindca in momentul citirii unui e%mail$ de
fapt clientul de e%mail citeste o anumita portiune din marele fisier Inbo'$ care reprezinta e%
mailul respectiv,
;, mdir
#ste un concept nou introdus de Mmail prin care fiecare e%mail se aseste in propriul fisier,
Avanta7ele sunt performanta crescuta si securitatea,
(omponentele
M.A?M0A?MTA
In comparatie cu alte servere unde un sinur produs ofera o solutie finala$ un sistem de
email este format din mai multe componente care lucreaza impreuna pentru a livra un e
mail de la sursa ()ender) la destinatie (1ecipient),
(omponentele unui sistem de e%mail suntB
2, MTA % Mail Transfert Aent
#ste aplicatia server folosit pentru trimiterea si primirea de e%mailuri, MTA este serverul de
e%mail sau serverul care implementeaza protocolul )MT-,
-rintre cele mai cunoscute si folosite servere de e%mail se aflaB )endmail$ `mail$ -ostfi'$
#'im si Microsoft #'chane,
)endmail este primul server de e%mail din lume$ creat pentru .ni'$ e'trem de comple'$ dar
care de%a lunul timpului a avut o istorie plina de probleme si vulnerabilitati, #ste inca cel
mai folosit server de e%mail care vine default pe distributii precum 1A#L$ (ent=)$ >edora
sau )u)#,
`mail se doreste un inlocuitor al lui )endmail care a fost dezvolatat de matematicianul 0an
Bernstein avand securitatea ca principal avanta7, )e considera cel mai siur server )MT-,
(elebrul anunt al lui Bernstein prin care acesta oferea un premiu de X+00 celui care
descopera un bu de securitate in Mmail este de asemenea celebru,
-ostfi' este un server modern creat de Dietse @enema un e'pert in securitate de la IMB,
)e doreste de asemenea un inlocuitor al lui )endmail si este mult mai usor de confiurat si
inteles, 0e asemenea se poate mira de la )endmail la -ostfi' fara nicio confiuratie sau cu
efort minim (confiuratia sendmail este compatibila cu cea postfi'), -ostfi' este
=pen)ource
#'im este un alt MTA modern, Acesta a fost creat de -hilip Aazel la .niversitatea
(ambride, #'im este =pen)ource,
#'chane este serverul de e%mail al lui Microsoft folosit pe sisteme de operare Dindo<s,
Acesta este proprietar cu sursa inchisa,
5ota
2, >iecare server de e%mail are avanta7e si dezavanta7e si nu se poate spune cu siuranta
care este cel mai bun, In functie de necesitati$ cerintele retelei sau trafic o solutie sau alta
poate fi optima,
;, In acest curs se va prezenta serverul de e%mail -ostfi' datorita modul de constructie al
acestuia si a faptului ca este mai usor de inteles si confiurat decat celelalte, In plus -ostfi'
este compatibil cu )endmail$ inca cel mai folosit server de e%mail,
8, Intrebarea fireasca esteB de ce nu se studiaza )endmail daca este inca cel mai folositL
>iindca )endmail este inca foarte folosit nu datorita in primul rand eficientei sale ci
datorita unor considerente istorice, #ste primul server$ vine default pe multe distributii$ iar
personalul calificat in administrarea )endmail este mai numeros, (ota de piata a acestuia
este in scadere,
Important
)erverul de e%mail este cel mai comple'$ reu de inteles si confiurat server dintre cele
prezentate in acest curs, = inteleere profunda a modului de operare si confiurare a
acestuia nu poate veni decat in timp dupa foarte multa e'perienta practica reala,
;, M.A % Mail .ser Aent
M.A este proramul client folosit de user pentru a se conecta la serverul de e%mail in
scopul trimiterii de mesa7e, Acesta este clientul )MT-,
#'empluB Mozilla Thunderbird$ =utloo& #'press$ #volution etc
8, M0A % Mail 0eliver! Aent
M0A este un proram care ruleaza pe server si care livreaza(muta) emailul in inbo'%ul
userului dupa ce acesta a fost acceptat de MTA,
#'empluB clasicul procmail
(a parte interanta a unui sistem de e%mail se asesc si protocoalele -=- si IMA-, (u
a7utorul acestora utilizatorul poate do<nloada e%mailurile primite de pe server pe hostul
local, -entru detalii cititi capitolul C)erverul -=-?IMA-C a acestui curs,
1uta unui #%mail intre )ender si 1ecipient
.ser A G )ender
.ser B G 1ecipient
2, .serul A deschide clientul de e%mail?M.A (Thunderbird) si incepe sa compuna e mailul,
In momentul trimiterii acestuia$ M.A se conecteaza folosind protocolul )MT- la
MTA?server e%mail (-ostfi'), .serul A are cont pe serverul de e%mail,
;, 0aca destinatarul are cont pe acelasi server$ M0A (procmail) preia mesa7ul de la MTA
(postfi') si%l livreaza in inbo'ul userului B,
0aca destinatarul are cont pe un alt server$ MTA se conecteaza la MTA remote$ cel pe care
are cont userul B$ si transmite e%mailul, In comunicatia dintre cele ; servere se foloseste
protocolul )MT-,
8, 0upa ce mesa7ul a a7uns pe serverul remote$ acesta este livrat de M0A in inbo',
*, .serul B se conecteaza cu M.A (Thunderbird) la serverul -=- sau IMA- care ruleaza
pe acelasi host cu serverul de e%mail, (u a7utorul protocolului -=- sau IMA- userul B isi
do<nloadeza mesa7ul local pe propriul calculator, In comunicatia dintre M.A si sever se
foloseste protocolul -=- sau IMA-,
-rotocolul )MT-
)MT- ()imple Mail Transfer -rotocol) este un protocol la nivel aplicatie care functioneaza
client server, )erverul asculta default pe portul T(-?;+,
)MT- este standardul Cde factoC de trimitere de e%mailuri in Internet, Acesta a fost
standardizat de I#T> in 1>( :;2, In prezent se foloseste o varianta imbunatatita numita
#)MT- (#'tended )MT-) care este definita in 1>( ;:;2,
)MT- se foloseste doar pentru trimiterea e%mailului de la client (Thunderbird) la server
(-ostfi') sau intre servere daca )ender%ul si 1ecipient%ul au conturi pe servere diferite,
-entru primirea e%mailului pe hostul client$ se foloseste -=- sau IMA-,
)MT- este un protocol simplu$ intreaa comunicatie realizandu%se 0=A1 in te't, (hiar
daca userul are de trimis un fisier binar ca atasament ( #'empluB un fisier video)$ acesta
este convertit in te't dupa un standard (base6*) si trimis catre destinatar,
.na dintre limitarile protocolului este securitatea scazuta datorita faptului ca acesta a fost
dezvoltat initial in anii 40%:0 cand nu e'istau virusi$ vulnerabilitati de securitate sau atacuri
informatice,
)MT- nu contine niciun mecanism de autentificare a )enderului, =rice user se poate
conecta la server pe portul tcp?;+ si trimite e%mail catre orice destinatie, Acest mod de
operare este inacceptabil astazi in conte'tul in care spamurile reprezinta mai mult de
7umatate din totalitatea mesa7elor de pe Internet,
#'tensia care adaua functia de autentificare a clientilor pentru care serverul smtp face
rela! (accepta e%mailuri pentru a le livra) se numeste )MT-%A.TA,
= alta varianta folosita este -=- before )MT- sau IMA- refore )M-T si reprezinta o
modalitate prin care un user se autentifica initial la un server pop?imap iar in cazul
autentificarii cu succes ii este permis rela!%ul smpt, )erverul -=-?IMA- salveaza I-%ul
clientului$ temporar$ intr%un fisier care este verificat de )MT- server pentru a face rela!,
.n alta problema de securitate a protocolului )MT- este ca acesta comunica in clar,
Informatia poate fi captata usor folosind un sniffer,
-entru securizare se foloseste criptarea mesa7elor in car cu ))L?TL) ceea ce duce la un nou
protocol numit )MT-) ()MT- over ))L),
#'emplu comunicatie )MT- intre client si serverB
)erverul -ostfi'
-rezentare enerala
-ostfi' este un server de e%mail sau )MT- dezvoltat de 0r, Dietse @enema$ un cercetator
de la IBM cunoscut pentru lucrarile sale din domeniul securitatii informatiei, (odul a fost
facut disponibil ca =pen)ource in 233: si a continuat sa fie dezvoltat continuu,
-rincipalele avanta7e -ostfi' suntB
2, 1eliabilit!
-ostfi' ruleza optim in conditii de stress cand sistemul este foarte incarcat, -oate procesa
un numar foarte mare de mesa7e printr%un manaement al resurselor e'trem de eficient,
;, )ecurit!
0efault -osfti' presupune ca ruleaza intr%un mediu ostil si contine mai multe la!ere de
securitate, >iecare proces enerat de -ostfi' ruleaza izolat si pe principiu privileiilor
minime,
8, -erformance
-ostfi' a fost creat avand performanta crescuta ca principal ofiectiv,
*, >le'ibilit!
-ostfi' este compus din mai multe prorame si subsisteme independente care impreuna
printr%o confiurare optima ofera un sistem de e%mail performat si fle'ibil,
+, #ase%of%use
-ostfi' este unul dintre cele mai usor de instalat$ confiurat si administrat serverele de e
mail, Avand e'emplu lui )endmail si anume o comple'itate e'trema$ creatorul lui -ostfi' a
vrut sa dezvolta un proram a carui confiurare si administrare este loica,
6, )endmail compatibilit!
-ostfi' poate inlocui )endmail cu un efort minim, Acesta interactioneza cu componentele
)endmail$ iar fisierul de confiurare poate fi convertit automat dintr%un format in altul,
(ompilare si instalare
Instalarea prin compilare a serverului -ostfi' este putin deosebita fata de instalarea altor
servere$ in primul rand fiindca nu e'ista scriptul confiure, #'emplu de mai 7os s%a realizat
pe >edora (ore 3, In mod I0#5TI( se compileaza si instaleaza pe orice distributie Linu',
-asi de urmatB
2, 0o<nload sursele ultimei versiuni -ostfi' de pe site%ul producatorului
""".'ost-i;.or/, Acestea pot fi do<nloadate in orice director din sistem,
)e ruleazaB <et $tt'+,,'ost-i;.imar.ro,'ost-i;-release,o--icial,'ost-i;-7.>.0.tar./:
;, @erificare interitate arhiva tar,z folosind hash%ul sau semnatura diitala (=ptional
dar foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva si mutare in directorul cu surse creat,
)e ruleazaB tar %'zvf postfi'%;,+,8,tar,z
*, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat,
In urma compilarii rezulta din fisierele sursa fisiere e'ecutabile,
)e ruleazaB ma&e
+,Instalare
Inainte de instalare trebuie creati ; useri sub care vor rula ; procese din -ostfi' si anume
userul postfi' si postdrop, Acestia sunt default si pot fi schimbati daca se doreste,
)e ruleazaB useradd %s ?bin?false postfi' si useradd %s ?bin?false postdrop
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii din
directorul cu surse in directorul dorit, (omanda poate fi e'ecutata doar de root,
)e ruleazaB ma&e install
Acest pas este interactiv, .serul poate alee diferite optiuni cum ar fiB cei ; useri necesari
functionarii -ostfi'$ directorul cu fisierele de confiuratie$ directorul cu man pae%urile$
calea catre diferite prorame componente ale -ostfi' etc
(onfiurare de baza
Important
-entru a putea e'ersa cele e'emplificate mai 7os trimitand si primind e%mailuri cu un client
dedicat precum =utloo& #'press sau Thunderbird este nevoie si de un server -=-v8 sau
IMA-v*, )erverul prezentat in acest curs este 0ovecot, Il puteti instala automat folosind
!um install dovecot sau apt%et install dovecot pentru acest moment, )erverul va porni fara
nicio modificare a fisierului de confiurare sau cu modificari minime (in functie de
distributie), -entru a porni serverulB ?etc?init,d?dovecot start,
(apitolul urmator va prezenta acest server in detaliu,
5otiuni eneraleB
>isierele de confiurare pentru -ostfi' sunt ?etc?postfi'?main,cf % "lobal -ostfi'
confiuration file si ?etc?postfi'?master,cf % -ostfi' master process confiuration file,
(onfiurarea serverului presupune editarea acestor fisiere in special main,cf, 0upa orice
editare$ serverul trebuie restartat fiindca citirea confiuratiei are loc doar la pornire (ca la
orice alt server Linu' de altfel),
>isierul de confiurare main,cf este format dintr%o serie de parametri si valorile acestora,
#'ista peste 800 parametri pentru -ostfi', 0aca un parametru nu apare in main,cf nu
inseamna ca acesta nu e'ista ci doar ca se foloseste valoarea defualt pentru el,
#'empluB m!net<or&s G 23;,26:,0,0?;*$ 2;4,0,0,0?:
1andurile care incep cu T(diez) reprezinta comentarii si sunt inorate,
-entru a ne referi la valoarea unui parametru se precede parametrul cu semnul X(dollar)
#'empluB rela!Jdomains G Xm!destination % parametrului de confiurare rela!Jdomains i%
se asineaza valoarea parametrului m!destination
0irectorul Inbo'$ cel in care sunt livrate mesa7ele primite de fiecarui utilizator esteB
?var?spool?mail?.)#15AM# ( #'empluB ?var?spool?mail?dan)
5ota
?var?spool?mail si ?var?mail sunt hard lin&uri
In cazul in care se foloseste IMA- si se creaza foldere$ acestea se asesc fizic in directorul
?home?username?mail ( #'empluB ?home?dan?mail)
-ornirea serverului )MT- se realizeaza cu a7utorul comenzii postfi', Aceasta ia parametri
start$ stop sau reload,
>isierul default in care serverul salveaza lourile este ?var?lo?maillo,
Aliases
-ostfi' ca si )endmail foloseste un fisier aliases pentru redirectarea e%mailurilor destinate
userilor care nu e'ista in ?etc?pass<d$ catre alti destinatari locali care trebuie sa e'iste in
?etc?pass<d,
>isierul alis (?etc?aliases) este format din definiitii tip alias de formaB aliasB
taret2$taret;$taret8 etc, 1andurile care incep cu T(diez) sunt comentarii,
Aceasta forma de redirectare se foloseste atunci cand useri care nu au Inbo' primesc e
mailuri ( #'empluB userul postfi'$ <<<user sau chiar root) sau pentru crearea de mail lists,
#'emplu ?etc?aliasesB
Temailurile catre userii admin$ <<<user si !ouradmin sunt redirectate catre userul root
adminB root <<<userB root !ouradminB root
Temailurile catre root sunt redirectate catre userul dan rootB dan
Temailurile catre userul mar&etin sunt redirectate si catre dan$ paul$ dana$ 7ohn si smith
mar&etinB dan$paul$dana$7ohn$smith
Temailurile catre dan sunt redirectate si catre userul sef danB sef
Important
.serul din partea stana a celor ; puncte nu trebuie sa e'iste ca user de sistem$ dar cei din
dreapta trebuie sa se aseasca in ?etc?pass<d,
0upa fiecare modificare a fisierului ?etc?aliases trebuie rulata comanda ne<aliases care
creaza baza de date pentru aliasuri ?etc?aliases,db care este folosita de server,
0aca la pornirea serverului obtinem mesa7ul de eroare fatalB open database ?etc?aliases,dbB
acest lucru se datoreaza faptului ca serverul nu aseste fisierul baza de date pentru aliasuri
care este ?etc?aliases,db, -entru crearea sa se ruleaza comanda ne<aliases,
)ecuritate -ostfi'
1ela!in
In mod implicit protocolul )MT- nu autentifica userii care se conecteaza la acesta pentru
livrarea de emailuri, #'tensia care realizeaza autentificarea userilor se numeste )MT-
A.TA,
0efault (fara )MT- A.TA) postfi' accepta emailuri pentru deliver! (face rela!) doar daca
una dintre urmatoarele conditii este indeplinitaB
2, I- clientului se aseste in parametrul Xm!net<or&s caz in care destinatia poate fi locala
sau remote,
;, 0omeniul destinatie final este in Xm!destination caz in care clientul poate fi local sau
remote,

5ota
-ostfi' nu accepta pentru deliver! indiferent de la cine$ mailuri catre useri din domeniile
locale (Xm!destination) ine'istenti in ?etc?pass<d sau in ?etc?aliases,
-entru a permite rela! de la alte hosturi se poate folosiB
2, m!net<or&Jst!leG_classUsubnetUhostP
class G postfi' sumarizeaza la clasa A$ B sau ( a interfetelor sale si face rela! la hosturile
din acea clasa
subnet G postfi' accepta mailuri pt, deliver! doar de la subretelele interfetelor sale
host G postfi' accepta mailuri doar de la propriile sale I-%uri (clientul este serverul)
-entru a seta permisiuni individuale de rela!B
m!net<or&s G 2;4,0,0,0?:$ 20,0,0,0?:$ 23;,26:,0,0?;*
;, Alternativ se poate folosiB
Tin ?etc?postfi'?file2 se specifica I-%uri individuale m!net<or&sGhashB?etc?postfi'?file2
Tin ?etc?postfi'?file2 se poate folosi (I01 ((lassless Interdomain 1outin) notation
m!net<or&sGcidrB?etc?postfi'?file;
>iltre si restrictii
Important
1estrictiile -ostfi' sunt concepte foarte avansate care pot fi folosite si customizate doar
dupa o inteleere foarte buna a protocolului )MT- si mai ales a etapelor implicate in
comunicatia )MT- dintre client si server,
-rimul auto test pentru verificarea cunostintelor leate de )MT- este trimiterea unui e mail
folosind telnet,
@a recomand parcurerea acestei sectiuni doar dupa buna inteleere a protocolului )MT-,
1estrictiile permit serverului de e%mail sa accepte sau sa re7ecteze mesa7e inspectand
comunicatia )MT- care are loc intre acesta si client,
5ota
Termenul restrictie se refera la a nu permite o anumita actiune, -entru -ostfi' o rescrictie
poate sa insemne e'act opusul si anume adminul poate defini o restrictie folosita pentru a
permite anumite mesa7e,
>iecare restrictie )MT- se refera la un staiu din comunicatie )MT-,
1estriction Triers
)unt Cempt! bo'esC de care se ataseaza restrictiile,
>iecare trier se refera la un staiu din comunicatia )MT-,
2, smtpdJclientJrestrictions
Acest trier se e'ecuta in functie de I- sau hostname%ului clientului
;, smtpdJheloJrestrictions
Acest trier se e'ecuta in functie de valoarea parametrului A#L=?#AL=$ client I- sau
client hostname
8, smtpdJsenderJrestrictions
Acest trier se e'ecuta in functie de sender envelope
*, smtpdJrecipientJrestrictions
Acest trier se e'ecuta in functie de recipient envelope$ sender envelope$ A#L=?#AL= si
I-?Aostname client, 0efault -ostfi' permite orice recipient pentru clientii din parametrul
m!net<or&s$ rela!Jdomains si m!domains, Astfel -ostfi' nu este un open rela!,
+, smtpdJdataJrestrictions
6, smtpdJetrnJrestrictions
Acest trier restrictioneaza clientii care incearca sa faca flush la coada serverului,
1estrictii -ostfi'
1estrictii se ataseaza de un trier,
2, "eneric restrictions
5u verifica nimic in dialoul smtp doar e'ecuta o comanda
Acestea suntB
a) permit
b) defer
c) re7ect
d) <arnJifJe7ect
;, )<itchable restrictions
Aceste restrictii se activeaza?dezactiveaza$ iar odata activate verifica anumite conditii
Acestea suntB
a) smtpdJheloJreMuired % clientii sunt obliati sa trimita valoarea parametrului
A#L=?#AL= prin care se indetifica la inceputul sesiunii )MT-
b) strictJrfc:;2Jenvelopes % aceasta restrictie a7usteaza toleranta -ostfi' la erorile din
MAIL >1=M si 1(-T T=,
c) disableJvrf!Jcommand % disables recipient address verification
8, (ustomizable 1estrictions
Aceste restrictii sunt formate dintr%o cheie(filtru) si o valoare (actiunea de intreprins daca
filtrul returneaza true),
)inta'a unei restrictii
restrictionJtrier G conditionalJrestriction$ customizableJrestriction [
mapt!peB?path?to?the?map$ eneral restriction
sau
restrictionJtrier G conditionalJrestriction customizableJrestriction
mapt!peB?path?to?the?map$ eneral restriction
-entru testa restrictiile fara aplicarea lor imediata se foloseste restrictia enerica
<arnJifJre7ect care doar scrie in louriB
#'empluB
smtpdJsenderJrestrictions G <arnJifJre7ect re7ectJun&no<nJsenderJdomain
-ostfi' vine default cu o serie de restrictie pentru a nu deveni un =pen1ela!,
-entru vizualiza restrictiile default pt, fiecare trierB
postconf %d smtpdJrecipientJrestrictions
postfont %d smtpdJsenderJrestrictions
#'empluB 1estrict emails from un&no<n domains, -ostfi' va incerca sa rezolve domeniul
senderului,
smtpdJsenderJrestrictions G re7ectJun&no<nJsenderJdomain permitJm!net<or&s
re7ectJunauthJdestination permit
Alte restrictii utileB
a) re7ectJnonJfMdnJrecipient %Precipientul trebuie sa fie fMnd (userVdomeniu,com nu doar
user)
b) re7ectJnonJfMdnJhostname %Pvaloarea parametrului Aelo tb, sa fie fMdn
c) re7ectJinvalidJhostname %P valoarea parametrului A#L= tb, sa contine caractere valide
d) re7ectJnonJfMdnJsender %P envelope sender trebuie sa fie fMdn
e) re7ectJun&no<nJsenderJdomain %P postfi' realizeaza dns Muer! pt, sender domain, >,
important pentru anti%spam
f) re7ectJun&no<nJrecipientJdomain
=bvious >oreries
2, 1e7ect clients care folosesc numele serverului la care se conecteaza in A#L=
a) creare map fileB ?etc?postfi'?heloJchec&s care contin variatii are propriului nume
?Ycr!stalmind[,bizX? ++0 donSt use m! ip ?Y23;[,26:[,0[,28X? ++0 donSt use m! ip
b) in main,cf
smtpdJrecipientJrestrictions G chec&JheloJaccess pcreB?etc?postfi'?heloJchec&s
;, Bous domains
a) creare map fileB ?etc?postfi'?bousJm'
0,0,0,0?: ++0 Mail server in broadcast domain 20,0,0,0?: ++0 1>( 232: 23;,26:,0,0?;*
++0 1>( 232: 63,0,0,0?2: ++0 )-AM
b) in main,cfB
smtpdJrecipientJrestrictions G chec&JsenderJm'Jaccess cidrB?etc?postfi'?bousJm'
8, 05) Blac&list
In main,cfB
smtpdJrecipientJrestrictions G re7ectJrblJclient rela!s,ordb,or
5ota
-entru a verifica daca un I- ( #'ampleB 224,0,0,;) este listat in rela!s,ordb,or se ruleazaB
host ;,0,0,224,rela!s,ordb,or
-rorame utilitare
.tilitare -ostfi'
2, postfi' % -ostfi' control proram,
)e foloseste pentru pornirea$ oprirea sau recitirea fisierului de confiurare main,cf, postfi'
_startUstopUreloadP
#'empluB postfi' start
;, mailM % afiseaza coada
HrootVpc8 ZIT mailM %`ueue I0% %%)ize%% %%%%Arrival Time%%%% %)ender?1ecipient%%%%
0602006+>3 4*2 Ded Ean 80 28B*8B8* danVcr!stalmind,ro paulVcr!stalmind,ro R 2
/b!tes in 2 1eMuests,
8, postcat %M `.#.#JI0 % afiseaza continutul emailul din coada (envelopes F headers F
bod!)
`.#.#JI0 este id%ul obtinut prin rularea comenzii mailM
*, postmap % creaza inde'ed maps din flat files
+, postlo % permite proramelor e'terne precum scripturi sa scrie in lourile lui postfi'
#'empluB postlo testin loin %Pscrie in ?var?lo?maillo strinul Ctestin loinC
6, postMueue % postfi' user interface for Mueue manaement (postfi' trebuie sa ruleze)
#'empluB
postMueue %f % flush the Mueue$ incearca sa livreze toate mesa7ele din coada postMueue %p %
afiseaza coada (echivalent cu comanda mailM), )unt afisate toate cozile,
La afisarea cozii caracterul CNC din dreptul mesa7ului inseamna ca aceasta este in Cactive
MueueC$ iar CQC inseamna ca mesa7ul este in Chold MueueC si nu se mai incearca livrarea
acestuia,
postfi' %s domain,com % incearca livrarea mesa7elor pentru un anumit domeniu,
4, postsuper (postfi' nu trebuie sa ruleze$ comanda doar pt, root)
#'empluB
postfi' %h 400+006+>3 %P plaseaza mesa7ul cu I0 400+006+>3 in hold Mueue
postfi' %A 400+006+>3 %P incearca livrarea mesa7ului cu I0 400+006+>3 din hold Mueue
postfi' %d 400+006+>3 %P stere mesa7ul cu I0 400+006+>3 din coada
5ota
-entru a observa mesa7e in coada se poate seta in main,cf parametrul
ma'imalJMueueJlifetime la o valoare foarte mare,
#'empluB
ma'imalJMueueJlifetime *+88*d
:, postconf % afiseaza valoarea parametrilor de confiurare
(u optiunea %d se afiseaza valorile default,
#'empluB
HrootVpc+ ZIT postconf %d m!net<or&s
m!net<or&s G 2;4,0,0,0?: 23;,26:,0,0?;*
>ara optiunea %d se afiseaza valorile reale$ de runnin,
#'empluB
HrootVpc+ ZIT postconf m!net<or&s
m!net<or&s G 23;,26:,0,0?;*$ 2;4,0,0,0?:
3, -ostconf poate fi folosit si pt, modificarea fisierului main,cf
#'empluB postconf %e Cm!net<or&s G 2;4,0,0,0?: 23;,26:,0,0?;*C
(ozi?`ueues
= coada este o zona de memorie in care serverul salveaza temporar emailul inainte de a%l
livra,
Manaementul cozilor este realizat de Mmr
T`ueue director! este default ?var?spool?postfi' MueueJdirector! G ?var?spool?postfi'
>iecare coada este reprezentata de un subdirector in ?var?spool?postfi'
(ele mai importante cozi suntB
2, incomin
Toate mesa7e primite de postfi' a7un sa fie trimise in incomin Mueue de catre cleanup
daemon, (leanup daemon reprezinta ultimul staiu de procesare a mesa7elor noi, 1olul
acestuia este de a adaua headere lipsa$ messae re<ritin precum si e'traerea diferitilor
destinatari, 0upa ce acesta insereaza mesa7ul in incomin Mueue anunta Mueue manaer ca
un mesa7 nou a sosit, Mesa7ele din incomin Mueue sunt apoi mutate in active Mueue,
;, maildrop
Mesa7ele trimise folosind comanda sendmail sau mail sunt asteapta procesarea in maildrop,
-ostfi' poate sa nu ruleze$ iar la pornire va scana si procesa toate mesa7ele din maildrop,
8, deferred
In aceasta coada sunt puse mesa7ele a coror livrare catre unul dintre recipienti nu s%a putut
realiza, `ueue manaer scaneaza periodic aceasta coada,
*, active
In aceasta coada a7un toate mesa7ele care sunt ata sa fie livrate dar nu sunt livrate in acest
moment, Mesa7ele a7un in active Mueue din incomin Mueue$ fiind mutate de catre cleanup
daemon, 0imensiunea ma'ima a acestei cozi este de ;0000 mesa7e,
+, hold
Administratorul poate defini politici pentru verificarea headerului si bod! astfel incat un
email sa fie redirectionat in hold Mueue din procesul normal, Mesa7ele din aceasta coada
stau ma'imumJMueueJlifetime dupa care sunt trimise inapoi la sender (bounced to the
sender), (omanda postsuper %r ofera o noua sansa mesa7elor sa fie livrate mutandule in
maildrop Mueue,
6, corrupt
Mesa7ele corupte sunt duse in corrupt Mueue astfel incat administratorul sa le poate
inspecta folosind comanda postcat
Manaementul Lourilor
)!slo
-rezentare enerala
In Linu' una dintre sarcinile cele mai frecvente ale unui administrator de sistem este de%a
verifica lourile serverelor care ruleaza, >iecare serviciu salveaza informatii despre modul
de operare$ avertismente sau erori enerate in fisiere te't numite louri, Acestea se asesc
in directorul ?var?lo
-entru a putea urmarii eficient intrea activitate de pe )erver$ 1outer sau >ire<all trebuie
confiurat in detaliu modul (cantitatea si tipul de mesa7e) de loare pentru fiecare server
care prezinta interes,
0in punct de vedere al securitatii sistemului$ lourile reprezinta modalitatea prin care
adminul poate identifica incercarile de loare neautorizate sau modul prin care a fost
compromis un server sau intre sistemul,
)!slo reprezinta standardul de for<ardare si salvare a mesa7elor de tip lo intr%o retea I-,
Termenul )!slo se refera atat la librariile folosite de servere pentru salvarea de mesa7e in
fisiere de tip lo cat si la protocolul?standardul de loare din sistem,
)!slo ruleaza client server, s!slod numit daemonul s!slo sau serverul s!slo reprezinta
aplicatia care receptioneaza si proceseaza mesa7ele si ruleaza default de orice distributie de
Linu', #ste pornit la butarea sistemului de catre un script de initializare din ?etc?init,d
0in punct de vedere istoric )!slo a fost dezvoltat in anul 23:0 de catre #ric Allman$
creatorul primului server de e%mail numit )endmail, )copul acestuia era de a fi folosit ca
parte interanta a serverului pentru loarea mesa7elor enerate de acesta,
I#T> a standardizat in ;002 protocolul s!slo in 1>( 826*, In prezent s!slo reprezinta
standardul Cde factoC si Cde 7ureC de loare folosit atat pe .ni'?Linu' cat si pe alte sisteme
de operare sau echipamente dedicate precum 1outere sau )<itch%uri (isco,
s!slod ruleaza impreuna cu &lod (/ernel Lo 0aemon) pentru loarea de mesa7e,
>isierul de confiurare al daemonului s!slod este ?etc?s!slo,conf
5ota
-e distributiile recente de Linu' (#'empluB >edora (ore 3) s!slod a fost inlocuit cu
rs!slod % 1eliable and #'tended s!slod, Acesta reprezinta o versiune imbunatatia dar
compatibila cu s!slod, >isierul sau de confiurare este ?etc?rs!slo,conf
(onfiurare
-rima sarcina care trebuie indeplinita pentru monitorizarea lourilor este identificare
locatiei acestora, >isierul de confiurare s!slo,conf stabileste locatia lourilor precum si
cantitatea si tipul de mesa7e salvate,
>iecare rand din fisierul s!slo,conf reprezinta o reula de loare si este formata dintr%un
)#L#(T=1 si o A(TI.5#, )electorul si actiunea sunt separate de unul sau mai multe
spatii sau tab, 1andurile care incepe cu T(diez) reprezinta comentarii si sunt inorate,
#'empluB
T Lo all the mail messaes, mail,info ?var?lo?maillo
)electorul este mail,info$ iar actiunea este ?var?lo?maillo
.n selector este format din ; parti separate prin ,(punct) si anumeB facilit! si priorit!,
>acilit! reprezinta tipul de mesa7 loat si poate fiB auth$ authpriv$ cron$ daemon$ &ern$ lpr$
mail$ ne<s$ s!slo$ user$ uucp$ local0$ local2$ local;$ local8$ local*$ local*$ local6 si local4,
N(asteri') inseamna orice facilitate,
-rioritatea reprezinta un cod care indica cantitatea de mesa7e loate, In ordine crescatoare a
prioritatii$ dar in ordine descrescatoare a cantitatii de mesa7e loate prioritatile suntB debu$
info$ notice$ <arnin$ <arn (echivalent cu <arnin)$ err$ error (echivalent cu err)$ crit$ alert$
emer$ panic (echivalent cu emer), -rioritatile error$ <arn si panic sunt considerate
invechite si nu se recomanda a mai fi folosite,
N(asteri') inseamna orice prioritate,
In momentul specificarii unei prioritati pentru o facilitate$ mesa7ele cu prioritate mai mare
sunt de asemenea incluse,
#'empluB auth,err include si auth,crit$ autch,alert si auth,emer
-entru a selecta doar mesa7ele de o anumita prioritate si nu si pe cele cu crioritate mai mare
se foloseste semnul G(eal),
#'empluB auth,Gerr selecteaza doar mesa7ele cu prioritatea err nu si pe cele cu prioritatea
crit$ alert sau emer,
)emnul Q(semnul e'clamarii) are rolul de a e'clude mesa7ele de o anumite prioritate sau
mai mare,
#'empluB mail,Qcrit va e'clude mesa7ele cu prioritate crit$ alert sau emer,
-entru a e'clude toate mesa7ele pentru o facilitate se foloseste prioritatea none, #'empluB
mail,none
(ealalta componenta pe lana )#L#(T=1 a fiecarui rand din s!slo,conf$ A(TI.5#A$
stabileste termenul eneric si abstract numit lofile sau locatia catre care se redirecteaza
lourile pentru o anumita facilitate si prioritate,
.n lofile poate fiB
a) fisier normal
)e specifica obliatoriu folosind calea absoluta,
#'empluB authpriv,N ?var?lo?secure
>isierul poate fi precedat de semnul %(minus) caz in care acesta nu mai este sincronizat
(salvat) dupa fiecare mesa7 loat ci numai dupa ce mai multe mesa7e sunt salvate intr%un
buffer, Avanta7ul este cresterea performante$ iar dezavanta7ul este pierderea de informatie
in cazul unui crash,
#'empluB authpriv,N %?var?lo?secure
b) user
Mesa7e de tip lo pot fi redirectate la consola?terminalul la care userul este loat, 0aca se
doreste trimiterea mesa7elor catre mai multi useri acestia se separa cu virula,
#'empluB &ern,crit root$admin
c) remote host
In cazul unei retele in care se asesc mai multe servere sau echipamente ale caror louri
trebuie urmarite este mai eficient ca acestea sa fie redirectate catre un host remote, In acest
mod avem un loc centralizat de loare,
5ota
In cazul compromiterii unui server sau a intreului sistemul una dintre primele activitati
ale (rac&erului este Csa%si steara urmeleC adica sa steara lourile referitoare la activitata
sa pentru a nu putea fi descoperit de admin, Loarea pe un sistem remote rezolva aceasta
problema fiindca stererea lourilor de catre crac&er presupune compromiterea inclusiv a
serverului pe care se loheaza,
-entru loarea remote se foloseste semnul V in fata actiunii,
#'empluB authpriv,alert V23;,26:,0,2+
d) named pipe
Lourile pot fi redirectate inclusiv catre fisiere speciale numite named pipes care anterior
trebuie create folosind comanda m&fifo,
#'empluB &ern,Gdebu U?usr?adm?debu
Important
0upa fiecare modificare a fisierului ?etc?s!slo,conf sau ?etc?rs!slo,conf in functie de
versiune$ daemonul s!slod sau rs!slod trebure restartat, #'empluB ?etc?init,d?rs!slo
restart
>isiere standard in care se pastreaza lourileB
?var?lo?messaes % reprezinta fisierul principal cu louri al sistemului in care se salveaza
informatii de la ma7oritatea serverelor
?var?lo?<tmp % reprezinta un fisier binar care pastreaza informatii despre loarile in
sistemW
?var?lo?boot,lo % pastreaza informatii despre procesul de butareW
?var?lo?secure % pastreaza informatii despre actiuni leate de securitate (laare prin ssh$
comanda su etc)W
?var?lo?cron % pastreaza informatii despre cron daemonW
?var?lo?dmes % pastreaza informatii despre &ernel si hard<areW
#'emplu s!slo,confB
T Lo all &ernel messaes to the console,
T Loin much else clutters up the screen,
T&ern,N ?dev?console
T Lo an!thin (e'cept mail) of level info or hiher,
T 0onSt lo private authentication messaesQ N,infoWmail,noneWauthpriv,noneWcron,none
?var?lo?messaes
T The authpriv file has restricted access, authpriv,N ?var?lo?secure
T Lo all the mail messaes in one place, mail,N %?var?lo?maillo
T Lo cron stuff cron,N ?var?lo?cron
T #ver!bod! ets emerenc! messaes N,emer N
T )ave ne<s errors of level crit and hiher in a special file, uucp$ne<s,crit
?var?lo?spooler T )ave boot messaes also to boot,lo local4,N ?var?lo?boot,lo
0etaliiB
lorotate,conf este format dintr%o sectiune lobala de optiuni care se refera la optiunile
nespecificate in mod e'press pentru fisierele lo in sectiunea fiecaruia
#'empluB
T rotate lo files <ee&l! <ee&l! T &eep * <ee&s <orth of bac&los, 5umarul de versiuni
pastrate rotate *
pe lana optiunile lobale pentru fiecare fisier lo e'ista o sectiune care specifica optiunele
de rotire pentru respectivul fisier, Aceasta sectiune se poate asi in ?etc?lorotate,conf sau
intr%un fisier separat in directorul ?etc?lorotate,d,
Toate fisierele din directorul ?etc?lorotate,d sunt incluse in lorotate,conf
#'empluB
?var?lo?httpd?access,lo \ rotate + mail <<<Vm!,or sizeG200& create 0660 <<<user
<<<user postrotate ?sbin?&illall %A.- httpd endscript ]
0etaliiB
rotate + % se pastreaza + versiuni ale lui access,lo si anume access,lo,2 pana la
access,lo,+W
mail <<<Vm!,or % inainte de rotire sunt trimise pe email la adresa specificataW
sizeG200& % fisierul este rotit in momentul in care dimensiunea sa depaseste 200&W
create 0660 <<<user <<<roup % imediat dupa rotire se creaza un nou fisier cu acelasi
nume cu permisiunile 0660 si avand o<ner si roup o<ner pe <<<user respectiv
<<<roupW
postrotate % scripturile care apar intre postrotate si endscript se e'ecuta automat dupa
rotirea lourilor, In eneral acestea sunt scripturi care restarteaza serverul respectiv pentru
a loa in noul fisier creatW
In linu' un fisier se identifica dupa numarul de inode, 0upa rotire$ noul fisier creat care
reprezinta o versiune a vechiului fisier are acelasi inode number$ iar serverul va continua sa
salveze informatii in el ( #'empluB access,lo,2)
Alte optiuni ce pot aparea in lorotate,conf
dail!$ <ee&l! sau monthl! % fisierul este rotit zilnic$ saptamanal sau lunar indiferent de
dimensiuneW
missino& % daca fisierul nu e'ista nu se raporteaza eroareW
ifempt!?notifempt! % roteste?nu roteste fisierul daca acesta este olW
compress?nocompress % comprima?nu comprima fisierul de tip loW
;, @erificarea constanta a lourilor
>iindca forma in care multe servere loheaza informatia nu este CprietenoasaC si pentru ca
volumul de informatie este e'trem de mare$ verificare manuala a lourilor are loc doar in
momentul in care a avut loc un eveniment deosebit sau cand informatia cautata este de
detaliu,
In eneral se folosesc prorame numite C)!stem lo anal!zers and reportersC care
enereaza un rezumat al lourilor si pe care%l formateaza intr%un mod usor de urmarit,
Lo<atch este unul dintre cele mai folosite prorame pentru enerarea de rezumate a
lourilor,
-rintre optiunile sale se aflaB
trimiterea automata a rezumatului pe e%mailW
enerarea de fisere raport comprimate sau nuW
fle'ibilitate ma'ima in ceea ce priveste informatiile din raportW
5ota
Lo<atch este un script scris in -erl care parseaza fisierele din ?var?lo,
(ommanda lo<atch foloseste fisierul de confiurare
?usr?share?lo<atch?default,conf?lo<atch,conf,
=ptiunile din fisier pot fi suprascrise ruland lo<atch cu diferite optiuni,
-rintre cele mai importante optiuni suntB
%%detail %P indica radul de detalii din raport
%%lofile file %P proceseaza doar fisierul indicat ( #'empluB ?var?lo?messaes)
%%service name %P numele serviciului ale carui louri creaza raportul ( #'empluB sshd$
httpd$ all)
%%print %P output este directionat la consola
%%mailto address %P trimite raportul automat pe e%mail la adresa specificata
%%rane _!esterda!Utoda!UallP %P perioada care contine lourile ce creaza raportul
%%lodir dir %P cauta in directorul specificat si subdirectoarele sale$ fisierele lo pentru
enerarea raportului, 0efault este ?var?lo
)erverul -=-?IMA-
-rezentare -=- & IMA-
-=- (-ost =ffice -rotocol) este un protocol la nivelul aplicatie care ruleaza client server,
)erverul asculta default pe portul T(-?220,
IMA- (Internet Messae Access -rotocol) este un protocol la nivelul aplicatie care ruleaza
client server, )erverul asculta default pe portul T(-?2*8,
Ambele sunt folosite pentru accesarea emailurilor aflate pe server, M.A (Thunderbird) se
conecteaza la serverul -=- sau IMA- pentru a copia sau muta un email de pe server pe
client,
>ara aceste protocoale e%mailurile nu ar putea fi citite,
(omparativ cu -=-$ IMA- este un protocol mai modern$ recomandat atunci cand se poate
alee intre ele, -rincipalul avanta7 este ca IMA- permite citirea inbo'%ului simultan de
catre mai multi useri, In cazul -=- e%mailul este mutat de pe server pe client$ iar in cazul
IMA- e%mailul este copiat de pe server pe client, #'ista astfel o sincronizare intre server si
client,
@ersiunile actuale folosite sunt -=-v8 si IMA-v*,
Debmail
= alta modalitate de a accesa e%mailurile de pe un server inafara de a folosi clienti dedicati
precum Thunderbird sau =utloo& #'press este cu a7utorul unui Bros<er (<ebmail),
5ota
Deb based email sau Debmail reprezinta un termen care se refera la accesarea e mailurilor
de pe server folsind un Bros<er,
Avanta7ele acestei metode este ca userul poate citi sau trimite e%mailuri de la orice
calculator conectat la Internet fara nicio confiuratie suplimentara, In cazul folosirii unui
client dedicat acesta trebuie confiurat cu I-%ul serverului )M-T$ I-%ul serverului -=- sau
IMA- etc,
)erviciile ratuite oferite de marii provideri sunt in special de tip <ebmail, #'empluB
Oahoo mail$ "mail$ Aotmail etc,
.nul dintre cele mai cunoscute si folosite prorame <ebmail =pen)ourse este
)MuirrelMail, Acesta este scris in -A- si include suport pentru )MT- (pentru trimitere de
e%mail) si pentru IMA- (primire de e%mailuri),
= aplicatie <ebmail foloseste protocolul IMA- pentru accesul e%mailurile de pe server,
-entru a instala )MuirrelMail (acesta se instaleaza pe server$ pe acelasi host pe care ruleaza
si serverul )MT-) trebuie ca pe server sa fie instalatB-A-

)erver IMA-
)erverul 0ovecot
(ompilare si instalare
Instalarea prin compilare a serverului 0ovecot se realizeaza in mod standard, #'emplu de
mai 7os s%a realizat pe >edora (ore 3, In mod I0#5TI( se compileaza si instaleaza pe
orice distributie Linu',
-asi de urmatB
2, 0o<nload sursele ultimei versiuni 0ovecot de pe site%ul producatorului """.do9ecot.or/,
Acestea pot fi do<nloadate in orice director din sistem,
)e ruleazaB <et httpB??<<<,dovecot,or?releases?2,2?dovecot%2,2,;,tar,z
;, @erificare interitate arhiva tar,z folosind hash%ul sau semnatura diitala (=ptional dar
foarte recomandat)
8, 0ecomprimare si dezarhivare arhiva
)e ruleazaB tar %'zvf dovecot%2,2,;,tar,z
*, 1ularea scriptului confiure care verifica sistemul si anume daca acesta contine toate
componentele necesare compilarii si instalarii serverului -=-?IMA-, 0orim instalarea in
directorul ?opt?dovecot astfel incat sa putem urmarii si studia toate componentele cu care
vine serverul,
)e recomanda rularea scriptului confiure de catre un user neprivileiat,
)e ruleazaB ,?confiure %%prefi'G?opt?dovecot
+, (ompilare
)e recomanda compilarea oricarei aplicatii de catre un user neprivileiat,
In urma compilarii rezulta din fisierele sursa fisiere e'ecutabile,
)e ruleazaB ma&e
6, Instalare
Instalarea presupune doar mutarea fisierelor e'ecutabile rezultate in urma compilarii din
directorul cu surse in directorul dorit ( ?opt?dovecot), (omanda poate fi e'ecutata doar de
root,
)e ruleazaB ma&e install
5ota
In cazul in care se doreste instalarea automata din fisiere binare se ruleaza ca root !um
install dovecot sau apt%et install dovecot in functie de distributie,
)erverul se porneste e'ecutantB ?etc?init,d?dovecot start, >isierul acestuia de
confiurare este ?etc?dovecot,conf,
(onfiurare
(onfiurarea serverului 0ovecot este relativ simpla, Acesta functioneaza aproape Cout of
the bo'C fara nicio modificare, >isierul de confiurare este ?opt?dovecot?etc?dovecot,conf in
cazul e'emplul nostru si ?etc?dovecot,conf in cazul instalarii automate folosind !um sau
apt%et in functie de distributie,
In directorul ?opt?dovecot?etc se asesc mai multe fisiere sample de confiurare, .n fisierul
standard este dovecot%e'ample,conf, Acesta trebuie copiat sub numele dovecot,conf in
acelasi director si editat, >iecare directiva de confiurare este comentata in mare detaliu,
-entru a vizualiza doar directivele de confiurare fara comentarii se ruleaza comandaB
erep S(TUYX)S dovecot,conf
0etaliiB
randurile care incep cu T(diez) inseamna comentarii si sunt inorateW
fisierul este format din directive si valorile acestora separate prin semnul ealW
mai multe spatii sau tab sunt convertite intr%un sinur spatiu respeciv tabW
0irective importanteB
2, )pecifica protocoalele pentru care serverul ofera suport, In cazul nostru acestea sunt
imap si pop8, imaps si pop8s inseamna pop?imap criptat folosind ssl?tls,
protocols G imap imaps pop8 pop8s
;, )pecifica daca serverul permite autentificarea in clar, )e recomanda folosirea acestui
tip de autentificare doar daca se cripteaza cu ))L,
disableJplainte'tJauth G no
8, )pecifica daca foloseste ssl?tls pentru criptare, )e recomanda fiindca default IMA- si
-=- sunt protocoale care comunica in clar si deci informatia poate fi captata usor, In
e'emplul nostru nu folosim ssl, 0aca se doreste folosirea ssl$ tot ce trebuie facut este
crearea unei perechi de chei si un certiticat diital, 0etalii in cursul CAdvanced Linu' &
InfosecC disponibil de asemenea online,
sslJdisable G !es
*, )pecifica userul folosit pentru procesul de loin, Acest user nu are acces la e%mailuri, )e
recomanda folosirea unui user special doar pentru 0ovecot,
loinJuser G dovecot
+, )pecifica numarul de procese care asculta pentru a prelua noi cone'iuni pop?imap
loinJprocessesJcount G 8
-entru securizare serverului urmatoarele aspecte sunt importanteB
2, (riptarea informatiei dintre client si server folosind ))L?TL),
;, Limitarea numarului de procese dovecot$ memorie consumate de fiecare etc,
8, 1ularea serverului in C7ailC, Acest lucru inseamna limitarea accesului acestuia la un
sinur director in loc de intreul sistem de fisiere,
5ota
0ovecot poate folosi mai multe modalitati de autentificare a userilor, In plus acestia pot fi
useri de sistem (e'istenti in ?etc?pass<d si cu parola in ?etc?shado< R cazul e'emplului
nostru) sau se pot asi intr%o baza de date M!)Ml,

S-ar putea să vă placă și