Sunteți pe pagina 1din 537

Cuvtlnt 'inainte

No/iunea de ,~tem de operare repreziutii, prob.lbil, mud diut.." termenii rei mai des InUilui/i in domeniul culcu/uto(Jfdor, $i ,I!! ,mmai. Dc la [ormde gret>aw dczt'oilale f" an" '60, cnllO<lcn/c door pmjc.';oui1ti/()t', ., j. /Cf"clc (ic "pemn; n" c""osc.l/ ()

Imn.fonlwre ool1lill1', strilns ooreidli'i cu dezvollarw sis/eme/or de calc!!'1

IdmologiilOf' a,\oc;utf.. In Zlua de (~~Iiizi, si,ltemd" d~ opr.mcc ole"": 0 inter/alii Juri/a $' prietem)(Jsii alat !, /;/izatoriior ob':"lwi/i ai .ler1litiilor [n/emet, cal # ulilizatori/or co,,,crr;,,t; "i uplit"fiilor dooif~'tr, r"'/ot' re joiou-'<c jar:ili liifi/c mll/timedia ~i jO~llri, so." ce/()r pmfel!ion~,ti Cilre dezvoltii op/iea/i; sm' in/refin 8;., leme de cnlc,,' ~; retel~ de calclJatmwe. Evo/utia lelmo/ogic.l a Jus la deZllollarea sis/erne/or de OIJerare IJen!ru un nunl(lr t()1 m()' marc ,Ie ,1i.$Pfi:ritive, de /" si,lemt S"r1Jcr, dC$~1op ~i [OP/OI' la PDll-uri
$'

$'

smartp/wlle-uri.

Corlea de fa/il 4i prop'm~ jo mi/iarizorftl cititon,/t,i CIl Imnea .ti<lemeior de 0l'~rare pw-ticular, Cli lallira prePfimlerent te/mica a ace,dora . Am creat aeMalii Ilicrare av6wl In permanent,! f'~ vedere cww$tin/ele de /!aU! , 'i cadrul conocl,tual neocsare 'm"i student /a 0 jactl/latc de ealc~laloare. /" acea,,/ii structw'(i, eartoo este flu"j' aJrl.drtnM pe"tm a fi "Ii/il orirtlr!'; citit()r cm"C ClJ.!l t a !m prim co"tact tfl domeflj,,/ . i..temc/"r de olJerare, SIJerUm ca I"'rcmyerea sa sli ojere $i #11 set de deprittderi ~j abardiiri In $olul io tlarta probh'11ldor rart dqlaM"lc sfc", sisteme/Of" de opera,.".
''', ill

Diver,li/atea $flbicdcior aba,.,lal~ a repre:cntat 0 ddic~llale in crean", ,me; ~"cc" $iuui clare de "",pilole. Strotcrlia almsil ulc ""a strolijimlil, fiecan; capitol oozfiwl"-se pc cdc ,d1,dialc Ilnten'or. 1(Jt".,i, a" ,xi,ltllt ",o",e'l l ~ r" Ca!'!! a /rcb"U .'if ,dilidim a""milc n"ti,mi inai"te de a fi deftttit cadnll conlXp/,wl, sa" la cIi/rvu mpit()/e dis/m,/Ii lie IJre.::e!llm-ea lor. In ailtfel de ., ;llIa/;i dliloru/t,; Ii .' lilll ojerile rejerin/e cd:tre capito/e/e in r{lre s!mt d"rijir",/c no!ilmile i,,,,i>CI'/r.. C"rll'n ,w",a,.,ejir. prez",oI"n'~' ~i di.~r"IIlrea noti,milor de baz" flOCI'-'!Ilrc 1m"i sllu/cnl ,n primii an; lie jnc,l/'ate, in dmn"",i,,1 mlc"lnt(l(Jrel()r. Dillersi/a/ea 811biecfel()r ~i nit'd,,/ de de/aim reoomandii 0 ruimilare In IJroj"nzlme a injormallilor. dilleolo de dumta "lIlli semestNt $au a mllli {m. Sperntl! ca .~hJ(len l u/ domic lie al,rojundare .!a riisjoiiiilca aceMti'i carle In momellleie III care CllIlUi sprijin s!lplimenlar pentr" rezoivarea "nei probkmc din d()mc"i". Din p",'cl dc "fAere 1e/lllic, male";a/"I dc ja/Ii ojcrii () pt;rspcciiva cc all<l, ti'IC IJrel'onderent lmivpr.,,,/td U"'!X. Am consider"t rontact,,1 <:1' /..i,,,,x ca pe 0 oIJort""ilate ~pat'lc lientr" 0 majorilate a ulilizatorilor cc IJrovill din medml Windmli8, in can; descori oltcrna/i"e/e in (I()mc"i,,/ . i.!lcmdor de operon; nil n;pn;zjnlii () opli1l"c luotif ill considerare, Dorillto noa.<tra e. te ca "ti/i:zllrea Will; 1I0U sistern de olJerare, c" o ri'i.!pimdire 1i 0 ctlo/,,!.e tot mai i"len.le, Sa ojerr 0 no"" pe,.lpcct1Vl' U/mprYi il,mii calculal.od!-elor In general a sis/eme/or de ol'ernre In IJ ar/.;culllr. D~i carle.1 e.1/e

$'

.1

/oco/izaM pe Li"UX, /irx<m:. cnl'ilol inc/tule ,~ectiu1li ,Ie .~tudii de caz prezen/ale mecanismele simi/ore dillir-Im siskm Windows.

z n

C(lrc

s~"t

Stt1;ctum carli, cslc wnceputa' pClllru a v/cri aim 0 prezclliare a cndmlui conccptuul, eM ~i 0 f'<1,t<: aplinrlitui r,l)n8ln,itii prin P$cmple. FiOO1rc capitol e,< /e pIT/aiat de 0 midi secfitme "Ce se !lwala III ace.'t COI)itoJ?'; utilii petl/t1; repemreo prillcipo/elor lIolilm; Capitolcic ~c f"cheie Ct, 0 uclilme de "Cum,d e dICic' .I i afKJi de ,,!ntrelu'iri'; pcnif1' n )len"ik ~ililonll"i 0 au/neva /,wn: a cmlO~/inlclor dobli."di/c. Unele ~(Xli,mi 8'mt mam>tc CU Ai",/Joluri yra/iN! CU () .,cmnijioolic specwlli; i7llp<>f'tant, notli. OZN (pCf,if1' lell!lo/O<jiile recente de lip,d "bleedinq e;lqc") .,i alom (pen ln' aspecte te/mice avansalc) , Recomondiim I"'rcI,rgern, ~e<;t"enl;nlii a clirtii, dar citito nd atlatlSa/ I"'a le "iiri direct la 1m capitol de interes particular, Dot jiind continulul praclic ddaliat, e.,le Ittilii /olositY:1i mlrulatorulu; 1'(;1,1", r"larc;z comenzi/or IH-czentalc $i llent", C:tpJonHwJ. OIJ/i!tniior exislente, Itl pamlel Ctl p<lrturyerea rloliuni/IJI' loorelice. Mu/tumim !!tturlJl' eeJ"r care all contrihuilio ,-eaitzarea clirln. Mooul dc orya",zare 8. prczcnim-c, ca ~i d;l.Icr~ilatm iujom'otiilor prc~cutotc .IC iJW;ca;;if. pc 40rtlll coII/i""" ~i posi1mea 'mei echipe elltuzi"ste. fn pnmul mud. ii m"/I'''lIim domlw llti pro/esor NiCIJlac TiipM, prccum ~; ooIcyilor ,w"tri Vlad Vayaru, Mi/'" i MaNl.!cuc, Dantci Ro"uer ~i Andrei Bu/wiu, a caror impiicare 0 can , /ituit un /Je"efir:iu direct In d"oon".,1 a aocsle. cIlf'/.. M,dr"",im, de a,~emct' m, t/JleyiJOf' Alex t:/timie ~ i A",I,""i Fn1J.r )lenlnl CIJ,,/ribt</ia ad't$ii, ~i co/cqilor Alex .h",C1l, l. ucian Grijinw, Ciilif> lorgulescu , Void,ila Imlc!!, Andre. DUm;!r", Laura Gh eorghe perllr" reviZ'tlirea material"I,,; pe parcllrAtJi f;nali~,'rii acestuia. Adre.,iim mult"mi"'; .'pecin/e ecliil'et c"r.<,d"i de Uti/izarw S~I~mc/or de Ol't:mt'f' C<1rtl IIe-u o/eri! 0 atlllo4erii de SIlfKJ,i, imlJlican .1i enoyie penlnl realizarea cartii, Form" ac/"a/ii a rArlii .~c bazcazii pe cfOtt"I.~u.'lillut depU$ dea IImy,,1 nt"'lCroo.~elor acti!!itiiti di,. j'''.''/ curs"/,,i de U/ilizarro S~temelor de Operare. Nu ill u!timul mnd, muillimim cilitarilor, la p'~mul pa,~ 1 11 domcmu/ pl;n de IJro1.lociiri Eo Slmj cei olmm Ie dcdiol'm ar,ca.5/i1 carle. Nc-a /licut pliiccre sa 0 .,cnem, ~i "IJenlm di ,,,,<Car 0 parle dill ent"ziasm"l ,w, </r" sii se convcrlea,~cd" i" pa.,i!ltw p<m!n, ciWoni aocstor pay;";.

$' de satis/ac/i' al cn/cula/oordor,

ii

C JPYrighted

mataf~1

Cuprins
1
lolroducere 1.1 Ce (ISle un sistem de operare? .

1 1

'2

'3

Funcliile unui sistem de ope rare Tipuri de sistema de operare Funclionarea sistemelor de operare 1. 1.3 SCUTt istorie al sistemelor de operaTe 1.2. t Prima gene ratie 1.2.2 A doua generatie ' .2.3 A Ireia generalie 1.2.4 A patra generati e Sistema de operare modarl'le , 1.3.1 Sistema de ope rare desktop si server
1. 1.1
1. 1.2 1 32 1 33 1 34
1 35

3
4 5 7 7

8 8
9 9 10
11
11

Familia Windows
Mae OS X I ;nux Alte (In ix. ,.r j

12
13

1.3.6 1.3.7
14
1.4 . t

Comunitati open source Sistema de ope rare pentru dis(,1ozitive mobile

14 15
16

Studju de

cal

Virtuali zare. Rularea unui SO dintr-o masina virtuala

16
23

Inslalilrea Linux. Configurarl d e bazi

2.1

Linu~ .

Distribtitii Linux .
Prir.c ipale le d istributi i Linux
Dabia n

23
24 25 27 28 28 29 31 32 38 38 40 44 45 45 47

2. 1.1
2 1

22

23

2A

I Jblmlll 2. 1.3 Tipuri de dislribulii linu x . Insralarea I jOttX Alegerea dislribuliei linux 2.2.1 2.2.2 Pregatirea sistemului I iveCD 223 InSlalare Kltbltntll 224 Interactiunea eu sislemul de operare ' 2.3.1 Interletele eu utilizatonJl 2.3.2 Interlala in linie de eomandii (ClI) 2.3.3 Oprirea sistemului de caleul , Configurari de baza ale SO . 24 1 Adrninistra rea siSlernuitri I ioux 2.4.2 Asigurarea eonectiviliitii la Internet 2.4.3 Aelua iizarea sislemuiui si a pacneteior 2.4.4 Adrninistrarea utilizatorilor si a grupurilor de uWizatori

47 48
.1

iii

iv
2 5

INTRODUCERE iN SISTEME DE OPERARE Stud;; de caz I ii i

Gestiunea pachelelor si utilizalorilor 31 Geslillnea Illilizalorjlor 3. 1.1 UID,GID 3.1.2 Adaugarea si stergerea utilizatorilor 3. 1.3 Ad1lugarea si stergerea unui grup de utilizalori 3 14 ModifiC area daletor unui utjljzalor 3. 1.5 Ad1lugarea si stergerea uflizatorilor 3.2 GeSliunea pachatelor . 3 3 Sludi; de caz 3.3.1 Fisierele in care SU l'lt stoeate inlorman despre ut"lizatori 3 3 2 ACll1a lizarea unui sisl em Dehian sau lJbunlu Sisteme de lisiere 4.1 Notiuni introdUClive 4.1. 1 Ce esle un sistem de Hsiere 4. 1.2 lerarhia sistemului de lisiere 4. 1.3 CAi relative si cAi absolule . 4 14 Vadabila de mediI! PATH 4.2 Tipuri de lisiere 4.2.1 Terminolog ie 4.2.2 Detectia tipului l isierelor . 4.3 Operatii uzuale asupra fisierelor si direetoarelor . 4.3.1 Alisarea si sehimbarea direetorului eurent 4.3.2 Alisarea eontinutului lisierelor ... 4.3.3 Listarea conlinutului unui director. 4.3.4 Crearea fisierelor/directoare lor .. 4.3.5 Copiere/mutare/redenumirefslergere 4.3.6 Arhivarea lisierelor si dezarhivarea 4.3.7 Backup 44 Red ireclAri de oomenzi 4.4.1 Dasedplodi da fisiar 44' Red irecll1ri 4.5 Drepluri de aeces 4.5.1 Ulili zatori si grupuri de ulilizatori vs. liste de aeces 4.5.2 Clasilicarea drep!urilor de aeces 4.5.3 Vizualizarea dreplurilor de aeces 4.6 C1Iularea lisierelor 4 6 1 Comaoda fjnd 4 5 2 Comanda locale 4 6 3 Comanda whereis 4 54 Comanda which 4.6.5 Comanda ty pe 4.7 Ti puri de sistema de fisiera 4.7.1 Integri talea dalelor . 4.7.2 Alegerea unui sislem de lisiere 4.7.3 Adresarea intr-un sistem de fisi ere

53

53
55

55 56 56 57 58 64
64
55

69 69 69 70
72

74

74
74 75 76 76
77

77
79

80 82 85 85 85 86 87 88 89 89 90
90 91
91

92 92 92

93 93 95
atanal

CUPRINS

,
Lucrul cu sistemele de fisiere . 4.8.1 Crearea unui sistem de fisiere . 4.8.2 Montarea unui sistem de fisiere . 4.8.3 Repararea unui sistem de fisiere 4.8.4 Crearea unei imagini pentru un sistem de lisiere . 4.8.5 "Stergerea unui sistem de !isiefe .
4 B6 Monjtorizarea uliliz:1irii d jsculuj

4.8

95 96 97

"0 100
101

'"

"

"

..
104

410 Studjjdecaz 4. 10.1 Comen zi pentru luerul cu l isiere in Windows 4. 10.2 Utilizarea in sigurantA a comellZilor PEl fisiere

104

104

1,

Proc ese

5.1

--'!<

111

52

~, ~
,

~ ~II

.~

5.3

54

5.2.2 Ulilitarul pstree . 5.2.3 Utilitarul pgrep 5.2.4 Utilitarul lOp 5.2.5 Timpul de executie at unui proces. Comanda time. 5.2.6 Sistemul de !isiefe procts Rularea proceselor in background. Job-uri. Daemoni . 5.3.1 Rularea unui proces in backgroulld . 5.3.2 Suspend area unui proces 5.3.3 Controlul job-urilor . 534 Daemoni Semoale
ii 1 tli~ '~ """'1 ,

122 123 124 126 127 130 130 131 131 133 135

II
5.6
57

Swapping Studj; de caz 5.7.1 Managementul proceselor/servici"lor pe Windows 5.7.2 Procese importante 5.7.3 Prioritatea unui proces

14 1

142 142

" 3

" 5
.1

INTRODU CERE iN SISTEME DE OPERARE


6 Pornirea si initializarea sis temului 6 1 porn irea sistemllilli

it
i ii
I i
154 154

6 14 62

POST

Bootloader 6.2.1 Dispozitive bootabile 6.2.2 Structura sectorului de boot pel"ltru UI"I dispozitiv boot-ab il . 6.2.3 Mecal"lismul de IUl"lctiol"lare a ul"lui bootloader

155 156 156


159

624

GRllB

63 64

~~rza;:~e:.,~=,~,~;
6.4.1

162
165

65

66

Imaginea de nucleu 6.4.2 Optiuni de boot-are pentru nucleu Initializarea sistemului . 651 jnit 6.5.2 upstart 6.5.3 getty si login 6 54 Sesjune de shell Studju de caz
661 Gwb2

165 166 167


167

. 173
174

'"

175

Analiza hardware a slslemulul 7.1 $tructura unui sistem de ope rare . 7 2 Considerenle hardware 7 2 1 St(llclma unui sislem de calcill 7 2 2 Procesorul 723 lerarhia de memorje 7.2.4 Placa de bazi'!; il1lerconectarea componentelor 7.2.5 Dispozilive peri/erice; magistrale 7.3 $uportul penlru d ispozitive la nivelul kerne l-ului 7 3 1 I istarea mad,delor indrca te la ,10 moment dat in sistem 7 3 2 indrcarea IInlli modlll 7 3 3 Desclircarea 11011; mad, II din kernel 7.4 Analiza hardware a unui sistem (magistrale. chipset, CPU, memorie, dispozitive) 7.4.1 Usta hardware Isys 7.4.2 Comen zi pentru af isarea dispozitivelor 7.4.3 Monitorizarea stArii dispozitivelor hardware

185

165
186

187 188 188

19' 192 193


194

195
195

196 196 196 199

I
;
7.6.1
Tipuri de dispozitive lnlreruperi hardware Mrese I/O Adrese DMA

.203
. 204 205

7.6.2
763
764

206
atanal

CUPRINS

vii

77

78

7.6.5 Manipularea dateler la nivel scazut (comanda ddt Ana liza sislemului 7.7.1 Informati i despre sistem 7 7 2 Kernellunables Studii de cal

.206
208

.208
210
211

8.1

Conliguriiri de retea Conceple de relea 8. 1.1 Notiuni de baza 8 12 IPyfi

2H 217

218

,
8.3
823 DNS Contigurari temperare . 8.3.1 Inleriele de relea.

223 225
Conligurari permanente 5i conligl.lrari

,
8.4
Conligurari permanente .

230

"

8.5

86

8.4.6 Configura rea numelui statiei curente Teslarea configurati ifo r de retea 8.5.1 Ping 8 5 2 Traceroule 8.5.3 Cum se depisteaza problemele uzuale In cazul configl.lrarilor de relea Sludii de caz 8.6.1 Verificarea in linie de comanda a parametrilor de relea in Windows 8.6.2 Configurari de relaa in Wind ows Vista 8.6.3 Configurarea PPPoE in Linux

235 .236 236


237

238
240 240

241

.243

9.1 .2 913 9 14

fmpfementarea partiala a stivai TCPIIP . Madelul clientserve r por!mi

252
254
255

.,

viii 9.2

INTRODU CERE iN SISTEME DE OPERARE

Execulia comenzilor la d islanta . 9 2 1 Te lne! 922 SSH

.257 25 7 258

,
933
94 WWW

Clienti de email Secudtatea seryiciuluj de ema il

.266
267 268

95

9.4.4 Clientii Web SIIu1ijdecaz 9 5 1 lJtililarui cURl 952 FIP

.273 273 273 274


279

10

Elemenle de securjlale 10.1 Pro~ematjca securillltii . 10.1.1 Prirocipiidebaza. 101 2 Termeni 102 Securjzarea sis!em uluj 10.2.1 Secudtatea sistemului de operare 10 22 Cootmlul accesuluj JO 2 3 Parole

279 .280 283 284 284 285 287

I i
10 3 1

Ii '

Ii. Moojlorjz area sistem llilli

"
1 I,

10.4.3 Scanarea porturilor 10.5 Securizarea retele i .. 105 1 Fjrewall.uri 10.5.2 Criptarea inlormatiei , 10.5.3 Monitori zarea retelei , 105 Studill de caz 10.6.1 Drepturile pe lisiere In NTFS 10.6.2 Recuperarea parolei ,
, 1 Campilare si linking 1 1 1 lotrodll oore 11 1 1 Ediloare

.307 309 310 310 312 314 314 315

'"
,,

319 320

11 1 4 pachete necesare 11.2 Compi lare. GCC 11 2 1 I Jtilizare GCC

"

323 324 325

",.r

CUPRINS

;,
327 328 330 331

11.2.2 Compilarea din surse multiple .. 11.3 Etapele compil1irii (inclu~v link-editarea) 1 t .3.1 Preprocesarea. 1 t .3.2 Compilarea . 11 33 Asam blarea

1 t .3.6 Fisiere executabile . 11.4 Biblioteci de fur.ctii .. 11.4.1 Tipuri de biblioteci 11.4.2 Informalii despre bibliotecile de fur.ctii 11 43 IJtilizarea bibliotecilor 11 5 A"tomatizarea sarcinilor _ make

339 341 342

343
344 345

1 1

11 57 Sintax1i Make/ila 11 58 Modllri de ulilizare a Make 11 6 porlabililate 11 6 1 Portabililatea la niyelul arhile<:lurii sislemllilli de calclll 11.6.2 Portabilitatea unui limbaj de programare 11.6.3 Portabilitatea la nivelul sistemului de ope rare 11 7 Stlldill de caz 11 7 1 GCC in Windows 11.7.2 Linkeditarea modulelor C si a module tor C++ 12 Shell scriptin g 12.1 Notiuni inlrodl.lCtive 12.1.1 De ce shall scriptir.g? 12.1.2 FacilM.ti oferite de scripturile shell 12.2 Interactiunea Cll shellul . 12 2 1 Edilarea comenzilo[

352 353 354 354 . 354 . 356


356 356

357
365

365 366 367 368

"
"
12.4 Programarea shell . 12 4 1 Vadabile 12.4.2 Caractere speciale shell . 12.4.3 Instructiuni de decizie 12 44 Ciclttriinshell 12 5 EiUre de lexl
384
384

387 391 395 399


.1

,
12.5.1 cat, tac, nl 12.5.2 sort, uniq 12.5.3 head. tail
1254 ellt 1255 Ir
1 2 56

INTRODU CERE iN SISTEME DE OPERARE

.400

.400 .402
403 404 405

we 12.5.7 grep
sed

_405
406
410

125 B 1259

awk

12.6 Gomeoz; de lucru cu lisiere . 12.6.1 xargs


1262 loca te
1263 lind

.414 .414 415


4 16

12.7 Expandarea in sheH . 12.7.1 Simbolul$ 12.7.2 Expresii regu late in shell 12.8 Parametrii unui script shell
128 1 Comanda shift

.419

.419 .421
.421 422

iI

il
428 . 426

t2 11 Studt; de caz 12.11.1 Contorizarea oumil.rului de ulili zatori autentiliCati in sistern

12.11.2 Schimbarea promplului shell


12.11.3 Batch scrip~ng in Windows 12.11.4 PowBrShBIl pB Windows. 13 Madiul grafic

. 429
_ 431 . 433 441

13.1 Concepte in mediul grafic.


13.1.1 Tipurideimag ini 1312 Eontu d Iin iende

.442
.442

" "
13.5.3 13.5.4 13.5.5 13.5.6
I Ii i 13.5.1 System Settings 13.5.2 Schimbarea aspectu lui interfetei grafice

.452
_ 452

ConfiQurari de baza ale sistemului de operare ConligurAri administrative . Configurarea retelei Managemenlul ulilizatorilor

.453
. 454 . 454
.454

atanal

CUPRINS

,;

"
13.7 Aphcatii KDE vs. GNOME 13 a Studjj de caz

.460

14 Utilitare pentru delvottare 141 tntmd 'l cere 14.2 Cod ing style (indent. astyle) t43 Editowl Vim 14 4 Sjsteme de control al vers junji 14.4.1 Princ ipii. 1442 SIIbversion 1443 Gjt 14.5 Analiza si parcurgerea codului

469 469 .470 473 479 .479


480

481 .481

;
14.7.2 Ulilizarea bibliotecilor parlajale

. 486

"

"
.494 .494

,,
.496
496

14.9.1 Eclipse 14.9.2 Anjuta 14.10 Managemenlul prOiecleior software 1410 1 procese de dezvoltare software

14.11.1 DOCumenlatie otieia la 14.11.2 Documenlarea programalor propri i 14.11.3 Carli situtoriale . 14.11.4 Documentatie din Internet. 14 12 S'"di" de ca z 14 12 1 Mjcrosof! Vjsual Studjo

. 496 . 499 500


. 501 502 502

15 Vlala in Linux 151 Muzjca in Linux 152 Ejlme in I jnllx

50'
507 509

.,

xii

INTRODUCERE iN SISTEME DE OPERARE

153 Scr jerea IIrui COJQVD in t jnllx 15.4 Messe nger in linux 155 BjtTorrentio linu x 15_ 6 Imprimanta in linux _ 157 .Jocl.riinliOl'x 158 Dll al-mon itor in t inllx 159 Doc ll mente office in I jnllx

510

. 511
512
_ 51 4 515

516
518

Rilspunsurlla intrebfltl

521 529

BibliografiB Glosa r

531

C JPYnghted matanal

Abrevieri
ACL - Access Control LiSt
ACPI- Advanced Configuration and Power Interlace AGP - Advanced GraphiCs Pori

API - Application Programming Interlace BIOS - BaSic Input Output System eLi - Command Line Interface CMOS - COmplementary Metal Oxide Semiconductor
CPU - Cenlral Processing Unit

DOD - Data Display Debugger DE - Desktop Environment DHep - Dynamic Host Configuration Protocol DlL. - Dynamic-link library OM - Display Manager OMA - Direct Memory Access DNS - Domain Name System DoS - Denial of Service DRAM - Dynamic RAM ELF - Executable and Linking Formal FSB - Front Side Bus
FTP- File Transfer Protocol

FUSE - Filesystem in Userspace


GCe - GNU Compi ler Collection

GOB - GNU Debugger


GID - Group Identifier

GNU - GNU's Not Unix GNU CPP - GNU C preprocessor


GU I - Graphical User Inlerlace

HOD - hard disk drive


HTML - Hypertext Markup languaoe

HITP - Hypertext Transfer Protocol


ICH - 110 C()(Itroiler Hub ICMP - Internet Control Message Protocol IDE - Integrated Development Envirooment IDS - Intrusioo Detection System IMAP - Inlernet Mail Access Protocol IP - Internet Protocol IRC - Internet Relay Chat IRO - interrupt request ISP - Internet Service Provider
~iii

xiv

INTRODUCERE iN SISTEME DE OPERARE

LAN - Loc al Area Network LTS - Long Time Support LVM - LogK:al Volume Manager MAN - Metropolrtan Area Network MBR - Master Boot Record MCH - Memory Controller Hub MIME - Multipuprose Intemet Mail Extensions MinGW - Minimalist GNU for Windows MSVC - MK:rosoft Visual C++ NAT - Network Address Trans lation PC I - Peripheral Component Interconnection PID - process id PKI - Public Key Infrastructure POP3 - Post OffK:e Protocol POSIX - Portable Operatil"lQ System Imerface POST - Power-on Self Test PPP - Point to Point Protocol PPPoE - PPP over Elhemet RAID - Redundant Array 01 Inexpensive Disks RAM - Random Access Memory ROC - Remote Desktop Connection RPM - Rotations Per Minute RTOS - sisteme de operare in timp real S.M A R.T. - Seil-Monitori ng. Analysis and Reporting Technology SMTP - Simple Mail Transfer Protocol SNMP - Simple Network Management Protocol SO - sistem de operare SRAM - StatK: RAM SSH - Secure Shell SVN - Subversion TCP - Transm ission Control Protocol TFTP- Trivial File Transfer Protocol TLD - Top Level Domain TTL - Time To Live TUI - Text User Interface UDP - User DataQr"am Protocol UID - User Identifier URL - Uniform Resource Loc ator USB - Universal Serial Bus VBR - Volume Boot Record VCS - Version Control System VN C - Virtual Network Computing WAN - Wide Area Network WIMP - window, iCoo, menu, pointing device WLAN - Wire less LAN WM - Window Manager WWW- World Wide Web XHTML - Extensible Hypertext Markup Language

C JPYnghted

mataf~1

CAPITOLUL 1. INTRODUCERE

15

crestere iar dezvoltarea intensli a distributiilor Linux conduce la crearea de pachete speCifice care laciliteazli accesulla aplicalii;e necesare. in momenlul de lalli, versiunea slabild a dislribu!iei Debian GNU/Linux olerli pesle 25 de mii de pachele ' . Cea mai mare comunitata de programatori ca dezvo~1i aplicatii opensource pentru un numar foarte mare de platforme ~i sistemele de operare este Source Forge' . Microsoft a i ncurajal dezvollarea unei comunitlili, numilli CodePlex', axatli pe dezvoltarea aplicaliilor opensource lolosind tehnolog iile Microsoft, precum .NET Framework, WirKIows Presenlation Foundation, XNA etc. pentru sisteme de operare de la Microsoft, cu preponderentli WirKIow XP si Windows Vista.

1.3.7

Sisteme de operare pentru dispozitive mobile

o data cu dezvoltarea hardwareului si a Internetului, un numar din ce in ce mai mare


de dispozili~e mobile inleligenle siau flicut aparilia in posesia ulilizaloril or. A~ numitele smartphoneur;' poseda sistema de operara eu laeilitilti aVar1sate de eonectare la Internel, na~igare pe Web, cilire/scriere de emailuri, folosirea unei tastaturi virtuale atc. Example de astfel de dispozitive sunt iPhooe l da la Apple, BlackBerrye, Nokia E71 T, HTC 8 etc. Cel mai rlispanrj it sislem de operare lolosit pe dispozili~e mobile in general, ~i pe smarlphoneuri in particular este Symbian OS de la Symbian LId. Acesta detine aproape 50% din piata sfstemelor de operare penlru smartphoneuri. Sistemul coniine kernel-ul si 0 serie de aplicatii utile in lucrul cu talefonul mobil. Symbian as olerli 0 inlerfalli de dezvoHare (SDK) in C .... pentru scrierea de noi aplicatii. inliinlatli in 2006, FurKIalia Symbiar1 are ca seop lolosirea unei licenle libere pentru intreg codul platformei Symbian. Windows Mobile este sistemul de opearare ~i suila de aplicalii pentru dispozrtive mobile de la Microsoft. Esle proiectat sli arate simiar interfelei Windows ~i este folosi! cu preponderentli in cadru l d i spoziti~elor Pocket PC. Cota de pialli a Wi ndows Mobile a sclizut constant in uHimii ani pana la 0 ~aloare circa 9%. IPhone OS eSle sistemul de operare dez~oltale de Apple pentru iPhone ~i iPod. Inlarfata acestuia lolose~te gesturi de lip multi-louch - sa atinga ecranul penlru aclionarea unui eveniment iPhone OS olera un numar impresionanl de aphcatii. Detine, in acest moment, ap(Qape 15% din piata dispozitivelor mobile inteligente. Android eSle un sistem de ope rare care lolosesle nucleul Linux. Android este dezvoltat de Open Handset Alliance, un consal1iu infiintat de Gaogle impreuna cu mari companii producatoare de hardware si soltware precum HTC, Intel, Motarala, LG atc. Dezvoltarea acestuia se realizeaza in cadrul unei licente ribere (cu unele exceptii), lucru care permite dezvoltarea relati~ lacila de nai apticatii. in aceste momente, Android are 0 cola de
1hnp1il'ackages .deb;an.orgl\e n ny/ 'hnp,//so urceforge. ne I ' h lip ://www.codeplex.com/ ' hllp,//en .wikiped ;a.orWWil<ilSm ~rlphone 'h lip :/ _.""pi" .co mliphon e/ ' h lip ://www.b I3cktNo .. y.comi ' htlp :lI"ufQp".nokia.comllind pmdocl$ldevice.lnokia .87 1 ' htlp l/www.htc.comlwwwlproductldru m/overview.hlml

C JPYnghted matanar

16

INTRODU CERE iN SISTEME DE OPERARE

piala de dcar 3%, cauzata ~i de apari!ia sa receola. Cezvoltarea Android S8 realizeazA independent de platforma hardware pe care va rura.
UnUlf esle loklsit ca baza pentru mai multe sisteme de operare penln; dispozrtive mob1le. Pe lang1\ Andr~d, LiMo, Maemo 5i Openmoko sunt example de sisteme de operare bazale pe Linux,

1.4
1.4.1

Studiu de caz
Virtualizare. Rularea unui SO dintr-o
ma~ina

virtuala

o ma!1 ina virlua la aSia 0 ap1icalia ce creeaza un mediu de executie penl1u rularea unui ncu sistem de operare, lolosind resursele gestionate de sistemul de operare
gazdA, prin intermediul mecanismelor olarita de masina virtualA.

o caracteristieA particulara a ma~inii virtuale asia capacrtatea acesteia de a ilola procesele ce ruleaza sistemul de operare din interiorul sau de cele ale sistemului de operare gazda. Sistemul de balti, In cadrul caruia (sau peste care) ru leaza ma$in a virtualti se cMama sistem g azda (hostl_ Masina virtuala se mai numeste si sistem oas pete (gues t)_ Aplicatia care permite rularea unui sistem de operare vir1valil at se numes te hipervizo r (hypervisor) sau virtual machine monitor (VMM) sau sistem/solu!ie de virtualizare. Exemp le de solulii de vi rtualizare sunt VMwara, VirtualBox, VirtualPC , Xen , KVM.
Apli<Atii Aplica\ii Apl i<alii

Si<t~m o. ' pet~

IQue.t) I<uport p ~ nt r u
a c~ ~ .~ i

51 <t"'" o.'pet~ IQue,t) I<uport p ~ nt r u


a C ~~ f i

a,Me<toJ, 1

~ a'd

... te) ao"Mecty, 1 ~ a'd". t e)

5i.tem o.<pete IQue <t) I, uport p ~ ntfIJ aceea" a'l1It e ct wr~ h. rdware )

Extensi l P<'ntru ge<ti wn ... MV

Hipervizor (VMM)

Sistem fizie (h ardw(lre)

Figura 1.2: Ma$inll virlual1\ C JPYnghted matanal

CAPITOLUL 1_ INTRODUCERE

17

In general, sistamul gazdA alocA pAl1i din resursele sistemului lizic pentru mai?ina virlualA: un procentaj dedk:at din memoria RAM , un spaliu lizk: de slocare de pe hard-disk-ul catculatorului gazd11 (alocal In prealabil sau In timp leal) pe care ma\lina virluala il va lolosi ca pe un hard-disk propriu_ accesul la dilerite dispozitive perilerice. Accesul ce lui de-al doilea sislem de operare la Pfocesor se lace prin intermediul procaselor masinii virluale, care vor rula alMmi de calela ~e aplk:alii I?i VOf imparti acel ea~i resurse. No)iunea de virtualizare nu trebuie conlundala cu cea de emulare ' . Un emulator traduce fiecare instructiune din sistamul oaspete In instrucliuni specifice sistemului gazda. Prin lolosirea unui emulator esle astfel posibila rularea unui program pentru 0 arhitectura dilerit11 de cea a sistemului gazd11, Un sistam virtual izat va lolosi In proportie cat mai mare sistemullizic gazda, din motive de elieienta. Rolul hipervizorului este de a inter media unele opera)ii privilegiate care nu se pot executa direct peste sistemul fizic gazda, Notiunea de virtualizare este exlinsa si la nivalul ap licatiilor, Programale Java ruleaza In cadrul masinii virtuale Java'. Masina virtu ala Java esle un mediu independent de plattorma care permite execulia in acelasi context a aplical iil Of. Un alt exemplu eSle Common Language Runtime' , ma~ina virtuata lolosita de .NET Framework' . Valgrind (vezi secliunea 14.8.2), Iolosit penlru depanalea programe lOf, este, de asemenea. 0 mal?inA virtual11la nivalul aplica!iil or.

De ce virtuelizare? Dezvoltate i ncii din anii '70, masinile virtuale au Inceput s11 fie folos ite intens odata cu dezvoltarea sistemelor hardware. Cresterea eapacitalii de caleul (procesoare multi-core, memorie) \li a capacilatii de stocare (hard-disk-uri) a condus la aparil ia solu tiilor de virtualizare care sii 1010seascA alk:ient resurse le hardware pusa la dispozi~e , Adaugarea de supor! hardware pentru arhilecturile x86 si x86_54 (AMD_Vs si Intal VT") a condus la accelerarea lolosirii solutiilor de virtualizare atat pentru utilizatorul obisnu it cal , mai ales, In mediul business. Unul din principalele motive penlru lolosirea virtualizarii, ma, a~s in mediul comarcial, este consolldarea incarcartl slstemelor fizlce, i n locul 'olosirii a patru sisteme fizice, se poale 1ol05i un singur siSlem lizie in cad rul d .ruia sa ruleze patru ma$ini virluale. cu elect In diminuarea costuri lor de achiz~ie \li administrare. Un al avanlaj imporlat In reprezinla secorlzarea aplicalll1or. Fiecare masina virrua la eSle un madiu izolal si sigur (sandbox). 0 problema care apare pe 0 masinii vi rluali!. nu va afecta niciun all sislem si va putea Ii diagnosticata rapid lolosind sislemul gazdi!.. Virtualizarea este un concept important pentru construirea de platforme de catcu l sigure. Soluliile de virtualizare permit crearea de instan!e de sisteme de operare sau medII de execulie co limitiiri impuse. Sa pot configura procenlaja de resurse care sa fie lolosile de masina virtuatizata:. Sa asigura astfel un conlrol lin pentru gestiunea resurselor.
, h lip :lIen ,wikiped ia ,o,glwikiIE mulalor
. ht!p.llI<www. j ~va.comle nl~wnloadllnde x.jsp

' h lip :11m . d n,m", osofLeo mie n -u.~ ib<a,yl<ldkOO9ch(VS ,71 ),a'P' ' hllp:llmodn ,m"ro. ofLeomi.. n_u.lnelf,am..wo ,kldefau lta .px http ://www.amd. co m1ulllproduct. hechr>Olog ... $ ... i.tua li~atlonlPag~.Ivi.tua~lation .a.p. ' htlp l /www, intel.eom/lechoologylvirtualizalioroJ

ipynghted matanal

18

INTRODUCERE iN SISTEME DE OPERARE

Per'llTu utilizatorul obisnuil, cel rnai important avantaj al vi rtual i z~ri i aSIa posibilitatea ruhirii mai mullor sisteme de operare. Sisteme de operare diferite, vers iune de sistema operare diferite, pol rula simultan pe ac~~i sistem. Pomirea ~i repornirea unui sistem de operare oaspete se rezuma la interactitmea ell solutia de virtualizare lara a impliea actiuoi asupra sistemului fjzie.
PenlTu un dezvoltator, 0 m~in<'i virtuala rep rezinta un mediu ideal penlru dezvollare ~i

tes tare. Orce pro~ema a ap liealiei pa care 0 dezvollMesteaza va alecta doar sistemul
de ope rare oaspele. Dezvoltarea la nivelu l nucleului (kernel programming) se realizeaza, in general. folosind masini virluale. Scenarii camplexe de monitorizare a performan!ei sau depanare pot Ii implementate pe 0 ma~i na virtuala far1i pierderea productivit1i!ii.
Un avantaj al lolosirii masiflilor virtuale aste mobilitatea acestora. 0 masina vi rlual1i este. de obicei, v1izut1i ca un set de fi~ie re. Mutarea acestora pe un alt sistem de calcul este echiva lent cu migrarea masinii virtu ale pe acel sistem. Sistemul de ope rare din cad rul m~i nii virtuale va ru la in ace l~i mod pe un nou sistem. Este posibil1i migrarea unai ma~ini virtu ale in timp ce aceasta ruleaza, tehnicli denumit1i Live Migration'.

Exemple de

ma~ini

virtuale

data cu proliferarea tehnologi ilor de virtualizare, ultimul daceniu a insemn at aparitia mai multor companii si solutii. Printre cela mai cu noscule solutii de virtualizare actuale sunt VMware , VirtualBox, Virtual PC, Xen, KVM , OpenVZ. Acesle solu!ii de virtualizare ru leaza, in general, pe arhitacturi x86 sau x86_64. VMware, Inc,2 esle 0 compan ie americana care produce mai multe aplica!ii de virtualizare. Cela mai cunoscute SUr'lt VMwara Workstation, VMware Player, VMwara Server si VMware ESX. VMware Workstation, Player si Server sunt aplicatii care ruleaza intr-un sistem de operare gazda (Wi ndows sau Linux). VMware Fusior'l este versiur'lea per'l\ru Mac OS X. VMware ESX. versiunea er'l\erprise, esle un sistem de operare complet peste care se instaleaza ir'lslan!e de ma~ini virtu ale. VirtualBox 3 asta 0 solutie de virtualizare dezvo ltata de Sun Microsystams. Similar cu VMware Workstation . esle 0 apl icatie care ruleaz1i peste un sislem de operare gazd1i (Windows, Linux, Mac OS X, Sofaris) ~i in cad rul ~ rei pot Ii instalale alte sisteme de operare. VirtualBox Open Source Edition este disponibila sub licenta GNU. Microsoft Virtual PC' esta un sistem de virtuafizara pentru sisteme de opera ra din fam ilia Windows. Similar VirlualBox si VMware Workstation, Virtual PC olera suport pentru sisleme oaspete doar din lamilia Windows. Se pol rula si sisleme de operare Linu x, dar cu pasi supl imentari de configurare.
Xen 5 este un hipervizor (virtual machine monitor) creal la Universitatea din Cambridge si dezvoltat actual mente de comunitatea Xen ca software liber, sub licent1i GNU. Xen eSle similar VMware ES X. Are suport i n nucleul sistemu lui de operare Unu x, NetBSO si Solaris. Peste sistemu l de baza pot Ii instalate alte sisteme de operare oaspete. Xen
, hnp 11en .wikiped ia. orgIWikiIl. iV<l_ Mig,a!i<> n . ht!p:!lwww.vmwa.e.co m!

, http://www.virtualbo . or(JI ' httpJIwww.mic", . oft cQmlW indow $lvirtual' pel http) lwww. en .orgl

C :opynghted matanal

CAPITOLUL 1. INTRODUCERE

19

folose~te 0 form a de virtualizare denumita paravirtual izare care permite perlormantli ridica. Paravirtualizarea necesita insa modilicarea sfstemului de operare oaspete pentru a putea rula peste Xen. Daca sistemul de baza olera suport de virtu alizare hardware, aturICi nu mai este necesara modifica rea sislemului de ope rare: electul este posibi litalea rularii unui sistem Windows nemodificat peste Xen.

KVM ' (Kernelbased Virtual Machine) este 0 inlrastructura de virtualizare a nueleului Unu x. KVM olera suport pentru virtual izarea hardware (tntel VT ~i AM DN). KVM este indus in nueleul Linux incep1iI1d cu versi unea 2.6.20. 0 parte din utilitarele necesare sunt lurnizate de QEMU ' .
OpenVZ' este 0 tehnologie la nivelul sistemului de operare bazalli pe Linux. Licenliat GPL, OpenVZ const itu ie baza penlru Parall els Virtuozzo Containers, 0 aplicalie proprietara furnizata de Parallels, Inc: OpenVZ este mai degraba un container decat 0 ma~i na virl ualli. OpenVZ nu virlual izeaza intreg sistemul de operare. Nucleul sistemului de ope rare gazda este Iolosit de toate ma~inile virtuale (denum ite si containere sau madii virtuale). Procesele din cadrul lieclirui container sun! izolale, dar se lolosesle acelasi nueleu. Prezenta acelu i~i nueleu inse amna, totu~i, overhead radus pentru lucrul cu diversele containere rezultfmd in viteza 5i perlormanla ridicate.

Cuvinte che le

programe de baza sistem de operare nueleu (kernel) portabilitate API biblioteci Windows Mac OSX Linux Unix
Intre barl

opensource smartphone virtualizare hipervi zor VMware Virtual Box VirtualPC

""
KVM

Open VZ

1. Care dintre urmaloarele aplicatii peale Ii privita ca 0 componenta a Sistemului de ope rare?

o
o

procesor de text playsr penlru lisiere video

, h lip :11www.linu. -k.m.o' gJpagelMain_ Page ' h lip :11www.non9nu.O '9I'1"mui , http ://w iki .openv z,o ,~ a in_ Pago htlp :l1www.!>...a ll.I. coml...-..

C JPYnghted matanal

20

INTRODU CERE iN SISTEME DE OPERARE

o interpretor de comenz;
o client de email
2. Care din Ire urm1ttoarele NU replezinta 0 resursa partajata in cazul virtualizar ii?

DRAM

o harddisk
I:)

procesor

810S

3. Care dintre urmatorii asia autorul unu; limbaj de programare?

o Larry Wall
I:)

linus Torvalds

o Wi lliam Henry Gates III


D Andrew S. Tanenbaum

4. Care dintre urmatoarele NU aSia 0 funq;e a sistemului de ope rare?


o controlul accesului la memoria

o cautarea 5i elim inarea programelor virus o asigurarea comunicArii intre procese

o organizarea fi~ierelor in direcloare


5. Care din urmatoarele sisteme de ope rare NU esle folosil pentru dispozitive mobile?

o o o o o o
o

OpenSolaris iPhone as

o SymbianOS
Andro id

6. Care din urmatoarele tehnologii de virtualizare ruleaz;"i NUMAI pe un sistem Linux? VirlualBox VMware VirlualPC OpenVZ

7. Ce reprezint;"i termenul GNU din distriburie GNUlLinux?

o
o

0 anlilop;"i din Afr ica 0 anagram;"i a cuv;"intului gun (arma) un proiect care produce 0 componanla importanta a aplicatiilor ca rulaaza peste nucleul Linu~ compania care se ocupa de dezvoltarea nucleului Linux C JPYnghted matanal

o
o

CAPITOLUL 1. INTRODUCERE

21

8. Care din urmAtoarele sisteme de operare are cea mai mare cotll pa piata sistemetor desktop?

o o o o o o
o o

Windows Mac OS X
Li nu ~

OpenSolaris

9. Care din urmllloarete sisteme de operare are eea mai mare cotll pa piata dispozitivelor mobile intetigente?
Windows Mobile iPhone OS Android SymbianOS

10. Care din urmAtoa rete sisteme de operare este eet mai vech i?
ODDS

o o o

Uni~

Unu x Open6SD

C JPYnghted matanal

Copyrighted material

Capitolul2 Instalarea Linux. Configurilri de bazil


Unix is Ihe answer, but only if you phrase the question very carefully

Ce se inva!i din a cest capitol ?


Ce aSia Linux Dislribu!ii GNUI Linux Parti!ionarea discului: pregatirea pentru instal are Instatarea Kubuntu Inlertala cu utilizatorul: interfala in linia de comand<1
Autentilicarea in sislem

Conlig urari de baza inlr-un s istem Unux


Interoperabilitate LinuXiWindows

2.1

Linux. Distribufii Linux

Terme nul "Linux" esle deaeori lolosil pentru a rep rezenla 0 intreaga cl asa de sistema

de operare ~i IlU un sistem de operare concre!. Inilial, lermenul "Unux " a lost folosi! penlru a raferi nucleul Linux ' (Linux kernel), sistemals de operare bazale pe Linux si pe utilitarele din proiectul GNU 2 l iind numite sis/erne de operare GNU/linux. Ulterior, termenul a ajuns sA fie folosit pentru a referi atat nocleul Linu~ eM ~i programele care furx:lioneaza cu acesta. Linux sunt dezvoltate ca pro iecte open source (vezi capitolul 14) ~i, de~i sunt dezvoltate lntr-o maniera colaborativa. sunt produse independent unele de altele. Licenlele sub care se alia aceste proiecte permit
, h ttp : //www . ~ ~ro~ l. orgl ' http l lwww.gnu.orgl

o mare parte din u!ilitare le folosite in

23

C JPYnghied matanal

24

INTRODU CERE iN SISTEME DE OPERARE

redistribuirea codului sursi'l, facfmd astlel pasibila aparitia Ur'lor noi pro iecte mai mari, care sa adl.me la un loe programe dezvoltate independenl si sa Ie laea disponibile la un

lac sub forma unei distribtJtii.


o dis tribul ie Lin.... reprezinta astlel 0 co leC\ie de programe, unele din ele modihcale special penlru acea distribulie, care SUI,)! combinate cu 0 versiune de kernel. de muile

or; 5i aceasta modiiicatA pentru aeea distribulie, pentru a crea un sistem de ope rare.
DistributiilB Linu. au ci'lp<'ital de-a lungul limpulu; cele mai variate forme si destinatii.

Unele au ca seop principal utilizarea lor pe servere. allele sun! destinate ulilizarii pe
SsistemB desktop, iar allele sun! optimizatB pentru a oc upa cAt mai puline resurse putand asUel Ii lolosite in sistemele embedded.

2.1.1 Principalele

distribu~ii

Linux

in momentul de lata exista peste 300 de d islribU\ii active (care sunt delvoHate in cont inuare). Dintre ele doar put in peste 10 sunt cunoscute la scara larga, liind utililate pentru seopuri generale. De cele mai mutte ori 0 distribulie nu eSle dezvoltatA de la zero, punclul de plecare constituindu-I un anumit stadiu al unei alte distributii. Noua distribujie paate mosteni de la cea d in care este dezvottalA d iverse elemente, cum ar Ii modul in care se instaleazA aplicalii noi, locul in care se gasesc diverse l isiere de conligurare, lelul in care aratA aceste lisiere elc. Popularitatea d istribuliilor poate Ii urmaritA pe pag ina web http://distrowatch.com . Aici esle rea lizal un clasament al diSlrilxJtiilor pe baza numarului de accesari zilnice ale iniorma!iilor des pre d istributie pe pagina amintiH!:. Acest clasament nu ia in considerare efortul depus pentru mentinerea distributiei, dar arata in mare mAsura interesul manilestat de ulilizalori. Cele mai accesate 16 distributii in ultimul an (Ia data de 19.09.2009) sunt prezentate in tabelul 2.1 (coloana "Accese" prezinta numarul mediu de accese zilnice pe periOada ultimut an; Distribulia SLS esle descrisa online ' ). Pe langA distributiile de uz general (pentru servere sau penlru calculatoare personale) exislii ~i distribulii dedic ate unui scop precis (one purpuse) - spre exemplu Musix', distributie dedicatA producerii de maleri al multimedia. SystemRescueCO', d istribulie Live CD (veli sectiunea 2.2.3) spec ializata in repararea unui calculator pe care sistemul de operare nu se mai inijializeaza din motive ce l in de software. sau BackTrack', distribuJie Live CD care olen'\. utilitarele necesare atacarii un ei retele de calculatoare.

o clasA aparte de distributii 0 reprez intA cele care au ca tinta ocuparea a cAt mai pulin
Cea mai cunoscuta distribujie ce urmareste aces! lucru este spat iu. DamnSmaIiLinux", dislributie care reuseste sa includA in doar 50MB 0 d istribut ie completa cu inter/alA grafica si cu toate aplicaliile uzuale.
, hnp 11en .wikiped ia. orgIWikilSortiand ~lino. _ Sy,'e m ' hnp:iIwww.mu. i. o rg.8,leni

, http://www.s y. reseed .orgl


httpJIwww. remo l ee.pIoiI . or~acklf.. ck.hlml

http) Iwww.damn.m. lliiou .org!

C JPYnghted matanal

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

25
Iii

TabeluI2.1: Cele mai

Iii

"

Pe langa aceslea, comunilaWe au dezvollat distribulii caracteristice unor anumite zone geografice - Kiwi Linux 1 este 0 distr ibutie adaptata utilizatorilor d in Romania. d islribu!i ilor ~i lalul in care au derival una din alta. 0 simpta cautara a sirului de caractere "Iinux dislro timeline'" pe Google Images' va oteri cateva zeci de varianle ale acestei diagrame. 0 versiune care contine doar principalele distributii este prezentata in figura 2.1 .

Pe In ternet sunt disponibile mai multe diagrame care prezinta

evolul~

2.1.2

Debian. Ubuntu

Una dintre primete distribulii aparute este Deblan. Din t 993 si pana in prezent aceasta distribu!ie a reprezentat punctul de pleca re a peste 40 de d i stribu~i. Unul dintre cele mai mari avanlaje ale dislribu!iei II reprezinta suportul bun disponibil pe Inlernet, alat pe pagina web ofiCialaJ cAt Si pe alte sileuri. Distribu!ia ofera posibi litalea de a instala 5i configura sistemul de operare lolosincl pachele, liind d isponibile peste 25000 de pach ele' - exista disponibi l suport pentru actualizarea lacila si organizata a sistem ului de operare. De asemenea sunt disponibile Irei varianle ale dislribu!iei: slable, testing si unstable, exitAnd astlel posibilitatea alegerii gradului de stabil itate si noutate dorit. eea mai cunoscuta distribulie derivala din Debian esle Ubuntu ~ . in momentul de fala Ubuntu este si distribu!ia cu cea mai mare popu laritate dintre toate distribujiile exislente, fiind pe primul loc in clasamentul dislrowatch,com de aproape patru ani. Atu ul principal
1hnp,IJIo. iwilinu . o!g/ ' h lip :11im ages.\/OOg"'.co mI ' h Itp :I/www.d e bian .oryt.,-"porl! ' in ""rsiunu Oeb ian ~ .O (Ioonny) http ;l/www.ublJntu .c om

C JPYnghted matanal

26

INTRODU CERE iN SISTEME DE OPEAARE

, , ,

o o

o o o o o o o o , , , ,

1 .-

T*

.,

~ . ~ ' ----~--~--nr T ~ I -T I --r+

"':=' If

I I ~ II ,. ~ ! ; ; ---1 , ;:' - +1 --+-+-

.I..

"~rTT1.-~,~t l ++~~ ;,~ 1 ~!


I

~r

~ :::p=

I! +-+-+-+-+-+-

o o o o o o o o , , ,

Figura 2.1 : Evolu!ia principalelor distribu!ii Linux

al acestei distributii esle usurinla in ulilizare. Oistribu!ia conIine loate aplica!iile de care
un utilizator are nevoia 5i reali zeazE!. multe dintre conligurE!.ri in mod automat. Un avantaj

mare pe care il olerE!. esle suportul disponibil pe forumul aliciaL

Nivelul de adoptie al acestui sislem de operare a creseu! usor odata cu distribuirea acesluia preinslalat pe calculatoare. Prima ini!iativa in aces! sens a avuto unul dinlre

cel mai man prodl.'Catori de e<:hipamente IT care, in mai 2007, a anuntat

ca. va seoate

pe piala ca lClllatoare desktop 5i laptop-uri care au preinstalat Ubuntu,' in prezent, un mare num.:ir de computere desktop, laptop dar si de tip netbook sunt vAndute cu Linux preinstalat.

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

27

2.1.3

Tipuri de distribu,ii Linux

in IT exista douA concepte importante legale de stabilitatea, siguran!a si gradul de noutale al aplicaliilor (1;i nu numai): ~ersiun il e stabile (slable ) si cele cu un grad de noulate richcat (bleeding edge). Acesle doua conceple reprezinlA doua exlreme ale modului in care esle dez~oltata 0 aplica!ie. Verslunile stabile (slable) reprezinta ~ers i un i ale programelor care au lost testate un timp indelungal, ale cAro r buguri au losl rezol~ale, care nu prezinl<''i proble me de incompatibilitate ~i care au un grad de siguranlA ridica!. intro versiune stabilA este destul de improbabil sa apara brese de securitate, Aceste ~ersiuni apar rar deoarece este nevoie de l imp pentru a crea stabilitatea necesarA. stabile este acela ca aplica!iite nu prezinta nieiun grad de noulate. De mu~e ori pot sA dureze ani pflnil. cand 0 nouA ~ersiu ne a unei aplica!ii sA lie introdusA inlro ~ersiune stabil a. a unei distri bulii Unux, Versiunile stabile sunt lotosite i n special pentru severe daloritA gradului de stabilitate si siguran!A oleri!. Versiunile cu un grad de noulale ridical (bleeding edge) reprezintA versiuni recente ale programetor, ~ersiuni care includ ultimele imbunAtAtiri ~i ino~atii. Aceste vers iuni apardestul de des, Irecven!a lor de apari!ie l iind in mare masurA inlluentalA de mArimea comunitalii ce dez~o~a aplicatia si de imbumilatirile aduse. Dezavantajul versiunilor cu grad de noutate rid icat este acela cA prezintA un grad de slabilitate ~i de siguran!A incert, de multe ori scazut. DatoritA testArii slabe a aplica!iilor (d in lipsA de timp), acestea prezinta deseeri gAuri de securitate sau probleme de slabilitale, Versiunile cu grad de noutate ridical sunt recomandate celor care doresc sA aibA ce le mai noi tehnologii implementate cu orice cost. Ele nu sunt recomandate pentru servere, ci pentru calcu latoare unde slabilitatea si siguranta nu sunl elemente che ie. inlre cele douA tipuri de aplica!i prezentate exisla numeroase niveluri de compromis. Alegerea unui asHel de nivel pentm un sistem de opera re (m ai aproape de Slabi litate sau mai aproape de cele mai noi tehnologii) trebuie 11I.cuta )inand cont de scopul calculatoru lui pe care va Ii instatal si de gradul de securitate ~i de stabililate pe care trebu ie sA it prezinte acesla. DistribUliile au mod uri diferite de tralare a conceptelor slable Spre
e~emplu, ~i Deza~ant ajul ~ersiunilor

bleedingedge.

distribu!ia Debian poate Ii instalatA in 3 versiuni:


aplica~i

siable - versiune stabil1l.. cu

testate mult timp

tesling - versiune de testare , dupA 0 perioadA de timp devin e vers iunea stable unslable - versiune care incorporeazA programele in vers iunile lor bleedingedge, devine versiunea testing dupA 0 perioadA

Ubuntu are un cic lu de dez~oltare de 6 luni (in englezA release cycle - ciclu de lansare). Acest lucru presupune dezvoltarea distributiei timp de S iuni si lansarea unei nOi vers iuni dupA aceastA perioadA. in prezent, Ubuntu lanseaza distri~!i i in aprilie (numarul X,04) si i n octombrie (num1l.rul X. l0) - X reprezinlA ultimele douA c~re din an (pentru 2009 9, 2010 - 10 elc.).
~,.,

...., ...."'.1

28

INTRODU CERE iN SISTEME DE OPERARE

Pe IA091\ aceste versiuni. Ubuntu are si 0 vers iune LTS (Long Term Support) cu un ciclu de dezvo~are de 2 ani, versiUI18 pentru care asIa oleri! supor, limp de 3 ani penlru sistema desktop (S ani pentru sistema server).
Pentru fiecare versiune de Ubuntul Kubuntu, cele mai utilizate Ire; varianle de instalare

sunl:
Instala rea server asle rna; apropiatA de Oebian
~i

de slabilital ea acestu ia. Este

recomandata pentru calculatoare care 'rabuie sa alare stabilitate 5i Siguran!a.


Instala rea deskto p (cea rna; uzuala) permite ulilizatoru lui 51\ instalaze varianta desktop a sistemului de operare folosind un aSis!Snl in mod grahc. Pentru 0 buna lunctionare, S8 recomanda utilizarea unui sistem cu eel putin 384MB de RAM. Instalarea alternate pe rmite utilizatorului sA instaleze varianta desktop, insA asistenlut de inslatare nu va mai Ii unut in mod gratic ci unut in mod lexl, bazal pe asistentul de inslalare al distributiei Debian. Din acest motiv varianta alternate poate Ii instalatA ~i pe sisteme cu mai pulin de 384 MB de RAM. Un all avantai al variantei alternate este acela ca permitea rea lizarea unei partilionari avansale a hard-disk-ului, oferirod suport pentru utilizarea RAID ' sau LVM' (ambele tehnologii perm it real izarea de part itii care includ spatiul de pe mai multe hard-disk-uri). Pe IAnga aceste vers iune mai exista ~i versiunea Netbook Remix (pentru calcu latoare de tip nelbaok).

2.2 Instalarea Linux


2.2.1 Alegerea distributiei Linu x

Dupa cum a lost mentiona! si in sec!iunea 2.1 , exista mai multe tipuri de d istributii. CAteva criterii de alegere a unei d i stri bu~ i au fost men\ionate anterior, Principalele criter ii lolosite In alegerea distributiilor sunt: nivelu l de stabilitate ~i gradul de noutate al aplicatiilor (in relatie cu nivelul de stabilitate, d upa cum a fost mentionat antenor) suportul oferit de comunitate (s au de compan ia care dezvoltA distributia) lamiliaritatea cu anumite compone nte ale sistemulu i, In principal sistemu l de pachele (aces ta nu reprezintA un criteriu loarte important pentru noii utilizaton ) suportul pentru hardware-ul dispon ib11in calculator - distribu!iile pot Ii disponibile pentru platforme dilerite (procesoare dilerite) si pot oferi acces fac il la dnver-e pentru hardware variat resursele disponibile pe calculator - in cazul in care resursele calcu latorului pe care va instala Linux sun! scazute, se recomaroda cautarea unei distribu!ii cu cannle scazute
1Redunda nt Am' , 01 Inex!"' n..... Disk. ' Log;;:a t Vo"'me Ma nager

C JPYnghted ma'ana.!

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

29

dastinatia sistemului da operare - in cazu l in care sa urmareste utilizarea Linux pentru 0 anum itA activitatel sarcina se rBComandA instalarea unei distributii special concepute (in cazul in care exisla) - (vezi sec!iunea 2. 1, 1). Oistribulia aleasa ca supor! pe ntru aceasla carle esle Kubunru 9.10 Desktop', distribulie derivata din Ubuntu. care: olan''j un nivel acceptabi l de stabilitate raportat la nivalul de noutate al pachetelor are 0 comunitate loarte larga, formata din toti utilizatorii da Ubuntu si darivate ale acesluia olera suport lacil pentru hardware proprielar, hardware care nu are drivere open source disponibile implicit in distributiila Linux; majoritataa dispozitivelor comune sunt suporlate poate lunc!iona bi ne pe un sistem desktop actual, dat fiind ce rin!ele acesteiaZ sistemul pe care va Ii instalat va Ii utilizat ca desktop

2.2.2

Pregatirea sistemului

Verlficarea eerlnlelor slstemului. Spaliul de swap Fiecare sistem de operare (~i implic~ distribu!ie Linux) esle insotrt de 0 serie de cerin!e minime hardware. Aeeslea sunl recomandari care, in cazul in care sunt indeplinite, asigura buna lunC!ionare a sistemului de operate. in anum ite situa!ii, programele care se ocupa de inslalarea sislem ului de ope rare vor detBCta r.eindeplinirea cerin!elor minime hardware ~i vcr raluza cOI1tiuarea procesului de inslalare. Oistribu!ia aleas a in aceasla carte (Kubuntu 9. 10) ale urmAtoarele cerinle hardware (recomandari, in parantazA se regasesc cerinlele minima): prccasor x8S 700 MH z (m in: 300 MHz) 384 MB RAM (min: 64 MB RAM -Ia instalarea lara madiu gralic) 8 GB spatiu pa HOD (m in: 4 GB) placA video capabila sA aliseze rezolutia I024 x768 (min: 640x480) pentru instalare si aclualizare a sistemu lui - conexiune la Internet (min: CDROM sau placa de retaa) Printra principalele probleme ce lin de ulilizarea facila a unui sislem de operare 0 reprezintA lipsa memoriai RAM. Sistemul da operare loloseste pentru stocarea datelor temperare memoria RAM. Aceasta are avantajul unui timp de r3spuns ~i al une; viteze de cilira loarte mari, insa esla limilatA din punclul de veclera al capac itAlii (s isteme le ac tuala nu au, in mod normal, mai mull da 2GB da memoria RAM). Atunei cAnd intreaga memoria RAM aste umplutA cu data, existA douA solutii alternative. Prima din ele constA in nealocarea de memorie RAM penlru programe le
, http ://www .~lJbo.mlu .0'lP ' http.;I"' .. lp,<.Jbontu,cornlCQmmunilylln.tallal"nlS~lemRequireme nt.

C JPYnghted matanal

30

INTRODU CE RE iN SISTEME DE OPERARE

care cer acest IUCfU. Ca urmare programul respectiv nu va putea lunctiona si va genera BrorL At unei cancl programul in cauz3 asle unul vital pentru func!ionarea sistemului de operare, funct ionarea lntregului sistem de operare poate deveni instabilA. A daua varia nt1\. aSle aceea in care dalete care ar trabui slocale in memoria RAM sunt stocate intr-o alta memoria (pe hard-disk sau pe 0 memoria pEl USB). Oeoarece memoria RAM eSle rea mai rapida memoria din sistem, utilizarea unui all tip de
memoria

va

alrage dup:!\ sine penalizAri de perlormanW:. Aceasl<''i solutie S8 numes!e

swapping dalaritA modului in care funclioneaza: dacA memoria RAM asle plina 5i apar cereri pantru alocarea de noi zone de memoria, 0 parte din dalate allate deja in memoria RAM sunt mutate pe un alt tip de memorie, in acest te l eliberandu-se memorie RAM. in momentul in care datele mutate anterior pe un alt tip de memorie sunt cerute de pl"ograme, ele sunt mutate inapoi in RAM (daca nu esta suliCientloc in acel moment se va elibera 0 parte din RAM copiind alte date din RAM pe suporlul de memorie).
Cea mai uzuala ~i ieltina solu!ie de memorie lolosila penlru swap este hard-disk-ul (vezi secliunea 5.6). SiSlemele de ope rare de lip Linux lolosesc in general a zona dadicata pe hard-disk numita pllrti!ie de swa p. Aceasta partitie are in gelleral dimensiuni apropiate de cele ale memoriei RAM (de ord inul 12 G8). Windowsul ~i sislemul de operare Mac OS X lolosesc pentru swap li~ iere a caror dimensiune se poate extinde sau micsora in IUIlC\ie de necesitati.

Parlilionare o pattllie reprezinta 0 diviziune logica a unui harddisk. Prin parti!ionare un hard disk este impartit in mai multe parl ilii . Pe un harddisk poate exista 5i 0 singura. partitie. Un harddisk este nepar'i!ionat atunci cand pe el nu exisla. nicio parlilie. Partition area unui hard-disk illace pe acesta sa. aiba aceea~i comportare ca mai multe hard-disk-uri independenle. Di/erenla intre partilii ~i hard-disk-uri reale consla. in /aptul ca parliti ile de pe un hard-disk lolo sesc acelea~i resurse hardware (si. implicit, in cawl une; delocliuni hardware a hard-disk-ului, dalele de pe loate parti!iile POI deveni inaccesibi le). in plus partitiil e pol Ii redimension ate dupa. ce au lost create, in schimb discurile au 0 dimensiune lixa. inlro partitie se poale crea un sistem de lisiere pentru slocarea lisierelor sau partilia poale Ii ulilizala. in scopuri speciale, cum sunl de exemplu partitiile de swap. Parlitiile de swap nu lolosesc un sistem de lisiere ca NTFS. FAT32 sau ext3. Sistemul de operare are melode proprii de a organiza dalele in ele si de a Ie lace usor de accesat (vezi cap iloluI4). Avantajele
utili~ri i

de parti!ii sunt urmatoarele:

posibililalea instalarii mai mu~or sisleme de operare pe acela~i hard-disk - se poate alege ulterior. la pornirea sistemu lui de calcul. care din ele va Ii lolosit (vezi seC\iunea 6.2); posibililalea de a separa datele personale de dalele lolosite de sislemul de ope rare ~i de programe - daca dalele personale ale utilizaloril or se gas esc pe 0 atanal

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

31

alta partitie, sistemul de operare ou mai poate Ii pornit si este necesarA reinstalarea lui, datele nu vor Ii alectate in niciun lei; se poate utiliza acelasi spatiu de swap intre mai multe sisteme de operare de tip Unux instalate pe acetasi sistem de calcut (Iolosind aceea~i partilie de swap penlru toale).

Tfpurl de partl,.. Primul sector l izic de pe un hard-<lisk poartA numele Mastllr Boot Rllcord (MBR) conbne (vezi sectiunea 6.2.1). Acest sector are 512 octeti .si. . inlormabi . importante despre modul in care este partitionat hard-<liskul.

&

DacA acest sector esle sters sau suprascris toale inlorma\iile de pe harddisk se pierd. ' In cadrul MBA se gasesc inlorma~i despre liecare parti!ie de pe harddisk. Aceste informalii sunt stocate lntro tabela de partilii prim are care are doar patru intrarL Prin urmare MBRul poate reline inlormalii pentru door patru parli!ii primare. Una dintre aceste patru partitii va Ii marcata ca activa ~i de pe ea se va incerca pornirea sistemului de operare. o parti! ie primarii poate co ntine doar un singur sistem de I~iere. Pentru a el imina limitarea pe care 0 prezintA MBRul (de a putea reline doar patrv parti!ii primare) a lost creatA parti!ia extinsa. Acest tip de par1~ie ocupa tot 0 intrare in tabela de parblii din MBR insa poate conIine la randul sau mai mulle partl!iI loglce, liecare partilie avand asociat un sistam da fis iera. NumArul da partitii logice incluse introO partitia extinsa este limitat doar de dimensiunile part~iei extinse si de strvctura de date lolosrta pentru a retine inlormaliile despre parli!iile logice. Unele Sisteme de operare ITebuie sA lie instalate pe partitii primare pentru a putea porni. in aceasta categorie intra MSDOS ~i toate vers iunile de Windows care depind de el (Windows 3.x, Windows 95, Windows 98, Windows Millenium), precum si BSD.

2.2.3

live CD

PenITu Ubuntu 9.10 (si derivatele prec um Kubuntu) varianta grafica de instalare este disponibilA sub forma unui live CO Un Live CO (sau live DVO) este un CD (DVD) care conIine un sistem de operare care poate Ii pomit direct {bootabil}, larA a avea nevoie de instal area pe un harddisk sau de prezenta acestuia. Exista 5i live USBuri, dispoziUve USB bootabile cu sisteme de ope rare care au. de multe ori, adAugatA si posibilitatea scrierii informa!iilor pe USB {comparativ cu live CO/OVOurile unde inlormatiile se retin implicit doar in memorie}.
' c hiar daci info rmali'''' d in MBR .~ pierd, folo$i nd util ~are 'f>"Cia~late ." pot recup"r. date'" de "" hard d isk prill recunonte",. tip.relor ca,acte ri. ti<:e . i.temelo, de fi,ie",

.1

32

INTRODU CERE iN SISTEME DE OPERARE

Termenul "Live" vine de la faptul cA pe un singur disc se gAs esc (cate fis ierele r'lecesare
func!ionarii unui sistem de operare,

mra a Ii necesara cop ierea unl.li fi~ier pe

hard-disk

inaintea pornirii sistemului de ope rare.


Astfel un live CD nu modi/iea in niciun fel sislemul de operare instatat pe hard-disk,

excep!ie Uicfmd situa!iile c;'md utilizatorul doresle in mod expres aces! lucru. Un sistem
de operare prezen\ pe un live CD esla totusi unul normal, astfel inci11 are nevoie de

existenla unui suparl penlru a putea salva informatii de stare in fisiere etc. Pentru a rezalva problema lucrului cu fisiere, in cond itiile . . in care in mod implicit nu se
lucreaza cu un hard-disk, un live CD !oloseste un ramdi sk (0 portiune din memoria RAM) precum un hard-disk. Toale dalele care se scriu in ramdisk sunt accesibile pe loala perioada in care sislemul de operare ruleaza. Atunei cand acesla esle opril. dalele din RAM se pierd ~i, implicil , tot continutul ramdisk-ului eSle ~ters. De aceea, la oprima unui sistem pornit de pe Live CO, sistemul de ca~ul revine la starea anterioara pornirii. Utilizarea unei portiun i din memoria RAM pe post de harddisk olen! avantajul unui timp de acces si a unei rale de transfer mai bune decal in cazul unui disk. Oezavanlajul este acela ca aplieatiile vor avea disponibila 0 cantitate mai mica de RAM. Pentru a putea ru la in cond i!ii normale un live CO are nevoie de 5t 2MB de memorie RAM. m inimul necesar liind 256MB.
A~adar un live CO ofera pos ibilitalea teslari i ~i ulilizarii unui siSlem de operare in condibi de deplina siguranta penlru soltwareul instalat pe sistemul de ca~ul. De multe ori, Live COurile sunt lolosrte pentru recuperarea datelor allats pe 0 partitie ce nu mai poate Ii accesata d in sislemul de operare instalat pe hard-disk (spre e~emplu atunci cand sistemul de operare nu mai pomeste).

2.2.4 Instalare Kubuntu


Kubunlu este 0 distribu!ie derivata din Ubuntu, distributie care lolose~te ca desktop environment KOE i n loe de GNOME (vezi seqiunea 13.l). Kubuntu este parte a proiectului Ubuntu si lolose~te aceeasi arh itectura, aceleasi repository-uri ~i aceleasi pachele ca ~i Ubuntu (vezi seqiunea 3.2). Pentru a instala Kubuntu (si in general oriee distributie linux) pe hard-disk este nacesara crearea a cel pu!in doua parti!ii: una pe care va Ii instalat sistemul de operare 5i una perliN swap. Acest lucru poate Ii realizat inaintea instalarii propriu-zise (Iolosind programe specializate in adm inistrarea partitiilor cum ar Ii fdisk. GParted, PQMagic etc.) sau poate Ii realizat in timpul install'irii folosind utilitarul de partitiooare pus la dispozi~e in acest serlS de programul as istenl de instalare. Instalarea Kubuntu 9.10 (va rianta Desktop) incepe prin inlrOducerea Live COului in unitatea opticl'i ~i repornirea ca~ulalorul u i (allemativ, se poale realiza inSlalarea de pe USB stick) . In cazul in care BIOSul nu aste conligurat sl'i in~ial izeze sistemul de operare de pe unitatea opl ica (USB stick). trebu ie realizata aceastl'i conligurare. Oupl'i ce calculatorul a ini!ializat sistemul de operare de pe CO, va Ii afi~at un acran ce permite alegerea modului in care va Ii lolosit live CO-ut (Iigura 2.2)
~,., ...ov ... atanal

CAPITOlUl2. INS TAlAREA lINUX. CO NFIGURARI DE BAZA

33

Figura 2.2: Alegerea modului in care va Ii lolosit Live CDul Prima op!iune din lisla va porni Kubuntu 1010 sind configurarile implicile. Din mediul grafic porni! se poate alege ulterior pornirea instalarii. A doua op!iune (Install Kubuntu) va porni direct instal area. Check disc fordefeclS este util pe ntru verilicarea CDului. Memory lesl va porni un test al memoriei RAM , util pentru depanarea problemelor hardware atu nei cand memoria RAM este suspectata ca ar Ii defecta. Oupa ee este aleasa prima op!iune sistemul de operare va Ii ini!ializat. Desktp-ul implicit din KUbuntu este prezenlat in ligura 2.3.

._,-

-, --_..
,_ .""' ........

Figura 2.3: Oesklopul implicrt allive CDul ui Kubuntu In acest moment KUbuntu poate Ii lolosit ca live CD. Pentru a il instala pe harddisk, se va accesa pictograma "Install Kubuntu 9.10" de pe desktop. Rezultatul va Ii pornirea unui asistent de instalare (figura 2.4).

"
_ .. _

INTRODU CERE iN SISTEME DE OPERARE

...... """"'" ........ .... "-, ..... ..... .................


_.-

_ _ -.... -- - . . _ ... --- I . ._~.-- ,~-.,- ~

.... _ _ .... _ _ _ _ ......

... ............ '"


rim<~

..

-,--~.-~-

......

'-

~~

---

.......... _"""'

-. -' ............... ......


"""

_. _

Figura 2.4: Alegerea limbii folosit<'\. de asistentul de instalare Prima elap1i consta in alegere limbii 101 0sil1l de asislentul de instalare. Elapa urmatoare permite alegerea locului in care S9 gAseste utilizatorul (vezi figura 2.5). AceastA
conligurare are elect asupra fusului Ofar ce va Ii stabil i! pe ntru calculator.

---- ----._,-~_

Wh . ... . r. you?
___
~

... _

.....

_..-~,

...

,_ .... ",-,"" ~-'""""

Figura 2.5: Alegerea locului In care se alia ulilizatorul


Pasul urmator esle reprezental de alegerea felului in care sun! amplasale laslele pe tastaturA (keyboard layout) (Iigura 2.6). Dupa ce se rea lizeazA aceastA eonligurare urmeazA pasul eel mai important din cadrul lnstalArii: parti!ionarea hard-disk- ului (vezi ligura 2.7) Discul poate Ii ~te rs integral. caz in ca re datele deja existente vor Ii ~terse. sau poate Ii partiiionat manual, alegAnd dimensiunea partitiilor si tipul lor. in continuare va Ii prezentatA partilionarea manualA.

CAPITOlUl2. INSTAlAREA lINU X. CO NFIGUR ARI DE BAZA

35

...... -~-- . . -,.,.

,. ,. - -..

... . .

, , ',

~ .

_." . .. " , . , .

, ','

.. , , ..,

Figura 2.6: Alegerea lelului in care sunt amplasate tastele pe tastalurA

--

_ . ,.._ .. ...---, _ ..... _ ..---

Figura 2.7: Parli!ionarea manualA a hard disk ului in cazul in care diseul este neparlilionat este necesarA erearea unei noi labele de parlilii apasand bulonul New Par/ilion labie. Rezullalul va Ii afi~area labelei de parli!ii, prezentatA 5i in ligura 2.8. In cazu l in care exisla deja partitii pe disc, aceslea vor Ii ali~ale in tabela de parti!ii. in conlinuare, se presupune eli harddiskul nu esle parti\ionat si se vor crea doua part~ii: una e)(/4 ~i una penlru swap. Pentru a realiza acest lucru se apasa bulonul Add... din fereastra care prezinla tabe la de partitii (figu ra 2.9). Oupa. cum se observa in ligura 2.9. partitia e)(/4 este primara, are 4096 MS, este creatE! la incepulul spa!iului liber 5i va Ii accesala de sistemul de operare prin direc!orul I (moun/poinl) .

36

INTRODUCERE iN SISTEME DE OPERARE

p"" ....... p,IOt1 I'I G~'

.... ....
,

"

--

"-'-,

16'

.. -

. ~,-~----

Figura 2.8: Tabela de parti!ii - initial discul nu are nicio parti!ie


.. 0 <...............
ern _ ... w ...,"I<lon

~"'_M ' _

-.. c .........~ ...

.-"- -


,.
,

h~

.... _

.. ".,._

!!

.,.

Figura 2.9: Crearea unei parti!i;

--

-, ""_"'_M. _
"

Crute _ "" .. p.,,1I<1on

---~-.-

. ",,---

( _~N

~-.--

'"

-.
.


,
wi

.. .-

Figura 2.10: Crearea ul"lei partilii swap

Parli!ia de swap (hgu ra 2.10) eSla tal primarii, are 197 M8 5i 9S19 c real;} la lnceputul
spal iului tiber ramas. Ea nu va putea Ii accesata printr-un director, ci va Ii 10105ilo3 de

sistemul de ope rare in mod transparent.


Aceasta schema de parti!ionare esle pur demonstrativit parli!ii, labela de parti!ii arala ca in ligura 2.11. Dupa crearea celor doua

Dupi:\ crearea part~iilor, Irebuie dalele personale ale ulilizalorului: numele lui, numele de utilizator dorit, parola si numele sta!iei (hostname), As istentul de instalare mai permite si alegerea modului de autentificare in sistem ~ i daca directorul cu dalele uti lizalorului

CA PITOlU l2. INSTAlAREA lINUX. CO NFIGURAR I DE BAZA

37

...... -... .... -

P.... .,..

",,"I'lo~.

_.-.-

'"

,.

" .,

-- '" ~

--.~ -

Figura 2.11: Tabela de partitii dupa ce au lost create cele doua partitii va Ii cr iptat (vezi figura 2.12) (\/ezi sec!i unea 10.5.2).

-_ . ,...--_ ....... .
_
-.----~--._~_ ~

Who ... you)

.. , --,,--. .. .... --, ._ __ _ N_ -----. ,--,----_ .. ..... _ -.... ..............,


.....
-~
~

...... _ ....... 'M


~

_--

~.----.--

..--.--...... --""..... --_...... _.._----~

Figura 2.12: Configurarea datelor personale ale utilizatorului In pasul urmator (ultimul pas al instalarii) pot fi revizuite configura rile real izate. Apasand pe butonul Advanced... se poate conl igura unde va Ii instalat bootloader ul (vezi sec\iunea 6.2) bool loader/GRUB (\/ezi figura 2.13). Penlru a incepe copierea fisiereior pe hard-disk se aparli butonul Install. La terminarea instalarii va Ii afi~at mesajul din ligura 2.14. Oupa inchiderea asistentului de instalare sislemul de operare va rula in continuare ca Live CO. Pentru a porn i sistemul de operare proaspAt instalat , cak:ulatorul trebu ie repornit.

38

INTRODU CERE iN SISTEME DE OPERARE

-" ..... ----,--""


...---.-._-..

-"

~---

_..._--_.
e

Figura 2.13: Ver ificarea datelor si alegerea harddisk-ului pe care va Ii instatal GRUB 0 ......." ... ( ... P ...

.....

.... , ... ""'. , ... ..... rt _ _ , _ _ .....


" " . . '" _ ..... "" ,... .... oil

--_ .........
_ I

-~

- " ' - "',

.............

oot . . .,, _

[ _

,................

Figura 2.14: Mesajul care marcheaza inslalarea eu sueces a sistemului de ope rare

2.3
2.3.1

Interac~iunea

cu sistemul de operare

Interfetele cu utilizatorul

Primete interlele eu ulilizatorul au lost, din motive tehnice, create pe moniloare care

De aceea, posibilitatile acestor interlete de a crea componente grafice au lost limitate. in aceasta categorie (interlete care utilizeaza doar
caractere in mod lext) intra eLi (Command Line Interiace) si TU I (Text User Interface). in limp. atal moniloarete cal ~i pt~ei te video au avansal lehnotogic ~i au ap~ rul astfet afisajete grafice {eu rezo tutii mai mari deefll eele text}. in acest tet a apMut si 0 nou~ ctasa de interfete eu utitizatorut numit~ GUt (Graphical User Interface). in CLI, inlerae!i unea cu sislemut de operare se bazeaz~ pe comenzi serise de la tastatur~. Exemple de eLI pot Ii v~zule in ligura 2.17 si in figu ra 2.18. Avantajut aceslei metode esle ace ta ca pot Ii invocate comenzi comp lexe utilizand secvenje seurte de caractere. Pentru a reatiza sarcini echivatente intr-un GUt poate Ii uneori nevoie si de cateva zeei de ctickuri de mouse. Un all avantaj at Cli esle rapid ilalea dobAndila in ulilizare, dupa ce comenzi le au fosl rel inute (in special daca este lotosit istoricul de comenzi: prin apasarea tastei S!igea. t !iSus pot Ii reexecutate comenzi le date anterior). Luand ca exemplu configura rea unei adrese tP (vezi secliunea 8.2. 1) pe 0 interfata de re!ea, diferenta de viteza intre prima si a zecea oar~ cand se rea lizeaza aceasta configurare intr-un GUt este mica. datorita numaru tui mare

alisau doar caractere lext.

CAPITOlUl2. INSTAlAREA lINUX. CO NFIGURARI DE BAZA

39

de elickuri necesar. in eazul unui ClI, lolosind si iSloricul de comenzi, d iferenla de ~iteza esle extrem de mare,
Deza~antajul principal al Cli eSle curba abrupta de lnva!are, uti lizatorul obisnuinduse mai greu cu 0 comanda decal eu relinerea locului In care se ana un bulon.

Desi de la aparrtia sa a Iosl coneural de TU t si GUI, Cli rAmMe metoda de co ntrOl al sislemului de ope rare preferatA de utilizalorii a~ansa!i datorita elicien!ei in ulilizare. in TUI , inleractiunea cu sistemul de operare se rea lizeaza pr in inlermediul lerestrelor, meniurilor, butoane lor si mouseului. Pentru desenarea inter/elei sunt utilizale caractere disponibile pe orice terminal text (Iig ura 2. I 5) .

... ,_ " _,.,. '" .,..,.." _'''M, ,.., '""" ." "",. ~
tr- ,.,_ ..... ' ....,., ... , .....
, .............., " .. " .,..... >

....... -.. ..

Figura 2 I 5: Text User Interface Acesl lip de inlerfa\a se apropie de modulln care aral1'i 0 interfa\a grafica lnsA, dalorila faptului ca lolosesle caractere text, rezolutia ecranului esle mai mica. GUI este un sistem de interactiune cu ulilizatorul de tipul WIMP (window, icon, menu, pointing device) (Iigura 2. t 6) ,

-o
. -"~ . _ _ n M _ M
_~" >H

_ ..."--

Figura 2,t 6: Graphical User Interface

40

INTRODU CERE iN SISTEME DE OPERARE

Penlru desenarea intertetei GUt sun! lolosite moduri grafice de rezolutie lnalta, cum ar Ii VGA ..640x480, SVGA..800x60Q, 1024x768, 1280xl024 , , 600xI200 etc_

2.3.2
Consola

Interfa~a

in linie de comanda (eLi)

o consolii eSle un tip de echipament care permite introducerea lolosil in administrarea si uti lizarea sistemului de ope rare.

~i afi~area

de text

Ini!ial consolete erau formate dinlrun term inal (un monitor ce avea atasata 0 tastatura) care S9 conecta la sistemul de calcul pri ntrQ conexiune serialA. Aces! tip de conso le
esle loarte rar inlalni! in ziua de astazi.

Pe un ca lculator obisnuit, monitorul impreuna eu tastat ura au acelasi rol ca un terminal. Ete permit, in Linux, accesarea a douA tipuri de console: (erminalele virtuale (console in mod text) si emula(oarele de ferminale (conso le in mod gralic).
Terminalele vlrlllale au 0 rezoh,!ie micil (in general 25 de linii cu 80 de caraclere pe linia) . Ele pot Ii accasate din in terfa!A gralicA cu ajutorul tastelor CI RL+ ALI+ Fx, unde Fx reprezintil taste le Fl panilla F6 (in mod implicit). Din aceste term inale virtuale se poate reven i In interfa!A gralicA cu ajutorul combinatiei de taste (C IRL+ ) ALI+ F7 . Treeerea dintrun te rminal virtual in allul poate realiza prin trei combinatii de taste. Primele doua sun\: CI RLtA LI t F x si ALI +Fx (unde x este numilrul term inalului in care se va treee). A treia combina!ie de taste este ALI+Sageat!i St a n ga sau ALI + Sageata Dr e a p ta 5i permite treee rea dintr-un terminal in cel precedent, respeetiv in ee l urmAtor. De exemplu treeerea din terminalul 4 in terminalul 3 se poate realiza eu CI RL+AL I +F 3 sau AL I +F 3 sau ALI +S agea ta Stlnga. . Valor ile taste lor F prezentale sunt cale implicite pe majoritatea distribu?ilor. Aceste valori pot Ii schimbate. De exemplu. interlata graficA poale Ii plasata pe terminalul trei sau pe te rminalul cinei; nurnarul de term inale accesibile poale Ii sase (valoa rea implicitA) sau zeee (hgura 2.17).

Figura 2.17: Te rminal virtual (eLi)

C JPYflghted matanal

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

"

Conso/ele In mod grafic reprez inta emutatoare de term lnat (f igura 2.18). Dimensiunea tor pot Ii exti nsA peste cea de 25x80 a tarminatetor virtuate. De asemenea, un utilizator poate porni un numar nelimitat de aslfel de emulatoare. Cele mai cunoscute emulatoare sunt k onsola (pent ru KOE), qnoma- t arminal (pentru GNOME) ~i xt arm.

, . . . .~ .... JOO1 . . 1. ,., .. 00 .. " ,

Figura 2.18: Emulator consota (CLI) Atunei eand un utitizator aeeeseaza un terminat virtuat et trebuie sa se autentihee folosind un nume de utilizator si 0 parolA. La pornirea unui emulator de terminal utilizatorul nu mai trebuie sA sa autentilice, deoarece autentilicarea sa produs inainte de pornirea interfe!ei gralice. De asemenea, la pornirea unui emulator de term inal utilizatorul curent va Ii cel care esta autentilicat in interfata gralicA. in ultimii ani, indepartarea de linia de comanda a sistemului de ope rare Linux este d in ca in ce mai accentuatli in detrimentul utilizArii interfetei gralice, mai intuitive si cu faeil itali mult mai avansate. Cu toate acestea, interiata in linia de comanda ramane 0 compone ntA esenlialA in conligurarea rapidA a unui sistem si a administrArii de la distanta. Inter/ala in linia de coma ndA perm ite toate operal iile care pot Ii realizate si d in intarfa!a graficl.

Shell in IT, denumirea de shell are mai multe sensuri. Unul dintre acestea este sensul de compone ntA software care rea lizeazA interfata cu utilizatorul. Aceastli inter/atA poate Ii una CLI , eaz in care shellul esle un interprelor de comenzi. sau una GUI, caz in care shell ul este 0 inter/alA gralicA dintre utilizator si resursele sistemului de operare (cum ar Ii Explorer in Windows). Come nzile Linux sunt transm ise la 0 con soiA. Conso la (ind ilerent de tipul ei - emulator de terminal sau terminal virtual) ruleazA un shell. shell care permite introducerea

.1

42

lNTRODU CERE iN S IS TEME DE OPEAARE

comenzilor. ExistA rnai mulls aplicatii shal l de interpretare a comenzilor in linux, cea mai uwalA fiind denumrta bash (Bourne Aga in SHeil).

Prompt-Ul
Shell-ul (interpretorul) de comenzi olera utilizatorului un prompt. Acesla are un format de genu!:

La acest prompt, ulilizalof\.ll poate introduce comenzL use r name reprezinta nurnele utilizatorului, iar l ocalhost esle nurnele stal iei (has/name). Simbolul - ind j~ direClorul curent, home-ul utilizatorului george' . Simbolul "$ " marcheazA terminarea

prompt-ului 5i inceperea zonei de introducere a comenzilor.


urmator:
george h a93 rd ; -$

Oe exemplu, in cawl

ge o rg e esle nurnele utilizatoru lui

~i

asgard esla nurnele stalieL

Pentru mai multe informa!ii des pre interactiunea cu shellul consulta!i seqiunea 12.2.

Comenz! Comenzlle sunt cuvinte che ie care se introduc la consolil (s i interprelate de inlerpretorul de comenzi). folos ile pentru a configura sislemul de ope rare sau pentru a ob!ine informa!ii de la acesta. Comenz ile pol fi simp le sau pot avea parametri. 0 comandii simplil eSle 0 comandii care co nUne un singur cuvanl che ie suficienl pentru a execula 0 actiune. Majoritalea comenzi lor sunt insil com enzi com puse si pol primi unul sau mai mul!i parametri care pot alecla rezultalul comenzii. Separarea inlre numele comenzii si parametru sau intre doi paramelri se realizeazil prin intermediul caraclef\.llui "spaliu". De multe ori. primul parametru (sau si alti paramelri, in funclie de caz) eSle marcat prin caraCleru l .'.". Mai jos eSle preze ntal un exemplu de comandii simpla si apoi aceeasi comandii cu paramelri. Comenzile au de obicei rezultale, rezultale care sunt afisale de cillre interprelolul de comenzi (shel l) pe consola ulilizatorului. in exemp lui nOSlru, fiecale comandil are un rezultal care esle al isat.
,
2
qeorq~ @ asq a rd:-S p~

FlD I H

riME tMD

,
7

13391 pts/O 13666 pt , /O

00 : 00 : 00 ba ~h 00 : 00 : 00 p '

"
..

qeorqe @ a.qard : -S p. - 0 uid , pid , cmd


UlD PID CMD

1000 13391 - ba.h 100013669 p. - 0 \lici , pici , cmd

"

george @a aga rd : -S

' d.lalii de .",. ie ' arhia $i$lemului de li. ie r ga c in

$roct i ""u ~ .

1.2

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

"

Setul eel mai important de comenzi este eel care interactioneaza cu sistemul de fisiere . Aceste comenzi sunt lundamenlale pentru interac!iunea cu sislemul ~i rularea allor comenzi imporlante.

Ciutarea de ajutor
Daca se doreste cautarea de informati i in fegatura cu 0 comand;"i (parametri, date de iesire, lunclionalilate elc.) distributiile . de Linux pun la dispozitie mai multe optiuni: . Transmiterea parametrului --help unei comenzi penlru a parametrilor posibili ai acelei comenz i. De exemplu:
, george@asgard ; -S cp -- he l p Usage; cp IOPTION] . [- T I SOURCE DEST or: cp IOPT I ON] ... SOURCE ... DIRECTORY or; cp [OPTION] . - t DIRECTORY SOURCE . Copy SOURCE to DEST . or mu ltiple SOURCE{S) to DIREC10RY .
afi~a

un sumar al

, 6 ,
~

Mandatory arguments to long options are mandUory for short options too. --archiv@ --b a ckup (- CONTROLj destination tile
-a .
-b

" 11
12
1J

.ame make

-dpR backup

"

each existing dO@5

li ke --b .. ckup

,.
1$

argument -- copy - contents recursive


-d

copy contents

'"'
"

00'

accept

,.

special fi l es when

.ame a. --no-dereference --pre.erve- link

,.

[ . .. I
afi~a

Comanda what is este folosita penlru a


; -S , george@asgard ", , george@asgard : -$ " ,,, ,., george@asgard:-$ , , 0, ", , george@asgard : -$ po"e roff '",

0 scurta deseriere a unei comenz i:

what is l s - list directory contents whatls p .. d - print name of current/wor k ing directory what is cp - copy tJ Ie. and directories ~hUis powe roff - HOp the 'Y't e m.

Comanda apropos afiseaza comenzi le care au legatura cu cuvAntullransmis ca parametru:

, ,
, ,

george@a$gard : -$ apropos Zl P bl ocl: - sort i ng fi l e compreuo r , vl . 0 . 3 bu n 'ip2 b:cmp compare b:ip2 compressed files bzdift compare bzip2 compre9Sed files bz e gre p s earch p09Sibly bzip2 compres s ed filM expre'"ion bzfgrep MHCh p09Sibly bzi p 2 compr e Med files b . e x p r e "ion

,,, ,,, ,,, ,,,


,,,

'0. r e gular
regular

"
ali~ali1:

lNTRODU CERE iN SISTEME DE OPEAARE

Comenzile man si in f o sunl utilizale penlru a afisa paginile de documenlatie complete asociate unei comel'lz i dOfile. Ace sle pagini conlin informalii detaliate des pre op~unile posibile ale comenz ilor 5i utiliz1\rile acestora. Comenzile man 5i info primesc ea argument numele comel'lzii a care i documentatie sa dore~te a Ii
qeorge~a"gard : -S man i" Re formatt ing hili . plM " e "ait . , .

,
,

'l""o r g,,@asgard : -S man p"d Re fo r rna ttin9 p"d(i) . plM5e wa i t .

7 "eorge@asgard : -S info coreut il . 1.


s george@asgard : -S Info coreutils cp

Aule ntifica rea , i pirasiTea sistemului

Autentilicarea locala in sistemul de ope rare se poate reallza Iolosind un term inal virtual sau S9 poate realiza in interfala grafk:a, prinlrun display manager (ve~i secliunea 13.2.2). in cazu l in care utilizatorul sa autentifk:at in inter/ala grafk:a, el poate parasi sistemul de operare (logout) 101 din mediul gralic, folosind optiunea Logout. In caz ul in care utilizatorul sa aulentilicat intrun term inal virtual, el poale parasi sislemul de operare lolosind comaroa loqout sau com anda ex it . Comanda logout este lolosrta pentru a parasi un login shelt. Acesta este un shelt creal aturICi cand utilizatorul sa autentilicat in sistem. Comanda e x it este folosiUi pentru a parasi atal un login shell cal si un shelt creat din acesl login shell (cu ajutorul comenzi i IIU de exemplu).

2.3.3

Oprirea sistemutui de calcut

Penlru a opri sau reporni un sistem de calcul se lolose~te comanda shutdown . Aceasta comanda poate Ii utilizata doar de catre un utili zator cu drepturi administrative (vezi secliunea 2.4. 1). Sintaxa comenzii este:
sh~tdown

[ OP'l"lON [.

'1"1"' (MESSACI

Printre optiunile folos ite in mod uzual se numara : - r pentru a reporni slatia si - h penlru a 0 opri. time reprez inla momentulla care va Ii oprita sau repornila stalia, iar message eSle un mesaj ce va Ii trimis pe loate lerminalele legate la sistem. De exemp lu, pentru a opri slatia imedial, se ruleaza comanda:

root~a.g~rd:/home/george~ Bro~dcost

shutdown - h now

,
,

m es.~ge from george~a.gud I/dev/pts/O) at 18 : 28

The

~y~tem

is <;Ioing down

fo<

h~lt

NOW !

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGURARI DE BAZA

Penlru a reporni statia imediat. se ruleazli comanda:

,
root@asg~r d; / h o me/georget $hutdo~ n - r n ow Broadcast message [rom george@asgar d (/dev/pts/4) at 11 : 04 ...

,
6 The system is going down for reboot NOW !

Penlru a opri statia la ora 20:00:

Broadcast message [rom georg e @asgard (/dev/ p ts/4) at 11 , 03

The system ts going down for reboot In 537 mInu t es!

Penlru a opri statia in 10 minute de la executarea comenz ii se


roo t @ asga r d : / h ome/george# l
s hu t do~n

lolose~te

comanda:

- r +1 0

Broadcast message f rom georgehsgard I/dev/pts/O) at 18 : 33 The syste m is going down tor reboot in 1 0 minutes!

o altli posibilitate de a reporni sta)ia este utilizarea comenzii restart. Pentru oprirea statiei se pot lolosi si comenzile h alt sau powe r off, Toate aceste comenz i pot Ii executate doar daca utilizatorul are cu drepturi administrative.

2.4
2.4.1

Configurari de baza ale SO


Administrarea sistemului Linux

in sistemele de operare Windows pan1\la Windows XP (inclusiv), in timpul procesutui de instalare se crea un utilizator cu drept de administrare. De cele mai multe ori. sistemul era folos it cu acest utilizator, situatie care putea crea probleme de securitate daloritii drepturilor extinse de care beneficia utilizatoru l (vezi sectiunea to,2). in sisteme le de operare Linu~ se lace 0 distinctie implicila. inlre drepturile de administrare si drepturile de utilizare a siSlemului. in Unux, un singur utilizator are drepturi de administrare depline. Acesta este un utilizator special numil root. Utilizatorul root poate realiza configurliri, poale modifica modul in care sistemul de ope rare. poate acorda drepturi partiale altor utilizatori etc _
porne~te

Penlru a putea realiza configurlir i sau acliuni pe care doar utitizatof\.ll root Ie poate realiza, un utilizator are tre i posibilitlili. Prima posibililale 0 reprez inta autentificare in sistemul de operare lolosind numele de utilizator root si parola asociatli acestuia. in cele mai multe sisteme de ope rare lolosite

"
Schlmbarea intre
utili~atori

lNTRODUCERE iN SISTEME DE OPEAARE

in produclie autenlificarea ca root eSla dezactivatll. din motive de sigurantA. De aceea aceas@. metoda poate sa nu funcUo neze.

(au)

in caz ul in care utilizatorul eSla deja autentificat in sistem, exisla posibililatea schimbarii
utili zato rulu (a doua posibililale de obtinere a dreplurilor administrative). Din sllell ul in ca re S8 g1ise~te deja, utilizatorul poate sa porneasca un nou shell in care sa se

autentifiCe ca un alt utili zalor. Atunei cfu1d p1l.rAsesle shell-ut nou creat (de exemplu prin
comanda exi.t) el va reve ni in shell- ul iniliaL

Pornirea unui nou shell in ca fe 59 real izeaze autentifiCarea ca alt utilizator 59 face eu ajutorul comenz!i au (s wifCh user) . Aceasla comandA poale primi ca parametru numele utilizatorului in contul carU ia se va lace autenlilicarea:
george @as gatd , -$ su uso

P~SS"Otd '

usohsgard :/home/georgeS exit 5 exit george@ugard-5

Din mOlive de securilate, ca racterele lastate i n dreptul parolei nu vor Ii ali~ate, 1 n exemplul ante rior, uti lizatorul autentificat in sistem este george . Utilizatorul george schimba utilizatorul in uso folosind comanda SU u80 ~i se autentifica uUlizand parola utilizatorului usa. Utilizatorul paraseste she ll -ul nou folosind comanda exit, moment in care se observa revenirea acestuia in shell-ul ini!ial. In cazu l in ca re comanda 8U nu prime~te niciun parametru, implicit se va co nsidera ca se doreste autentificarea ca uti lizator r oo t . Ca root, execu)ia
comen~ii

8U U80 va permite autentificarea ca

ulili~ator

U80 tara

introducerea parolel pentru acesta.

Pentru a parasi un shell creat cu 8u nu se peate lolosi comanda loqout , deoarece sesiunea autentilicata in sistem (login shell) apar)ine tot utilizatorului initial (utilizatorul ini!ial liind george in exemplul de mai jos) ~i nu noului utilizator (noul utilizator liind uso in exemplul de mai jos):

george @as ga r d : -$ S\l \ISO Pass"ord :

, 10

usohsgard: /home/georgeS l ogout 5 b&sh : logout : not login s hell : use ' exit '
usohsgar d: /nome/geo~geS

ent

ent
g@org@@a'ga r d -$

Ubuntu (~i Kubuntu) au dezactivat in mod implicit contul de roo t , nefiind eonligurata nieio parola pentru acesta. De aceea, autentifiearea ca root atiit la prompt-ul de login in sistem eiit si eu 8u va e~ua.

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGUR ARI DE BAZA

47

Exec u,ia co menzil o r cu drepturi admini strat ive (sudol in cazul in care este dezaclivata autenlificarea ca root. a trela posibll1tate de oblinere a drepturilor adm inistratiV1'l 0 reprez inta utilizarea comenzi i audo. Aceasti!. comaOOi!. permite executarea unui program ca all utilizator. Spre deosebire de su, care cerea parola utilizatorulu i al carui cont va Ii utilizat, sudo cere parola utilizalorului curenl '. Din acest motiv comanda audo au va aV1'la succes (este cerulA parola utilizatorului curent, nu cea a utilizalorului root, dupa care comaOOa au esle executata ca root) :
g~o r ge@asgard : -$ ~ud o ~u

P~55"ord :

roo t @asga rd: /homelgeorge# Atunci cflnd utilizatorul root 10lO5esie comaOOa Budo penlru a perni un shell in care sa se autentifice ca all utilizator, nu i se va cere nicio parola.

2.4.2

Asigurarea conectivital ii la Internet

Una dintre primele configurari ce trebuie realizati!. pe sistemul de operare instalat este asigurarea conectivitapi la Inlernet. Kubunlu este 0 distributie de Unux care se bazeaza pe pachete si necesili!. 0 conexiune la Internel pentru a putea copia ~i instala V1'lrs iuni mai recente ale acestora, realizAOO in acest fel actualizarea intregului sislem de operare. Pentru asigurarea conectivitatii la Internet exista mai multe allernatiV1'l, Cea mai simp lii varianta este aceea in care 101i paramelrii de relea (vezi secliunea 8.2) (adresa IP, masca de retea, gateway, server DNS) sunt configura!i in mod automat IolosiOO DHCP'. Aceasta metoda este cea incercata implicit de catre sistemul de operare. Daca aceasta reuseste , utilizatorul are aeces la Internel, nemailiiOO necesara 0 alta configurare. Daca incercarea de configurare folos ind DHCP esueazi'l., utilizatoru l va !rebui si!. configureze manual parametrii de retea. Acest lucru se poate rea liza temporar (electe le configurarilor vor dura pana la urmatoarea pornire a sistemului de ope rare sau pflna la o noua configurare) sau permanent (electele configurarilor se vor pastra si dupii repernirea sistemului de ope rare). Configurarile temperare pentru adresa fP, masca de rele a ~i galeway se re al izeaza folos iOO comenzile ifconfiq si r out .. , Pentru a putea Iolosi aceste comenzi utilizatorul trebuie sa oblina drept de adm inislrare. Pentru mai mulle informatii legate de conligurarea relelei consultali capitolul8.

2.4.3

Actualizarea sistemului Ji'i a pachelelor

Printre primele acliuni care se realizeaza imedial dupa instalarea unui sistem de operare se regaseste actualizarea acestuia, [nlrun sistem bazat pe Debian (precum Ubuntu ~i Kubuntu), acest lucru se face prin executia urmiitoarelor comenzi ca root :
' aCMI compo,' amftn' ... ,.. ""poI nd.. nl d" d i~l, ibuli" _In Ubunlu oi in d i;t, ibu!iiifl d",iYal". comand .. udo ce,e parola ul ~ izalo,u Ui eu,enl ' Dynam ic Host Co nligu""ion Prolocol

48

lNTRODU CERE iN SISTEME DE OPEAARE

,
~

r oot ~as g ard:'J

apt - get update

root@&'gard : -I a p t-get dist-upgude

Prima comanda actualizeaza lisla de pachele cunoscuti'l. de ca:tre managerul de pachele, iar a doua comandi'l. actualizeazi'l. pachetele instalate pe baza inlormatiilor
adunale de prima comanda. Pen\ru mai mulle informa!ii des pre gestiunea pachelelor

consu ltati sectiunea 3.2.

2.4.4

Administrarea utilizatorilor

~i

a grupurilor de utilizatori

Majorilatea programelor de instalare a distribu!iilor Linux permit cetui care realizeazil. procesul de instalare sa adauge direct utilizatori non-rOOI in sistem, lara a Ii nevaie de
configurari ulterioare.

In cawl i n care mai trebu ie adaugati utilizatori sau grupuri, adm inistratoru l are Ie dispozilie comenz ile addus e r ~i ad d qroup pe sisteme Debian (~i implicit UbuntulKubuntu). adduser perm ite edaugarea in mod interactiv de utilizatori.
Daca se doreste lucrul mai avansat cu ulilizatori si grupuri (precum stergarea, modilicarea ulilizatorilor/grupurilor) consu ltati sectiunea 3.1.

2.5

Studii de caz
sislemului de
ti~iere

2.5.1 Inleroperabililalea Windows

fnlre

Linux

~i

Atunei cand pe un calculator esle instalal ~i un sislem de operare Windows ~i unul Unux se pune de eele mai multe ori problema partajarii de lisiere inlre ee le doua. Ca exemp lu concret: eum se pot accesa din Linux (pentru seriere si cilire) datele allale in Windows eum se pol accesa din Windows dalele afiale in Unux (penlru citi re
~i

seriere).

Solul ia la aceasla problema se bazeaza pe ideea ca pentru datele allate pe cal pulin 0 parli)ie se va as igura suporlul de cilire ~i de seriere alaI din Linu~ eal ~i din Windows. in aeest sens exista Irei variante . Prima din Ire ele const1i.ln ulilizarea unei parli)i i FAT32 penlru a sloca dalele ce se doresc a Ii parlajate. Avantaju l acestei solutii aste laptul ca, atoll in Windows cal ~i in Unux, exisla suport naliv pentru sislemul de lisiere FAT. Dezavanlajele majore sunt limitarea dimensiunii unei partitii FAT32 la maxim 32GB 5i limitarea dimensiunii maxime a unui li~ier la 4GB (ca atare pe 0 astfe l de partitie nu se poate salva imaginea unui disc DVD de exemplu). A doua solu!ie 0 reprezinta utilizarea unei part i!ii exl2 sau ext3 pentru slocarea dalelor partajate. Aceasta so lulie nu prezin!a limitarile parti!iei FAT, lnsa Windows nu olera suport naliv pentru aees! tip de partit ii. Pentru a pulea aeeesa din Windows 0 parti) ie

CAPITOLUL 2. INSTALAREA LlNUX. CONFIGUR ARI DE BAZA

49

ext2 sau exl31rebuie in slalalun driver special. Acesl d river se nurneSle Ext2 IFSsi este disponibil online' .
Acest driver olen! suport de scriere ~i citire pentru sisternu l de I~ i ere ext2. Sistemul de /i$iere ext3 este asernAmitor eu ex t2, diferen\a dintre ele hind reprezentalA de supo rtuf de jurnalizare pe care it o/erA ex t3. Ext2IFS poate citi ~i scrie date de pe 0 partitie exl3, insA nu va lolosi suporlul de jurnalizare pe care 11 olera aeeasla.
Exl2 IFS nu fuoctioneaza cu sistemul de fi~iera ext4, struclurile de dale aflate pa disc /iind di/erite. Aces! lucru trebufe luat in considera re in colld i!iil e in care se dore~te utili zarea aceslai variante pe r"ltru partajara, rnai ales dmd d islribu!iile actuale au ca sistem de fis iere implicit exl4 (vezi si secl iunea 4.7).

A treia varianta 0 reprezinta aceesarea unei partitii NTFS din Unux. in linux ex ista suport pentru citirea datelor de pe un sistem de lisiere NTFS, Oatorita faptului ~ slano'ardul NTFS este unul lnchis. dezvoltarea unui driver care sa ofere supor! de seriere a lost greu de realizal. in momentul de Ia!a exista lnsa un driver care olera acesl supor!. EI sa nume~te ntfs3g2 ~i suporl panlru acesta eSle olaril implicit in Ubunut/Kubuntu.

2.5.2

GParted

GParled esle 0 ap lieatie de parti!ionare specifica Gnome' (f igura 2 19). Aceasta poate crea. slerge, redimens iona, mLJIa, verilica ~i cop ia parli!ii. GParted of era si 0 versiune d ispon ibilA sub forma unui Live CD' , Aceasla eSle bazata pe dislrib\.ili a Gentoo ~i permite administrarea parti!iilor in cawl in care sislemul de ope rare nu mai pornesle. De asemenea perm ita raalizaraa unai copii de siguran!1'i a datalor i n aeel ea~i condi!ii.

Cuvl nte che le

eLi consola dislri butia Linux gestionare utilizatori GUI Kubuntu live CD MBR inSlalarQ

madiu gralic partilie swap shell shutdown

".,
TUI

'"

, hnp.llI<www.ts -d.i.....o.g/ ' h lip :11www.nll. -3g .o.gI ' Gnome n l" un De sklop Enviro nmenl p",,',u mediul Q,ahc d in lInux _ ma i mu lt" inlo,matii." f>Ol ~,;:. i in $o>ctiun .. a 13.7 ' http ;llgp" ,t"d.sourc" forge.n.tilivecd,php

C JPYnghted

mater'~1

50

INTRODU CERE iN SISTEME DE OPERARE

.....
7~,.'

U"'"

Gill) :

Goil

...... .ldov/.<!b l
l ....... cIb'

~.

,m!IO/d., .-]

01,"' GiS 07 .0' GoB

. , ."

M."

~1 . S9G<B

.-~

.-

fOll2

fotl>

""",>0'<1 ' !I'nedi>J<i k l

1 ." . "'"
' .0:; """

91." <>8
97.0 1 c;;e

07." Gill

f.,'2

/l'nedioM.'

IU'G6

00 ,0' ",,8

lU(lGS

Figura 2.19: GParted

intrebari
1. Cali utilizatori eu idantifiCatorul 0 pot exista pe un sistem eu 0 partitie primarA ~i

douA extinse:

o niciunul
0 1

2
oricAti

2. Care dintre urmatoarele NU asle necesara penlru a rula un sistem de operare de pe Live CD:

o conhgurarea unei

part~ii

primare

o o

BIOS

DRAM
procesor

3. Din ce sistema de operare NU se pot rea liza conffgurarii din TUI?


o Windows Vista

o Debian
o ubuntu Live CD

o PalmOS

CAPITOlUl2. INSTAlAREA lINUX. CO NFIGURARI DE BAZA

51

4. Operatia de reporni re a sistemului poate Ii initiata doar de utilizatorul privilegiat. in urma repornirii sistemului tol conlinulu l memoriei RAM esle golil.

adevarat, adevarat adevaral, fals fals, adevarat fals, fals

o o
o

5. Care dintre variante esle adevarata, daca la execulia comenzi i


au nUvan

se obtine un prompt de shel l lara a se

solicita autentiliCare:

o
o

comanda a losllansata de ulilizatorul root comanda a losllansata de I)\ilizatorul rra zvan comanda a lost lansata din d irectoru l fe t e comanda a fosllansata din d irecloru l / root

o o o o
o o o o

6. Care din urmatoarele NU reprezi ntA un sistem de lisiere?


FAT 32 swap exl3 NTFS

7. Care din urmaloarele NU esle un tip de parti!ie? extinsa logicA pr imara virluala

o o o o o o o o
o o

6. Care din urmatoarele distribupi este derivata din Debian? Ubuntu Fedora Gentoo OpenSuSE

9. Care din urmAtoarele NU se relerA la ell? comanda prompt terminal window manager

52

INTRODU CERE iN SISTEME DE OPERARE

10. Care din urmatoarele comenzi NU eSle 0 comarKIa de ajutor po un sistem Linux?

Oman

info

apropos

o adduser

C JPYnghted matanal

Capitolul3 Gestiunea pachetelor !iii utilizatorilor


Users InmJ: collective term for Ihose who use computers. Users are divided into three Iypes: novice, intermediate and expert.
Novice Users : people who are afraid that simply

pressing a key might break their computer. Intermediate Users : poop/e who don't know how /0 fix their computer after they've just pressed a key thaI broke it.
Expert Users : people who break other people 's

computers_
The J argon File

Ce se invali din a cesl ca pitol?


Gestiunea utilizalorilor si grupurilor in Linux Fisiere lolosite pentru gestiunea l1Iilizatorilor Ce asle un pachel Care SUi'll operatiile de baza asupra unui pachel in linux Gestiunea pachetelor in DebianJUbuntu: utilitarele apt $i dpkg Personal Package Archive (PPA)

3.1

Gestiunea utilizatorilor

Gestiunea ulili zaloril or 5e refsni la adaugarea de noi uhlizalori, slergerea unui ulilizal or existenl, modificarea informaliil or despre un ulilizator ~i afi~area diverselor inform alii. In sislemele Unix, informaliile des pre ulilizatori sunt relinule in fisierul / etc Ipasswj, Fiecare linie din aces\ fisier conIine numele utilizaloru lui, identificatorului du, home-ul, shell-ul rulal in momenlul autenlificarii si aile informal ii de deseriere:

53

INTRODUCERE iN SISTEME DE OPEAARE

2
~

.oot~anaco nd a : " cat /etc/pass wd and re i r: x: 1114 ; 1 02 6 ; And~e i Rho i u : Ihorne lot udenu/ andre i r : Ibinlba sh &I exn : x : 111 5 : 1 026 : Alex Negce& : (home (st u d e nt. I a lexn : /b in/b&sh

(. .. 1

Din motive de securilale, hash-ul asocial parolei nu se gase~le in lisierul /ete/ pass wd, ci in lisiarul fete/s hadow cara nu poata Ii accasat de majoritatea utilizalorilor (vezi sec)iunea 10.2.3):
.oot~anaco n da : -I

1$ - }

/etc($h~do~ 2008 - 0~ - 12 1 1:5~

- r"'- r ----- 1 root s h ado'" 7068

Jete/shado w

Pentru a alia iniormalii des pre un ulilizalor al siSlemului se pol Iolosi comenz ile id sau ringer:

root~anacon d a " 1 id andreir ..lld-111 4 (andrei <! gid-l026 (students) groups - l 026 {students! , 103 7 (rl! . oothnacond~ ; " finger ale~n Log i n : ale xn Directo~y : Ihome/.tudents/alexn Neve r logged in. No ma i l. No Pl"n .

e
1

Na me ; Alex Neg~e a Shell : /bin/bash

Utilizalorul privilegiat lntr-un sistem Unix eSla utilizalorul root cu uid-ul 0 / roo t :
root ~~ n~co n d~ : -I

~i

homeul ln

head - I

/etcfpass~d

Ioo t : x : O : O : r oot : /root : /bin/b~~h

Utilizalorui root (de lapt utilizatorul cu uid-ul O) are drepturi absolute in cadrul sistemului si poale rula orice comanda. Se recomanda lolosirea unui conI neprivilegial. Door alunei c:l.nd este nevoie se va lolosi contu l privil egial. Schimbarea unui ulilizator se realizeaza cu ajutorul comenzii su urmala de inlroducerea parolei pentru acel ulilizator. Dac1i ulilizalorul ini)ial esle r oot , nu se solicil1i introctucerea parolei:
.oot~anacon d a ; 'J

head - I /etcfpasswa

,
2 5
~

root : ~ : O : O : root ; l<oot : /bin/bash

"ndrei~@aMconda : -S
passwo~d :

root @"Mconaa : -1 su - andrei~ su - u<v"n

Sistemele Ubuntu dezacliveaza, de obicei, utilizatorul roo t si recomand1i lolosirea comenzii sudo. De obicei, un ulilizalor neprivilegial care are drepl de 5000 va rula comanda sudo bash penlru a ob!ine un shell cu drepturi privilegiale (vezi secliunea 10.3.3). Schimbarea parolei unui ulilizalor se real izeaza cu ajulorul comenzii pa sswd. Utilizalorul privilegiat poale schimba parola oricarui utilizator. Un utilizator neprivilegiat i~ i poale schimba parola doar siesi:
" a n a conda : -' pao$wd gu<>n Enter ne~ UNIX password ; Retype new UN I X paHword : pass~d' pusword updated $uccessfully

CAPITOlUl 3. GESTIUNEA PACHETElO R SI UTILIZATORllOR

55

3.1.1

UID, GID

FiecArui utilizator din sistem ii este asociat un identilicator numit urD (User Identilier). UIO este un numar inlreg ce poate lua valori inlre 0 ~i 32767 sau 65535, lunc!ie de distributie. Valoarea 0 eSle rezervata pentru ulilizatorul root . Pentru a gasi identitatea unui utilizator SiSlemul de operare loloseste UID, si nu numele utilizalorului. De aceea. daca in liSierul /etc/passwd se inlocuieste UIDul unui utilizator normal cu 0, aeel utilizalor va d .pata drepturi administrative agale eu ale utilizatorului root . Pe sistemele de operare Linu~ utilizatorii pot Ii organizali in grupuri. in acest lei se pot realiza diverse configurAr i administrative mai us~r, aplicAnduse politici la nivelul intregului grup si nu per utilizator. Un grup peale conIine mai mulli utilizatori. Un utilizator poate lace parte din mai muite grupuri. Penlru fiecare grup sistemul de operare asociazA un identificator, numit GIO (Group Identilier). Acest identilicator este un numar intreg ce poate lua valori intre 0 5i 32767 (Iimita superioar1l poate sa dilere in func!ie de distribu!ie). GID 0 este rezervat penlru grupul utilizatorului roOI. La lei ca la UID, sistemul de operare loloseste GID penlru a identilica un anumit grup ~i nu numele grupului.

3.1.2

Ad augarea!?i !?tergerea uti1izatorilor

AdAugarea unui utilizator poale Ii rea lizata. doar de root, in douA moduri. Primul dintre ele este utilizarea comenzii useradd. Ulilizarea acestei comenzi esle greoaie. moliv penlru care adAugarea unui utilizator se realizeaza in mod uzual cu ajutorul eomenzii adduser. adduser este un script care apeleaza la randullu i useradd. Apelarea adduser se poate realiza cu urmalorii paramelri:
adduser l options l [ -- home OlF\] [-- s h el l l - s $Het.LJ ( -- no - create - home [-- u id W I [ --firsto id IDJ [--h.tuid 10 1 [ -- ingr oop GROUP I - - gid 10 1 [-- disab l ed - passwordJ ( -- disabled-l ogin l [ --gecos GeCOSJ [-a dd...extra_ groupa l user

Daca adduser esle apelat doar cu numele utilizatorului ce va Ii creat. el va porni un asislent care va cere loate dalele necesare crearii conlului:
root@~sgard,/home/georgef

adduse, uso

Add; ng user 'uso ' Md;ng new group ' uso ' Adding
n~w

, 6 , 8 ,
10

(1001) (1001) "Hh g r oup


' /hom~/u50 '
' U30 ' ...

user

' u~o '

CIM t ing horne d i r " ctory

Copying ti l e. hom ' /etchkel ' En t e r new UNIX p.os~"ord : Retype new UN I X paH"ord : pas.wd, pas.wo~d updated. successfu ll y Changing the user infor"'~tion for u ao Enter the new Y ~ lue , Or press ENUR for the default

"

1>

13 ,. '"
,~

56

lNTRODU CERE iN SISTEME DE OPEAARE


Fu ll Name [] : 0$0

" " " " ..

Room Nurn!)"r II ' \lorl: ?nooe [ I; Home Phone [ I:


Ot h er [I,

EGJO~

Is tne

! ~ for m "tlon

correct? (yiN] y

" ,.

root@a $ qard : /home/george f

Din motive de securitale caracte rele tastate in dreptul parolei I1U vor Ii af~ate.
La crearea unui ulilizator eSle creal si un grup ell ace lasi nume la care este adaugat utilizatorul creat.

$tergerea unui utilizator se poate realiza cu u s erdel sau cu del us er (d el u se r este un script care apeleaza la rdndul lui us e r del ):
Ioo t @asga r d , /home/georgef de lu5e r U50

Remov i ng- u ser Done .

' uso '

...

3. 1.3

Adaugarea

~ i ~te rg e re a

unui grup de utilizatori

Adaugarea unui grup de ulilizatori se poate real iza cu ajulorul comenzii qroupadd, sau cu ajutoru l comenz ii a d d 9ro up . a d d 9 r oup este un script care apeleaz3 la randul lui
gro upa dd.
roo t @asga r d : /horn"/g"org'" addgcoup usog r o u p (GID 1002)

> Adding g r o u p ' u,ogcoup '


Done .

$tergerea unui grup de utilizatori se realizeaza tot prin doua comenzi, gro updlOl si de l group (de l g roup este un script care apeleaza g ro updel ).
,

>

coo t @a' gard , /horn"'g"ocgel de lgc oup u s og r o u p Removing group 'u'09roup ' ... Done .

3.1.4

Modificarea datelor unui utilizator

Modificarea datelor unui utilizator se realizeaza cu ajutorul come nzii u s ermo d . Aceasta pe rmite modifica rea grupului din care face parte un utilizator, a directo rului de !>aza (home). a numelui de utilizator. a parolei etc. De exemplu. pentru modiflea directoru l de baza al utilizatorului geo rge se optiunea - d .
folose~te

,
,

usohsgard:-$ pwd Ihome! uso

CAPITOLUL 3. GESTIUNEA PACHETELOR SI UTILIZATORILOR


6

57

U.o@~.g~rd:-$

.udo SU

10

roothsgara:!nome!usol u sermoa - a !nome!usoair! uso roothsgara,!nome!uso' exit exit


u ~ o @ ~5ga r a , -$

" " ,.

1~

e"it

"
1~

uso @ "eq"ra ; -$ pwa


!nom~!u5o

11

" ,.

usoh.gua:-$

in e~emplul anlerior a losl sch imbal directorul curent in directorul de baz~ al ulilizatorului usa, apoi a lost a1isat directorul curent (pentru a vedea care este directorul de baz<'i actual), a lost pornit un nou shel l in care utilizatorul autentilicat a lost root, a lost modificat directorul de baza al ulilizatoru lui usa in /home/usodi r , a fost inchis she llul de root , apoi Si utilizatorul uso a p<'!. r<'!.sit sistemu l de operare. Schimbarea directorului de baz<'!. al unui utilizator se rea lizeaza doar dupa ce ulilizatorul paraseste sistemu l ~i se auter"ltilic<'i din nau:
u ~ o @ ~5ga r d , -$

pwd

!home!u.od i r!

Modilicarea parolei unui ulilizator se poate face

~i

cu ajutorul comenzi i passwd:

root@"sg"rd : !nome!u501 p&5s~d uso En t er M .. UNIX p&; ~ word : RHype ne .. UN I X p .. ~ ~ word : p&sswd : p"""ord updHed s uccessf u lly

Din motive de securitate caracte rele tastale in dreptul parolei nu vor Ii

ali~ate.

Daca nu este specilicat niciun nume de utilizator va Ii schimbat<'i parola utilizatorului curent. Doar utilizatorul root poate schimba parola altui utilizator.

3.1.5

Adaugarea ~i ~tergerea utilizatorilor

in sisteme le Debianbased, ad<'iugarea, respecti v sterge rea unui utitizator se real izeaz<'i prin intermediul scripturilor adduser ~i deluser:
root@"n"cond~ : -~

.. dduser test

"

Adding u" ~ r " t ~ "t ' ... Adding ne .. group " t,, ~ t (1038) Adding M" u" ~ r "t es t ' (1003) with group " t ~ 't ' ... CIM t ing home d i r e ctory /hom~/t~st ' 6 Copying fil ... from !<>tc/ ~ hl' 7 Ente r ne .. UNIX p .. ssword : A Re type ne .. UNIX p .. ssword , p~s.wd : p ...... ord updated succ@ssfully 10 Ch~ng i ng the user information for t ... t " Enter the ne .. value , or press ENTER tor the def8ult ,~ Full N ~ me [) , Test lIser Room Numbe~ [) :
J

sa

lNTRODU CERE iN SISTEME DE OPEAARE


Wor k Pho"" I I :
Ho me Phone II :
Other [I:

" " " " " "


00

IS the infor mation correct? (yIN] y


rcothnacond3 : -J 1<1 test uid-1003 [test) gid - 103a {test] groups - 1038 (test I Loo t @a n aconda : -f d"luser -- remove - home t e ,t

"

~ ~

Loo k Ing for file" to b ac kup /remove


Removing fil " , ... Remov i ng use r ' test ' Done .

.. 20 ..

Avantajul si, in acela~ i limp, dezavantajul folosir ii comenzii addus er este interactivitatea. Automatizarea sarcinilor presupune comenzi non-interactive. Penlru aceasla, se pol folosi comenzile u s eradd, u s erd el ~i use rmod. u s era dd, respectiv u,u. rd .. l sunl folosite de sc riptu rile a ddu" .. r si de lu" .. r .

,
3 e

r oot @a naco naa : -J

~seradd

- m - d /ho me/ test test

,
,

r oot h n aco n(!a : -I id test uld-1J16(t""t) gld - 1116{t"st ) groupa - 1116(t""t) root@ .. Mconda : -J
u~ e rrnod -~

!b,n!sh t e ,t

" , 10 11

root@anacon da : -I us"rd"l -r t @st Ioo t @a n acon da : -I i d t.,s t i o : t eot : No ouch us"r

3.2 Gestiunea pachetelor


Un pachel, sau un pachet software. este 0 ap licalie sau 0 compo nent.li accesibil.li in forma unei arhive care poate fi instalat.li de un sislem de gesUune a pachetelor (PMS - Package Management System). De obicei. pachetele reprezint.li programe precompilate care pot fi inslalate u ~or. spre deosebire de instatarea din surse care este mai anevoioas.li (vezi sectiunea 14.6. 1). Lucrul cu pachete (instal are, dezinstalare. configurare) se realizeaz.li prin inlerme(jiul unui sistem de gestiune a pachetelor (precum dpkg. rpm, pa cman). Un astfel de sistem contine , in alar.li de fisierele asociate programului si un set de meta informatii precum versiunea pachetului, descrierea ~i dependenlele acestuia. PMSul folose~te aceste informatii pentru a decide dac.li se va real iza instalarea pachetului, upgrade-ul acestuia. instalarea dependentelor etc_ 0 dependent.li intre pachetele A si B inseamnti c.li instal area pachetului A necesita instal area pachetului B. La lei. dezinstalarea pachetului B va forw. dezinstalarea pachetului A. Majoritatea distribuliilor GNUfLinux folosesc noliunea de repository (depozit de pachete). Acesta este un URL care precizeaza localia diverselor pachete ale distrib uliei. Aceste depozite sunt precizate in f~iere de co nfigurare specifice distributiei.

CAPITOLUL 3. GESTIUNEA PACHETELOR SI UTILIZATORILOR

59

Ap licatii frontend peste PMS pot interoga depozitele si PO I descArca si instala noi pachete. in lumea Li n u ~ e~ istA diverse form ate de pachete, cele mai cunoscule jiind formalul DEB , specifiC distributiilor Debianbased si formatul RPM folosit de Fedora/RedHat. Mandriva, SuSE. etc. Fiecare for mat are propriul PMS, Utilijarul alien ' per mite convers ia intre diverse formate de pachete ,

Gestiunea pachetelor DEB Utililarul de bazA (PMS) pentru gestiunea pachelelor DEB esle dpkg. Folosit electiv penlru inslalarea sau dezinstalarea unui pachet, acesl ulilitar of erA optiuni penlru interogarea stAri; actuale a pachetelor sau a conti nutul acestora. Prinlre 0p!iunile uti le se numarA:

lislarea conlinutului unui pachel

, ,

,.

root@anaconda : Itmpf dpl:g - L coreuti l s

" " " " "

Ib in lbin/ml:dir lbi n/mv !bin/true Ibin/mknod !bin/"leep Ibin/touch Ib in /ch'ijrp Ib in /uname Ib in /echo Ibin/sync
[

. .. [

afisarea pachelelor al caror nume se potrivesle cu 0


roOt@anaconda : /tmpf dpl: g - 1 " linux ,"

e~ p res i e

regulalA

> Des i r e d - Unknown/ I nsta ll/Re move IPur'ij" I Hold J I Status _Not I I ns t al h d/Conf ig - f i l es/Unpacked/F a i h d-conf i g I Hal f " i notall ed I I Err? _ (none ) /Hold/Rei n st - required/X - both -p roblems upp,,"case-b a d) Ve rsion Description II I Name I Status , Err,

+++-----------------------------------------------------------------, linux <none> de s criptIon linux-doc-Z . 6 . <none> '"" descr . pt i on "" "" linux - gnu '"" <none> descr i ptIon "" linux - image '"" <none> " "" 1i nux - ima'ije - Z . <none> '"" d es crIption available)
~,,~il~bl e J

~"~il ~ bleJ

~,,~ihbleJ ~,,~il~bl e )

" "" " u


1J

li nux-ima'ij@-2 . 2 . 6 .18 .6Hch3

Li nUK hrnd U

'""

de ~ cript i on

Irnaq"

00

Pprol

C" l "

I , .. ]

cAuta rea pachelului ce contine un anumit liSier


root@ ~naconda : /tmpf

dpl:g - $ !bin/ p "

> procp ; : Ibin/ps


, http;lll< itenet.neV-joeylcode/alieni

60

lNTRODUCERE iN SISTEME DE OPEAARE

1 n mod obi snu~, insa, cea mai mare parte a acestor actiuni vor Ii rea lizate prin intarmediul
utililarului APT (Advanced Packaging Toefl APT esle un front-end peste dpkq 5i permite interogarea depozilelor de pachele conf igurate. ve rificarea dependenlelor, descarcarea automata a pachetelor din reposijory, actualizarea acestora, upgrade-ul unei distributii

etc.
Fisierul de conf;gurare a unui depozit DEB pentru folos irea eu
/etc/apt/so ur c e s . list :
root @a n aconda , /t rnp '
2 ( ]

AP T

eSle

cat

/@ tc /~p t /s ou r c @" . l i ' t

d eb h ttp : //ft p . l ug . ro/debhn etch mai n co ntr ib non - free deb- sre h tt p: //tt p . \ ~9 . r o /de''u n etc h m3! n contrit, n o n - f "ee

Adaugarea unui nou depozil inseamna adAugarea unei noi linii in fisierul de oonfigurare. Ac!iuni le care pot Ii real izate cu ajutorul utilitarului a pt sunt: actualizarea listei de pachete
2 3 " 7
$
~

10

r o o t8a na c ond a : / t rnp ' ~p t - g ~ t upd at ~ GH : 1 htt p : // ft p . lu g . ro Hch R " l ,,~ s e . g1'9 [386B] Get : 2 h tt p : // f t p . lu g . ro et ch / upd ~te$ Re l ease . g pg I I S9BI Hit h tt p , llftp. lug . r o etc h Re l ease Get : 3 h ttp : // ... ~~ . b~ cl: ports . org etch - bac ~po rts Relebse . g p g 11996 1 Get : 4 h tt p : // f t p . lu g . ro etc h l updates Rel<oase [3 7 . 6k B I I gn h tt p : //deblan . p l:g s . cpa n. org un stab le Release . g1'9 Get : S htt p : // .. ~~ . bac l: ports . or g etch -b ac kpo rts Release 143 .7k 1.l 1 Ig n h tt p : //ft p . lug . <o et c hlrMi n p ac kages/ Di ff ln d e x I g n h n p : /lft p . lug . r o Hch /contrib p a cka9M/ Di ff l nde x

"

I ... I

cautarea de pachete
rooth naconda : /tmpf apt - cac h e search h evea 2 h evea - tunshtes f r om L~Te X to HTML. i. nf o . or te xt , l yx - High Level W o r d P rocessor h e"e3 - doc - HeVeA d oc ume n t3tlo n

afisarea de informatii des pre un fisier


r oot 8a n a c ond a : / t rnp f ~p t - c ~c h ~ ;how h e y e a 2 Pa cka g " : heY"a 3 Pri. or i. ty : opt i o no! Sect i o n : te x " In sta ll ed - Size : 212 5 a inta i n er$ <de b i. a n - o caml - m~ int@l i . t . " Ma i nta iner : De b ian O C ~ ml M d e bi a n. org> 7 IIrch it e cture : all $ Vers i on : 1 . 09-3

inSlalarea unui pachet (si a dependenle[or sale)


2 3 " 7
$

r oot8a na co nd a : / t mpf ~p t-g e t i n sta l l apt - fil@ Read i ng p ackage list. . . Don e Bu il d ing dep endency tr e e ... Don e The fo llowi. ng @ xt r~ p~c k ~ g es will b @ i n~taIl@ d : li b a p t - p~ g - p erl libconf i g - fi l e -per l Th e fo ll o wing NEW pac l: ~ g es wi ll b e in stalled 3 p t - flle l1 b apt - p l:g - per l Il b conflg - f1Le - p erl 0 upg uded . 3 ne~l y i n sta ll e d. 0 to rem Ove and 66 not u p g r3ded .

CAPITOLUL 3. GESTIUNEA PACHETELOR SI UTlLlZATORILOR


'" " Need to get I06 k B o f ~ rchi ve . "'Her un p ~cking 4 06 k B of o dd it i o no l disk space will be u se d . 00 you want t o c o nt i nue IY/ n ] ? ~

61

dezinstalarea unui pachel


a n aconda : /tmp ~ apt - get re move --p urge a p t - f i le 2 Reading package li sts ... Done ) Bu ild i ng depe ndency t ree ... Done Th e fo ll owing p~ ck ~ge5 wi ll b e REMOVED ~ p t - file. 5

Cura!area cac heului local de pachete

,
5 7 ,

r oot@an~conda : / t rnp f apt - qe t cl@a n i n otalarea surselor u nu i pac h et

root@anacond a : /trnpl ~p t - qet .our ce a p t - file Read i nq p ~ckage lists ... Don e Bu il ding dep endency tree .. Don e Need to get l'l . ll<B of sou rce ~ rchive" . Get : 1 http : //ftp . lug . ro etch! m ~ in ~ p t - file 2 . 0 . S . 2 Idsc) Get : :I http : //ftp . lug . ro etc h / m ~ !n a p t - f i le Z . O. S . 2 [t3r)

[ 5 0 5S ] [ 17. :l l 6 ]

lislarea tuturor pachetelor din cacheullocal de pachele, impreuna cu dependelele acestora


, "
&

root@anac o nd a : /trnpf ~pt - cac h e dump Us ing Verslonlng System , Sta ndard . deb
P~ck~ge : p \ p en l ghtdre~ms

Ver9ion : 0 . 10 . 0- 13 rile : /var/ li b/apt!lists/ro.arch\ve . ubuntu .


co ~u b untu _d I 5t5 _ jaunty _u n iverge- in"ry - 1 386 _ F a c k ages

7 '" " 12 " ,.

Dep e nds : libc6 2 . 6 . 1- 1 D e p e nd ~ : lib\l c c1 1 : 4 . 2 .1


li b ~ d l-im~qe l . 2 1. 2 . 5 libs dll . 2 d ebi .. n 1 . 2.1 0 - 1 D e p" nd ~ : li b st dc ++6 4 . 2 .1 Dep .. nds : p ip@niqh t d r e~ m " -d ~ta 0 .1 0 . 0 - 13 De.cr ip t io n L ~nqu~qe : Fil e , !var/ li bhp t/ l ists/ro. a rchive . ubu n tu. D e p e nd ~ : co ~u b untu _d l $ts _ j&unty _ un iv"r."- inary - 1 386 _ Pac ' ages De p "nd~ :

MOo :

7dO U c6 0 ae 2 f4 22 dflada81~Ofb80333

"
list area reposito ryurilor d in care face parte un pachet, versiu l1ea dispo l1 ibila, vers iunile cand idate etc.
r oot@~n~cond a : /trnpl ~p t - cac h e

po li cy firefo x

, " 7

'" "

firefox : I n st .. ll"d : 3 . 0 . 14 +bu l l d 2 +no b i no n ly - OubuntuO . 9 . 0 4 . I C"nd i d a te : 3 . 0 . 14+bui ld2+nob ino n l y - Oub untuO . ~ . 0 4 . 1 Version table : 3 . 0 . 14+bo l ld2+n o binonly - Oub ontuO . 9 . 04 . 1 0 500 h t tp : //<o . arch.ve .u buntu . com j a unty-updUes/""'in p .. c l ~Q e~ 500 http : //sec u rity .ub u ntu . com j a unty - security/""'in p .. c l " ges 100 Iv .. rllibl d p k qlst~t u " 3 . 0 . S+nob 1nonly- Ou b u n t u 3 0 500 h tt p : //ro . ~ r c h i ve. ubu ntu . c om jaun t ylm~in P ~c k ~qe"

62
PPA

lNTRODUCERE iN SISTEME DE OPEAARE

Exisla 5i concept ul de Personal Pa ckage Archives, un sistem ce-j petmile programatorului sa~i locarce pachetele proprii pentru a Ii incluse in updateurile ul\erioare de pachete, fiind astlel mai usor distribuite caIre ut i li~ato rii finali. Astlel, acesta ~a putea instala programul scris de altcineva ca pe un pachel normal.
Totusi, penlru a pre~eni problemele de securitate, acesllLICru nu poate Ii Hicut oarecum. in continuare vern enumera pasii necesari pentru a putea instala programe dintr-un PPA, numit someone561 necesar pen\ru a instala 0 vers iune mai recenta a unar compi latoare.
t _ Vorn crea un fiSier nou cu un continu! 5i 0 locatie ca mai jos pentru a oferi detalii

cu privire la adresa de unde se vcr descArca pachetele


2 , mi ha i 8keldon : Itmp# ca t IHc/apt/ " ource~ . li ~ t . d!h~5k~1l . l i ~ t deb http : //ppa . hunchp~d . nH/,o m ,,on,,S61/ppa/ubun t u j ~ u n t y ma i n d"b - , rc h ttp : //ppa . l~u n chp~d . net / ,omeone561 /pp~1 ubunt u j~unt y rna i n

(se va schimba jaLJnty CLJ nLJmele versiLJnii distribLJtiei fofos ite)


2. PasLJI LJ rmAtor constA in aLJtentihcarea acestLJi PPA. Desi poate Ii li\cLJti\ si prin editarea unui li~ier sau este opUonali\, acest lucru nLJ esle recomanda\. Se preleri\ fo losirea urmAtoare i comenzi:
mi h a i 8ke ldon : /tmp# ~pt - k ~y adv ubuntu.com E51 D9310
-- r e cv - key ~ -- k~y ~ ~rv~ r k~y"e r ver .

uncle ultimul argument reprezintA un cod unic de autentilicare al posesorului PPAuILJi. DacA nu dorim sA realizAm autentiliCarea vom avea mereu mesaje de avertisment in cazul instali\rii unor pachete din aceste repositoryuri.

3. UI1imul pas va consta in reactualizarea cacheului local de pachete


pachetelor din acest PPA

~i

instal area

,
,

mi h a!@teldon : /tmpf apt - get upda t e mlha!@teldon : /tmp# apt - get insta ll ghc6

update-alternatives in timpul rLJIArii linu x, este LJn caz obisnuit sA exisle mai muHe programe avAnd aprox i mati~ acela~i scop. in special, compi latoarele ~i editoarele de text sunt exemple des intfllnite ale acestui Cal. Prin urmare, deseori apare probfema alegerii programLJILJi potrivit. AceastA problemA este accentuatA de laptul ca exi sta multe programe ce vor apela aile programe dupA un nume - de exemplu, mulle programe permit utilizatorilor sa editeze un li~i e r, lArA a Ii ele insele un editor. Ar trebui deci rLJlat un all edito r din sistem, dar care din ele? Un exemplu ar Ii managementul taskurilor utilizancl cron. Prin urmare. pentru 0 clasA de aplica!ii care pot lolosi 0 suitA de aile programe. este nevoie de 0 modalilate de a conligu ra variante alternative. 0 variantA simplA ar Ii folos irea unor ~ariab i le de mediu (EDITOR de exemplu).

CAPITOLUL 3. GESTIUNEA PACHETELOR SI UTILIZATORILOR

63

Varianta propusa de Oebian este de a avea un set de comenzi standard, precum e ditor . ..---b r o wser, v ie w etc. De lapt, toate aeestea sunt linkuri simbot ice spre comanda reala. Pentru a seta aceste linkuri, se va lolosi comanda up date-alte rnat ives. Acest sistem poate lunetiona in doua moduri: automatic mode - sislemul decide singur catre ce program vor indica linkurile manual mode - admi nistralorul sislemului va decide acest lucru Implicit, modul este automatic. Linkurile simbol ice su nt structurate in grupuri con!inflnd priorita!ile diverselor programe (edilorul cu prioritate maxima esle ee l ales in cazul rularii ed i t or). Putem realiza urmatoarele: listarea intormatiilor despre un grup
m!ha!@~eldon , ~' update - ~lternatives --display editor 2 editor - status is auto . ) lin~ curre ntly pOInts to lu"r/bin/vim . gnome lu.r/bln/vlm . tlny - priority 10 $ slave editor . ru . I . g-. : lusrlsnare/manhu/manl/vim . l . g-. ;lave e di tOr . pI . 1506859 - 2 . 1 . g-z : lu"rhnare/m~n/pl . IS08859 - 21manll v i m. l 9 z 7 ,lav....di tor . it . IS06659- 1. l .gz : lu'r/"har .. /m~n/it . ISOa859- 1 /manll v i m. l. g' ,lav....ditor. I . g:: lusr I,ha r .. /man/manl/vim . I . gz . l ave ed i tor . pI . UTF - S . 1 gz : l u . r 1 $har .. /man/pi . UTF - S/man l /v im . I . gz 10 slave editor.it.l.g:: lusr/share/man/it/ma nl/vim . l.g' " slave ed itor . f r . UTF - 8 . 1 . g>= 1usr /share/manl f r . UTF - 81 manl/v im. I . g. 12 .lave editor . f . I . g:: l u sr/.nare/manlfr/ma nl/v i m. l . g% " slave editor.it.UTF - 8 . 1.g:: lusr!share/man/it.UTF - 8/man l /vim.l.g' ,. .lave editor . pl . l . g:: I"sr/.hare/man/pl/man l /vlf . l . gt 1$ slave edi to~ . f< . IS08859-1 . 1 . gz : lu.rlsha~e/m&n/fr . IS09959-1/manll vim.1 . gz ,. Ib i n/" d - priority - 100 17 olav.. edit or. I . gz : I usr I ,ha r .. /ma n/=nl/ .. d . I . gz ,. Ib i n/nano - pnon t y 40 , .lave editor.l . gz : lusr/sha r e/man/=nl/nano . l . gz 20 lusr/bin/vim . gnom~ - prio r ity 60 21 slave editor.ru . l.gz : lusr/sh,ore/man!rU/manl/vim . l . gz '2 slave edi tor .pl . IS08859 - 2.1 .g:: lusr/share/man/pl . 1509959 - 21=011 v im . l. g' 2' slave editor.it.IS08859 -]. 1.g': lusrlshare/ma n/it.1509959 - 1/maoll vim.l.g' .lave edi tor . I . g. : luse Ishare/rna nlm a nl/vim . I . g< "lav~ ed i tor. pl . UTF - 8 . 1 . gz : lu; r I" ha~ e /man/p I . UTF - 8 Iman1/v im . 1 . gz l a ve editor . i t . I . g%: f u sr/.ha re/rnan/l tlma n l /v i m. 1 . g% slave edi to~ . fr . UTF - 8 . 1 . gz : lu.r/"ha~e/manl f< . UTF - 8/man1/vim . 1 . gz slave e di tor. fr. I . gz : l u srlsh a r e /ma.n/f~/manllVlm . 1 . g. sl a v" edi tor . it . UTF - B. 1 . gz : luorhhare/man/it . UTF - B/man l /v i rn . 1 . \1' dave edi t or . pI . I . gz : lu," I ,hue I=o/pi/man I / vim . 1 . gz .lave edi tor . tr . 1508659-]. 1 .gz: lu.rhhare/m~n/tr . IS0665~ -1 /=nll v i m.l. gz 32 Cuuent ' b .. st ' version is luor/bin/vim gnome .

" " " " " ,


" "

lislarea luluror !intelor din grup

.
m j h a!@teldon : ~ ~

INTRODU CERE iN SISTEME DE OPEAARE

update - alte~ na t!ve.

-- jist

edlto~

) 5

/u.rlbln/ v im . t1n y Ihin!ed Ibln/Mno / u .rlbin/vim . gnome

schimbarea inleractivii a unei OPtiuni

, The r e are 2 alternHive. which p r ov i de w,",w - brows e r'. s e l e ction ----------------------------------------------, fusr/bin/ .. )m / usr /bi n I e li n k . 10 Pr,,"" enter to l<eep the de fa ult [.], or type .election
J

r oot@ keldon : Jhomeim.hai. update-a ltern atives --c on f i g www - brow.er

..
~

n u mber :

schimbarea unui link simbolic


bin/elinks IJslng ' /usr/bin/elin k s '

(neinteracli~)
~ww - brow"er

root@teldon : /home/mlhalf update - a l t e rnati ve s -- se t


to provide ' www - b r o"'ser '.
lolose~te

fusr/

Pentru configura rea luturor alternative lor se -- al l

update-al te rnat i ve s

3.3
3.3.1

Studii de caz
Fi ~ ierele

in care sunl slocale informalij despre ulilizalori

Inlorma!iile despre grupuri si utilizatori sunt stoeata in trai lisiere text: /ete/passwd - informa!ii despre conturile utilizatorilor / etc/ shadow - informa!ii despre parolele utilizatorilor lete/group - inlormatii despre grupurile de ulilizatori lete/ passwd contine cate 0 linie pentru fiecare utilizator. Aceasta linie are sapta camp uri despa!1ite prin ca racterul ":". Campurila sunt (in ordinaa in cara apar in
Fi~ieru l fi~ier):

Numa da utili zator Parola. Un caracter x in aceasU! pozi!ie arata faptul ca parola este stocaHl. in hsierul /alc/shadow. UID GID Informatii legale de utilizator (Nume, Adresa, Telelon) Directorul de baza (directorul home)

CAPITOLUL 3. GESTIUNEA PACHETELOR SI UTILIZATORILOR

65

She"ul folosit

Un exemplu de li~ier f etcfpasswd este:


root@asg~r a: / h o me/george'

cat letc/passwa

,
3 "

sync : x, 4 , 655~4 : sync : III in : fllin/sync g e o rge : x : 1 0 0 0 : 1000 : George , , , , Ihome I george: Ill i n/llash uso : x : )001 : 1 00) : uso , eG306 , , : (home/uso: II)! n /ll~sh

I )

(. .. I

Initial. tot In lisierul fetc/ p<lsswd se retinea u si parolele. dar, pe mAsurA ce atacurile bazate pe dic!ionare au devenit lezabile. parolele au Iosl mutate inlr'un li~ i er cu permisiuni 600 numit lete/sh<ldow. el cate 0 linie pentru liecare ulilizator. Pe fiecare linie se giisesc opt cfimpuri despi'l.rlite prin caracte rul ":". CAmpurile sunl (in ordinea in care apar in lisier):
Fi~ierul ~i

fetef shadow coniine

Numele de utilizator Parola in formal eriplat. Daca in loc de parola se alia un caracler "!", utilizalorul respectiv nu se poale autentifiea in sistem Data la care a lost real izata ultima schimbare de parolii (data eSl e notatA in numarul de zile Irecute de la 1 ianuarie 1970) Numarul minim de zi le care pol trece intre doua sehimbAri de parola Numarul maxim de zile penlru care parola 95le aeti va Cu ~Ie zile inainle de expirarea parolei e51e anuntat utilizatoru l sa parola
j~i

shimbe

Numarul de zile care trec dupii expirarea parolei pana cand co ntul va Ii dezactivat Data la care contu l ianuarie t 970)

va expira (data este notatii in numarui de zile trecute de la 1

Criptarea parolei se face Iolosind 0 lunc!ie de hash, in general MD5'. dar. de preferat, SHA2'. Aceste lunctii sunt oneway, deci nu 5e poate alia parola simplu nk:i mi'l.car folos ind fete/shadow . La liecare autentilicare. parola introdusa de utilizator 8ste trecuta. prin algoritmul de hash si comparata cu valoarea din l ete/ sh<ldow. Mai mulle detalii des pre cr iptarea parolei se poat alia din pagina de manual a comenzii c rypt .

Un exemplu de lisier f etcf sh<ldow este:


,
J

"
6

, 8

roo t @a sga r d : /home/georgedirff ca t /etc/shadow roo t:' : 13714 : 0 : 99999 : 7 ::: daemon : . : 13620 : 0 : 99999 : ; ::: bin :: 13620 :0: 99999 : ; ::: sys:. : 13620:0 : 99999 : i ::: sync : . : 13620:0 : 99999 : ; ::: geo rge : $1 $Lell~03w4 $40;: Rf UMfCs fR9LOm H6,D(;0 : 13;; 4 ; 0 ; 99999 : 7 : : . uso : $ 1 $lPSj/ETo$IUqelNrqmOr4LYaMih h 6x 1 : 13115 : 0 : 99999 : ; : : :

, http ://. n.wikiped ia .orglwikiIM05 ' http ;11. n. w ildped ia. o rglwikiiSH A 2

66
( ... I

lNTRODU CERE iN SISTEME DE OPEAARE

Fi~ieru l fetc/g r oup conIine cate 0 linia pentru fiecare grup. Aceasta linie are palru campuri desp1!.rlite prin caracterul ":". Cflmpurile sun! (in ordinea in care apar in f~ier):

Numele grupului

Parola (cAmp cs nu mai aSIa lolosil)

GID
Numele utilizatorilor oe lac parte din grup, In afara de utilizatorul care are nume eu numele grupului Un exemplu de fisier f et e/group aSIa:
r oo t @asqa r d: ! ho m@!georgedir/ l
2 root : x : O:
c~ t

acela~i

fete/g r o up

Ip , x , 7, cup.ys
h p lip . ge o rge

sc~ nn er : ': 1 0 4 ; cu p sys . 5 george : x : l 000 :


~ u ~ o : x : 1001 :

(. .. 1

3.3.2

Actualizarea unui sistem Debian sau Ubuntu

Utilitaru l apt olera posibilitatea de a actualiza loa1e pachetele instatale pe un sistem care foloseSle pachete de tip. deb.
Primul pas in acest sens este asigurarea cA lisla local<l. de pachete eSle actualiza\A. Acest lucru se lace folosincf apt-qet update, DupA aceastA opera!ie. utilizatorul are doua alternative pentru instalarea ceior mai nOi pachele disponibile: apt-qet upg'rade actuatizeaz<li toate pachetele care pot Ii acl1.Jalizate fara a inSlala sau dezinSlala aile pachele, Este. din acest motiv. altern at iva mai conservalivA, pentru c<li nu inlroduce depencfenle aditionale, si nici nu dezinstaleaz<li programe poten!ial utilizate; apt -qet dist-upgrade este mai agresiv si instaleazA sau dezinstaleaza pachete dupa cum dependantela versiun ilor noi car. De asemenea, aceasta comanda solulioneaza eventualele conflicte' intr-un mod "inleligent", adica , in cazul unui conflict. va actualiza pachetul pe care 11 consider<l. mai important. In ce le din urmA, 0 comandA utila dupa un upgrade este apt- q .. t autor..mov... Aceasta va dezinstala pachetele care nu au lost instalate explicit de utilizator, dar nici nu mai sunt necesare niciunui pachet actual.

Cuvinls cheie utilizator grup uid gid


d if8r~ e

' Un conflict apar8 oind cJouii pach"t8 C8 r e xp lic it v@ roiu roi in.la la rfta ., r c.li la lt .o.zirl.ta larea ,

d intr_un al lrt! i" a, or; dnd un LJI ""r8

CAPITOLUL 3. GESTIUNEA PACHETELOR!?I UTlLlZATORILOR

'00'

linger l elc/passwd

l elc/shadow l etc/group

passwd

'"

adduser. deluser

useradd, userdel pache l

Package Mangement System DEB,RPM

fetc/a pt/ sources. Iist


depozit (repository)

'pI
dpkg dependen\a inslalare, dezin stalare actualizare (update) upgrade

intrebiiri t. Care este comarda lolosit:l: pentru ad:l:lIgarea noninteractiv:l: a unui utilizator in sislem?

"ddu" .. r useradd newuBer


fing .. r

o o
o

2. De ce nu sunt linute hashurile parolelor in fi~ierul letc/passwd ?

o
o

/etc/ passwd se poate al ia pe 0 part~ie nesigur:l:. permisiunile asupra letc/pass wd nu asigurA securitate maximil. intrebarea este let c / passwd .
0

capcanil.

hashurile

parolelor chiar se alia in

o / e t c I P3 sswd nu poate Ii modilicat cu ajutorul comenzii p ..... wd, de aceea


este nevoie de un fi~ier cu perm isiuni speciale.

3. Care dintre urmAtoarele alirmatii este adevAratii despre sistemele de pachete?

o o
o

rpm este bazat pe apt dpkg este un wrapper peste apt ap t este un wrapper peste dpkg sistemele Red Hat lolosesc dpk y

o o

4. Care este mecanismul prin care update-altell'natives schimM programe le folosite pentru anumite taskuri?

legaturi simbolice

C JPYnghted

mataf~1

68 o legaluri hard

INTRODU CERE iN SISTEME DE OPERARE

o inslalare si dazinslalare on-demafld a pachetelor

o 5cripl-uri wrapper care citesc conf iguratia de liecare data cand programul asle ru la! 5i lanseaza allemativa corespul"lz1:iloare 5. Care din tre urm1:iloarele in formalii NU esle re!inut1:i in / et c/passw d? o direc\o(U1 home al utilizatorului
o interpretorul de comenzi (shell-ul)
o grupurile din care lace parte

o numele utilizatorului

6. Un Personal Package Archive (PPA):


o contine vers iuni ale unol pachete diferite de ceea sa gaseste In repository-

urile centrale

o peate inlocui in inl regime repos itory-urile centrale


o asle inerent l1esigur
~

nu poate Ii protejat

o poate Ii folosi! de

or~e

distribu!ie

C JPYnghted matanal

Capitolul4 Sisteme de fi!?iere


The Unix 1ile syslem', Sure if corrup ts your data, but look how fast it isl

Ce se inva~ din acest capitol?


Ce sun! ~i cum S8 utilizeaza sistemele de li~iere

Tipuri de sisteme de !isiere Utilizarea caJlor relative ~i absoliJte Lucrul cu fisiere (cream, copiere, mutare etc.)
Descriptori de fi~ iere Redirectarea comenzilor in fi~iere Arh ivare 8 ~i dezarhivarea Drepturi de acces la fi~iere

Cil itarii familiarizati cu notiunile de fisier, sistema de fisiere


fi~iere.

~i

cu terminologia asociala

pot porni direct de la seqiunea 4,3, continui'md apoi cu analiza detaliata a sistemelor de

4.1

NoJiuni introductive

4.1.1 Ce este un sistem de fi$iere


Fl slerul (file) asle reprezenlarea logica a unei informalii sub forma unei jn~iruiri de octeti. Fis ierul poate Ii considerat ca liind versiunea electronk:l1 a documentului scr is.

69

.1

70

INTRODUCERE iN SISTEME DE OPERARE

Directorul (directory) aSIa 0 enlita!e in care S8 POI regasi lisiere


directoare. Acesla peate Ii cons iderat vers iunea electronic;'! a dosarului.

~ilsau

alle

In

interle\ele grafice, directorul aSIa de obicei denumil Iolder.

Fisierele organizeaza informa!iile pe mediil e de stocare. Mediile de stocare pot Ii considerate spatii continue de aeteli. in aceste spalii, sa pot regasi mai multe ti~ie re, de dimensiuni ~arjabile. Sistemul de llliiere reprezinta modul de organiza re a lislerelor pe un mediu de
stocarB penlru a Ie lace mai usor accesibilB. OrganizarBa include alai partea logicA {modul in care sunt adresate fi~ierele} cal ~i partea fizic1i (modu l in care sunt slocate lisierala ca insiruire de octeti) , . .

Fiind 0 compone ntA a sistemului de oparare, sistamul de l isiem mentina numele si atributete lisierelor si permite stocarea lor intr-o ierarhie de dire<:toare numitA si arbore de directoare. Pentru ca utilizatorii sA poatA avea acces la li~iere. sistemu l de operare oleli:! 0 interlal A penlru lucrul cu sistemul de /isiam. Acaastil. interlatil. poate Ii una texlualA in mod teKl cum este in terpretoru l de camenz i, sau 0 inter/aid graficA.
cunoa~te

Orice mediu de stocare poate Ii utitizat pentru scrierea si ciUrea de sistemu l de l isiere utilizat pentru organizare.

I~iere

dacA se

Sistemele de operare lolosesc f i~ierele pentru a organiza date, indiferent dacA aceste date sunt ala utilizatorului sau sunt generate pa moment de sistam. Spre examplu, in Linu x si in Mac as x, orice informatia sa gAseste intrun lisier: datele se regasesc in I~ i ere ; directoarele sunt ~i ele lisiere, dar cu atributul de director; lie<:are dispoziti~ poate Ii accesal printr-un li~ier, inc l usi~ mouse-ul, memoria ~i placa video. Intern , Windows folose~te 0 schema asemAnatoare structurii de fi~iere si dire<:toare pentru a denumi dispozitivele, dar aceastA structuril. nu se suprapune pesta structura de I~iere precum in Linu x ~i in Mac as.

4.1.2

lerarhia sistemului de ti~iere

Sistemele de lisiere perm~ utilizatorului sil organ izeze datale intrun mod accesibil. Structura eel mai des intalnitA pentru organ izarea li~ierelor este arborele. Tabelele de mai jos prezinta structura ierarhicil. din sistemele de operare ce le mai cunoscute. in Tabela 4 .1 se gAse~te 0 reprezentare gralica. parlialil. pentru 0 ierarhi e dintr-un sistem de lisiere in Linux. i n rAdAcinA (/ ) se regilsesc di rCtoare~ home, bi n, us r . .. , in home se regilsesc directoarala ubunt u ~i myuser s.a.m.d. cu Linu x, structura in Windows esle mu~ mai simplA pentru directoarele aflate imediat i n ril.dAcinA. in schimb, 0 mare parte din directoarele importante se ascund in directorul 1'1 i ndo ws.
~,., ...ov ... atanal Comparati~

CAPITOLUL 4. SISTEME DE

FI~IERE

71

TabeluI4.1: lerarhia inlrun sistem de fisiere din mediul Unix

precum

,,'
io
etc.
"

utilizatorilor

" "
operare instalateicompilate de

,
log uri.
I~ i ere

,
temporare, cache (dale reutilizabile). spool

Figura 4.1: lerarhia sistemulu i de

Ii~ iere

in linux

C JPYnghted matanal

12

INTRODU CERE iN SISTEME DE OPERARE

TabeluI4.2: lerarhia intr-un sislem de !isiere din mediul Windows XP .1

Settings \use r na me\My Doc uments

calea implicila, ea poale Ii modificata )

Sistemul de fisiere folosit de Windows are 0 particularitate: exista mai mulle direetoare rMac ina, cate unul pentru fiecare parli!ie sau disc. Spre exemplu, pol ex ista simullan urmatoarele directoare rMacina: A : - floppy disk (de obicei literele A : floppy disk-un):
~i

B ; sunl rezervale de Windows pentru

c : - parli~e de pe hard disk; daca exista mai multe parti!ii se asociaza litere in ordine penlru fieeare dintre ele; D : - CD-ROMIDVD-ROM (urmaloarea lilera disponibi la dupa ce s-au asoc iallilere partitiil or de pe hard disk(uri. Dupa cum sa preeizat anterior, pe 0 parti~ e poale e~isla un singur sistem de fi~iere la un moment del. De obieei, sistemele de fiS iere cu suport fizic se gasesc pe 0 singura parli\ie. Trebu ie men!ional fap\ul ca Windows aloca lilerele dupa parli!ii, nu dupa sistemul de fi~iere. Astlel, dacA sistemu l de fi~iere de pe 0 paru!ie sa schimba, acesta va avea asociala 101 litera C : . Tabelul 4.3 prezinta 0 analogie intre cAi le import ante din sistemala de operare majore existente in prezef1l.

4.1.3

Cai relati ve 5i cai absolute


fi~fer

Exista doua moduri pnn care se poale ae<:esa un absoluta sau 0 cale relaliva.

sau un director: folosind 0 ca le


fi~ iere

Calea absoluta este calea care ineepe cu directorul rMac ina al sistem ului de cazul LinuxlMac as x este / : in cazul Windows esle c :, 0 ; etc. Calea re lativa este acea cale care indica spre un
f i ~ ier

- in

porn ind de la directorul curen\.

Fiecare director coniine doua directoare speciale: . (punet) indicA spre aca las i director (d irectorul curent); .. (punet, punet) indica spre directorul parinte. C JPYnghted matanal

CAPITOLUL 4. SISTEME DE

FI~IEAE

73

TabeluI4.3: I

ti intre caile sistemelor de

an d Set t i ng s\ USe l: name (WinXPj, C: \Usel:s\

use rname

,.
Files

I bi n; Isbi n; l u sr/bi n: l usr /sbi n;


l o pt/ . / bin

Ibi n; Isbi n

f'

sistemului

directoare specilice liecarei aplicatii, aflate in homeul utilizatorului; fe te

username/ Libl:ar y ; lete

Astlel, daca se doreste "urcarea" in ierarhia de fis iere, se foloseste . . care indica directorul pArinte. Se poate urca mai mult in ieramia de directoare inlAntuind cAteva grupAri de .. delimitate prin separatorul de directoare. in exemplul de mai jos: comanda pwd (print working directory) aliseaza directorul curent; comanda schimba directoru! curent in ed . / . / . pArintelepArinteluipArintelui directoru!ui cu rent (sar putea spune "strAbuniCul directorului curenn.
u b untu@ u b unt u : -/ c s/us o $ p wd

> Ihome/ u b unt u /c$/uso

ubu n tu@ubu n tu : '/cs/uso~

cd .. 1 .. 1 .

6 ,

ubu n tu@ubu nt u,/ h ome$ p wd Iho me

se loloseste pentru a indica in mod explicit 0 cale care are ca punc! de pomire este u!ilizat frecvent pentru a scrie comenzi care executa directorul cure n!. script uri/programe allate in directoru! curen!. $pre exemplu, comanda de mai jos executa lisierul p rogram_ din_di r ectorul_curent - aces! lisier trebuie sa poata Ii executat de utilizatorul curen!.
u b untu @ u b unt u:-$
. /pr09r~ ~ d1~ d ir~ctor u l _cu r e nt

"
4.1.4 Variabila de mediu PATH

lNTRODUCERE iN SISTEME DE OPEAARE

Penlru rna; mulle example de utilizare a cAi lor relative 5i absolute S9 poale co nsulta sectiunea 4.4.

1 n mod normal, pentru executia programelor uzuale, nu eSla necesari'i specificarea eilii complete sau schimbarea directorului. Sistemele de operare utilizeaza variabile de mediu (environment variables) pentru a sloca diferite informa!i i. PATH eSle 0 variabila de mediu care co ntine lisia cll.ilor uzuale unde se gAsesc programe. Programele care se gasesc in oricare din cai le din PATH pot Ij executate lara a preciza calea catre ele. Mai mulle informalii despre variabile de mediu si modiliCarea acestora S9 regasesc in sec)iunea 12.' 0.1.
Pentru a afisa var iabila de madiu PATH inlr-un madiu linuxlMac OS X se utili zeaza comanda:
2

ubuntu @ ubu ntu:-$ echo ~PA T H lusrlloc 3 1 /a b ! n : lusr/ l oca l /b l n : l usr labi n: Ius rIb In : Isb l n : Ib . n : lusr/ g 3 m"a

CaJle din lisla sunt desp;lirtite prin separatorul : (doua puncte). 1 nlrun mediu Windows , comanda eSle:
,

C : > e c ho tpATH' C : W I NDOWS \ 'y , t "m32 ; C : \ WI NDDWS ; C : W I NDOWS \ Sy s tem32 \ Wb em

Separalorut folos it in WiOOows aSle ; (puncl

~i

vi rgula).

4.2
4.2.1

Tipuri de

fi~iere

Terminologie

Sistemele de lisiere pun la dispozitie uUlizalorilor dilerile forme logice de organizare si acces la date. bineinleles sub formA de lisiere. 1 n alarA de directoare si lisiere, sistemul de fisiere pune la dispozi!ia ulilizatorului si legAluri (link-uri). Astlel, sislemele de lisiere maderne olerA posibililalea ulilizarii mai multor lip uri de fisiere , prezentate in taoe lul 4.4. Tabelul4 4: Tipuri de l isiere Denumire tip in englezli I Descriere regular Illes unitate logiCa de acces la date organizeazalisiere si alte directoare directories/folders symbolic links legatura caire un all fisier

Tipurlllsier fisie re normale directoare legaturi simbolice

Exista posioilitatea de a crea legAturi ata.t pentru l isiere ca.t si pentru directoare - in 1000. amoele enlilali sunl l isiere (dar cu alribute dilerile). Legalurile se ulilizeaza la

CAPITOLUL 4. SISTEME DE

FI~IEAE

75

scrierefciti re la lei fi sierele normale. Sistemul de ope rare lmpreuna cu sistemul de fisie re se ocupa transpa rent de iraducerea" acestora i n fi~ i e re normale pentru aplicalii. Linku ri le sunt create cu ajutorul comenzii In. Mai jos su nt prezentate doua exemple de folos ire. in primul exemplu se creeaza un link alli~ i erutui fete/apt / so urees . l i st. iar apoi la un lisier local precizAndu-se un nou nume pentru link.
,
~

ubu n t u @ u b untu : -/trnp$ h - I tot ~1 1 - rW- I -- r -- 1 ubuntu ubun t u

37 2007 - 09 - 04 10 : 59 he llo . t x t

1
8

"

ubunt u @ ubun t u : - /t rnp$ In - s IHc/apt /.ou r e ... . li st ubu n t u @ ubun t u : -/trnp$ ls - 1


tot ~ l

,0

- r,,- r -- r -- 1 ubuntu ubuntu Ir"'xr"x~wx 1 Ubuntu ubuntu SO urC eS . list

37 2007 - 09 - 0 4 10:59 hello . txt 172007- 09 - 04 10 : 59 sources . list - >

letc/~ p tl

"

,~

ubunt u @ ubun t u : -/tmpS In - 5 hello . txt hello u b u n tu @ u buntu : - /tmpS t ot a l lr"x r ",x r "x ubuntu u b un t u

1In ~. txt

" " n'

" "

, ,
, ,

" -,

9 2007 -09 - 04 11: 00 hello_ lin k . t xt 37 2007-09 -04 1 0 : 59 h@llo .txt 17 2007 - 09 - 04 10 : 59 sources . lis t

-~

h .. ll o .

" "

-I,,- r -- r -ubuntu u b un t u ubuntu ubuntu lr ",x r "'H"x source li st

-~

lete/a ptl

4.2.2

Oetec,ia tipului

fi ~iereror

Pe sistemele Windows . detectia tipulu i f i~iere l or se bazeaza pe verilicarea extensiei. in fu nctie de aceasta, sislemut de ope rare delermina care aplicalie eSle potriv~a pe ntru a deschide un fi~ i er. Pe sistemele Linux. delectia tipului lisierelor eSle real izata prin intermediul comenzii file. Aceasta utilizeaza un f~i er special de conligurare in care sunt inscrise secvenle de octeti care se regasesc in diferite tipur i de li~ i ere. fi l e lucreaza independent de exl ensia lisierului. precum esle dovedit in exemplele urmatoare:
ubuntu@ubun t u : -$ fi le photo . jpg photo . jpg: JPG image dau . JFlF sta ndard 1 . 0 1 ubu n tu@ubu ntu:-$ mv photo . jpg f isier . txt ubunt u @ ubunt u : -S file fh i er . txt pho t o.txt : J PEG image dau . J FIF

6 ,

st~ nd a rd

1 . 01

76

INTRODU CERE iN SISTEME DE OPEAARE

4.3
4.3.1

Opera,ii uzuale asupra


Afi ~area ~i

fi~ierelor

liOi directoarelor

schimbarea directorului curent

Comarxla pwd afi~eaza calea absoluta catre directorut cure nt. De asemenea, prom pt ul bash conIine implicit directorul cu rent. Pentru a schimba directorul cure nt se folose~te comanda cd <c a1e> . Calea poate sa fie 0 cale abso luta sau relativa. Mai jos se gase~te un exemp lu de folosi re a comenzi lor p wd ~i cd - a se observa ca la fiecare schimbare de director 5e modifica ~i prompt-ul bash. lerarhia de directoare prin care 5e navigheazA este cea prezentatA anterior.
ubuntu@ubuntu ; -~

p wd

, ,

7

Ihorne/ u b unt u
ubuntu @ ubuntu:-~

cd ..

ubun tu @ ubuntu : /hom.. $ pwd /home ubuntu@ubu ntu : /home$ cd .. /usr/b i n ubuntu @ u b unt u ; /u"r/binS
p~d

" "
'.

Ius< /b l n
ubuntu @ ubunt u: /u'r/binS c d ubuntu @ ubuntu: /u.r/ bi n$ cd I ubuntu @ ubuntu: / $ cd ubu ntu @ubun tu :-$ pwd /home/ubu ntu ubuntu@ubu ntu:-$ cd / u sr/bin ubu ntu@ubunt u ; /u"r/binS cd Ihome ubuntu @ ubuntu : /home $ c d lu"r/bin ubuntu @ ubuntu : /u,r/ bi n$ c d ubu ntu @ubuntu : -$ pwd Ihorn@/ u b untu ubu n tu@ubun tu:-$ cd . 1 . 1 . 1 . / ubuntu@ubunt u ; -Scd .. 1 .. ubuntu@ubunt u; /S pwd

" ,.
" ,. " ,. " ."
21

"
~ ~

"

" "
~

"

"
"

J2

" ""
3?

,
" ,.
"
.,

ubuntu @ ubuntu : /$

Observatii: cd . . schimba directo rul in directorul parinte:

CAPITOLUL 4. SISTEME DE

FI~IEAE

n
nu modilici'l directorul;

. (punct) este a relerinti'l la directorul curent. deci cd

- este echivalentul directorului home pentru utilizatorut eurent (cd - ); cd apelat fara parametri sehimba directorul in directorul home; c d - sehimbii. direetorul in direetorul anterior.

4.3.2

Afi!i'area con,inutului fi!i'ierelor

Con!inutul unui fi~ier poate Ii ali~at pe ecran prin intermed iul eomenzii ca.t, Sintaxa acestei comenzi eSle C""t <nWlle fi"ier>. Un exemplu de ulilizare este:

u b untu @ ubunt u ; - S c a t le tc ires o l v . con f f Ce n ersted b y d l\c pcd fo r I nt erface et llO s e arc h l ocs ldo ms i n M m eSe rv ~ r 192 . 1 6 8 . 0 . 1

Aceasti'l comanda aliseaza tOllisierul, inclUS iv daca acesta eSle mai mare de un acran. Pentru a putea naviga prin output-ul unei comenzi (in eazul acesta, al comenz ii ca.t), se pot Iolosi comenzi le more sau less. more perm ite navigarea doar intro singura directie (de la incepul catre sla~ilul fi~ierului) si cate un ecran odata. pe cand less permite navigarea in ambele direc!ii, cAte 0 linie. la fel ca un editor. mor e si less poaria numele de paginatoare (pagere) , Interiata less este loarte asemantUoare cu cea a editoru lui Vim (vezi sectiunea f4.3).

,
3

u b u n tu @ ubunt u : -S edt

l~ tc / X 11 fxorq . con f

mOr e
l<,,~

ubu n t u @ ubun t u : -$ cat l etc /Xllf xorq . con f

4.3.3 lIstarea conlinutului unui director


Cea mai frecventi'l opera!ie care se executa asupra directoarelor este listarea, Comanda utilizata esle la. i n aceaslii. sec!iune, prin li~ier Inlelegem orice l ip de lisier (inclusiv l ipul 'director"), mai pulin In caz uri le cAnd este menlionat explicit. Sintaxa comenzi i penlru listare este ls [op1;.iuni I [<cale> 1. In momentul in care lipse~te calea, se real izeaza listarea con!inulului direclorului curent. OPliunile cele mai des fo losile cu aceasta comandA sunt: - 1 afiseazii informatii detaliate des pre fiecare fis ier/director (data modificare, dimensiune. utilizator. grup, drepturi de acees); - a afiseazii ~i fisierele care incep cu . (caracterul puncl); in Unix. aceste fi~ie re sunt considerate de majoritatea interfetetor cu utitizatorut ca liind fi~iere ascunse; - h afi~eaza dimensiunea fisieretor in format humanreadabte. respectiv inlocuilii cu dimensiunea in dimensiunea in octe!i este Ki looctelifMegaocleWGigaocleti dacii depii~este un anumit ordin de marime. Formatul utilizat la afisarea detaliata conIine mai multe informalii des pre acellisier:

78

lNTRODU CERE iN SISTEME DE OPEAARE

ubuntu@ubu nt u ; -$ Is - }
2

Ihome/myuse~/myapp

- ' ''xr----- 1 myu "er

use~5

11 76348 2 007-03 - 03 20 : 2a

IhomeJmyuserfmy~pp

Semnificatia coloane lor afisate este:


primul caracler reprez intEl. tiput
fi~ieru l ui:

- = fi'$ier normal
d .. director

p _ pipe

b .. dispozitiv bloc c
1
"dispoziti~
~

caracter

leglitura simbolica

urmeaza 3 grupuri de eate 3 caractere (.-",x) care reprezinta drepturile de acces pentru ulilizatoru l myu se r (care esle delinAtorul fisieru lui), drepturile de acces
pentru lJIilizatorii care lac par te din grupul u se r s (care detine fisieru l). drepturile

de acces pentru

ceila~

ulilizatori: mai multe detalii despre dreplurile de acces se


fi~ier

gAsesc in secliunea 4.5;


numarul de link-uri catre -

J:
users;

ulilizatoru l ce de\ine fisie ru l- myuse r: grupul de care apartine dimensiunea


fi~ierului fi~ i eru l -

- 1 17 63 48 :

data l isierului - 20 07 - 03 - 03; . orafis ierul ui- 20 : 28 : numele fi!; ierului - /ho me/myuser /rnyapp. Exemplele urmAtoare prezinta. cAteva utilizar i mai intAlnite pentru comanda 111 care combi na paramelrii prezenta\i anterior:
ubu n tu @ ubuntu : -$ 1 $

Desktop
ubuntu@ubuntu:-$ 1$ -

,
'" " " " ,. " " " "

Des Hop
ubuntu @ ubuntu tot"l 0 dc"xr - xr -x
; -~

" -, " -"

ubuntu ubun t u

'""

2007-09-03 13 :1 5 De $ ktop

ubun t u @ ubu nt u: -$ d""xr - xr - x d"wxr- xr - x

" , , - c,,------- , - c,,- r -- r -- ,


tot~l

dr"xr- xr-x

- <w- r -- r --

"

, , -<,,------- ,

ubuntu r oot ubuntu ubuntu ubun tu

ubuntu 2007 - Q~ - Q~ 1 ~ : sa root 00 2QQ7 - Q~ - 03 06,14 2007 - 9 - 3 19 : S8 . b~$h _his t ory ubuntu ubuntu 2346 2QQ7 - Q~ - 0~ 06 : 14 . ba$hrc 2QQ7 - Q9 - 03 13 , 15 Desktop ub untu

",

2007 - 09 - 03 06 ; 1 4 ubun tu ubuntu ubu ntu ubuntu 9524 2007- 09 - 03 11 : 40

" '"" '"

. p r of ile . xsess, on - e r rO r S

CAPITOLUL 4. SISTEME DE

FI~IEAE

79

" " ,

" " , " " " " "

ubu n tu@ubun tu:-$ total d. w xr-~r - x ; ubun t u ar .. xr-x r - x root - rw- - ----ubun t u -r"-r--r-ubuntu drwxr - xr - x ubuntu - rw- r -- r -ubuntu - rK------ubuntu

,,,

, , , , , ,

"

- alh ubunt u root 00 ubunt u ubuntu 2 . 31\ ubuntu ubun t u ubuntu 9 . 51\

'"" "

" , " " " " "

ubu n tu@ u b unt u : -$ bin i nitrd l nitrd . boot m cdrom hom.. lib

..

'"" '"'

2007-09 - 03 2007 - 09 - 03 2007 - 09 - 03 2007-09-03 2007 - 09 - 03 2007 - 09 - 03 2007 - 09 - 03

19 ; sa 06 , 14 19 ; sa 06 : 14 13 : 15 06 : 14 17 : 40

. bash_ h i story . b a shrc Des ktop . profile . xse ss 1 on - e r rOr S

" "

. ./ .. /
medi~
,~,

" "

ubu n tu@ubu ntu:-$ boot He corom home bi n i nitro

...

ln i t r d . i mg lib meoi&

.,

~".

.,.

proc rof. r oot

.,.

.b i n

. ~,

vmlinuz

". "" m
rota root 'bin

~"'

."

proc

". '" ." ."


.~,

vmilnuz

Observatii: dacii se dore~1e afi~area COlltillutului direc10rulu i curellt, IlU es1e Ilecesarii scri erea ca:i i ca parametru pelltru comanda h : ls -Ill afi~eaza lista detaliata a fi~ieretor dill directorul home al utilizatorului curell!. illclusiv li~ i erele ascullse (a se observa cii si . ~ i .. sUll1 ali~ate ;
h

-lI.lh afiseaza lisla detaliata a fisierelor din directoru l home al utilizatorului curen1. utilizflndlormatu l humanreadabla pentru afi~area dimellsiullii l i~ ierelor (a se observa dimenSiunea fi$ierului . xsession - errors );

18 . / . prezintii utilizarea lui 18 cu parametru dat sub formfl de cale relativii (directorul afisat este I ):
h -II. I prezinta fiSierele ascunse ale direClorului / - se observa cfl si acest director contine directoarele standard . ~ i .. .

Folosind optiullea - R se poate afisa arborele de directoare si fisiere care are ca rMiiciM direClorul specificat ca argument:
ubu n t u@ubun tu : -$ is - R diel > ai,l : J d ir 2 fi. i "r l fisiec2 air1/air2: " fisier3 fisier4

Pelltru mai multe op\iulli sa poate cOllsu lta 1s --help sau man h.

4.3.4

Crearea fi~ierelorfdirectoarelor

Pelltru a crea orice elltitate pe un sistem de fisiere, se utilizeazfl 0 serie de comellz i, prezelltate i ll tabe lul 4.5. Primul mod de creare a unui lisier este utilizAnd comalld comanda touch. A doua metodfl se bazeazfl pe 0 fUllctiona litate bash Ilumitii redirectare i n l i~iere (vezi

80

lNTRODUCERE iN SISTEME DE OPEAARE

Tabelul 4.5: Comenzi

sectiunea 4.4). Pa scurt, ceea ce realizeaza comanda a 2-a esle redirectarea iesirii unei comenzi (nule) caIre un 1i~ier, creandu-se astle l un fi~ier gol.

,
,

ubunt u@ubuntu,-$ ubunt u@ubuntu:-$

touch Osierl

fisier2

" " " " "

ubuntu@ubunt u; -$ mkdir d i d ubun t u @ ubu nt u: -$ mkfifo fifo! ubun t u @ u b u ntu : -$


tot~l

dn,xr - x r- x pr,,- r -- r -- r",- r -- r --

, ,
, ,

" -,

rn He"" users

- r.;- r -- r --

mi ree" us .. rs mlrcea users mnce" users

..

2007 - 09- 20 1 0 : 2 6 2007 - 0~ - 20 1 0 : ~ 0 2007 - 09- 20 1 0 : 2 6 2007 - 09- 20 1 0 : 2 6

d i rl f i fol

lister!
fisier2

o alta intrebuinlare a comenzii t ou<;: h eSla aceea a actualizarii datei ultimai modiliCari ~i
a datei ultimei accesari. Fo losind op!iunea - m se va actualiza doardata ultimei modificari iar totosind optiunea -a se va actuatiza doar data u~imei accesa.ri. Folosind comanda t o u c h lara aceste opli uni va duce la modilicarea ambelor date. Optiunea -r poale fi tolos ita pentru a prelua informaliile legate de timp de la alt ti~ier. In exemplul de mai jOs, se obse rva. modihcarea timpului de acces al fisierului de la va loarea 17 : 03 1 a 17 : 11 .

,
,
,

ubuntu@ubuntu:-$

- r"'- r -- <--

, root"
; -~ ; -~

- 0>

root

" "

2009 - 09 - 21 17 ; 03 f l s l erl

ubuntu @ ubuntu ubuntu@ubuntu

touch fi s leci

- n,- r -- r --

, "
rOOt

- 0> root
2009- 08 - 21 17 : 11
fI ~ ier1

Exemple privind ere area de link-uri sunl prezentate in seqiunea 4.2. I.

4.3.5

Copiere/mutare/redenum ire/.tergere

Copie rea si mutarea sunt operatii care necesita. 2 parametri: sursa de unde se copiazatmuta.: deslinalia unde se copiazlilmuta.

CAPITOLUL 4. SISTEME DE Copierea

FI~IEAE

81

Copierea unui fi~ier sau director se realizeaza cu ajutorul comenz ii cp oSintaxa comenzii eSle c:p [op~iunil <lIursa> <d.. "tinat i .. >. OP!iunile ce le mai felosile penlru copiere sunt: - R - copiere recursiva {copiaza ceva in sursal;
~i

cop iii directoarelor. presupunarod ca exista

a~a

- p - copiere cu pastrare a tuturor atributelor (permisiuni, data); -u - copiaza doar daca f~ierul sursa esle mai nou decM dacA lisierul destinatie lipseste.
li~ieruf

destinatie sau

, , , ,

ubunt u@ ubunt u ; - $ u b unt ~ @ ub u n l u : - $ fl . txt ubu n tu@ u b untu : -$ ubu n tu @ u b untu : -$

t ouc h fl . txt

"
0,
f 1. t xt f2 .t x t

fl . t xt

f2. txt

"

Mutarea Mutarea unui lisier sau director se rea lizeaza cu ajutoruf comenzi i my. Sintaxa comenzii este my [op1;i.uniJ <.sur"a> <destinatie>. Implicit. mutarea este recursiva ~i paslreaza atributefe li~iere l or. in cazu l in care sursa ~i destina!ia se gas esc pe aceea~i parti ~e, la 0 mutare, se schimba doar parintele li~ i erului sau directorului care se mut1i.. o operatie de mutare este. astlel, mai pulin costisitoare decat 0 operatie de copiere.

, , , , " "

u b uI"ltu @ u b u nt u: - $

,.,
"

Itmp /q
ubu ntu@ u b unt u : -$ fl . txt f2. t x t ubuntu@ u b u n t u : -$ Ub unt ~@ub u nt ~ : - $ f2 . txt u b un t
~ @ u bu

fl . t x t

Itmp/r

"

" "

nt u ; - $

fl . t xt

"

It mp /rl

Aedenumirea Redenum irea este. de fapt. 0 mutare si se realizeaza cu ajutorul comenzii urmatoarele conditii:
mY,

in

In cazul In care sursa est e un liSler si destina!ia este un liSier. se realizeaza copierealmutarea I~ierului cu schimbarea numelui sursei:

82

lNTRODUCERE iN SISTEME DE OPEAARE

In cazul in care sursa esle un director si destina!ia nu exists ca director. S9


real izeaza copierealmutarea directorului cu schimbarea numeluL
ubunt u@ ubunt u ; -S Is
~

,
7

f2 . txt
ubun tu @ ubunt u: -$ mv [2 . t x t

f3 . t x t

ubu ntu @ ubunt u: -$


f ) . t xt

l~

Siergerea fisierelorldirecloarelor
in Unux, comar.da cea mai utilizata pentru ~terge rea fi~ierelor si directoarelor esle Sintaxa comenzii eSle = {op 1;; iuni J <ee1 e >.
:t:m.

Una dintre ce le mai jorosite opliuni esle -r/-R, utilizatti pentru a sterge recursiv un director. Aceasta optiune trebuie folosita cu atentie pentru ca poate avea rezultate negative daca directorul care esle sters contine informalii utile. 0 eroare celebra esle utilizarea comenzi i rm - rf / , care sterge recurs iv totul i nceplind cu directorul radaci na, lof\and ~te rgerile (dal orita opli unii -f ).
Pentru
~tergerea

directoarelor goale se peate lolosi

~i

rmdi r .

4.3.6

Arhivarea

fi~ierelor ~i

dezarhivarea

Arhlvarea este proeedeul prin care mai multe li~iere ~i directoare sunl adunale la un loe (intr-un singu r lisier), realizAnd eve ntual si 0 reducere a dimensiunii prin eliminarea dalelor care se repeta si inloeu irea lor cu 0 serie de codilicari. in general. in cadrul procesului de arhivare se creeaza un diclionar cu secvenle de oeteti Irecvente $i a cod ilicare a lor mai scurta (pe mai pupni ocleli). Arh iva contine atat dictionarul clit si conlinutul fisierelor dar. in loe de secvenlele Irecvente lungi. se regasesc referinle cai re diclionar. Dad. lisierele contin multe date care se repeta, dimensiunea unei arhive scade considerab il. Dupa cum se peate identifica si din descrierea anterioara, exista doua etape mai imporlante In ceea ce privesle manevrarea l isierelor: concatenarea Oipirea) hsierelor intr-un lisier mai mare, din care sa se poala extrage toate jisierele si informatiile despre ele; compres ia fis ierului mare, astlelincAt sa se reduca dimensiunea lui dar lara a se pierde din informalii In Linux exist<'l utilitare de arhivare care se ocup<'l ori de una dintre etape ori de amb-e le elape. Comanda tar se oeupa de prima elapa. Numele ulililarului asle 0 abreviere a tape archive, Intrudl.t, la inceputui utiiizarii sale, rezultatu l comenzii era tra nsferal pe benzi magnetice.

CAPITOLUL 4. SISTEME DE

FI~IEAE

83

Un lisjer . t ar contine l isiere necomprimate impreuni'l cu informatii despre modul de extragere al acestora (sp re exemplu: de unde panA unde se gAse~te un f i ~ier in cadrul arhivei). Din acest motiv, un lisier . t ar eSle de obieei mai mare decal suma Muror dimensiunilor l isierelor ce sunt incluse in eL Penlru a crea 0 arhiva ta r . se utilizeaza comanda:
ubu n tu@ubun t u:-$ t ar cvt n ume_ a rhiva tar <ca l e >

cu parametrii: c creeaza arhi~a: v


f
ali~eaza

ce anume se arhiveazll;

nume_ arhiva . tar speciliea numele arhivei;

<cale> precizeaza directoru l/directoarelelfisiere care vcr Ii arhivate. Pentru a dezarhiva 0 arhiva . tar, se utilizeaza:

unde: x dezarhiveaz;'i (eX/rac/); v aliseaza ce anume se dezarhiveaza;


f

nume_ arhi va . t ar precizeaza numele arhive i care se dezarhiveaza: specilica. op)ional. locul unde se real izeaza

- C <cale_ dest i nat i e> dezarhivarea.

f 5i nume_arhiva . tar se cons ideri'l un singur parametru; din acest motiv, de liecare data cand se loloseste op)iunea f pentru a indica un lisier arhiva, aceasta trebu ie sa apara ultima i n lista de op!iuni, fii nd urmat imediat de numele lisierului arhiva.

Pentru a rea liza compres ia unui lisier, doua utilitare sunt lolosite preponderent in lumea Unix: qzip. mai rapid dar cu 0 ratil de compres ie mai mica; bzip2 , mai lent darcu 0 rata de compresie mai mare. Comanda tar poate uliliza direcl unul dintre programele de comprimare mentionate anterior lolosind parametrul z pentru q%ip sau parametrul j pentru b%ip2 , ca in labelul 4.7 Tabelu l 4.6: Comprimarea si decomprimarea folos ind gzip si bzip2 Comprimare Decomprimare c;: %vf <" <" x%vf f i sier.tal:.q% di.l:/ t"isier. tar. q% cjvt eo" eo" .. jvt fisiar. tar. b,.2 fi s iar . tar. bz2 dirt

gzip
b~ip2

Pe 1 9.n91\ optiunile de compresie/arhivare se mai pot lolosi si alte op)iuni. Printre cele mai utile se numAra op!iunea --preserve, care impune pastrarea drepturilor de acces in momentul arhivarii/dezarhivar ii.

84

lNTRODUCERE iN SISTEME DE OPEAARE

CAteva exemp le de utilizare a comenzii t a r pentru comprimare si decomprimare, in conjunctie ell b z i p2 ~i qz i p sun! prezentate mai jos:
ubuntu@ubuntu ; /tmp/qS 15 f1.txt f2 . t x t f3 . txt
ubuntu @ ubuntu:!tmp/qS tar cvf f1.txt f2.txt
f) .txt
Hh1,,~ . t ~ r

,
,
7

f . txt


10

ubuntu @ ubuntu : /trnp/qS fih Hhiva .t a r arhiv~ . tlI.r ' POSIK t"r archive IGNU) ubuntu @ ubuntu ; !trnp/qS
Q ~l p

" 12

arh i v a . Ur

" ,.
,!

ubuntu @ ubuntu:!tmp/qS l s a rh i va . ta r.'1: fl . txt f2 . txt

O . txt

11 ,.

"
"

ubuntu @ ubuntu:/tmp/q$ file ~r h1 " .. . t;H.gz ~chiva . ta r.\l z ' 9zip compre ~ s ed data. was " arh iva.. tac" , modif i ed : Thu S@p 20 11 : 37 : 30 200 7 ubuntu @ ubuntu:/trnp/q$ h ~rhiva . t"r.gz fl . tKt t2 . t xt

from Unix .

la,t

20 21

n . txt

..
~

"
"

ubuntu @ ubuntu , ! t rnp/q$ mv arh l va . tar . gz fialer . t x t ubuntu @ ubunt u: /t mp/q$ H l e Os i er . txt f l s i er . txt : g.lp compressed data , .. a s " a rhlv3 . t 3 r ", modHied : Thu Sep 20 11 : 3, : 30 2 007 ubun tu @ ubuntu:/tmp/q$ l ~ f1.txt f2 . t x t f3 . txt ubun tu @ ubuntu : /tmp/q$ tae cz"f ne".tar . gz f. f1.txt f2 . txt
f) .txt

2<

fro m Unix ,

l a st

"
~
;!g

"
'" "
,..

"
"

ubuntu @ ubuntu,/ t mp/q$ is f1.txt f 2.t. t n . t xt oe~

. tar . g:

"
~

.. .. ..
.,
~ ~ ~

..

4(l

ubuntu @ ubuntu:!tmp!q$ fi l e ne~ . tar . g: ne .. . tar-g. : g.ip comp~eMed data , hom Unix , 11 : 40 : 022001 ubun tu @ ubuntu : !tmp!q$ mkdir t mp ubuntu @ ubuntu:/trnp!q$ mv new .t ar . gz tmp! ubuntu @ ubuntu : !trnp!q$ cd tmp/ ubuntu @ ubuntu : ! t mp/q/tmpS tar xvf ne~.t a r.g f1.txt f2 . txt f3 . txt ubuntu @ ubuntu : !tmp/q/tmpS I s fl . txt f2 . t x t f3 . txt ne~ . ta~ . gz

l a st mod ifi ed : lhu Sep 20

""
$1

~ ~

CAPITOLUL 4. SISTEME DE

FI~IERE

as

4.3.7

Backup

Backupul esta utilizal penlru a p<htra intrun loe separat 0 co pie a datelor. Aceasta. copie se utilizeaza. pentru a relace datele in cazul in care suportul original nu mai poate Ii lolosit din once motiv. Este una dimre cele mai utile actiuni asupra datelor pe care toata. lumea stie ca ar Ii bine si! a laca dar nu a lace. Cateva metode de backup au lost deja prezentate. Tabelul urmator prezinta. cAteva metode de backup 5i situa!iile cAnd sunt ele potri vite.

pentru dimensiuni mari de date. Permite comprimarea

I
f~ i ere_

fi~ i ere.

Utili!

it . i i Permite pastrarea intacta a structurii sistemului de Inllexibila cAnd \line vorba de recuperarea date lor. mari de date. de sincronizare intre mai mulle sisteme Permite replicarea structurii de fisiere (inclusiv

"

r a yne. backupuri incrementale. La un moment dat se realizeaza un backup complet pentru un director (asemanator rs~ncului). Backup-urile incrementale satveaza doar mod ificarile ce sau facu! de la ultimul backup pAna in prezent, inc:merent de tipul backupului. in acest lei se poate reveni la orice stare anterioara, in masura in care litl!i t il

"

4.4
4.4.1

Redirectari de comenzi
Descriptorii de
fi ~ ie r

Fiecare program in execulie utilizeaza 3 lisiere speciale pentru a interactiona cu utilizatorul: stdin (standard input) - lisier care reprezinta locul de unde programul isi citeste datele de intrare {de obicei tastatura}: stdou t (standard output) - l isier care reprezinta locul unde programul scrie datele de ie~ire (de obicei acesta este cons ala curentil); stderr (standard error) - fi~ier care reprezintil locul urxle programul serie mesajele de eroare (de obicei acesta este consola curema).

86

lNTRODU CERE iN SISTEME DE OPEAARE

in C/C++. ex istli 3 variabile de tipul F IL E. eu numele stcti n, s t dout si st der r care sunt in~i al i zate ~i disponibile in ariee moment Ete indeplinesc ro lurile descrise anterior ~i pot Ii lolosile ca pe criee alta variabila de tipul FILE "
Fiecare fi~ier deschis de 0 aplicalie Unux are asocial un indice. Aces! indice sa nume~te descriptor de jisier. Fisierele descrise anterior au descriptorii de !isier urmMori:

stdin-O
Sldou! - 1

stderr - 2
Oriee fi~ier deschis de apli ca!ie va avea un descriptor mai mare sau egal ell 3.

4.4.2

Redirectari

Exist!!. silua1ii cAnd, perltru 0 apliCatie, utili zatorul dore$te sa. modifiee intra rea sau iesirea
- spre exemplu, utilizatorul dore~te ca iesirea unui program sa se laca inlr-un l i ~ i er ~i nu in conso la curenla, sau inlrarea unui program sa lie un l isier si nu tastatura . Acesllu-cru se poale lace doar lucrand la nivelul descriptorilor. Cazurile in tAlnite sunl prezenlate in Tabela 4.8. Tabelul 4.8: Comenzi de redireclare exemplu comandi

I s ursi
inlrare (sldin) iesira (stdoul) aroare (slderr) aroare (Slderr) aroare Si iasire

I destina!ie
li~ i er li~ i er li~ i er

iasira (sldoul) lisier

,/p r0 9 ram ,/ p r0 9 ram ,/ p r0 9 ram ,/ p r0 9 ram ./program . /pro9 ram

, , '" , en " , ,
< >
00<

2>'1 2>,1 >


.>

- 00< - m

,"0

00<

Sa observa cii penlru a red irecta iesirealinlrarea se lolosesc semnele > (mai mare)
pentru iesira (caIre exler iorul programului) si < (mai mic) panlru inlrare (cl'ilre program). Pentru red ireclarea iesiri i de erori se indica descriptorul de lisier 2 . Pentru a redirecta catre iesirea slandard (stdout) , se loloseste sintaxa & 1 . Pentru redirectarea iesirii de erori si iesirii standard cl'itre un fis ier, se redirecleazii inlAi iesirea de erori ciilre iesirea standard lolosind 2>& 1 dupa care sa red irecteazl'i iesirea Ba s h olera 0 sintaxl'i standard ciitra un lisier >fi\lier_iesire_\li_erori. simplificatii in cadrul operalorul ui & >. Ca exemplu de rad ireclare a intrarii, in comanda anterioara se trimite conlinutul fisierului cont i n ut _ma.il ca inlrare penlru comanda mail. Se va Irimile un mesaj ulilizalorului user1 cu inlormatiite din fisier.
ubu n tu@ubun tu , -$ ma i l userl < conti n ut_ ma il

in exemplul de mai jos se scrie lisla de fisiere si direcloare din direclorul curenl in lisierul listare .

CAPITOLUL 4. SISTEME DE

FI~IEAE

87

,
3

ubuntu@ubu nt u:-$ Is > ll stare ubuntu @ ubuntu : -$ cat lis tace hs i erl

Pentru a adauga

rezu~atul

eomenzii date la
li~ tar~

sfa.r~ i lu l

hsierului se folose~le operaloru l :

,
3

ubuntu @ ubuntu:-$ dat e

ubuntu@ ubuntu:-$ cat list o re tisier 1 SH Aug- 22 1 6:07 : 5 0 EEST 2009

"

in lislingul de mai jos se irrcearca copierea unui fi~ier lara specilicarea deslinaliei. Aceasta comanda genereazll 0 eroare care eSle scrisa in fiSierul eror i :

,
3

u b untu @ ubuntu : -S cp f .si er i 2> erori ubuntu@ ubuntu:-S cat "cod cp : mi .s ing- d"stination fi h opH~nd Try ' cp --h" lp' for more i ntorm ~ tion .

"

~ft ~ "

' f i si @rl '

Pentru a adauga noi mesaje de eroare la sltlrsitul l isierului se

lolose~le

operalorul 2 :

,
,

ubuntu@ ubunt u:-$ cp fisier4

2~~

erori

, ubuntu@ubunt u:-S cat e r o rl cp : missing d " stinatio n h i e operand aft" r S Try ' cp -- help' for more .nformation . cp : missing d "H inatio n f il e operand a ft e r Try ' cp -- h e lp' for mOre i nformation .

'fisi"d '

'fi s i " r4 '

Comanda de mai jos serie speeilicat:

~i

rezultate le si erorile generate de eomanda Is in l isierul

ubuntu @ ubunt u:-$ l s f l s i e rl f , s i er4 2>.1 > re z ult a te

sau mai simplu:

,
J

ubuntu @ ubuntu:-$ l s f i s 1er i

f1 ~ i~r4

>.

r e zultdt e

"

ubuntu @ ubuntu:-$ cat rezu l t a te l~ : c~nnot d CC."S fi s ied : No ~ uch f il e or d i r e ctory fisiH 1

Tabelul4.9 prezinta etlteva exemple de redirectllri fo losind

li~iere

speciale:

4.5

Drepturi de acces

o prima masura de proleclie a datelor 0 reprezinta dreplurile de acees la lisiere. Alat timp cat un utilizator nu are drepturi de administrator pe un anumit computer, acel utili zato r se supune drepturilor de acces la lisiere. Tabelul4. to prezinta drepturi ce pot Ii conligurate pentru un lisier, lara a parlicu lariza la un anumit tip de sistem de fisiere.

88

INTRODU CERE iN SISTEME DE OPERARE

Tabe lul 4.9: Comer;zi de redireclare care !olosesc lisiere speciale Comandi Elect ./proqram 2>/da v!nul1 masajele de la iesirea de erori nu sun! ali~ate niciun mesaj nu asIa ali~at ./proqn.lD. 2"&1 >/dev/null > ~out creeaza. un lisier gol ell nurnele

0"

/dev/null > f _out

lisier w acela~i continut ca / de v/n ull, adic;,\ un lisier gol

creeaz(t

, "0'

co

sau,
if

4.5.1 Utilizatori ~i grupuri de utilizatori vs. lisle de acces


Exista. doua metoda mai intalnite pentru definirea drepturilor de aeces la Ii~iere: drepturi de aeces la nivel de utilizator/grup. liste de aeces - Access Control Lists (ACL).
Prima metoda (drepturi de aeces la nivel de utilizatorlgrup) cOllsta in definirea unor drepturi penlru urmatoarele entita.~:

posesorul unui fisier (user); grupul care detine fisierul (group); toti ceilalti utilizatori (others). Un utilizator se poate alia in mai multe grupuri (vez.i se<:tiunea 3.1 ). AceastA metodA esle cea mai folosilA cale pentru definirea drepturilor de acces. MetodA olera un nivel de pmte<:tie suficient pentru majoritatea situa!i ilor. ocuj)And un spatiu limitat. In cad rul sis temului bazat pe liste de acces, unui fi~ier i se pot asocia mai multi utilizatori ~i/sau grupuri de utilizalori. Pentru liecare dintre aceste entit;lili pot Ii conhgurate mai multe tipuri de drepturi . Aceasta variantA poate Ii privita ca 0 extindere a sistemului cu drepturi de acces prezentat anterior. Comptexitatea peate lace ca sistemul sA he destul de greu de inlrelinut. Fiecare sislem de l i~iere of erA un sel de drepturi ce pol Ii modilicate penlru liecare fis ier in parte. Ca drterente notabile intre sistemete de fisiere se pot aminti urmatoarele: FAT32 nu olerA suport pentru drepturi de acces la lisiere; existA doar posibililalea de a marca un fi~ier ca read-onl y: orice ulitizalor poate sA schimbe acest drept; atanal

CAPITOlUl4. SISTEME DE

FI~IEAE

89

majoritatea sistemelor de fisiere In mediile Unix (inelusiv Mae OS X) au suport pentru drepturi de acces bazat pe utilizator/grup ~i , lolosind 0 extensie, pot Ii extinse cu liste de aeces; NTFS are un sistem Ioarte avansat de drepturi de acces, bazat pe liste de aeces (vez i sectiunea 10,6,1); penlru liecare entitale adAugatA in li sta unui anumil lisier pot Ii configurale mai mulle drepturi.

4.5.2 Clasificarea drepturilor de acces


Sistemele de li~iere din mediile Unix care au ea implementare standard drepturile de acces la nive l user/grup au la baza urmAtorul set de drepluri de aeces: eilire (read) - desehidere si cilire de lisiere; scriere ( write) - creare si scriere de
li~iere:

execu!le (execute) - execu!ie lisierelintrare In directoare. In aeeste sisteme de li~iere exisla 3 entitA!i pentru care poate Ii stabililA orice combina)ie a drepturil or delinite mai sus : utllizator (user) - posesoru l lisierului; grup (group ) - grupul de care aparline fisierul: al!i! (others) - utilizatorii care nu fac parle din grupul posesori.
I~ i erului

si nici nu sunt

4.5,3 Vizualizarea drepturilor de acces


Penlru a vedea dreplurile de acces penlru un anumit fisier este suficienl1!. utilizarea eomenzii 1 s cu parametrul -1. Spre exemplu, pentru a vedea drepturile de aeces asupra unui l isier, lransmilem ca parametru comenzii Is direct numele fisierului:
2 u b untu@ ubunt u : -$ l ~ - 1 f1 ~ i~c , txt -c"x r ----- 1 u b untu u~@c ~ 0 2007 - 0~ - 20 1 2:41
fi~i.or , txt

Orepturile de acces sunt dale de primele 10 caractere din iesirea comenzii Is : primul earaeler reprezint1!. Upul -
li~ier obi~nuit

li~ieru l u i'

d director
p . pipe

- b dispoziliv bloc c "dispozitiv caracler 1 " legatura

90

lNTRODUCERE iN SISTEME DE OPEAARE

urmlltoarele 3 caractere (r w>< ) reprezint1'i drepturile de aeces pentrtJ uti lizatorul ubuntu, care asle delin(\torul fi~ieru lu i ; sa observa eEl. utilizatorul are toate dreplurile {scriere/citirel execulie}; urmatoarele 3 carac\ere (r -- ) reprezinta drep\urile de aeces penlru ulilizalorii ca re lac parte din grupul users ; se observa eli esle prezen! dreptul de cilire dar lipsesc dreplurile de seriare 5i execulie;

urmatoarele 3 caraclere (---) reprezinta drepturi le de acces penlru utilizalorii care nu sunt ubunt u 5i niei nu lac parte din grupul use rs; aces! utilizatori nu au niciun drep\.
Exista doua moduri de reprezentare a drepturi lor:
In forma numerici : pentru liecare entitate exista 0 cifra in baza 8 ca re descrie drepturile, cate un bit pentru fiecare drept; in fo rma IIterala: drepturile sunt referite direct prin ini!iala lor. penlru fiecare tip de entitate. Astfel, penlru exemplul de mai sus, avem drepturile: Cw " c----- in forma listing: 1111000oo informabinara: 740 in lorma octala; u - rw" . g- r in lorma Irteraht Mai mul1e informa!ii des pre securitatea fisierelor acces se gasesc in secliunea 10.2.4.
~i

modul de schimbare a drepturilor de

4.6
4.6.1

Cautarea

fi~iereror

Comanda find

Comar.da fin d folose~te abordarea brute-Iorce pentru gasirea fi~ i e relor cautand in arborele de direcloare. Comar.da pune la dispozilie un set exlins de criteri i de ca utare, cum ar Ii numele fi~ i erului, ulilizator. grup, lip. permisiuni, dimensiune. dala, si allele. Exemple de criterii de cautare sunl prezentate in continuare specificand op!iunea corespunzatoare a comenzii fin d : - name - ca utare dupa numele fi~ierelor - perm - cautare dupa permisiunile fiSierelor - si ze - ca utare dupa dimensiunea
fi~ierelor

Comar.da urmatoare cauta toate fisierele care au numele stat. in mod recursiv in directorul /usr :
ub~ntu@ub u nt u; -S

find lusc - name stat

I uS r I s reI I i nu. - hea ders - 2 . 6 . 24 -1 9- qene riel i ncl udel con f i ql cpu I f reql stat
lu ~ r/bin/"t a t

CAPITOlUl4. SISTEME DE

FI~IEAE

91

Urmiltoarea comariClii cautil toate lisierele care au permisiunile 644 :


~

"

ubu n t u @ u b u nt u : -$ find Jusr - perm 64 4 J u sr Jloc~lJ inc1ude/gl .b - 2 . O/gl .b . h I u S r I loc ~ l/ i ncl ude / gl ib - 2 . 0 I gobje ct / g'ou r c e clo ~ ur e . h / UH /loca l / incl ude/glib - 2 . O/gob j ~ct/gty p e pl ug i n . h
(

... )

Pentru a cauta l isierele cu dimensiunea mai mare de 500 K8 se poate lolosi una dintre urmll.toarele comenzi :
, ,
J

u b untu @ u b u nt u : - $ find

Ju ~ r

-s .,e +500000

" 6
1

u b untu @ u b u nt u : - $ find Ju Sr -s i,e + 500 ~ l u s r /loc~ 1 Il ib ll ib gio - 2 . o. s o . 0 . 1800 . 4 I u s< / l oca 1 / lib / lib go b j~ ct -2 . o . so . 0 .1 8 00. 4 Ius< / l oca l / li b / libglib - 2 . 0 . 50 . 0 . aoo . 4
( ... )

4.6.2

Comanda locate

ComariCla locate foloseste 0 baza de date localii in care sunt iriClexate toate li~ierele. ComariCla l ocat .. este mai rapida decfll comariCla fi n d, dar pune la dispozitie un singur criler iu de cautare: numele li~ i erului. Un all dezavantaj este iaptul ca baza de date trebu ie reactualizatil periodic pentru a contine informatii des pre lisierele noi create in sislem. Actu alizarea se realizeaza cu ajutorul comenzii updilt edb. Comanda l ntoarce 0 lislil cu toate li~ i e rele ale cilrui nume contine ~ irul de caractere precizat ca argument. In exemplul urmiitor se cautilloate lisierele care conlin p wd :

u b untu @ u b u nt u : -$ locate pwd Ibin/pwd


/~ t c / . p w d . l oc ~

" 6

/5bi n / un i x _ch ~ p wd

l u s r /b in /pwd x /us r / inc 1ud@/pwd . h

1 I ... ]

Unele distribulii Linux lolosesc comanda slocate in locul comenzii locate. Avanlajul comenzi i sloca te asle acela ca nu permite alisarea lisierelor din direcloarele in ca re utilizalorul nu are drepluri de acces.

4.6.3

Comanda whereis

Aceastil comariClii poate Ii lolositii pentru a ciluta l ntrun set restrfms de localii din sistem , de exemplu directoarele cu li~iere binare, directoarele cu biblioteci sau directoarele cu pagini de manual. Comanda where is nu poate Ii lolositil pentru a ciiuta in direcloarele uti lizatorului. Comanda va ciiula toate lisierele care i ncep cu sirul . . de caraclere precizat ca argument De exemplu , pentru a localiza comanda ls folosim urmiitoarea comandil:

u b un t u @ u b u nt u : -$ wh@r@ i s 1 5 is : Ibin/l, /u " r/ " hareJ",~n/",~n1/ ls

. 1.q,

92

lNTRODU CERE iN SISTEME DE OPEAARE

ComarKIa va afisa ca lea caIre executabil dar si calea caIre pagina de manual a oomenzii

"
4.6.4 Comanda which
Folosind comanda whic h S9 poate obline calea caIre executabilele care pot Ii ru lale din linia de comarda. De exemplu, pentru a alia ca lea caIre comanda chmod S9 va lolosi comanda urmatoare:
ubuntu@ul>untu -$ which chmoa
2 /bin/chmod

In mod i mphc~ , ccmarrda whi ch returneazA dear prima potrivire gAsita, iar pentru a afisa lisla completa a pOlrivirilor S9 va lolosi op!iunea - a.

4.6.5

Comanda type

AceaSla comanda poate Ii /olosit1i pentru a determina modul de interpretare a unei comenzi, de exemplu comanda integrata in shell, comand1i externa sau alias.

Un exemplu de comandA integrata in shell eSle:


2 ubuntu@uountu,-$ typ e cd cd is ~ .he ll builtin

Pentru 0 comancla externa rezuttatu t comenzii type este calea catre executabil:
ubun tu @ u b unt u, -$ type cat
2 CH i . Ib in /CH

In cazul unui alias este afisata comanda echivalenta:


2

ubuntu@uou nt u ; -S typ e Is Is is alia sed to ' 15 --colo< '

4.7

Tipuri de sisteme de fi!iiiere

in limp au aparut mai mulle tipuri de sisteme de fis iere. in mediul opensource sau dezvoltat ~i inca se dezvolta cele mai multe dintre ele. Cateva dintre cele mai imporlante sisteme de fisiere utilizate in prezent sunt men!ionate in tabefuf 4.11 , impreuna cu sistemele de operare i n care se intiilnesc. Prin nativ se intelege ca suportul este olerit prin drivere ce insotesc sistemu l de operare (in cazul Linux inso!esc kernel-ul). Sistemele de fisiere se pot ciasifica si dupa locul uncle se gasesc dalele. Tabelul 4.12 prezinta succint aceasta clasificare.

CAPITOLUL 4. SISTEME DE

FI~IERE

93

TabeluI4.11: Sisteme

virtua~

4.7.1 Integ rita tea date lor


Un sistem de fi~iere trebu ie 511 asigure integritatea datelor inclusiv ~i in cazul unei eAderi (failure). Oe eele mai mu~e ori, aceastA functionalitate este implementatA prin jurnalizare. Jumalizatea este ac~vitatea prin care se realizeaz1l un jurnal cu toate modilieArile fiecare operatie electuate asupra unui sistem de l isiere. . . care se executii asupra sistemului de fisiere esle inlai scrisA in jurnaL Operatia poale presupune modilicAri in mai mulle locuri din sistemul de li~iere. Driverul sistemului de h~i ere execut1l la un anumrt in terval de timp operali il e din jurnal pentru a aClualiza starea discului. 0 opera!ie se slerge din jurnal doar dupA ce toate modilicarile asociate ei au lost executate. in aces! lei, in cazul apar~i ei unei caderi (intrerupere de curent elc.). se pot executa operaliile din jurnal care au rAmas neexecutate (operatiile incepute si care au lost intrerupte sunt inca. prezente in jurnal Si vor Ii reexecutate In inlregime).

4.7.2

Alegerea unui sistem de ti!;>iere

in momentul in care !rebuie ales un sistem de lisiere, eele mai utilizate criterii de seleclie sun\: disponibilitilteil- dacA se poate lolosi sistemul respectiv de l isiere in sistemul de ope rare ales (sau in mai multe sisleme de operare):

94

INTRODUCERE iN SISTEME DE OPERARE

gradul de siguranli - majoritalea sistemelor de jurnalizare:

fi~iere

existente in prezen! au

restriC1ii speciale date de modl.ll de organizare a datelor in sistemul de fisiera ; de exemplu, la FAT32 sa folosesc doar 32 bil; pentrl) a stoca dimensiunea unui fi~ier, dec; dimensiunea maxima a unui I~ ier esl e 4GB {mai pulin decal 0 imagine de DVO, lapt ce iI face nepractic pentru 0 parte din apHcaliile multimed ia}:
opllmlzari de perfotmanlii. reatizate spre exemplu in lunetie de lipul suporlului de stacale, in lunelie de dimensiunea fi~iere l or etc.

Tabelul4.13 realizeaz;!. 0 analiza sumIDa a caracteristicilor sistemelor de fisiere. Tabelul 4.13: Caracteristici ale 1 1 operate maxima fil?ier mai cunoscute

Linux I Mac OS X

i i i - int:l.lnit in mod special pe USB stick-uri, I~i\ drepturi de acces; Windows-ul limiteaza la creare dimansiunaa unai parlitii la 32GB, dar poate citi partrtii mai mari realizate l;i formatate cu aplicalii third-party lolosit pentru a asigura compatibililatea cu dispozilive sau sisteme mai vech i

Linux OS X

sislem de ;1

li~iere

penlru

mai unei istorii de dezvoltare toarte lungi; ext3 e compatibil cu versiunea anlerioara
,,~

mulle

as x

Lin:"'~~;:l;f"~C~':f:;,;-tcm""--l:p~,""~::~
de

Linux I Mac OS X

organizare inle'rna conceputa penlru ca datele sli fie citibile usor Iii i pe mediile , cu suporl alAt

atanal

CAPITOLUL 4. SISTEME DE

FI~IEAE

95
fi ~ iere

4.7.3

Adresarea intrun sistem de

Din punct de vedere l izic. li~ i erele ocupll pe dispozitivul de stoeare un spa!iu bine delinil. Utilizatorul nu lucreaza direct cu dispozilivul de stocare si nu poate adresa un fis ier dupa pozi!ia fizica a acestuia pe dispozitivu l de stocare. Sa introdus astlel adresarea fi~ierelor folos ind nume. 1 n lunctie . de tipul sistemu lui de lisiere, exista 0 serie de restrictii . asupra acestor nume. Majoritatea fis ierelor au ~i ceea ce se numeste "extensie". Aceasta extensie se regase~te dupa numele fi~ierelor si este utilizata pentru Ktentificarea tipului acestora (exemplu format nurne . ext . In majoritatea cazuri lor aceasta exlensie are 3 caractere. Sistemele de operare de tip Windows utilizeaza extensia pentru a asocia un tip de lisier cu 0 anumita aplicatie care poate deschide acel tip de fi~ier. in mediile Unix, extensia de obicei lipse~te. Idenlilicarea tipului l isiere lor se real izeaza in general pe baza conlinutului l isierelor. in Uni x, comanda utilizata penlru a descoperi tipul l i ~ i erelor este U.le:
ubun tu@ u b u ntu ; -S fi Ie Jbootlkerne126 . l mg Iboot/ ~ erne126 . !mg ; g. l p c ompresse d d ata , Mar 3 20 : 28 : 31 2001 , max compression from
Unl~ ,

last modifie d,

Sat

Numele l isiere lor poate Ii scris cu un anumit set de caractere. In prezent, majoritatea sistemelor de lisiere folosesc standardul Unicode (de obicei UTf"8 sau UTf-16) pentru codilicarea caracterelor. In tabelul 4.14 sunt prezentate cflteva sisteme de fi~iere ~i restrictiile de nume asociale lor. Dupa cum s-a men!ionat si la lnceputul acestui capitol, directoarele se utilizeazli pentru 0 mai buna organizare a l isierelor. intr-un sistem de li~ i ere modern, fi~ierele ~i directoarele se reglisesc lnlr-o slructura ierarh ica - sub lorma unui arbore. Acest arbore are un director parinte din care se poate ajunge in orice loe in sistemul de l isiere. Calea clitre un fisier este lormatli dintr-o lnsiru ire de directoare, separate de caractere speciale. in mediile Unix separatorul este caracterul I (s/ash). In mediile Windows , separatorul eSle caracterul \ (backs/ash).

4.8

Lucrul cu sistemele de fi~iere


fi~iere.

Aceasta secliune trateaza ac!iunile ce le mai cunoscute la nivelul unui sistem de Ac!iunile cele mai freevenle sunt: crearea unui sistem de
fi~iere: fi~ i ere: fi~iere.

monlarea unui sistem de repararea unui sistem de

Printre actiunile rare dar care pot prezenta interes trebuie mentionale: crearea unei imagini pentru un sistem de
~tergerea

l i~ie re:

unui sistem de

fi~ i ere

(din dilerite motive).

96

INTRODU CERE iN SISTEME DE OPERARE

TabeluI4.14:
do

ii

cale

caraelere cu
LFN'

(lume te fi~ierulu i ~i 3 caraolare eK\ensia; FAT32 a capatal

pentru nume lungi (LFN) pentru un lisler: FAT32 reline atal numele lung cal

suporl

caraclare

..

Ii folosit, mal pU!in caraClarele:


NU LL, ., / , \ , "

? , <, >, I,

{utilizale in general perltru , I

NULL numele

permis

ma~ima

standard, !iecare cu restrict iile


8 lui

a caii:
I

~ioo""'iitmi"""'"" numale

Pe lang.:\ aceste aeliuni. folosil"ld programe speciale, sa pot efectua si alte opera!ii asupra unui sistem de li~ i ere, precum:
redimensionarea unei parMii - duce implicit la 0 red imensionare a sistemului de lisiere (in cazul in care acest lucru nu sa intll.mpla, !rabuie reformatatll. partilia): convertirea unui sistem de fi~iere dintrun tip in altul; mularea unei parb!ii - de obicei nu are eleele asupra sislemului de lisiere aHat pe aceasta.

4.8.1 Crearea unui sistem de

fi~iere

Dupli cum sa mentionat anterior. majoritalea sistemelor de lisiere au un suport fizic . . asocial uncle se regasesc efeeliv datele. Suporlul unui sistem de fisiere se nume~te atanal

CAPITOLUL 4. SISTEME DE

FI~IEAE

97

partitie , 0 partitie poate avea un singur sistem de fisiere , Partitionarea a lost descrisii in secliunea 2.2.2. Sislemul de fi~iere esle plasal pe 0 partilie prin Iormalare. Formatarea esle procesul prin care pe partilie sunt sense Slructuri de date specifice sistemului de fi~iere. Aceste structuri sunt utilizale de driverul asociat sistemu lui de fi~iere pe ntru a identihca ~i uti liza datelor scrise pe parti!ie. intrun sistem Linux. !ormatarea se real izeazA prin intermediul utilitarului mkf s cu sintaxa:
root @ ubunt u :- f mk fs - t d i.po z it i v >
\ t e xt less {)t i p_. i . te ~d~ _ f i siere>

\ t e xtl e {)

Exemplu de utilizare:
r o ot@ ubunt u: -I
m~ ts

- t ext3 I d ev/s d a2

Comanda prezentata anterior !ormateaz<'i partitia a 2a de pe primu l disc utilizflnd sislemul de !isiere e_t3, Pentru fiecare tip de sislem de !i~iere exista un program penlru formatare. Aceste programe au numele de forma mkfs. <fstypa> $i pot fi apelate direct pentrtl a formata 0 parti!ie. Comanda echivalentA exemplului anterior este urmAtoarea:
root @ u b unt u : -I mk fs . e x t3 / d e v /s d a2

Daca un seclor este defect, se va marca si nu va Ii fofosit pentru stocarea datelor. Urmatoarea comandii va determina verificarea sectoarelor si formatarea partitiei I dev I sda2 :
r oot @ u b unt u : -I mk rs . extJ -c
Idev/s d ~2

o ope ratie suplimentara Iormatarii este verificarea sectoarelor din cadrul partitiei.

Pentru a crea un siSlem de fis iere MS DOS pe 0 anumitA partitie sa poate folos i comanda mkdosfs care este un !rontend pentru comenzile mkfs . vfat ~i mk f s . msdos. Cu optiunea - F se poale specifiCa tipuf tabefei FAT care poate sa fie pe 12, 16 sau 32 biti. Urmatoarea comanda va crea un sistem de lisiere FAT 32 pe partilia specilicata:
r oo t@ ubunt u: -I
m~ dos!s

-f

32 I d ev/s d a2

4.8.2

Montarea unui sistem de fi!iliere

Sistemefe de operare ofera aeces uniform la datefe din toate tipu rife de sisteme de lisiere prin intermediul ieramiei de fisiere. Pentru ca un sistem de fisiere sa. fie viz ibif sistemu lui de ope rare ef trebuie TnUIi sa lie montat {mount} intrun director, numit director de montare (mount point) . Operalia se numeste montarea unui sistem de li~iere . Aceasta operare:
opera~e

este executata de cele mai multe ori in mod automat de sistemul de

in Windows, sistemele de lisiere primesc automat litere dilente; pot fi ulterior modificate. cu anumite restriclii. folosind Co ntr o l Pa nel > Admin i strat i ve Tools > Comput e r Management > St orage > Dis k Management ;

98

lNTRODU CERE iN SISTEME DE OPEAARE


In Linux, sisteme le de fisiera sunt monlalS atflt in locuri bine definite (definite de utilizator la ins\alare) cal ~i in locuri special create {de exemp lu !media!<nume>/ } penlru a gflzdui sistemale de fisiera de pe medii externe, precum USB stick-uri, CDIDVD-ROM-uri etc.

in Mac OS X, sistemale de fisiera sunt montate automat in /Vol urnes I <flume> .

Mo nlare e manua lii


Pentru a monta un sistem de fisiere , 1nlr-un madiu Linux S9 utilizeazi'i comanda mount ,

eu sinlaxa:
root@ubuntu : -I mount - t
<dir~cto r ~ontar ~ ' <tlp_ ~ lstern...fHi " r e >

[ - 0 <opt1un.

<dispOz i tiv>

in exemplul de mai jos sa loloseste mount pentru a menta partitia a 2-a de pe primul disc. eu sislemul de fi~iere ext3, in directorul fmnt/da t a (directorul /mn t / el ata trebuie s;\ existe anterior executiei comer'lz ii).
root@ubuntu:-I mount - t ext3
laev/.a~2 Imnt/a~ta

Montarea unui sistem de fi!;iere doar cu drepturi de citire (read-only) se poate rea liza prin optiunea -r:
root@ubunt u :-I mount -r -t ext3
Idev/"d~2

Imnt/data

Alte exemple de utilizare a op~unilor de montare se gas esc in sectiur'lea 4.10.

Mo ntarea automata lntrun sistem Unux, fisierul letc/ fstab descrie sistemele de fi~iere care vor fi montale automat la pornirea sistemului de operare. Fis ierul coniine cAle 0 lir'lie penlru fiecare sislem de fi~ i ere. Comenlariile incep cu I. Sintaxa unei linii esle:
<di ~ pozit i v>
p~s>

<d i r " cto"

mont~"e>

<tip si,te", fi,i,,",,> <opt iuni> <du mp> <

campuri le au urmatoarele semn ifiCatii : <eli spozi t i v> - fi~ier care indiCa locul (de obice i un d ispozitiv) unde se gase~le sistemul de fis iere; <el i rector montare> - director existent in structura de directoare unde se va putea aceesa con!inutul sislemului de fi~iere monlat: <tip sistem fi~iere> -tipulsistemuluidefi~ i ere ; <op t;iuni> - oPliuni pentru montarea SiSlemului de fis iere - difer;\ de la un sistem de fisiere la altul: <dump> - indica daca sa se realizeze automat backup al parti!iei utilizand programul dump; opt iunea este ir'l prezent rar folosita, preierandu -se alte metode de backup: acest parametru are in mod ob isnuit are valoarea 0:

CAPITOlUl4. SISTEME DE

FI~IEAE

99

< p a s > - indica ordinea in care fsck va verifica sistemele de fisiere (0" flick nu

va veriliea sistemul de lisiere). Un exemplu de linie din I et c l f st ab este:


! d ev!sd~l

rei serf' defaults 0 0


li~iere

Unia deserie montarea primei parti!ii de pe primul disc in I . utilizand sistemul de ReiserFS eu op!iuni implicite, lara backup si lara verilicari. Dupa efectuarea unei modificari in letel fsta b. eomanda
roo t @ u b unt u : - I mount - a

va monta toate parti!iile men!ionate. Fara niciun argument, mount dat.


~

afi~eaza

lista sistemelor de fisiere montale la un moment

ubu n tu@ubu n tu : -$ mount !dev/" d ~l on / typ e re i serf. I r .. ) 3 !'lO ne o n Iproc typ e p roc l u ) !'lO n e o n Isys t ype s y s f s (rl<) u ~ bf5 o n / pr o c / b u~/u ~ b t ype u ~ bh I r w) ~ !'lO ne o n I d e v / p " t ype devpt s ( r ,, ) 1 non ~ o n / d ev/ ,hm typ e t mph ( rw) 3 t mpfs o n /t mp typ e t mp h ( e ,,)

Se observa ca in lista nu apar doar sistemefe de fi~ i ere montate manual sau ce le monlate automal (deserise in /etc/fsta b). Exista si ca re sunt . sisteme de fisiere . create ~i montate automat de sistem in ierarhia de lisiere pentru a oleri informatii despre starea sistemufui (precum I proc - vezi sectiunea 5. I .3). Usta sistemefor de fisiere montale fa un moment dat se poate regasi de asemenea fisierul / etc /m t ab.
~i

in

Opera!ia inversa monlarii unui sistem de f i ~ i ere se nume~te demontare. Pentru a rea liza demontarea se utilizeaza comanda UII1ount , cu doua sintaxe posibile:

,
J

root@ u b unt u : -I umount <d i sp o .'tiv' roo t @ u b unt u : -I u mount <d 1Ce ct 0 r _ d e-",on t a r e >

Folosincf mount si g-rep se aliA tipul parti!iei I dev I sda2 :


>
ro o t @ u b unt u : -I mount I 9rep ! d ev/ . d a2 I d ev/.d~ 2 o n / ho me typ e reiser f s Ir w)

Pentru a demonta acest sistem de fisiere se poate utiliza oricare din urmatoarele doua comenzi:

,
,

ro ot @ ubunt u:- I u mount Idev/sda2 root@ u b unt u: -I ,-,mount /h ome

100

INTRODUCERE iN SISTEME DE OPEAARE

4.8.3

Repararea unui sistem de

fi~iere

Dup.:i cum sa men!ionat ~i la inceputul acestui capito l, siste mele de li~ie re moderne au suport pentru jurnalizare. Acest suport este util in mod deosebit atunci cAnd se produce o cadere a sistemul ui, precum atunci cand se intrerupe aJimentarea cu energie electric.:i. La repornire, sistemu l de operare efectueaz.:i 0 verificare a integrita!ii sislemelor de li$iere. La aceasta. veriliCare, 5e executa comanda fack penlru liecare sistem de li~iere. Aceasta comanda este particularizat.:i pentru liecare sistem de Ii~iere cu numele f ac k. <tip_siatem_ do_ fi a iero> , precum comanda mkfs . Pentru a verilica un sistem de lisiere comanda f ac k se ape leaza cu urmatoarea sintaxa:
root@ u b untu : - I f"c k - t
< t ip_ "l" t e ~ fi"ie r e >

<di"po zitiv>

Dac.:i se doreste . veril icarea celei dea doua partiti . i de pe primul disc, cunoscand use ca ar trebui sa se gi:!seasca un sistem de li~iere exl3 pe aceasla, se ulilizeaz.:i comanda:
r o ot@ubu nt u: -' fsc k - t ext3 I d ev!s d a2

i n lunc!ie de op!iunile ca re se lolosesc la executia come nzii, fac k poate repara erori le pe care Ie l nt<'!lneste.

4.8.4

Crearea unei imagini pentru un sistem de

fi~iere

Imaginea unui sistem de li~iere reprezinta copia lidela intr-un lisier a liecArui octet care descrie sislemul de lisiere (inclusiv datele din acesta). Aceast.:i imagine poate Ii ulterior copiata. pe 0 alii:! parti~e sau arhivatA pentru 0 eventuala rec upera re a date lor daci:i partilia surs.:i este d istrusa accidental. 0 utilizare Ioarte Ireeventa a imaginilor se inla.ineste in copierea con!in utul CDIDVD-u ri lor pe alte medii de stocare. Pentru a realiza 0 imagine a unui sistem de l isiere se utilizeaza comanda dd (vezi sectiu nea 7.6.5. in exemplul de mai jos se copiaza conl inutul primei parti!ii (sistemul de fi~iere) de pe discul al 2-lea in f i~ieru l Imn t I d a t a/par t itiel _ img .
roo t @ u b unt u: -' dd if- !devlsd bl o f - ! mnt! d ata! p u t i t iel . img

Aceasta comandA este independenla de 5istemu l de li~iere caruia i se lace imaginea. Lucreaz.:i direct la n!velul octetilor ca re alc.:ituiesc sistemul de li~iere si pastreaza inlreaga struclura interna a acestuia. In cazu l utilizArii come nzii pe sisteme de lisiere loarte mari, se va observa ca timpul de execulie este destul de mare. Motivul pentru care se intampla acest lucru este laptul ca, in mod implicit, comanda dd lucreaza cu blocuri de date de 512 ocleli, ceea ce inseamna ca pentru lieeare 512 octeti comanda executa 0 citire si 0 scriere. in prezent, buffer-ele disc uri lor au valori dimensiuni mult mai mari ~i pot lucra eu ~ocuri mai mari de 512 octeti. Pentru a modifica dimensiunea blocului citiUseris de dd se utilizeaza parametrul bs - <d imen si une > , unde <d imensiune > peate sa lie xKB. xMB etc. $p re exemplu:
roo t @ u b untu : - I dd
b ~ - 2 MB

1 f - I d ev / " d bl of- ! mnt! data/pac t 1 t ie 1 . imq

CAPITOLUL 4. SISTEME DE

FI~IEAE

101

va executa aceeasi operatie dar citine! blocuri de 2MB. Exista si un dezavantaj al ulilizarii unor blocuri de dale mai marl. in anumile cond itii, nu se va pulea face copierea unui bloc Inlreg, din diferite motive precum un defect hardware al suprafelei magnetice, sau ultimul bloc nu are dimensiunea de 2MB (deoarece dimensiunea talala nu eSle multiplu de 2MB). De cele mai multe ori se doreste recuperarea cAt mai multor date de pe disc, de preferat toate. i n aceste conditii Irebuie delerminat daca 0 viteza mai mare (dimensiune mai mare a blocu lui) esle a decizie acceptabila ~Iiind ca se pot pierde date mai multe la cil ire. Pentru recuperarea datelor de pe discuri cu delecle hardware. se poate lolosi programul ddrescue' . ddrescue eSle 0 aplicatie asemanaloare dd dar care este specializata in recuperarea cAt mai multor date de pe disc uri.

4.B.5 " $tergerea " unui sistem de

fi~iere

Exista doua tipuri de stergere a unui sistem de fisiere:


~tergerea ~tergerea

logica fizica

$tergerea logica se obline prin stergerea parti!iei corespunzaloare sislemului de fisiere din tabela de partilii (descris in sectiunea 2.2.2). Din moment ce nu mai exista partilie care sa incapsuleze sistemul de fisiere , acesta se poate considera sters. Practic, datele lui incA mai rez ida pe disc, panAla 0 suprascriere cu alte date. Faptul ca dalele nu sunl sterse lizic de pe disc a pus si inca pune probleme oame niior care doresc ca datele odala ce sunt sterse sa rama na ~terse penlru elernitate. Din acesl motiv, pentru a elimina orice posibilitate de a recupera un sistem de fisiere sau datele dintrun sistem de fisiere, se utilizeaza ~tergerea fizica . $tergerea fizica este realizata de tapt prin suprascrierea blocuri lor de pe suporlul tiz ic (unde era inainle sistemul de fisiere) cu dale aleatoare sau cu zero uri. Pentru suprascriere se utilizeaza cel mai rapid 101 programul dd prezenlat anterior dar, in loc ca partitia sa fie folos ita ca sursa, ea este fo losita ca destinatie pentru un set de date aleatoare (sau zerouri). Pentru a suprascrie cu zerouri 0 parli!ie, se poale lolosi comanda:
roo t @ u b unt u: - I dd if - /dev/zero of - / d ev/sda l

Pentru a suprascrie 0 partitie . cu date alealoare, se foloseste . comanda:


root @ ubu nt u: -I dd if - /dev/unndom
of - /dev/"d ~ l

4.8.6

Monitorizarea utiliziirii discului

o problema ca re nu poate fi neglijata este umplerea hardiskului. Pentru a evila acest lucru, se lolosesc comenzi care sa afiseze cat spa!iu este consumal, de exemplu comenzi le df si duo
, http;liwwN.g nu.o,g/soflwareJOdrescue/dd ' n cue.htm l

102

lNTRODU CERE iN SISTEME DE OPEAARE

ComarKIa d f oterll inlormatii despre dimensiunea totalii, spatiul utilizat, spatiul tiber si procentul de folosire at fiec1\rei partilii.
ubuntu@ubuntu , -$ af
, ' FihsysHm iaev/.cta l l K-bloch U, @d 56S9ia4 4449900 15361340 101,4596
Av~ il abl ..

140~664

laev!.aa2

U,,,\ \ Mounted on 76\ \ I 5186744 61\\ /hom..

Atunei cc'lr1d procentul de 1010sir9 depasesle 60% S9 recomandA cu ra!area partitiei.


Se poate lolosi optiunea - a pentru a include si pseudo sistemele de fisiere care sun! afisate cu dimensiunea 0, de exemplu /proc , I sys:

UbUfit u@ubuntu,'$

f l lesystem
!de"fsd~l

"

l K - b l oc~s

fdev/sd .. 2 Iproc
l ~ y5

5859784 15361340 0 0

used Ava ilable Use\\ Mounted on 4449900 1409aa4 76\' 5186144 67\ , thorne 10174596 0 0 Ip<oc 0 0 l ~ y5

Comarxla du cauta in mod recursiv in directoarele specificate pentru a af isa cal spa!iu consuma liecare director. In exemplul de mai jos se aliseazA spatiul ocupat de directorul

fe t e/ne t work :
ubuntu @ ubun tu:-$ du letc/net~ork , 8 letc/network/it - down . d , 12 /e t c/ne t wor~/lf - post - down d 12 letc/networ~/i f- pre - up . d ,24 /etc/ne t wor~/It - up . d "64 /etc/net wor~

Pentru
> 8 . OK
" , "

afi~area

dimensiunii in formal mai

u~or

de c~il se poale lolosi optiunea - h :

ubuntu @ ubu ntu : -$ du - h fete/ne t wor k IHc/ne twork! if - down . d / et c/ n"twoek / if-po 5t -down. d 12K / H c! n .. twork I i f - pre - up. d 12K 24K / "t c/ n"t woek / if-up . d / .. tc/n .. twoek 64K

Pentru a opri cautarea recurs iva si a af isa doar spa~ul ocupat de directorul transm is ca argume nl se folose~te op!iunea - 5 :
, ubuntu @ ubuntu : -$ du - h -~ /e t c/netwo rk 64K / " tc/n"twoek

4.9
4.9.1

Tendin,e in sistemele de fi!1Oiere


Sisteme de fi!iliere in userspace

Sislemele de lisiere pol Ii citilelscrise de sisteme le de ope rare doar daca exista drivere care sa Ie implemente2e. Implementarea unui driver pentru un sistem de lisiere nu este locmai usoara. Acesla este si principalul moliv pentru care exisla deslul de pu!ine sisteme de fisiere care sa implementeze un sel de funClionalih'l\i acceptabil. Majorilalea sistemelor de fisiere prezenle in siSlemele de ope rare au multi ani de dezvoltare.

CAPITOLUL 4_ SISTEME DE

FI~IERE

103

Dup~ cum s-a prezer"ltat anterior, exista situatii in care s-a putut loarte usor abslractiza aecesul la 0 serie de dale prin intermediul fis ierelor (precum informalii despre sistem, i n I proc) . Practic, aproape once informa!ie poate Ii prezenlata sub lorma de li\lier. Singura prob~maa care a Impiedicat mu~ limp aceasta trecere caire reprezentarea de dale lolosind fisiere a lost dificultatea scrierii unui driver adeeval.

in ultima perioada a luat ampklare utilizarea de drivere pefltru dilerite sisteme de lisiere in user-space, spre deosebira de driverala clas ica care functioneaza i n karnelspaca , Driverele din userspace se bazeaza pe faptul ca exista un driver in kernel care se ocupa de translatarea apelurilor la date Intre kernel \li sistemul de f~i ere din userspace. Acest suport pentru sisteme de fisiere i n userspace este prezent in kernelul Linux cu numele FUSE' (Filesystem In USErspace) iar i n Mac OS X cu numele MacFUSE'. Tabelu l 4.1 5 prezinta avanlajele
~i

dezavantajele sistemelor de fi\liere i n user-space:

TabeluI 4.15: Avantaj eldezavantaje sisteme de fisiere in user-space Oelavantaje Avantaje suport pentru scrierea ae dri ver-e in mai lente deeM sistemele de fis iere numeroase hmbaje de programare; normale; au 0 Ilexibililate mai micA in delvoltare mult mai rapida datorita alll.! ceea ce prive\lte nivelul de acces la limbajelor de nivel inal1 c;'\t si datorita hardware, comparativ cu un driver da posibilita!ii de testare mult mai rapida kerne l (de obicei nu este 0 limitare (+ debugging); nu blocheaza sistemul loarte importanta, dal fiind scopu l in cazul unei proaste function;'\ri; sistemalor de lisiere de acest tip) compatibililate a implementarilor intra linux \li Mac OS X

Prinlre cele mai folosite sisteme de

fi~ iere

in lISerspace se numara:

NTFS-3G - sistam da fisiere care olera suport read/write pentru NTFS; sshls - sistem de f i~iere care olera aeces la fisierale de pe aM intermediul SSH ca si cum ar fi parte din sistemul de fisiere local;
ma~ in ~

prin

EncFS - Encrypted Fi~system - sislam de fisiera cara cripleazA automat fisiara le din directorul pe care 11 foloseste ca suport; AVFS - Anti-Virus Filesystem - sistem de fisiere care realizeaza scanarea pentru viru si i n momentulin care se realizeaza un aeces la fisiere: este i m~ementat ca sistem de fisiere intermediar pentru accesul protejal la alt sistem de l isiere. Fiecare dintre aceste sisteme de l isiere se monteaza in tr-un mod diferit, datorila modului in cara au losl g;,\ndita s~ lucraza cu datele: unala au nevoie de un numa de utilizator si o parola, altele au nBl/oie de calea catre un all sistem de fi\liere etc. Mai mulle informa!ii se pot gasi pe paginile web ale liecArui proiect.
, http ://fuse,,oufCofor!l'' .net! ' http ;llcOO . 1I"09 Ie ,com/plm .cru. et

C JPYnghted matanal

104

INTRODU CERE iN SISTEME DE OPERARE

4.9.2

ZFS, ext4, btrfs

ZFS (Zettabyte File System) este un sistem de fi~iare pe 128 de biti si logical volume manager care prezinta mulle facilitali avansate cum ar Ii clone copyonwrite, snapshot-uri, dynamic stripping, verificare continua a integritatii datelor, backup ~ i reslaurare rapida, compresie incorporall\. scalabilrtate. ZFS a 1051 dezvoltat de Sun Microsystems ca soltware open-source ~i este sub licen!a CCOl. ext4 este un sislem de li~iere jurnalizat dezVQltat ca imbunata!ire a lui ext3. ext4 aduce nou suport pentru sisleme de fisiere foarle mari {pflna la 1 exabyte _ 1024 petabyles}, extents (posibilitatea de a mapa blocuri mari contig ue pentru un singur lisier), compatibilitate inapoilinainte. Compatibilitatea inapoi este data de faptul ca un sistem exl3 poate Ii montat ca un sislem ext4. Compatibilitalea inainte esle posibila deoarece un sistem ext4 poale Ii monlal ca un sislem ext3. ext4 a lost inclus in kernelul linux incepand cu versiunea 2.6.19 dar la momentul serierii acestei carli el este marcat ca fiind in dezVQltare. btrfs (Better File System) este un sistem de lisiere de tipul copy-on-write dezvoltat pentru linux. La lei ca ~i e~t4, btrfs contine suport pentru extents. 0 caracteristica principali'! a acestui sistem de /isiare este posibilitatea efectui'lrii unor operatii critice in timpul lunctionarii , de exempllJ defragmentarea, modilicarea dimensiunii parti)iei si verilicarea consisten\ei. btrfs prezinta multe alte caraclerislici prinlre care electuarea de snapshoturi 5i de backup-uri incrementa Ie. Initial dezVQltal de catfe Oracle, btrls este licentiat GPl.

4.10 Studii de caz


4.10.1 Comenzi pentru lucrul cu
fi~iere

in Windows

Tabelul 4.16 prezinta ed1ivalenta comenzi lor de baza Windows si Linu x penlru prelucrarea I~ierelor.

4.10.2

Utilizarea in siguranta a comenzilor pe

fi~iere

Exisla 0 serie de optiuni pentfu comenzile op, mv si rm care lac utilizarea aceslora sa fie mult mai siguri'! din punct de vedere al pierderii datelor in mod accidental. Fiecare comanda are printre op!iuni -i, 0 op!iune care determina comanda sa ceara 0 conlirmare pentru fiecare li~ier sters/suprascris. Pantru a anula efectul aceS1IJi parametru paale Ii lolosit parametrul - f . Fiecare comanda reclJnoaste OP!iunea - v , OP!iune care determina af i ~area lisierelor procesale fa momentul respectiv. Aceasta optiune poate reprezenta 0 metoda buna pentru a vizual iza ce anume se i ntAmpla in spatele comenzii. mai ales daca se executa comanda penlru un set mare de lisiere. Aceste doua optiuni (- i v ) pol Ii for1ate odata cu toale executiil e real izate de utilizalor pentru aceste comenzi daca se realizeaza aliasuri. Alias-urile sunt descrise de obicei atanal

CAPITOlUl4. SISTEME DE

FI~IEAE

105

."'.
"""

TabeluI4.16: Comenzi pentru lucrul cu fisiere in Windows Comanda lInux Comanda Descrlers Windows comanda comanda afiseaza informalii des pre comanda --help od od schimba directorul curenl p.d chdir afi~eaza directorul curenl ~Ierge ecranul consolei cure nte clear 01. copiaza un f~ier op copy d.l ~Ierge un f i ~ier afi~eaza conlinutul direclorului curent 10 dir edileaza un fi ~ i er lexi vim edit inchide shellul curent exit exit compar1'i doua fi~ i e re si afi~eaza dlferentele ditt to intre ele find find caut1'i fi~iere formateaz1'i un disc format (mke2fsJ free afiseaza informatli despre memoria hbera si cea ocupat1'i creeaza un nou director rnkd1r mkd1r .v move muta un fisier .v redenumeste un fi~ i er t ime afi~aza ora sistemului

"

.0.
0,.

intrun lisier care eSle incarcal la pornirea shellului (precum -I .bashrc) (vez i sectiunea 12.10) :
~li ~s

,
J

~li~5 ali~5

cp- " cp mv - "mv

- iv - iv rm_"rm -i v
~i

Astlel, la execulia oric1'irei dintre aceste comenzi, automat se vcr lua in co nsiderare aceste op!iuni.

4.10.3

Montarea unui sistem de fisiere FAT32 astfel incat tOli utilizatorii sa aiba drept de scriere pe el

Pentru a realiza acest lucru se utilizeaza op!iunile de montare a sistemelor de fisierelor. Pentru a forla la montare drepturi le Ii~ierelor se utilizeaza ma~ti {mask}. Masca esle 0 insiruire de biti care daca sunt 1 semnifica un drept care lipsesle. Exista mai multe lipuri de masti: _ umas k - masc1'i aplicala tuturor fi~iere l or noi (vezi secliunea 10.2.4); f mask - masca aplicala luturor fisiere lor; _ dmas k - masc1'i aplicala tuturor direcloarelor;

106

lNTRODUCERE iN SISTEME DE OPEAARE

folos ind acesta masti sa definesc optiuni pentru montarea unei partitii FAT32 in felul urmator:
roo t @ u b u nt u: -f mount - t vh t - 0 drnas x - OOO , fma sk- ll l
Idevfs d~2 Imn t / m ~ d i a

Paramelrul - 0 dmas k - OOQ , fmas k - l l l specrtiCa faptul ca pentru toti utilizatorii

fisiere le normale trabu ie s1l apar!i eu drepturi readlwrite iar directoarele eu toate drepturile. Trebuie mantiona! ell pe 0 partitie FAT32 nu ar Irebui sa sa g1'iseasc1'i aplicatii/script-uri ce pot Ii executate din Unux. Pentru a preveni aceasl1'i silualie. tuturor fisiere lor Ie aSIa indepartat dreptul de executie, prin masca 11 1. Comarx:la de mai sus sa poate trans/orma foarte usar intrQ linie in (e tc/ f stab :
/<lev/scta2
I m ~tlmed(a

vht

deh u l t" , <lm a" ~ - OOO . f",as ~ - lll

"

Sa pastrat opliunea defaults pentru ca aceasta activeaza alte op!iuni uti le la montarea automat<'l.,

4.10.4

Montarea unui sislem de fi~iere FAT32 astfel incal ulilizatorii dintr-un anumit grup sa aiba drept de scriere pe acesta

Exisla situ alii ctlnd se do re~te ca doar un grup de utilizatori sa aiba acces la 0 parti!ie. 1 n aceste conditii, posesorul fisiere lor trebuie modificat in r oot iar grupul in grupul doril. Grupul trebuie sa aiba toate drepturile. 1n primul rand trebuie determinat identiticatorul grupului (gid, group id). care se doreste a avea drepturi asupra fi~iere lor_ Cunoscanduse numele grupului, eomanda urmatoare va afi~a identificatorul grupului,

ubu ntu @ ubuntu:-$ cat /etc/group I gr e p nume grupn umegrup ox ' IOO '

Comanda filtreaza liniile din letc/group si ali~eaza pe ecran doar liniile care incep cu numele grupului doril. Numarul ce se gaseste intre caracterele : este identificatorul grupului, Comanda care monteaza un sis tern de este urmatoarea:
fi~ i e re

FAT32 eu restric!iile men!ionate mai sus

root@ubuntu:-' mo unt - t v[at - 0 amas x - 007 , fmasx - 117 , gid-100 , uid- O / d ev/ sda2 /mnt/media

Se observA ca, spre deosebire de cazul anterior. au mai lost introduse douA op!i uni: g i d - l 0 0 - idenliticatorul grupului care va avea dreptu ri asupra fisierelor; uid - O - idenlificatorulutilizatorului; utilizatorul root are uid - O. MAstile au lost schimbale pentru a nu permite niciun fel de drept altar ulilizatori in afara grupului ~i utilizatorului root {au 7 pe ultima pozi)ie).

4.10.5

Sistem de

fi~iere

intr-un

fi~ier

Dupi'l cum sa prezentat si in subcapitolele anterioare, in Linux se poate accesa (aproape) lot printrun fisier. 1n particular, liecare dispozitiv are asociat un fi~ier. Spre

CAPITOLUL 4. SISTEME DE

FI~IEAE

107

exemplu, prima partitie de pe primul HOD are asociat (de obicei) lisierul I dev I sdal. In mod similar cu utilizarea li~ i erului Idev/sda l , orice alt fi~ i er poale Ii Iolosit ca suporl pentru un sistem de li~iere. Dou1!. dinlre motivele cele mai lolosile pentru a realiza acest lucru sunt: experimentarea unor noi sisleme de li~iere , lara a repart iliona discul: incapsularea datelor in1run sislem de li~iere (eventual cripta1 ). in tabe lul 4, 17 este prezentat modul in care se poate real iza un sistem de li~ i ere stocat in1run lisier. Sunt prezenta1e comenz ile at," pentru sistemul de lisiere allat intro parti1ie cat ~i pentru sistemul de fi~iere allat Inlrun lisier. TabeluI 4.17: Sisteme de fisiere peste partitii sau peste lisiere Sistem de fI~lete Acliune inlr o partitie Intrun li~ier alocare partitioneaza di5cul: oct if - /dev/~ero of - ~/date spaliu obline partilia /dev/sdal bs - l MB cou nt - 20 se creaza astlel un lisier eu 20 btocuri, liecare 1MB, 5e ob!ine echivalentul unei parti!ii d, 20MB Iormalare I sbin/mk f s vfat /s bi n /mkfs v f at -/ da te Idev/sdal veriliCare file -/da t e montara mount vfa t moun t vi at - 0 loop Idev/sdal di r l Ictate di rl demontare umoun t di r l umount dirl

"

"

-,

-,

Op~unea - 0 loop specifiC1!. sistemului de operare ca partilia nu se dispoziti v liziC ci Inlrun lisier.

gase~te

pe un

4.10.6

n1l5-39

nlts3g' eSle proiectul care olera suport read write panlru partili i NTFS sub Lin ux. Penlru instalarea ntfs3g se loloseste comanda:
Ioo t @ u b unt u: -f apt - g@t
in ~ t all

ntf, - 3g

Pentru a identiliCa par@a NTFS se poate utiliza comanda:


root@ubuntu : -I
rdls~

- 1 I grep NTrs

care

al i ~eaza

doar liniile care contin NTFS din ie~irea come nzii f d isk - 1,

Penlru a monla sislemul de lisiere in mod automat, In I etcl f stab se adauga 0 linie de lorma:
<d l spotitiv> <director montare> ntfa - 3g de fa ults , loc al e - en_ US .u tf8 0 0

, http;l/www. ntf. 3g.o.gi

108

lNTRODU CERE iN SISTEME DE OPEAARE

Cuv inle cheie

sistem de
montara

fi~iere

arhivare

dezamivare

,,,"

damontare

lisier director jurnalizare

backup

descriptor de lisier
redi rectare

drept de aeces

cale absoluta, cale rataliva ierarhie


copiere, mutare.
~tergere.

Is , pwd, cd

cp, my, rm

redenumire mkdir, rmdir, touch

iOlrebiirl
1. Sistemele de fisiere din prezan! ole ra un grad mai mare de siguran\<'i impotriva
eMer itor de lensiune prin implemenlarea:

o drepturilor de acces la nivel de ulilizator ~i grup o drepturilor de aeces prin lisle de acces o suportului pentru legaturi hard
o suportului pentru jurnalizare 2. Care aSIa fisieru l lolosit pentru montarea automatii a unui sislem de lisiere in
Li nux?

o o o

/etc/ r esol v . con f /etc/fsck / mnt /hda5

o /e t c/fs t ab

3. Un fi~ier are drepl1.Jrile 653. Ulilizatorul ce deline fi~ieru l ruleaza. comanda:


c hmod a - x , u+w , g - r , o+r

Care sunt noile drepturi ale


0606 0762

f i~ierulu i ?

0534

451

CAPITOlUl4. SISTEME DE

FI~IEAE

109

4. Care din urmAtoarele comenzi NU poate Ii aplicatil asupra unui director?

fil ..

o o o o o
o o

touch
rm - r

cat

5. Care din urmAtoarele NU este 0 intrare va li dA1n sistemul de fi~iere?


fi~ier

executabil

director al dl.rui nume 1ncepe cu . legilturil simbolicil cAire /bin interlata de retea de looback

6. Care din urmiltoarele sisteme de f~ i ere este un sislem nativ Unux?

o o o o o o o
o

HPF S
FAT32 EX T3
UF S

7. Un utili zator conligureazil un fisier cu drepturile 755. Ce utilizator are dreptul de


execu!ie pe root ulilizatorul care de!ine li~ieru l niciun utilizator toti utilizatorii
li~ier?

6. Ce reprezintillitera v din comanda de mai iOs?


ubuntu8ubuntu : -S
t&~

c<vf

~ . tg<

dirl

o o o
o o

crearea unei am ive dezarhivarea unei arhive crearea unei am ive GZIP af isarea de mesaje despre arhivare

9. Care comanda esle lolosita pentru montarea unui sislem de lisiere in Unux? mount umounl mountfs fsck

o o o

110

INTRODU CERE iN SISTEME DE OPERARE

10. Pantru a putaa utiliza un sistem da lisiara pa 0 partitia dat<'i, prima actiuna absolut necesara care trebu ie executata este:

o o o o

stergerea sistemului de li~iere existent anterior montarea sistemului de fi~iere de pe partitia respectiv<'i formatarea parti!iei cu sistemul de lisiere dorrt schimbaraa drapturilorda acces pentru directorul in care asta montata partitia

C JPYnghted matanal

Capitolul5

Procese
Us a wel/lmown fact !hat computing deviC6s SI.1ch as the abacus were invented thousands of years ago. 8ul it's not well known that the first USB of a common computer protocol occurred in the Old Tes/amen/. This, of course, was when Moses aborted the Egyptians' process with a
control-sea

Tom Galloway

Ce S8 hwala din acest capitol?


DBfini~a I)nui prOCBS; d ifare nla intre un program si un proces

No\iunea de multitasking leramia de procese jnlr-un sislem de operare Comenzj de vizualizare a proceselor (ps, pSlree, top) Daemoni: rularea proceselor in background/foreground NOliunea de semnal; adminislrarea proceselor prin intermediul samnalalor Comunicarea intre procese: operatorul l (pipe) de comunicare intre procese
Adm inislrarea proceselorlservici ilor in Windows

5.1

No,iuni introductive

in lumea sislemelor de ope rare Unix ($i nu numai) exislA dow''j concepte fundamentale: fj~lerul ~i procesul. Fi ~ ierul esle lolosil penlru a abslractiza informatia ~i modul de slocare si utilizare a acesteia In sislemul de ope rare . Pe de altA parle, procesul este lolosil pentru a abstractiza executarea sarc inilor sistemului de ope rare.

'"

112

INTRODUCERE iN SISTEME DE OPEAARE

5.1.1

Ce este un proces?

in defini!ia sa cea mai simpla, un proces este un program allat in executie. Daca un program esle considerat 0 entitate pasiv1!., un proces este considerat 0 entitate activa Defini!ia anterioara simp lilica semnifica!ia pe care 0 are un proces, incadranduse in gradul de detaliu pe care 11 atinge capitolul curen\. Procesu t eSle unitatea de baza a Sistemului de operare lolosita pen tru a indeplini sarcinile indicate de uti lizalor. Orice solicilare a utilizatorului se traduce in crearea unui proces si rezowarea ace tei soliCrtari. Un proces este, a$adar, 0 entilate de execupe.

5.1.2

Deosebirea dintre un proces

~i

un program

Un program esle doar un fisier executabil care se alia pe disc. Se spune ca un astlel de lisier este imaginea din care se va real iza un proces. Un program eSle, asadar, 0 entitale pasiva, care nu are asociale nO!iuni de ulilizara a memoriei $i procesorului (elemenle de baza intr-un sislem de ca lcul). Fisierele /binlls , / u sr/bin/vi sunt exemple de programe:
2

uzvan@aMcon<ia : -$ Is - 1 Jtnnlls - rwxr - xr-x 1 root root 96216 2008 - 06- 27 03 : 31 Jbinlls
r~z"an@anacon<ia : -$ I s - 1 JuseJbin/"i lcwx r wx r wx 1 r oot root 20 2009 - 02 - 27 1 5 : 43 /u s r/bin/vi - > tHe/ dU rnativ"./v i

7
"

,0 ra.vanhMcon<ia : -$ Is - I Jusrtb . nrvim . b a .ic 11 - ''''H - XC-X 1 coot root 1644100 2009 - 03 -1 9 17:32 Jusr/bin/vim . bas1c

razvan@ a n acon da : -$ ls -1 JHc/dt~ rn ativ .. " /v i lr"H "Hwx 1 root root 18 2009 - 04 - 2 4 09 : 59 /"tc/dltern a t ives/vi bi n /vim . bas i c

-~

/uor/

Un program contine, in cad rul fiSierului execulabil, doua compo nente (sectiuni) principale: seCli unea de cod, ce co ntine instruc!iunile de rulare a programului pe procesor; seC\i unea de date, ce conIi ne inlormatiile utilizate ta executia programului; Pe de alta parte, un proces porneste in momentul execu!iei unui program. in acel momenl, sislemul de operare creeaza 0 struclura (o enlitate, 0 abslraClie) denumila proces. Dincolo de inlormaliile con!inute in imagine (Iisierul executabil de pe disc), siSlemul de ope rare asociaza procesului 0 zona de memorie unde isi va menline dalele ~i unde se va alia codul de executa!. De asemenea, procesului i se asociaza limp de rulare a codului pe procesor si aile informali; ulile pentr u interacliunea cu alte procese sau componente ale sistemului de operare. Toale acesle elemente lormeaza impreuna contextul procesului. Mai multe informa!ii se gasesc in seC\iunea sectiunea 14.7,1. Exemple de procese sunl rularea comenzii 15 sau ru larea editorului vi. i n momentul rularii come nzii 18. sistemul de operare loloseste imaginea /bin/ls si creeaza un

CAPITOLUL S. PR OCESE

113

proces. Acest proces este ras punzator pentru uti lizarea resurse lor sistemului (memorie, procesor) pentru a oleri rezultatul ru larii comenzii (in cazul de lata ali~area con!inutului directorului curent):

, , ,
,
6 1

u zv ~ n @~Mco n dd :

Des kt o p Do"nl M d
M ~il dir

""

-s code e x tra- s c h oo l bkup b oo k s j un k

"

me d i~

p ~c k ~ges

my st u ff o ff i Ci d l

p eopl e pro j e c t s

p obl i c _ ht ml s c h oo l
s vn - rep o ~

webs i tes

r ~ z v~ n @~ n ~ con d a -$ Is - 1 / b i n lls - r .. xr - xr - x 1 r OOt root 96216 2008 - 06- 21 03 : 3 1 I b inll s

r ~ z v~ n@~ n ~con d a : -$ file lus r /b in / fil e 10 l u sr/b in /f il e : EL F J2 - b it LSB e x ec u tab l e , Inte l aOJa6 , vers ion 1 ISYSV ) , 11 d y n a mica Ll y l i nk ed (uses s hare d libs) , for G N U lL lnu ~ 2 . 6 . 1 5 , st~ jpp e d

In exemplul de mai sus, a doua comanda are ca argument executabilul lolosit pentru crea rea procesului. La lei ~i a treia comanda. Pot Ii considerate exemple triviale de

self.reference 1
Se poate observa ca un proce5 este 0 instanla de execulie a unui program. Un program poate avea insa mai multe inslan!e de execulie asociate (instanle care pol ru la simultan sau succesiv). Exista, asadar. 0 asociere many to one (mai mulle la unul) intre procese si programe.

5.1.3

Structura unui proces

Un proces este delinit, la nive lul sistemului de operare, ca 0 struct uri de dale. Un proces are proprietati $i dispune de resurse, cele mai importante fi ind: Identilicatorul unul proces, numil si PID (process kI). Esle un numar Intreg care identiliea unic In cadrul sistemului de ope rare procesul respectv; Imaglnea procesulul. reprezentala de programul din care ia na~tere procesul. Imaginea procesului contine codu l si datele necesare pentru executie; starea procesului. Un proces 5e poate ali a in starea de rulare (in momentul in care codul asociat se executa pe procesor) sa u in asleptare (un all proces se alia i n rulare); zone le de memorle utltlzate, ce reprezinta reg iunile de memorie !olosite de proces pentru a mentine codul si datele; lisierele deschise. Un proces menline 0 tabe la cu li ~iere le deschise. De obieei dimensiunea tabelei este limitata astlel incAt si numarul de lisierele pe care Ie poate deschide un proces este limilat. (in linux aceasta limita este stabilita implicit la 1024).
, http ;lJhUpjlen .wikipedia. o,glwi<iIInd" e et_ ... ~. , .. te 'e nee

,,,

lNTRODU CERE iN SISTEME DE OPEAARE

Vizu alizarea struc turii unui pracas utilizand procls

In Linux exista mai multe metoda de a obtine inlormatii des pre structu ra unui proces.

Una din aceste metode este analiza procis. Acesta este un sislem de lisiers vi rtual care
olera aeces la informalii din sistemul de operare. Pentru a analiza un anumi! proces va trebui accesal directorul Iproc/pid. pid este numarul ce identilica procesul (process id). in exemp lul de mai jos a lost accesal directorul procesului eu pid-uI6740:

, ,

r~'v~n@ ... gara

, -$ cd

Iproc/~7401

r .. van@a9g"rd : /proc/6140S auxv m.. p ~ 0"


"chMl

"

mounts
mountstats

oo",--" dj
OOO'L8COre

root

stat
HUm

HHu.

smaps " Diversele intrari din acest director olera informalii legate de proces:
cmdline

environ

task

pi dul esle dat de numele directo rului: 67 40; imaginea procesu lui este data de legatura sim bolica ax e:
2

ra:va nh.g a rd : Iproc/6740S 1 s - 1 .,," lrw~rwHwx 1 euvan rUvan 0 2009 - 07 - 19 19 : 38 exe - > l u sr/bin/vim . gnom"

Du pa cum se vede, procesu l de lata este 0 instanta a v i m in mediu gralic (G NOME). linia de comanda utilizata pentru cre area procesului:
2

r a zva n@a.gard : /peoc/6740$ cat cmdline v i l. txt

Se observa

ca sa ru lat comanda vi

1 . txt .

directorul curent - eel in care sa rulat comanda - este dat de legatura simbo lica c: wd :
l

ra:va n @asgard : /proc/6740$ 1 . -1 cwd l rw . rwxrwx 1 ra~van ra~van 0 2009 - 01 - 19 19 : 38 cwd - > Ino me/ra:vanl t mp/ f d _ t""t

Rezu lta ca directorul c urent al comenzii este Inome/ razvan/ t mp/ f d _t est.

zonele de memorie ale procesului sunt date de fisierul maps:


r a :va n@"agard : /proc/6740S c a t m ~ pa 08048000 - 081ceOOO r - xp 00000000 03: 03 180465 061ceOOO - OaldbOOO rw- p 00186000 0; : 03 la0465 061dbOOO-Oa2a1000 r~-p 061dbOOO 00 : 00 0
[

, ,
,

... ]

Ius r Ibi n/v 1m. g no me lusr/bln/vl m.gnom" (heap] Ilib/ld- 2 . 3 . 6 . ,., ( s t ac k ]

b1fdcOOO - b7fdeOOO cw- p 000 ] 4000 03 : 03 178741 bfc7aOOO-nfcSfOOO cw-p bfc7aOOO 00 : 00 0

Nu yom insista pe aceste regiuni l ntruclt d epasesc aria de cuprindere a capitolului de latli. l isierele deschise de proces pot Ii vizualizate pri n accesarea subd irectorului f d :

CAPITOLUL S. PR OCESE

115

ra:van@asgard:/proc/6740$ cd fd ) 0 razvan8asgard : /proc!6740!fd$ Is 01235'] razva n8 asgard : Iproc! 67 40! fd$ tot a l lr wx-----razvan razvan l r wx -----razvan razvan

, " "

, ,
,

" -,

I .. . I

l rwx -----ra:va n ra:van Ifd_ test/.l . txt.swp

" " "

2009-07-19 19 : 48 0 2009 - 07 - 19 19 : 48 2009 - 07 - 19 19 : 48

, -, -, , -,

!dev!pt,!3 !dev!pt;!3 /ho me/ruv<>n/tmp

Nu YOm insista pe descrierea tuturor intrilrilor. dar se poate observa cil fisierul cu numarul 7 este 0 legalura simbolica caire /home/ra.zva. n / t mp/fd_ testJ . 1 . t xt. swp. Acest fiSier este copia de lucru a edilorului vim pentru fiSierul l . txt . Informa!ii de!alia!e des pre procls sun! descrise in sec!iunea 5.1.3. Sistemul de lisiere procls este lolosil drepl suporl de comenzile care olera informatii despre procese, Astlel de comenzi sun! pa, pstree, pgr ep sau top, despre care yom discu!a in sectiunile urmatoare,

5.1 .4

Starile unui proces, Multiprogramare

~i

multiprocesare

intrun sistem de operare ru leaza, simultan, mai multe procese. Totus i un singur proces se poa!e executa la un moment dar pe un procasor singlecore (sau, cu alte cuvinte, un procesor singlecore poate executa codul asocial unui singur proces). Pe un sistem multicore' vor putea rula mai multe procese in acelasi timp, numarul acestora !iind egal cu numilrul de nuclee de procesare ale sistemului hardware'. Orice proces are asociatil 0 slare de activitate. in mod obisnuit exista mai multe stilri in care se poale 9i1Si un proces, dar noi ne yom referi doar la douil: tulare (running): procesul ruleazil in acel moment pe unul din procesoarele sistemului ;
a~te ptare

(waiting) : procesul a~teapta eliberarea procesorului pentru a putea ru la

pe acesla.
Se observa, a~adar. ca este nevoie de un algoritm care sa olere !iecarui proces ocazia de a Ii executat pe unul din procesoarele sistemului. Mecanismul de alocare a proceselor pe procesoarele sislemului poartA numele de planil icare (scheduling). Subsistemul nucleului care se ocupa de alocare se nume~te planilica tor de procese (scheduler), Rolul planificatorutui este de a alege un proces care sa ruleze pe un procesor Si, la indeplinirea unei cond iti i date, sil suspende executia procesului pentru a it inlocui cu un
, http ://ft n.w ikipftd ia .o r(jlwikiIMu Iti- co r8_ IcomfXJtin 9) ' Si.te mu l hardware F"'ale a ... a un proc e .or cu mai mu~e noc1ee . a u mai mu~e procMoare , fiecare cu ma i mu~e mx iee

116

INTRODU CERE iN SISTEME DE OPERARE

allul. lnlocuirea unui proces ell un all pieces sa numeste schimbare d e context switch).

(context

l a inceputul istoriei sistemalor de operare. daca un ulilizalor dorea ru teraa unui program, al incArca pe un supor! con~nutul prog ramu lui ~i a~tepta tutarae acestuia (in
contexlul unui ploces). Cand procesul era plan~icat pe plocesor, eeesta rula com pie! pAM Ie incheierea absoluta a execuliei. Abordarea prezentatA are dezavantaiul lipsei de interactivitate: dacA un procBS ru'eaza loarle mult sau dac a trebuie sa comunice des eu dispol.itive perilerice lente, atul'lCi alte procese ca re doresc sa luteze VO( trebui sa a~tepte un timp i ndelunga\. Urmatorul pas in evolutia sistemalor de operare a losl introduce rea noliunii de mllitiprogramat e. i nainte de a inlra i n delalii, trebuie amintila d iferen!a de ~ i teza dintre procesor/memorie si dispozilivete peri!erice. Astlet , daca un proces accesead hard disku!. ~a Irebui sa a~lepte foarle mult timp pentru ca informatia sa fie disponibila (numeric. diferenta dintre ~ileza unui procesor si vileza de acces la dalele de pe un hard disk eSle de ord inul milioanelor). in abordarea multiprogramata, mai multe procese coexisla in cadrul unui sistem de operare. In momentul in care un proces acceseaza un d ispoziliv periferic lent. ~a Irebui sa aslepte furnizarea inlorm aliei dorite: drepl urmare. procesul respectiv este suspeoclal temporar, si un alt proces este planificat in locul sau pe Pfocesor (context switch). i n acest lei se maresl e inleraclivitatea sislemului. Oaca un proces se bloc heaza i n comun icatia cu un dispozitiv perileric lent, acesla nu mru irose~te l impul procesOlului i n a1?lepla re. Ci esle inlocuil cu un alt praces. Urmalorul pas a lost apar rtia conceptului de multiprocesa re sau multitas king . Acesla a ~enil ca raspuns la cerin\ele din ce in ce mai mari de inleractivitate a sistemului de operare in raporl cu utilizalorul. Dezavanlajul multiprogramarii este cA un proces care ruleaza mult timp pe proceso! lara a executa 0 acliune blocanta nu va lasa alte procese sA ruleze. Acesl lucru inseamna pierderea inleractivilalii' . Solulia este asocierea, cu fiecare proces , a unui limp limita de rulare pe procesor (o euanla de l imp). La i ncheierea cuante; de limp. procesu l va Ii automat suspeoclat temporar si inlacuil cu un altut. In abordarea multitasking, sehimbarea de context se va prod uce cAnd procesul care ruleaza pe procesor execuIA a actiune blocanlA sau cAnd isi incheie cuanta de limp.

I, oj

Toate sistemele de operare moderna sunt sistema mu~iprocesare (multitaSking ).

5.2

lerarhia de procese in Unix. Vizualizarea proceselor sistemului

in sistemele Unix (ca atare 51 in Linux). procesele sunt organizate ierarhic. Astlel, se poale sp"ne despre un proces ea esle procesu l pi rinle al unui alt proces; viCBVersa. se spun e cil. un proces eSle procesul liu pentru un allut. Un lucru de rel inut este laplul ca un Pfoces are un singur proces patinte, dar poale avea mai multe procese fiu. Modelul ierarhiei de procese i n Unix esle prezentat in figura urmaloare:
ID.. n umi,e~ te hn>c" elle 'Iar""rion

C JPYnghted matanal

CAPITOLUL S. PROCESE

117

in it

'"

Figura 5.1: lerarhia de procese in Unix lerarhia apare ca urmare a faplu lui ca un proces este creat prin intermediuf unui afl proces. La crearea rna~terea") unui proces se real izeaza 0 cop ie a procesului pa ri nte si se inlocuieste imaginea de program a parintelui cu cea dorita. Astlel, la rularea comenzii Is din shell (in imagine Ibin /bas h). se creeaza 0 copie a procesului shell. ~i se inlocuieste imaginea de executabil I b in/ ba sh cu imaginea I bi nl 1 s. In Unix, parinlele luluror proceseior eSle denumil ini\. Imaginea de executabil asociala esle Isbin/i ni t . Acesla esl e primul proces creal de sistemul de operare. Esle un proces special penlru ca nu are pilonle. Din inil se creeazi'l. aile procese, care la ral'ldul lor vor crea alte procese, completilnduse astlel ierarhia de procese ale sistemului.

5.2.1

Utilitarul ps

Comal'lda p s eSle principala comal'lda de vizua lizare a proceselor sistemului. Informaliile prezentale de p s sunl oblinule analizi'ind inlormaliile din procls. La 0 rulare simpla (Iari'l. argumente). p s aliseaza informa~i des pre procesele pornite de uti lizalorul curenl pe lerminalul activ:

, ,

ra.vo n h .s g ,u a

'w

-,

3036 pts!O 3079 pts! O

00 : 00 : 00 00 , 00 : 00

"

TI ME

'""

I>~~h

Rularea comenzi i presupune afisarea unui cap de label 5i a unei inlrari pentru liecare proce5. La 0 rulare simpla (fara argumente) se vor al i ~a identilicatorul de proce5 (p 1 D),

"

.1

118

INTRODU CERE iN SISTEME DE OPEAARE

terminalul utilizat (TTY ), timpul de fulare a procesu lui (TIME ) 5i numele programului ce sta la baza aC9stuia (CMD) _111 exemplul de ma i sus, utilizatorul a deschis un termi nal cu

un interpretor de comenzi (bash) ~i apoi a rulat comanda pa. Sa observa ea un proces ps se aliseaza ~i pe sine. Comar.da pa accepta diferite tipuri de opliuni care pot Ii uneari conllictuale. in continua re vom insista pe optiuni UN IX, caracterizate prin iaptul ca sunt precedate de semnul minus (- ). Penlru detalii comp lete legate modul de utilizarea at comenzi i ~i de efectul oppuniior trebuie consultat!!. pagina de manual asociatli (man pa l.
De exemplu, pentru afisarea proceselor pam ita de utilizatorul curenl, indiferent de terminalul utilizat, se lolose~te optiunea - a.

r ~ z,,~n @ ~ 'qa rd : - $

no m
3074 pts/l 3094 pt , /O

00 : 00 : 00 00 : 00 : 00

"

rIME

. '"'
e'

"

Se observli. eli., In aceastli. situatie, se aliseazli. procesele ce ru leazli. pe term inalul pts! l ~i ce le ce ruleaza pe pts!O lara a se mai preciza procesele tip shel l de pe aceste terminale.
Comanda ps are un numar impresionanl de argumente care pot contro la continutul si formatu l afi~li.rii informaliilor despre procese. Vom prezenta cele douli. clase importante de optiuni: optiuni de seleqie 5i optiuni de lormatare.

OP!iuni de se lec!ie Optiunile de se lectie presupun se lectarea anum itor procese din sistem in functie de diverse criteri i. Sunt prezentate. in continuare , cateva opliun i utile: selectarea luturor proceselor di n slSl em: se realizeazi:!lolosind argumentul - e sau
- A:
uzv~n@asqard :

-$

..

, , ,

.w
... )

,, , , ,,

00 : 00 : 00 init 00 : 00 : 00 k M f tir q d/O 00 : 00 : 00 "ven t , /O 00 : 00 : 00 bash 00 : 00 00 00 : 00 : 00 bash 00 : 00 : 00

"

rIME

. '"'
.,

)057 307 4 3109 3131

pts/ l
pUl l

pul2 pt./O

se lec!ia proceselor dupa 0 anumita componenhi: pid. coma ndi:!, terminal, utilizator; aceasta seleqie se real izeazli prin ulilizarea unui argument specific (de exemplu - c , - p sau - u) urmat de lista de se leclie (e lementele listei sunt separate prin virgula . lara spatii intre ele):

"

, , ,

ruva n h.gar d

.w

303 4 3036 pts/O 3051 pta/l 3014 pts/l

-, -,
"

ba , h , vi , gnome - terml na l

rIME

00 : 00 : 02 gnome - termi n a l 00 : 00 : 00 bash 00 : 00 : 00 bash 00 : 00 : 00

'"'
"

CAPITOLUL 5. PROCESE
7 3109 pt./2
JlSO pt.n

119

00 : 00 ; 00 p o sh 00 ; 00;00 bash

1 n exemptul de mai sus au lost selectate procesele al cii ror executab il (- C) a fost ba.sh,
vi saU gnome - terminal.
razvan@ a'\lard : -$ p .
, 3 PID TTY I ?
- p 1 . 3026,)074 TIME CHD 00;00;00 init

"

3026? 3074 pt.!]

00:00 : 42 gedit 00 ; 00 : 00 vi

Cu comanda de mai sus s-au se lectat procesele cu pid-ul (- p) 1, 3026 sau 3074.
r<! , -S , utv a nhaga m " ,." , '" , 00 : 00 : 00 , 00 : 00 : 00 , , 00 : 00 : 00 &pache2
w~~ - dau

TIME

27B7 278B 2790

apach~2 apach~2

1 n exemplul anterior s-au se lectat procese le ce apartin utilizato rului (- u) www - da t a .

Observati cAdes i s-a f.:leu! selec!ia dupa. utilizator, numele acestuia nu apare in rezullalul comenzii. Pentru aceasta va r trebui folosite op!iunile de formatare p a pentru af~area altor cAmpuri in alara celor implicite.
Optiunile de seleClie pot Ii comb inate. in exemplul de mai jos se selecteaza procesele bash sau vi, cele care au pid-ul 2968 sau 2972 si cele care apal"\in utilizatorului ha l daemon :
r~zv~n @ ~.q<Hd : -$ p~

" "

, , ,

-c

b~.h,vi h~ld

- p 2968 , 2972 -u haldaemon

PIO TTY
25B3 2590 2968 2972 3036 3057 3014 3109 3180

, , ,
?

TIME CMD
00 : 00 : 02 00 : 00 : 00 00,00:04 00,00 : 00 00 : 00 : 00 00 , 00 : 00 00,00 : 00 00 : 00 : 00 00 : 00 : 00
hald - ~ddon - ~cp i

metacity

nautilus
b~ s h

pt./O pts/1 pt./1 pt./2 pt.13

bash b&sh
b~ s h

"'

Argumentele listei de selec!ie per"ltru opjiunile p a sunt separate prin vi rgula, lara spati i. Se pot nega op!iunile de seleetie eu ajutorul argumentului - N. Astlel , daea se dore$te selectia proceselor care nu apar!in utilizatorului privilegiat ( r oot) $i nici utilizatorului razvan , ~i care nu au ca executabil apache2 , se va lolosi comanda urmatoare:

, , , 2263 "'" m , 2575 , 2583 , , , 2590 2655 ,


"

r~zv~n @ a.qard :

-$

" TIME coo

-,

-.

root, razvan

-c

apa ch,, 2

"

2663 2664 2741 2756

, , ,
,

00 : 00 : 00 00,00:00 00,00,03 00 : 00 : 00 00 : 00 : 00 00:00 : 00 00:00 : 00 00 : 00 : 00 00:00 : 00

portm~p

dbu. - aaemon ha i a h &l d-addon-acpi


e~ l m4

fbquHd fbserver rpc . HHd

"'"

120

INTRODUCERE iN SISTEME DE OPEAARE

OP!iuni de formatare
Op)iunile de formatare pentru comanda p a controleaza calca nele care sunt alj~ate ca rezu ltat at ru larii. Implicit, ru tarea comenzii olen''j un cap de label eu elemer'lte le PID, TTY , T IME: ~i CMD. urmat de 0 lisla a proceseloL Aceste elemente pot Ii schimbate pr in intermadiul op!iun ilor de lormatare.
Afi~rea

tuturor op!iunilor freevente pentru p a:

, ,

I~zvan @ a"ga r d : -$

ow
r~'v~n

,W

PPlD

-, ,0< " " " " "'" " Se observa eli s-a modifiest capu t de label. Sun! prezentate mai mult optiu ni utile,
!a,va n
3036 3249 13:02 pts!O

P" - F C 3034 3036

1574

"

3352

'" '"

STIME m 12 : 0 ~ pn/O

TIME C<" 00 : 00 : 00 ba. h 00 : 00:00

printre ca re UI D (util izatoru l ce a creat procesu l), pp 10 (pid-ul procesu lui parinte), STIME (timpul rul:.irii procesulu i). CMD (comanda comp lelil: de rulare - cu argumenle) etc.

1 n mod evident, op!iun ile de formatare pol fi combinale cu op\iuni de se leclie:

, ,
, ,

'" " "

ra,v a n@ a sga rd , -$ ps - f - c bash , apache2 , g no me - t erm(nal , ps [ ... [ m PPIO C TIME 2786 root 241 2 2632 [ ... [ 00 : 00 : 00 apach~2 - k ' t a r t 2355 194B [ . . [ 00 : 00 : 00 """,- data 2787 2786 apach~2 - k st a rt 57746 2452 [ . . [ """,- data 2788 2786 00 : 00 : 00 apach @ 2 - k ,tut 51146 2456 [ [ 00 : 00 : 00 "'''''''- dat a 2HO 21a6 a p a che2 s t art ra.van 3034 8424 15020 [ [ OO : OO : OJ t ermina l 1574 JJ72 [ . [ p t s/O r uvan 3036 3034 00:00:00 ca :van 3051 3034 1575 3J48 [ ... [ pts/l 00 : 00 : 00 1575 JJ52 [ ... I pt,/2 rUvan 3109 3034 00 : 00 : 00 u.van 1575 JJ40 [ ... I pts/3 31 8 0 3034 00 : 00 : 00 3251 3036 rUvan [ ... I pts/O 00 : 00 : 00

ow

'"

" " " , "

" '"

, , ,
, ,

C<"
!usr!sbin! !usr!sb i n/ lusrlsb i n/ lusr/,b i n/ gnome bash bash bash bash ps - F - C b a sh

"

, apach~2,gno m ~- t ~ rminal , p s

" " " " " ". "'"

. . .

In exemplul de mai sus, procesul cu pid-ul 2786 este procesu l fiu al init (are PPID " 1). Urmatoarele trei procese sunt procese le fiu ale acestuia. De asemenea, procesul cu pid-ul 3034 (gnome - termina l ) eSle 101 un proces fiu al inil, iar cele patru procese bash sunt procese le fiu ale acestuia. La fel, procesul ps (p id 3257) eSle procesul fiu al prim ului proces bash (pid 3036). 0 reprezenlare ierar11ica a ce lor zeee procese de mai sus esle urmaloarea:

, ,
,
,

init

'"

--- > apach@2 {27S6]

\ -- > bash - term i na l

--- > apach,,2 {27Si] \ -- > apache 2 {27aa] \ -- > apach e2 {2790] IJOJ4] --- > b as h [3036] \ -- > b a sh [305") ] \ -- > bash (3109) \--> b a sh [31aO ]

--- >

"

(3257]

Afi~rea

de oplillni speclllce pentru procese

CA PITOlUl S_ PR OCESE

121

Spedicarea optiunilor de alisare pentru P" se realizeaza cu ajutorul argumentului - 0, urmat de argumentele de tormata re dorite (separate prin vi rgula, tara spa!ii). Cele mai !recvenl ulilizate argumente de selec!ie sunt: pid, ppid, args (Iisla de argumente), user (uti lizator), comm (comanda - doar numale execulabilului), cmd (eomanda eu argumenle), cput i me (Iimpul de procesor eonsumal), group, pmem (procent memorie ocupata), state (starea procesului - un singur caraeler) , stat (sterea procesului - mai multe caractere), t t y (terminalul de contrOl asociat), In eontinuare sunt prezenlate eateva exemple. pid-ului (pid), utiiizatorului (u ser), a starii procesului (stat ). comanda cu argumente (cffid). timpul de procesor (cput ime) si memoria Iolosita (pmem):
Afi~rea

" "

" 3180 ra :vo n : 00 : 00 0.0 '" bas h pid, uSer, .r a t, cmd , 00 3260 r a .va n 00 : 00 : 00 0.0 " "' " Fara a insisla pe semnifiCatiila starii procesalor, sa observa ci'l procesul ps (pi(! 3260)
( ... J

, , , ,

p1d, u ,, ~ r , ,tat, Ctlld . Cput ime , pm"m razvan@ a'qa rd : -$ USER STAr '"0 TIME . MEM root in. t 00 : 00 : 00 r oot [hoftirqd/OI 00 : 00 : 00 0 . 0 r oot ( ~vent s /O I 00 : 00 : 00 0 . 0

"'. , , , ,
I

3009 ruvan 3011 r azvan 3016 ruva n

" ,. " , ,

"

-. .

'"

"., " ".


U

l u s r /lib/gnome - p a n e l / no t ifi 00 : 00 : 00 /usr/ l ib/gnome - "pp l et./mi Ke 00 : 00 : 00 gnome - s creens o ve r 00 : 00 : 02

..

este in starea de ru lare (R - runn ing), iar eelelalte sunt in starea de asteptare (S sleeping). Sislemul de test dispune de un singur procesor si ca atare un singur proces peate rula la un moment da\.
Afi~rea pid-ului. argumentelor, limpului de procesor, memoriei utilizale si timpului de pornire a comenzilor pentru procesele ce apartin utilizalorului www - data. si penlru procesele care au numele comenzii ba sh:

osg"rd : -$ -c bash p i d , arg.'l , cputime , r.s , start "'''''''- data , r o ,vo n @ COMMAND T1ME " , 2767 '" lu. r /.b i n/apache2 -, start 00 : 00:00 ." 11STARTED : 29 : 03 -, 2788 Ius r Iso 01 apache2 stort 2452 11 : 03 00:00:00 , 2790 lu a r I ao 101 a p a che2 -, Su"t 00 : 00:00 2456 1 1 :: 29 29 : 03 bash 00 : 00:00 3372 12 : 09 : H , 3036 3057 b a ,h 00 : 00 : 00 3348 12 : 10 : 20 3109 o a sh 00 : 00 : 00 3356 12 : 23 : 3 1 3180 b a ,h 00 : 00 : 00 3340 12 : 44 : 33
- 0
t ~4a

Spatiul . de memorie utilizat (rss - resident set size). eSle masurat In kiloocteti . (KB). Sortarea rezultatu lui rutarii comenzii p s se realizeaza eu ajutorul op!iunii -- sort urmala de lista de criterii de sortare. Semnul + (implicit) sau - in lata unui eriteriu de sortare l nseamna sOrlare in ordine crescaloare sau deserescatoare:
pi(! , cm(! , cput i rne , pmem . rss -- sort , razvan@a.g;ud : -$ " ." , 3247 '" '"' eV1nce 00 : 00 : 37 .~" t o . 7 206556 evolut i on 00:0 1 :28 ,.. 14626a , S'" 121 lusr/ol n /x - www - browser 00:01:03 107444 ,., 7709 pi(!g!n 00 : 00:05 56104 , 3334 lusr/bin/x . 0 -a ud i t - aut 00 : 02 : 39 U 54960
T1ME
Ihom@/razvan/ ~ chool/

..

- rss

"

122
" 10 " 4391 4595 410 4389

INTRODU CERE iN SISTEME DE OPEAARE


Mutilu. -- no - <iehuit - "inao 00 , 00 , 26

LO 36324
LO 31252 L< 2aa44 L< 276 16

12

mono /usr/ l1 b/toml;loy/Tomboy 00 : 00:02 !usr/lit/evolut!on!evo l ut i o 00 , 00,01 gnome - p a nel --.",-c li ent- I d 00 , 00 : 15 ( . .. 1

Exemplul de mai sus real izeazA 0 sortare a proceselor dir'l sistem dupli memoria

ocupatd Se observa eli procesele cele mai mari consumatoare de memoria sun! evince {un viewer de documentel, evol ut ion (un cl ient de mail) 51 x - www - browser (unbrowserweb).

Alte

op~iuni

Utilitarul P'" perrnile alisarea ierarhiei de procese lr'1 forma arborescenta. Aces! lucrll sa
realizeaza cu ajutorui
op~unii

-H:

,
,

,
'" " "

ruvan@a sgard : -$ -c init , a pache2 , gnome - t ermlnal , bash - 0 pia , u se r , cornrn , cputlme,pme m -- sor t m USER COMMAND 11ME 'MI:M root init 00 , 00 , 00 0.> 2786 root apache2 00 : 00 : 00 U 2187 ""w - da t a ap ache2 00 : 00 : 00 U 2786 w.... - dat a apache2 00 : 00 : 00 0 . ' 2790 w.... - dat a "pache2 00 : 00 : 00 0 . ' 3034 <azvan gnome - t ec'U M 00 : 00 : 05 b,, ~ h 3036 <azvan 00 : 00 : 00 U b,,~h 3057 <azvan 00 : 00 : 00 U

"

'"

-"

'"

3109

,,,,van

3180 u.v"n

bash buh

00 : 00 : 00
00 : 00 : 00

in aces! caz procese le fiu sun! indentate eLi doua caractere spaliu fala de procesul

parinte.

5.2.2

Utilitarul pstree

Utilitarul pstree ali~eaza ierarhia de procese a sistemului. in cazul unei utilizari simple (fara niciun argument), comanda afiseaza ierarhia de procese incepand de la init:
r"tvan @a sqa rd , -$ ps t ree
Z

init - +- acpid l - apache 2- +- apache2 I ' - 2 -I "pache2 --- 2S. [ I "pache 2) II

I- ato
I- bonobo -acti vat i

,0 " '2
,~

"

l -clock - applH
[

.. . [

,.

[- gnome - t ermlnal - +- oash [ I - bash --- v i [ I - oa$h ---ma n --- pager [ I - bash --- psnee [ I -gnome-pty-helpe [ ' -l gnome - termiMl l

"

(. .. 1

CAPITOLUL S. PROCESE

123

Daca eSle dori!1'i alisarea ierarhiei de procese incepAnd de la un anum it proces. transmis ca paramelru pidul acelui proces:
,
r~.v~n@~.g~ra : -$ p.tr~~ 3034 gnome - terml na l- +- bash l-baSh --- vi l -baSh---m&n---pager I - ba s h ---pstree I -gnome-pty-helpe ' - {gnome - termInal)

va Irebui

Se poale

al~a

inclusiv pidul proceselor din ierarhie prin inlermediul op!iuni i - p:

ra.van@aag3ra : -S pstree - p 3034

> gnome - ter mina l (3034 1 - +- bash (3036)


, l - bash(30S7) --- v\ 00741
l - b~sh(3l09)---man(32951- -- pager(3302)

l-b&sh(3160) --- p.tree (33431 l-gnome - pty - helpe I30351 . - ! gnome - te rm i na l ) (3037 1

Ca ~i in cawl comenzii ps. pstree ulilizeaza procls penlru ob!inerea de inlormal ii despre ierarh ia de procese.

5.2.3

Utilitarul pgrep

Comar.da pgrep esle echivalenlul grep penlru lucrul cu procese ~i poale Ii lolosita penlru a afisa doar procesele din sistem care indeplinesc 0 condilie. 0 fUllC!ional itate echivalenta pgrep poate Ii oblinuta cu ajutorul comenz ii ps ~i al argumenlelor specilice acesteia: - p pentru selec!ia dupa pid, - c penlru selec!ia dupa comar.da, -u penlru selectia dupa ulilizator elc. In continuare sunt prezentate exemple ale rulari i pgrep pentru seleqia procese lor care au ca parime procesul init (pid 1). Implicit se selecteaza doar pidurile proceselor. Daca se doreste si alisarea numelor proceselor, se loloseste op!iunea - 1;

" " " " " " " " "

, , , , , , , 1021 , 226 4 (. .. 3025 I


3027 3052

r~.van @ a"gard :

-$ pgrep

-, ,

, , ,

r~:van @ asga r d :

-$ pgrep

-, , -,

" "

"

x softi r gdfO event.fO He l per kthr ead 1021 u a~va 226 4 port map

(. .. I
3025 gnome-.creen.av

124
22
2:l

lNTRODU CERE iN SISTEME DE OPERARE

3027 qnome - tem i n"l J052 .off i ce

5.2.4

Utilitarul top

Utilitarul top este utilizal penlru a a1isa informa!ii in mod dinamic (in timp real) despre procesele exislenle in sistem. 0 ulilizare Irecvenlii a acesleia aste monilorizaraa sislamului (vezi secliunea 10.3.1) . La 0 ru lara fiirl'i argumenle, top va afisa un ecran cu informatii des pre sistem si procesele care ru leazl'i. in mod implicit, acesl ecran esle actuali zal la liecare 3 secunde. Un exemplu de ecran ali~at prin ru larea comenzii t op esle prezenlal mai ios:

Ii Q
..

98'98: .op
~ .n

;';";;';",,'<1 .... ) ' . """ . . _


~

\Aeo< s<.....,.,~ eookM_ sett;,,;. HtIp .op. 21 ,501 .15.., 10, .... 2 , ..,... I ..d .....;., 0 . 06. Q.!g . 0 . '3 1. 2 """'i" , I~ <\t'pi.. . 0 "'w.d. G , bi.

90
A

,.

G. ""'i .

7H . '~i d .

0 ...... .

l OW ...&: .0Ul . lOU21&: .oul .

96l20010: ".d ,
29'l'}<8k

" . d,

5572&: fro.. 7... 2611: fro. .

D,,.....i. _

' ."', i .
buff . ...

D, ......

2800961:

,,(h. d

. ,~ .,~

,.,... 51.87 ?O7l 12718

g., ..n , -, , -, , -, " , -, ,-, , " "


5124 ;"f"9< 7555 90'0'9'
lOO5 . . . . .

'.Id . ... ""0'9' ""0'9' ;''''1' 9'" f"9<

" " "

, , .,' , .. .. ._='.... .,' " . ,' .,. , .,' .. , .. , " - .,'


]100 ,= .,' "" .,' .,' .,' ,,' o 80072 woo s " 2..... 1200 m. 'W. oo "' M' " " , " " , " "
5

OJ

, .. II2!i<I S
~

G,w. n
O, O'l.eJ 0 , 01.2(1
3 , 0)01.'1(1 . . "rood

.. .

0 , 00.111 0 , 00.00 0 , 00. 00 0 , 00.06 0 , 00.00 0 :00.)4

''''' Hh,.ul!d Olg"'"""1G

hol.irqdlG vo\ohdoqlG
."UIIl

~"OP

Figura 5.2: Ecran de rulare lop Ecranul alisal de top cuprinde urmatoare le zone: zona de sumarizare (summary area) : aceasla conUne inlorma!ii generale despre sistem: inca rca rea sislemului (prima liniel. numiirul de procese si starea lor (a doua linie), timpu l de procasor ulilizat (a Iraia linie), memoria ~i spa!iui de swap ocupal (ultimale doul'i linii), Gradul de incl'ircare a sistemului eSla 0 ml'isura a incarcE!.rii procesorului ~i poale Ii determinal ~i cu ajutorul comenzii uptime. zona de comandii (prompt/ine): aici ulilizatoru l poate introduce comenzi specilice de interacliune cu utililarul top; anletul de label (columns header): aliseaza antetul de label pen\ru inlormatiile ali~ate despre procese: zona de procese (tas/( area):
al~eaza

informa!ii des pre procese.

right

rna'enal

CAPITOLUL S. PROCESE

125

Interfala interactiv8 top t op are 0 interfala interactiva cu utilizalorul care ii permite acestuia allerarea formatului de ali~are , Comanda caa mai utila pentru lucrul interactiv cu t op aste caa da af~are a ecranului de ajutor Oasta h). Majoritalea comenzi lor top sun! de tipu l /oggle. adica ali~area sau oprirea afi~ar i i unei anumile componente din ecranul de alisare. in continuare var Ii prezentate cate~a din comanzile top cela mai utila i n func!ie de zona ecranului de al i ~are in care au alect. Delalii suplimentare se pot alia prin cons ultarea paginii de ajutor (prin apasarea tastei h) sau a paginii de manual (m " top).

Comenzi pentru zona de sumarizare. sumarizare sun! comenzi de tipul toggle:

Comenlile Iolos ite pentru lucrul cu zona de

lasla 1 esle folosilA pe nlru a acliva/dezacti~a afi~rea de inform alii despre incarcarea sislemului (prima linie din zona de sumarizare); tasta teste lolosil<'l pentru a activa/dezacliva alisarea de inlormatii des pre numarul de procese ~i utilizarea procesorului (l inii1 e 2 si:3 din zona de sumarizare ): tasta m esle folosita pentru a activa/dezactiva afisarea de informatii despre utilizarea memoriai sistemului (ultimale dou<'l linii din zona de sum ariz are ).

Comenzl penlru zona de procese. penlru procese amintim:

Dintre comenzile care alecteaza zona de alisare

tasta c este Iolosita pentru a afisa comanda complelA , nu doar numele procesulu i; tasta f este lolosil<'l pentru a adauga/elimina coloane ulilizate pentru afisarea de informalii des pre procese; tasta 0 este folosita pentru a schimba ordinea coloanelor din tabel ; dup<'l apasarea tastei f sau u. utilizalorului ii esle prezenlat un acran de configurare , in care poate speci/ica noi coloane sau 0 nouA ord ine {tot prin intermediul unOf taste}; tasta R {de tip toggle} eSle IolositA pentru sortare ascendentA sau descendentA; tasla F sau lasla 0 sunt lolosile penlru a conl igura coloana dupA care se lace sortarea proceselor din zona de procese. in mod implicit sortarea se realizeazi'i dupe. limpul de procesor, astlel incal procesele care inlrun interval dal de timp au utilizat cal mai mult procesorul vor apArea primele In lisl<'l; tastele < si > pot Ii Iolosite pe n\ru schimbarea coloanei dupa care se re lizeaze. sortarea, selecland coloana din stanga sau din dreapla.

Comenzi in zona de comandii AceSle comenl i folosesc zona de comandA $i afecteaza. de obicei , procesele sau zona de procese: tasta x permite terminarea unui proces. Apasarea acestei taste olera promptul p r D t o x i 1 1, unde utilizatorul va introduce pidul procesului a carui executie se doreste a Ii incheiatA:

126

lNTRODU CERE iN SISTEME DE OPEAARE

tasla fl pe rmite precizarea numarului de procese care vor Ii alisate in zona de procese: apasarea aceslei taste conduce la aparilia unui prompt unde utilizatorul

precizeaz1i numarul de procese pe care doreste sa Ie viz ualizeze/monitorizeze:


tasla u perm ite prec izarea unui utilizator, liind apei alisate numai procesele care apartin acestuia. Zona de comand1l aliseaza promptul W h ic h user (b lank for all) , unda S9 ce re introducerea un ui nume de utilizator.

lnterfa!a neinteta ctlva top


top peate Ii utilizat 5i in mod neinteractiv prin fo iosirea argumentului - b in Iinie de
comanda. Porn irea neinteractiv1'i eSle Iolosit1!i de obieei i mpreu na eu argumentul - fl , care precizeaza numarul de iteratii de alisare, Se obtine astlel un rezultat ce poate Ii red irectat intrun fisier pentru ana liza ulte rioara:
g@org@ @ a'ga r d : -$ top -b -n I top - 23 : 03:58 up 11 : ,4 , 2 us e rs , l oad aveuge : 0 . 11 , 0.52 , 0.52 3 Tas k s, 148 tot a l, 3 running , 14S s l eep ing . 0 stopped , 0 'Ombie 0 . 7ha , 0 . 2\hl , 0.3 \9 1 , Cpuls) : n . Hus , 6 . 3\sy , 2 . 0\nl. 77 . 1\1<1 , O. Oht 'Mem : 1016969k total , 9"]61641: use d, 4 090H free , n684l: butte~s 395716 1: use d, 648500): free , 371860 ): c ~ ched " S~ a p : 10442161: to t al.
2

PIO USER

PR

NI

VIRT

RES

SHR S 'CPU 'MEM

TIME+

COMMAND

10
11

" 13

,.
"
16

"
'"
,~

""
~1

5124 geo r ge 6232 george 11446 geo r ge 1 root 2 root J root 4 root 5 root 6 root 7 root 8 root 11 root
(. . .

20 20 20 20

0 0 0 0

155m 2656 2324 S 553m 134m 20 m 5 2444 1096 824 R 3084 540 488 S

IS
RT
15

-S
-5 -5 -5
-5

0
0
0

0
0
0

0 S
0 S
0 S

2.0 0.3 2 . 0 13 . 5 2.0 0.1 0.0 0.1 0.0 0.0

6 : 23 . 52 38 : 13 . 04 0 : 00 . 01 0 : 00 . 79 0 : 00 . 00

RT
15 15 15 15

-5 -5
-5

0 0 0 0

0
0

0 S
0 S

0.0 0.0 0. 0 0.0


0.0 0.0 0.0

0,0 0 0 0.0 0.0


0.0 0.0 0.0

pul s eau d i o firefo x t op init kth r eadd 0 : 00.00 migrat i on/O 0 , 00 . 07 ksoftirqd/O

0 : 00.00 ~ ~ tc h dog/O 0 , 00.41 events/O


0 : 00 . 00 cpu set 0 : 00 . 00 <helper 0 : 00 . 00 netns

0 0

0 S 0 S
o 5

5.2.5 Timpul de

e xecu~ie

al unui proces. Comanda time

Timpul de executie al unui proces se refera la durata sa de executie in sistem, din momentul crearii ~i pana in momenl ul te rminarii acestuia, Comanda t ime este utilizata pentru masurarea ti mpului de rulare a unui proces ~i a resurselor utilizate de acesta, Rezultatul rularii implicite a comenzii tim .. ofera 3 tim pi: rea l - timpul efectiv de execu!ie, masurat de la crearea procesul ui terminare a acestuia; use r - tim pul pelrecul in Spaliul utilizalor; sys - timpul pelrecut rula nd apeluri de sistem (in spatiul kernel).
~i

pana la

CAPITOlUl S. PROCESE

121

t i lll<l primeste ca argument numele unui program a carui durata de executie va Ii masurata. Un exemp lu de ru lare este prezentat mai jos:

,
)

ro o t@asqa rd : / h ome/razvan f t IMe u p d at e db real user s ys 4mI9 . 309" Om 2.680 , Om 5.550 ,

Se observaca rularea comenzii updatedb a durat 4 minute si 19 secunde. Totusi timpul real de rulare a procesului se mascara adunand timput pelrecut in spatiul utilizator (2.68 secunde)!;li timpul petrecut in spaliul kernel (5.55 secu nde), Cu alte cuvinte, din limpul cal a durat rularea comenzi i, procesul a consumal doar 8.23 secunde pe ntru a Ii executat de caIre procesor. Reslullimpului a lost ocupal cu rularea altor procese sau schimbarea conlexlul ui intre procese. Schimbarea conlexlului are loc in momenlul in care procesului Ii expira cuanta de timp sau acceseaza dispozilive pe riferice lente .

5.2.6

Sistemul de fi,iere procfs

Dupa cum s-a preze nlal, sislemu l de l i!?iere procfs este ulilizal de comenzile ce obl in inlormatii despre procesele din sistem: p s, pstree , p grep sau top. Pachetul DebianJUlxinlu ulilizat penlru inslalarea acestor ulililare se nume!?te pr ocps penlru a indica faptul ca prQCfs eSle utilizal penlru obtinerea de inlormatii despre procese. procls este un sislem de fisiere virtual (adicA dalele nu se gAsesc pe un suport fizic pe rmanent precum un hard disk sau CDROM). in cazu l procfs, liecare li!?ier esle de lapl 0 regi une de memorie (stocata l izic in RAM) care olera inlormalii despre sistem. procls olera informa!ii atat des pre procese le din sistem cat !?i alte inlorma!ii specifice: dispozilivele COneClale, ocuparea inlreruperilor etc, permilAnd tolodala !?i configurarea anumitor componente ale sistemu lui. procls este monlal in ( pro c :
~

ra.va n @aa g ard : -S cat letc/mtab I d ev/h d a3 I e ~ t3 rw , en o rs - r e mou n t - rO 0 0 t mpfs llib/in i t/rw tmp fs r" , nos u i d , mo d e - 0155 0 0 proc Iproc p roc rw , noexec , nosuid ,n o d ev 0 0

(. .. I

Din punclu l de vedere al ulilizaloru lui, procls esle vizibil ca 0 su ila de ' isiere si direcloare cu informatii des pre sistem:

, ,

ruva n hs g ard :-$ cd I p r o c/ ra,va n @as g ard :/ p roc$ 2584/ 21921 U 1021! 25851 2 1 931 1921 25911 21 941 1 9 3/ 26031 27961 1 941 26561 2 8 731

" 29611
2 9 631 29691
29") 11

29761

30271 30281 30291 3052{ 30661

acpil asoundl b uddy i n fo

'" '"

,"

filesystems idel
in t errup t ~

mt r r

netl
pa rt ition s
~ ~lf

iomem

slab i n fo

(. .. 1

128
Informal ii despre procese

lNTRODU CERE iN SISTEME DE OPEAARE

Intormalii despre procesele din sislem sunl oferite de procfs prin intarmediul
directoarelor al caror nume esle un numar. Aces! numar reprez inta pid-ul procesului

despre care S9 dareste allarea de informali;.


In conti nuare vom prezenta diverse informatii continule in directorul din /proc asocial

unui proces.

Vorn prezenta ca studiu de caz procesul Iolosi! pentru editarea unui


Fiind vorba de Open 011 iCe, numele executabilului din care a lost
p s -c s off i ce . bin

document Wo rd.

general proces ul esle sof f ice . b i n:


r&zv~n@~sq~rd : !proc$

" '"' '" Se peate observa ca procesul asociat Open Office are pid -ul 3066 si ca atare va fi
9tat

, , ,

PID TTY

TIME CMD

3066

00 : 01 : 02 s off1ce . bin /proc$ cd 30Hi

ro.v~n@ ... gH d: r~.v~n@ ... g,,"d

au xv
cmdline

...

: /p r oc/3066$ envnon mountstats ~" oO"Lad j mounts OO"LSCOre

"

root amapa

statm status task!

wchan

accesat directorul 3066. Acest director contine 0 serie de fi~iere , directoare ~i legaturi simbo lice care ole ra inlormali i despre proces. Astlel. legatura simbolica exe ole ra informatii despre executabilul utilizat pentru crearea procesu lui; fisierul e md lin .. si fisierul environ precizeaza linia de comanda folosita 5i mediul de crea re (environment):
2

,
,
,

ra.va n @aagara ; /proc/3066S Is - I exe lrwxrwxrwx 1 ruvan razvan 0 2007 - 08 - 04 12:0 1 exe - > lusr!lib!openofficel program/soffice . bln r&zvan@asgara : !proc!3066S CU cmaline I u ~ r I 1 ib! op ~ noff i c ~ /progr ami s o f f ice . b i n - wr i t ~ r -~ pl a s h - p 1pe - 5 razvan@asgara: /proc13066S ca t environ 55HJl.GENT_ P I D- 2 9S0SHE LL - 1 b in Iba s hGTK.-RCY I LES - I et c/9 t k I 9 t krc : Ihome! r azvan I . 9 rk r c- l . 2 - 9 nom.. 20 LD PW D_1 usr /1 ib! ope n off i c .. USER_ ra<vanOPENOFFICE_ MOZI LLA_ FIVE_ HOME _! usr/ li b/op .. noftice I
pro9 r amLD_ L I BRARY-YATH_/usr/lib/ope noff i c~/pro9ram

I I

FiSierul status olera, printre altele, informalii referitoare la utilizatorul ce deline l i ~ierul executabil ( ui d 1000 ), starea procesu lui (s - sleep), cantitatea de memorie ocupate, numarul de threaduri etc:

, , , , "
"

razvan@a'9a r d : /proc/3066$ ,.c s t a tu s soffic ~ . bin Name : Sta t e : Istee p in9i


5h~pA'lG '

m
1000 1000 1000 1000 1000 1000

I .. 1
Uid : Gid :

,. ,

1000

1000
205120 202392 0

'lmPea l:, '!mSite : vmLc k:

'" '" '"

CAPITOlUl S. PR OC ES E

129

" " " " "

VmHOIM , 'lmRSS : Threads:

84040
80%8

, ,

( ... I

'" ,'"

Direclorul ta.s k / olera inlormalii despre th readurile aceslui proces. Nu insislam PEl noliunea de th read, deoarece depa~e~te aria de cupri ndere a acestui capitol.

,
,

razvan@ asqard : !proc!3066$ cd tasK! razvan@a ' qard : !procI30H/tasK$ ls 3066 3067 3068 3069 3070 3071

Directorul fd/ detine legaturi simbolice dUre fi~iere deschise de procesul curent. Se observa, printre fisiere deschise, si fisierul cu extensia .doc care este editat (Raport.doc):
, , , " razvan@ a . qard : iproc/3066$ cd fdl razvan@ asqard : iprocI30HlfdS I s 22 24 0 10 12 14 16 18 2 1 1 1 13 1 5 I i 19 20 23 25 ra, v a n @asga r d,!proc/3066ifdS tota l Ir - x -----ruvan uzvan 1- ,," -----u.van ruvan I -w,,-----rUva n uzv a n

" " " " " "

26 2i

28 29

3 30

31 32

33

35

34

36

, ,.. . ,

(. .. I ir-x---- -(. .. I lr .. x ------

" , , , , ,

"

-,

"

, ; " , ,

ruva n r u v a n razva n rUvan

..
"

" " "

2009 - 06 - 04 13,31 2009 - 08 - 04 : 31 2 009-08-04 : 31 2 009-08 - 04

2009 - 08 - 04 13 : 31

" " "

: 31

, " " "

-. -. -,
-,
-,

Idev/null p i pe : ( 67701 p . pe : (9795] Idev/urandom I h ome/razvan/RapOrt .

Alte informafij utile In afara informal iilor des pre procese, procfs olera si alte informatii utile des pre sistem. Acestea pot Ii allate tot prin accesarea unor fi~iere ~ i directoare din /pro c . Prinlre informatiile utile (folosile, de asemenea, de diverse utilitare din sistem), se gasesc informatii des pre: procesor: prin accesarea /proc/ cpuin f o; memoria sistemului: prin accesarea /p r oc/memi nfo; partilii: prin accesarea /proc/partitions; timpul de rulare a sistemului: prin accesarea /proc/up t ime ; In plus. accesarea directoarelor de forma /proc/fs/ , /proc/ net / , Ofera informatii suplimenlare, permiland totoclala config ura rea unor parametri ai sistemuluL Astlel procls nu eSle numai 0 inlerfala de citi re a informaliilor des pre sistem, ci este si una de conlig ura re a unor parametri ai sistemului.

130

lNTRODU CERE iN SISTEME DE OPEAARE

5.3 Rularea proceselor in


Daemoni

background.

Job-uri.

Rularea unui proces din interpretorul de comenzi (shell) rezultA de abiesi in alisarea unui
rezultat ~i terminarea procesu lui. Spre exemplu, daca 5e doreste ali~area conlinutului directorului cure nt se ruleaza comanda 1a. Aces! lucru duee la crearea unui proces

fiu din shell, incarcarea executabilului fbi n 11 s ~i executia noului proces incheiata eu terminarea acestuia. Dupa te rminarea procesului, ulilizatorul poate ru la un nou proces
prin introducerea comenzii co respundloare la promptul interpreiorului.

Un proces care ruleaz1'i conform scenariului de mai sus se spune ea ruleaza in


foregrou nd (in prim plan). Un proces care ruleaza in loreground are acces la terminalul curen\. AWel spus, procese le care ru leaza in loreground pot citi de la intrarea standard (standard input) si pot alisa informa!ii la iesirea standard (standard output) . De partea cealaltii, un proces poate rula in background (1n fundal). Un proces care ruleazii in fundal pierde posibilitatea de a citi de la intra rea standard. dar i~i continuii rularea.

5.3.1

Rularea unui proces in background

Rularea unui proces in fundal se realizeaza cu ajutorul operatorului ~ dupa comanda. Acest operator va crea procesul asociat comenzii introduse ~i va forta rularea acestuia in fundal. Avantaj ul acestei abordiiri este faptul ca se of era inapoi promptu l interpretorului catre utilizator, in felul acesta utilizatorul putand introduce 0 noua comanda. De obicei acest lucru se reali zeazii cAnd comanda de executat dureaza mult timp. ca de exemp lu cautarea unui fi~ier, actualizarea bazei de date de cautare (updatedb). rularea unui proces cu inter/a!a gralica etc. Procesele care ru leaza in fundal sunt denumite job-uri. In exemplul de mai jos, se ruleaza comenzi le de deschidere a editorului XEmacs si a calculatorulu i din mediul grafic GNOME. Ambele programe sunt pornite in fundal:

, , , , ,

r~'v~n@ ... gara

ruvanhsgara
3420

ruvan@asgard

'" '"

3416

-, -, -,

Kem"cs

, ,

gnome - calculator

Oupa rularea unei comenzi in fundal se observa ca apare un mesaj specific de forma [N ) M. in acest format N este indicele job-ului (indicele procesului care ruleazii in fundal) , iar M este identificatorul de proces (pidul) pe ntru job-ul din fundal. Avantajul rularii acestor procese in fundal , a~a cum a fost precizat si mai sus. este faptul ca interpretoru l de comenzi olera inapoi promptul utilizatorului perm itflndu-i astlel rularea de noi comenzi.

CAPITOLUL 5. PR OC ESE

131

5.3.2

Suspendarea unui proces

Un proces care ruleaz11 in foreground poate Ii forlat s11 intre in bacJ<.ground (si implicit s1!. intre in starea suspendat - nu ru leazA) prin intermediul comb inatiei de taste CTRL - Z (control !inut ap11sat. dupa care se apasa z). Apasarea acestei combinalii de taste este interceptata de sistemu l de operare si procesut achy (attat i n foreground) este fortat sa lie suspendat in exemplul de mai jos, utilizatoruf a darit editarea fisieru lui out . txt fofos ind vi. Procesul creat prin executia comenzii v i out. txt rufeaza ini!iaf in foreground. Utilizatoruf a apasat apoi CIRL - Z si a fOl'\at suspendarea procesufui curent in background si oferirea promptufui catre utilizator:
r~zv~n @~ 'qard

-$ vi

OU~ .t x t

> (3];

Stopped

vi out.txt

Se obse rva ca procesuf a fost suspendat (slopped)

~i

sa creat jobul cu numaruf 3.

Un scenariu asemanator este prezentat ~i in exemplul de mai jos. De data aceasta utili zatorul foloseste utilitarul du pentru a vedea spatiul ocupat de fi~ie rele si dire<:toarele din dire<:torul cure nt:

, ,
, '" " "
"
,

'"
'"

" " " "

razvanh.gard ; -$ De,ktop Download 528K bin book; 756K code S32K jun k 3 . 2M officia l 4 . 0K out. txt package. 165M peop l e 617M pict ure, 11 6M project.
I022M

'" -"

'"

(4 ] +

Stopped

'"

- 00

r ~ zvan@a .gard : -$

5.3.3

Controlul job-uri lor

Termenul de job a fast introdus referito r la procesele ca re ru leaza sau sunt suspend ate in fundal. Interpretorul de comenz i (s hellul) bash pune la dispozi!ia utilizatorului mai mulle eomenzi prin intermediul earora se poate interaetiona eu procesele din fundal. Mai multe informalii despre ace ste comenzi pot Ii gasite prin consu ltarea paginii de manual (ma n ba sh , se<:liunea JOB CONTROL) sau pagina info (info b ash. se<:tiunea "JOB CONTROt.:'. Trebuie instalat pachetul bash-doc).

132
Comanda j ob s

lNTRODU CERE iN SISTEME DE OPEAARE

Comarlda jobs aliseazAjob-urile pentru term inalul curent:

, ,

r~' v~n@ ".g,,"a

-, -,

jobs

'" , '"

(3] -

( 4 1+

Running Running Stopped Stopped

.,
"

xemacs gnome - c a 1 cu 1at or


M
- ",

'"

ruvan @ asga rd

Se poate observa ca sunt patru job-uri dintre care doua sunt in rulare (Running) iar celelalte dOllA sunt suspendate (Slopped) . Semnul -+- esle lolosil pentru job-ut curef1t
(cel mai recent job). Semnul - esle folosit pentru job-ul anterior job-ului curen!.

Come nzile bg Si Ig
Utilizatorul poate determina rularea comenzilor care sunt suspendale (f ie au lost pornite in funda l, he au lost suspe ndate prin comb ina\ia de taste CTRL - Z). Acaste procese isi

pot continua execUlia in foreground sau in background. Daca se dore~te continuarea in


bacJr.ground a execuliei unui job suspendat, se loloseste comanda bq; daca se doreste continuarea axecutiei In foreground a unui job suspend at, se loloseste comanda f<;J.
in exemplul de mai jos, utilizatorul a decis continuarea execuliei job-ului [4] in background . Rularea comenzii bg 11Ir1l niciun parametN are ca elect continuarea job-ului curen\. Daca se dore~te rularea job-ului n, se lolose~te argumentul ~ n (spre exemplu bg \5 penlru ru larea in background a job-ului cu indicele 5).

" "

, , , ,

r a ""an@ as\"Ia rd : -$

( 41
I. 2(; 2 . 51-1 I. 7(;

"

. -" schoo l

.. "'
jobs
job ~

sha r e d - proj ~ c t "

v mwa r ..

ruva n h sgard Running Runn ing (3] + Stopped (4 ] [lone

-,

'" '" '"

~emacs gnome - ca l cu l ator v i out t n

&

au - ho
~emac" , gnome- c a lculator &

" " "

" "

r a ""an@ asga rd : -$
Runni~g Ru~~ing 5topp~d

(2] -

( 3) +

Se poate observa cll s-a conlinual rularea job-ului [4] in background dupa. care procesul asociat s-a terminal. Mesajul Done esle af i ~at la incheierea rularii unor job-uri. Spre exemplu. daca vom inchide din mediul gralic gnome-cak:ulator si xemacs, mesajele afi~ale vcr Ii aseman<litoare cu cele de mai jos:
2

ruv a n hsgard ' -$ II ] [lone (2] [lone

~emac"

gnome - c a lcul a tor

CA PITOlUl S. PR OCESE

133

"
6

r~.v~ n@~. g ~rd: -$

job s

(3] '

Stopp .. d

vi out . txt

DupA terminarea celor doua job,uri, mai rAmAne in background doar jobul3 (cel asocial editorului vi ). Avand in vedere ell. este singurul proces ramas, v i poate Ii adus In loreground utilizAnd eomanda t"q sau t"q %3:

ru"an@a9g3rd : -$ [g vi out.txt

Dupo'l rularea acestei eomenzi, utilizatorul poate continua editarea 1isierului out . t x t.

5.3.4

Daemoni

Un daemon este un tip particular de proces care ruleaza in fundal. Fa!a de procesele care ruleaza in lundal (pornite prin intermediul operatorului &) sau care sunt suspendate in lundal (prin intermediul comb ina!iei CTRL -Z ). un daemon se detaseaza de termi nalul de control. Astlel, un daemon nu va putea comunica direct cu utilizatorul prin intermediul te rminalului: nu va accepta comenzi de contro l de la taslatu ra ~ i nu va afi~a rezullale la terminal. Comunicarea cu un daemon sa lace prin mecanisme mai complicate (ca de exemplu semnale - vezi sectiunea 5.4). Ini!ial denumirea de daemon nu a avut nicio semnifica!ie. Ulterior a lost gasila 0 abreviare pentru aceasta (backronym) da la Disk And Execution MONitor. De obieai, procesele care sunt daemoni au numele terminat in d: hald, udevd, sshd, inetd etc. (lara a Ii Insa 0 regu la). Penlru selectarea proceselor care nu au alas ate niciun termina l (si ca atare pot Ii daemon i), se loloseste ps cu argumefltul - t (pentru saleetia dupa terminal) urmat de opliunea - (se mnul minus inseamna procesele care nu au ata~ate niciun terminal).

, ,, , , , (. . I , , , , ,. , " , " I " , " , " , " , "


26 5 7 2665 2666 2676 2669 2695

, ,

r~zv~ n @3.gu d

'" , ,

-,

00 : 00 : 00 In;t 00 : 00 : 00 l: .oft>r qdfO 00 : 00 : 00 evento/O 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 , 00 : 00 00 : 00 : 02 00 : 00 : 00 00 : 00 : 00 00 : 00:00

"

-,
TIME

,.,
ex.m4 fbguar d fbs ecver inHd ssh d vs ft pd g .. dit gnom .. - scr .... n sa v gn ome - termt nal gnome - pty - h .. l p .. r

! .. .

3006 3009 3016 3017

Se observa ca nu toate procesele care nu au atasate un term inal sunt procese daemon. Spre exemplu, procesul gedit (pid 3006) nu este un daemon In adevaralul

'"

lNTRODUCERE iN SISTEME DE OPEAARE

sens al cuvanlului. Desi nu are atasat niciun terminal de control, S8 poate comunica prin intermediul mediului gra/ie. in plus lala de a nu avea asocial niciun term inal, un procas daemon va ru la in background, eli min and posibilitatea comunicarii directe (tastatural mouse) cu utilizalorul

Interac!iunea cu procesele daemon

Se puna I1"1s1l intrebarea cum poate utilizatorul sa interactioneze cu procesele daemon,


In mllsura in care nu 0 poale face prin intermediul intr1lr1i ~i ie~iri i standard. Cele dOU3 mecanisme care permit acest lucru sUi'll fis ierul/l isierele de configurare si semnalele. In general, procesele daemon au unul sau mai multe fi~ i ere de config urare . De exemplu: setver-ul web apache2 folose~te I e t cl apache21 apache2 . con f ; server-ut SSH openssh IoloseSle letc/ssh/sshd_ con f ig ; server-ut X (mediul gralic) lolosesle letc/Xl 1 I xorg . con f; Acesle li~ie re de conHgurare sunt cilite in momentul crell.r ii procesului daemon ~i permit controlul lune!ionll.rii acestuia. De exemplu, in cazul serverului openssh, lisierul de conligurare permite conlrolul tipu lui de autentilieare (cu parola sau prin chei publ ice), porlul pe care serverul asculla, daca serverul permite X lorwarding etc. Daca se doreste alterarea comportame nlului serverului, se ed ileaza lisierul de config urare. Dupa salvarea li~ieru lui. trebu ie reporn it procesul daemon. acesta va cili lisierul de conf igurare si va slabi li noul compo rtamenl conform co nliguratiei din fis ier. Oprirea, suspendarea ~i repornirea unui proces. in general , si a unui daemon, in particular, se realizeaza cu ajulorul semna lelor. Daca in cazu l unui proces care nu esle daemon, acesla poale Ii opril sau suspendal si prin in termediul lerminalului (pr in combinatii de tasle). un proces daemon poate Ii opritlsuspendatlrepornit doar cu ajutorul semnalelor. Despre semnale se va discuta in seqiunea 5.4.

Comanda nohup Comarxla nohup poate fi utilizali'l. penlru a rula un proces cu caracteristici de daemon. Ulilizare a aceslei comenzi determina ignorarea de catre proces a semnalului SIGHUP (acest semnal este trimis de un term inal ci'l.lre procesele sa le cop il atunei cane! este inehis). nohup este lolosil, de obieei, atunci cand utilizatorul va dori sa pi'l.ri'l.seasca terminalul dar comanda sa l ie ru lala in continuare. Comane!a nohup este urmata de comanda ce va Ii rulati'l. penlru pornirea procesului si de caracteru l ~ . Un exemplu eSle prezental in conlinuare:
a ~ ga r d : /ho rn ~/ r a zv a nf

nohup

upda t ~db

&

, ,
"

(1)

3116

asgard:/home/rarvanf nohup : appe nding output to ' nohup.out ' as g a r d : Iho rne/ruvan' P$ - e

( ... 1
3116 pta/l 3124 pt"/l

00 : 00 : 00 upd~tedb 00 : 00 : 00 upd&tedb

CAPITOLUL S. PR OC ESE

135

" "

'" "

3125 3126 3127 3129

pt.! l pt.! l pts!l pt./l

00 : 00 : 00 fina
00 : 00 : 00 sort 00 : 00 : 00 frcode 00,00 : 00

Se observa ca procesu t creat (updatedb) nu pierde controlulterminalului curent. insa nu se poate comunica cu acesta prin inlermediul semnalelor de suspendarelrepornire sau intrarii/iesirii standard. Dupa cum reiese si . din rezuHatul rularii come nzii, iesirea . acesteia este redirectionata in fisieru t nohu p . ou t .

"

5.4

Semnale

Semnalele su nt mecanisme de notifiCare as incrona ca re SUflt utilizate pentru a Iransmite 0 condilie speciala unui proces. Semnalele sunt as incrone in raport cu Iluxut de rulare al procesului. Astlel, un semnal nu este core tat direct cu instruc!iunile executate de proces. putand Ii transm is/pr imit la un moment de limp nestiul de protes. Semnalele sunt transm ise in doua moduri: de nu cleu (kernel) pentru a indica 0 conditie neobisnuita care solicita oprirealsuspendarea sau doar nolificarea procesului; de utilizato t. Semnale care sunt Iransmise uzual de nucleu sunt urmMoarele (acesle semnale se pot trimite si de catre utilizator, dar cet mai adesea tunt tr imise de catre nucleu): SIGS EGV (signal segmenf vio/alion): in momentul accesarii invalide a unei zone de memorie; SIGBUS in momentul unei erori pe magislrala sistemu lui; SIGFPE (signal floating poinf error): in momentul aparitiei unei erori de virgu la mobila; Sl GTERM (signal termination): pentru oprirea unui proces; SlGKI LL (signal kill) ; pentru oprirea necondi!ionata a unui proces. Semnale care sunt transmise uzual de utilizator sun!: SIGINT (signal interrupt): inlrerupe procesui curenl; SIGQUIT (signal quit): semnaleaza opr irea procesului curent; SIGSIOP (signal SlOp): suspenda procesu l curent; SIGCONT (signal conlinue): reporneste procesul suspendat. Nu vom insista pe modul si condili ile in care nllCleul transm ite semna te unui proces, ci pe modulln care utilizatoru lle transmite. Utilizalorul poate transm ite unui proces semna le in doua moduri: prin intermediul unor comenzi speci/ice: kill . killall ; (vezi sec!iunea 5.4.2)

136

INTRODU CERE iN SISTEME DE OPEAARE

prin intermediul unor comb inatii de taste specifice. (vez; sectiunea 5.4.3) Informatii detaliate despre semnale sa pot alia prin consultarea paginii de manual (man 7 signal).

5.4.1

Semnale importante UNIX

inainte de a discuta des pre modul de interac!iune a utilizatoru lui cu procesele prin
intermediul semnalelor,

trebu iesc aminlite cflteva semnale importante (unale mentionale si anterior). UsIa comp leta cu semnalele pe care Ie clera sistemul de operare poate Ii vizualizata lolosird comanda kill CU op\iunea - 1 (lis/):
r ~ """n@ "'\'Ia rd : -$ kill

, , , ,

-,

", " " '" ", " ." " ,.


" ,. "

", ", ", m


", ", ", ",

" " ",

"

S I GHUP SIGTRAP SICKILL

SlCPIPE
S!GC~ L D

SIGT'I'IN SIGXI'SZ SlG10 SlGR'I'MIN + l SIGR'I'M I N+S SlGR'I'MIN + 9 SIGR'I'MIN +13 S I GR'I'MAX - 13 SIGR'I'MAX - 9 SIGR'I'MAX - 5 ." S I GR'I'MAX- l

. .. .

", ", '", '" ." .,, '" '" .,

" " ", ", '",

SIGINT SIGABRT

SIGUSRI
SIGALRM S I GCONT SIGTTOU S I GV TALRM SIGPWR SIGRTMIN+2 SIGRTMIN+6 SIGRTMIN+ I O SIGRTMIN+14 SIGRTMAX - 12 SIGRTMAX - 6 SIGRTMAX - 4 SIGRTMAX

.
'" ., '" ", on '"

", ", ", ", '" '" ",

" "

SI GQU I T
SIGBUS

SIGSEGV
Slt'l'ERM SIGSTOP S lGURG SIGPRor SlGStS SIGR'I'MIN + 3 S I GR'I'MIN+7 SIGR'I'MIN + l1 SIGR'I'MIN +1S S I GR'I'MAX - ll S I GR'I'MIIX-1 SIGR'I'MIIX - 3

., " ", ", '", ", '"' ." ." '",


'" '" ",
", ",

SIGILL SIGFPE

SIGUSR2
S I GSTKFLT S I GTSTP S I GXCPU S I GOI I NCH S I GRTMIN SIGRTMIN+4 SIGRTMIN+6 SIGRTMIN+12 SIGRTMAX- 14 SIGRTMAX- IO SIGRTMAX-6 SIGRTMAX- 2

Se observA d. un semnal are un numAr de identificare ~i un nume care of erA indicatii despre efectuf s<'iu asupra proceseior. Semnafefe refevante sunt cefe pan<'i fa 3t (SIGSYS ). Celelalte (SIGRTMIN . SIGRTMAX ) sun! semnale de limp real (SIGnal Real Time) si nu sunt re levante pentru prezentarea curenta. Vom prezenta cateva dintre semnalele cele mai importante:
SIGHUP (1) (signal hang up): esle lolosi! penlru reporn irea unui proces: acest

semnal este de obicei transmis proceselor daemon pentru reporn irea acestora si recitirea fi~ieru l uVI~ie(elor de conligurare:
SIGINT (2) (signal interrupt): este lolosit pentru a intrerupe un proces: de obicei,

efectul imediat este terminarea procesului;


SIGQUIT (3) (signa/quit): este lolosit pentru inchiderea unui proces ; este mai puternic decat SIGIN T: unele procese pot Ii terminate eu SIG QUIT dar nu cu SIGrN T ;

STGT L L (4) (signal illegal): procesut executa 0 instrucliune invalida; SIGKI LL (9) (signal kill) : eel mai puternic semnal; termin<'i in mod neeonditionat un proces SIGSEGV ( t t) (signal segment viola/ion): semnal transmis in momentul accesului invalid la 0 zona de memorie; rezult<'i, de obicei, in !erminarea procesului si la aparilia mesajului "Segmentation fau lt";

CAPITOlUl S. PROCESE

137

SIGTE RM (15) (signal lermimJ/ion): lermina un proces; in mod lipic mx:leul transm ite intai SI GTERM unui proces penlru a1anunla ca va Ii terminal: procesul realizeaza opera!ii de curalare (cleanup), dupa care kerne lul transm ite SIGKI LL ~ i procesu l esle term inat: 5 IG5TOP (t9) (sigmJl stop): suspenda procesul curent: 5I GCONT (tS) (sigmJl continue): re ia
e~eculi a

unui proces suspenda\.

5.4.2

Comenzile kill, killall

~i

pkill

Comenzile ki11 , kiUa11 si pkill sunl utilizate pentru a lransmrte un semnal unui proces sau unui set de procese,

Comanda kill Comanda kiU transmite un semnal unui proces, Comanda pr imeste ca argument pidul procesului (sau pidurile proceselor) catre care se doreste sa se transmitA semna luL in mod implicit comanda transm ite semnalul SI GTERM:
razvan@ a.ga rd : -$ xcalc
, I II 3590
p~

, , , ,0
"
,~

razvan@ a'gard : -$
PIO

TTY

TIME

3092 pt.!l 3590 pUl l 3591 pta!l

00 : 00:00 00,00:00 xc a lc 00,00,00 ps

razv a nhsgard:-$ nil 3590 uzvan @a sqa rd : -$ {l]+ TUmiMt e d razvan@ a'qard : -$
PIO TTY 3092 pt.!l
p~

1J

xCalc

" ,.
16 17

TIME CMD

18

3592 pt.! l

00 : 00 : 00 b~ s h 00 : 00:00 p.

Comanda poate Ii conl igurata penlru a Iransmite 5i alt 5emnal in alara de SIGTERM. Astlel, da~ se doreste transm iterea semnalulu i SIGSTOP catre procesele cu pidurile 1234 si 5678, se poale utiliza una din a~ernativele:

,
3

razvan @a sqa rd -$ kill - SIGSTOF 1234 5618 rnvan h sga ra -$ kill -STOP 1234 5618 razvan@ a'ga rd : -$ kill - 19 1234 5678

5e observa cA semnalul poate fi transm is ca parametru fie in torma literalA (SIGSTOP, STOP), fie in forma numerica (19) _

138
Comanda ki1la ll

lNTRODU CER E iN SISTEM E DE OPEAARE

Comanda killal1 eSle folos iUi pentru transmiterea unui semnal caIre un proces sau
catre un set de procese atunei cand se
cunoa~te

numele procesuluL Un exemplu de

utilizare eSle prezenlat mai jos:


<oot@asga~d : /nome/ra~vanf

ps -0 "pache2 - B

PIO TTY

TIME CHD

, " ,0
11

, , "

2792 ? 2793? 2794' 2796?

00 : 00 : 00 00 : 00 : 00 00 : 00 : 00

~pac he2

apache2 a pache2

00 : 00 : 00

apa che2

rooth."ara:/home/uzvanl killall - KILL ap,"che2


. oot @a"qa" <I:/home/ razvan ~

ps - C apaclle2

FlO !TY

riME CHD

in aces! exemplu, s-a trim is semna lul de term inare a unui proces (SIGKILL) caire

toate procesele apache2 din sistem. Modul de transm itere a semnalului ca argument al
comenzii esle
acela~i

ca in cazu l comenzii k i ll.

o op\iune care poate Ii utila este opliunea --user care perm ite transmiterea unui semna l caire toate procesele unui anumit ulilizator. Penlru a putea utiliza aceasta optiune, utilizatorul care apeleaza ki11 .. 11 trebu ie sa l ie root :
"oot@~.q~ra:/hOme/r~zvant

ps - 0 pia , comm , u.er - u quest

PHI COMMAND

USER

, ,
10

J761.u J762 bUh J802 J80J bash 3822 J82S

guest
gunt guest guest guest guest
kill~ll

'"

asq~rd : /ho m e/r ~ zy~n~

"

'"

-- user quest

" "
13

~ s qHd : /horn~/razy .. nt

ps -0 p,d,comm , u.e r - u guest


USER

PHI COMMAND

In situatia de mai sus 5-a transmis semnalul implicit (SIGTERM ) catre toate proeese le utilizatorului guest, rezu lUmd In term inarea ace lor procese.

Comanda pkill Comanda pkil1 poate Ii eomparata eu eomanda pqrep. In limp ee eomanda pq r ep of ere a informatii despre procesele care Indeplineau anum ite er iterii, eomanda pki11 transmile un semnal procese lor pe baza unor crilerii de seleqie a aceslora. La fel ca In calul pqrep. seleclia se poate realiza dupa pid-u l procesului parinte. dupa terminalul utilizal, dupa id-ul utilizatorului sau al grupului. Argumentu l semnal se transmite la fel ca in cawl comenzi lor kill si ki11a11.

CAPITOLUL S. PROCESE

139
combina~ii

5.4.3 Transmiterea de semnale prin

de taste

In alara comenz ilor de mai sus, un utilizator poate transmite anumite semnale procesului curent (cel care ruleaz1'i in acel moment in terminal) prin intermadiul unO( comb inalii de taste specilice. Astlel de combinatii sunt: CTRL- Z: transmite semnalul SI GSTOP c1'ilre procesul curent, care are drept oonsecinl1'i susperodarea aeesluia. 0 sitvatie util1'i este atunei cand se rule az1'i aditorul vi si se doreste rutarea attei comenzi. Se loloseste CTRL - Z penlru suspendarea procesului vi si revenirea la promplul lerminalului, unde poate Ii introdusa noua comand1'i. Oupa inlroducerea comenzii se loloseste oomanda f'l pentru a reacti~a procesul vi. CTRL- C: transmite semnalul SI GI NT cil.tre procesul curent, care, in general, va omori procesul. De obieei. combinatia de taste se loloseste in cazu! in care un proces esle blocal. CTRL- \ : transmite semnalul s I GQUII. Acesta are acelasi rol ca ~i CI RL- C, doar c1l este mai puternic. Trebu>e precizat ca nu toale aceste combinatii de taste au elect pefltru loale procesele, intrucAt unele procese pot ignora semnalele transm ise (pot avea un comportament nonstandard la primirea unui semnal).

5.5

Comunica~ia

intre procese

La lei cum in cadrul unui departament mai mu!!i camen i con lucreaza pentru a indeplini o sarcina, si in cadrul unui sistem de operare procesele acestuia interactioneaza. Interac?ur.ea proceselor intrun sistem de operare poarta numele de comunica~ie intre procese. De ce este nevoie de comunicalie intre procese? In primul rand pentru ca un proces peate avea nevoie de resursele pe care i Ie pune la dispozi)ie un all proces. Spre exemplu. in cazul utililarului t op, acesta culege informa~i pe care i Ie lurnizeaza alte procese prin inlermediul nucleului sistemului de operare ~i al sistemului de li~iere procls. In all1'i situatie, un proces A trebuie sa a~teple ca un alt proces B s1'i lermine 0 sarcin1'i pentru ca A sa poata continua. Aceasta forma de eomunieatie intre A ~i B se nume~te sincronizare: un proces Irebuie sa a~lepte un all proces. Comunicatia intre procese este intermadiata in diverse moduri: eu ajutorul unui li~ier, a unui socket. a unei zone de memorie sau a unui canal de comuniea)ie (pipe). Intermadierea prinlr-un li~ier esle destul de simpl1'i: un proces serie 0 informatie inlrun lisier, iar un alt proces 0 erteste. Nu vom prezenla comunica!ia prin intermadiul unui socket sau a unei regiuni de memorie. intrucat dep1'i~esc aria de cuprindere a acestui cap itol . Vom diseuta, i nsil., despre comunicalia prin intermediu l unui canal de comunicatie (pipe).

140

INTRODUCERE iN SISTEME DE OPEAARE

5.5.1

Operatorul l (pipe)

Operatorul I (pipe) esle folosil pentru a asigura comu nicatia intre doua procese ru lale din linia de comanda. lolosind un canal de comunica!ie numit pipe. Comunicatia prin intarmediul unui pipa asta 0 imbunatatire a comunicati ei prin inlermediul unui fi~ier. Astlel. in cazul comu nicatiei prin inlermediul unui fisier. un proces sc rie datele de ie$ire intrun fi$ie r iar un alt proces folose$te acel !isier ca inlrare. in caw l comunica!iei prin pipe. i e~irea primului proces este folos ita direct ca intrare pentru al doilea, lara a mai Ii nevoie de un lisier pe disc. Vom lolosi pentru exemplrticare comanda 9 r ep, care cauta un cuvanl in cadrul unui lisier. Dac!i, spre exemplu, dori m aflarea de inlorma)ii despre procesele bash din sistem lolosind qrep, ar trebu i, in prima laza. sa redireclam iesirea comenzii p a intrun lisier, iar apoi sa folosim q rep pe acel li~ier, ca in exemplul de mai jos:

" "
, , , ,

, , , ,

r a zv~n @ ~ sqa rd : - $
r~zv~n @ ~.q~ r d

p~

-e >

p ~ . ou t

-,

J029 pt.!O Jon pts/l 3299 pts!2 JJ17 pts!2 3740 pts!3 3758 pU/3 3181 pts/4 3799 pts/4

qr..p b~~h p ~ . ou t 00 : 00 : 00 ba$h 00 : 00 : 00 buh 00 : 00 : 00 b o sh 00 : 00 : 00 ba$h 00 : 00 : 00 buh 00 : 00 : 00 bash 00 : 00 : 00 b a sh 00 : 00 : 00 b~ s h

Acelas i rezultal ca mai SUS poale Ii insa realizat prin inlermediul operatorului I . faraa mai Ii nevoie de intermedierea printr-un fis ier:
r~'v~n @ ~.qu a

J029 3092 J299 3317 3740 3158 3781 3199

pto!O pts! l pts!2 pts!2 pU/3 pts/3 pts! 4 pts/4

-$ P$ - e 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00 00 : 00 : 00

grep buh b o sh ba$h buh bash b a sh bash

b~sh

b ~ sh

Pentru a exemplilica puterea acestui operator vem conside ra urmatoarea problema: dorim sa aflam primii 3 ulilizalori din sistem care au direclorul de baza in /home, ordonati i n ordinea alfabelica a numelui de ulilizalor. Informatii despre utilizatorii din sistem se gasesc in /etc/ p asswd. Vom lolosi grep penlru a exlrage ulilizatorii care au direcloru l de baza in /home :
2

, 5

rnva n hsgard : -$ cat letc/pus wd I g rep / h ome utvan : ~ : 1 000 : 1 000 : ruvan , , , : !home!ruva n : Ibl nlb a sh ha ldaemon: " : l OS: 106 : Hardware abst ract ion layer , . : / home/h~ 1 daemo n, fbi n / false guest : ~ : 1001 : 1 001 : Guest Account " , : fhomelguest : Ibin/ba s h ftp : x : 107 : 65534 :: fhome/f t p : !bIn/false

In COnlinuare vom sorIa rezultalul obtinut, dupa care vom reline numai primele 3 intrari:
ra.van@asgard : -$ c a t /etc/p&ss wd I grep Ihome I
so~t

CAPITOlUl S. PR OCESE
> ftp , x '1 07:65534 ,: / home/f tp : /bi n /hloe
3

1<,

,
8

"

gue st : X , 100 1 : 1 00 1 : GueH Account " , : I h o me I guest , Ibin/bash ~al d ae mon : " : 1 OS, 106 : Ha rdwa~e abstractio n layer " , : I h ome I ~a 1 daemon: lbi n l false ruva n:x: 1 000: 10 00 , ra~van , , , : Ihome!ruva n: I bin /bash
ruvan@asg~rd : -S cat letc/pass wd I grep !nome I so~t I ~ead -3 ft p : x : 101 : 65534 :: /home/ ft p : /bin/false gU~5t ' '' : 100 1 :1 001 : Gue~t Account, : !hom" !gU.,3t : / bi n/b~ ~ h ~a 1 d ae mon : ~ , 1 05 : 106 : H &rd ~ &ce &bst r action l~yer ", : I home Iha I daemon : Ibi n! fa he

10

5.6

Swapping

Ull cOllcept importallt ill studiul sistemelor de operare si al proceselor acestora este conceptul de swappillg. Swapping este 0 masura compensare a cantitatii insuliciente de memorie RAM de care dispune Ull sistem la un momellt dat. Pelltru compellsare, sistemul de ope rare va lolosi 0 portiuoe din disc penlru sioearea dalelor din RAM. in cazul unui sistem incArcat (cu multe proeese), memoria RAM se poale dovedi insulicientA pentru a satis/ace toate proeesele. In aceastA situa!ie 0 parte din pagilli le de memorie din RAM sunt evacuate (swapped) pe disc pentru a lace loe pentru pagini le de memorie utile ill momelltu l de laid. in momentul in care pagillile evacuate SUllt dill nou necesare, se vor evacua alte pagini penlru a se aduce la loe cele curente. Principiul swapp ing -ului este prezentat in /igura de mai jos .
Memoria RAM e,te pl lna $1 u n nou P' <><:u, ~re ne . oie de me mo,ie Una di n pag inl le d in RAM est" e. a < ua l ~ in SWAP loc ui pa ~l n ll Pn-l est" luat de 0 pagina a ~o u l ui pnxe .

Pn-l

'"
...
e;

>0, ...
SWAP
e;

'"

P ocr, n

'"
e;

...
SWAP
u

"
SWAP

" " RAM

" p0 " RAM


Figura 5.3: Swaping

" " RAM

Pe sisteme le UIlUX swappi ngul este realizat ill gelleral pe parti!ii dedicate (pa rt ilia de swap - vezi sectiunea 2.2.2). care sunt lolosite in cazul in ca re memoria din sistem este insulicieilla. in cazul Windows, spaliul de swap aloeat din partiliile sislemului. fiind utilizate in acest scop lisiere. Pentru a alia informalii despre spatiul de swap utilizat in linu x se poate folos i comanda fre e (aceste informa!ii se gasesc si i n zona de sumarizare din ecranul t op):

,
)

total Mem: 514748 -1+ b u ff e rS/c~che : swap : 497972

u$ed 336876 131784

tree
111812 382964 497912

shared

"

buUers 19892

cached 185200

nght

mater~1

,<2

INTRODU CERE iN SISTEME DE OPERARE

Sa observA eli sistemul beneficiaza de 512 MB de memoria RAM 5i . nu aSia folosi! spatiul . de swap_

5.7

Studii de caz

5.7.1 Managementul proceselor/serviciilor pe Windows


In Windows, un proces are caracteristici asemAnAtoare eu procesele din Linux. TOlu~i,

desi un proces asia creat prin intermediul altui proces, nu exista 0 ierarhie de procese ~i nici no!iunea directa de proces parinte 5i proces liu. La lei ca 11"1 Linux, un proces aSia identiliCat printr-un PID, are asociate zona de memoria 5i !isiera deschise etc.

Tas k manag er

inlerfata de vizualizare si gestiune a proceselor in Windows asia asiguratA de Task Manager. Pentru pornirea acestuia sa loloseste combina!ia de taste CTRL - ALT - DEL sau CI RL-SHI FT - ESC sau click dreapta pe bara de taSk-uri si selectarea optiunii Tas k Manage r din meniu.

Ell' "", ... 'J.- ""-""""

_ ........"'""" 1 .."""""',-

1 ...... ,

... ._,m ....".,.. . ._,, . .. -"""",,

Om_
,,., ,.,,.

. -.'"
_

-- . -- . - -.
_ ~ ,,"'. ,,"

" "

[JJ [JJ [JJ

" " " " , . , ,"""

"""""" ""VIC!'

00

"- . " ..,


. m

"""""" ,...VlC!'
,,.,, '"

~0."...

[JJ

00 00

Figura 5.4: Windows Task Manager Task Manager poate fi comparat cu utilitarul top. AliseazA inlormatii des pre procese ~i despre sistem ~i poate Ii configu rat pentru personalizarea afisArii sau pentru interactiunea cu procesele din sistem. In mod implicit, Task Manager afiseazA numele programului care a general procesul, utilizatorul care a creat procesul, procentajul de procesor to losit si memoria utilizalA. Daca se doreste afisarea altar campuri se paate accesa meniul View->Select

CAPITOLUL S. PROC ESE

143

Co lumns. Sa pot afisa PIDul procesului, memoria virtualli utilizatli, maximul de memor'e utilizat, numarul de fi~iere deschise, numlirul de thread uri etc. In atara vizual izlirii proceselor din sistem, Task Manager mai oterli urmatoarele servicii: permite crearea unui nou proces prin introducerea imaginii de executabil asociate (File->New l a-5k (Run ... J); permite monitorizarea ~i analiza performan!ei sistemului, prin accesarea tabului Pe r f orman c e; in tormati ile de aici sunt asemMlitoare eu eele olerite da top in zona de sumarizare: permite deeonectarea unui utilizator, sau oprirea, repornirea sau suspend area sistemului (meniul Shut Do '",n): permite tarminaraa unui procas: sa salecteaza procesul dorit 5i se apasli butonul End Proc e ss. Se poate observa cli Windows Task Manager olera caa mai mara parte din laeititati le lurnizate de comenzile Unix de interactiune cu procese sistemului. Un utilitar puternic de vizualizare Si control a proceselor pe Windows este ProcessExplorer ' .

Services

in Windows, procesele daemon poartl\ numele de servicii . Ga ~i in linux, serviciile sunt procese care ruleazli in background Si sunt lolosite pentru monitorizarea si intre\inerea sistemuluL Fereas tra de interae(iune eu serviciile Windows este afisata, in Windows XP, prin accesarea Star t -> Con t r ol Pane l ->A dm ini st ra t i ve l ool s-> Se evie es sau elic!<. dreapta pe My Comput e r - >Manage - >Ser vices. Eeranul afi~at prezinta toate servici ile sistemuluL Coloanale al~ate indica numele serviciului, 0 scurti!. descriere, starea lui (opril sau pornit), modul de pornire a servieiului (dezactivat, manual sau automat si, la Windows Vista, intarziat). Pentru pornirea, oprirea sau repornirea serviciului, ca ~i pentru sehimbarea modului de pornire, se acceseaza meniul contextual al serviciului (click dreapta) si . se se~cteazli optiunea . pr oper t ies :

5.7.2

Procese importante
~i

Oriee sislem de operare deline un sel de procese eu rol important In rularea intretinerea sistemului de operare.

Procese importanle Linux

Procese importante in linux sunt:


, httpl/wwN.mic rosoft.c omlt8ChoeV. ys;otern a t siutil ~ie.1P roce. sE Xplo'. f.m sp x

C JPYnghted matanal

1<,
'

INTRODU CERE iN SISTEME DE OPERARE


~

... ..

........ -_ . ....... _ .. ...... ...... ....... --, . _ ........ -. ....... ... . ..... -.- .- -- .......
... - "' ..
"

~~~~~~-

""

'''' Loo .......

- ".-.
coo. ..... ",
,
...-.~

..

''''

""
'''' ""

",,_s.,

""-~

....,
,

....

Ho",

"" 'oo........
""

Figura 5.5: Windows Services

u....~

I LOI1On I At<Ol' l D..... ,;., ..." I

~~~=--- .lJE

[iI'.lm
.<d.o: 00"Id
. ID""' ~"

<0<"', 0 _ N..... S""... 1ll"5] ::::J


n .. _ ri<wod.

..:J

y"" , .. ,.,..,.. .... ~ ......- . ., "'" _~_ ..... ~ ort "" . ...... ""

--

Figura 5.6: Intarfata de contrOl a serviciului Windows de DNS

i nit : esle procesul ell pid-ul 1 in sistemele Unix si esle pArintele Muror
proceselor; rolul sAu nu se limiteaza doar la a porni celelalle procese importante

CAPITOLUL S. PROCESE

145

in sistem ci si de a deveni procesul pilrinta pentru procesele rilmase onar"le ; k swapd (keme l swap daemon): aste responsabi l cu alegerea pagir"lilor de memorie care vor fi evacuate pe disc in momentul in care memoria este insuficientil: pdfl u sh (page daemon): esle respor"lsabil cu as;gurarea cOr"lsister"l)ei bullerelor lolosita da silamul da lisiara; gett y : eSla procasul resposabil cu autentificarea in sistem in term inalele virtuala; getty olera prom ptul login : utilizatorului: xor9: este procesul resposabil cu pomirea inlene)ei grafice si are asociat terminalul virtuallty7 {ce poate Ii accesal prin combi r"latia ALT +CTRL - F7}.

Procese importante Windows in Windows procese importante sun!: 1 Sass (Local Security and Authentication Server): verilica valid italea aulentilicarii utilizatorilor; in cazu l unei autentilicari coracte genereaza un jeton Iolosit penlru daschiderea unai prima sesiuni shell pe sislem ; Isass asle ~i numale unui virus: svch ost {Generic Host Process for Win32 Services}: asle procesul fo losit penlru gestiunea serviciilor din Windows; csrss (Client/Server Runlime Subsystem): esle responsabil pentru crearea ferastrelor de consol<'\ si gastiunea Ihreadurilor:
.;i n lag o n : eSle 0 componenta esentiala a subsislemJlui de aulenlilicare in

Windows ; e x pI 0 re r : esle esle shellul unui sislem Windows, insa cu interlata grafica. Mai multe informalii despre procesele importante Windows gasiti la' .

5.7.3 Prioritatea unui proces


in sislemele de operare moderne, procesele au asociata 0 ptloritate. Aceasta influenteazil probababilitatea ca un proces sil lie planilicat pe proceso(: cu cat un proces are 0 prioritate mai mare, cu alat probabilitatea ca el sa he urmalorul proces planilicat penlfu execu!ie cre~te. De obicei procesele care sa blocheaza des (denumite 1/0 intensive) au asociale 0 priorilate mai mare, in timp ce procesele care utilizeaza intens procesorul {CPU in tensive}, au 0 priorilate mai micli. Prioritalea proceselor nu este fixa. Sistemul de operare poate modifica prioritatea procaseior per"ltru a asigura echitatea planificArii. Totoctalli. si utilizatorul poate modillea prioritatea unui proces daca doreste acest lucru.
, httpl/wwN. n"LJber.comtlasllmanall"f' proce.s'

C JPYnghted matanal

.<6

lNTRODU CERE iN SISTEME DE OPEAARE

Schimbarea prioritBlli unui proces in Linux

In Unux, prioritatea unui praces poarta numele de niceness (cal de echitabil sa comporta un praces raporlalla ce lelaI1e). Un praces are 0 prioritale mai mare cu cal

va loarea sa nice 9Sla mai micA. Valorea nice pentru un praces S9 incadreaza in limitele
[-20, 19]. -20 inseamna un praces maxim prioritar, in limp ce 19 lnseamna un praces

minim prioritar.
Prioritatea unui praces intr-un sislem Unux se ana lolosind ps

" "
" "

, , , '" , " , , ,, , , , , I [ ... ,,


[ ... 1

r~ "v~n@".q"rd

-,

COMMIIND

<,vents/O ~h .. lp .. r

. "-

~i

opliunea nice :

- 0

pi<;l , tty , comm , n i ce -- sort nice

kthread
~blockd/O

k .. cpid
i nit

-.
" , ,

"' -, -, -, -,

3799 pt./4 4009 pt./l

bash

,,

0' k.oftirqd/O

Majoritatea proceselor pornesc CU prioritatea O. Pentru a modifica prioritatea de start a unui proces se fofose~te comanda nice, fofosind argumentu l - n:
r~zv~n @~"q~ r d , -$

"

nice '

c~nnot

nic@ -n -10 P" -@ -0 p i d . tty . comm . ni .@t nic .. n .. ss : Permission <I .. n i .. d -$ n1C" - n IS ps - C p. - 0 pid . tty . comm , ni
COMM/l.ND

r~zv~n@".q"rd

PH> 11

"
!

4051 pt./l

ps

"'
-00

asqard : /home/razyan~

nice -n -10 P" -C p. -0 pid . tty . co .... . ni

PH> TT

COMMANO

10

4048 pt./2

P"

" "'

Se poate observa ca un utilizator neprivifegiat nu poate stabi li 0 priorrtate negativa (putern ica) , dar poate stabili una pozitiva (mai sfabA). Utifizatoruf roo t poate modilica prioritarea unui proces in orice direclie. Schimbarea in timp real a prioritalii unui proces se poate real izeaza prin intermediul top. In ec ranu l top se lofoseste tasta r (renice). Zona de comanda olera promptuf PID to r e n ice : in care se introduce pid-ul procesulu i a carui prioritate va Ii schimbala. Dupa aceasta se va cere introdl.lCerea unei valori nice asociata procesufui. Un utilizator neprivifegial poate doar incrementa vafoa rea nice a unui proces (if va lace mai pulin prioritar).

Schimbarea prioritii)ii unui proces in Windows In Windows. utilizatoruf poate stabiti prioritatea unui proces fa n i~te vafori cu granufaritale mai mare: High, Very High, Normal elc. Pentru aceasta se loloseste lot interlata pusa fa dispozilie de Task Manager. Penlru atterarea prior itatii unui proces. se reafizeaz~

CAPITOlUl 5. PR OC ES E

147

clid\ dreapta pe intrarea asociatA proces ului. se alege optiunea Se t prior i t y si apoi se stabi le~te priorilatea dorilA. Un exemplu se poate gAsi Tn l igura de mai jos:

Flo

_.uor.. ..""""'" I....

Opt"", ..... 5IU t-. .....

~<>,..,..,. I Ntt_1.il\l1 """,

Figura 5.7: Stabilirea prioritAtii unui proces In Windows

Cuvinte che ie

proces program pid procls interaClivilatea unui proces context switch cuanta de timp multitasking ierarhie de procese inil

lop
background foreground operatorul & bg.lg suspend area unui proces term inal proces daemon nohup semnal ki ll killall. pkill

"

pSlree pgrep

CTRLZ. CTRLC, CTRL CTRlX

148

INTRODU CERE iN SISTEME DE OPERARE

operatorul I Task manager Services


inil, kswapd , pd/lush, getty

Isass, svchost, csrss prioritatea unui proces


nice

intrebiiri
1. Care din urmatoarele aSia un proces important Unix?

o o o o o a o a

p.
5 I GQ ll II

init

lsass

2. Care utilitar NU poale Ii lolosil pentru a transm ite semnale caire un proces?
kill

t op
nohup
kil l al.l

3. Gate procese init pot exisla la un moment del T ntr-un sistem Unux?

0'
o cale unul per procesor
o niciunul

oricate

4. ClUe procese bash pot exista la un moment del Tntr-un sislem Unux?

o cale unul per procesor


o niciunul

o o o o o

or icAte

5. Care din urmAtoarele comenzi NU al iseazA PID -ul unui proces?

p.
pqr .. p
kill

top

6. in linux arice program peate Ii imaginea unui singur proces. Comanda lop NU afiseaza PID-urilor proceselor din sistem.
~,., ...ov ... atanal

CAPITOLUL S. PROC ESE

149

o o o

adevarat, adevarat adevArat, tats tats, adevaral fats, tats


acetea~i

o
o o o

7. Care comandA poate produce CI RL- Z?


p kill

eleele ca apAsarea combin alie i de taste

p.
operalorul
&

o"
8. Ce d irector d in sistemul de
l i~iere

oferA informa\ii despre procese?

o o
o

/sys
Iproc

/ h ome

0 1

9. In Linux procesete NU au pkfuri negative. in Linux procesele NU au pr iorrtiili negative.

o o o o

adevarat. adevarat adevArat, lals fals, adevilrat fats,lats

10. Care asoc iere NU esle val ida?

o o o o

Task Manager - top serviciu - daemon explorer - nice tsass - getty

C JPYnghted matanat

Copyrighted material

Capitolul6 Pornirea si sistemului , initializarea ,


Press err/-AltDel now for /Q test.

Ce 58 inva~ din a cast capitol ?


Pornirea sistemului; conceptul de bootstrapping
Nol iunea de multitasking Fazele pornirii sistemului

BIOS (POST, CMOS)

Dispo~itive

boot-abila, sector bootabil (M8RNBR)

Rolul uoui bootloadar GRUB: rutara


~i

conligurare

incArcarea nucleului Linux


Inilializarea unu; sistem Linu K: iniU upstarl si pornirea serviciilor
Pornirea ~i initializarea Windows Nel iun; de in teroperabilitate Linux-Windows

6.1

Pornirea sistemului

Pornirea si initializarea sistemului sa relera la mecanismele prin care sistemul de ope rare sl aplica!iile de bezA ajung sa fie incArcate si toklsile de utilizator. Pornirea sislemului sa realizeaz.:!, de obicai, prin apAsarea unui butan spec~ic de pe unitatea cenlralil. in sens mai larg, ne vom referi la pornirea sislemului ca fiind a ac~une campusa ce cuprinde atal ini!iatizarea hardware cat ~ i cea software.

'"

152

INTRODU CERE iN SISTEME DE OPERARE

Inifializarea hardware presupune verihcarea ~i conhgurarea componentelor hardware.

Aceasta se executa in doua: situatii: atunei cand sistemul trece din starea opril in starea porni! (power on) 5i atunei cAnd sistemul esla reini!ializat (reset. reboot),
Ac!iunea de power on se relera la activarea sislemului din momenlul in care aeesta era

opril, de cele mai multe ori prin intermediul butonului de pornire ' , Repornirea sistemului
se relera la reactivarea sislemului: din starea porn it. eventua l ruland 0 instenla a unui

sislem de ope rare, sistemul esle reporni! (tie prin intermediul butonului Reset, he prinlr-o
comandli da!;'!. sistemului de operare).

Ini,ializarea s oftware presupune incarcarea sistemului de operare. Nu vcm considera rularea anum itor ap licatii peste sistemul de ope rare ca f<"icMod parte din ini\i alizarea software.
Pornirea sistemu lui prezinta un set de etape care vcr Ii precizate Tn continuare.

6.1.1 Problematica pornirii sistemului - bootstrapping


Pornirea sistemului fizic si inearcarea sistemului de operare poarla numele de booting sau de bootstrapping. Denumirea de bootstrapping i~i are originea in Baronul de Munehhausen. 1ntro poveste a acestuia, el reu~e~te sa se salveze de la inec Ira.ganduse de baiere le cizmelor (boot " cizma. strap" baiera). Analogia cu ace aSIa paveste se reflecta In laptul ca sistemul de operare tretluie incArcat fAra. existenta unui a~ sistem de ope rare. Un procesor poate executa numai cod allat In memoria ROM' sau In memoria RAM. Atunei c<"ind 0 aplicatie tretluie executatll, sistemul de operare mula codu l acesleia In memoria RAM ~i procesorul incepe execu!ia apl ica!iei. Apare astlel intrebarea: cum se inearca in memorie sistemul de operare, daca nu existll un all sistem de operare care sll II incarce ? Apa renl, trebuie sll ne tragem de baiere le cizmelor" pentru"a ne scoate din apa". Vom vedea, lnsa, c<"i exist<"i un set de etape care se vcr parcurge succesiv pentru inc<"ircarea diverselor componente pan<"i la inc<"ircarea completa a sistemului de operare.

6.1.2 Etapele pornirii sistemului


Pornirea sistemulu i presupune inellrcarea in memorie a diverselor componente pAna la inearcarea completa a sistemului de operare. A~a cum se poate vadea si in ligura 6.1 . etapele importante ate porn irii sistemului sun!: in ca rcarea BIOS-ului: presupune inearcarea unui program de miCi d imensiuni, allal Inlr-o memorie dedicatE!: de pe placa de bazE!:, ~i care esle uWizat pentru inilializarea componentelor hardware;
' A~ ~ m3!" I"! ~ de ap"s "r& a bu!onulul d ~ po rn"e. u n WOL _ hllp}len.wikiped ia .mglwitiIWake onLAN ' http}len ,wikiped ia, ",glwikVRe ad" n 'L memo ry ~i Ol"'" poa t ~

Ii po r n~

.i

cHo la d is'antii

"'Io ~ind

C JPYnghted matanal

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

153

I Al lmentare I
j
BIOS
~

POST

r<

(booUo~der ~

(~U""der

r--

ImaQ 'ne kernel

r<

pornlfea procese lor

Figura 6.': Elapele pornirii sistemului rularea POST: presupune realizarea unui set de teste hardware ce verifica lunqionalitatea de baza a componentelor principale; inca rca rea bootloader-ulul: presupune incarcarea unui program de mlCI dimensiuni destinat copiani codului kernelului intr-o zona din RAM de unde so! poata Ii executat de procesor; inciircarea nuclelui : presupu ne vn set de initializari de baza pe care te reali zeazi!. nucleul (kernel-ul) sistemului de operare: Ini!lalizarea sistemulu l de operare: presupune pornirea principaletor procese care asigura utilizaraa sistemului de operara. Etapele prezentate sunt ordonate 'cronologic": 0 etap1i esle rulala si, la linalul ei, esle responsabili!. pentru rularea etapei ulterioara. Vor Ii descrise in cadrul acastui capitol fiecare din lazele prezentale ~i interactiunea intre aeestea.

6.1.3

BIOS

BIOS-vi (Basic Input Output System) este primul program incarcat in momentul pornirii sistamului. BIOS-ul aste responsabil eu ver~icarea si initializarea componentelor hardware. BIOS-ul este un exemplu de firmware . Firmware-ul esle 0 compone nta software distribuita sub lorma binara pe un suporl de memorie nevolatila. in cazul de lata, 810S-ul este stocat pe un chip de memorie ROM de pe placa de bazi!. ' . La power on sau la reboot BIOS-ul esle rulat automat din ch ipul de pe placa de bazi!.. BIOS-ul cunoa~te specil icul hardware al sistemului ~i devine responsab il cu initializarea componentelor fizice ale acesluia.

CMOS este un program mic ~i limitat la specificul hardware al sistemului. 8 10S-ul oleri!. optiuni de configurare. Configurarile SIOSului sunl pastrate intr-un chip separat de memorie RAM ne~olatil a alimentata prin inlermediul unei baterii. Aceast chip de memoria se numeste CMOS' - Complemenrary Metal..Qxide Semj(;(Jnductor. Ala.! chip-ul cal ~i bateri'a se gas esc pe placa de baza. in momentul in care bateria esle scoasi!., configuri!.rile BIOS -ului se pierd revenindu -se la configuri!.rile implicite.
De~i

' Me,.." ia e . t ~ de tip EPROM _ htlp:llen .wikipedia .orgiwi ki/EP ROM ' hltp ;tlen ,wikiped ia ,o'giwikilC mo.

C JPYnghted matanal

154

INTRODUCERE iN SISTEME DE OPEAARE

Figura 6.2: Ecran de conligurare CMOS


Configurarea BIOS-ului se realizeaza prin intermediul unui ecran de configurare. OPliunile disponibile includ stabilirea unei parole pe BIOS. selectarea dispozitivului de boot (vezi sectiunea 6.2.1), alterarea frecventei . procesorului 5i . alte conliguri'iri care depind de placa de bali!. ~i de compone l1tele hardware existente in sis\em.

6.1.4

POST

Etapa de verificare si de ini!iaiizarea componenlelor hardware ale sislemului (procesor, memoria, placa video) paarla numele de POST (Power-on Self Test). Daca una dintre componen te prezinta erori ~i nu poate Ii inilializati'.i corespunzalor, aMICi BIOS-ul va emite un set de sunele spec if ice si nu S8 va continua initializarea sistemului. Dupa verilicarea si bootloaderului.
initial i ~area

componentelor, BIOSul este responsabil cu incarcarea

6.2

Bootloader

Bootloader-ul este componenta utilizata in principal pentru Incarcarea imaginii de kernel Intro zona din memori RAM, de urxfe sa poata Ii executata de catre procesor. Gele mai multe bootloader-e permit utilizatorului sa aleaga intre mai multe versiuni de kernel ee vor Ii Incareate, seleetand astlel intre mai multe sisteme de ope rare. De asemenea, bootloaderul permite ~i transmiterea unor opliuni de Inearcare a nucleului sislemului de operare. Bootloader-u l este lncareal In memorie de BIOS. Boofloader-ul se regaseste pe primul sector al unui dispo~itiv bootabil, denumrt si seetorul de boot. Aeeasta limitare de dimensiune apare deoarece BIOSul poate Incarca In memorie un singur sector (51 2 octeti). Se poate Int:l.mpla ea boofloader-ul sa lie prea mare ~i sa !1(J Incapa in primul sector al dispozitivului boolabil. in acesl eaz
a'eonal

CAPITOlUl6_ PORNIREA SIINITIALIZAREA SISTEMUlUI

155

Figura 6.3: BIOS POST (power-On Self Test)

iJootloader-ul se imparte in dou1\ componente. Prima componentA incape in sectorul de boot. A doua, second stage, rezidentA pe un spatiu mai mare de pe hard-disk 5i este
incli.rcatli. de cAtre prima. Un astlel de multiple-stage bootloader este GRUB, boot loader-ul implicit pe major ita tea distributiilor Linux.

6.2.1

Oispozitive boot-abile

Un dispozitiv boot-abil este un dispozitiv al cli.ru i pri m sector este un secto r boot-abll. Sectorul boot-abil se caracler izeazil. prin faptul cll ullimii doi ocleli sunt Ox AA55 (din cei

512).
Exemple de dispozitive ce pot fi boot-abile su nt CD-ROM-uri, hard-disk-uri, floppy disk-uri, USB flash etc. in cazul acestor dispozitive, daca pr imul sector are structura specificll unui sector boot-abil atunci poate Ii folos it pentru incllrcarea altor informatii existente. Dupa rularea POST, BIOS-ul cons ulta CMOS si urmeaza ordinea de boot-are de acolo. ASlfel, dacil. CMOS-ul a fost configurat ca in imaginea de mai sus, BIOS-ul va electua urmli.toarele ope rati i: dacll HDD-ul are un prim sector bootabil, se va inearca 5i se va executa eonlinulul sectorului: aiei se va afta, de ob icei , bootloader-ul: in urma executie i se va i ncarca sistemu l de ope rare: dacll HDD -ul nu are un prin sector boot-abi l, se trece la investigalia CD-ROM-ului din sislem; se va verifiea exi ste nla unui CD in unilatea de CD-ROM, daea. acesta ex islll, se va veri/ica existenla sectoru lui de boot:
" 1

156

INTRODU CERE iN SISTEME DE OPERARE

Figura 6.4: Alegerea

d ispoziti~uluj

de boot
inc~rca ~j

dad. CO -ut are un prim sector bootabil, atunei se va

se va executa

conlinutul seclorului de boot: exemp le de CO boolabi l sun! CO-ut de instalare a

unui sistem de operare sau un LiveCD;


dad. niei CD-ROM-ut nu are un prim sector bootabil atunei se trece la urms'lorul

dispozi!iv boot-abil (al doilea HOD), care va Ii analiza! asemenea Gelor aterioare:
dac1l. nu exista nieiun d ispozitiv boot-abil. nu se poate incarca
n~ i un

sistem de

ope rare; BIOS-ut va afisa un mesaj specific lara a executa nimic.

6.2.2 Structura sectorului de boot pentru un dispozitiv bootabil


Primul sector (prim ii 512 octet i) al unui dispozi!iv boot-abil poartil denumirea de MBR (Master Boor Record). Primul sector al unei partilii al unui dispozitiv bootabil partilionat poarta numele de VB R (Volume Boot Record). Dupa cum a lost specificat anterior, un dispozitiv este boot-abi l daca MBR-ul acestuia este un sector boot-abil (are ultimii doi octeli OxAA55 . penlru a semn ifica laptut ca sectorul conIine secvenle de cod executabile). Sectorul de boot poate co nIine instrucliuni pentru incarcarea unei secvente mai mari de cod (cum este sectorul de boot al unui CD). sau poate conIine un bootloader penlru incarcarea sistemu lui de operare (cum este sectoru l de boot al unui hard -disk). Conlinutul sectorului de boot este incarcat in memorie de BIOS. Dupa aceasta, BIOS-ul trallsmile controlul programului rezident in sectorul de boot (bool/eader). In figu ra 6.5 esle prezentala slructura MBR. Dupa cum se observa, exista urmatoarele zone importanle: zona de cod exec utabil : aceasta contine programu l caruia Ii este transmis controlul de caire BIOS (boor/oader):

CAPITOlUl6. PORNIREA SIINITIALIZAREA SISTEMUlUI

157

O xOOO

4460cteti Bootloader Partitia 0


Pa rti~ia

OxlB D OxlBE OxlFD OxlFF

Partilia 2 Thbel.!i de
parti~ii

64 octeti 2 octeli

Partitia 3

OxAA5 5

Figura 6.5: Strl.JCtura MBR (Master Boot Record) tabela de partl!li co nIine informa!ii despre partiliile din sistem ; fiecarei parti!ii Ii corespunde 0 intrare de 16 octeti; semniitura de sector bootabil {OxAA 5 5}. Zona de cod executabil contine programul care va Ii rulat dupa incarcarea MBRului in memorie de BIOS. De obieei, acest program este bootJoader ul, responsabil cu descoperirea partitiei active si incarcarea primului sector {VBRl de pe aceasta. in cawl existen!ei mai multor sisteme de operare. boolloader-ul poate permite ulilizatorului sa opteze pentru incarcarea unui sistem de operare allat pe altA parti!ie dedit cea de boot.

Tabela de part I,ll Tabela de parti!ii rezida in MBR si ocupa 64 de octe!i. Un harddisk poate conIine doar patru partilii (asa numilele parti!i; primara ), re zultAnd 16 octeti penlru descrierea liecarei parti!ii. Cei 16 octe!i ai liecarei parti,ii olera, pe langa adresa de start (exprimata in cylinderheadseclor') si dimensiunea si tipul partitiei. 0 partilie poate Ii activa sau nonactiva. 0 parti!ie activA este aleasa de boot/oadeful allat in zona MBR (sau de cAtre 0 parte a bootloadefului , daca acesta este in doua stagii) pen tru a continua incarcarea sistemului. De pe 0 parli!ie acliva se va incarca pri mul sector (VBR) OIl acesteia. o a~A clasiliCare a parti!iilor este clas~iCarea i n parti!ii prim are ~i parti!ii extinse. Numarul de 4 partl!iI prlmare care pol Ii descrise in tabela de partitii din MBA este, de multe ori, insuliCient. Pentru a rezolva acest neajuns, a aparut notiunea de parl;!ie eXlinsi. Pe un sistem poate exista 0 singura partilie exlinsa astlel ca putem avea fie maxim 4 parlitii prim are, he 0 partilie extinsA 5i maxim 3 prim are.
, http;lIe n.wiloiped ia. o'glwil\i1Cylin de' headsect<> '

fight

ma'enal

158

lNTRODU CERE iN SISTEME DE OPEAARE

Parliliile extinse pot contine rnai multe parti!ii logice, marind astlel numarul de parlitii posibi le din sistem. Descrierea partitiei extinse se regase~le in primul sector din acea parli!ie, denumit EPBR (Extended Partition 800/ Record). Parti!iile sunt !olosite pentru separatia informaliilor inlr-un sislem de operare. Pentru a as igura existenta unui sislem de lisiere pe 0 parlilie, acea partitie va trebu i formatata (vezi sectiunea 4.8. t) .

Sa lvarea secl orului d e boot (backup)

Uneori se doreste salvarea sectorului de boot al unui disc sau al unei partitii penlru situalia in care aeasla devine corupt ~i (rebu ie reparal. if] Linux, acesl lucru sa poate
realiza foarte lIsar prio intermed iul comenzii dd (vazi secliunaa 7.6.5) de lip bloc (vexi sec(iunea 7.6.1)
~i

a dispozilivalor

Astlel. daca sa dora~le raalizaraa unai copii locale a MBA. se poala Iolosi ulililarul d d si dispozitivul asocial hard-disk-ului (in cazu l nos!rv ! d e ll I h da. ). Vor Irebui copiali 512 ocle!i (un seclor). deci conlorul de secloare va Ii 1:
2 ,
root@~.q~ rd: 1 dd if - Idev/h d a o f - mb r . o u t coun t - l 1+0 record . in 1+0 record . out 512 b y tes (51261 cop ied , 0 . 035273 seco nds , 14 . 5 k Bis r o ot@asq ~ ~ d : '1

6 ,

- co'- r -- r -- 1

~ oot

1" - 1 mb r . o ot root 512 2009 - 06 - 07 23 : 28 mbr. out

6.2.3

Mecanismul de functionare a unui bootloader

Dupa cum sa specilicat. un bootloader esle un program folosit pentru a inca rca in RAM imaginea sistemului de operare, sau alte componenle care vor incarca (Ia rfu1dul lor) acea imagine. Codul boolloader-ului eSle supus unor conslrfmgeri destul de rig ide. intrucfllirebuie sa incapa in MBA. Mai exact. asle limitat la 446 de octe!i (restul fi ind ocupa)i de tabela da parli~ i ~i de semnalura de 0001 OX AA55 ). Ca atare bootleaderele lucreaza in mod normal in doua etape (stages). Prima etapa. aste cea care rez ida in MBA. Aceasta are rolul da a inca rca da pa hard-disk a doua etapa care este suficie nt de complexa pentru a putea incepe incarcarea efectiva a karnelului sistemului da operare. i n caa de-a doua alapa poate Ii oferil un ecran da selectie pen!ru situatia in care coexista doua sisteme de operare pe acelasi sistem fizic. Unele bootloadere (spre exemplu GRUB versiunea 1) au 0 faxa inlermediara - 1.5 penlru a permilea ciUrea de informatii de pe harddisk dincolo de 0 anum ila limita. Dupa acest pas bootloaderul va inca rca nucleului sistemului de operara (sau 0 parte a acestu ia) si va transm ite controlul caire acesla. Exemple de bootloadar-e sun!: GRUB (GRand Unified Boo/loader): distributiilor linu~ ;

bool/oader-ul implicit pe majoritatea

CAPITOLUL 6. PORNIREA !?IINITIALIZAREA SISTEMULUI LlLO (Linux Loader): suprema!ia GRUB;

159

boorloadarul implicit pe distributiile Linux lnainte de

NTLDR {NT Loader} : boo/loaderul Iolosil de Windows NT, 2000. XP. 2003; winload .exe: boatloaderul folosit de Windows Vista: SYSLINUX: 0 suita de bootloadere destinate diverselor medii de boot

Chalnloading Modul eel mai des inIAl nit prin care un sistem de ope rare este initiatizal eSle prin specific area directa a imaginii nlltleului catre boatloader. Alternativa 0 reprezinta bootarea indirecta a sistemului de operare. Acest lucru presupune ca boot/oader-ul allal i n MBR, i n loc de imaginea unui kernel, sa incarce un alt bootloader care va incarca la rAndul sau imaginea de kernel a sistemu lui de operare. Acest mod de incarcare a unui sistem de operare se nume~te chainloading.
Bootloaderele specifice Linux (precum GRUB sau LlLO) incarca sislemete Windows folosind chainloading. Spre exemplu, daca dupA l ncarcarea boot/oaderului GRUB se opleazi! pentru bootarea Windows , alunci se va inca rca bootloaderul Windows {NT LOR} care va ini!ializa Ia ril.ndul sau sistemul da operara.

6.2.4

GRUB

GRUB (GRand Unified Booloader' ) este bootloaderul implicrt pe distributiile Linux si aile sisteme de ope rare din fam ili a Unix si este, de obicei, Iolosit in situa!iile de mulliboot (cAnd pe sistemul de calcut coex ista mai multe sisteme de ope rare). Aceasta sectiune va prezenta detalii despre versiunea 1 a GRUB, denumita simplu GRUB. Versiunea 2, denumita GRUB 2, care a incepul sa lie utilizatA recenl, esta prezentata In cadrul unui s1ud iu de caz (vezi sectiunea 6.6. 1). GRUB este laplul ca exisla 0 la~a inl ermediara 1.5 pentru sil uatia in care ex ista o timilA de vi~ibi l itate a harddiskului. Ca ~i in cazul allor bootloadere , prima laza (cea care rezda In MBR) are rolul de a IncA rca taza a doua sau, dacA este nevoia, taza 1.5. OatorilA dimensiunii reduse. prima la~A nu detine informatii despre sistemlJl de fisiere. in schimb. la~a 1.5 cietine inlorma!ii despre acesla si poate locali~a si incArca in mod corespunzAlor la~a a doua. Faza a doua esle responsab ilA CIJ citirea lisierului principal de configurare (!boo t !gtu b!menu . ls t) , afi~area ecranului de optiuni 5i incarcarea nllCleullJi sistemului de ope rare. in ligura 6.6 este prezenlatA localizarea dileritelor faze ale GRUB pe hard-disk. Se ob5ervA cA prima elap.:! {grub stage I} se gase~te in zona de cod executabil din MBR. Faza 1.5 (grub srage 1.5) se gAse~le in zona de compatibi litate a harddisk ului (primii 32 KBJ. Aceasta etapa recunoaste l ipul sistemului de lisiere pe care se alia etapa
I http l /www.gnu.org/wftware/grubJ
Spec~ic

C JPYnghted matanal

160

lNTRODU CERE iN SISTEME DE OPEAARE

\~
"""
I(;RUS

,,~

. ... p

~~

oos compo,

" . ge

I_~)

I><>OI:tooder
IG~UB .\.~~

I)

" 'o j:

. I:

Figura 6.6: Structura GRUB a doua boot.


~i

aSle ulilizata pentru incarcarea acesteia. Etapa a doua (ezidA in partilia de


a~a

Fi~iere le asociate GRUB se gasesc pe un sistem Oebianrubu!11u, in /boo t /gr ub, cum aSia prezentat mai jos:

" " " " ,. " " "

, , ,

r a.van@asgard , /toot/grub$
dehult

de,,;ce . m~p
e2fs_ stagel _ S

C.t_ stageL5 jh _ stageL5 menu . 1st

" '""

ml nix_ stagel _ S re l seds_ stagel _ S stagel

stage2 xfs_ 5ugeL5

razvan @ a'garci : /boot/grubS


t o t ~l

-c",- r --r-- cw- r -- r -- r\;-r--r--

'" , ,

"

.,

root root
r OOt rOOt

- c",- r -- r -- r,,- r -- r -- r,,- r -- r --

- r .. - r -- r -- r,,- r -- r --

- r,,- r -- r --r"-r--r-- rw- r -- r --

, , root , root , root , , root , root roo t

"

, ,

r oot root 7584 7424 root root sin root 4"124 6848 root root 9280 root root root 108392 rOOt root 8904

'"

2009-0 1- 1 7 2009 - 01 - 11 2009 - 0 1 - 1 7 2009 - 0 1-1 7 2009 - 0 1- 17 2009 - 06 - 23 2009 - 01 - 17 2009 - 0 1- 17 2009 - 01 - 17 2009-01-17 2009 - 01 - 17

11 : 55 d .. fault 11 : 55 de vice . map 11 : 5S e2f ~_~ tdg~I _ 5 11 : 55 fat_stagel_5 11: 55 jl$_ stagel _ S 1 2 , 4 5 m<>nu.lst 1 1 ; 55 mln l ~ _ sugeL5 11 : 5S reiserts_ stag e 1_ 5 1 1 : 55 st a ge l 11 ; 55 s tage2 II : 55 xf " _ ,, ugeL5

unui sector (512 octeli). Faza 1.5 are 0 formA specializatA pentru liecare sistem de lisiere (e2 fs_ st a.gel _ 5, r eise r f s_st ilgel _ 5 etc.). Spaliul ocupat este in jur de 7-8 KB, deei incape larA probleme in zona de eompatibilitate de 32 KB a hard-diskului. Faza a doua este deseris!! de fi~ ierul stage2 cu dimensiune mai mare decal a celorlalle (circa t OO KB). Faza a doua este resposabilA penlru citirea hsierului de conlig urare menu. 1 st ~i incArcarea ulterioara a nucleului. alenal

Sa observA eA prima lazA se gAseste sta.gel care are exact dimensiunea . l r'1 lisierul .

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI


Vizualizare sts ge1 si stag e 1.S pe hard-disk

161

Pentru a ver ifiea prezell!a primei laze ~i a fazei 1.5 pe hardd is k vom lo losi ut ililarele dd si hex dump. Illlro prima laza va Ii rea lizala 0 copie a primului sector de pe hard-disk ill l i ~ierul firs t_sec t or si apo i a urmatoarelor 10 sectoare ill f~ierul nex t_ sec t or s .
root@a.gara:/ b oo t /grub~ aa I t - /dev/ haa of- first sector count - ) 1+0 recora. In 3 1+0 r e coras out 512 bytes 1512 BI copiea , 8 . 9Ie - 05 ,econa" 5 . 1 MB h
~

root @ a,gard : /boot/grubl aa It-/de,,/ hda of- ne xt _,e ctor , count-IO Ski p- I 7 10.0 r eco r ds i n 3 10.0 uco r d, out 5120 byte. 15. 1 ~BI copiea , 0.000137291 .econas. 37.3 MB/s
~

In f i rst _ secto r ~i next _ sector se gas esc informatiile binare cOn! inule in prime le secloare a le hard-d isk-ului. Ele vor Ii comparate cu lis ierele imagille din /boo t /g ru b lolos ind uti litaru l h e xdump_ De exemplu, penlru s t age l'

, , , , " "
" " " "

r~z"an @ a"gard : /boot/grubS

hexdump fir't_, e ctor ed55 5~13 e084 0575 He6 Ol ft 000) 9966 ebOO 4"lfe 6412 4420 612 0012 00c3 0000

I .. . ) 0000070 0000060 0000090 OOOOO a O ( 1 0000170 0000180 0000190 00001aO


(. .. I

)4 .. 8 f601 7252 8 149 .. 183 HOI 8b66 Hie

SOd 5474 41b4 ~~bb 55fb 75 a ~ ~OO 7c4 1 663, 4c8b be lO 7c05 cl1c 1004 c700 0244 30e9 4100 6552 cdOe beOO 7a99 2ae6 6f65 006d 6) 4 8 646 1 2000 7245 adO OOk t 475

be06 5552 7369 Olbb

1a94 2042 006b 0400

" " "

r~zv~n @ ~"g a rd :

Iboot/grubS hexdump

5t~g e l

" " " "

I ... ) 0000070 0000080 0000090 OOOOOaO


( ... I

H .. $ f6QI aOd 5474 41b4 ~abb eelS S 5an 1252 8149 55fb 15~a ~043 7c4l c084 0575 e 183 HOI 6631 4cSb b~10 7c05 Hc6 Olff 8b66 44 1.. cnc 1004 c700 0244 000 1 9966

" "

0000170 0000180 0000190 00001 a O


(. .. I

be06 5552 7369 01bb

1d94 2042 006b 0400

30ea 4100 6552 celOe

beOO 7ci99 6t65 006d 646 1 2000 a c l O 003c

2a e8 6148 7245 f 415

ebOO 6412 6f72 00c3

41fe 4420
DOn

0000

Dupa cum se observa. in primul sector al hard-diskului se gase~te imaginea primei etape a GRUB. iar ill urmatoarele sectoare imaginea etapei 1.5. Daca apar deosebiri intre imagi nea aflata in sectoarele discului si cea d ill Iboot/grub, acestea sunt d in considerente de adaptare la geometria discului. Imaginea celei dea doua lale esle incarcata de laza 1.5 din /boo t /g ru b/stage2, aceasta putil.nd accesa structura sistemului de I~iere.

162
Creare unei dischete de boot GRUB

lNTRODUCERE iN SISTEME DE OPEAARE

Desi . dischetele sun! dispozitive pe cale de disparitie . (5i . costa in ziua de azi mai mu~ decAl un CD), yom descrie In seop didactic modul in care S6 poate crea 0 discheta de boot GRUB. Discheta va trebui sa ca ntina imaginea pentru prima ~ i cea de-a daua laza (nu aSle nevoie de faza 1.5 intrucfll nu avem limitare in cest caz) . Penlru aceasta S9 poate lolosl lolosi utilitaru l c a t:
Ioot @ anaconda : /boot/gIubf
c~ t 5ta9~ 1

,tage 2 ,

Idev/fdO

sau utilitafl.ll dd:


2

Ioot @ anaconda : /boot!grubl dd if _ s t age l of_ /dev/fdO 1+0 r ecorci. i n 1>0 r ecords out 512 bytes (512 BI cop i ed , 0.0426716 seconds , 12 . 0 ~B/$
root @a nacondat/boot/gr uM 2 10+1 recorda 10 2 10+1 records out cia it - stage2 of- /dev!fdO sHp _l

7
!

107656

byt ~ '

(108 kBI

copi~d ,

0 . 020834

" ~ conds ,

5 . 2 MB is

Daca se conligureaza BIOSul pentru a boota de pe discheta, utilizatoru lui ii va Ii oleritA conso la GRUB de configurare (vezi sec!iunea 6.3).

6.3

Configurarea GRUB

Conligurarea GRUB se realizeaza prin in!ermediul li~ierutui /boot/ grub/menu. 1 st. in acest lisier su nt precizate op!iunile de boot prezente in meniul GRUB, cu alte cuvinte sistemete de opera re care pot Ii lncarcate cu ajutorul GRUB. Etapa a doua citeste acest li~ier de configu rare ~ i olera utilizatorului ecranul de op!iuni: 1 n continuare este prezentata 0 parte dintr-un fisier de con figurare /boo t /grub/menu. l st 5i sun! descrise elemen!ele de configurare pre zente in acesta:
2
~

ff dehult num f Set the default entry to the entry number NUM.

Numbering sUrts from 0 ,

f the entry number 0 i s t h e default i f the co","" nd i s not used .

'"'

(. .. 1
default
If tim~out " ~ c f SH a t i meout,
~nt r y

,
,

in SEC , econds. befo r e a utomatically boot1ng the default

Ino r ma ll y

th~

" 11 " "


,.

tim ~ out

first entry

d ~ tinea) .

f Pretty co l ours color cy a n/blue wh ite/b lu e

, 5 (. .. 1

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

163

Figura 6.7: Ecran optiuni GRUB

" " "


,g
2<1

Mzvan'" ke rne h Debian GNU ILl nux, k erne l 2 . 6 . 18 - 12fast (hdO , 2 ) I boo t Ivml inu z - 2 . 6 . 1 8- 12 fast root _I dev /hd .. 3 to

t itle root
k H n~ l

"
2>

s .. ve d efault
titl e
root

" ,.
2S

""
~,

k erne l savedefaul t
(. . .

De b idn GNU/Linux , kern" l 2 . 6 .1 S-12hst (s i ng le -u ser mod,,1 (h dO , 2) Ibootl vml i.nu~ - 2 . 6 . 1 6-12 fas t root _ I dev I hd a J ro si ngl e

~$

'lO

f ,his entry a utomatic all y added by the Debi"n insta ll er foe a non-jinux

" " " " " "

"

00 /dev/hda l
Micro ~ of t

t i t l~

Windows

roo t
5 av~default

(MO , O)

"

Pro fess i onal

m.. k e activ@ ch .. inload<>r

OPliunea defaul t precizeaza opliunea implicita din meniu folos ita pentru bootare. Fisiarul de configurare contine mai multe intrari pantru diferite sistema de operare. Numarul care urmeaza dupa opliunea defau l t indica sistemul de opera re care va fi bootat implicit in cazul i n care utiliz atorul nu intervine in momenlul afisarii meniului de opliuni. Numerotarea porneste de la O. Presupunand ca, in figura 6.7, nu ar exista aile op\iuni de sisteme de operare, bootarea implicila pe Windows XP Professional este conditi onata dE! pre2E!nta optiunii default 4. Opliunea t i meout indica timpu l de
a~teptare

pentru ca ulilizatorul sa aleaga una din

164
optiunile
ali~ata

INTRODU CERE iN SISTEME DE OPERARE

in meniul de boot. Dadl aces! limp expiri!., sa va incil.rca sistemul de

operare ind ical de optiunea cl e faul t.

Optiunea colo rs afi!;eaza coloral meniul GRUB.

OP!iunea de sistem de operare Caea ce apare, in continuare , in exemplul de lisier de cOrlfigurare de mai sus sunt intrArile asociate pentru sistemele de operare care pot Ii boot-ate. Sa observil. d. !iacare inlrare conIine un set de directive de configurare. Aceslea SUrlt:
t i t 1e: asle un sir de caraolare reprezentand numele intrari; a~a cum va aparea

ea in ecranul de op!iuni GRUB. De$i nu exista nieia limitare de nume, sa recomanda ca titlul sa fie un nume reprezentativ:
root : reprezintA partilia pe care sa alia imaginea de nucleu a sistem ului de ope rare; ace asta paale sau nu coincidil cu partilia unde este montal sistemul de hsiere riidacina (I ); kernel : reprezintil calea ciltre imaginia de nucleu in cadru l parli!iei de mai sus; subdirectiva root precizeaza partipa asociata sistemului de li$iere radacina (I); op!iunea r o precizeaza laptul ca sistemu l de li$iere va Ii mOlllat read-only: se observa ca in cazul Windows nu ex istil optiullea ker ne l , deorece GRUB nu poate boot-a direct nucleul Windows ci va apela NTLDR (bootloader-ul de Windows) , lucru indical prin op!iunea ch ai n 1oader+1 ; op!iunea +1 semnilicl citirea primului sector din partilia ( hdO , OJ ; optiunea mak ea ctiv e slabile$le parli!ia ca l iind parlitia aclivil; op!iunea save de fa ult : datil direcliva de f ault este lolositil i n forma default saved si optiunea folositil la boat-are are opliunea savedefault, alunci la urmilloarea boot-are se va selecta_ implicit. aceea~i optiune,

Conven!ia de denumire G RUB Data in Unux, primul hard-disk esle accesibil sub numele / dey /hda, iar prima parti!ie a acestuia sub numele /dev/ hda l, GRUB folose~te 0 alta conventie pentru dellumirea distur ilor din sislem $i a partiliilor acestora. Astlel, pentru a reteri primul disc din sistem, GRUB lolose~te denumirea ( hdO) . Numerotarea discurHor incepe de la O. Spre deosebire de Unux, GRUB nu lace dislinqie i ntre tipul de controller lolosit de discurile din sistem: IDE sau SCSI. Astlel. primul disc este denumit i nloldeauna I hdO) . Pentru (elerirea primei parli!ii din primu l disc, GRUB 1010se$le denumirea I hdO , O) . in ton cu ce le de mai sus, a 3-a partitie de pe al doilea disc al sistemului esle releritil de GRUB sub forma I hdl , 2) . Tabe lul 6.1 de mai sus olera 0 analogia intra denumiraa GRUB si Unux pantru discuri ~i parti~i.

Consoli! GRUB in afara lisierului de configurare, GRUB poate Ii configurat 5i prin intermediul unei console i asociale. Aceasta poate Ii accesata in doua moduri: dintr-un sislem Unux atanal

CAPITOLUL 6. PORNIREA !?IINITIALIZAREA SISTEMULUI

165

folos ind comanda grub. sau din intermediul meniului de boot al GRUB. in ambele cazu ri utilizatoru lui ii este oferit un prompt grub> unde poate introduce comenzi specifice. Utilizarea consolei GRUB esle limitata la situaliile de testare a unor optiuni. de recuperare sau de troubleshooting. Un exemplu util de utilizare a consolei GRUB este (re)instalarea GRUB, asa cum este descrisa in seqiunea 6.6.3. Accesarea con solei GRUB poate Ii necesara ~ i in momefltul in care se dore~te alterarea unei op!iuni de bootare. Spre exemplu, in ecranul de meniul de boot GRUB, apiisarea taste; e peste 0 anumitil optiune conduce la apar;lia conso le; GRUB cu posibilitatea editarii acelei optiuni de bootare. Acest lucru este util in cazu l unei erori (sa preciza! de exemplu un nume gresit pentru imaginea de kern~) sau In cazu l in care sa pierdul parota de rOOI ~i se dore~te recuperarea aee5teia. 10rtAnd sistemul s1l porneasca 0 consol1l de root (prin folosirea opliuni; i nit -/ bin /bas h (vezi seetiu flea 10.6 .2).

6.4 incarcarea nucleului


Dup1l ee este incilrcat in RAM 5i rulal, boolfoaderul este respOflsabil eu incarcarea nueleului sistemului de operare ~ i transmiterea controlului catre acesta. ea ~i taza a doua a GRUB, flueleul rezida intrun lisier din sistemul de l i s~re, denumit imaginea de nucleu . in cazu l GRUB. loca1ia aces'tui li~ i er este transm isa ca parametru in cadrul directivei ke r ne l din / boot / gr ub /menu .l st.

6.4.1 Imaginea de nucleu


Imaginea de nucleu este un fi~ier executabil con1inand cod ul ~i datele necesare pentru ru larea nueleului sistemului de operare. in Windows, imaginea nucleului se numeste ntosk r nl . exe si 9sta localizat1l in c : \W i ndo"' s\syst em)2\ nto sk r nl . exe. in sislemele linu x. aceasUi. imagine rezida, de obieei, in /boo t , ~i are denumirea in forma vm l inuz-v ersi une_k erne 1 (spre exemplu. v rn l inuz- 2 . 6 . 29 . 1 sau v m l i nuz2 . 6.31 - 020631 - generic).

166

lNTRODU CERE iN SISTEME DE OPEAARE

ComarKIa f il .. indica un astlel de fisier ca fiind 0 imagine de nucleu Linux:


2
root @ ~ ''lard: /boot. l ile vmlinuz - 2 . 6 . :)1- 02 0 63 1- 9~n .. r ic vmHnu. - 2.6.3 1- 020631 - generiC : Linux Kerne l x86 boot execut ~ ble RO - rootl"S root_ dev Ox6801 . ~wap _dev Ox) , No rmal VGA

in mod ob i ~ n u i t imaginea de kerne l ocupa In jur de 3-4 MB. Poate Ii insa constransa la dimensiuni mai miei prjn eliminarea anumilor compone nte, aturx:i cAnd eSle cazul (spre exemplu in cazu! sistemelor embedded' ). Faptul ca denumirea imaginii se te rmina in z (vrnlill uz) indica 0 imag ine de kerne l comp rimala. o imagine de kernel comprimata coniine la incepulul ei 0 sec!iune direct executabila, dupa aceast1\ sectiune, S9 gaseste zona efectiv comprimata.
~j

Dupa incarcarea imaginii de nucleu, boo/loader-ul trans mite contro lul executiei catre kernet (lie catre imaginea necomprimata, lie caIre zona necomprimata). lntr-o prima !aza nucleul initi alizeaza si configu reaza dispozitivele hardware ~i memoria. Toate dispozibvele inipalizale de BIOS vor Ii rei ni)ializale pentru a asigura robustelea sl independen)a de modul in ca re BIOSul real izeaza initial izarea. Urmatorul pas 11 rep rezinta decomprimarea imaginii de nucleu. Dupa aceasta se monteaza sistemul de li~ie re ri'l.dacina precizat prin parametrul roo t - /dev/ . . . al directivei kernel di fl l isierul de CO flf igurare GRU B. Pe masura ce flucleul iflitiali zeaza alte subsisteme, pe ecrafl SUflt af i~ate mesaje de status. Incarcarea completa a flucleulu i se iflcheie cu crearea procesulu i ini t (ce are pidul 1) din imaginea /s bi fl/i nit. Se poate alege 0 alta imagine pe baz a ca reia sa se creeze procesul i nit , pri fl specilicarea optiunii i ni t - / path/to/new/e><e c la boot-area nucleului. Un caz tipic pentru aceasta este recuperarea parolei de root (vezi secliunea 10.6.2).

6.4.2

Optiuni de boot-are pentru nucleu

Nucleullinux poate Ii configurat penlru boot-are cu diverse argumente ca re Mi-i modilice lunc\ionalitatea. Acestea sunttransmise ca parametri de boot-are in directiva kerne l a GRUB. Conligurarea acestor argumente paate Ii reali zatl'i l ie prin li~ieru l de conligurare (jboo t /gr ub/menu . 1 st). lie prin accesarea consolei GRUB (apasarea tastei e in ecranul de op)iuni GRUB). o lista completa cu op)iunile de bootare poate Ii gasita online'. Cele mai importante dintre aceste optiuni sunt: debug:
ali~eazl'i

mesaje suplimentare la
ali~are a

in ~rcarea

nucleului;

quiet: dezactiveaza

de mesaje la lncarcarea nucleului;

resume:suspend-<i evice (util pentru laptop-uri in cawl finc)iei de hibernare): specifica discul unde se alia imaginea suspendata a nucleului; rool =devlce: precizeaza parli\ia unde se alll'i sistemul de
li~ i e re

radl'icinl'i;

, http;!le n.wi<iped ia .orglwikilEmbeddotd_.y.18m ' http;!/www.~erne I,orglpubmnu',,"e fn .Vpeo p~IQreQ~hll< nil< nJ><If Ic h09 ,pdt

CAPITOlUl6. PORNIREA SIINITIALIZAREA SISTEMUlUI

167

rolrw : specilica daca sistemul de fisiere radacina eSle montal readonly sau read write la boolare: Inll=fitename: specificA execulabilul care ~a Ii lncarcal la crearea procesului i l1i t (implicil acest execulabil eSle / sbi ll/ i llit): S sau single: specifica pornirea lui init in mod singleuser.

6.5 Inilializarea sistemului


lncarcarea nucleului se incheie cu pornirea i lli t. procesul cu pidul 1, parinlele celorlalte procese din sislem, in cele ce urmeaza vom presupune ca procesul inil a lost creal in mod obi~nuil din imaginea / sbi ll / i ll i t . i llit eSle responsabil cu pornirea celor lalte procese importante ale sistemului, a daemonilor ~i a proceselor ca re asigura accesul utilizatorului la sistem (getty ~ i mediul grafic).

6.5.1

in it

i lli t eSle resposabil cu crearea celorlalte procese importante din sislem si, astlel, de realizarea unui sislem l unc!ional si inleracliv. Penlru precizarea proceselor care trebuiesc pornile si a op!iunilor primile de ci'ltre aceslea, ill i t Ioloseste un set de fi~ iere de configurare decrise in continuare.

Nlve turl de rulare (runlevels) inainle de a prezenta modul in care se conlig ureaza ini t , Irebuie descrisa no!iunea de nivel de rulere (runlevel). Un nivel de rulare se relera la un co nlexl de utilizare a unui sislem de operare. Altlel spus, se relera ta ce servicii olera sislemul utilizatorului. Un runlevel difera de un altul prin dispozitivele monlale ~i prin serviciitor pornile. Sunl defi nite 7 niveluri de ru lare, numerOlale de la 0 la 6. Aceslea POI fi folos ile diferil de diversele dislrib..ilii Linux, insa 3 dintre ele au 101 timpu l aceeasi semnificalie: Runlevel 0 - Halt : este Iolosil penlru oprirea sistemului; Runlevell - Si ng l e: eSle Iolosil penlru un sislem singleuser ; Runlevel6 - Reboot: esle folosit penlru reporn irea sistemulu i. Pentru afi~a rea run/evel ului curent se - r (ca utilizalor obisnuil):
lolose~te

comanda runlevel (ca rool) sau who

, "' ,

roothsgu o -I run l .,v.,l

ra<van@a'garo : -$ who - r
r u n- l e ve l 2 2009 - 09 - 2317 : 51

168

INTRODU CERE iN S IS TEME DE OPEAARE

Schimbarea run leve lului S8 real izeaza prin ru larea comenzii i nit urmal~ ti e numarul runlevel-ul uL Astlel ru larea comenzi i
Loot@asgard , -' i nit 0

este echiva lenta eu f\.Ilarea comenzii:


coot@asgacci : -I shutdown -h

""

Loothsqard : -I halt

Conligurarea init

principal de configurare pen\ru ini t este / etc! ini t tab. Este prezentata, in continuare, 0 parte a unui fisier de co nfigurare I etc/ i ni t tab pentru a d eser ie modul in care aeesta afecteaza com portamentU I io i t :
Fi~ieru l

( ... I

,
1

> f

Th~ d efault r unl"v"l . i d : 2 : 1J'litdef a ult :

... )
~nd

"
,

f letclinit. d execut"'s the S

K .c ript. upon change


,0 " 12

f f f f

f of runl eve l .

Runle" .. l 0 i . Runlevel 1 is RunJeve19 2 - 5 Runlevei 6 is

h "lt . single - user . are molti - user . reboot . 0 i 2 3 4 5

" ,.
'5
,~

iO : O : w~it : /etc/init . dlrc

li : l : wHt:/ Hc/ init . dlrc


12 : 2 : wHt : / ~ tc/ i nit . dlrc

" '" ,.
20
21
22

13 : 3 : wait : /Hc/ i nit . d/r c 14 :4 : wait:/etc/ i nit . d/rc 15 : 5 : wait:/etc/init . d/r c 16 :6:"ait : /Hc/ i nit.d/rc 6 f Normally n ot re~ched , but
.6 :6,r esp~w n: /sbin/sulogi.n

f ~llth r oug h

in

C~$e

of emergency .

"

""
~

,
"

2'
~

'"

"

l2

" "

~
~

. . . .
f f f

f ~h ~t to d o wh en CTR L-ALT - OEL is pressed. ca : 1234S:ctrlaltdei : /sb ln/shut do ... n - tl - a - r now

(, . . 1
/sbin/getty invocations foc t he runieveis. "id " f i e l d MUST b ~ t h~ s~m~ as the l a ,t of the device l a fter tty J .

Th~

chH~ct ~ r"

f Format : f <id> : <runlevel$> : <action> : <proce,$>


D@bi~n
~dd

I Note that on mO $t f so if you wa nt to

sys t ~ ms tt y7 i. used b y th e X Windo ... SY$tern, more getty ' . go a h ead b ut $kip tty? if you run X.

2 : 23 : re"p ~ wn:/sbin/getty

i : 23 4S : reapawn : /abin/getty 38400 tty I 38400 tty2

CAPITOLUL 6_ PORNIREA SIINITIALIZAREA SISTEMULUI


w
3 : 2) : r e.p"w n: I Sbi n/getty 4 : 23 : resp"wn: I sbl nl getty S,23,respa wn :/stln/getty 6 : 23,respa wn:/stln/getty 38400 38400 38400 38400

169

"

" "

tty) tty 4 ttyS tty6

Dupa cum se poale

obser~a

intrarile din I etcl i nit t i1b au urmalorul formal:

<ict~ : <ru nl eve l s> : <action> : <proce'3~

unde' i d este un identificator unic al regul ii din inittab; r un levels reprezinta nivelurile de rulare asupra cArora se aplica regula; action eSle aC)iunea pe care 0 p rocess este comanda care

va executa inil;

va Ii execulata..

o descriere complela a regulilor posibile pentru inittab se gaseste in pagina de manual (man inittab). Vor Ii prezentate, in contin uare, regulile din exemplul de mai sus.
Linia 3 din captura de mai sus stabileste run/eve/-ul implicit , care este 2. Identilicatorii 10 pana la 16 de pe liniile 1420 prezinta regul i pentru scripturile de ini!ializare a servicii lor sistemului conform cu run/eve/oUt. Oupa cum se observa, comanda executata pentru l iecare run/eve/ in parte este le t el i nit . dl re urmata de numarul nive lului de rulare. Prin intermediul acestei comenzi se vcr porni servicii le specifice sistemului, dupa cum se va vedea in continuare. Linia cu identilicatorul ea (iinia 25) precizeaza ca se executa 0 reporn ire a sistemului in cazul in care se apasa. CTRL - AL T - DEL. Pentru aceasta reporn ire se ruleaza. comanda shutdown. Regul ile cu identilicatorii 1 pana la 6 (Iiniile 38-43) sunt lolosite pentru a porni procesul get ty pe term inalele virtuale ale sislemul ui. Dupa cum se observa si din comentariu, terminalul virtual 7 esle asociat mediului gralic si nu poate Ii folosit pentru a porni ge t ty. Actiunea res pawn semnitica laptul ca, in cazul terminarii procesului, i ni t il va recrea ,

Pornirea daemonilor de slstem Dupa cum s-a observat din fisierul de conf igurare I etel ini t tab, pornirea serviciilor sistemului in lunctie de run/eve/ se realizeazc"l cu ajutorul scriptului I etcl i ni t . dl re . Acest sc ri pt primeste ca argument numarul run/evel- ului si executa scriplurile aflale intr-un director specializat let e l reX. d / , unde X este I"H..Imc"lrul runlevel-ului. Astlel, daca run/eve/-ul esle 3, se vo r executa script-urile din letel re3 . d/ . Con!inutul directorului letel reJ . dl este:
r~zv~n@".g""ct :- $

is - 1 letc/rc3.ctI
"oot

tota l
vm"~ r e

lr"x r",x r wx 1 "oot


lr"'xrw ~ ~w~

is 2009- 06 -1 0 22 : S6
202009 - 07 - 22 14,17

KOavmw ~ r~

- > le tc / ini t . dl

~oot

root

K77ntp - s erve~

- > . /l ni t .

d1ntp - serve~

5 (. .. I

170
" lrwxr .. Hwx 1 uzv"n razvon exim4 I.",x,wx<"x ra:van rUvan Ifirebir<l2 (. .. I irwxrw,,"wx 1 root root

lNTRODUCERE iN SISTEME DE OPEAARE


152009- 0 1-1 7 1l: S4 S20exim4 - > . /init.d.! 19 2009 - 06- 01 12:51 S20!lrebird2 - > . /init.<I

"
10 " " "

18 2009 - 06- 10 22:56


172009-02-24 00 : 05

S90vm~a<e
S9lapach~2

- > letc/l n it.dl


- > .. /init . d/

"",,,are
lr ",xr"xrwx 1
apach~2
r a~ yan

rUvan

lr ",xrwxrwx 1 r a~ Y .. n rUvan IC . local lC\;xr"xrwx 1 razva n razv~n hmnolaqin lr"xrwxrwx r",van razvan in it . d/.top - bootlogd

I S 2009-01-11 11 : 47 S99rc . local -> . . /init.dI 192009-0 1- 1 7 11: 47 S99rmnologin -> .. / i nit . d 2J 2009 - 0 1-1 7 11: 47 S99stop - bootloga - > 1

Se observ1i c1l fisierele sunt un set de legaturi simbolice clltre intrari din /etc/init.d/. Directorul letc/init.dl contine scripturile de pernire/oprire/repornire a serviciilor din sistem. Astlel, pentru oprirea, pornirea sau repernirea serviciului apache , se tolosesc comenz ile:
<oot@as gara : -' fetc/init . a/apache start l stop l restart

Argumentele start I stop / resta.rt sunt comune majoritil.(ii scripturilor ce se gil.sesc in letc/init . d. De asemenea, se peate observa si un lormat al numelor l i~iere l or din let c/ rcx _d :

K numar nurne S numar nurne

K inseamnil. kill, iar S inseamnil. start. Astle l, existen!a legil.turii K08vrnware inseamnil. cil. serviciul vrnware va Ii oprit (prin intermediul comenzii /etc/init.d/vrnware stop) odatil. cu intrarea in nivelul de rulare 3. La lei, e~jsten!a legiUurii S20exi m4 inseamnil. cil. serviciul exirn va Ii pomil (prin intermediul comenzii lete/ init. d/exim start) odata cu inlrarea in nivelul de rulare 3. Numarul asocial unui din lormatul numelor de fi~ i ere reprez inla ordinea de pernire/oprire a serviciilor. Astfel, serviciul S91apache va Ii pornit inaintea S99rmno l ogin, iar serviciul K77ntp - server va Ii opril inaintea K08vmware (Ia oprire ordinea este descrescatoare).

sysv-rc-conf Avantajul schemei init de pornire a serviciilor este flexibi litatea, iar dezavantajul comple~itatea crescuta ~i un numar mare de li~iere de conligurare. Daca se dore~te eliminarea sau adaugarea unui serviciu la un run/eve/, va trebui creata 0 legil.turil. simbolici'l. ci'l.tre scriptul de pernire/oprire si denumita. folosind schema specilici'l.. Procesul peate Ii anevoios in cazu l in care se dore~le 0 conligurare mai avansata. Pentru a elimina acest deficient, se poate lolosi utililarul sy sv-rc-conf. permite adaugarealeliminarea lacM a unui serviciu dintr-un runleveL Acesta

sysv-rc-cont oleri'!. doua interlete de conligurare a serviciilor: una in linia de comandi'l. si una text. Inlertala texl permite parcurgerea serviciilor existente in sistem ~i adi'l.ugarealelimitarea acestora dintr-un run/eve/ printr-o simpla actiune de

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

171

chacillunchacil (Iolosind tasta SP ACE). Inter/ata In linia de comanda permite adaugarealeliminarea unui serviciu prin precizarea nivelului/nivelurilor de rulare dorite, a numelui serviciului si a ac!iunii (on sau off), In exemplul de mai jos, serviciul postf i x a lost adaugat la nivelurile de rulare 4 si 5 si serviciul apache a fost eliminat din nivelurile de rulare 2 ~i 5.

, , , '" " "

<oot@anaconda : /boo t /g rub l s ysv-<c-conf --ji9 t pos tfi x postfn O:off i : off 2 : on 3 : off 4 : off

5 : off

6 : off

root@aMconda : /bootigrub l sysv-rc-conf -- l e v e l 4 5 POStf , X on root @anacon da : /boot/grubf ~ y ~ v-rc-conf -- li ,t pos t f i x O: o ff I : off 2 : on 3 : off
po ~ t

fix

4 : on

5 : on

6 : off

roo t @an acon da : /boot/grubl s y ~ v-rc-co n f -- li ,t apach@ ~p~c h e O:off I : off 2 : on 3 : on 4 : on

S: o n

6 : off

t oot h nacon da : Itootl grub~ sysv - <c - conf -- l eve l

" ,.
'"

"

apache

'"
5 : oU
6 : off

root@aMconda : /bootigrub l s ysv-rc-conf -- liot apache 3 : on 4 : 00 apac he O,o ff i : off 2 : off

6.5.2 upstart
jncepand eu versiunea 6.10 (Edgy Eft), distributia Ubuntu a inloeuit i ni t eu upstart. upstart permite 0 conligurare asinerona, bazata pe evenimenle care au loe In sistem. Spre deosebire de alte altarnative per"llru i nl t , upstart este compatib il cu acesta si poate lolosi scripturile i n i t nemodificale (spre exemplu eele din / e t c/init . d). upstart asta, de lapt, un daemon i nl t modi/ica!. Ca orice sistem Linux, upstart esta pornit prin rularea / sbj n / i n i.t. in septembrie 2009 echipa de dezvoltare a distribuuei Debian a anuntat laptul ca va renunla la inil In lavoarea upstart'. Upstart a aparut ca urmare a dezvoltarii hardwareului. Daca pana de curand se putea ~ti din momentul pornirii sistemului ce dispozitive exista In sistem sau unde se poate monta sistemul de lisiere, dezvoltarea de noi dispozitive hotplug (care pot Ii conectate sau deconectate in timp real in calcu lator) a impus folos irea unui nou sistem de detectie si conligurare a acestora. upstart este a~adar un daemon init bazat pe evenimente (evenlbased inil daemon). Funclionarea sa Inseamna erearea de noi sareini pentru sistemul de operare in doua moduri: rularea de scripturi sau executabile in momentul producerii unui evenimenl; oprirea sau pornirea unui servieiu in momentul producerii unui eveniment. Un exemplu este montarea unui sistem de lisiere {spre exemplu de pe un USB flash drive}. Pasii urmali, dupa eonectarea dispozitivului USB, sun\: un eveniment de tip startup porneste daemonul udevd;
' http;lilw n, neVArticles!35t 0 I 31

172

lNTRODU CERE iN SISTEME DE OPEAARE

daemon-ul udevd este configu ra! s1l. trimitli un evenimenl de tipul b/oc/{-deviceadded pentru fiecare dispozitiv nou conecta!;
even imentul block-dellice-added determina verificarea dispozitivului si montarea

acesluia daca este listat in lete/ f stab:


dupa mOl1tarea sistemelor de
fi~iere

din letc/fstab se transmite evenimentul

fhs-filesystem.

Conligurare upstart

upstart este configura! prin intermed iul directorului / etc I event . d/ care S9 dore~le a Ii un inlocuitor pen!ru scripturile letel ini t tab , lete I init . d/ * ~ i I etc! rex . d. Fiecare lisier din lete/event. d deseris modulln care un job trabu ie coordonat:

, ,

Ioot @ u b untui: /etc/event . df

control-alt-delete
loga
~c -d etauLt

,,' ,,' ,,' ,,' ,,'

<d

'" ,,'
~cS - su l ogi n

.u l O9 in
tty l

tty)

tt y6

tty<

tty4 tty5

Spre exemplu. fisierul control-alt-dele t e prezinl1i ac)iunea inlreprins1i la ap1isarea CTRL - ALT - DEL, si anume repornirea sistemului:
,

root@ubuntu i: /etc/event . dl cat contro l- a l t - de l ete f control-alt-d"l"te - "mug@ncy hyp r e . . handling


f This tas k i s run whenever th e Co n tro l- I< l t - De l ete key combination is f presse d. usua ll y used to shut down the machIne.

sta~t

on

cont~O l- alt - delete

exec Isbin/.hutdown -r

no~

"Control -li lt -De lete pre ssed "

Scripturile rc. sunt aociate CU nivelurile de rulare. Dup1i cum se observ1i, la lei ca in /etc/inittab, se apeleaz1i /etc/init . d/rc cu argument numarul nivelului de rulare:
roo t @ ubuntui:/ e t~/ e v e nt . df c~t

re2

,
, ,

( .. J
st~rt on runl evel 2 stop on run l eve l ['<I script

"
,

( ... 1
e x ec
letc/init . d/~c

"

end script

Scripturile t ty. prezinta modul de pornire a getty pentru diversele terminale virtu ale < Ia lei ca in /etc/i n itta b). incepa.nd cu Ubuntu 7.04 (Feisty Fawn), upstart a inlocuit ca.teva procese daemon importante cum sun! c ro n. atd, anacron Si inetd.

CAPITOLUL 6. PORNIREA !?IINITIALIZAREA SISTEMULUI

173

6.5.3

getty

~i

login

Dupa pornirea daemonilor sislemului, init esle responsab il cu pornirea proceselor care asigura autentificarea utilizatorului in sislemul de calcu l. Dupa cum sa vi\.zut in cad rullisierului de conlig urale let c/ in i t tab. i n it perneste cAte un pl oces getty pentru liecare terminal virtual pe baza imaginii ISbin/get ty . in mod implk:rt sunt pernite 6 procese getty pentru term inalele denumite t ty l . t t y 2... t t y 6. Term inalul t t y7 esle rezervat mediului gral k: (In cazul in care acesta esle instalal). Autenlilk:area in mediul grafk: (prin introducerea unui ulilizalor/parola) nu se realizeaza de catre getty, ci de display manewer (vezi sectiunea 13.2.2). 0 oomponenta a sistemului de !arestre. Terminalele virtu ale sunt accesate plln intermediul combina,iei de taste CTRL - ALT - Fn. uncle n esle numarul te rminalului. Combinatia CTRL - ALT - F7 este lolosila penlru accesarea mediului gralk:. getty este lesponsabil cu crearea unei interlete de autentificare a utilizalorului 11i este respensabil atAt pentru autentilicarea prin terminale virtuale cat 11i pentru cone xiunea pe alte term inale precum interletele seriale. Dupa ini,ializarea terminalu lui, getty olera promptu l "L og in : " caire utilizator pe terminalul virtual, Utilizalorul va trebui sa introduca numele de utilizator si sa apesa ENTER. Dup;'\ introoucerea numelui de utilizator. getty invoca /bin/l ogi n. Astlel, imaginea sa eSle Inlocuita cu imaginea /bin/logi n 11i se creeaza procesul login . in conlinuare eSle cerula parola utilizalorului (ale ca rei caraclere nu vor Ii alisale pe ecran In momentul tast;'\rii lor din motive de siguranta). in acest moment. logi n peate verilica val idilatea utilizatorului care a dorit s;'\ sa autentifice. Daca utilizatorul a introdus o pereche nume de utilizalor/parola corecta atunci. in mod tipic. i se va deschide 0 sesiune de shell pe terminalul curen!. Altlel, procesul login moare. si, dup;'\ un interval de aSlepl are. getty eSle (epornil si olera din nou promplul de autentificare uliii zalorului. Schema de autentificare ~i pornire a sesiunii de she ll (in cazu l unei este prezentata In ligura 6.8:
- .......................... .
autentilic~i

reusile),

:.............. :
1<>gln,

.......................... .

inrt

inrt

:.............. :

.......................... ... : . . . . : d. n@k><:.lhO" ' -$ ............... i inlba,h i '- ..............


inrt

c..............:

l<>gln '

. ........................... . : . . . : d. n@I""OI I>o; I:_ $ .............. . . .


,.............. ,
' '

inrt

.......................... ...

. ,.............. ........................... .
in/b., h

Figura 6.8: Autenti lk:area intrun sistem Linux Se observa ca se ruleaza getty pe toate lerminalele. in momenlul in care utilizatorul

.1

INTRODUCERE iN SISTEME DE OPEAARE

introduce numele de utilizator. getty creaza proeesul login care cere parola utili zatorului. o datA cu introducerea si vaJidarea parolei, ulilizatorului ii esle permis accesul in sislem si sa deschide, In mod tipic. 0 sesiune shell. DupA cum se observA in figura 6.8, ulilizalorul da.n ruleazA shell-ul Bash {lbi n/bash}. La ineheierea sesiunii de shell curente. procesul gelty este repon il configural in / et c/ ini t t ab (respawn).
Fi~ierele Fi~iere le a~

cum esle

l etclpasswd

~i

letc/s hadow

/ete/passwd ~i fete/shadow sunt ulilizate pentru auten\iliearea ulilizatorilor in sislam si stocarea da inlormali; despre acestia. DupA cum sa poate observa dintr-o anali za simpla a li~ i erul ui fete /passwd :
ra<van@asqard , -S c a t fetclpasswd I qrep quest qUMt : x : 1001 : 1001 : Gue s t Accoun t " , : fho m ~ /qu e "t : /binfba s h

o intrare din acest

fi~ier

este de forma:

Ooua dintre elementele prezenlale sunt lolos~e de login pentru autenliliearea utilizatorilor: simbol-----parola si interpretor. C:l.mpul interpr etor specificA ce comandA va Ii executatA in momentul in care un utilizalor a fost autentilieat cu succes in sistem. De obieei aceasta comandA este un interpretor de comenzi (in exemplul de mai sus / b in/bash), dar poate Ii configuratA oriee altA oomaflda. In ligura 6.8 utilizalorul dan loloseSle /bin/ba.s h. Daca se va complela intrarea asociala cu / u sr /bin/vim, alunei oriee autenUfieare pe un term inal virtual va rezulta In deschiderea editoru lui vi m pe acal terminal. AI doilea camp dintro intrare in /ete/passwd (denumil aiei si mbo l -----paro l a) era folos il ini!ial pentru a stoca parola 1nlr-un format criplal. in felul acesla. oricine avea acees la fisier avea acces la parola criptal<'i si putea fo losi diversi algoritmi pentru a o sparge. 0 solu!ie ar Ii lost reslrielionarea accesului la li~ier. Tolu ~i, acesta conIine si alte inlorma!ii necesare allor comenzi. Solu)ia aleasA a lost crearea unui nou fisier, /ete/ shadow, care poate Ii accesat doar de ulilizalorul privilegia\.
root@anaconda , -J Is - 1 fete/shadow - rw- r ----- 1 rOOt ~ hadow 1084 2009 - 07 - 21 22 : 19 / e tc h hadow

Fisierul shadow contine numele de utilizalor ~i parola criptata. Pentru mai multe detalii man 5 shado.. ) sau consultali paginile de manual (man 5 pass ..d, secliunea 10.2.3.

6.5.4

Sesiune de shell

DupA rularea init ~ i autentilicarea utilizatorului In siSlem. acestuia ii eSle olerita, in mod tipie. 0 sesiune de shell (conlorm conligura!ie i din li~ierul / ete/passwd ). jnaintea olerkii promplului cAIre utilizator, procesul shell nou creal eile~te un sel de fisiere de oonfigurare. Acestea sunl lolosite pentru a stabili lormatul promptului, umaskul cure nt, aliasurile de eomenzi. variab itele de mediu.

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

175

in cazulunui interpretor bash (Bourne Again Shell), lisierele de conligurare citite sunt in ordine: le t e/ prof ile: acesla eSle shell;
fi~ieru l

global de conligurare penlru sesiunile de

-/ . bash _p r ofile sau -/ . bash _ login sau - / . pro f i l e: se executa primul gasit: -/ .bashr c eSle fisierul Obisnuit de conligurare locala; - / . bash _p ro file contine Iinia
if I - f

drepl urmare,

-/.bashrc I ; th @n
aceslli~ier.

-/ .bas hr c ,

fi

pentru a inlerpreta

Dup1l interprelarea fi~ierelor de conligurare. se slab i le~le mediul curent de lucru utili~atorului Ii esle oferil promplul unde peale introduce comen~i.

~i

6.6

Studiu de caz

6.6.1 Grub 2
in ciuda laplului ca nu a oferil nici 0 imbunalalire majora in ultimii ani. GRUB a ramas eel mai uti l i~al bootloader in cadrul dislributiilor GNUILinux. Aceasta datorit1i laptului ~ boolloaderul esle una din cele mai delicale componenle ale sislemului. 0 actualizare gresit1l a sa ducand la nelunc~onarea sistemului de operare. Unul din elementele care au conlribuit la lipsa de imbunat1ltiri aduse GRUB eSle si arhitectura veche ~i greu de extins In 2002 a inceput lucrul la 0 noua versiune de GRUB (GRUB2), vers iune care a adus aduc1l schimb1lri deslul de mari.
GRUB2 '~ a 10Sl rescris de la zero pentru a asigura 0 portabililale si 0 modularitale superioar1l versiuni i anlerioare. Printre avantajele pe care Ie olera se num1lra:

suport penlru scripluri; portabililale pe mai muite arhitecturi; suport pentru it 8n) ; un nou sislem de denumire a partiliilor.

Fi~i e re

de conligurare

GRUB2 se conhgureaza inlrun mod diferit lal1l de GRUB. in primul rand numele lisierului de configurare sa schimbal din /boot/grub/ menu . lst in /boot / grub/grub . efg . Spre deosebire de GRUB, noulli~ier de configurare nu mai eSle edilat direcl de c1llre utilizator, ci eSle general automat
, http ://wwN .9 n u.o ,g!.oftwa,elg ,ub/g ,tA>. 2. <On .htm I ' http. :llwiki.u bu ntu .comiGrub2 ' http;/le n. w ikiped ia. olglwikUlnwnation a lizatio n_ an d_ localization

176

lNTRODUCERE iN SISTEME DE OPEAARE

,
~

. .

. oot ~a nt : 'f

cat Iboot/grub/grub . ctg

f DO NOT ED I T TH IS FILE

f It is a u tomaticall y genHued by /uSr/sbin/grub-mkconflg uS1ng t emplates f fro m I~tc/g ru b.d and ~ etting ~ hom /Hc/de fault/gcub

(. .. 1

Configurarea GRUB2 se realizeza din Irei locuri: fisierul /e t c/defa. ult/grub : contine un set general de conl igurari, legate in
principal de diverse opliuni ale meniului de boot;

direclorul /etc/grub . ct: coni ine un set de scripillri care descoperA imaginile de

kernel instalate in sistem ~i gene reaza grub . efg ;


direclorul / boo t / grub : conIine bootloaderul 5i diversele module pe care acesla Ie to loseste.

Dupa edilarea unu ia din fi~ierel e din lete/ grub. d sau a I etc/defaul t Igrub va trebui ru lata comanda update- qrub2 pentru ca fisierul Iboot I grubl g r ub . cfg sa fie regene rat.

Editarea

op~iunilor

meniului

Fisierul / etcl del au l t Igrub contine configurAri ale meniului de boot. Spre exemplu GRUB_DEFAULT specifica op!iunea din meniu selectata in mod implicit, iar GRU B_TIMEOUT specilica timeoutul dupa care optiunea implicita va Ii utilizata pentru bootare.
, "

roo t @a nt : - I cat ! ~ tc/defaul t fgrub f If you chan g" this fil<> , run ' updat @ -g rub ' f !boot!g r ub!grub . cfg .

.. tt"rwards t o updau

!
" ,

GRUILOUIlULT- O GRUB_ TIMEOUT_ "i O GRUII_ DI STl\lSUTOR- ' lsb r"l"ue - I - s 2> !d"v/null I I "ch o Debla n '

10

Adilugarea unei noi op!iuni in meniu de boot Optiunile din meniul letc/grub , d : GRUB2 sunt create folosind scripturile din directorul

00_h ea der : incarca informa!iile din / e t cl default I grub; 0 5_ debian_ the me: configureaza lundaluri, cuiori Si leme; lO_ linux : caula imagini de kernel pe disc si Ie introduce in meniu;

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

177

. 20 memtestB6 +: Introduce in meniu imaginea Iboot/memtestB6+ .bin, daca aceasta exista: 30 _os - prob er: cautil aile imagini de sisteme de operare
~i

Ie include i n meniu :

40_cus t om: permite utilizatoru lui s;'\ introducil intrilri statice in meniu. Ordinea in care apar op!iunile in meniu este datil de ordinea numelor li~ierel o r_ Astfel, intotdeauna memtest66+ (20_memtest86+) va ap<'lrea dupil imaginile de kernel de pe disc { I 0_1 inu x). Pentru a adiluga 0 noua op!iune exista douil posibilitil!i: se editeazil li~ierul 4a_ cu s t om sau sa poale crea un li~ier nou, caz in care numele l isierului nou creat va delini pozi)ia intrilrii in meniu. Un exemplu de sintaxil care se loloseste pentn; adilugarea de noi opliuni este:
echo "lidding Cuotom Kernel \, SystemRescue" >\02
J
men u ~ntry

"

,
'0

" Ubuntu , linux 2 . 6 . 31 - 11 - c u 'to", " { set r oot ~ (hdO . 91 li nux Iboot !vmlinu z - 2 . 6 . 31 -11- custom root ~ UU lD ~ c 6 82 9~2 7- 2350 - 4,,8 4 - bdbb- 91b63fO I 8f98 ro i n i t rd Iboot I ini t rd . img-2 . 6 . 2 8 - ll -g"n .. r i c

" "
,.

"

menuentry " eoot SystemRescue CO from h 3rd drive " { .et root - (hdl, 101 linux !sysrcd/rescuecd subd;r- sysrcd s .. t~map - u$ !nard Isysrcd/ i n i tum . ig%
EOf

linia echo " Addi.ng Custom Kerne l & SystemRescu e " >&2 nu esle neaparat necesara. Daca eSle inclusa, atunci textul Adding... va Ii alisat in timpul executiei comenzii updat e-qrub2 . Gelelalle optiuni sunt similare cu cele din GRUB. Unul din elementele de noulale pe care lea introdus GRUB2 eSle 0 nouil schema de denumire a partitiilor. Astle l, discurile sunt denumile in lorma hdx, unde X este un numar ce incepe de la 0 (spre exemplu, primul disc SATA, este denumit hctO, al doilea disc SOB eSle hdl etc.), similar eu GRUB. in sehimb, partitiile se denumesc de lorma sda'! , cu Y incepand de la 1 (de exemplu a treia parli)ie de pe sda este scta3 ).

6.6.2

Pornirea sistemului de operare Windows XP

Pornirea sislemului de ope rare Windows XP urm;;ireste aceea~i pasi ca in cazul pornirii LinuK: pornirea sislemutui, incilrcarea BtOS, incarcarea baol/oaderului, i ocilrearea nucleului, pornirea serviciilor. pana la incarcarea bootloaderului sunt independenti de sistemul de operare deci, identici cu eei pentru LinuK.
Pa~ii ~i,

Bootloaderul penl ru Windows NT (NT. 2000, XP. 2003) este NT Loader (NTLDR).

178
NTLoader

lNTRODUCERE iN SISTEME DE OPEAARE

La tel ca ~i in cazul Unux, seclorul de boot al hard-disk-ului (MBA) sau al unei parti!ii (VBR) esle Iimitat ~i esle lolosil pentru incarcarea NTlDR. Imaginea acestu ia rezida in

c : \wi n dows \ n t I d r .
Dupa incarcarea bootloader-ului, acesta consulta fisierul boot . i ni pentru a localiza informaliile de pe partilia de sistem.

Conligurare NTLoader (boaUni)


Fi~ieru t bo o t. i n i se afli'!. pe part iiia de sistem (C :). Pentru vizualizarea ~i accesarea acestu ia \rebu ie perm isa vizual izarea l isierelor de sistem (Too l s->Fo l der Opt i on s - >View - >Hide pr ote c ted opera t i n g syste m f iles ).

Un exemp lu de continut al boot , ini esle prezentat in continuare:


(boot loa a er ]
2
,

timeo u t - 30
defau l t - mu l t I ( 0 I dis~ {O J rdl$ x (0 ) partitio n ( 1 1 \W1NDOWS

(operating systems ] 5 mu lti (0) <Ii s k (0) rdis k (O J partitiOl'l ( l) W I NDDWS " Microsoft N,n d o .. , Pcof~S S io n al " !no ~ xecute-op t in ffas t <let e ct

xp

in eaz ul existentei mai multor sisteme Windows, utilizatorului ii va Ii ali~at un ecran de seleeUe (asemanator eu eel al GRUB) _ Variabila timeout specilicli timpul de asteptare inainte de a inelirea sistemul de opera re dal de op)iunea implicita_ Lista cu optiuni le posibi le de boot-are a nueleului Windows XP 5e poale consulla aiei ' .

incarearea nucleulul Dupa rularea bootloader-ului, aeesta inearca in memorie imaginea de nucleu a Windows , n t os k r n l . e " e , ~i h all . dl l (Hardware Abstraction Layer), eontrolulliind apoi oleril nuclalului. Nucleul aste inC<'ircat in memorie in douli laze: ir'l prima lazli se ir'litializeazli dispozitivele sislemului (procesor, memorie), iar in a doua taza se i ncarea de~ice dri~er-el e de sislem r'lecesare.

Pornirea proceselor importanle


Dupli inelirearea nuclaului ir'l memoria, SU r'lt pornite, in ord ir'le, douli procese imporlanle: smss (Session Manager Subsystem): aeesla monteaza dispozitivele din sislem, creeazli ~ari abilele de mediu si pornaste winlngor'l (Wir'idows Logon Manager):
, http)l. uwor1 .mic ro.oft .comld ..la'-"t.asp <? ocOj_ kb;en_us ;833 72'

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

179

winlogon (Windows Logon Manager):

este procesul care se ocupa de aulenUlicarea utilizatorilor in sistem: in urma unei aulentificari reu~ ite sunt pornite shellul Windows (explorer) si alte procese ale utilizatorului.

Mai mulle detalii des pre procesu l de pom ire a unui sistem Windows XP se pot gasi aici'.

6.6.3

Interoperabilitate Linux-Windows

in cazul sistemelor dual boot Linu~ Wi ndows se poate Intampla sa se suprascrie MBRul si sa se piard a astlel optiunea dir&ct;"i de bootare a unuia dintre sistemete de operare. Pentru a r&C upera boolloaderul pierdut. trebuie rescns MBRuL

Reinstalarea GRUB Situatia cea mai frecventa. ee n&cesita 0 reinstalare GRUB este aeeea in care se reinstaleaza Windows pe un sistem pe care ex ista instalata ~i 0 distribulie Lin ux. La instalarea Windows suprascrie MBR astlel incAt 5e pierde stage I din GRUB. Pentru a reinstala GRUB. este necesar un mediu bootabil Linu x. Acesta poate Ii un LiveCD sau 0 discheta bootabila. in cazu l unei dischete bootabile utilizatorului Ii este oferit direct promptul de grub. in cazul unui LiveCD. utitizatorul va trebui sa deschida 0 consola si sa acceseze de acolo consola de GRUB:

root@asgard : -I grub Probing devices to gue s s BiOS ddves . This may ta ke a long time .
GNU GRUB

version 0 . 9']

(6401\ lower /

3072K upper memory)

, '"
11

M i ni mal BASH - like line edit i ng i s ,upported . For the first word, TAB l i st' po,sibl~ command co m p l ~tion$. Anywhere else TAB li .t. the pO$$ible completions of a device/f i lename. I
grub~

Presupunflnd Ca se doreste instatarea GRUB pe primul harddisk din sistem, vo r Irebui urma!i pa~ i i de mai jos: spec ificarea parti!iei care contine imaginea stage2 de GRUB:
grub> root (hdO , 2)

dac;"i nu se she pe ce partitie se afl;"i imaginile se poate lolosi comanda find, cauUind unul din f~ i e rele din Iboot. Cel mai adesea este cautat St8gel :
~

grub> find /boot/grub/stagel (hdO , 21

dupa descoperirea partitiei se realizeaz;'i pasul 1. apoi se instaleaza imaginea de GRUB in MBR :
g r ub> ."tup (hdO)
, http ://t9Chnet .micro .oft .com!. n u$/l ibr a ryibb4 5 7 123. a.px

180

lNTRODUCERE iN SISTEME DE OPEAARE

imaginea de GRUB poate Ii instalata si in sectorul de boot al unai parti!i i (VBR):


g r ub> ; e tup {hdO . O)

insa, 11'1 aces! caz, GRUB va trebu; sA fie porni! (chainloaded) eu un all bootloadar.
Comarlda quit sa folose~te penlru ie~irea din consola GRUB. Dupa repornirea sislemului, acesta va a!i~a ecranul de op~uni GRUB penlru seleclia sistemului de operare doril.

Reinstalarea NTLoader

Reinsta larea NTLDR eSle necesara 11'1 cazul in care se instaleaza 0 distribulie Linux lara a sa instata 5i un bootloader ($pre exemplu GRUB), sau In cazul unui MBR cor upt.
Pentru repararea MBR, Irabuie folos ita consola de rec uperare Windows XP (Rewvery Console). Pentru accesarea acesteia sa 101059$le CD-ul de instalare Windows si dupA bootare se alege op!iunea Repair. in co nlinuare se apasa R penlru rularea Emergency Repair Process si se alege Fast sau Manual Repair. Fast Repair eSle recomandala majorMti i uti lizatorilor, iar Manual Repair administratorilor si utilizatori lor a~ansati.
Mai multe detalii gasiti online ' ,

6.6.4

Personalizarea ecranului GRUB

Ecranul de optiuni prezentat de GRUB poate Ii anost. Pentru a rezolva acest neajuns se peate lolosi 0 alIa imagine de fundal. denumita GRUB sp/ashimage. Exista numeroase site-uri care olera astlel de imagini" ' ), Imaginile sunt imagini ,xpm arhivate (de exemplu hubble. xpm.gz). Penlru lolosirea unei imagini splash de GRUB trebu ie editat lisierul principal de config urare a GRUB (jboot/grub/menu .lst). Pa~i i ce \rebuiesc urmali sun\ prezenla!i mai jos: crearea unei copii de siguran!a a li~ieru lu i de conligurare GRUB:
root@asgard : /boot/grubf cp me nu. 1 st menu . lst . old

obtinerea unui GRUB:

l i~ier

.xpm.gz care contine imaginea de splash lolosrta penlru

root@asgard , /boot/grubf wget http://schragehome . delsplash/hubb l e.xpm


~

) 5

--2009-09-26 06 : 23 : 27-- http : //schragehome . de/splash/h u bble .xpm. gz Re;olvinQ schragehome . de ... 82.16S . 10S . 21S Co n ne ctin\l to ~ chr~\lehome . d~ 1 82 .1 6S . 10S . 21SI : aO ... conn~ct e d . HTTP reque ~ t sent . &"uting respon"e . .. 200 OK Le ngth : 99S93 {9"JK) 11mag~/x-x pi x map l Sav i n\! to : hubble . xpm . gz

."

1htlp1Iwww.nlfs.comlm .. sing-co t..Pt.-d-syste m-lilu .htm ' htlpll.ch. 89" ho m".d,,'. plash!
, http;llwww.q uMfVi.ion .comla .chl\l00710~I\l.Jjrub_.pfa.h_i. html ' ht'p;llkd" look,o.glindex .php ?xco nl,,nl mOOe _35x45

CAPITOLUL 6. PORNIREA SIINITIALIZAREA SISTEMULUI

181


"

1 00 ' I 0.5.

-----------------------------------
06:23 : 27 [209 KB/.) -

99 , 593

20~K/.

200~ - 0~ - 26

'h ubbl e .xpm. gz ' saved

1 ~~593/99593)

editarea fi,?ieru lui de configurare:


I ' .. I
2 ) I Pre tty co lour s Ico lor cyan/blue ~hltefbl u e "pla" h image - {hdO , 2 ) fboot! qrub/hu bbl e . xpm . gz

I . . .I

in exemplul de mai sus partit ia unde se afiA imaginea de GRUB este a treia parti!ie de pe primul disc (hdO , 2 ). DupA editarea si salvarea fis ierului se reporneste sistemul. Noul ecran de opti uni GRUB va folos i ca imagine de funda l hu bble . xprn. gz .

Cuvinte che ie

pornirealrepornirea unui sistem bootinglbootstrapping fazele pornirii unui sistem de operare BIOS POST CMOS dispozitiv bootabil sector de bootlsector bootabil MBR . VBR labelA de partitii bootloader fazele unui bootloader (stages ) GRUB slage l , "_slagel _5, stage2 Ibootlgrubl menu.lsl

consola GRUB imagine de nucleu optiuni de incArcare a nucleului init run level /etcJi nittab letcJinil.d,letcl rcX.d getty login lelc/passwd, l elc/shadow /etc/profile. -/,bash"'profi1 e, -I. bashrc NTLDR boot.ini smss, winlogon Recove ry Console

i ntrebiiri 1. Ca re esle ord inea corecla a pornirii unui sistem?

o o

vml inuz. inil. GRUB, BIOS GRUB, BIOS. init. vm linuz

182

INTRODU CERE iN SISTEME DE OPERARE

o BIOS, GRUB, vml inuz, in;! o ini!, vmlinuz, BIOS, GRUB 2. Ce aSia un sector de boot?
o pr imul sector al prime; partiti;
o pr imul sector al una; parMi; sau al unui harddisk
o un

sector ce conIine semna:lura O~AA55 (ullimii do; octel;)

o un s6(:tor pe care se gases!B laza a doua a GRUB (5Iage2)

3. Care din urmatoarele esle un inlocuitor al inrt?


o upstart

o
o

downstart
slowstarl

o laststart
4. GlUe parti!;; prim are, active, extinse, logi08 S8 pot alia pe un hard-disk?

o
o o o

oricale. 1. 2, 4
I, oricll.te, oricate, 4

04,I,I,oricAte

I, oricate, 2, oricale

5. Care din urmiitoarele asocier; NU aSle valKlll.?

GRUBINTLOR
vml inuzlntoskrnl
PQS TICMO$

o
o

genylwinlogon

6. Care laza a GRUB asIa resposabila cu incarcarea imagini; de nucleu linux?

o slagel o stage1.5

o o
o

slage2 slage3
li~ierul

7. Care esle

principal de cOl1ligurare GRUB pe un sislem DebianiUbul1lu?

l elc/main_ cl l elc/grub.conl ibooVgrub_ COl11 ibooVgrublmenu.lsl

o
o

8. Care esle ordinea coreeta de pornire a unei sesiuni shell?


C JPYnghted matanal

CAPITOLUL 6. PORNIREA !?IINITIALIZAREA SISTEMULUI

183

o o o

login, init, getty, bash getty, bash, login, init inrt, getty, login, bash inrt, login, bash, getty

o o o o
o
10.

9, Cum se reprezinta, in notalia GRUB, a 3a partilie de pe al doilea disc? Idavlhdb3 Idavlhda2 (hd l ,2) (hd2,3)

lete/ sha do w con~ne parolele criptate ale uti lizatorilor sistemu lui. Poate fi accesat numai de utilizatori privilegia!i ai sistemului,

F~ i erul

o o
o o

ade~arat , ade~arat ,

adevarat fats

fals, adavarat fals, tals

C JPYnghied matanal

Copyrighted material

Capitolul7 Analiza hardware a sistemului


It's hardware that makes a machine fast. It's software thaI makes a fast machine slow. Craig Sruce

Ce 59 inva~ din a cest capitol ?


Principalele componente hardware ale unui sistem de Calcul

Mecanismele de accesare

~i

interogare a dispozitivelor hardware

lncarcarea si folos irea modulelcr de kernel


Utilitare de interactiune eu dispozitivele: l.s p c i , lsusb. s ma rtmontoo l s

LlICrul ell dispozitivele sislemului: cemanda dd


Interactiunea eu sistemul: / pr oc , s y act l

Cum se poate realiza 0 capie de siguran!A pentru MBR

7.1

Structura unui sistem de operare

Sistemul de operare esle eel care se ocupa de managemenlul resurselor hardware si software prezente in computer. SO are mai multe componente. fiecare ell un rol binI! definil. Diagrama 7.1 prezinla modul in care eSle slrucrural accesulla hardware.
Sislemul de operare esla compus din: kernel: nucleul sistemului de operare - se ocupa de comunicalia direcla cu hardwareul si olera un sislem de management al resurselor pentru aplicaliile din sislem: blbliotecr de lunc1li - pun la dispozi~e aplicaliilor un API {App/icalion Programming In/efface) comun penlru accesulla resursele olerile de kernel; aplicall1 - cele care vin cu un sistem de ope rare sun! de o~cei u!ilizate pentru conligurarea sislemului, modificarea dateklr din sistem elc. Aceste aplicalii POI ~ utilizeze biblioteci de junclii sau pot comunica direct cu kernet-ul.

18'

186

INTRODU CERE iN SISTEME DE OPERARE

I .. -.- .... -.- .. -.-.- .. -.- .... -.- .... -.- .... -.I
BI.I"".<I
F~tira

........................... .

7.1: Accesul la hardware

$istemul de operare face distinctia intre douA ' spaUi" in care sa pot gasi programe in execu!ie: spaliul ulilizator (user-space) ~i spa!iul kernel (k.ernel-space). Prin "spa!iu" sa

lnl8lag& atAI spatiu de memoria ca.! " sl mediu de executie. Fiecare spatiu are "
de lucru

a~e

cond iti i

Spa!iul kernel asia spa!iul in care ruleaza kemel-ul. ConIine door kernel-ul ~i componentele sale (precum driver-ele incarc ate la un moment dal). Tot ceBa CB
sa
gase~te

in spa!i ul kernel are acces d irect la hardware,

Spa!iul utilizator aSIa spatiul In care sa gasesc apl ica!i ile 51 bibliotecile de junctii utilizate de acestea la un momenl dat. Tol ceea ce se gase~le in spaliul ul ilizalor nu are acces direct la hardware. Toate actiunile aplk:atiilor . . din spatiu l utilizator trebuie sA treaca pr in kernel. Com unicat ia dintre spaliul utilizator ~i spatiu l kernel se realizeaza prin apeluri de sis\em. Apelu t de slstem este un mecanism prin care programele sau bibliotecile din spaliul utilizator acceseaza resursele puse la d ispozitie de kerne l. Practk:, apelurile de sistem sunt lunc~i implementate in kernel pe care aplicajiile d in spat iul utilizator Ie acceseaza direct sau prin intermediul bibliotecilor de functii. Acest cap itol va analiza modul de lucru intern pentru un sistem
Linu ~.

7.2

Considerente hardware

Componentele lilice ale sistemului poarta denumirea generk:a de hardwa re . Pen\ru folos irea acestora, utilizalolul dispune de un sistem de operare ~ i aplicatii. Acestea reprezinta nivelul de soltware de peste hardware. Fieeare componentA este esentiala si nu poate lunctiona in lipsa celeil alte. Sistemu l de operare ~i aplicaliiie de bazA sunt cele care asiguri!! interlala cu hardware-ul pentru a preveni. asUel, d ifk:ullalea programArii directe a hardwareului. Din punc\ul de atanal

CAPITOLUL 1. ANALIZA HARDWARE A SISTEMULUI

187

vedere al utilizatorului, interfata cu hardwareul este limitata la un set de apeluri catre sistemul de ope rare ~i aplicaliile de baza.

7.2.1

Structura unui sistem de calcul

Din punel de vedere Slruclural. un sislem de ca lcul esle un sel de componente cu roluri bine definite care comun;ca pentru indeplinirea une; sarcini. Sistemele de calcul din ziua de azi urmead structura von Neumann prezentala mai jos. Aceasta esle lolosita pentru a delini setul de componente care exista intrun sislem de calcul ~i interaqiunea dintre acestea.
Unl!ar... de <o mand~

. ( Unlt.:ltea

a~tme!lc~ ~i "'Il id

Figura 7.2: Inleraqiunea componenlelor hardware ale unui sistem de calcul Dupa cum se observa, arl1itectura von Neumann precizeaza 5 componente ale unui sistem de calcul : unitalea de comanda sau unltatea de conltol esle responsabi la cu comandarea modului in care celelalle componente lucreaza; unitatea de comanda va interpreta codul unui program (va decodil;ca instructiunile) si va cere unMlii aritmetice si log ice execu!ia sarcinilor necesare; unitalea arllmetlci ~lloglcii se mai numeste unltatea de execu.ie: rolul acesteia este de a execula codul transm is de la unitatea de comanda; unitatea aritmeticA are un sel de regis Ire pentru slocarea locala a inlorma!iei ~i un acumulator penlru electuarea de operatii; rolul unitati i arilmetice si logice este lndeplinil de procesor; memoria eSle componenla In care se stocheaza codul programului de executal si datele acesluia; memoria este lolosila de unitatea de eXBCutie si de eomanda; unitalea de comandi'i cile~te din memorie instruc!iunile ~i Ie decodilici'i, pe ctmd unitatea de eXBCutie cite!?te si serie in memorie datele cu care efectueaza diverse calcule; dlspoziUvele de Intrarelie~ire (perilerice) sunl eele care intermediaza comunicatia sistemului cu exteriorul; inlorma\iile de la aceste dispozitive sun! oopiate in memorie si lolosile ulterior de unitalea de comanda ~i unitatea de execujie; exemple de dispozitive periferice sunt monitorul. tastalura. mouseul, hard diskul etc.

188

INTRODU CERE iN SISTEME DE OPERARE

7.2.2

Procesorul

Procesorul sau unrtalea centrala de preh.JCrare (CPU - Central Processing Unit) esle "creierul" sislemului. Este echi~alenlul unitatii de comanda ~i a celei de execulie din arhitectura von Naumann. Procasorul esta cel care ~a intarprata codul unui program si ~a electua operatii cu dalele acestuia ~i este componenla de baza a execuliei unui proces. Procesorut esle cel care determina arhitectura unui sistem de calcut. procesoarele Intat sau AMD fac parta din arhitactura )( 86. Majorrtataa procesoarator mai noi lac parle din arhitectura x 86_ 64_ Arhitectura unui sistem de calcul se relera la setu l de instroctiuni pe care procesorulle oleni utilizalorului. Procesorul dispune de un set de localii de stocare de foarte mare viteza denumite registre . Vitaza procasorului esta foa rte mara comparaliv cu vitaza mamoriai si da aceea este nevoie de reg istre pentru a efectua calcule rapide. in ziua de azi dimensiunea registrelor este de 32 sau de 64 de bill. Dimensiunea registre lor este sursa denumirii sistemului. Un sistem este denumit sistem pe 32 de biti sau sislem pe 64 de bili In lunclie de dimensiunea registrelor sale. Un procesor poale avea una sau mai multe unitati de procesare (core). 0 unitate de procasare asta un circuit alactronic care axacuta inslrocti uni. Un plOcasor cu 0 singura unilate de procesare se numeste single -core , iar un procesor cu doua sau mai multe unitali de procesare allate pe acela~i circuit integrat se nume~te multi -core. Penormanla oblinuta prin lolosirea mai multor unitali de procesare depir.de de existenla firelor de execu!ie multiple In cadrul aplica!iilor si de suportul sistemului de operare. Caracteristica ~itezei unui procesor este. de obicei, Ire cven~ acestuia, masurata In Hz. In zi lele noaslre, Irecvanta de lucru a unui procesor eSle de ordinul GHz. Calculatoare le persoanele 1010se5O procesoare cu arhitectura i386, precum: Intel Pentium, Intel Xeon, AMD Athlon, AMD Opteron etc. Exista un numar Insemnat de arhitecturi menite sa adreseze de la constrangeri specifice: spre exemp lu cele pentru platforme integrate (e mbedded systems): ARM , MIPS. sau alte pla\!orme de calcul inlensiv: Alpha. Powe rPC etc_ Pentru arhitectu ri dilerrte poate varia numarul de bili pe care sunt electuate operatii le sau numarul de registre allate la dispozi,ia procesorului. Astlel nu putem compara viteza unui procesor i386 cu un procasor PowerPC lolosind fracventa.

7.2.3

lerarhia de memorie

in amitectura unui calculator modern, memoria este organizata in mod ieramie. Fiacara nivel d in ierarhie are 0 lalime de banda mai mare. d imensiune mai mica ~i latenta mai scazula decAt nivalul inlerior. Dupa cum se observa in ligura 7.3 cele 4 niveluri principale sun\: registrele procasorului, memoria cache. memoria RAM ~i hard d iskul.
~,., ...ov

...atanal

CAPITOLUL 1. ANALIZA HARDWARE A SISTEMULUI

189

R V;h. ,., ~Pf<K"'OfU"')

1[

j
Regi strele procesorutui

M~mofl.

PAM

,"'--5'0,,"'" p. Q;5<

Figura 1.3: lerarhia de memorie

In vArful ierarhiei de memorii se alia registrele procesorului care au eea mai mare vileza de aeces. de obicei un cielu de CPU, dar dimerlsiunea de cateva sute de bytes. Ele SUrl! lolosite pentru a stoca dalele care sun! prelucrale de dltre procesor la momenlul curent.

Memoria cache Din cauza dileren!ei mari de vileza intre memoria RAM si procesor. se 10lose~le un nivel intermediar de memorie: mai rapida dar mai scumpa ~i de dimensiunea mai mica. Aceasla memoria poana numala de memori e cac he si aSle lolosila pentru re!inerea anumitor informatii din memoria RAM. Memoria cache fotose~te conceplul de localizare temporala ~i spa!iala. Aceasta i nseamna ca in momentul in care procesorul doreste sa acceseze 0 zona de memorie, mai inUIi va com para adresa acesteia cu adresele lone lor de memorie care au lost copiate deja in cache pana in acel moment. Daca descopera ca aceasta zona ex ista in cache , ea va Ii accesa!a direcl de acolo. ln caz contrar. zona de memorie doritA va Ii cop iatA in cache pentN a putea Ii relolosita in momentele apropiate. Cand cacheul se umple, in tra rile din el sunl ~Ierse in ordinea vechimii lor. In mod tipie, memoria cache are 0 dimensiune de ordinul sutelor de K8 sau catorva MB Exisla Irai upuri da memoria cacha: Lt . L2 si L3. Memor;a cache L1, sau de nivel t , esle 0 memorie incorporala in procesor, de dimansiuna Ioarla mica dar loarla rapida. liind lolosita panlru a accesa dale importanle ~i Irecvent lolosile de catre procesor. Poate Ii accesala in cativa cicli de CPU ~i are dimensiunea de zeci de KB. Memoria cactle L1 este de obicei de lipul SRAM (Slatic RAM). ceaa ce inseamna ell. nu necesil;li refresh pentru a menline dalele. Memoria cache L2 mai eSle numila. si cache secundar, fiind lolosil;li penlru a sloca dale lolosite recent. De obieei esle extern;li procesorului dar se lin de spre i ncorporarea ei in

.1

190

INTRODU CERE iN SISTEME DE OPERARE

procesor. Poale Ii folositil ca bulter pentru datele ~i instructiunile ce urmeaza a Ii preluate


din memoria RAM. Are 0 lalenla de 2 pana la 10 ori rnai mare decal memoria cache Lt,

dar dimensiunea mJlt rnai mare. Inilial dimensiunea memoria; cache L1 era de 256 sau de 512 KB. iar in prezent are dimensiunea de ordinul M8 Memoria cache l3 asle 0 memoria specializat1l care coopereazA eu memoria cache L1
5i L2 pentru a imbun1ltii,!i performanlele sislemului. Are dimensiunea mai mare decal memoriile L1 ~i L2, fii nd de ordinul MS. Des; tatenla inlrodusi!. esle rna; mare decAl pentru L 1 5i l2, aCCBsare3 ai asia mai rapid;ll decal in cazul memoriai RAM.

Memoria RAM

Cflnd na referim la memoria unu; sistem de caleul na vern relen, de abicei, la memoria RAM (Random Access Memory). Aceasta este tolosita pentru a stoca datele si codul unui proces. in momentul in care se doreste electuarea unui calcul sau decodilicarea unei inslructiuni, se lace un apella memorie penlfu cilirea acelei informalii. in zi lele f"loaslre , memoria RAM lolositA eSle de lipul DRAM (DynamiC RAM) . Tipul eel mai recent este DDR3. Caracteristicile importaf"lle ale uf"lui moo'ul de memorie RAM sunt: Irecventa de lucru: de ordif"lul MHz timpul de acces: de ordirlJl Mf"IOsecundelor rata de Iransler: mAsuratA in GB/s capacitatea: actualmente de ordinul GB

Hard disk-ul Probabil eel mai important dispozitiv perilerie al sistemului esle hard-disk-ul (HOD hard disk drive). Acesla este lolosit, de obicei, ca supor! lilie pentru sistemele de lisiere. Hard-disk-urile reprezinlA dispozitive de slocare permanenlA (nepersislenlA) a datelor. Paramelrii imporlan!i care caracterizeazA un hard-disk sun!: capacitatea acesluia: in ziua de azi de ordinul sutelor de GB sau ordinul TB; viteza (mAsurata in RPM - Rotations Per Minute): cu valori lipiee de 5400 RPM, 7200 RPM, 10000 RPM: dimensiunea buffer-ului (un cache lolosit pentru mArirea vitezei): cu valori de ordinul MB. Exisla un set de interlele si magistrale prin care un hard-disk poate Ii accesat. Dintre acestea aminlim ATA, Serial ATA, SCSI, SAS etc. Fiecare dinlre aceSle magistrale olerA o interfata distincta de coneclare a hard-disk-ului la placa de baza si un all protocol de comunicare cu hard-disk-ul pentru accesarea inlormatiilor de pe acesta. Un hard disk cOI1~l1e unul sau mai multe discuri nefiexibile de melal numite plalane. in cazul unui disc lormatat, supra/ala este impArti!;'i in pisle care sunt cereuri concentrice pe fiecare parte a platanelor. Pistele egal distantate de a~ de pe Hecare parte a platanului atanal

CAPITOLUL 1. ANALIZA HARDWARE A SISTEMULUI

191

si . de pe tcate platanala, SUr"lt grupate ir"l eilir"ldri. Fieeara pistll este impllrtitll . in sactoare de cate 512 biti fiacare.
Sector Piste

Platane

Figura 1.4: Structura unui harddisk

7.2.4

Placa de bazii ; interconectarea componentelor

Pisca de bus {ma.inboard, motherboard) eSle eompone r"l la tizic1l al c1lrei rol eSle
as igurarea conacliviti!ilii celorlalle componenle fizice. In mod l ipic, 0 placa de baza ars loc uri {s/oturi, socketurl) panlru calelalle componenta: procasor, memoria, placa video elc. Dupa cum se observa ~i in ligura 7.5, placa de baza coni ine doua "nuclee" de interconactare denumite chipse t uri. Acestea sunt northbridge si southbridge. A~a cum rezulta ~i din denumirea lor. northbridge-ul se alia in partea de sus a placii de baza iar southbridge-ul in parlea de jos. Exislll 0 conexiune a northbridge eu southbridge-ul. Northbridgeul mai asle numit si Memory Controller Hub (MCH) si asta lolosit pentru a conacla componentele rapide ale unui sislem de calcu l: Procesorul Memoria RAM Placa video {prin PCI Express sau AGP)
Northbridge-ut dicteaz;'i tiput de procesor, car"ltitalea. vileza si tiput de care poale Ii 101 0si11l.
memor~

RAM

~,., ...ov

... aJ:lnal

192

INTRODU CERE iN SISTEME DE OPERARE

$oufhbridgeul rnai eSle nurni! si 1 10 Controller Hub (ICH) si eSle folo~t penlru inlerconectarea componentelor mal lente ale sistemuluL Coniine urmlltoarele

compo nellie ~i magistrale:


Magislrala PCI penlru legalura eu placile PCI

Magistral1i LPC pentru legatura eu Super 1/0 (tastatura, mouse, porI paralel, port
serial, oonlroler de floppy)

Magistralll: SPt pantru legatura eu dispol.itive de stocare de tip flash


Magistral:!l 8M penlTu legatura eu aile dispozitive de PI'! placa de bam (sanzori de

temperatura si ventilalor)

COfllToler DMA Controler de inlreruperi Dispozitivele de stocare (ID E, SATA) Real Time Clock (ATC) USB Ethernet (Ioterlala de retea) Interfala audio Memorie BIOS
7.2.5
Oispozitive periferice ; magistrale

Dispozitivela periterice ala sistemului asigur~ comunicatia acastuia cu axteriorul, Coneclarea aceslor dispozitive periterice se realizeaza prin intermediul unor conectori in placa de baz~, Ace$ti conectori sunt oterili he direct de placa de baz~ (in cazul unor placi incorporate), fie de 0 placa specializata coneclala pe placa de baza (placa video. placa de relea elc.) Conexiunea diverselor placi in placa de baza. se reaiizeaza prin intermediul unor sloturi si a unor magistrale dedicale: PCI, AGP, USB etc. Magistrale importante ale sislemului sun\: FSB - Front Side Bus: conecteaza. procesorul de northbridge Back Side Bus - conacteaza. memoria cacha de procesor PCI- Peripheral Component Interconnection AGP - Advanced Graphics Port PCI Express USB - Universal Serial Bus C JPYnghted matanal

CAPITOLUL 1_ ANALIZA HARDWARE A SISTEMULUI

193

,"0

1 0.0'"

_.,'"

1-

I ..... .,..,.., ,,,"""' '',, ',"b)

._'00'....."11.

10 ...,,",

.,

lot.,,,., '""

~ ' --_l r------------------------l-'----'


I""

.,.o/1k.

00000,"

<ont",10<

PC' bu.

IVO ,on"o'I<, nuDi

PC,

,'''u
l PC bu.

''',n "ON 18105)

..So,,,", ,.11 _ ,,,,,,


..,~

' ''001

yl>oo,.

OI. ~

,-"

Figura 1.5: Diagrama bloc a pl1l.cii de baza

7.3

Suportul pentru dispozitive la nivelul kernel-ului

Nucleul sislemu lui de operare esle cel care inlermediaza accesu l apl icatii lor la hardware. Pelltru ca hardware-u l sa poata Ii utilizal, IlllCleul trebu ie sa ~ti e cum sa comunice cu acesta. Nucleu l oferi!. suporl de comunicatie cu dispozitiveie sislemului prin illtermediul driver-elor.

C :opynghted matafoal

19.

lNTRODU CERE iN SISTEME DE OPEAARE

Driver-ul reprez inta un set de rut ine care se executa la nivelu l nucleului 51 care permit accesulla un anumi! dispozitiv.
Dispozitivele pe care Ie poate utiliza 0 apl ica!ie pot Ii dispoz~ ive fL1:ice reate sau pot Ii dispozitive virluale (care simuleaza comportamentul unui dispozitiv hardware). in Linu ~, suportul pentru d ispozitive poate Ii inelus in kerne l (in momentul compi lariij sau poate Ii disponibH pr in intermediul module/or, module care pot Ii incarcate la cerere de caire

sistem.
in prezant, majoritalea distribu)iilor conlin kernel-uri comp ilate eu supor! generiC penlru unete dispozilive mai des int:l.lnile, iar suportul pentru anumite dispozitive eSle disponibil prin module. Modulate sunt incareate doar dad. dispozitivele alerente sunt prezente.

7.3.1

Listarea modulelor inca reate la un moment dat in sistem

Pentru a lista modulele incarcate la un moment dat se utilizeazii comanda lamod:

, ,

'" "

ubunt u@ubuntu,'$ lsmod Module Size 40856 'tcomn 12e~p 25728 bl uetooth 55908 12452 epufre~u"er"p~ee 5408 epufre~power oa ve 2688 cpufr~'l...ondem ~ nd 9228 5792 fce'l...table

"

, , " " " ,


0

U~ed

by

rteo"",, deo"""

12e~p

cpufre'l..., t a ts , cpufce'l...0ndemand

I ... J

Comarxla

ali~eaza

pentru liecare modul in parte, pe coloane:

numele; spaliul de memorie ocupat de acel modul; numiirul ~i numele modulele care depirxl de el.
Acela~i

lucru se poate alia prin intermediul sistemului de li~iere virtuat Iproc. /proc/modules conIine lista modulelor lncllrcate la un moment dat.

Fi~ierul

2
J

, e , 10

"

ubuntu@ubuntu:-$ cat /proc/modules .tc o",," 40856 0 - Live O~eObbbOOO I2c~p 25728 5 rtco""" Live OxeOM1000 bluetooth 55908 4 rfcomm , 12c&p , L1Ve Ox e Ob51000 Ip 12452 0 - Live Oxe Ob39000 cpufre~user"p~ce 5408 0 - Live OxeOb31000 cpufre~"t ~t" 1360 0 - L1ve OxeOb2eOOO cpufreq..powe r , a v e 2698 0 - Live Oxe085~OOO cpufu'l...0ndern<>.nd 9228 0 - L;"'@ Ox@Oa@@OOO tre'l...tab l e 5H2 2 cpufre'l-st~ts , cputre'l-onde"",nd ,
(

Live OxeOb27000

... )

Modulele disponibile in sistem se gasesc in / lib/modu les/ <versi une_ kernel>. Modulele incluse in nucleul distribuliei se giisesc in /lib/modules/<versi une_ kernel>/ ker nel. In acest director ele sunt

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

195

organizate in tunctie de categoria din ca re lac parte - existA astlel directoarele arch (module penlru arhiteclura cu rent;:l). crypto (criplogralie), drivers (drivere dispozitive). f s (sisleme de lisiere). I ib (module care implemenleaz;:l difer ite lunclii in kernel). net (relea). security (securitate). sound (sunet):
>
~rch

root@ubuntu:-I 1 s Ilib/modul es /2 . 6 . 1 8- 4- 68 61 ~ .. rn .. l/ c r ypto driven fs lib net .ou nd

Versiunea de kernel poate Ii allata utilizfmd comanda:


ubu n tu @ u b u ntu : -$ uname - r

> 2 . 6 . 20 - 15 - ge ner ic

Dupa cum sa observat ~i din ie~irea comenzii lsmod, inlre module exista dependente. Aceste dependente sunl descrise in / lib/modules/ <versi une_ kernel>/modu l es . dep - acest I~ier este general automat la rularea comenzii depmo d.

7.3.2 incarcarea unui modul


inainte de a pre zenIa modul in care un modul esle incarcal in nucleu. trebuie menlional ca in distributiile moderne Linux modulele sa incarca automat in lunclie de dispozitivele hardware prezente in sistem. Inc;:lrcarea manuala a unui modul se poate realiza lolosind comanda insmod sau comanda modprobo. Comanda insmod pr ime~te ca argument calea ~Ire lisierul unde se g;:lseste modulu'- Acest lucru 0 face destul de dihcil;:l de folosil. Un exemplu de utilizare este dat mai jos (se presupune ca modulul ce se dore~te a Ii incarcat nu este deja incarcat).
roo t @ u bun t u: -I i n.mod
. /dr'v~I5/inp u t/m i .c/pc.pkr . ko

root@ubuntu:-I l$mod I grep pcsp pcspl<r 4224 0

o comanda echivalenta comenzii i nsmod utilizate mai sus dar care incarca si dependenlele unui modul (daca existA) este modprobe <nume_modul>:
root@ubunt u: -I modprobe pC$pkr

Pentru a configura modproba se poate utiliza fisierul /etc/ modprob e .coflf sau directorul / etc/modprobe . d.

7.3.3

Descarcarea unui modul din kernel

Pentru descarcarea unui modul din kernel se poate utiliza coma.lda rmmod sau comanda modpr obe - r . Comenzile urm;:ltoare descarca modulul pcspk r . cu observalia ~. la utilizarea lui modp r obo. se lncearca si descarcarea modulelor de care pcspkr depinde (daca existA si nu depind si alte module de ele).
roo t @ ubun t u: -I rmmod pc . pkr 3 root@ubuntu:-I modprobe - r pcspkr

196

lNTRODU CERE iN SISTEME DE OPEAARE

Tabelul 7.1: lerarhia din Isys

I Director
/sys/devices
/ sys /bu s

Conflnut

/sys/c l ass /sys/bloc k /sys/ fi r mware


/sys/fs /sys/ k ernel /sys/module /sys/power

Subdirectoarele care reflecla modul fizic de conectare al dispozitivelor in sistem Legatl.lri simboliCe caIre dispozitive grupate in Junelia de bus-ul (magistrala) de care apartin aceslea Oispozitivele grupate in lunc!ie de clasa din care lac parte Dispozitivele bloc Dispoz~ ive l e eu suport firmware
Informatii deepre Sistemele de fisiere Informa!ii despre kerne l Subdirectoare pentru fiocate modul in parte Inlormatii despre consumul de curen!

7.4

Analiza hardware a unui sistem (magistrale, chipset, CPU, memorie, dispozitive)

7.4.1 Lisla hardware - /sys


Folosind sislemu l de lisiere virtual (sy sfs) montat de kernel in /sys , se pot obline informatii des pre dispozitivele hardware aflate in system. ! sys este popu latde kerne l eu informalii provenite de la driver-ele incll.rcate la un moment dat. Oispozijivele hardware alisate in acest director sunt cele care au lost delectate de kerne l si care sunl ulilizabile de acesta. Tabe lul 7.1 prezinta continutul directoarelor din ! sys .

7.4.2

Comenzi penlru

afi~area

dispozilivelor

Informatii des pre dispozitivele din sistem si starea acestora pot Ii aliale si prin intermediul unor comenz i. in eele ee urmeazll., se vor prezenta comenzi le utilizale penlru a prezenta diverse informalii despre dispozitivele din sistem.

Dispozilive USB Pentru a alisa magistralele si dispozitivele USB prezente in sistem se utilizeaza comanda lsusb:
2 ,

ubun tu @ ubuntu:-$ l~usb Bus 002 Dev i ce 001 ' ID 0000 : 0000 Bus 001 Device 001 : ID 0000 : 0000

Informatii despre magistrala USB se regasese 5i in !s ys !bus!usb! . Subdirectorul devices prezinUi dispozitivele sub forma de legaturi simbolice caIre directoare din !sys! devi ce s. Subdireclorul driver s din !sy s ! bu s!usb ! contine intormatii despre driverele utilizate.

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

197

5
6
1

3 10

ubu n tu@ubu nt u:-$ Is - 1 Isys/bus/usb/ dev(ce.1 total 0 h " HwxrwX 1 rOOt root 0 2007 - 09 - 04 18 : 16 1 - 0 :1. 0 - > .. 1 .. I . . l d evlce"/pc l 0000 : 00/0000 : 00 : 07 . 21 u a b l 1 1- 0 : 1 . 0 l rwxrwxrwx 1 roo t root 0 2007 - 09 - 04 18 : 16 2 - 0 : 1 . 0 - > .. 1 .. I ldevice ,/ p ciOOOO : 00/0000 : 00 : 11. 0/0000 : 02 : 02 . 0Iu s b2! 2- 0 : 1 . 0 lr "'H "'HWX 1 r oot root 0 200 7- 09 - 04 1 8 :1 6 u, bl - > .. I .. I .. I d .. v i c .. , Ipc i 0000 : 00/0000 : 00 : 0 7 . 2 lus b1 lr "'H "';U WX 1 r OOt rOOt 0 2007 - 09 - 04 1 8 :1 6 u, b 2 - > .. I . I l d ev i ce,/p c iOOOO : 00/0000 : 00 : 11. 0 / 00 00 : 02 : 02 . 0/u s b2 ubu n tu@ubuntu:-$ 1 s ys Ibus lu s bl dr i vers 1 total 0 dr w xr - ~r - x 2007 - 09 - 0 4 1 6 : 1 6 roo t root d r",xr -x r - x roo t root 2007 - 09 - 0 4 18: 16 drw"r - xr - ~ 2007 - 09 - 04 1 6 : 1 6 ua b ts roo t r oot

" " " " " " "

"

, ,
, ,

" -,

" "

"

" " " Ullima comandA listeazA recursiv directoarele dir"l / sys/ bus/usb /d r

u b uI'ltu @ u b u nt u: - $ lr "'H WHWX r Oot root l r " x r wxrw , rOOt root lr "'H W ;U WX ~ OOt root

" -"

" " "

'"' ""'

I s y ~ Ibu s I u sbl drive r' I


mod u l~

gre p Modu l e

- > , . I . . I . . 1 .. /modu l ~fu5bco r e module - > , . 1 . . I . . 1 .. /modu 1 e/usbcore mod u 1~ - > .. / .. 1 .. 1 . . /Modu l efu ~ bco r ~

i ve r s, d .ulflnd

liniile ca re conlin relerinle la li~ ie re cu numele module. Se observA astlel cA modulul utili zat asle ustx:ore (dalele si orele lisierelor au lost eliminate din iesirea comenzii) .

Dispozilive PCI

DiSpozilivele de pe magistrala PCI se pot afla uti lizand comanda l.spci :


~

ubu n tu@ubu nt u : -$ Isp c l 00 : 00.0 Hoat b ridge : In te l Co rporation 82865G/FE/F OMM Controller/ Ho a t -

""'

"
6

1 3 ,0

ln t ~rfac " Ire v 021 00 : 0 1. 0 pcr bri d'ije : In t ~ l Corpora ti o n 8286 SG/PE/P PCI t o AGP Contr o ll e r Ir .. v 02) OO : l d. O U SB Controller : In t d Co rpo r at i o n 8280 1EB/ER ( ICHS/I CH5R) U SB UHC I Co ntr o ll er U (rev 021 OO : le . O PO b ridge : Intel Corporat ion 828 01 PCI Bridge (r e v c21 OO : lt.O I SII b ridge : I nte l Co r po ratio n 82901eS/ R ( I CH5 !1 CH SRI LPC Inte r f a c e Br i dge Irev 021

"

(. .. I

Similar magislralei USB. se pot determina si directoarele din /s y s asociate dispozitivelor PCI. Comanda urmAtoare pre zintA modul i n care se pot alia modulele utilizate de dispozilivele PCI. lolosind aceea~i procedurA ca in cazul dispozitivelor USB (dalele si orele l isierelor au lost eliminate din ie$irea comenzii) .

ubu n tu@ub u nt u,-$ l ,,,,xn,x,wx roo t r oot l r wxrw x n<x roo t root rOOt root l r " x r wxrwx lr w~ rw~r .. ~ roo t root

, ,

" -"

I $ y s /bu s /pc i / dri versl , gre p modu le module - > . 1 .. 1 . . /mod ul e/sn d !nte l S. O module .. 1 . . /rnodu l el i nteLa g p . 1 .1. module - > , . 1 . . / . . 1 . . /rnodu 1 e/a t a...generi c . 1 . . /rnod ul e / au_ p ii x module - > . 1 .

(. .. I

" " " "

-,

198
Sistemul ACPI

lNTRODUCERE iN SISTEME DE OPEAARE

Sistemale moderne au imp lementat sistemul ACPI' (Advanced Configuration and Power

In/erface) pentru configurarea unor dispozitive ~i managementul consumului de curen!. Fisierele virtuale ale acestui sislem se afl<'i in Ip~oc! <lepi. Sprs exemplu, sistemul ACPI oleri'!, printre allele, informalii despre:

procesoarele din sistem - /proc/ a e pi /processor


venlilatoarele din sistem - Ipwcl acpi / fan
bateri ile d in sistem - Iproc/ aepi /bat tery

sanzo rii de tempe ratu rA- /proc/ "cpi Itherll\31 _ zo ne

hwinfo

hwin to esla 0 aplica!ie pentru daleetia hardware-u tui. Comanda hv in!o afiseaza in mod implicit toate informa\iile des pre dispozitivele delectate la un nivel foarte detaliat. Pentru 0 listare mai succinta sa foloseste urmatoarea comanda:

,
2

ubuntu@ubuntu:-$ hwinto -- sh ort cpu : IntellR) Pentium(R) Dua l

CPU

T2390

@ 1.66GII2 ,

.00
,

MH< 1600 MHz keyboard : (dev ( input ( e v e nt 4


mou s ~ :

IntellR ) pentium(R)

Du~l

CPU

T2390

@ 1 . S6GHz ,


10

AT

Tran ~l ated

Se t

2 ke yboard

" "
13

I.

(dev(input(rn i c@ (dev(input/ rni ce pcin t H : /dev/u.b/ l pO g uphics car d: Controller

M~cin t o ~ h

SynPS/2

Syn~ptic.

mou.e button @mulation TouchPad

Samsung ML- 164Q S@r i @. Intel Mob ile GM96S/GL960 Integrated Graphics Intel 965 GM

" '" " '"


2<J

sound :

"

Intel 82801H
stor~qe :

IIC H8 f a mily)

HD lIud.o Controller

" ,

Intel 82801HBM/HEM (ICH8M/ICH8M- E) SATA IDE Controller Intel 82801HBM/HEM (IC H8M/ICHaM-E)
n~t",o rl::

22

IDE Cont roll e r

,. ., .. .,
~

"l~nO

..

"

ethO controller net",o r l: intert~ce panO ><lanO


"",~ste~O

Intel PRO/~i r e l e 394SABG Network Connec ti o n Realte k RTL6 10 1E PCI EKpr~$$ Fast Ethernet
:

Ethern e t network inter face WLAN net><or' interface


Net~or' Inte~tace
ne t ~or k interfac~

" "

ethO
' ACP I - h1tp ;ltww..,acpU nloi

Ethernet

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

199

>0
'" '" ais k: /aev/saa

L oopb~C k

network i nterface

woe 0I02500!ltVS - 2

36

(. .. I

Penlru a obline detalii des pre 0 anumitl!. componant1'l, sa folosa~te numele compone ntei ca argument al comenzii. De exemplu, pentru procesor se folose~te urmatoarea comanda:
,
~

"
G

, 8

ubuntu@ ubuntu : -$ h"info -- cpu 01 : None 00.0 : 10103 CPU [Cr~at ~ d at cpu . 304) Un i 'lu~ I D: rdCR . j8NaKX DZt Z6 HHdwa r e Cl ass : cpu Arch: Inte l Venaor: " Genulnelntel" Moae l: 6. 1 5.13 "Intel[R] PentiumlR] Dua l Feature.:

CPU

T2390

@ I . S6GHz "

,0 fpu, vme, ae, p.e, tsc, ..sr , pae , mee , ex 8, ap! c , .ep, mtrr , pge , .. ea , emov, pn , p.e ~ 6,
elf 1 u sh, dt", acp i , <M'lx , fxH , sse , sse2, "S, ht, tm , pbe, nx , I .. , cOMtant_ t "c, ~ rclL.p ~ d mon, p eb" bt s , pn 1 , dtes 6 4 , monitor, d,_cp I , es t , t ... 2 , 5 s s~3, cx 1 6, xtpr,

pdcm,lahf_lm
" " " .. " Cloc k: 1866 MH~ BoqOMlPS : 3724 . 63 Cache : 1 024 kh Unit./ Pr oc""or : 2 Conf i q St atu , : cf9 - ne" .

~v~11 - ye5 .

n eed - no .

active - unkno"n

7.4.3
Senzori

Monitorizarea starii dispozitivelor hardware

o alta sursa de informalii des pre hardwareul prezent intrun sistem 0 reprezinta sen2orii. Acesti senzori pot oferi informalii des pre viteza venti latoarefor, voftaj e si temperatura, liind folosite penlru a monitoriza starea sistemului. Pachetul lm- sensot's include programul sensors ca re ali~eaza. informatii citile de la
ace~lia.

Dup1\ inslalarea pachelului treooie f1.Jlala comanda sen sor s- detect care va delecta senzorii prezen!i in sistem ~i va indica ce module trebuie incl!.rcate. Dupa ce configurarea se real izeaza cu succes, poale Ii utilizala comanda sensors.

, ,
, '" " "
,

ubuntu@uhuntu:-$ sen$or$
smsc47ml~2 - i2c - 0 - 2a

Adapter: SMEus I a 0 1 +2 . 5V : +2.60 VCore : +1 . 4 2 +3 . 3V : + ~. t3 +5V : +5 . 16

" " "

{. .. 1
~ m5c47 ml - i . a-0800 Ad~pu r:

"

aaapter {... in ( ... in {... i n {... in

1400 " +0 . 00 ", +0 . 00 +0 . 00 +0 . 00

"" ", ", "" ", ""

~ .

fanl : hn2 :

'"

adapt.or {.. ,n 2192 {.. in 2 11 8

"" ""

"'" "'"

RPM . d i v RPM . d i v

. , -,

+3 . 32 +2 . 99 +4 . 3a +6 . 64

", ", ", ",

200
Pachetul de utilitare sma rtm ontoo ls

INTRODU CERE iN SISTEME DE OPEAARE

Pachetul smartmo n too l s pune la dispozi!ie programe pentru monitorizarea hard-disk-uril or utiliz1\nd \ehno logia S.M.A,R.T. (Self- Monitoring , Analysis and Reporting Technology). In unele sistema, !rebuie activa! supo rtul S.MART in BIOS (unele BIOS-uri au aceasta configurare in setul de optiuni 8vansate). Tehnolog ia permite monilorizarea indicatorilor de stare a hard -disk-uritor in

$cOpul anticiparii posibileior cader i.

in pachel se gas esc doua programe:


smar tot l- pentru analiza stari; S.M.A.R.T.la un moment dal ;

ama rtd - un daemon pe ntrtl monitorizarea permanenta .


Pentru a ver ifica slarea la un moment dal pentru primul harddisk, sa poate uti liza comanda:
2 ,
root@~b~nt~ : " smar t ctl -- a ll /dev/sda smartetl version 5 . 37 [ i 686 - pe - iln~, - gnu ] Copyright (C) Allen Hom~ page is http : // ~ martmon to o15 . 50u r cefor\l'' . net/

2002 - 6 Bruee

Mod~l

"

" " "


,.
"

,0

--- START OF I NFORHIITION SECTION - -Family: Sea9 a t e Barracuda 7200.7 and 7200 . ; D@vice Mode l: ST3120S27AS 4MS03F43 Seri ~ l Number: Firmware Version : 3 . 42 lJser Ca p a city : l20 . 033 . 04 1 . 920 bytes
[.

Plu ~

family

.. ]

" " " "


"

, " "

SMi\R! i\ttributes D a ta Structure revision number: lO Vendor Sp ~ eifie SMART At t rIbutes with Thr ~ "hold" : cue VALUE WORST THRESH lYPE lOf AT!RIBUTEJlAME WHEN FAILED RAW_VALUE 0., Pr~ - hil Raw~ ~a d-Error-Rat e OxOOOf 000 0"

UPDATED Alwa y' Al ways Al way"

,. , '"

Spin_ Up_ Time 0 Start_ Stop_ Count

"

OxOO03 Ox0032

"" ""
' 00 ' 00

000 "'0

Pr~ - hil

Old.-age

SMART are ~ i suport pentrtl executia de teste asupra discului. Exista teste lungi ~i teste scurte. Executia unui test poate Ii urmAritA in timp real dar poate Ii si programatA. Rezultatele testului se pot ali a in iesi rea comenzii s martct 1 -all / de v /s d a. Un test scurt poate Ii programat utilizdnd comanda:
root @ ubuntu , -I ,martctl -- t M t - ,hort Alhn Home page
Id ~ v/;da

> , mar t etl ve rsi on 5 . 37 ( ,686 - pc - lin u x - gnu] CoPyri9ht (C) 2002 - 6 Bruce
"
10

http : //smartmontools . sourceforge . netl

,
" ,

___ S!AR! OF OFFLINE IMMEDIATE AND SELF-TEST SECTION __ _ Sending co mmand : "EKecute SMART Short self - ten routine irnmedi ~ te l y ln off - line mode". Dci ve cornma nd " t~ecute SflART Short self - test routine l mmedhtely in off - liM mode" .uecessfu l .

CAPITOlUl 7. ANALIZA HARDWARE A SISTEMUlUI


10 " ,. Testinq ha. bequn, Pleue wait 1 ml nute$ tor test to comp l ete. Test will comple te alter T~u Sep 13 10:34:152007 Use smartct l - x to abort test .

201

" ,.

Se poate obse rva ta 0 noua rulare a comenz ii sma.rtctl - ... 11 /dav/sda. ca apar la iesire si rezultatele testului (daca sa terminat), pre<:um in exemplul de mai jos.
;:
, root@ubuntu : -I smartet l --~ll Id~v/sd~ sMartetl v e r.ion 5 . 3"1 (i6H - pe- lin u x - gnul Copyright lei 2002 - 6 Bruee Home
p~q"

" ,
6

1 . http : //$martmontools . sou r c.,{orq .. . n .. t/

ST ... RT OF IN FORMATIO N SECTION __ _


( ...

1
ST ... RT OF RE ... n SM.z. RT D... r ... SECTION

'0

SMART ( ... 1

o"erall - healt~

self - assessment test result : PASSEO

Pe I~nga testul scurt mai exista si alte teste (spre exemplu un test lung si un test otlline). Mai multe exemple de fofosire a lui smartc:tl se pot ana din man smartetl si din smilrtc:tl -h . Daemonul smartd monitorizeaza hard-diskurile si permite lnregistrarea starii acestora si a defectelor aparute prin intermediul syslog. in mod impli cit verifica discurile la fiecare 30 minute. Daemonuf se poate configura prin intermediul fisierulu i / etc/ smartd . con f. Pentru lucrul cu daemoni se poate cons ulta capitolul 5.

7.5

Interfa~a

cu dispozitivele din userspace - udev

~i

/ dev
in linux exista cate un fisier pentru fiecare dispozitiv in directorul /de v . Fisierele din / dev sunt create de manageruf de dispozitive numit udev. Acesta este executat in intreg ime ca daemon in spatiul utilizalor (userspace) si astlel poale executa programe arbitrare fa aparilia sau la disparilia dispozitivefor din sistem. udev oferll supor! pentru nume persistente pentru dispozitive , ceea ce inseamnll ca poate fi configu rat sll foloseasca intotdeauna acelasi nume pentru fis ierul asociat unui anumit dispozitiv (in implementarile mai vechi pentru /dev , la reintroducerea in sistem a unor dispozitive, acestea puteau primi nume diferite comparaUv cu introducerea anlerioara). ud"v primeste notificari de la kerne l atunei c~nd apar sau dispar dispozilive. Astlel, spre exemplu. la conectarea unui USB stick in calculator, kernelul notilica ud"v ca a aparut un nou dispozitiv de stocare. in funqie de schema de nume utilizata, ud"y poate, spre exemplu, sa aleaga drept nume de dispozitiv urmatorul nume disponibil dupa numele harddisk ul prezent in sistem (presupunfmd ca dispozitivul asociat harddiskului este / dey / sda, udev alege ea nume / dey / sdb ). Dupll ce este ales un nume de dispozitiv, se poate executa un program care , in cazul prezentat aici. sa monteze sistemul de fisiere de pe USB stick intrun subdirector din Imedia. Tot in functie de configurari. anumite dispozitive pot sa aiba fisierele asociate puse intrun subd irector separat din /dev .

202
TabeluI7.2:

lNTRODU CERE iN SISTEME DE OPEAARE .I de nume

"

Linux

Pe I{lnga execu\ia de programe, udev mai permite modifk:area permisiunilor penlru

lisiere!e din (dev create. Astlel sa poate configura, spre exemplu, ca pentru oriee scanner intradus in sistem, lisierul creat sa apartin1!. grupului cu numele scanner. in acest lei, numai utilizalorii care lac parla din acesl grup vcr pulea lucre cu acest lisier si implicit cu scanner-uJ, Trebuie aminti! faplu! col un utilizator poate sa fie membru al mai multor grupuri.
Configurarile pentru udev sa gasesc in I etc/udev / rules . d. Aces! director conIine lisiere care descriu modul in care, in lunelie de dispozitiv, se formeaza numele dispoziti velor, sa dau permisiul"li lisierelor sau se executa programe. De obicei aces! director conIine co nfigurari apficabife in orice situa!ie si nu se recomand a editarea fi~iereior din el.

7.6

Lucrul cu dispozitive (ldev)

Sa men!ionat anterior ca udev se oc upa ~ i de stabilirea permisiuniior pentru anumite dispozitive. Un utilizator trebuie sa se gaseasca in grupul din care face fisierul di5pozitivului pentru a putea utitiza dispozitivul (prin intermediul fi~ierului. binein!ele5). Tabelu l 7.2 prezinta cateva nume asociate in mod normal cu di5pozitivele intr-un mediu Linux. Trebuie mentionat ca de obicei numele sunt urmate de un numar sau 0 litera, care indica al catelea di5poziti v de acel tip esle in sislem. Spre exemplu. doua unitati de discheta vor Ii numite / dey I fd O 5i /dev I fdl, iar doua hard-disk-uri vor Ii numite Idev/sda ~i Idev/sdb. Comanda urmatoare prezinta continutu l tipic pentru Idev :

, , , , ,. "

ubuntu@ubuntu ; -~ tot .. l 0 r oot lc"xr"Hwx lc",xr",xrwx rOOt lc",xrwxrwx r oot dr"H-H-X ; root d<",xr - xr - x root lrwxrwxrwx root root lr"H"Hwx

, , ,

" -,

/dev/

,. ,

" "

dr ... xr- xr-x l<w~rw"r ... x l,,,xrwxrwx

, , ,

, , ,

root root coot U root 0 root 0 root n root n

" "

2007-08-31 2007 - 08 - 31 2007 - 08 - 31 2007-08-3 ] 2007 - 0S - 3 ] 2007 - 0S - 31 2007 - 0S - 3 ]

14 , 48 adsp 14 , 48 .. qpqact 14 , 48 aud i o 14 : 48


14 : 4S

-, ~ ound/ad ~ p -, 'II1 ~ C / .. qpq.. rt -, ~ ound/~udio

14 :4S cdrom / dev / cd/ cdrom - s rO 14, 48 cdromO - > / dev / cd/ cdrom - . r 0

'" "

-, -,

root root root root root ~oot

0 ZOO7 - 0S - 31 14: 48 l oop 2007 - 0S - 31 J 4 : 48 100pO 2007-08-31 14 : 48 loopl

-,

loop/O loop/I

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

203

" " " " " u


" " "

C""- r ----l" "H "HWX Ct"- tW- rw-

, r oot , root

kmem root U root root root


dls~ dis~ di ~ ~ di ~ ~

(. . . I
cr,,- "w- rwbrw- r w---br .. -rw ---brw- r w---b rw- r w----

, , ,

, root , root
root r OOt r oot

"

(. .. I

, ". , , " , , "

,. , 2007 - 0 8- 3 1

14 , 4 8 2007 - 0S - 3 1 14:48 miKer - > s ound/mi x er 2007 - 0 8- 31 U ; 48 null 2007 - 0 8- 3 1 2007 - 0 8 - 31 2007- 0 8 - 31 2007 - 0 8- 31 2007 - 0 8- 3 1
U : 48 rand om U ; 48

14 : 48 sd a1 14 : 48 ~ da2 14 : 48

".

,,"

7.6.1 Tipuri de dispozitive


In Unux, dispoziti~ele se impart in 2 categorii. liecare categorie avand particularita!ile ei: dispozitive caracter dispozitive
~oc

Dispozitivele pot Ii dileren!iate dupa litera care apare pe prima colo ana in ieSirea comen2ii 15 - 1. coloana care indicA tipul lisierului. In lista de mai sus lisierele care au tipul c indicA dispozitive de tip caracler iar lisierele cu tipul b indicA dispozitive de tip

"oc.

Cateva dispoz i ti ~e sunt generate de kerne l si au un comportament aparte. dispozitive sunt numite pseudo-dispozitive.

Aceste

Di spozilive le cara cter Dispoziti ve le ca racter corespund dispozitivelor care transmit date cflle un caraCler odata. Aceste dispozitive sunl de obicei lolosite pentru a trans mite Iluxuri de date. precum: term inalul - I dev I t t yO , I de v It t yl porturile seriale - Idev IttySO , I dev It tySl dispozitivele audio - I de v I se quence r , Ide v I mixe r, I dev Imidi

Di spozitivele bloc Dispozitivele bloc co respund dispozitivelor care lucreaza cu dalele la nive l de {scri u. cilesc , slerg blocuri de date}. DiSpozitivele care lunctioneazA in acesl lei sunl dispozitivele de stocare: l izice (hard diskuri, unitAli COROMlDVDROM etc.) - I dev I sda , I dev I sdal, Idev/hda virtuale (dispozitivele loop) - I de v I loopO
~oc

'"
Pseudo-<ti spo./!i\lve

lNTRODU CERE iN SISTEME DE OPEAARE

asociat& zonelor de memorie - Idev I ramO

Exista 0 serie de dispozitive prezente in I dey care nu corespund unor componente hardware. Acestea sun! echivalente unor dispozitive virtuale care implementeaza
comportamentUI dispozitivelor narmate de tip caracter.

Cele mai cunO$Cute sunt:


/ dev /n ul l - lisier in care se poate serie ariee 5i totul esle pierdut - de obicei iesirile standard sau de eroare ale programeior sunt redirectate caire /dev /nul1 pentru a suprima afisarea oricarui mesaj;
/devhero - 'isier din care se poate citi la inlinit octetul eu valoarea 0 - de

abicei esle folosi! pen!ru a suprascrie zone de memorie/disc cu zerouri sau peolru
a umple 'isiere;

I dev /urandom - li~ier din care se POI citi la inlinit octeti cu valori aleatoareutil i ~al de obicei penlru a scrie hsiere sau wne de pe disc cu dale alealoare. CAteva exemple de utilizare sunl prezentate mai jos. Suprimarea ie~ir i i standard penlru un program:
ubuntu@ubuntu ; -S , /progum > Idev/n ull

Suprimarea ie~irii de eroare penlru un program (mesajele de eroare se pierd):


ubuntu @ ubuntu:-$
. /progr~m

2>/dev/null

Suprimarea ambelor iesiri (standard si eroare) pentru un program:


ubuntu@ubuntu : -S . /program
2>~1 ~/dev!nu ll

Suprascrierea primei partilii de pe primul hard-disk cu zerouri:


<oot@ ubuntu:-J dd If - Ideulzero ot -/ devlad3 1

Suprascrierea primului hard-disk cu date aleatoare:


root@ubuntu :-J dd
if - /dev/ur~ndom of - /d e v/,d~

7.6.2 intreruperi hardware


o intrerupere (IRQ - inlerrupr requesr) eSle un semnal trimis de un dispozitiv catre procesor pentru a-I anunta ca treooie sa.-si opreasca activitatea pentru a procesa un eveniment e~tern. cum ar Ii apasarea unei taste. Pe platforma x6S sunt IS IRQuri numerotate de la 0 la 15. Pe calculatoarele mooerne pot e~ista mai mult de 16 intreruperi. Unele intreruperi sunt rezervate pentru dispozijive specilice, cum ar Ii tastatura, iar allele pot Ii reas ignate. in tabelul7.3 se alia intreruperile ~i semnilica)ia lor pentru platforma xes:

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

205

TabeluI7.3: Semnificatia i

In cadrul sistemului de ope rare Unu x. semnificalia intreruperilor poate Ii vizualizaUi folos ind urmatoarea comandti :

, , , ,
" " " " " " "

ubu n t u @ ubun tu : -$

0",

/pcoc I

int~

r r u pt"
t im ~r

12 : 14 : 15 : 16: 17 : mil :
LOC: ERR :

",

cpuo

, ", ",,

DO

,
,
0

0 1485 0 13885 4426 43084 0 2549S7 0

IO - APIC - eage IO-APIC - @dg@ IO - APIC - eage IO - APIC - e ag e IO - APIC - edge IO-IIP I C- f asteo j IO-IIPIC-edge IO - IIPIC - edge IO-IIPIC-edge IO-APIC-hsteoi
IO - APIC - h st~ oi

i 8042 floppy parportO

no
acpi i8042 I1bsta libata ethl i ocO

"

MIS :

In comanda anterioarti. pentru liecare lntrerupere esle ali~at driverul care 0 lolose~te_

"

7.6.3

Adrese 1 1 0

Ad resele 110, numile ~i porluri ItO, sunt localii unice in memorie rezervale penlru comunicarea lntre procesor si diversele dispozitive fizice . in tabelul 7.4 se poate observa corespondenta lntre denumirea dispozitivului pe linux ~i pe Windows ~i adresa ItO asociatti: In Unux se pot verifica adrese le 110 lolosind urmtitoarea comanda:

206

lNTRODU CERE iN SISTEME DE OPEAARE

TabeluI 7.4: Adresele VO ale

'i I

, , , "
"

ubuntu@ubuntu ; -$

OOOO - OOlf 0020 - 0021 0040 - 0043 0050-0053 0060 - 00H 0070 - 0077

,~,

""

Iprocl l oports

picl

t i rnerO
t i rn" r l

ke yboard

n,
dma pag" p i c2
,~,

OOBO - OOBf OO ~ O - OO .. l OOcO - OOdt


OOfO - OOff

<e,

".

7.6.4

Adrese OMA

OMA (Direct Memory Access) se relera la adresarea directa a memoriei si este 0 alternativa la adresele 110. DMA lace posibil translerul daletor intre dispozrtive ~i memorie lara ajutorul procesorului. Aces! 1i.!Cru duce la imbunatatirea pertormantelor sistemului deoarece procesorul nu mai eSla ocupat cu operatii 1 /0.

Arhitectura x86 implementeaza acesl concept folosind canale DMA, colle unul penlru fiecare dispozitiv. Urmlitoarea comanda va alisa ce canale DMA sunl folosite de sislem:
ubuntu @ ubuntu : -$
, 3 2 , floppy 4 : cascade
c~t Iproc/dm~

7.6.5

Manipularea datelor la nivel SC8zut (comanda dd)

Pentru a lucra cu dalele la nivel de oclet sislemele de operare de lip Uni x pun la dispozilie comanda dd. Aceaslii comandii poate Ii ulilizatii pentru a manevra dale de orice dimensiune. Se bazeazii pe faplul cli dalele sunl Iranslerate de la 0 sursli la 0 deslina!ie, eventual cu simple Irans formiiri. Comanda prime\lle sursa si destina!ia sub forma a doi paramelri: sursa: if - <fi~ier _ i nt rare> (dacii lipsesle acesl paramelru se presupune ca Sursa eSle inlrarea standard) destlnalia: of - <fi~ier _ ie~ire> (dad!. lipsesle acest parametru se presupune cli deslina!ia este ie\lirea standard)

CAPITOlUl 7. ANALIZA HARDWARE A SISTEMUlUI

207

Fisierele pot Ii atflt fisiere normale cflt si lisiere care reprezintii dispozitive bloc sau dispozitive caracter. Astlel , 0 utilizare loarte simplii a comenz ii dd este urm(itoarea:
ubufttu@ubu~ t u : -$

dd If-JdevJ t ero of - " myflle"

ComarKIa de mai sus cop iazii de la intrare la iesire octeti pfln(i cflnd apare 0 eroare. din moment ce nu a fost specilicat(i nicio limitii. in aceste conditii. comanda se term inii doar dacii lisierul surs(i e limitat sau fisierul destinalie e limitat. i~ cazul de mai sus, sursa are dimensiune infinilA iar destinatia e limitat<'i doar de dimensiunea spatiului liber disponibil pe partitia unde se scrie fisieruL Pentru a specifica dimensiunea care se doreste a I i copiat<'i se utilizea zA 0 combinatie a urmatorilor parametri: numarul de blocuri: coun ta <numllr_ bl ocuri> - dacii acest parametru lipsesle copierea se opreSle doar In corKIiliile prezentate mai sus dlmenslunea unui bl oc: bs - <dimensi une_ in_oc t eti> (blod<. size) - pot Ii fo lositi si multiplii. spre exemplu: bs - 1048576, bs - 10 2 4K, bs - 1M sunt loate echivalente; dacii lipseste acest paramelru se u1ilizeaza dimensiunea implici1ii a unui bloc de 512 octe!i (dimensiunile blocurilor ci1ite si dimensiunile blocurilor scrise pot Ii ajustate irKIividual prin utilizarea parame1rilor jbs si obs; ele sunt modificate simultan prin utilizarea parametrului bs) Exemplele urmiitoare ilustreazA utilizarea comenz ii dd impreunA cu parame1rii preciza!i anterior: copierea de 10MB de dale din 10 bloeuri de 1 MB (1 024K); copierea se face din / dev /ze ro catre / dev /null deci nu are niciun elect: ubuntu@ubuntu : -$ dd if_l dev/zer o of _ldev/null bs _l024K count _l 0 10_0 r"cord$ in J 10_0 r"cord$ out 10485160 byte$ (10 MB) copied , 0.00490124 seconds , 2. 1 GB/s acelasi elect ca mai sus doar ca se precizeaza M In loe de K: ubuntu@ubuntu : -S dd i f - /dev/.ero of- /dev/null bs-IM count- l0 10.0 record s In J 10.0 r e cord ~ out 10485760 byte ~ 110 MB) cop i @d, 0.00509437 ~ econds, 2. 1 GB! .
2

copierea de 10MB de date in blocuri de 1M la intrare si 12SK la

ie~ i re:

ubuntu@ubuntu : -$ dd if_!dev/."ro of_/d"v/null count - l0 ib. _1M ob$ _1281( , 10 +0 recorda 10 J 80 +0 recorda out 10485760 byt'"' s 110 MB) copied , 0.00622419 seconds , 1.7 GB/' Comanda dd permite Si pozitionarea in li$ierele utilizate pentru intrare si iesire: intrare: s k ip- <Il u m~r_bloc ur i> - sare < n u m~r_blocuri> din lisierul de intrare, echivalentul a <num~r_blocur i > ibs oeteti; iesire:
ie~ i re.

- sare <n u m~r_bloc u ri> din echiva lentul a <num:!rJ)l ocu r i> obs octe1i.

see k - <Ilum~r_b loc u ri>

f~ieru l

de

208

lNTRODU CERE iN SISTEME DE OPEAARE

TabeluI7.5: Informatii expuse prin intermediullui fproc Fi!iier Con!lnut /proc/cmdline Linia care esle folosrtA la inilializarea kernelului,
inclusiv parame\rii
trimi~i

acestu ia

/proc/cpuinfo
/proc/devices Iproc/interrupts

Informatii despre procesorulfprocesoarele din sistem Lisla dispozitiV1'llor caracter 5i a ce ler bloc Statistici des pre numArul inlreruperi ,i
dispozi\ive le asociate in\reruperilor Informatii despre utilizarea memoriei
-

"

/proc/meminfo /proc/modules

UsIa modulelor inca reate la un moment da! in sistem comanda lamod prezinla conlinutul fisierulu i
lista partilillor

intr-UI1 mod user-friendly

/proc/partitions /proc/swaps /proc/uptime

/proc/version

lista diSpozitivelor pe cafe 59 face swap Timpul trecut de la u~ima pornire a sistemu lui, T n secunde - comanda u pt ime prazinl1l conlinUlu l fisieru lui [nlr-un mod user-friendly Versiunea kernel-ului care ruleazl'i la un moment dal

Pozitionarea aste utill'i in eawlTn care se doresle ca de pa dispoziUvul da intrare s1l se cileasca 0 anumitl'i zo na, precum un anumil seclor de pe hard disk. Exemplul urmator ilustreazl'i acest lucru -se sare peste prim ul sector si se citese doul'i seetoare de pe hard disk (trebuia mantional eA dimensiunaa unui sector pe HOD aste 512 ocleti, valoaraa implicita pentru parametrul bs ):
, root@ubuntu:-I dd if - /devfsda of - /dev/nu ll .Up _ l count - 2 2+0 records in 2+0 record. out 1024 bytes ( 1 ,0 kB) copied , 0 . 04373 1 seconds , 23 . 4 kBfs

7.7
7.7.1

Analiza sistemului
Informalii despre sislem

Prin intermediul directorului /proc , kernel-ul expune si 0 ser ie de informatii legate de sislem. Tabelul 7.5 urmAtor prezintA fi$ierele mai importante din /proc $i conlinutul acestora. Continutul pentru oricare din fisiere le prezentate mai sus se poate alia folosind comanda cat. De exemplu, folos ind eomanda cat eu argumenlul / p l."oc/ cpu in fo sa vor afi$a urmatoarele informa!ii:

, , , , ,

ubuntu@ul>untu processor
v ~ ndo r _ id

model model Mme stepping

""

fornily

-, ""' , " ,

Iproc/cpuinfo

G@nuin@int@l

Intel (R) Core{1M)2

' 0'

'"

T7500

2 . 20 GH'

CAPITOlUl 7. ANALIZA HARDWARE A SISTEMUlUI

209

" "

cpu MHz e~che size tdlv_ bug

2194 . 893 4096

(. .. I

"'

..

Folosind comanda anlerioara sau oblinul urmaloarele inlorma!ii: processo r reprezinta identilicatorul procesorului prezentat (pe sistemele cu un singur procesor, va aparea doar procesorul cu idenlilicatorul 0), cpu fami ly reprezinta un numar care se va apenda la numiirul 86 pentru a obtine numele fami liei de procesoare (in exemplul de laIA 686), mode l name reprezinta denumirea procesorului, cpu MHz reprezinta Irecventa procesorului iar cac h e si ze este dimensiunea memoriei cache L2. Penlru a ob!ine inform alii des pre memoria ulilizata de sistem, se va lisierului /proc/me min fo:
ali~a

con!inulul

" "

, , ,

ubunt u @ ubun tu MemTot " l: MemF ue : Buffe r . '


C~ched,

-.

co< Iproe/meminfo
2~5676

S"'apC"ched: I\ct j ve : I n acUve :


S~"p1"tal :

S"apFree :

9684 10668 84448 3004 179812 43268 401400 360148

(. .. 1

" " " " "

" " " "

Folosind comanda anterioarA sau al~at urmatoarele informatii: MemIota l este canl itatea tolalA de RAM. MemFree este cantitatea de RAM care nu este ulilizata de sistem , Buffers este cantilalea de RAM 101 0sila de buffere, Cache d eSle cantitatea de RAM tofosita ca memorie cache. SwapCached este cantitatea de memorie swap folos ila ca memorie cache, Act i ve este cantitatea de buffere sau memorie cache care eSle in curs de utilizare, I n ac t i ve este cantitatea de buffere sau memorie cache care este libera. SwapIo t al esle canlitatea lotala de swap disponibila ~i SwapFree este cantitatea de swap liberA. Folosind urmatoarea comarlda se vor alisa: versiunea kerne lului Li nux, a compi latorului qcc ~ a distribu!iei de Unux lolosite:
ubuntu@ubu n tu :-$ cal Iproc/verslon

> Linux vers i o n 2.6 . 24 - 24 - generiC Ibui l da @ rot h era l {gee version 4. 2.4 (
, Ubu n tu 4 . 2 . 4- 1ubuntu311 H $MP Tue I\ug 18 17:04 ; 53 UTC 2009

Oricare dintre aceste li~iere poate Ii folosit pentru a gasi, la un moment dat, 0 informalie despre sistem. Spre exemplu, dacA se doreste aflarea tipu lui procesoruluilprocesoareior din sislem se poale utiliza comanda urmatoare:
, ubuntu@ubuntu ; -S cat Iproc/cpulnto I grep "moael name" model na me T1500 : InteilRI CorelTMIZ Duo CPU
@ 2 . Z0 GHz

Este important de retinut CA /proc expune informatii . ca re sunt accesibile si . pfln intermediul unor comenzi. Aceste informa!ii, lie ca sunt citite direct din /proc , lie ca sunl citite prin intermediul comenzilor, pol Ii filtrate pentru a se extrage date utile pentru utilizator.

210

INTRODU CERE iN SISTEME DE OPERARE

7.7.2

Kernel " tunables "

sysctl este 0 interfa!A care permite conligurarea unor parametri din kernel in timpul execu!iei acestuia_ Parametrii pot Ii modilica!i in douA feluri: prin modificarea directA a fisiere lor din / p roc/ sys; prin utilizarea comenzii sysctl _ Primul caz presupune scrierea ~i citirea parametrilordin anumite cA i, precum in exemplul urmAtor:
root@ubuntu : -' cat
Iproc/~ys/n~ t /ipv4/ip_ forward

, , ,

0
root@ubuntu : -' echo " \ " > Ip<oclsys/net/lpv4lip_ ,orward

root@ubuntu : -' cat /proc/sys/net/ i pv4/lp_ forw a r<l

Comenz ile de mai sus au activat rutarea pachetelor de re!ea la nive lul kernel-ulu i, scriind "I " in /proc/sys/ne t /ipv4/ip_ forward. AceastA faci litate este utila dacA se dore~te ca un sistem care are acces la Internet sa permita accesul unei intregi subre!ele. Folosind comanda sysctl, acelasi lucru se ob!ine in felul urmator:
>
,
n~t .

root @ ubuntu : -I "y , ctl ne t . lpv4 . ip_for .... rd ipv4 . i p_ fo<W 4 rd - 0 root @ ubuntu : -I 'y,ctl - w net . lpv4 . ip_ fon"'rd - " 1 ipv4 . i p_ fo r w4 rd _ I

n~ t.

59 observa ca pentru a afisa starea unui paramelru se fo loseste 0 adresare asemanatoare cu cea a Slructurilor din C/CH. Comanda a doua modifica un parametru prin utilizarea op!iunii -- w (write). ModificArile prezentale anlerior sunl modificari lemperare. ele fiind pierdule in cazul in care se repornesle sistemuL Penlru a efeclua configurari permanenle, acestea se scr iu in fis ierul le t c/sysctl . co n f . Presupunand cil se dore~te dezaclivarea forwardingulu i, sintaxa in lisier este destul de simpla (Iiniile care incep cu t din liSier sunl comentarii):
ubun t u @ ubu ntu : -$ edt
letcl ~ y ~ c t l . conf

,
,

( J
f Controls I P p .. cke t
n~ t.

forw&rdinq ipv4 . i p_ fo r w4 rd - 1

( J Fisierul de contigurare este citil la llecare pornire a sislemului. Pentru a for1a citirea fisierului de conl igurare, se peate utiliza comanda sysctl -p:
root @ ubunt u: -I "y"ctl - p net . 1pv4 . ip_ forward - I

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

211

7.8 Studii de caz


7.8.1 Salvarea
~i

restaurarea MBR

~i

a tabelei extinse de partitii

MBRul (Mas ter Boot Record) retine iniormalii des pre partiliile prim are allate pe un harddisk precum alribule ale aceslora, pozi!ia lor pe disc si dimensiunea lor. MBRul mai contine si bootloaderul - un mic program care porneste un sistem de operare prezent pe computer. intr un mediu mixt Windows/Linux, la 0 instalare a Windowsului se va observa c4 Linu xul devine inaccesibil (bootloaderul Windowsului nu cunoa~te nimic despre Linux), in aceste conditii, pentru a preintampina acest lucru, se recomanda rea lizarea unui backup pentru MBR. Mai mulle detalii despre MBR gasi!i in sectiunea 6.2.2. Backupul MBRului de pe primul HOD se realizeaza cu urmatoarea comandll.:
, root @ ubuntu : -I dd i f - /dev/sd~ of _mbr .i mg b. - 5 12 count - I 1+0 records in 1+0 record. out 5 12 bytes (512 III cop i ed , 4 . S004e-05 seconds , 10 . 7 MB/.

in urma execuliei comenzii se realizeaza fisierul mb::. i mg de 512 ocleli cu MBRul. Acest l isier poate Ii plasal inlrun loe sigur si accesibil in cazul in care discul devine inaccesibil (pe un USB stick sau COROM spre exemplu). Penlru a reSlaura MBRul, se efectueaza operatia inversll.:
, root@ubuntu : -I dd if_ mbr . lmg ot- /dev/nu ll b. - SI2 count - I 1>0 records in 1+0 record. ou t 5 12 bytes (512 III cop i ed , 4 . 622 e-05 seconds , II . l MB/S

in MBR se poate stabili ca una dintre partitii sa fie partitie extinsa. in partitia extinsa pot Ii creale mai multe parti!ii logice, pentru 0 mai buna organizare a discului. Informatiile despre parti!iile logice nu sunt tinute in MBR, deoarece nu incap in cei 512 octeti, Parli)iile logice sunt re)inule sub Iorma de lista inlantu ila in alara MBRului. in momenlul in care se lucrea za cu schema de parli!ii de pe un hard disk, se recomanda realizarea unui backup inainle, Modificarea schemei de partilii nu sterge datele de pe hard disk, doar sc himba descrierea partitiilor (Ioeu l unde se gasesc acestea). in situa)ia in care se slerge 0 partitie imporlanta (lie ea logica sau primara), este ulil sa existe un backup at aceslor informalii pentru recuperare. Modul de backup penlru MBR a lost descris anterior. Pentru a realiza backupul configura)iei tuturor partiliilor se utilizeazA programul sfdhk. Acesta analizeaza. atat partitiile primare Cal si pe eele logiee, dar nu se uitll. la inlormatiile din MBR care nu sunt legate de parti)ionare (p rec um bootloader), EI este un bun complement pe IAngll. metoda amintitA mai sus de a face backup la MBR. Comanda urmatoare lace backup pentru intreaga schema de parlitionare folosind s fdisk - f!sierul de backup este /usbscic k / p ar c i t ion s . backup :
root@ubuntu:-I
"CdlS~

- d /dev/sda >

lusbs t lc~/par tl t l on$ . bac'up

Pentru a restaura schema de partitionare satvata anterior, sldisk se ulilizeaza astlel:

212

lNTRODUCERE iN SISTEME DE OPEAARE

r o ot~ u bu n t u : "

.td(s ~

/devJsda <

! u sbstic ~ / p arUt1ons . b ac k up

7.8.2

Salva rea con1inutului unui disc cu sectoare inaccesibile

Exisla situa!ii cAnd, de obicei dupa 0 perioada rna i lunga de utilizare, un hard disk lncepe sA nu mai /unctioneze coreet. Sa observa acest lucru din erorile pe care sistemlJl de operare Ie af i ~eaza card vrea sa citeasc1i dale de pe disc. in asemel1ea situa~ i . cea mal rapidA metodA de backup eSla copier6a fi$iereior pe un all disc.
Acesta este caz ul lavorabil, c:l.nd dalele mal pot Ii idenlificate si sistemul de operare mal func!ioneaza, in cazul in care defectul hard disk-ului apare in zona in care este deseris sislemul de lisiere, exista 0 probabililate destul de mare ca dalele sa nu mai poata Ii salvate prin simpla copiere a lisierelor. in aceasta siluatie se poale opla penlru repararea sislemului de li~iere ulilizand aplicalia t"sck , dar nu se dore~le ca aceasla reparare sa aibA loc pe hard disk-ul detect. inlai se real izeaza 0 copie a tuturor datelor de pe primul hard disk pe un all hard disk, copie numila imagine. Comanda ulilizata penlru a real iza aceastoli imagine este del , impreunoli cu parametrul conv - noe rr or, paramelru care Ii spune dd-ului sa nu se opreasd. alul"ICi cand detecleaza un bloc inaecesibil.
root@ u b unt u : -' dd
1[ - idevisd~

o f - i d evi. d b conv- noerror

Executia acestei eome rlzi poale dura ioarte mull limp, dalorila numarului mare de blocuri care Irebuie cilite ~i scrise. Penlru a accelera execu~a comerlzii. se poale mari dimensiunea bloc ului cititlscris prin intermediul pa rametrului b s (block size), prezentat anterior. Ulilizarea unui bloc mai mare decal dimensiunea unui sector de hard disc (512 octeti) poate duce la pierderea ultimelor secloare de pe discul su rsa, cac i nu se poate realiza un bloc eu ele.

7.8.3

Crearea unei imagini de CD; montarea unei imagini

o imagine de CD se creeaza in mod asemanator crearii unei imagini de hard disk.


roo t @ u b untu , - f dd
i f - idevih d ~

o f - c ct . i .o

Aceasta comandl'i va citi CD-ul introdus in unitalea Idev /hda sector cu seclor si va serie imaginea lui in fisienJl cd , iso. Penlru a pulea utiliza imaginea, aceasla Irebuie montata intr'Url director precum orice all sistem de fi~iere , dar cu urmatoarele observalii : tipul sislemului de
1i~iere

de pe Uri CD eSle i 509 660 ;


~i

deoarece fisier ul nu este un dispozitiv real . trebuie utilizata


r oot @ u b untu : -f mount - t
1 ~ o 9660

opliunea loop.

- 0 l oop c d . i; o imn t i cd

Penlru a demonta imaginea. se utilizeaza coma nda:


roo t @ u b untu : - I umount iMn t l c d

CAPITOLUL 7. ANALIZA HARDWARE A SISTEMULUI

21 3

in acest lei pot Ii plistrate pe disc imagini ale CDmilor utilizate des si/sau pot Ii testate imagini de CD create de dilerite utilitare. Trebu ie menlionat ca se poate aplica aceea~ i procedura si pentru DVDuri, atil.ta timp cil.t sistemul de lisiere este corect precizat i n comanda mount (DVDuri le pot Ii serise in lormatul UDF).

7.8.4

Ulilizarea unui fi!~ ier de pe 0 pentru un LiveCD Linux

parti~ie

FAT32 ca

fi ~ ier

de swap

Se observli de multe ori ca UveCDurile lunclioneaza greu pe sisteme care nu au multa memorie RAM disponibila, intrun sistem instalat, memoria RAM poate Ii ajulata ~i de prezen!a spatiului de swap de pe hard disk. jntrun sistem i n care nu ex ista nieio parti!ie de swap, un LiveCO nu acliveaza niciun aslfel de spaliu. 0 posib ilitate a reprez inla utilizarea unui lisier de swap, pe 0 partitie deja existenta in sistem. Sa utilizal pentru exemplificare 0 parti!ie FAT32, dar se poate utiliza orice tip de parti!ie pe care linuxul poate scrie. Pentru inceput, se monleaza sistemul de lisiere (partilia a doua, primul hard disk) unde se doreste ere area fi~ i erului de swap:
roo t @ u b unt u: -' mount - t
vf~ t I d ev/" d ~2

I rnnt/temp

in acesl moment se poate erea un fis ier de swap de dimensiunea doritll utilizflnd programul dd:

roo t @ ubu nt u : -I dd if - Jdev/.eco of - / mn tJte mp !fi ~ i e c . 5w&p bs - 1M cou nt - 256 256 +0 c ~cocd" i n 256+0 r eco r d s out 26B435456 byt,,~ (268 MB I copi e d , 6 . 411 71 s"conds . 41 . 9 MB/s

5 -a ereat un fisier de 256 MB (plin eu zero uri) pentrLJ a Ii lolosit ca lisier de swap. i n aeest moment trebuie transformat fi~ ieru l in zona de swap, printrun proces asemanator lormatarii parlip ilor:
roo t @ u b unt u , -I
m k~wa p

/mnt/ t emp/fi, i e r . swap

in acest moment, fisierul este preglitit pentru a Ii folosit ea zonli de swap. 5istemul de operare trebu ie sa aile de prezen!a fi~ i erului de swap printro opera!ie asemanatoare montlirii unui sistem de liSiere:
root@ubu ntu:-I swap on Jmntltemp!tisier wap

Oupa executia acestei comenzi sistemul foloseste fi~ierul creat mai sus ca zona de swap.

Cuvlnte chele kernel kernel-space userspace masina virtuala von Neumann CPU, procesor

214

INTRODU CERE iN SISTEME DE OPERARE

AAM,DRAM

placA de bazA
chipset northbridge

southbridge harddisk, HDD

magistrali'!, PC I, AGP
dispozitiv modul
driver

Ismod, ins mod, mod probe, rmmod

I,,,

Isusb, Ispci

sensors smartmontools

Idev

"'"
dd

dispozrtive de tip bloc dispozrtive de tip caracter

pseudodispozitive

/pIOC
sysctl

ietc/sysctl.conf

MBR

Intrebfitl

t. Care dintre urmi!toarele NU esle 0 componenta a arhitecturii von Neumann?

o o

CPU

o unitatea de comandi'l

memoria

o dispozitivele de intrare ie~ire


2. Care utilitar peate Ii folosi! pentru efectuarea unui backup la MBR?

o
o

lspci
lsUllb

o !lysctl

o"
3. Care din urmatoarele NU clera direct informa!ii despre sistem?

o Isys

/ p roc

000

o o o

lllusb

4. Care comand1i NU eSle folositii penlru interaC)iunea cu modulete din kerne l?

l smod modprobe
C JPYnghted matanal

CAPITOLUL 1_ ANALIZA HARDWARE A SISTEMULUI

215

o o

modinata ll inamod

5. Care din urmatoarele NU este un exemp lu de pseudodispozitiv?

o o o o
o o o

Ide v /null /de v izero


Ide v/ h d a 3
Ide v/ urando m

6. Care din urmaloarele dispozilive NU este asociat unui harddisk?


Ide v/sda.l

Idevl h da 5 Id e v /sda

o o o o
o

Ide v /t t ySO

7. Care din urmatoarele se refera In mod direct la placa de baza?


southbridge megabyte GPU cache

8. Care din urmatoarele acronime NU este corelat direct cu dispozitive fiz ice?

o o o o
o o

SCSI USB ACPI TGZ

9. La care dispozitiv se relerA acronimul AGP? procesor placa de relea placa grafica hard-disk

o o o o
o o

10. La ce se refera in general no!iunea de "arhiteclura pe N bili"? dimensiunea reg istrelor dimensiunea magislralei de date dimensiunea memoriei cache L1 viteza maxima a southbridge-ului

C JPYnghted matanal

Copyrighted material

Capitolul8 Configurari de relea


'rOu know it's love when you memorize her IP address to skip DNS overhead.

Ce sa invati din a ces! capitol ?

Noliunea de (elea de calculatoare


Topologia una; relale de calculatoare Adresarea IP Paramalrii una; retela de calculatoare: adresa IP, masca de (alea, gateway Conligurarea una; interfete de (elaa in Linux; adaugarea de rute in Linux
Conligurare tamporara; coniigurare permanentA; configurare statica; coniigurare

dinamica,
Conlig urare DNS

Verilicarea conectivi\a,\ii lnlr-o relea locala


Conligurarea rete le; in Windows

Conlig urarea PPPoE in linux

8.1

Concepte de relea

Aparitia ~i evoliJlia calculatoarelor au dus Ie dorinla de a facilrta comunica lia intra ale penlru a partaja date rna; u~r sau penlru a pulea indeplini 0 sarcina com una. Oe~i dezvollarea relelelor de calculaloare a losl inrtiallenla, implemenlarea lor a cunoscul 0 cre~lere mare dupa 1990, odaU\ cu explozia numarului de calculatoare legale la Internet Oaca ini)ial re)elele de calcu latoare au lost create pentru a lacilila schimbul de inlorma)ie in mediul academic, in momentul de lata ele se adreseaza in mare masura ulilizalorilor privati ~i mediului comercial.

217

21 8

lNTRODU CERE iN SISTEME DE OPEAARE

Penlru ca un calculator sa he conectat la 0 relea trabuie realizate douli conexiuni: 0

conexiune fizica

~i 0

conex iune Jogiea.

Conexiunea fizica esle ulilizata pentru a codi/ica informa!ia sub forma de semna le electrice (in cazul eel mai uzual intalnit oonex iunea S9 realizeazA pr in cabtu UTP), semnale optice {pentru legaturile prin fibra optical sau semnale eleclromagnetice (pentru legaturile fMa fir). in primate douA cazuri ea S8 realizeaza printr-un cabtu care

leaga ca lculatorul de un echipament de relee .


Conexiunea logica cuprinde un set de mecanisme de adresare complexe (ce asigura

comunicatia intra calcu laloarele conectate Ie relee), cuprinde contrOlul flux ului de date
si clera garan!ia integrita!ii datelor. Cel mai cunoscut mecanism de adresare prezent in cadrul conexiun ii logice este IP (Internet Protocol). Acesta asigur.:i identihcarea unica ~i comunicarea calculatoarelor atat in rete lele locale, cat ~i in Internet.

8.1.1

NOliuni de bad

Re)elele de calculatoare, din punctul de vedere at standardelor folos ite , sun! impdr\ite in trei mari categorii: relele locale de calculatoare (Local Area Network - LAN). rele le me!ropolilane de calculaloare (Metropolitan Area Network - MAN) si retele de calculatoare pe arii extinse (Wide Area Network - WAN). in momentul de lata aceasta clasiflcare nu se mai pastreaza 100%, re!elele MAN dispanind aproape complet si fiind inlocuite cu rete le LAN.
lOb '''' PC

Sw ~ ( h

Figura 8. f: Schema unei relele locale de ca lculatoare o relea locala de calculatoare este formata eel mai adesea din mai multe sla1ii legate intre ele. 0 sla!ie poate lj un calcu lator, un laptop, un PDA, un Tablet PC, un server, un router etc.

CAPITOLUL 8_ CONFIGURARI DE RETEA

219

Conectarea statilor se realizeazA pr intr-un ech ipament de retea numit switch. Acesta translera inlormatia intre calculaloare bazandu-se pe adresa MAC. Adresa MAC este un numar cu 0 lungime de 48 de bil i care identihcA in mod unic liecare inter/atA de relea Ethernet. Prin urmare nu pot exista doua in ter/ete de relea Ethernet cu aceeasi adresa MAC. Adresa MAC este Inscrisa din fabrica lntr-o memorie ROM de pe placa ~i ea nu poate Ii schimbata. Datorita laptului ca protocolul DHCP de conligurare automata a adreselor IP utilizeazA Irecvent adresa MAC pentru a aloca 0 adresa IP unui calculator, este uzualA practica de a modihca ad resa MAC a unei plAci de retea. Acest lucru nu inseamnA rescrierea memorfei ROM, ci spec ilicarea unei alte adrese pe care sistemul de ope rare sa 0 loloseas~ i n locul celei initiale. Switch -ul per mite comun icalia intre calculatoare allate in aceea~i relea localA, Pentru a putea accesa si alte calculatoare (cel mai adesea pentru a putea accesa Internetul) trebu ie ca unul din echipamentele din retea sA aibi'l 0 a doua legAturA la 0 altA lelea, Acest ech ipament poate sa lie 0 stalie sau un server cu mai multe inter/ete de retea sau un echipament de relea dedicat numit ruter. Transferul informaliei din reteaua locala mai departe Ins pre Internet se bazeaza pe adresa IP. Adresa IP esle un numar cu 0 lungime de 32 de bi)i lolosit pentru idenmicarea lieci'lrei interiate de relea in Internet. statie poate avea mai multe adrese IP, in mod uzual cAte 0 adresA pentru Mcare interiata. Este posibi l lnsa ca pe 0 interfala sa he configurate mai multe adrese IP.

8.1.2 IPv6
Pt'lnl'i acum am lolosit nOliunea IP pentru a ne releri la Internet Protocol version 4 (IPv4). Internet Protocol version 6 (IPv6) este urmatoarea generalie de protocol de re!ea. dezvolta! pentru a inlocui treptat IPv4, Adresa IPv6 este un numAr cu 0 lungime de 128 de bili folosit pentru identilicarea l iecArei inter/ate de relea in Internet. Principalul motiv pel'ltru care a lost im~emel'ltat un nou protocol de retea pentru Internet este epu izarea adreselor IPv4. IPv6 are un spaliu de adrese mull maj mare decAt IPv4 din cauza lungimii adreselor. Spatiul de adrese IPv6 olera 2128 adrese, lalA de IPv4 care are doar 2~ 2 adrese.

8.1.3 Moduri de adresare : adresare unicast, multicast, broadcast


Comunicatii le intre echipamente pot Ii impAr~le in trei catagorii, in lunclie de numArul de destinatari:

220

lNTRODU CERE iN SISTEME DE OPEAARE

oomunicatii unlessl : au 0 sursa 5i un destinatar;


oomun icalii multi ca st: au 0 sUfsA 5i rnai multi destinatari ce lac parte dintr-un grup

specific ; comun icatii broadcast: au 0 sursa si ca destinatar toate statiile dintr-o rejea . Atflt mesajele de tip multicast cAl s; cele de tip broadcast sun! adresate rna; mullor destinatari simultar1. Diferenla dintre ele constA in faptul ca masajele de lip broadcast S9 adreseaza tuturor sta\iil or dintr-Q retea, pe cAnd cele multicast S9 adreseaza dear unora din acesle slaW.

8.2 Parametri de relea


8.2.1 Adresa IP!?i masca de retea

Adresa IP pe 32 de b~i a los\ inlrodusA in perioada "SO, cAnd nu S9 preconiza cresterea speclaculoasa a Internetulu i. Dupa 1990. datorita dezvoltarii re!elelor, cerinlele penlru adrese IP au crescut, astlel incAt nu peste mult timp adresele au inceput sa se epuizeze. Din acest motiv au aparut mai multe mecanisme menite sa reduca numarul de adrese IP ulilizate, prinlre care adresele IP private si Iranslalarea de adrese IP (Nelwork Address Translation - NAT). in paralel a lost dezvoltata si 0 solutie pe termen lung: protocolul IPv6, a carui ulilizare va cresle in anii urmatori. in cadrul aceslui protocol adresa IP are 126 de biti. Pentru a u~ura utilizarea adreselor IP, cei 32 de b~i sunt separati in palru grupuri a cate 8 bili. !iecare grup fiind scris in forma zecimala. Astlel adresa IP ulilizata in mod uzual este compusa din patru numere zecimale intre 0 si 255 despar!ite prin puncte:
, 3 01011001 11 0 1 0 111 0001111010000111 - e~ i 32 d e b i ti ai une1 ~dre5~ lP 01011001 .11 0 10111. 00011110 . 10000111 - p~tru qrupuri a ca t e B bi t i B9 . 215 . 30 . 135 - fi.,.car.,. grup este tr ~nsfo r ""'t i n format zecim~1

Atunci cand 0 inlerlata de re!ea are conligurala 0 adresa IP, adresa are doua componenle: 0 parte din cei 32 de bili reprezinta adresa relelei din care face parte stalia ~i cealalta parte a bi!ilor reprezinla adresa staliei in cadrul relelei. Sistemul este similar cu ce l utilizat pentru codul postal: in cad rul codului 014286, primele doua cilre pot reprezenta judetul. urmatoarele doua pot reprezenta ora~ul. iar ultimele doua pot reprezenta strada. Astlel destinatia este localizata in arii din ce in ce mai restranse. Pentru a putea spune care dintre cei 32 de b~i reprez inta adresa retelei si care reprezinta adresa calculatorului in cadrul re!elei. este utilizala 0 masca de relea. Aceasla este tot un numar de 32 de biti cu 0 caracte ristica speciala: este compusa, pornind de la stAnga la dreapta, dintrun tMoe compact de 1 urmat de un tMoc compact de O. Pentru u\ilizarea mai u~oar1i a m1i~tii de relea este folos ita aceea~i notalie ca ~i in cadrul adresei IP:
, 11111111 000000000000000000000000 - eei 32 d.,. biti ai Une1 mast> 11111111 . 00000000 . 00000000 . 00000000 - patru qrupuri a ea t e B b>ti 255 . 0 . 0 . 0 - f i e cdre grup es t e t ranfo r mat in format ~ecim~l

Dac1i in cadrul ma~tii de relea un bit este egal cu 1. atunci bitul corespunzator din adresa IP face parte din adresa retelei, iar daca eSle egal cu 0, bitul corespu nzator din adresa IP face parte din adresa calculatorului (sta~e i ) in C<ldrul fe/elei:

CAPITOLUL 8. CONFIGURARI DE RETEA

221

0 1011001.11010111.000 1111 0 . 10000111 11 111111.00000000.00000000 . 00000000


<- A . R . - > <--------A . S . ------------ > A . R. - lIare. " re t ele ! A . S. - Aare.,. 9t H ie i

aar ..... IP "",.ca ae rete a

3 5

Pentru a putea afla din ce relea lace parte 0 adresa IP, se lace $1 logic pe bili intre adresa IP si masca de retea. Dup1i. realizarea operatiei de $1 logic se obtine 0 adresa IP care are toli bitii din partea de adresa a relelei egali cu adresa relelei din care face parte statia, si toti bitii din partea de adresa a staliei in cadrul relelei egali cu 0:

0101 1001 .11 010 1 11.00011110.1000011 1 1 1 111111.00000000.00000000 . 00000000


-----------------------------------

0 10 II 00 I .00000000. 00000000 . 00000000


<-A . R.-> <--- ----A . c . ------------>

89.215 . 30 . 135 - aaresa lP 255.0 . 0 . 0 - masca de rete a SI l ogic p .. biti 89.0.0 . 0 - adre s a r ete lei 89 . 255 . 255 . 255 - "de. brMdca 9t

0 I OII001 . llllllll . 11l 1l111 . 11111111

Adresa IP in care toli bi!ii din partea de adresa a statiei sunt egali cu 0 se numeste adresa relelei din care lace parte stalia. Toate statiile dintro relea locala au adrese IP care au aceeasi adresa a releleL in felul acesta se rea lizeaza corespondenla intre conexiunea fizica la retea si cea logica. Adresa IP in care toti bitii din partea de adresa a statiei in cadrul rete lei sunt egali cu 1 se nume~te adresa de broadcast a relelei. Daca un pachel este trim is catre aceasta. adresll. atunci el ya Ii procesat de toate calculatoarele din relea.

Clase de adrese IP Conceplul de clase de adrese IP este important pentru intelegerea modului in care fu nctioneazll 0 relea de calcu latoare. Spaliul de adrese IP este impllrtil in cinci categorii, denumile c/ase de adrese, i n /unctie de intervalul din care lace parte primul octet al adre5ei IP (sau, echiyalent, primul numar zec imal din notalia cu pune!). se stabileste clasa respect ivei adre5e IP: intre 0 5i 127, adresa IP face parte din clasa A, intre 128 5i 191, adre5a IP face parte din clasa B, intre 192 5i 223, adre5a IP lace parte din clasa C, intre 224 si 239. adresa IP face parte din clasa D, intre 240 si 255. adresa IP face parte din clasa E. Aceasta impar)ire a claselor de adrese a lost aleasll din cons iderente de perlormant1i.: pentru a determina clasa unei adrese IP oarecare, un dispoziliv hardware de relea trebuie sa inspecteze maximum primii patru bili ai adresei IP (yaloarea bitilor nota!i cu nu este importanta): 0 .. " adresa IP face parle din clasa A, 10... , adresa IP face parte din clasa B, 110, . ". adresa IP face parte din clasa C.

222

lNTRODU CERE iN SISTEME DE OPEAARE

1110. , adresa IP face parte din clasa D,

1111, - . -', adresa IP face parte din clasa E. Imp1i!1irea pe clase determina doua caracterishci imporlante ale une; adrese: tipu l rutarii (unicasUmultiCastlrezerval) 5i masca de relaa. Clasa A: 0.00.0 - , 27.255.255.255 - masca 255.0.0.0 - unicast

Glasa B: 128.0.0,0 - 191.255.255.255 - masca 255.255.0.0 - unicast Clasa C: 192.0.0.0 - 223.255.255.255 - masca 255.255.255.0 - uniC3S!
Clasa D: 224.0.0.0 - 239.255.255.255 - multicast
Clasa E: 240.0.0.0 - 255.255.255.255 - rezervat
Modul acesta de clas ificare a spatiului de adresa a fost utilizat lnlr-o faza incipienta a Internelului. Din motive care lin de eficien!a modului de utilizare a adreselor IP, In prezent, m1l~ti le de relea nlJ alJ doar aceste trei IlJngimi fixe, ci pot avea IlJngime variabil1l, iar impai'\irea in cele einci clase nlJ mai este Intanita decat In cawri rare.

Adrese IP PlJbli ce ~i adrese IP privale In momentlJl In care nlJmarlJI de adrese IP ramase libere a InceplJt sa scada sim!itor, la lneeplJllJl aniior '90, alJ aparut mecanisme menite s1l rezowe partial aceasta prOblema. Printre mecanismele aparlJte se nlJmara si spalilJl de adrese private. Din fiecare elasa de adrese a fost rezervat lJn spalilJ de adrese care nlJ pol fi accesale direct din alara re!elei locale. Practic statiile care alJ conligurate adrese IP private SlJnt invizibile din afara re!elei lor, si implicit din Internet. De aceea pot exista mai mlJtte sta!ii, lacAnd parte din rete le diferile, care alJ aceeasi adresa IP privata.. 1n lellJl acesta se realizeaza 0 economie mare de adrese IP. Spa!iile de adrese private slJn!:
2

10 . 0 . 0 . 0 - - 10 . 255 . 255 . 255 d i n clas a A 170 . 16 . 0 . 0 -- 112 . 31 . 255 . 255 d i n cl a sa B 1 92 . 168 . 0 . 0 -- 192 . \68 . 255 . 255 d i n cl aaa C

PenlrlJ ca 0 sialie ce are conliglJrata 0 adresa IP privala sA poata. accesa sialii care nlJ se afla in aeeeasi retea ClJ ea esle necesara lJtilizarea mecanismelor de NAT (Network Address Translalion). De cele mai mlJlte ori, prin NAT, loale sialiile dinlr-o relea ClJ adrese IP private vor fi reclJnOSClJte In afara relelei ca aval'ld aceea~i adresii IP plJblicii

8,2.2

Ruter implicit (default gateway)

PentrlJ a plJtea accesa calClJlatoare allate in alte relele, este necesar ca lJnlJl dintre echipamentele conectate in relea sa aiba 0 a dOlJa inter/ala conectata la 0 alta relea. Din cea dea dOlJa relea se poale real iza mai departe acceslJl caire Inlernel. Acesl echipament se nlJme~te gateway. AtlJnei cand 0 slalie A doresle sa comlJnice ClJ 0 statie B, primlJl pas pe care II face eSle sa verifice daca adresa IP a IlJi Beste in aceeasi relea ClJ adresa IlJi A. In cazlJl in care

CAPITOlUl 8. CO NFJ GURARJ DE RETEA

223

ceJe doua statii sunt In aceeasi relea. informatiile sunl tr imise direct catre 8. Daca 8 nu se alia in aceea~i retea cu A, atunci informa\iile sunt trimise catre gateway. urmand ca acesta s1i gi:!seascA 0 rula cAtre 8. De exemplu cand A I VTea sA comunice cu A3, l iind amandouA in aceeasi retea locala, Ii va trimite informaliile direct. Calea pachelelor esle reprezenlalA in figura 8.2.

Figura 8,2: Comunicarea in releaua localA in cazul in care A I vrea sA comunice cu 82, va trimite informatiile caire RI care este gatewayut. AI va verifica dacA reteaua deslinatie este direct coneclata sau daca cunoa~te calea cAtre ea Schema din ligura 8.3 reprezintA catea pachete lor de la A I la 82:

_.
Figura 8.3: Comunicarea in afara re!elei locale Prin urmare este necesar ca l iecare statie din retea sa cunoasca adresa gatewayului pentru a putea avea acces in alara retelei si masca de re!ea pentru a vedea daca este cazul sA fo loseascA gatewayul sau nu.

B.2.3

ONS

Un utilizator acceseazi:! in mod normal un numar mare de serv icii de re!e a, cele mai mulle l iind olerite de diverse servere. Accesarea fiecarui serviCiu este conditiona!1'i de cunoaslerea adresei IP a serverului care oleri:! servic iul respectiv. Spre exemplu. pentru a accesa 0 pagini:! web este necesarA cunoasterea adresei IP a serveru lui pe care este gaz:duita acea paginA,
" 1

'"
unui server, i se poate alia adresa IP.

lNTRODU CERE iN SIS TEME DE OPEAARE

Penlru ca mamorarea unui num~ mare de adrese IP nu eSle un lucru cornad, a apArut serviciul numit Sistemul numelcr de domenii (Domain Name System - DN$). in cadrul acestui serviciu se realizeaza corespondenla intre un ~jr de caractere ~j 0 adresA IP. De aceea ONS-ul poate Ii priviJ ca 0 carte de telelon de unde, daca se cunoa~le numele

4. Adresa IP a lu i curS,CS.p ub,('O

este 141.85.224 .18


S.14185.224.18,
d~-mi

te '''Il

pag ina Inde'. html

1. vreau
s~

curs ,cs.pub ,ro

aceese. curs,cs .pub,ro

2. Am nel/o ie de adresa lui IP

Fig ura 8.4: ROlul unui server DNS

Un nume de domeniu (asocial unui ca lculator) eSle cempus din mai multe parti despiir,!ite
prin puncta: de axemplu cUfs.cs.pub.ro. Cea din exlremitatea dreapta: se numeste Top Level Domain - TLO ~i poate cont ine indicativul unei tari (.ro pentru Romania . .us pentru SUA, .jp pentru Japonia elc.) sau poate reprezenta un anumit lip de organ izatie (de exemplu .com pentru orga nizatiile comerciale, .org pentru organiza!iile nonprofit, .mil pentru armala SUA elc). in stanga Top level Domain se gasesc subdomen ii. in exemplul de mai sus subdomeniul pub este asocial Universitatii Politehn ica Bucuresti, cs este asociat FacultAtii de Aulomalic<'i si Calculatoare , Caledra de Calculaloare. Serviciile de DNS sunt oferrte de servere special izate. Pentru a putea accesa un astlel de server, este necesara cunoa~lerea adresei lui IP, Exista servere pu~ice care ofera servicii de DNS, ins<'i de cele mai mul1e ori este de preferat ca in cadrul rete lei locale sa existe un server de DNS din motive ce lin de l impul de raspuns. Chiar daca serverul de DNS eSle plasat in releaua locala. DNS-ul ramAne eel mai lenl serviciu de relea si componenla cu ce l mai mare limp de raspuns in mecanismul de comunica!ie in relea. De aceea se spune ca " \-bu know it's /ove when you memorize her IP address fo skip DNS overhead". Este pos ibil uneori ca adresa IP asociata unei stalii sa lie dinamica. Aceasta inseamna ca din timp in timp slalia respectiva va primi 0 alIa adresa IP. Pentru a putea accesa sta!ia lara sa i se cunoasca adresa IP existenta la un moment dat se foloseste sistemul a'e-nal

CAPITOLUL 8. CONFIGURARI DE RETEA

225

Tabe lul 8.1:

numit DynDNS {Dynamic DNS }. In cadrul acestui sislem sla!ia va Irimile caire un server DNS specializat informatii actualizate legate de adresa ei IP.

8.3 Configurari temporare


8.3.1 Intertete de retea . temporare Configurari permanente 5i configurari

Din punct de vedere logic, liecarei placi de retea ii corespunde in cadrul sistemului de operare 0 interfala. Pe aceasla inlerfa\& se conligureaza 0 adresa IP si 0 masca de relea. in linu~ interfetele de relea conlin in denumirea lor doua componente. Prima parte reprezinta tipul interfetei (de exemplu eth pentru Eth emet, wla.n pentru placile de relea lara lir etc) si numarul ei (e t hO reprezinta prima interfala de Ethernet. wlao I reprezinta a doua interfa!a lara lir etc). Conligurarea unei adrese IP se poale rea liza in doua moduri: temporara sau permanenta. Fiecare din cele doua se poate realiza la rAndul ei statiC (parametrii sunt introdu~i manual de administrator) sau dinamic (paramelrii se conligureaza in mod automat). Conligurarea temporarA statica se realizeaza cu ajutorul comenzii ifconfiq (a carei denumire vine de la interface configuration). Eleclul aces lei configurari este imedial (parametrii sa aplica imedial dupa ce comanda eSla data) insi'l odata cu rapomirea sistemului de ope rare , configurarile se pierd. Configurarea temporara dinamiCa. se reali zeaza cu ajutorul unui client DHCP, de exemplu dhclient sau dhcpcd. Conligurarea permanenta statica sau dinamica se re alizeaza cu ajulorul lisierului / etc/ ne t wo r k/ in t er f a.ces . Eleclul aeeslei comenzi nu esta imedial (eonligurarila nu se aplica odata cu salvarea lisierului), insa conligurarile se pastreaza si dupa repornirea sislemului de operare. Acestlucru se pelrece deoarece lisierul in care sunt trecute conligurArile aste citil ~i interpretat de sistemul da operara la inilializare, conligurarile din I~ier liind din nou aplicate. $i configurarea unui gateway se poate real iza in mod temporareu ajutorul comenzii route sau in mod permanent prin fi$ierul de conligurare / etc/net"" o O;f i nte rfa. c es . Fiecare din eele doua metode (permanent vs. tempora r) are avantajele sale. Configura.rile tempo rare au efect imediat si se apliea u~r. Cele permanente se pot

.1

226

INTRODU CERE iN SISTEME DE OPEAARE

aplica automat la fiecare initializare a sistemului de operate.

8.3.2

Configura rea temporara statice a unei adrese IP pe 0 interfa,ii

Pentru a configu ra 0 interiat;'\. de retea in mod temporar sa lolases!e comanda


i. f con fi q _ Modul de utilizare al comenzii asia urmatoru l:
2 ro o t@ u b unt u: -' ifcon li g [ - v ] ( - ~l [- . ] [interhc .. l root@ u bun tu:-' lfcontig [ - v] interf a ce ["ftyp e ] op tion$ I a dd ress . _ .

Prin l.IIilizarea comenzii lara nieiun parametru sa pot alia informalii despre intertelele de

relea active:
root@a. gar o: / hom e/george t itcon f l g
2 ethO Ll nk encap ; et~ernet
H"a d(! ~

0 0: 14 ; 0 1 ; 3a ; 7 3 : A6

,. " "
12

,
10

inet a ddr : 10 . l . l . 2 Bcast : l0 . 1 . 1 . 2SS H&sk : 25 5 . 2 55 . 25 5 .0 i ne t6 addr : fe80 :: 214 : d lff : f e 38 : 13a6/64 Scope : Lln k UP BROADCAST RUNNIN G MULT I CAST M TU : l S00 Metri c : 1 RX p a c kets : 189820 17 ecco c s : O dcopped : O overruns : O f came : O TX p a c ke ts : 21864548 euo c s : O d r o p p e d : O oveuun ~ : O cauie r: O co ll i , i on , : O t xqueuelen : 1000 RX b yt"s : l 44959484 ( 130 Mi B) TX b yt@s : 2 l 665362 (20 . 6 MiB) Intucup t : l 8 Base a aa res. : Ox 4400
L in k "ncap :L oc o l Loopbac k in"t aaar : ln . O. O. I MU k : 2SS. 0 . 0 . 0 j ne t 6 aaac : :: 1/ 128 Scope :H ost UP LOOPBACK PUNN I NG MTU : 164J6 Metric : l RX p ac ke t s : S", err o rs : O a roppea: O overr u ns : O f rame , O IX p a c ke ts : S,1"] erco<s : O a ropp ea : O ove r runs : O c &rr i er:O col l i9ions : O txqueue l en : O RX b yt e s : 360919 (352 . 4 Ki B) TX byt e ; : 360919 (352 . 4 Ki B)

" " " "


"

"

Pe langa interfetele corespunzaloare placilor de re!ea exista si inletia!a 10. Numele aceslei interfele vine de la loopback. Orice informatie transmisA pe foopback se va intoarce inapoi tot pe loopback. Intetiata de loopback este 0 intertati! vi rluala (Iari! un corespor1den1 lizic) care este 1010si1i! i n scopuri de testare. Ea are, deobicei, asociata 0 adresi! IP standard: 127 . 0 . 0 . 1. Daca un calculator nu are nicio placA de re!ea , intetia!a de loopback va Ii singura existenta. Parametrii uzuali ai come nzii i fcon fi q sunt urmatorii: - v afiseaza inlormatii detaliate In cazul erorilor: - a ali~eaza informatii despre toate inletie!ele inactive.
e~ istente,

lie ci! sunt active sau

, , ,

r oot@as9a cd : /h ome/ge o rge f i fco n f i g et h O L i. n k encap : Et h er n et HWaddr 00 : 14 : DI : JB : 73 : A6 inet addroIO . l . l . 2 Bcast: l O. l . l . 2 5S MU k , 2 SS . 2SS.2SS.0

( ... I

'0

L i. nk inet

enc a p ' Lo c ~ l

& ddr : I ~7.0 . 0 . 1

Loopbac k Mask , 2SS . 0 . 0 . 0

[ ... I

CAPITOLUL 8. CONFIGURARI DE RETEA


," " root@asgard : /home/george f i fco n f ig - a et hO Li n k enc~p : Ethunet HWaddr 00 : 14 : Dl : 38 : 73 : A6 Inet addr:lO .l . l.2 Scas t , lO.1.1.255 Mas~ : 2SS
[ ...

227

. 2SS . 255 . 0

..
"

1~

I
HWaddr OO , la , F3 : AB ,4S, 62 MTU : 1500 Met ri c : l

et hl

Link encap , Etherne t eROAOCAST MU L1 JCAS1

" ,. "

[. .. I
10 Li n k ine t
enc~p : Loca1 ~ddr : l27 . 0 . 0 .1

"

Loopbac k M " ,k : 255 . 0 . 0 . 0

[. .. I

- s afi seaza. statistiCi legate de interfetele de retea in format compact, sub forma unui label:

, , ,

root@a,gard : /homelgeorge f ifconf i g RX - OK RX-ERR iface I .. . I TX - OK IX - ERR IX- ORP TX - OVR 1500 193488 I _. I 2a2J 4 7 et hO 0 0 ,~" 16436 5849 0 I ... I 0

"

ce" " i nterface reprezinla numele interfe!ei despre care se doresc informalii sau

, "'" "" ,

-,

,,,

, ,

n,

numele iflterfetei care va fi configurata. De exemp lu, pentru a afisa informal ii des pre interfala de re!ea ethQ se lolose~le comanda
, root@asgard : /homelg@o rgef i fco n f ig @thO @t hO L i.nk encap : Ethernet HWaddr 00 : 14 : Dl : 36 : 73 : A6 lnet add r: lO .l.1.2 Bcast,10.1 . 1.25S Mask,2SS.2SS.255.0

[. .. I

address reprezinla adresa IP care va Ii configu rala pe interfalE!.. De exemplu, penlru a config ura adresa IP 1 Q. 1 . 1 . 3 pe interfala ethQ :

root@a ,ga rd : lhomelgeorge f l fconfig ethO 10 . 1 . 1 . 3


root@ ~"g~rd : lhomelgeorge f

et hO

ifconfig ethO LLnk enc~p : EthunH Hwaddr 00 : 14 : DI : 38 : 73 : A6 ine t addr : lO . l . 1.3 Bc"'t :1 0 . 255 . 255 . 255 Masx : 255 .0 . 0 . 0

I ... I

options reprezi nla OPliuni avansate ce pol Ii co nligurale Opliunile ce le mai des fo losite su nt urmaloarele: down dezactiveaza 0 inter1ala. Odata dezactivata, in!erfata nu va mai trim ite si nu va mai primi niCiun pachet
, rOOt @d "g~rd : I home I geo rg-e f i fconf ig et hO Li n k enc~p : Eth ~ r Mt Hwaddr 00 : 14 : DI : 38 : 73 : II.6 ine t addr : lO .l.1. 2 Bca 3t :1 0 . I . I . 255 Mask : 255 .2 55 . 25S . 0

t ... I Link en c ap : Loca 1 Loopbac k '0 ,ne t addr : l27 .0.0.1 Mask : 2SS . 0 . 0 . 0 , [ J roothsgard : lhomelgeo"g-e f !fconflg- ethO do wn '" " roothsgard : lh omelgeor g e f itcon fig12 ,) 10
Lin~

encap : Loca l Loopbac k


~ddr : l27 .0.0.1 M ~" k:2 55 . 0 . 0 . 0

inet

,.

I ... I

228

lNTRODUCERE iN SISTEME DE OPEAARE

Sa poate observa faplul cli. dupl'i ce interfa\a a lost dezactivatli, ea nu mai apare in lisla de intertele active. Pentru a afi~a toate in terfelele existente S9 folose~te parametrul - a. up eSla utilizat1\ pentru a activa 0 intertalil. in cazul in care eSla specifiCatA 0 adresa IP pentru a Ii configuratA pe interfala, opliunea up esle cons ideratA implicit
root 8~ "\lard : I hom .. I geo rge f i fconf iq 10 Link encap : Local Loopback in" t addc : 127 . 0 . 0 .1 Mask : 2SS . 0 . 0 . 0

2
J

,
"

( ... I
r oot@asgard : /home/georgef i fco n ! i g <>thO up

" ..

" " I, 1"

root@"sgard : /home/georgef ifconfig et h O Link encap : Ethe r net HW"ddr OO : 14 : Dl : JB : 73 : A6 in .. t addr : lO . l , J .2 Bcast:10 , 1 , 1 . 25S MU l: : 2SS.2SS.2S5.0

[ ... I
Link encap : Local Loopback inet add< : !27 . 0 . 0 . ! Mask : 255 . 0 . 0 . 0

( ... I

netmasl< addr specilica masca de retea asociata inter/elei. in cazul in care ace asia op!iune nu este prezenla se va co nsidera masca implicita clasei IPuri din care lace parte adresa IP a inter/etei Se poate observa din exemplele anterioare laptul ca , nespecilicand masca de ret ea. aceasta a lost considerata implicit 255 . 0 . 0 . 0, care este valoarea pentru clasa A de adrese IP din care face parte 10. I 1 . 3. in caz ul in care se specilica si vafoarea ma~tii ca op!iune. rezultatu l va Ii:

,
J

root@a"gard : /homelgeo<gef ifconfig ethO 10 . 1 . 1 . 3 netma" 255 . 255 . 255 . 0 root@a;gard : lhome/geo<ge f ifconfig et hO <>thO Link encap : Et h~ rn H HW "ddr 00 : 14 : DI : 38 : 73 : 11.6 in" t addc : IO . 1. 1. 3 Bca,t : l O. 1.1.255 Ma5 k : 255 . 255 . 255 . 0

"

( ... I

hw

class addr specilica ulilizarea unei alte adrese MAC si nu cea din memoria ROM a placii de rel ea, in cazul in care driverul placii de retea olerA suport penlru acesllucru. Este foarte important ca interiala de re!ea sa lie dezacUvala inaintea conligurAri i unei noi adrese MAC:
root@asgard : /homelgeo<gef ifconfig eth O <>thO Link encap : EthHMt Hwadd r 00 : 14 : D1 : 38 : 73 : 1I.6 in" t addc : IO . 1. 1. 3 Bca,t : l O. 1.1.255 M&5 X: 255 . 255 . 255 . 0

2 J

,
" ,0 " '2
,J

[ . .. I
r oot@a'ga rd : /home/g@ocg@' i fco n f i g HhO down root@ugard : /home/georgef ifconfig ethO hw ether 01 : 02 : 03:04:05:06

"' roothsgard : /homelgeo<ge f


ethO
( ... I

lfconfig ethO Link encap : Ethernet Hwaddr 01 : 02 : 03 : 04 : 0 5 : 06 inet add<:!0 . ! . 1 . 3 BCa"t : lO . I . 1 . 255 Ma' k : 255 . 255 . 255 . 0

CAPITOLUL 8. CO NFJGURARJ DE RETEA

229

Uti Jitatea Iolosirii unei adrese MAC dilerita de eea a plaeii de retea apare datorita faptufui ca protocolul DHCP de configurare automata a adreselor IP utilizeaza frecvent adresa MAC pentru a aloca 0 adres.:i IP unui calcu lator. Pentru a obline 0 anumita adresa IP, trebuie folosita adresa MAC asociata in cad rul serverului DHCP cu adresa IP dorita,

8.3.3

Asigurarea conectivitiitii la Internet. Configurarea temporarii staticii a unei rute implicite

Comanda 1!con!1q permite doar configurarea unei adrese IP pe 0 interfat.:i. Pentru a putea accesa Intemetul este nevoie sa fie spec~icata adresa unui gateway. Specificarea temporara a unui gateway se real izeaza cu ajutorul unei rute. 0 ruta reprezinta ealea pe care 0 urmeaza paehetele in drumul lor dl.tre destinatie. Rute le sunt relinute in cadrul unui structuri numite tabela de rutare . Aceasta conIine practic inlormatii des pre toate destinatiile accesibi le la un moment dal. Printre inlormaliile relinute pen\ru !iecare ruta se I1(Jmara: adresa destinatiei (poate Ii adresa unei sta?i sau adresa unei inlregi rele le). masca de relea asociata ~i adresa eehipamenlul ui de relea cAIre care se trimit inlormatiile penlru a ajunge la desnnatie. Configurarea tabelei de rutare se real izeaza cu ajutorul comenz ii route. Aeeasta permite adAugarea, modificarea si ~tergerea de rute. Penlru a vedea care sunt rutele existente la un moment dat (ca atare pentru a vedea conlinutul tabelei de rut are) se utilizeaza comanda rout .. fAra parametri:

, ,

root @ ~sqard : /home/george t

rou t e G@ nmas k 255 . 255 . 255 . 0

r out i ng table D@s ti nat i on G.ot .. "ay localnet

K~rnel

"

Flag~

M .. tric

._, ,

Hac .. "", ethO

In rezultatul de mai sus se vede laptul ca singura ruta ex istentA este cea asociata relelei locale (localnet ) .Aceasta ruta (care este praetie asociata cu reteaua locala direct conectata) este introdusa in tabela de rutare dupa ce interfala de relea asoc iata relelei eSle configurata. Formatul come nzii utilizat pentru adAugarea unei rute implicite este urmAtorul:
root @@ ubuntu:-f rout .. a dd
def~ult qatew~y

addr

Configurarea unei rule implicite se realizeaza astrel:

, , , ,

root @ asqa rd : /home /ge orge' route

'"

def a ult gat e way 10 . 1.1.1

roo t @ a . qa r d ' /home/george' rou t e r out i ng table D@s ti nat i o n G" nmas k G.ot .. "ay
K~rnel

"

loc~ l net

255 . 255 255 . 0


10,1 , 1 . 1 0.0 , 0,0

d " fault

Unul dintre parametri i utili ai eomenzii route este - 0 (numeriC) FolosirKI acesl paramelru adresele din tabe la de rutare vor Ii ali~at in lormat numeric in loc sa se afiseze numele serverelor sau sta\iilor. Este folos it atunci eAnd se doreste interogarea unui server DNS (de exemplu atunci cand nu este configurat un astle l de server),

, "

Flag~

M .. tric

, ,

,.. , , '"' , ,

Hac .. ethO et h O

230

lNTRODU CERE iN SISTEME DE OPEAARE

, , ,

.ooth sga.d: /home/ george ~ route -" Menel routing t~ble DestlMtion Gateway Genmask 10 . 1.1 . 0 255 . 2S S . 2SS . 0 0.0.0.0 10 . 1.1. 1 0.0.0.0

"

Fl ags Metric

" "

, "

'" "" " "


0 0

I face et hO ethO

8.4
8.4.1

Configurari permanente
Configura rea permanenta a unei
interfe~e

de

re~ea

Configurarila de re(aa parmanenta se raalizeaza in cadru l fis iarului /ete/ ne twork/ i.nterfaces. Manualul de utili zare al acestui fisier se poate accesa cu comanda:
ma n interfaces

Un exemplu de fisier de co nfigurare este urmAtorul:


2 root@a.ga rd: / h o me/george' c a t /etc/network/inter l a ce. f This file d escribes the n e t wo rk i n terfaces available on your syste m f and how to sctlvate them . For mo'e l n formstlon , see lntertacesI S) .
f The loopback networ k Interface auto 10 ethO I hce 10 I net loopb a Ck f The pnmsry network Interhce allow- hotpl ug e thO Hace ethO ine t ;tdti c add r e " 10 . 1.1 . 2 netma,k 255 . 255.255 . 0 n etwork 10.1.1 . 0 b r oadca,t 10 . 1 . 1 . 255 gateway 10 . 1 . 1 . 1 dn s -na meservers 10 . 1 . 1 . 1

,
" ,

10 11

" " " " " "

FiSierul /etc/network/int e rfaces con~ne diverse configurAri ale interfe(elor de retea, configurAri care sunt interpretate de uWitarele ifup si i fdown. ifup este un utilitar ce per mite activaraa unai interfata da ratea. EI aste similar optiunii up a comenzii i fconfiq. ifdown dezactiveazA 0 interfatA de re(ea, fiind simil ar cu op(iunea down a comenzii i f con fiq. Pentru a activa toate interfetele defi nite cu auto in /etc/ network / interfaces se foloseste urmatoarea comanda.:
root @ u b untu:- I i lup -a

Pentru a activa 0 anumita interfala. se precizeaza numele acesteia, de exemplu:


Loot @ u b untu , - I i fup ethO

Pentru a dazactiva toata intar/e(ele active sa


root @ u b untu:-I ifdown - a

folose~te

lJrmiitoarea comandii:

CAPITOLUL 8. CONFJGURARJ DE RETEA

231

in cadruJ lisierului interfaces se gflsesc mai multe declaratii de tipul Haee , auto sau al low. Declara!iile auto specilicfl ce inter/ete sunt activate atunei cflnd ifup este lolos~ impreunfl cu paramelrul - 1\, Un asUel de apel (ifup -ill esle lolosit la pornirea sistemului de operare. Pornirea unei interfe!e marcale ca auto eSle realizatil. in momentut in care udev (vezi seCliunea 7.5) a creat mecanismele necesare IunClionflrii inlertetei. Declaraliile allow specfficil. intertetele care sunt activate automat de cave diverse subsisteme. Astlel activarea nu mai este realizatil. dupil. ce udev a detectat placa de relea, ci in momentul in care aceasta devine disponibilfl. Pentru specilicarea unei interte!e de loopback se
H aee 10 !net loopback
folose~te

urmflloarea linie:

Dupfl declaralia i face urmeazil. numele interte!ei , apoi tipu l de adrese pe care inler/ala il loloseste (inet reprezintfl adresare IP, inet6 reprez intfl adresare IPv6). Penvu a marca 0 inter/ala ca loopback, se loloseste parametrul l oopback. o linie asemil.nflloare eSle JolositA 5i penlru a specifica arice alia inlertatA exislentA. Spre exemplu, pentru conligurarea intertelei et hO :
itaee ethO i net Hatic

Dup<'i declaralia i f ace urmeaz<'i numele inlertelei apoi lipul de adrese pe care it folose~te inter/ala. iar la final, prin include rea parametrului stat ic se specific<'i faptul ca inlerfata este conliguratA manual de administrator, ril.mAnflnd lixfl pAn<'i la urmfltoarea schimbare manuala. 0 alta metoda de conligurare este cea in care se foloseste DHCP, prin care stalia cere conligurarile intertetei de la un server DHCP. Daca parametrul st at i c a lost precizat in declaratia iface, atunei dupa aceasta declaratie trebuie sa urmeze paramelrii cu care va Ii configuratA interiala de relea:

,
,
,

i face ethO inet static ~ ddr e "" 10 . 1.1.2 net"","k 255 . 255 . 255 . 0 nH "ork 10 . 1.1.0 b r o a dcdst 10 . 1.1.255 qat""ay 10 . 1.1.1 <in. - n"m"$"rVer$ 10 . 1.1.

addr e ss specifica adresa IP a interietei (paramelru obtigatoriu), netmas k specilic<'i masca de relea care va Ii folos ita (parametru obligatoriu), network specilica adresa relelei din care lace parte inter/ata (paramelru obtigaloriu doar pentru kernelul 2.0.x, adresa ce se poate obline facArd $1 logic pe biti intre adresa IP si masca de relea, broadcast specifica adresa de broadcast a relelei din care lace parte interfala (parametru optional). Dupa modilicarea lisierului jete/ net work/i nterfaces este necesara reslartarea serviciului de relea penlru a cili noua configuralia:
roo t @ ubuntu : -I /etc/init . dfnH"or ki nq r ",t<>.rt

Serviciul de retea poate fi oprit folosird argumentul stop si pornit folos ind argumentul start :

232

lNTRODUCERE iN SISTEME DE OPEAARE

,
~

root~ubunt~ : "

letcf(n1t . dlnet w o~ l<i ng

stop
9t~rt

root@ubunt u: -I l e tc/init . d/net " orkinq

8.4.2

Configura rea permanenta statica a unei rule implicite

o a doua modalitate de specificare a rute i implicite este folosirea fisierului fete/ n etwor k / i n terfaces. Structu ra acastuia a lost descrisA In paragraful
ante rior.

Printre parametrii care sa pot configura dupA declaratis iface se aliA implicit. Specificarea acestuia se realizeaza aSllel:

~i

gateway-wi

, ,

it~ce

.. thO inet static [ .. . I


gateway 10 . 1 . 1 . 1

unde 10 . 1.1 . 1 eSla adresa IP a gateway-willi.

8.4.3

DHCP. Configura rea unei interfete in mod automat

Configurarea parametrilor unai interfete de retea sa poate reali za stalic sau dinamic. in cazul configurari lor statice to!i parametrii trebuie introdusi manual pe fiecare stalie din re)ea. in cazu l in care se schimba gatewayul, de exemplu, pe fie<:are staM din re\ea Irebuie reatizata aceasta schimbare. Configurarile dina mice permit atribuirea automata a parametrilor de relea, printre care adresa IP. masca de re!ea, gateway-ul, serverul de DNS. Cel mai utilizat protocol de co nfigurare dinamK:a (automata) este DHCP (Dynamic Host Configuration Pr%oof). Pentru ca acest protocol sa furx:lioneze esle necesar ca in re!eaua locala sa se gaseasca un server de DHCP. Serverului ii sunl spe<:ificate plaja de adrese IP pe care Ie poate alribui calculaloarelor si restu l configurAri lor de retea. Atunei cAnd 0 sta!ie doresle sa ob!ina 0 adresa IP, va trim ite un mesaj catre toala releaua (broadcast) prin care ineearea sa determine daca exista un server de DHCP. Daea acest server exista. atunei el va Irimite conf iguraliile caire stalie. Configurarea parametrilor inter/elei de relea folos ind DHCP se poate realiza in mod temporar sau permanent. Pentru a rea liza 0 configurare temporara se porneste clie ntul de DHCP, de exemplu eu ajutorul comenz ii dhclie nt :
2 , , root @a' ga r ci : /hom@/g@org@I dhclient Internet Syot@m. Con$ortium DHCP Client V:J.0.6 Copyright 2004 - 2007 Internet Systems Consort i um . All r ight. r eserved . For info , p l ease vi$it http : //w,,,,, . i.c.org/.w/dhcp/ Liste n ing on LPf/@thO/OO : 40 : f 4: cc : c5 : 4) Sending- on LPF/ethO/OO : 40 : f4 : cc : c5 : 41

,
!

CAPITOLUL 8. CONFIGURARI DE RETEA


10 "
,~

233

" ,.

Sending- on Sock .. t/falll>ock DHCPDISCOVER on "thO to 255 . 255 255.255 port 67 interval 6 DHCPOF'F'ER fro m 10.1.1. 1 DHCPREOUEST on ethO to 255 . 255 . 2 55. 255 port. 67 DHCPACK from 10.1.1.1 bound to 10.1 .1. 2 -- rene~&l ; n 815 seconds .

Inlerlala va ramfme aSlfel oonligurata pAnl! la urmiltoarea reporni re a statiei sau pAnl! cand oonligurarile vo r Ii schimbate. Pentru a realiza 0 conligu rare permanenlil prin OHCP se fo losesle de asemenea fisierul I etc/net workl inte~ faces . l inia care conligureaza interfata ethO aratl! astfel:
!face ethO inet dhcp

8.4.4
Fi~lere

ONS. Configura rea serverelor de ONS


de conllgurare a configura adresele serverelor de ONS se lolosesle fisierul

Pentru

le t c/~esolv . conf. in cad rul acestui fisier se pot speciliCa adresele mai mullor

servere de ONS. in cazul in ca re unul din ele nu con!ine inlorma!ii despre domeniul cautat, se va lncerca interogarea celorlalte. Manualul de utilizare al comanda:
m~n

li~ierul u i

I etcl ~esol v. con f se poate accesa folosind

resolv . conf

Un exemplu de lisier letel resal v . conf este urmatorul:


~

search localdom ~ln Mmeserver 10 .1. 1.1 MmMHve r 2l7 . 11S . i3S . H Mm~5e r ve r 128. 1 07 . 241.185

In cadru l fisierului cea mai importanta declara!ie este declara!ia name server. Ea delineste adresa unui server de ONS. Fisierul poate co n!ine mai multe declara!ii de acest lip. Ap licarea conligurari ior se realizeazA imediat deoarece lisierul ~esol v . con f este interogat de liecare proces aMICi cand doreste rezolvarea unui nume de domeniu. Oesi nu este uzual. serverele de ONS se pot configu ra si din cadrul fisierului le t cl ne t wor k /interfaces . De cele mai multe ori, atunei cand 0 interfatll este oonfiguraUi automat prin OHCP, serverul de OHCP ofefi~ pe lang!!. adresa IP si adresa unui server ONS. care va Ii salvata automat in I etcl reso l ". conf.

Utifitarul re solveonf Folosind ulilitarul re so1veonf se pot alisa inlormatii despre serverele de I1!Jme config urale in sistem Si se poate modifica configuralia din fisierul

...
/ etc/ resol v . con f.

INTRODUCERE iN SISTEME DE OPEAARE

Folosind

optiunea

- <l

se

poale

modifica

fisierul

/etc/resolv.conf :
ubuntu@ubuntu : -$
c~t I~tc/resolv . conf

, , 6 ,

nameserver 1 92.16a . 2 . 1

uountu@ubuntu ; -S echo "n &meser ver 192.168.2.100 ubuntu@ u b u ntu ; -S echo


n~meserver

resoivconf -a ethO resolvconf -a etMl

192.168.2 . 101 "

ubuntu @ uountu : -$ Cdt /etc/re1lO1v . conf f Dynamic r e.olv . conf(5) file for gl i be r e,olv" r(31

10
11

" '"

genera t ed by r es olvconfl81 f 00 NOT ED I T THIS FILE BY HAND -- YOUR CHANGES WI LL BE OVERWRITTEN MmM@rvu 1 92. 1 68 . 2 . 100 nameserver 192. 16a . 2 . 101

o diferen\a intre conf igurarea cu r e solvconf si modificarea directa a fisierului / etel resol v . con f eSle specificarea interfelei penlru care se lace aceasla config uralie. Penlru a Slerge configuratia asociala cu 0 anumila inlerlala se fofosesle urmaloarea comanda:

,
J

ubuntu@ubuntu:-$ resolvcon f - d ethO ubuntu@ubuntu ; -S cat ietci<esolv . conf f DyMmic <esolv . conf(5) hie fo< qlibc <esolved3) qeneuted by
reso1vco~f(8)

e
,

DO NOT EDIT THIS fILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 192.168 . 2 . 101
f

fnterogarea serverefor de nume

Fofosind comanda h os t se pot obtine inlormatii des pre un anumit domeniu, cum ar Ii adresa IP asociata, serveruf de nume al domeniului, se rver ul demail. descrierea. alias-ul elc. De exemplu, adresa IP asociata se poate alia lolosind urmatoarea comanda:
ubuntu@ubuntu , -$ host - t A cs . pub.ro cs.pub.ro has address 141.85.37 . 5

Penlru a obline serverul de nume asocial cu acest domeniu se


2 , ubuntu @ ubuntu , -$ host -t NS c5 . pub .r o cs.pub .r o name server ns . cs . pub . ro . cs.pub.ro name server pub.pub . ro .

va lolosi comanda:

Serverul de mail se poale obline lolosind comanda urmatoare:


ubuntu@ubuntu:-$ host - t MX cs . pub . ro cs.pUb . ro mall ls handled. by 5 mall . cs . pUb.ro .

Comanda urmatoare va
2 ,

ali~a

descrierea domeniului:
Buch~rest ,

ubuntu@ubuntu : -$ host -L TXT c5 . pub .r o cs . pub . ro de.cr i ptive te x t "Poiitehnica Un i ver.ity of Computer Science Deparument"

CAPITOlUl 8. CO NFI GURARI DE RETEA

235

8.4.5

Aliasuri. fetef hosts

Aliasurile reprezinta etichete care sunt asociate unor adrese de IP . Sistemul de aliasuri funclioneaza asemanator cu cel de DNS : de exemplu, aturICi ctlnd 0 statie dore~te sa accasaza sarverul numit my-p ~ i nt - se~ve~ , aa va incarca sA gasaascA adrasa IP a serverului respecUv. Exista instl doutl deosebiri majore lattl de DNS. Prima consttl in laptul ca etichete le asociale unor adrese IP nu trebl.l ie sa respecle convenli ile numelor de domenii DNS (de exemplu nu trebuia si'! se termine cu un Top Level Domain). A doua deosebire consti'! in felul in care este gAsilA adresa IP asociata unei elichete. DacA in cazu l DNS se lolosesc servere dedicate, in cazu l alias uri lor eSle inlerogal lisierut lete I h ost s. in acesl liSier sunt trecute corespondenle le intre elichete ~i adrese IP. Un exemp lu de lisier hosts este urmi'!torul:
root@asgar d :/ h o m e/george~
~

cat lete/ h osts

127 . 0 . 0 . 1 localhost asga<d 127 . 0 .1 . 1 asgard


fServen

5
~

1
$

10 . 1 . 1.100 print . mydomain . ro my - print - . e rvec 10 . 1 . 1 . 1 0 1 ft p. mydomainro my - ftp -s ~ r ve r 192 . 168 . 1 . 150 mail - server
f The fo 11 0 .. iI19 line" are de s irable fo r IP v6 c a p a b le host " :: 1 i p6-1 0ca lhost ip 6 - 1oopba cK feOO :: O i p6 - 1oca l n .. t ffOO :: O i p6- rn c a stpr.,fix ff02 :: 1 i p6 - a ll nodes

10
"

1>

1J

,. '"
,6

H02 :: 2 i p6 - a 11 rout .. u {t02, : 3 !p6 - allhosts

fisierul hosts contine mai

mu~e

linii de lorma:

Campul cel mai din stanga este adresa de IP. Urmeaza apoi numele principal al statiei, sl etichete le care sa asociaza cu aceastl'i adresA, despartite prin spa!iu. De obicei, atunei cand sunt configurale prior~ate 5i vor Ii verilieate primele.
~i

servere de DNS si aliasuri, aliasurile au

8.4.6

Configura rea numelui staliei curente


Folosind oricare dinlre

Pentru stalia curenta se poate configura un nume local. urmatoarele comenzi se poate alia numele slatiei:

, ,

ubu n tu@ubu ntu:-$ h ostname ubu n tu@ub u n tu:-$ unarne ubu nt u @ u b u nt u ; -5 W

-"

Ipr o c/sys/ ~ er n el/ho"tna me

ubuntu @ u b u nt u : - $ ;y s ctl k ernel . ho s t na me

236

lNTRODU CERE iN SISTEME DE OPEAARE

Numele statiei S8 poate modilica temporar lolosind comanda hOlltnam.. , ca in exemplul


urmator:

, , , ,

ubuntu@ubuntu

-,

hO Hname

"buntu
ubu ntu @ubunt u:-$ ho stname
ubuntu @ ubunt u ; -$

""

hostname

""
Pentru a realiza 0 configurare pe rmanentl\ S8 va modi/iCa l isierul / etc Ihostna.me care contine numele staliei. Pentru a determina rec itirea configuratiei din aces! Iisier se va

rula urmatorul script:


ubu ntu@ubuntu:-$ letc/init.d/host na m e.s h

8.5 Testarea configuraliilor de re,ea


Odata ce sau realizat configuratiile de relea, acestea trebu ie testate. Pentru testarea lor sunl lolosile in mod uwal doua utilitare: p ing 5i tra c er ou te . Acesle utilita re sunl folos ite si pentru a depista probleme le uzuale ca re pot aps'rea in funClionarea unei re)ele.

8.5.1

Ping

Utilitarul pinq este lolosit pentru a verifica conectivitatea intra douii stali i. EI testeazll conexiunea fizicll ~i parle din cea logicii, folos indu-se de prolocoalele IP ~i leMP (lnternel Control Message Profocol) pentru a tr imite ~ i pentru a primi mesaje. Ping primeste ad resa IP a statiei destinatie 5i va trimite ciitre aceasta un mesaj ECHO REQIJEST. Atu nci cand acesl mesaj esle recep\ionat, slatia destinalie va riispunde cu un mesaj similar, ECHO REPLY . Dacii riispunsul destinaliei aj unge inapoi la sursii, conexiunea dintre ele funClioneazii. in cal contrar ex ista probleme care i mpiedica ce le doua statii ca comun ice. Principalii pa rametri ai comenzii ping sunt urmlltorii:
ping [- f l [ - c count 1 [ - I In tecval] [-1
inte~facel

destination

Fara nicio optiune, p i nq va trim ite un numar nelimital de mesaje caire desti natie. pana cand va Ii intrerupt:
2 , , 6 , root@a.gard:/home/george' ping 10 . 1 . 1.1 PING 10 .1. 1 . 1 ( 10.1.1 . 1 ) 56184) byte. of d ata . 64 bytes fro m 10 . 1 . 1. 1 : Icmp_ se q - l ttl - 2SS tlme- 0 . 395 m$ 64 bytes fro m t o.1.1.1 : icmp_ se q - Z tt l - ZSS t ime - 0 . J59 m$ (CTRVCl --- 10 . 1 . 1 . 1 p ing statistics --2 pac k et. t~an"mitted , 2 receive d, 0\1 p ac ket loss , t i ... e 8998 ... 5 rtt min/avg/ma x/mde v - 0 . 34110 . 400/0 . 701/0 .10 6 m ~

CAPITOLUL 8. CONFJGURARJ DE RETEA

237

Optiunea - c specilicA numArul de pachele Irimise, iar opliunea - i specilicA inlervalul in secunde inlre douA pachete lrimise:
roo t @ asg;Hd : ! h o me !geor9"* Enn9 10 . 1.1.1 - c 3 - i 1 PING 10 . 1.1.1 (10 . 1.1. 1 ) 5~ 1 84) b yt e , of d a t a . l 64 byt e s fro m 10 . 1.1.1 : 1c .. p_~ e q - 1 ttl - 255 time - 0 . 326 .. ~ 64 byte, f r o m 1 0 .1. 1.1 : i c mp_~ e q - 2 tt l - 255 t ime - 0 . 459 m ~ " 64 by t e. fro m t o . 1. 1.I : i c mp_ se q _ 3 tt l _ 255 tim.. _ 0 . 361 ms G --- 10 .1 . 1 . 1 pi ng $Utistics --, 3 pa ck e t ' tran, mi tt .. d . 3 rec @ iv@ d, 0\ \ pack .. t lo,s . Umt! 1 9 9Bm, 8 rtt min !avg! rnaK!md"v _ O. J2610 . 3B2!0 . 459! O. 0S6 ms
~

Optiunea - I specffica pe ce inlerlala se vcr trimite pachele le:


~

, --8

l 5

rooths g ard : !hom,,!georgef p i. ng 10 . 1.1.1 -I e t hO - c 3 PING 10 . 1.1.1 (10 . 1.1. 1 ) fr o", 10 . 1.1.2 ethO : 56(a4 ) bytes of dUa . 64 bytes fro m 10 . 1 . 1 . 1 : icrnp_ se q - l tt l - 2SS tl me - 0 . 331 ms 64 bytes fro m 10 . 1 . 1 . 1 : i cmp_ se q - 2 ttl - 2SS t1me- O. 326",5 64 b y tes fro m 10 . 1.1. 1 : Ic",p_ se q - 3 ttl - 2S5 time - 0 . 3~"] ms

10 .1.1.1 pi n" ~ tdti ~ ti c ~ --J pa ck e t; tran;mitt e d , 3 receive d, 0\1 p a c ket lo s s , t1me 1996ms rtt min !avg! ma x !mde v - O. 326fO . 341!0 . 361!O . 023 m ~

OPliunea - f permite transm iterea unui num1ir nelimitat de pachets ECHO RE QUE ST, raspunsul ECHO REPLY . in acest lei destinatia lara sa se astepte . . este inundata (flood) de mesaje. Datorila poten!ialului pe care II are aceasta op!iune de a Ii lolosita in atacuri DoS (ve zi sectiunea 10.4 .1), pa rametrul - f poate Ii lolosit doar de eatre root :

,
S
6 , 8

rooth. g ;H d: ! h Orne!g"orgef ping - f 10. 1.1 . t PING 10 .1.1.1 ( 10 , 1.1. 1 ) 56 ( 84 ) bytes of d ata .

C T RL~ C

..

10 .1.1.1 pi n" ~ tdt1 ~ t i c ~ --100 pac ~ ets tun.mitted , 3 re c eIve d. 9H p a c ket loss , t 1me 614Bms a t rn in !avg! max!mde v - O. 240fO . 3B9!2 . 29J!O . 4S0 ms , 'p9fe"",a 12 . 053!0 . 364

8.5.2

Traceroute

Utilitarul tracerout. este lolosil pentru a testa ca lea pe care 0 urmeaza paehetele intre surs1i si destinatie. EI va alisa tAte un mesaj pentru liecare stalieJserver/echipament de relea prin care tree mesajele. Pentru a realiza acest lucru, traceroute se loloseste de campul TTL (Time To Live) prezent in antetulliec1irui pachel. Din motive ce tin de lelul in care lunclioneazA 0 relea este posibil ca in drumul inlre sursa ~i destinalie sa apara bucle. Daca un pachet intra inlro astlel de bucla, el va Ii trim is la in/inil inlre sta!iile ee apar!in buclei si nu va ajunge niciooata la destinatie. Pentru a preveni 0 asemenea situatie, in antetul fiec1irui pachet a lost introclus campul TTL. Acest camp conI ine numarul maxim de echipamente de relea pr in care poate trere un pachet i nainte de a Ii aruncal. Daea un pachet are campul TTL cu valoarea ini!iala. (atu nei cand pleaca de la sursal egala cu 10, atunei el poate trece prin maxim 10 echipamente de relea . AI zecelea

238

lNTRODU CERE iN SISTEME DE OPEAARE

echipamanl va arunca pachetul si va trimite un mesaj teMP sursei prin care 0 va instiinta
de acest lucru. Trimitand acest mesaj, I I zacetaa ech ipament
i~i

va anun!a identitatea

caire sursa pachetului. Pa acest sistem sa bazeazl\. h.mC!ionarea ulilitarului traceroute. Sa trimi! pachele ce au
campu l TTL configu ra! Ie 0 valoa re din ce in ce mai mare. Atunei cand valoa rea TTL eSle 1, va raspunde primul ech ipament de re!ea de pe cal e si va spu ne ca a aruocat

pachelul trim is. Atunei cand valoarea TTL aSIa 2, va rasp unde II doilea echipamenl de pe cale si va spune ea a aruncal pachetul trimis. in fatui ace asta toale echipamentele de
pe parcurs vcr Ii identiiiCate unul cate unul.

Parametrii uzuali ai come nzii tra ce r oute sunt urmato rii:

host reprez inta destina!ia pilna la care se dore~le aflarea rutei :


2 ,
"

georqe@a.qard : -$ traceroute rol . ro t<aceroute to rol,ro (195 . 95 . 229.11 1 ) , 30 h o p s max , 40 byt e pac k ets I 10 . 1 . 1 . 1 (l0 . 1 . 1 . 1) 0 . 429 ms 0 . 332 ms 0 . :/4a ms 2 10 . 100 .0.1 (l0 . 100 . 0 . 1 ) 0 . 809 ms 0.651 m9 0 . 521 ms 3 bac l:bo ne .henu . ro (a9 . 165 . 1 46 . 111 ) 6 .29 6 ms 1 . 765 "'$ Z . 4~3 ms 4 84 . 23 4 . 111 . 4\ (a4 . 234 . 1I 1.41) 6 . 138 ma 7 . 507 ma 11 . 869 ms 5 84 . 234 . 101 . 154 (a4 . 234 . 107 . 1 54) 4 . 406 m9 1.603 ms 1.625 ms 6 H5 . 95 . 229 . 1 71 (195 . 95 . 229 . 171) 2 . 115 m, 1.676 ms 1.230

m'

Pentru fiecare ech ipament de pe parcurs este af isata adresa lui si timpul de raspuns pentTu trei incercari succesive. In cazul in care penlru un mesaj trimis nu esle pr i m~ rasp uns, se va afi~a caracl erul ~ . Parametrul - f perm ile configurarea va lorii campului TIL din primul mesaj tr imis. VaJoarea campului TIL din mesajele urmaloa re va depinde de aceasta si se va incrementa cu 1 la fiecare mesaj .
,
"

qeorqe @ a'qa r d : -$ tra ce rou t e - f 4 rol .r o t r~cuout .. to ro1.ro (19S . 95 . 229 . l7 1 ) , 30


4 6 4 . 2>4. 111. 41 (64 . 2>4 . 111. 4 1)

2 . 006 m.

5 6

8 4 . 234. 101.154 195 . 95 . n9 . 171

(a4 . 234.I07.154) (195 . 95 . 229 . 171)

max . 40 byte p~c kH' e . 2 66 ms 10 . 525 ms 3.399 rn s 4 . 614 ms 5.497 ms 4 . 458 ma :/ . 90 1 ms 2 . 947 ms

hop~

Parametrul -m co nfigureaza va loarea maxima a campu lui TIL care va fi i neercata in cazul in care desti nalia nu a fost atinsa. Daca pa ramerul nu este specil icat, se vor lesta implicit cai cu lungimi de pana la 30 de ec hipamente.
,
Z
qeorqe @ a ' q~rd : -$ tra c eroute - m 3 rol . ro t<acerout e to ro1.ro (195 . 95 . 229 . 111) , 4 hop; max , 40 byt e pac kets I 10 . 1.1.1 (10 . 1.1. 1) 0 . 404 m.'l 0 . 402 rn; 0 . 326 ms 2 10 . 100.0. 1 (10 . 100 . 0 . 1 ) 0 . 623 m, 8.407 m, 2 . 069 m ~ 3 b~c ):bon e .h " r tZll . ro (89 . I6S . 146 . 177) 9 . 707 ms 6 . 819 ms 7 . 895 rn.

, ,

8.5.3

Cum se depisteaza problemele uzuale i n cazul configurarilor de retea

Atunei c(\nd apa r probleme in conf igura-r ile de relea, pentru depislarea lor exista doua abordari: de sus in jos (top-down) ~i de jos in sus (bottom-up). Partea de sus (top) a unei retele se refera la parte a de aplica\ii. iar partea de jos (bottom) se refera la co nex iunile lizice intre echipamente.

CAPITOlUl8_ CONFIGURARI DE RETEA

239

1 n continuare va Ii analizata abordarea de jos in sus, deoarece majoritatea problemelor dinlr-o relea sunt cauzale de conex iunile fizice inlre echipamente. Sa presupunem ca nu poate Ii accesala pagina web www . goog1e_ro. 1 n cazul aceslei abordari primul lucf\.l care Irebuie verifical este faplul ca exisla legalura lizicA inlre stalie si switch sau punclul de acces lara lir. in cazul legalurilor la Ethernet (realizate prin cablu UTP) coneclivilatea se poale verffica examinfir1d led-ul de link de pe placa de relea. Daca led-ul este aprins, exista conex iune intre stalie ~i switch. DacA led-ul este Slins, Irebuie verilleal cablul de retea sau lunctionarea switch-utui. o alta metoda folos ita pentru a verifica starea link-ului pentru 0 interlala de ret ea. utila in special alunci cand nu exista acces fizic la stalie, esle utifizarea unui program de genul ethtoo1. Printre allele, acesta olera informatii detaliale despre tipul de legatura fizica existent!!. si stama ei. Pentru a vedea slarea unei interlete ulililarul se apeleaza avand ca parametru numele interlelei:
root@a ' ga r d : /home/georget ethtool
~thO

> SH t ing' for ethO :


J

" " " " " " " " "

, ,

{ TP MIl lOba.@T/Ha l f l Obas@T/Full lOOba.@T/Half lOObaseT/Full Supports ~uto - negotiatlon, Yes Advertised link modes : lObaseT/ Ha l ! lObaseT/ful1 lOObaseT/ Half IOOb a seT/Ful1 Advertised auto - negot i ation , Yes Speed : IOOMbIs Duplex : Full POrt : IHI PHYIID : 32 Tran,ceiver : in t ernal lIu to - n e gotiation : on Support. Wak@-on : pumbg Current message lev e l : Ox00000007 (71 Lin k detected : yes

Su ppo r ted

port ~ :

"

1 n cazul in ca re Link detected are valoarea yes, exista conexiune intre stalie ~i switch. Daca are valoarea no, Irebuie verilicat cablul de relea sau funclionarea 5witch -ului. Urmatorul pas este verificarea exi5ten!ei unui gateway 5i a conexiunii cu acesta. Penlru a verifica fapl ul ca un gateway a fost configurat trebu ie analizat fisierul lete/ n etworkl i n t e rf"ces sau rezu ltalul comenzi i rout ... luncti e de conliguratie. Daca niciun galeway nu este configurat. trebu ie configurat unul. Daca gateway-ul este configurat , trebuie verilicata legatura cAtre acesta cu ajutorul comenzii p1nq. Oupa verificarea gateway-ului, trebuie ver ificat DNS -ul. Pentru aceasta trebuie analizat fisierul I etcl reso1 v . con f . in cazul in care nu eSle configural niCiun server ONS, trebuie conf igurat unul. Daca eSle conligura! un server, trebuie testata leq1'itura cu acesta cu ajulorul comenzi i pinIJ. Pasul urmalor este verif icarea coneclivitali i cu un all server din Internet. Se peate incerca accesarea unei alte pagini web, se poate testa conectivitatea cu un all server cu ajutorul comenzii pinq sau se peate incerca verificarea caii caIre 90091e . ro cu

240
ajutorul comenzii t r a c a r out a.

INTRODU CERE iN SISTEME DE OPEAARE

Folosirea t ra" .. r out .. ofen'i avantajul

dapist~rii

echipamentului de relea in care sa opresc pachetele.

8.6
8.6.1

Studii de caz
Verificarea in linie de comanda a parametrilor de retea in Windows

Cea mai u~oar~ metodA de a veri fica parametrii de re!ea In Windows eSla folosirea utilitarului ipc:onfig . Acesta sa apeleaz<'l. din linie de comanda. Pentru a porni interprelorul de comenz i din Windows XP. S9 merge la Slart-t Au n, unde i n cil.m pul Open S9 introduce =d 5i sa apasA pe OK.

Informalii despre modul de utilizere al comen zii ipc:o nf i q , precum 5i des pre parametrii
di spon ibili, S9 pot
ob~ne

uUiizand parame\rul /?:


~ipco nfig

C: \Docu me n ts a nd Settlngs\Ge org e

I?

Apelarea comenz ii i p confilJ fa- ra niciun parametru va afisa parte din parametrii de relea:

, ,
2

C : \Docu me nts a nd Settlngs\Ge o rge>lpconflg windows lP Configuration EtherMt ada p t e r Local Area connection : Medi~ Sute . . .
Eth~m~t adapt~ r Wirel,, ~~ N~t"or k

: Media disc o nnected

" " "

Conn ~ct ion

2:

Connection - specifiC DNS Suffix I P Addre" . . . Subn"t Mask D"f~ult GMeway

""

1 92 . 16a . 1 . 70 2SS . 2SS . 2SS . 0 192 . 16a . I . 2 S4

Pentru a vadaa toti parametrii de relea. inCluSiv servert.J1 DNS si gateway-ul impliCit, sa foloseste paramelrul / a 11 :

, ,
10
11

C : \Docu me n ts a nd Settln9s\George~lpco n f i9 fa ll ,q,ndows Con! I gurat I on Host Nam" Asgard Primary Suffix Node Type MI~ed Routing Enab led . 00 WINS Pro~y Enabled . ,,; Su ffix Sear c h L1 ~ t .

"

'"'

"

"" ,,"

Eth~m~t

" " " "


'" " 1!

a dapt e r Loc al ArM Conn ~c tion : M@d i a Stat.. . . . M~dia d i sconn .. ct"d D@.cr ipt i on Bro~ dcom HOx 1 0/ 100 00 - 40 - r4 - CC- CS -41 Physica l IIddress .

Inte9r~ted

Contro ll " r

Ethe r n H

adap t@r Wireless Network ConMction 2 : Co nnection - s p eclflc PNS SuUix lan DescrI p tion . . . "t heros H.!\S006X wireless Nehor ' Phy sic~l Add~ess . . . . . .. : OO-19-"]E-OB-7E-65

IId~pter

CAPITOLUL 8. CONFIGURARI DE RETEA

"
" "

DhCp Enabled . . .
~utoconfiguration

Enabled

,., ,.,
In . 16a . 1 . 70 255 . 255 . 255 . 0 In . 16a.l.254 192 . 16a . l . 254 192 . 16a . l . 254 11 august 2007 16 : 17 : 26 1 2 dUgu s t 2007 16 : 17 : 26

'"

" " "

"

IP ~ddress . Sub net Mask . . Default Gateway DIICP Server . . DNS Servers . . L ~ a,~ Obuined . L~a3e Expires .

Configurarea parametrilor de retaa din lina de comanda in Windows aste mai dificil de realizat decat in Unux. Pentru a putea face acest tuc ru se fotoseste utititarul nets h . Informatii daspre modut de utitizare at acastuia sa pot obtina fotosiflCi parametrut /? :
C: \Docu ments and Sett,ngs\George >net,h /?

8.6.2

Configurari de re1ea i n Windows Vista

Modut de co nfigurare at unei inter/ale de relea in Windows Vista este asemanator cu cat din Windows XP. Oiferenla importanta intre ele este data de modul in care se acceseaza fereastra de configurare a parametrilor. Din meniul Control Panel se alege Network and Internet (figura 8.5).
~

_ .'--_ -............... "_~l!!d~_~~

....

Figura 8.5: Selectarea Network and Internat din Control Panel Apoi se selecteaza Network Sharing Center (Iigura 8.6),

Figura 8.6: Selectarea Network Sharing Center Din noua fereastra se alege Manage Network Connections (figura 8.7), Urmand ca apoi sa fie afisatA 0 listA cu inter/elele de relea disponibile. Prin efectuarea unui click dreapta pe simbolul asociat unei inter/ete \la apArea un meniu contextual asemAnAtor CLJ cel dir"l Windows XP (figura 8.8). Prir"l selectarea optiur"lii Properties din acest mer"liu va Ii afisatA fereastra de configurare a parametrilor ir"lterfelei (figura B.9). Per"ltrLJ a configura adresa tP a ir"lter/elei, gatewaY-LJt si serverul ONS, se atege itemLJt
Imerne/ Pr%col VersiOn 4.

Fereastra de configurare a parametrilor este identicA celei dir"l Windows XP {figura 8.10}. .1

242

lNTRODU CERE iN SISTEME DE OPER ARE

,,.,"". ........... " ,


Figura 8.7: Selectarea Manage Network Connections

- Figura 8.8: Maniul contextual corespunzator unei interlata de ralaa

,-"""""""'-...... ... -""........ -.......---~"


,~

u..".

L _

0<

II c-

Figura 8.9: Proprietalile unei interfe!e de relea

in cawl in care aSle aleasi'i op~unea Obtain an IP address automatically, adresa IP a interfetei va Ii configurata prin DHCP. Pentru a spec ifica manual paramelrij inlerfetei
trebuie aleasa opliunea Use Ihe following IP address.

alenal

CAPITOLUL 8. CO NFJGURARJ DE RETEA

,<3

_.j

... ..
~

. . -.- . ..
~

_--_ _--.,-

, . ---,~ ~

. ...
....
~

.... ..
,

-...

~ ---.~

""' ~-,.. ~ ~

...-..
'" !!

Figu ra B. l 0: Configurarea pa rametrilor de relea

8.6.3 Configura rea PPPoE in Linux


PPP (Point to Point Protocol) este un protocol utilizat pentru comunicalia pu nctlapunct (comun icatia dintre douA naduri conectate direct intre ele). PPP permite real izarea de legaturi peste conexiuni l iz ice seria le, linii te lefonice. conexiuni radio sau l ibra optica. Ointre impleme ntAri le PPP, cele mai uzuale sunt cele folosite de co nex iunile de tip dialup si PPPoE. PPPoE (PPP over Ethernet) este un protoco l care permite incapsularea (includerea) cadrelor PPP in cadre Ethernet, cel mai frecvent pentru a putea fi trimise printro placA de relea obi~nuita (ce folose~te cablu UTP). PPPoE este folosrt uzual i n cadrul serviciilor de tip ADSl sau Internet prin cablu TV. Daca legatura fizica dintre calculator si madem se rea lizeaza prin cablu UTP, atunei este loarte probabil ca legatura logicl'i dintre calculator si modem sil. foloseascl'i PPPoE. Pentru a pulea sa acceseze Inlernelul, utilizatorul Irebuie mai inlai sa stabileasca 0 conex iune PPP cu modemul. Slabilirea unei conexiuni PPP necesita, de cele mai mule ori, autentifica rea utilizalorului. Aceasta se realizeazl'i pe baza unui nume de utilizalor ~i a unei parole furn izate de cl'ilre ISP (Internet Service Provider - furnizor ul de se rvicii de Internet). Penlru configurarea parametrilor conexiunii PPP, inclusiv a parametrilor necesari autentificil.rii, cea mai u$oarl'i metodA este folosi rea utilitarului pppoRc:on~ . Instalarea acestuia depinde de instalarea tuturor pachetelor necesare func!ionarii protocolului PPP. astle l incat, pe 0 distributie ce lolose~te pachete cum este Ubuntu sau Oebian, adata cu pppoRc:onf se var instala ~i toate dependintele sale. Pe de alta parte, adata configurata conexiunea PPP cu ajutorul pppoeconl, acesta se va acupa de rea lizarea tuturor fis iereior de configura,,~, inclusiv de adAl.J9area unui script care la pornirea sistemului de opera re va rea li za conectarea prin PPP. Pentru configurarea PPPoE sunt necesare urmatoarele !isiere (ele sunt create sau actualizate automat de caIre ppp oR c on~) :
" 1

244
fete/network/i nt erfaces

INTRODUCERE iN SISTEME DE OPEAARE

/etc/ ppp/ pap- secrets


/etc/ ppp/peers/ ds lprovi d er

Ukimul dinlre liSiere poate avea orice nume si sa poale alia in orice loe, lnsA trebuie specificat in cadrul fiS ieru lui / etcl network / i nt erfaces .
Un exemp lu de lete/ n e t work/ i nt e r f aces eSle urmatorul:
f The loopback network Inter face
2 8Ut O 10

!face 10 inet loopb a ck


p rima r y netw ork interhce allo,,-hotp lug <>thO 1f .. c~ HhO ine t manual
Th~


10 " 12

au to dd- p r ov i d"r Ihee as i- provider i net ppp

pre - up !sbi n!lfconlig ethO up f line mai ntai ned by pppoecont provide r a. l -pr ov i d",r
auto ethO

" ,.

Autentificarea conexiunii PPP se realizeazA folosind protoooale specializale. Un exemplu de lisier /etc/ppp/pap - secrets . in care sunt trecute informatiile necesare autentific1'lrii, este urmatorul:

,
,

( ... 1
f

INBOUND

conn e ction ~

5
7
6


10

f Every r e gular uS e r can letc/pa s swd hostnam<l

u~e

PPP a nd h a; to u; e

pa ~" " ord "

fr om

" " "

" "
"

"

f User lOs t h at cannot U$e PPP at a ll. C h ec~ your /etc/passwd a nd add a ny f other accounts that ~hould not be ab l e to use pppd' '1uest h ost n a me master h o.t n a me h oatM me root support ho.tname , t at ; ho,tname

f OUTBOUND conne ction ; f Here you .houl d add your u ; ecid pas.wo rd to connect t o your p rOViders via f PAP . The. means that t he pa ss ,,"ord i s to be u~"d for ANY hos t you conMct f to . Thus you do not have to ,,"orry about t h e foreign machi n e n a me. Ju.t f rep l ace password with your pass,,"ord . f It you h ave different p r ov i ders ~ith dif fer en t passwords then you better f remove t h e following line . f password

"
~ ~ ~

19

20

21 22

""
l'

""

" ""

" student " "u ,orul ., ,, "

CAPITOLUL 8. CONF1GURARl DE RETEA

,<5

1 n fisierul !etc !pp p !peers!dslpr ovider sunt trec ute informatii legate de pa rametrii conexiunii PPP, altii decat cei de autentilicare:

" " " " "

, , , ,

f Min i ma li, t ic default option ,

file fo r DSL/PPPoE co nne ct io n ,

Mipddault dehultroute r epla cede hU l t route hide - p .... word noauth persist fmtu 14 92 fpersist fhol doff pi u(11J'1 rp - pppoe . o ethO u , e r st ude nt ' usepeerdns

'"

Pentru a activa 0 conexiune PPP se foloseste comancla p an. Ea este echiva lentA cu paramelru l up al comenzi i it"cont"iq. Pentru a dezactiva 0 conexiune PPP se folose~le comanda poff. eCh ivalentA cu pa rametrul down al comenzii i f co nfiq. Un amAnunt important de precizat este cA, pentru a functiona prin PPPoE , 0 interiatil de retea Ethernet nu neces~A co nfigurarea unei adrese IP. Inter/ala de retea Ethernet este folos itA indirect penlru coneclarea la Internet: prin ea sunt trimise datele ciltre modemm acesta asigurancl mai departe legatura ca.tre Internet. In acest caz ad resa IP este asoc iata cu 0 inler/ala virtuala numita pppO:
root@asga~d : ~

ethO

/home/george ' I fcoMlg Link encap : Etherne t Hwaddr OO:H : Dl : 38 : 13 : A6 ine t6 addr : feSO :: 240 : f4ff : f~bb : 1 70 1 /64 Scope : Link

, "
,0

I . . 1
L in~

encap : Lo cal Loopb~c x i n et .oddr : I27 . 0 . 0 . 1 Md5 X: 255 .0.0 . 0

1.. I
Li nk encap , ~olnt - to - ~olnt Protocol inet .oddr : I92 . 168 . 10 . 3 P-t-P:l0.0.0.1

pppO

" " " " " "

llas~ : 255 . 255 . 255 . 255

Metric,) RX p ac ~ets : l16 errors : O dropped:O overruns : O fr~me : O TX p ac ~et s : 180 errors : O dropped : O overruns : O carrier : O coll i .ions : O txqu~uel~n : 3 RX byte, : 105255 1102 . 7 KiB) TX bytes : 13991 113 . 6 KiB)
P01NTO~OINT

UP

RUNNING NOARP MULTICAST

MTU : 1492

Dup1'i cum se poate observa, interfata et h O nu are configuratA adresa IP. In sch imb inter/ata pp p O, asoc iat1'i conexiunii PPP. este cea care lost configurata cu adresa IP
192. 16 B. 10 . 3 .

Cuvinle cheie retea de caiculatoare


LAN, MAN, WAN

adresa MAC Ethernet UTP

protocolul IP: ad resa IP

246

INTRODU CERE iN SISTEME DE OPERARE

ruler unicast, multicast, broadcast adresa de (sub)relea delault gateway DNS switch Access Point DHCP oonfigurare temporarAipermanenlA; configurare staticaldinamica ilconlig
Intrebarl

letc/network/interfaces letc/resalv.con! fetcJhosts route DHep dhclient ping traceroute ipconfig PPPoE

1. Un utilizator incearea sa lesleze conectivitalea caire cs . pub . ro ell ajulorul


comenzi i p inq: "ping os.pub.ro" si testul reu~este. TOlusi, dacA utilizalorul tasteaza in bara de adrese a browser-ulu; "os.pub.ro", pagina web respecliva nu

poate Ii accesala. Care poate Ii motivul penlru care cele dOllA teste au rezuilate
dilerite?

o sarverul web de la adresa cs . pub . r o eSla opril

o utilizarea comenzii p inq aSIa

gre~ilA

o o o
o

comanda ping a oprit serverul web utilitarul ping nu of era informalii despre conexiunea cu cs . pub . ro

2. 5e poale configura adresa 10.138.257.134 pe imerfala de rel ea ethO? da, oricand da, doar daca eSle singura interfala a sistemului da, doar in situ alia in care este configurat un server DNS

0,"

3. D<'I.nduse 0 statie care are configurata adresa IP 1 72 . 1 6 . 1 50 . 200 ~i masca de relea 255 . 255 . 255, O. care esle adresa relelei din care lace parle statia?
0 17 2.0 . 0 . 0 01 12.16 . 0 . 0 01 '12 .1 6 . 150 . 0 01 72 .1 6.150 . 200

4. Desi legatura la Internet lunctiona, utilizatoru l Dorel a dorit sa testeze coneclivilatea cu gatewayul cu ajutorul comenzii ping - f 1 92. 1 68. 1 0.1. atanal

CAPITOLUL 8. CONFIGURARI DE RETEA

247

La scurt limp al a lost contactal da administratorul de relaa care Ia rugat sli lsi veriliee ca lculatorul impotriva virus ilor. Acest lucru sa petrecut deoarece:

o o

Dorel loloseste Unux si nu Windows. la lei ca majoritatea ce lorlal!i utilizatorL Dorel nu a repornit calculatoru l de mult timp. Dorel a generat foarte mull trafic in limp scurt, lucru specifie Dorel nu
ob i snu ie~te
viru~ilor.

o o o o o o

sa cripteze emailurile trimise.

5. Ro lul serviciului ONS esle de a: asocia nume de domenii cu adrese MAC asocia nume de domenii cu adrese IP asocia adrese IP eu adrese MAC asocia adresa IP eu numele ulili zalorului

6. in lisierul fet e /net wor k I inte r fa ce s se gase~te urmaloarea linie:


i f a ce ethO cne t dhcp

in linia de comandli este data urmatoarea comanda:


ifconfig ethO 192 . 16B.124 .1 S0

dupa care statia eSle repornita. Care va Ii adresa IP a interfetei e t hO imediat dupli repornirea slaliei?

o o
o o

192 . 168 . 124 . 150, penlru ea a lost ullima adresa conligurata de root . 192 . 168 . 124 . 150 daca aeeasta esle adresa furnizala staliei de serverul

OHCP interfata nu va avea nieio adresa IP pentru ell. sa ereat un conflict prin eonligurarea adresei IP in douli moduri interlala nu va avea nieio adresli IP pentru eli nu a lost dat parametrul netmas k eomenzii ifc:onfiq

7. Contigurarile permanente se realizeaza eu ajutorul lisierului fete/ networ k / ip. Conligurarile temporare isi pierd efectul 0 data eu repornirea sistemului.

o a a a

adevarat. tats adevarat. adevarat lals. lals lals. adevarat

8. Masea de retea esle utilizata pentru a idenlifica adresa re!elei din eadrul unei
adrese IP. Pentru a putea aecesa serverele din Internel este neeesara conligurarea unui server ONS.

a a

adevarat. fals adevarat. adevarat

248
o fals, fals
o fals, adev<'lrat

INTRODU CERE iN SISTEME DE OPERARE

9_ Cu ajutorul comenzii trace route sa poate testa:


o
li~!imea

de banda a unei conexiuni

o Galea dintre surs.:! si destinalie o FUI"IC\ionarea serverului web de pe stalia destina!Hl o Exislen!a unui ruler inlre sursa
~i

destina!ie

10. DacA un sarver DNS nu aSia specificat , care dintre urmatoarele comenzi aSia probabil sa functioneze:

Oping www. qooqle . ro Oping cs . pub . ro Oping loca l host Oping dns . l ocaldomain . ro

C JPYnghted matanal

Capitolul9 Servicii de retea


When I tooll office, only high energy physicists had ever
hea.rd of what is called the World Wide Web... , No w

even my cal has its own page


Bill Clinton, 1996

Ce sa invala din aces! capitol?


Com:eptul de protocol 5i sliva de protocoale

Modelul cl ient-server

Folosirea porturi lor


Executia comenzilor Ie distanla: tel net, ssh, wget, curl Func!ionarea serviciului de POsta electronica (email) Func!ionarea serviciului de web
Modalitiiti de partajare a fisiere lor: 5MB, FTP

9.1
9.1.1

Concepte specifice aplicafiilor de retea


Sliva TCPIIP

Sistemele de cak::ul au inceput sa fie dezvo~ate odat1i eu slarsitul celui de at doilea razboi mondial. eu taale aceslea, pro~ematica asigur(lrii comunica!iei inlre sistema allate in localii la mare distan!a a lost formu lala abia spre inceputul ani lor 70, de catre US DoD (US Department of Defense - Ministerul Aparari i Nalionale al Stateklr Unite), Proieclul US 000 a creat si un cad ru de standard izare penlru soluliile de comu nicalie. denumil sliva de protocoale TCPIIP (Transmission Control Protocol/Internet Protocol),
Un prolo col esle un set de reguli care guverneaza modul in care doua d ispozilive sctlimbil inlormalie JnlT,o relea si comun icaliei. , . asigurA coerenla , ,

'"

.1

250

INTRODUCERE iN SISTEME DE OPERARE

o sliva de protocoale reprezint;\ un set de protocoale cs comunic;\ intre ele prin fllnC!ii (nurnile prim itive) clar delinite.

o sliva de protocoale estB in ge rll!ral privitA ca 0 succBsiunB de niveluri. Fiscale dintrs

niveluri este deseris de:


un set de tuncli; pI! ca rl! Ie jndepline~te;

un set de parametri pI! care ii asleepta de la nivelul inferior; servici ile pe ca re Ie olerA nivelului imediat superior. Protocoalele dintr-o sliva nu VOl pulea comunica intre ele direct decal daca 51! ana pe niveluri adjacente.
Deserierea unei solutii de comuniCare prin prisma une; stive de protocoale olerA in primul rand avantajul lIexibiliUitii procesului de standardizare. AsUel, schimbarea {sau simpla optimizare} ur'iui protocol din stiv~ poale Ii M.cut~ l~rA a solicita modihcAri in restul protocoalelor. inceputurile retelelor de date au lost marcate de existen!a mai multor protocoale de comunicatie. dezvoltate in paralel, de vel'ldori dileritL Pro~ema consta in laptul cA, desi douA protocoale, de la doi vendori dileri!i, descriau amil.ndouA foarte bine specificatiile propriilor dispoziUve, nu puteau sA cornunice unul cu cel<1lalt. Astlel, pentru a lace posibila intercomunicarea i ntre echipamentele de re!ea prod use de vendori dileri!i. sa introdus conceptul de standardizare a unui protocol . Odata ce un protocol aste acceptal ca standard, el devine dintr-un set de reg uli, un set cornun de reguli , liind recunoscut din punct de vedere procedural si functional de to\i vendorii. Pentru a descrie prelucrArile e/ectuate asupra datelor trirnise de la utilizator spre rnediul de transmisie, stiva TCPIIP identificA patru niveluri, prezantata in figura 9.1: Apll ca t,:i e, T ran spor t , Re t,: ea (sau I nt erne t ) si Ac ces 1 01 me d i u. Utilizator

Aplicatie Transport Retea

Acces la mediu

Mediu l iziC Figura 9.1: Stiva TCPIIP

C JPYnghted matanal

CAPITOLUL 9. SERVI CII DE RETEA

251

Nivelul aplica! ie Nivelul apli calie este eel mai apropiat de utilizator si olera acestuia modalitatea de accesare a serv iciului de relea. Un serviciu de retea poate Ii implemental prin unul sau mai mulle protocoale de nivel aplicalie. Prolocoalele de la acest nivel vor coniine reguli releriloare la interac!iunea cu ulilizalorul, lormatarea si reprezenlarea datelor. pracum si la controlul dialogului intre componente le serviciului. in lunc!ie de serviciu l oleril, protocoalele de nivel aplicatie pot Ii grupate in: serv iCiul de transler at lisierelor, ce poate Ii implementat lolosirod FTP(File Transfer Protocol). HTTP (HyperText Transfer Protocol) etc. serv iciul de p~ta electronica , ce se bazeaza pe urmatoare~ protocoale: SMTP (Simple Mail Trans/er Protocol), POPJ (Post Office ProtocoI3), IMAP (Internet Mail Access Protooof) serv iciul de executarea comenzilor la distanta: telnet, aah. rlogin alte protocoale: DNS (Domain Name System). DHCP (Dynamic Host Configuration Protocol), SNMP (Simple Network Management Protooof)

Nivetul transport Nivetul tran sport esle responsabil cu probleme legate de siguranta, conlrol al fluxului ~i corecHe de erori. Tot la nivelul transport este realiza1a multiplexarea comunicaliai prin specilicarea p orturllor sursa ~i de st lnalle. Cele mai imporlanle prolocoale de nivel transport sunt TCP (Transmission Control Protocol) si UDP (User Datagram Protocol). Te p este un protocol orlentat conex lune, adica inainte de a !rimile datele va negocia pararnetrii de comunicatie intre entitatile participante la cornu nicatie. iar apoi pe tot parcursul va asigura reordo narea pachelelor ajunse In ordine gre~ila la destina!ie, sau retransmisia celor pierdute. Pentru a intelege mai bine notiunea de protocol orientat pe conexiune, se poate lace 0 analogie cu transmi1erea dalelor prin reteaua telefon icli. In momentul efectulirii unei convorbiri te lelonice, sa stabileste intre sursa si destinatie 0 conexiune dadicatli prin retea, Inainte de Incaparea comunicArii. Deasamanea acast axemplu re levA /aptul cA inlr-un protocol orientat pe conexiune, destina!ia este mereu contaclatA lnainte de inceperea transm isiei propriuzise (In analogia cu soneria tele/onului). UDP esle un protoco l neorlentat con exlu ne. Astfel, UDP nu se va preocupa de initierea sau terminarea conexiunii, de pierderea pachetelor sau doar a succesiunii acestora. UDP va incape transmis ia lArA a verilica mAcar dacA destina!ia linala va accepta respectivul tralie. Desi 95% din traficullnlernet folose~te prolocolul Tep. penlru retelele locale numeroase servicii se bazeazA pe UDP: ONS, SNMP. TFTP. Motivul principal it reprezinta gradul radus al erorilor in rete lele locala (spre deosebire de WAN). UOP asle mai simplu de implementat, dar si mai eficient decal TCP: antelul (informalia suplimentara adaugata de liecare protocol) UDP esle doar de 8 octeli, la!A de 20 de octe li cal are TCP.

"-,, .,_'.1

252 Nivelul felea

lNTRODU CERE iN SISTEME DE OPEAARE

Nivelul re!ea (Internet) S8 ocup!!. cu transmilerea pachelelor de la 0 surs<'i la 0 dastina!ie


prec izata, indiferent ln ce relea se alia aeeasta. Alegerea ca ii pachetul ui prin rele lele intermediare, comutarea lui dintr-Q 0 relea in alta si optimizarea traseelof alase sunt

responsabilitatea protocolului de relea.

Nivelul acces Ie mediu Nivelul ecces Ie mediu se ocupa cu toale problemele legate de transmiterea electiva a unui pachel pe 0 legatura !izlca, incluzand ~i aspecleie legale de tehnologii ~i de medii

de transm isie.

9.1.2

Implementarea pa'1ialli a stivei TCPIIP

Dispozitivele de interconeclare asigurA transferul eM mai rapid a1dale to r In general pe


baza unar algorilmi de decizi9. Un dispozitiv de interconectare poate in acelasi timp asigura convers ia intre doua tipuri de relea (doua protocoale) diferile. Criler iul principa l de evaluare a eficienle i unui dispoziliv de interconeelare este numarul d e pachete comutate pe secunda. in funclie de complexitatea deciziei de comutare numarul de pachete pre lucrate scade. Pe ntru eehipamentete de relea ce fotosesc un numar redus de cr iterii penlfu decizie, se renunla la implementarea niveluri lor superioare din stiva de protocoate TePIIP. o prima c lasa de dispozitive de interconectare i~i bazeaza deeiziite de comutare doar pe intorma!iite protocoatelor de nivel acces la mediu. in aceasta categorie intra switch urile, dar si AP-urile (access point). A doua clasa de dispozitive va anal iza atat informatiile de nivel acces la mecfiu, cat ~i pe cele de nive l relea, procesu l de deeizie liind mai complex, dar si mai lenl deeM In primul caz. Cel mai important dispozitiv de interconeetare de nivel retea eSle ruterul. Oispozitivele de inlerconectare pol implementa doar 0 parle a stivei de protocoale. Spre exemplu un rute r nu trebuie sa inteleaga con!inulul unui pachel de dale pentru a pulea lua de<:izia de trimitere pe calea opt ima. Astfel , ruterul are nevoie doar de informa!iile de nivel acces la mediu ~i nive l re!ea si va implementa doar primele doua niveluri ale stivei TCPIIP.

Figura 9.2: Comu nicatia intre doua stalii allale in relele diferite Considerand 0 topolog ie simpla, prezetata in fig ura 9.2, in care un cl ient de web allat pe statia B acceseaza un server allat pe statia A. Cele douA statii se all1\ in retele loca le diferite conectate printr-un ruler. Re!eua din sHi.nga esle 0 re!ea Ethernet, in vreme ce in reteua din dreapta AP -ul (acces point) este conectat prin Ethern et cu Merul R si oler1\ conectivitate lara lir pentru sta!ia B. __ ,.,.,
~

a'enal

CAPITOLUL 9_ SERVICII DE RETEA

253

Modelul de comunicatie peate Ii descris generic folosind stiva de protocoale TCPIIP precum in ligura 9.3.
Utili,ato, Aplicali" It"noport

'r-"=,
Aplicali"

Utlli,atof

r-------,
r-------,

1nn'p"rt

1I"lea
,

cc~.

'3m.. ~i

f'-cC t. I .. m.. ~i

, rcc... '3 me<li~ , ' ,

C C ... I" me<!i

"

Figura 9.3: Descrierea generica a comunica!iei Pentru topo logia considerata in ligura 9.2. la nivelul aplicalie se loloseste serviciul de web bazat pe prolocolul HTTP. La nivalul Iransport si nivelul relea se Iolosesle TCP, respectiv IP. Spre deosebire de nivalul aplicalie, unde pulem avea 0 larg<'\ diversilate de protocoale lolosite, la nivelurile transport ~i relea peste 95% din trahc-ul in Inlernet esle traliC TCPIIP. Pentru nivelul acces la mediu in retelele locale exist1i dou1l. lehnologii dominante: Ethernet (IEEE 802.3) ~i WLAN (Wireless LAN. IEEE 802.11). Conectivrtatea inlre ce le doua slandarde poale Ii realizata fie de ruler (cu 0 interfata 802.11 si una Ethernel), lie de un AP (aCCBs point). Un AP nu are nevoie sa interpreteze inlormatia aflata la nivelul (elea pentru a rea liza comutarea intre reteaua Ethernet si reteaua lara lir. Cele doua dispozitive de interconectare (rute rul si AP-ul) au lost ligurate ca avAnd cAte o sliva par!iala de protocoale pe liecare dintre inlerletele de relea. Sliva inlerfetei de intrare va fi Iolos ila penlru a lua deeizia de comutare a pachetului (alegerea inlerle!ei de iesire), un eehipament de interconectare putAnd avea mai mu~ de dou;li interfete. Dupa determinarea interfelei de ie~ire se va foklsi Sliva acesteia (parametrii spedici acestei intertete) pentru eventuala relormatare a pachetului. la\ia B, va soHcita lunelii din Pentru exemplu l considerat, lIu xul de date intre sta\ia A $i S mai mulle prolocoa le, acestea Hind prezenlate i n ligura 9.4.
Util i,ato,

'r-=:-, ,TIe
Uti lizato,

Ethernet

, Et~e

'ffi' " I I'


, ,p

r-------,
'P

Rut .. '

'r------- ,
'Et ~ eret

t h nlet , W L A N

, ,

, ,

- -'

Figura 9.4: Oescrierea cornunicaliei . intre doua statii . anale in retele dilerite

matanal

254

INTRODU CERE iN SISTEME DE OPERARE

9.1.3

Modelul client-server

Pentru implemenlarea accesului la serviciile de ralea , art1iteelura 1010siiA aSle bazalA pe modelul cli entsenltlr. Acesta se bazeazA pe delinirea a douA componente: cea de server si cea de client. Un server esle un program (sau prin extindere 0 slalie) ce permite prim irea de cereri de la aile entilA!i din relea , oferind acestora un serviciu.

Un client esle un program ce olen! meeanismul de interogare eventual de formatare a rihpunsului primil de la acesta.

, unui server si

Un exemplu de model client server esle serviCiul de web. Acest serviciu presupune rularea unui server HIT? (ex: Apache , Microsoft 115 etc). Ap lica!ia c lient poate ti oriee navigator (broswer), Chiar pentru exempl ul serviciului de web se poate observa cA aplicatia cli ent inlegreaza in realitate mai multe apl icatii client: pentru HIT?, dar si penlru FTP. TFTP. Modelul client-server olera central izarea serv iciilor ~i a lost in primul rand promovat ca o metodA de reducere a costurilor totale a unui retele. Ca urmare a scaderii costului resurselor hardware, principala motivape a ce ntralizArii serviCiilor adevenit monitorizarea si securiz area relelei.
Cl ient 1

,
SIa!ia 2

St~ !la

Cl ient 2 Server Cl ient 3

, , , ,
Sta\ia 3

Cl ient 4

Figura 9.S: Modelul cl ient-senltlr si modelul peer-to-peer Noliun ea de server s-a extins si pentru sistemele de calcul. speeiticatiile hardware ale unui server depinzand de serviCiul pe care 11 indeplineste. Spre exemplu, un senltlr de stoeare va avea un proeesor relativ modes!, dar un spaliu impres iOl1ant de stoeare. preeum si mecanisme de reclundan(a. a discurilor. Modeluf pun cl-ta-p uncl (peer to peer) este de lapt un model client-server ascuns, asa cum se poate vedea 5i din ligura 9.5. Fieeare entitate ce participa la comuniCatie poate juca alii! rol de client ciit si ro l de server. Spre deosebire de mode lui client-server, modelul pur.ct-Ia-p unct este un model descentralizat. Mulle din programele de parlajare de l isiere utilizeazA acest model penlru a nu lolosi un server care sA intermeclieze comunicatia . Un model client-server de partajare a fis ierelor atanal

CAPITOLUL 9. SERVI CII DE RETEA

255

intre clienti presupune ca orice pachet schimbat i ntre cei dOi clienti sa tmaca prin server, ceea ce aduce aliU 0 latenla, cat si 0 incarcare a rete lei si a serveruluL Principalul dezavantaj al cenlra lizArii serv iciilor este laptul ca serverul va Ii un punct cr~ic in relea: in momentul in care serverul nu lunclioneaza, serviciul eSle intrerupt. intro relea punctlapunct acest dezavantaj este evrtat.

9.1.4

Porlurl

in scopul reducerii costurilor unei retele, mai multe servicii pot Ii olerite de aceea~i ma~ i na. Spre exemplu, pentru 0 relea locala, serverele de DHCP, ~i DNS pol Ii integrate pe 0 singura statie, deoarece resursele solicilate de tiecare serviciu sunt relaliv recluse. Cum ~a putea totusi un astlel de server sa dileren!ieze intre cererile de nume (cereri DNS) $i cele de aklcare de adrese IP (cereri DHCP)?
rezol~are

de

Ambe le protocoale lolosesc la nivelul transport UDP, deci nu vom putea IlIa decizia pe baza lipul prolocolului de niv~ transport. Aldt UDP, eM ~i TCP lolosesc un mecanism de identiticare a serviciilor (a prolocolului de nivel aplicalie) denumil port. Porlul este un numar reprezentat pe 16 brti, ce identilica la nivelul transport (in intorma!~ adaugata de protocoalela TCP sau UDP) un serviciu specific. Mecanismul da porturi per mite atAt olerirea simultanA a mai mullor servicii, cAl ~i dilerenlierea intre cereri de raspuns venite din conexiun i dilerite, adica lolosirea mai mullor servicii simultan. Astlel, in antetul de nivel transporl ~om preciza aldt un pori destinatie, ce identificd serviciul apelat. cat si un port sursa, pe care este a~teptat raspunsul. 0 conexiune va Ii descrisa prin precizarea parametrilor de nive l relea $i de nivellransport: adresa IP destinatie, adresa IP sursa, pori destinalie si pori surd. Daca de pe aceeasi slalie sunt laIlsate doua sesiuni de SSH caire acelasi server, se creeaza doua conaxiuni d~erite a~a.nd acelea~i adrese IP (sursa $i destina!ia), acela$i port destinatie, dar porlul surd dilerit. Porlurile sunt numere rep rezenlale pe 16 biti, valori le definite pentru porluri liind cuprinse in intervalul (1, 65535]. Porturil e pana la 1023 sunt rezervate pentru cele mai importanle protocoale ale Intarnetului, liind denumila porturi razervata (known porls). Porlurile rezervale sunl asociale unui protocol pe care serverul il 1010se~le in olerirea unui serviciu . RezumAnd : fieeara servieiu de relaa esta olerit lolosind un protocol de nival aplica~a, fiecare protocol are la randul sau asocial un port, i n unele cazuri doua sau mai mulle. in labelul 9.1 sunl prezenlate cAleva dinlre prolocoalele imporlanle $i porlurile Iolosile. Putem observa spre exemplu cA serviciul de FTP are rezervale doua porturi: 21 (penlru stabilirea conexiunii) $i 20 (pentru Iranslerul electiv de fi~iere ) . Penllu a delerm ina serviciile olerite pe statia locala va Irebui sa al~am lisla pOllurilor deschise (aflate in stare LI SlEN). Pentru aceasla pulem lolosi ulililallJl n.. tsat (vezi sec)iu nea 10.3.1):

256

INTRODU CERE iN SISTEME DE OPEAARE

Tabelul 9. 1: Asoc ieri

cateva servicii raspfmdite

, , , ,

<c, <C, <C, <C, <C, <C,

roo t @ kiwi-f n et ,tat -- tep -- li5 t ~ning Ac t iv@ Int ~ r n H conn .. ction s (on ly se r v .. r ,) Proto Recv-O Send - O Loc al Address 0 0 ', sunrpc 0 0 ' www
0 0 0 0 0 : .. ebc~che 0 ; 6Uth 0 . : ftp 0 . : "mtp

Fo:ign Address

. . . ,. , , . .
,
'
; ; ;

State
LI STU

Ll STI:'u
L l STEil L I STEll

LI STtN
L l STEil

Din rezullalul come nzii de rnai sus se poate deduce ca portul lip (adica portul 21) este deschis. Akfel SPU$, exista. 0 aphcatie ce foloseste aces! port penlru a accepta conexiuni.
i n general, servieii le sun! rulate porturile rezervate, dar prin configurarea senlic iilor putem schimba porlul pe care se vor accepta conex iunile. Pentru a obtine mai multe

pe

informalii despre aplk:a\ia ee ruleaza pe portul 21 pulem lolosi cl ienlul de t e1 ne t ce va deschide 0 conexiune pe aces! port:
2
~ raz"~I'l@ ki wi : -$ t e l ne t ki~1 . C ~ Trying 141 . 85 . 99 . 5 ... Connect e d to kiwi . c" . pub . ro . E ~ C~p~ ch~ract e r i~ . p u b . ro

21

. ' j '.
~ ec\'1ce .

220

loI~lco m e

to Ki wi FIP

vs FTPd 2.0 . 3 i s in

~ ecV1ce

Daca oprim serviciul de FTP ~i re<:onliguram serverul de SSH sa primeasca ce reri pe portul 21 . rezultatul comenzii te l net va Ii:
,a.va n @ Ki wi: _$ te l net k l wl . cs . pub . ro 21

2 Tryinq
,

H 1. 85 . ~~ . 5 .

Connected to Uwi.cs.p ub . ro . escape character is " j ' . SSH - 2 . 0-OpenSS H_ 3 . 8 . lpl Deb hn - S . s~rg" . 4

Din motive de securitate serverele pot Ii conligurate sa nu la versiunea serviciului. sau sa ali~ze informalii lalse.

ali~eze

inlorma!ii releritoare

In cazu l in care se incearca ini!ierea unei sesiuni de telnet pe un port ce nu esle deschis va Ii intors mesajul de conexiune reluzata:

CAPITOlUl 9. SERV1CU DE RETEA


r~zv~ n H i w i: -$ t~ln~t

251

ki wi . cs . pub .r o 29

> Try i n g 14 1 .85.99 , 5 ,.


, telMt: Una b le to connect to remote nos t : Connection re fu se d

9.2

Execulia comenzilor la distanla

Serviciul de execu!ie al comenz ilor la dislanla (remote connection) esle oleril de mai mulle prOlocoale, cele mai imporianie fiind: lelnel, rlogin, RSH, SSH. Protocoalele lelnel, riogin si RS H se bazeaza pe realizarea unei conexiuni necriplale (in lexl clar). Spre deosebire de aceslea, prOlocolul SSH stabileste 0 conex iune criplalA, conexiune lolosita aldl pentru lansarea comenz ilor la distantil, cat si penlru transferul de lisiere.

9.2.1 Telnet
1 n practica. granila dinlre serviciu de retea si protocol de nivel aplicatie este. deseori, una greu de evidenliat. Astlel, putem spune cil serviciul de e~ecu!ie al comenz ilor la distanla eSle oleril de protocolul lalnet, dar la lei de corect se poate vorbi de serviciul te lnet. Prin serviciul te lnet se intelege posibititatea execuliei comenzi lor la distanta peste o conexiune nesigura (necriptata). Pe langa denumirea unui protocol de nive l aplica!ie, 5i a unui serviciu de relea , telnet este 5i denumirea aplicatiei ce implementeaza protocolul (a procesului care din punctul de vedere al sistemului de operare olera serviciul de retea). Ap licatia tel net este 0 aplicatie clientserver: procesul server se numesle telenetd, iar clienlul se numeste telnet. Serverul de lelne\ este responsabil eu acceptarea sesiunilor initiate de elien!i. 0 sesiune de lelnet pune la dispozi!ia aplica!iei client (dupa autentifiCare) un interpretor de eomenzi ce ruleaza pe server. in mod implicit, nu exista dileren!e intre res ursele disponibile unui utilizator in urma rularii unui interpretor de comenzi loca l, si resu rsele accesibile printro sesiune de tel net de catre acela5i utilizator.
roo ki @@app i ,,-$
t .. in .. t

141 . 8S . 99 . 5

> Tryi n g 141 .85.99 , 5 ..


Co nn ected to 14 1, 85.99 . 5.

5
6

Esc3pe c h3ucte r Is " I ' .


~elM"e 7 (Moonshine) KerMl 2.6.21 - 1.3194 . !c7 o n an 1 686 l og i n : maM ger

Fedora

maMge~@ ki wi-$

1 n exemplul de mai sus ulilizatorul r ooki e initiazii 0 sesiune telnet ciitre serverul cu adresa 141.85.99.5. Dupa afisarea mesajelor de int<'!mpinare (denumite MotD Message of the Day) este afisat promp\ul de login. Este lolosit numele de utilizator manager 5i parola asociata aceslui conI. Dupii autentificare va aparea prompt ul interpretoru lui de comenzi.

258

lNTRODU CERE iN SISTEME DE OPEAARE

Pro\ocolul telnet a fost standardizat pentru a permite clientului de te lnat initierea de conexiun i la distanta ~i caIre alte servere. Majoritatea implemenlarilor serverelor perm~

ini!ierea unei conexiuni prin cl ientul de talnet (eu unele exceptii notabile, precum clientii RDS. carora Ie asle blocat portul25 al serviciului SMTP)_
Pentru a inilia 0 conex iune pe serverul de HITP ce ruleaza pe statia eu adresa IP 14 1.85.99.5 trebu ie ru lala aplicatia client telnet eu precizarea deslina!iei ~j a porlului pe care ruleaza serviciu (implicit 80) Dupa stabilirea sesiunii se pot executa inclusiv comenzi ce respecla sinlaxa prolocolului HTTP. spre exemptu pentru a obline 0 pagina se foloseste ccmanda HTTP GET, urmat~ de pagina ee se doreste afisatii.
2
l

ruva n @kiwi : -S tel ne t 14 1. 85. 99 . 5 80 T<y l ng 127 .0.0.1 . Co nnecte d to l oca lhost . l o c al d omain . Escape chara ct e r i ~ ' A) ' . GE T / - ra z v a n /t e ;t . html HTTP/l.O
HTT P/l . 1 200 OK OH~ : h i. 0 3 Nov 2008 19 : 57: 10 GMT SHv@ r: Apach ,,/ 1. 3 . 33 ( D@ b ian GNU/L inux) PHP /4 . 3 . 10 - 16 L~st - Mod if i e d : Fr i . 03 Nov 200S 19 : 56 : 40 GM T ET a g' " 2S3095 - H - 454 b gefS"

7

10
11

12 " ,.
,!

Accept - Ra ng "" : b yt es Co n te n t - Lengt h; 68 Conn ecti.o n, c l ose Co ntent - Ty pe : t e ~ t /htmi

c ha rset - i so- 88S9 - 1

" 1!

"

<br l> p agiM d " t "~ t p e n t ru c ur s u l USO - s e rvi<:ii de Re t M <br I> Connectio n <: I o""d b y fore i gn h ost .

Este important de retinut cii pentru terminarea unei sesiuni de telnet se poate fo losi combinatia CRTL +) .

9.2.2

SSH

SSH (Secure Shelf) este un protocol de nivel aplicatie, lolosit in re!ele de calculatoare pentru as~urarea unui canal securizat de transmitere a inlormatiei. Protocolut lunc!ioneazii dupii modelul client-server. Pentru a ini!ia 0 conexiune, clientul de SSH trimite 0 cerere caire serverul de SSH , iar acesta din urma, dupa autentilicarea clienlului, permile translerul de date. Cea mai intalnitii implementare a protocolului SSH 2.0 este varianta open-source OpenSSH.
numit~

PrOlocolul esle adesea lolosil penlru executarea comenzi lor la dislan!~ , dar poate Ii deasemenea utilizat si pentru transfer securi2at de fisiere sau tunelarea altor protocoale mai nesigure (FTP). Exisla multe aile protocoale de nivel aplicatie. mai vech i. cu ca re se pol ob!ine acelea~i eleete precum cu SSH: FTP, rlogin, rsh, lelnel. Toale aceste protocoale au ins~ Tn comun aceeasi s l ~biciune: lolosesc metode de autentilicare slabe, ce presupun trimiterea parolelor pe relea in formal text clar {clear text}. Formatul lexl clar reprezinta. un risc maxim de securitate. caplurarea parolelor ta.clI.nduse relativ simplu de o persoana. cu inten!ii malilioase.

CAPITOLUL 9. SERVICU DE RETEA

259

Penlru asigurarea securitatii, SSH loloseste algoritmul RSA de gene rare de ahei publica ~i private. Dupa cum denota ~i romele celor doua chei. cheia privata trebu ie pastrata lntotdeauna secreta, iar cea publica poate Ii cu noscuta de oricine. E~ista 0 stransa relat ie matematica intre cele doua chei , ca re face imposibila derivarea cheii private din cea publica, dar ca re permite decriptarea unui mesaj criptat cu una dintre chei, lolosind cealalla cheie. Daca se doreste trimrterea unui mesaj privat caIre destinatarul X. lot ce Irebuie lacul este cripta rea mesajului cu cheia publica a destinatarului (fiind publica, toatA lumea are acces la aceasta cheie) . Odatil criptat, acest mesaj poate Ii decriptat doar de destinatarul X, caci el este singurul care deline cheia privata coresp unzatoare cheii publice cu care sa lacut criptarea.

Ulillzarea SSH pentru electuarea conectar li la dlstan!ii Comanda de conectare la un server SSH are doi parametri importanli: numele utilizatorului si adresa (numele) serverului destinalie. Serverul de SSH la care se va face conectarea (securessh . pub . ro in exemplul de mai jos). este un nume public pe care serviciul de DNS it va traduce ln tro adresa IP. Dadi se doreste coneclarea la un server dar nu se cunoaste numele sau DNS, se poate introduce direct IPul serverului. Cand un client initiaza 0 conex iune ssh pe un server. trebuie sa se conecteze Iolosind un utilizalor exi stent pe acel server penlru a putea avea acces la inlerpretorul de comenzi. Parametrul bogdand specifica utilizatorul in contu l caru ia se va intra dupa stabilirea conexiun ii.
I~zv~n @ k i w i, -$

"h bogdand@5ecuIe55h . pub . ro


.1 21.1Ja . 24J ~

2
l

P~5",<O I d ,

L~st

~elcome

l og in: Wed Sep 19 14 : J7 : 29 2007 fro m ~6 to the dark side . . we ' ve got cookies

bog-da n d@secu~essh : ~S

In rezu ltalul comenzi i de mai sus se poate observa laptul ca sau mai facul co nexiuni anlerioare pe acel server de SSH, fiind oleritA at1\! ora si data ultimei conexiuni, cat si adresa IP de la care sa real izat conexiunea. Cand un cl ient de ssh i n~iaza pentru prima dala 0 conex iune caire un server nou, acesta din urma va trebui sa se autentifice catre client. Fiecare server de SSH are un identilicator unic (host key) cu care se autentilica In comunicalia cu clienlii. Acesl identilicator este implementat prin chei publice si chei private. La primirea unei conexiun i de la un cl ient, serverul olerA cheia sa publicli, lAcand astlel posibilil aulenlificarea. La accept area cheii publice de la server, cl ientul adauga aceasta cheie In lisierul known_ hos t s. Astlel , urmAtoarea conexi ,me pe care acest client 0 va lace caire server nu va mai necesita transferul chei i publice, ace aSia existiind deja siocata pe clien\.
I~zv~n@ ki w i: -$

> The
J

~uthentic i ty

,sh bogdand@B2 . 77 . 5 . 245 of host ' 82.77 . 5 . 245

(~2.77,5

245) '

can ' t

be

est~b li .hed

"

RSA k ey fi n ge<print i , 1! : 94 : B9 : c3 ' e5 , fe , c3 : 6c : 2e : ab : f6 : ~2 : bd : 6d , bb : e7 AIe you SUIe you want to continue connect ing (ye,/nol? yes ~ar n i ng , P .. r m ~n .. ntly added ' 82 . 77 . 5 . 245 ' (RS"') to the !i-st of Kn own hosts

260
7
H~ve ~

lNTRODUCERE iN SISTEME DE OPEAARE


lot of fun .

bog aa n(!@ ... rver:-S

Un utilitar pentru sistemele Windows ce permite co nectarea In linie de comanda la un


server de SSH eSle aplicalia punY. PuTTY eSla disponibil gratuit si esla un client penlru

protocolul SSH , telne!, rlogin, dar peate Ii lolosi! si in comun icati ile rep raw. 0 privire de ansamblu asupra opliuniior ole rite de elien!ii imperlan!; de SSH peate Ii gas ita online'.

Ulilizarea SSH pentru rularea de comenzi Is distanla

Sintaxa completa a utilitarul .!Ish perm ite prec izarea unei lisle de parametri, a utilizatorului si a adresei destinalie, precum ~i a unei comenz i ce va Ii rutalA dupa stabilirea sesiunii SSH. Daca nu asle precizata 0 comandA se va rula un interpretor de comenzi (eel mai adesea /bin ! b as h).

in exemplul de mai jos sunt rulate local doua comenzi separate prin ":". Apoi se ruleaza aceleasi comenzi (de data aceasta protejate intre ghilimele), rezultatu[ alisat liind eel al executarii lor pe statia destinalie. dupa autentilicarea cu utilizatorul bogdand. Se observ.:i din exemplu d. autentilicarea se real izeazli f.:irli a interoga utilizatoru l, aceasta liind rezullalul unei autentificari pe baza de chei (vezi sectiunea t O.5.2):
uvan@apple , -S hostname ,
~
p~d

apple !homelru.v.. n azvan@appl e : - $ "' h


ki",i !home!u.e r .!boqd.. nd
rc .. zv .. n@"pp l
b09dand@141 . a5 . ~~ . 5

" ho"tname ,

pwd"

e : -$

Coplerea

fl~ le relot

la dlslan!ii

Efectuarea transierului de date se poate lace prin ulilitarul scp, ce face parte din pachetul ssh. Ideea din spalele scp esle de a folosi canalul securizat olerit de ssh pentru a lace transfer de date in format text sau binar intre client Iioi server. Sintaxa "c:p este asemanatoare eomenzii tradilionale cp:
scp sursa d"stJnatJ"

Daca se dore~te vanslerul mai multor fiSiere sau directoare, destinalia trebuie sa lie un director existent. Pentru a efectua 0 copiere de fisier de pe client , in directorul /home/bogda nd/work / de pe serverul eu adresa IP 82.77.5.245, eomanda este:
.a.va n @~lwl:-$

scp elscoTrTP . exe

bo g dand@e2 . 11 . 5 . 245 : ~!work

2
~

Fasswor d: CiSCOTFTP . .. ,e ruvan@kiwi : -S

lOOt 1296KB 129 . oKB!S

00:10

, http)l. n,wikiped ia,orglwi!<i/Compa rison_of_SSH_cn. nts

CAPITOlUl9. SERVICU DE RETEA

261

Penlru platlorma Winclows 0 aplicatie open source ce poate Ii Iolosita pentru partajarea de lisiere peste 0 conexiune SSH esle Wi nSCP. Aceasla olera 0 interiala gralica penlru transferu l de li~iere prin SCP, SFTP sau FTP.

Serverul de SSH Penlru a putea permile conexi uni SSH spre slalia locala, trabu ia instalat sarvarul de OpenSSH (penlru Ubunlu pachelul sa nume~la openssh - server ). Fisierul de conligurare pentru serverul de SSH se al11l in le t c/ss h /sshd_ config, si contine directive standard precum: portul pe care se accepta conexiuni SSH sau optiunea de a putea rula aplicali i X pesle conexiunea criplata de SSH.
uz ... ~n@Uwi:/ e tc/ .~ hS cat
(.
~~ htLconfiq

.. )

POrt 22 XllFonMrdinq y e o

I )

Autentificarea cu ch al Penlru 0 securitale sporit1l a utilizarii SSH, se poale lolosi autentilicarea cu chei publice si che i private. in cazu l standard al 101 0sirii SSH , liecare statie pastreaza 0 asociere intre utilizator ~i parola in mod automat. Daca se doreste insa utilizarea criptari i bazata pe chei, devine obligalia utilizalorului de a crea aceasti!. asociere manual. Penlru a genera 0 perecha de chei se poate lolosi ulilitarul ssh-keygen instalal odata cu pachetul OpenSSH.
r~z ... ~n @ U wi : -$

. . h - keygen - t
r~a

rS~

3 6 ,
A

hy pa ir. Enter file in which to ~ ~ ... e the key I/h" m e/" ~ terS/ . s s h/ltLrs~) : En t er p~""ph r~" e (e mpty for no p~ "" ph r ~ " e ) : En t ~ r ,arne pa,sphu5e a9ain : You r identif i cation h a s been s~ved i n Iho rn e/w~ters/ . ssh/id_ rsa . Your pub li c ~ey h~s been saved in I h ome/w~teu/ . 55h/id _ rs ~ . pub . The Key ti n ge~p~int is : cl : 4 5 : ~Q: n :b6 : f6 : e5 : Ob : 72 : 2J : 73 , ff ' 68 : 58 : 21 : dO "aters@Waters - l~ptop

G~n~ r atinq

pub li c/prLvat~

"
Odata generate, cele doua chei sunt stocate in mod implicit In doua lisiere: l.d rsa (c heia privata) si i d_rsa. . pub (cheia pub l i~). Cheia publica lrebuie sA ajunga pe stalia unde se alii!. serverul de SSH, iar cheia privata va ramane local pe stalia unde au lost generate chei le. in momentul crearii che ilor, ulilizatorului i se va cere un ~ i r de caractere (passphrase) care este asociat cu perechea de chei, si care va Ii cemt ulterior, In locul parolei. Acest ~ir poate Ii vid , caz in care nu se va mai cere intervenlia utilizatorului In cazu l utilizarii cheilo r pentru autentilicare. Folosirea unui passphrase vid devine deosebit de utila pentru automalizarea unor acliuni (prin scripturi). Pentru a copia cheia publica pe stalia allata la distanla se poale lolosi un utilitar dedicat, ssh- copy- id, specilicand ca parametru adresa serverului SSH.

262

lNTRODU CERE iN SISTEME DE OPEAARE

ra.va n @ ~ !wi : '$

ssh - copy - Id bogda n d@62.77.S . <45

La urm1'iloarea lrx:ercare de conectare prin SSH , singura diferenta va Ii cerea


passphraslt-ul (daca a fost introdus la generarea cheilor) in loeul unei parole de cont, insa, din punct de vadera al securilalii, utilizarea serviciului va Ii mai sigurii.

9.2.3

Utilitarul wget

" qet asle un ulilitar gratuit (din suita GNU Project). creal pentru a fac ilita 0 descarcare simplA sl eficient1'i a resurselor de pe Web. Aceste resurse pot Ii obtinute cu wget prin dou1'i dintre cele mai folosite protocoale din Internet: HTIP $i FTP. Numele ulilitarului eSle ob!inu! de lapt printrQ alalurare semanti~ a Wor ld Wide Web (W) si a metodai
HT TP GET .

li~ierelor.

Principalul avanlaj at wgat este taptul ca executA 0 descllrca re nBinteraclivi a intr-o aplicatie din mediul gralic (Fire/ox, Filezifla), 0 descarcarea uzuala necesita prezen(a pe sistem a utilizatoru lui. Cu alte cuvinle, acesta trebuie sa lie logal pentru a se putea electua operaUa de descarcare, sau pentru a avea posibilitatea de a reacliva 0 descarcarea intrerupta de caire server.

in contras\, lolosind wget , uWizatorul poate sa se autentiliee pe sislem, sa porneasca descarcarea, si sa se deautennlice, wga t connnufind sa ruleze panA la terminarea sarcinilor neincheiate. Mai mull, daca conexiunea catre server esle inlrerupta, ulilitarul va stoea lisierele descarcate pfina in acel moment pe hard-disc, va satva parametrii sesiunii si adresa serverului si va putea continua sarcina de descArcare in momentul in care legalura cu serverul se relace si resursa este din nou accesibila. Prezenland un astlel de avantaj evident la(a de clientii de descarcare din mediul gralie, wget a lost rapid adoptal de marea majoritate a utilizatorilor care aveau 0 conex iune inceata la Internet ~i care nu puteau petreee auten\ifiea(i pe sistem \impulneeesar unei descarcari interactive. Pe masura ce Web-ul a evolual wget adaugat noi lunclionalitati. Un avanlaj nolabil al ulililarului wge t este capab ililalea de descarcare ~ i de paslrare pe client a slruclurii de directoare de pe server, liind de asemenea posibila descarcarea unui site cu indicarea nivelului de adancime pana la care sa lie descarcala structura de directoare. Acest l ip de descarcare, numit descarcare recurslva, a losl e~tins p:l.na la posibililatea de a descarca pe client site-uri intregi cu toate pagini le si legaturile dintre acestea. Considerand situalia unei relele locale, descarcarea unui site pe ma~ina server din relea (proces numit ~i og lindirea sile-ului), ar lace implicit posibilA accesarea ace lui site in mod offline de caire IO~ clienlii din reteaua locala.

Modul de apeta re at utilitarului in linia de comandi Pentru a descarca un


li~ier

prin HTTP se poate lolosi comanda:

,
,

ra.va n@ k iwi : _$ wget - c http : //cc np . catc . ro/resources/CI s coTFTP . exe \.


--1 5: 57 : 06-htt p: //ccnp . cUe . ro!resou rces!CisCOTfTP . exe

CAPITOLUL 9. SERVICU DE RETEA

263

,
6 ,

_>

' Ci scoTFTP . exe'

Resolvi ng ccnp .catc.ro ... 14 1 . 8 5 . 37 . 2 Connecti ng to ccnp . catc . ro I1 41 . 8 5 . 37 . 2 1: 8 0 . . connected . A HTTP request sent . awaiting respo n se .. . 2 0 0 OK Len g t h: 1 , 327 , 497 il . 3M) lapplication/ x- m9dos - p rogram)

" 100' 1 ------------------------------------> I1 ,321 491


" 1)
15 : 5 1 : 01 12.66
MB/~ I

2 . 66M/S

Ci ~ COTFT P . exe'

oaved 11321491/13274971

Op)iunea - c asigura continuarea descarcarii in cazul intreruperii conexiunii cu serverul, iar simbolul & specilicl'i rularea utilitarului in bad<.ground. Descarcarea unui site pe discul local pentru a lace posibill'i accesarea sa offline este exemplilicatl'i prin comarKIa urml'itoare:

,
,

r ~ z v~ n @ ki w i : - $

wg@t -- conver t- linx . - r h ttp : // www . gnu . o rg/ - 0 g nu l og

ruva n @ l:i wi ,_$ 1$ gn u log www . fsf.org

www . gnu . org

Parametrul -- convert - l i n k s transforml'i legl'iturile (linkurile) din site pentru ca siteul sa poatl'i Ii vizionat offline. Descl'ircarea tuluror legl'ilurilor de pe siteul www . ya h oo . com cu 0 adancime de 1 se face prin:
ruvan@ U wi , -S "get - r - 11
~ ~ ~ . ya h oo . co m

9.3

Email-

Po~ta

electronica

Posta electronica (electro nic mail), abreviat email sau email, este 0 metoda de compu nere. tra nsm itere si recep)ie a mesajelor peste sisteme de comunica)ie eleclronica. Ideea de mesagerie electronica dateaza din anul t971, cflnd Ray Tomlinson dezvolta prima apliCatie de email pe nlru ARPANET. Aceasta era lormata din doua prog rame: SNDMSG, utilizat pentru a tra nsmite mesaje. respectiv READMAIL, Iolosit pentru citirea mesajelor. i n anul t972, comenzi le MAIL 5i MLFL au lost adaugate programului FTP. Aceasta a lost modalitatea de tra nsmite re a mesajelor in re)eaua ARPANET pana la inceputul anilor '80. cAnd a lost dezvoltat prolocolul SMTP. in scurt timp , serviCiul de email a crescut popularitatea ARPANETului si a devenit aplica)ia principala a acest1.J ia. ServiCiul de emai l a olerit la incepul doar tra nslerul de mesaje text intre utilizatori allati in retele dilerije. Ulterior serviciul a lost extins si la trans mile rea de li ~iere binare. Standardul de codiliCa re a informa\iei binare i ntrun mesaj email se numeste MIME (Multipurpose Internet Mail Extensions).

264

INTRODU CERE iN SISTEME DE OPERARE

9.3.1

Arhitectura

~i func~ionare

Peiliru Ii~rarea mesajelor se /olose~te Ull mecallism de adresare ce apeleaza atal ierarhia de Ilume dill Inlemet (serviciul de DNS) pentru a preciza ser~erul, cAt si ill/orma!ii relevanle local, precum numele utilizalorului.

o adresa de email conIine doua tipuri de informa!ii separate prill simbo lul @ (citit la sau
at sau a-round):

numele ulilizatorului care dore~te transmitere a sau receptia mesajului; numele (DNS) al
ser~er- ului

care Iransmite/receptioneaza mesajul.

Pe baza adresei de email destina!ie serviciul de po~ta electronica li',Ireaza mesajele de la clientii de email, 1010sioo ser~ere de email, catre d.suta postala asociata cu adresa de email deslinatie.
Cas u~ po~ta lil

mesajelor de

p~ta

eSle 0 intrare in sistemul local de fiSiere ulilizata penlTu stocarea electronica corespunzatoare unui utilizator.

Componenta esen!iala a ser~iciu lui de po~ta electronica 0 reprezinla prolocolul SMTP (Simple Mail Transfer Protocof). Acest protocol olera mecanisme pentN preluarea mesajelor de la clieilli de email ~i li',Irarea lor pe serverele de email deslinalie (ca alare pentru trimiterea mesajelor) , Odata cu dezvol\area sistemelor de operare penlru calcu latoarele personate, a aparu\ si nevoia preluarii noilor mesaje din casula po~lala pe slalia utilizatorului, Acest lucru este realizat printr-un nou serviciu ce asigurA ridicarea email-ului ~i sincronizarea cAsu!ei postale de pe ser~er cu cea de pe stal ia de lucru. Pelltru ridicarea mesajelor de pe ser~erul de email ce1e mai lolosile prolocoale sunl IMAP (Internet Message Access Protocof) 5i POP3 (Post Office ProtOCOl version 3), Pelltru olerirea aceslui serviciu ~a !rebui pornil un daemon de IMAP sau POP3, in plus lala de serveNI de SMTP. Marea majoritale a cl ientilor de email integreazA pe IAnga componenta de clienl SMTP (Iolosila pentru Iransmilerea mesajelor) si componente de cl ient IMAP ~i POP3 pentru interogarea CaSulei postale de pe serverul de email. reprezinta extiooerea posibilita!ilor de prelucrare a mesaje10r din casu\8 pO~lal a ole rite de protocolul IMAP. Folosind IMAP mesajele nu sun! descArcate de pe server decat la vizualizarea lor, existAnd totodatA Si op!iunea descarcarii doar a unei pAili din mesaj. Spre deosebire de POP3, uncle toate mesajele se gAs esc pe server inlro singurA cAsu!A poslalA (inbox), iar directoarele nu se pot crea decAt in aplicatia client, prolocolullMAP permite crearea de diractoaret pe server dirac. Utilizancl comenzi IMAP, aplica!ia client peale Iolosi lil!re pentru mularea mesajelor dintr-un director i n altul, lAra sA lie navoie macar ca mailbox-urile sa lie situate pe acela~i server. Rezumancl, arhitectura serviciului de email include doua componente principale: un serviciu pentru primirea si l!imiterea mesajelor si un ser~iciu pentru ridicarea mesajelor de pe serverul de email.
~,.,,,.ov

o deosebire importanta a IMAP lata de POP3 0

,,'atanal

CAPITOLUL 9. SERV1CU DE RETEA

265

Trimiteree unui mesaj Penlru a exempli fica modul in care componente le prezente mai sus interactioneaza, ~om considera urmatoarea situalie: Dan are adresa de mail dan@a.org ~ i dore~te sai transmita un mesaj lui Bogdan care are adresa de mail bogdan@b.org. Penlru li~rarea unui mesaj in cas ula prezenta!i in ligura 9.6.
po~tata

asociala contu lui bogdan@b.org.

pa~ i i

sunt

. "'" 0'
Li~ra rea

,......

"""
unui mesaj

Figura 9.6:

Dan ~a deschide un client de email in care va edila mesajul. C:l.nd Dan va da comanda de Irimitere a mesajului, cl ientul de email va initia 0 conexiune SMTP catre serverul de mail locaL Pentru stabilirea conexiunii, ser~eru l va cere autenlificarea ulilizatorului Dan. in general, clienlu l de mail va salva numele de ulilizator si parola si va rea liza autenlilicarea conexiunii SMTP in mod transparent penlru ulilizalor. Dupa autenlificare, clientul de email va Iormata mesajul conform prolocolului SMTP ~i il va lrimite caire server. Serve rul de mail local va analiza apoi adresa de email deslinatie.pebazacil.reia va determina domeniul de nume in care Irebuie livral mesajul (in cawl exemplului: b.org). Va initia 0 cere de rezo lva re de nume (cerere DNS) pentru a delermina adresa serverului responsabil cu preluarea mailului pentru domeniul b,org (acesl server se numeste mail exchanger). Dupil. delerminarea serverului de mail pentru b.org, serverul local ~a trimite mesajul lolosind prOlocolul SMTP, Serverul b.org va stoca mesajul in c1!sula po~tal1! a utilizatorului bogdan. La nivelul acestui pas se poate interpune 0 aplica\ie de distribulie a mesajelor denumitil. generic LDA {Local Delivery Agent}. 0 astfel de aplicalie poate real iza filtrarea mesajelor, livrarea anumitor mesaje in alte directoare, op rirea spamurilor etc. in Lin ux cea mai lolosil! aplicatie de distributie a mesajelor este oleritA de pachetu l proc ma i l.

Ridicarea mesajelor Pentru a ridica mesajul din casuta . postala vor Ii urmati pasii . din ligura 9.7:
, o.

"""", .",.,
I ~

Figura 9.7: Ridicarea mesajelor de pe server

right

ma'enal

266

INTRODU CERE iN SISTEME DE OPERARE

Bogdan va deschide cl ientul de mail, Jar acesta va initia 0 sesiune de IMAP caire serverul
de mail. Dupa autentificare, serverul va deschide casuta po~tala a iJlilizatorului Bogdan. Mesajele ridicate din cdsula postalA In sesiun ile anterioare de IMAP au lost marcate, asUel serveru l va salacta dcar noile mesaje (ce nu sun! marcate) ~i Ie va transmite pr in

sesiunea de IMAP catra clientul de email. inainte de a incheia sesiunea, clientul de email va informa serveru l asupra liste; mesajelor ce au lost sterSB din C<'lsuta postali'! aflati'l pe
statia utilizatorulu i. permil8.nd astlel serverului sa sincronizeze con)inutul casutei
po~ta l e

locale cu cea allatli pe slatie.


Oupa ridicarea mesajelor de pe server, casu!a postalii: poate Ii consultata inclusiv offline, folos ind clientul de email.

Folos irea webmail pentru c itirea

~j

trans miterea mesajelor

o altA metodA disponibilA utilizatorilor penlru cilirea si trimiterea mesajelor eSle lolosirea
unui server de web pentru interlala cu serverul de SMTP, serviciu rezu ltat liind denumit webmail. Folosind exemp lul anterior, mesajul livlat prin SMTP a lost stacat in CaSUla postala a utilizatorului Bogdan. Utilizatorul va lansa un cl ient web (un broswer) ~i va initia 0 conexiune HTTP cAire serveru l de web ce ruleaz<'i pe acelas; sistem cu serverul de SMTP, responsabil cu prim irea mesajelor penlru domeniul b,org. Serveru l de web va oteri 0 inler/ala ce permite opera!ii direci pe d.sula poslalA affali'! pa server: ~tergerealmutarea mesajelor, marcarea lor, crearea de directoare etc _

_ . _.
"",111

""

.....n'
/t>O<T>O_"""""

,- ,.
.~-

.~ -

Figura 9.8: Citirea mesajelor Iolosind webmail

9.3.2

Clien ~i

de email

A~a cum s-a prezental mai sus. clien!ii de email sunt utilitare care perm it descarcarea de mesaie de pa un server de emai l si stocarea lor local. in mod real , exista doua situatii in care este necesara lolosirea lor: atunci cand contul de email nu poate Ii vizualizat prinlro interlata de tip web, sau atunei cand conexiunea la Internel este siaM sau instabi la. si este de pre/erat salvarea corespondenlei pe computerul personal pentru a Ii usor accesala si ulterior. Exista mai mul!i clien!i de emai l, cei mai importanti fiind Microsott Outlook (varianla inclusa in distributia de Windows sa numeste Outlook Express) ~i Mozilla Thunderb ird.

Un avantaj al clien!ilor de emai l este stocarea central izata a mesajelor primite pa canturi de email d ilerite. in cele ce urmeazA, ne vern concentra asupra Mozilla Thunderbird, atanal

CAPITOLUL 9. SERVICII DE RETEA

267

deoarece esta gratuit si disponibil pantru toata sistemele majore de ope rare (Wirdows, Unu x, Mac OS).
Conligurarea unui client de email preSIJpuna in primul rArd craarea unui cont pentru liecare adresa de email ce se doreste administrata cu Thunderbird. Sunl lolosile doua protocoale dire rite: SMTP pentru a trim ite mesaje si POP3 pentru a primi mesaje. Setarea unui cont pres upune introducerea adresei de email. parolei asoc iale, adresa serverului de SMTP ~i a serverulu i de POP3. Se poote opta pentru salvarea parolei intrun lisier de conligurare, sau penlru introduce rea ei manuala de liecare data Cillld se va stabili 0 conexiune la unul dintre serverele de mail. in cawl in care doar unul dintre ce le douA servere este setal corespunzAtor, sa vor pulea doar descArca (in cazul POP3) sau trim ite mesaje (respectiv SMTP).

Unul dinlre avantajele Thunderb ird eSle integrarea cu serv iciul de email olerit de Google, numit Gmail. Pentru setarea unui cont de Gmail, trebuie parcur~i urmAlorii pasi: se activeazA pe siteul Gmail op!iunea de a lolosi un server de POPS. apoi din Thunderbird se creeaza un nou cont. se alege Gmail account ~i se introduce adresa de email. Restul setarilor se electueaza automat Pentru a trimite/primi corespondentA. se foloseste butonul Gel Mail, comanda ce sincrooizeaza baza de date locala c'u cea de pe server. in consecin!a. un email care eSle scris poata Ii trimis instantaneu sau poate Ii stocal local si trimis mai IArziu, cillld va exista conectivitate la Internet Thurderbird se sincronizeaza in mod automal cu serverul la intervale regulate de timp. Thunderbird olera 0 gama de servicii standard: memorarea adreseklr de email, sortarea emailurilor dupa, data primirii, subiect, numele expeditorului, importanta (cresc1!.tor sau descrescator). Emailurile pot Ii grupate pe threaduri (toate mesajele care lac parte din aceea~i discu!ie), facilitate deosebit de folos itoare in cazu l mesajelor primite de la 0 lista de discutii. De asemenea pe ntru localizarea unui mesaj chentul ole ra un motor de cautare ce poate lolosii criterii ce vor ana liza: adresa sursa, adresa destinalie. subiectul mesajului sau continutul sAu. Pentru 0 mai buna organizare a corespondentei. se poate crea 0 structura de directoare si gruparea mesajelor in mod logic, in opozitie cu stocarea traditional!!. a tuturor emailurilor in casuta po~tala (inbox ). Aplicarea de IiItre permite selectarea emailurilor pe bazA de critarii avansate (ce includ adresa, nume expeditor. sub iect. con!inut) ~i efecluarea de ac!iuni asupra lor (mutarea in dilerite directoare. stergerea lor. marc area lor). facilitate extrem de utila in cazul unui numAr mare de mesaje zilnice. o limitare in lolosirea unui solulii mixte bazate pe Thunderbird nesincronizarea marcarii mesajelor citite intre ce~ doua aplica!ii.
~i

Gmail 0 reprez inta

9.3.3 Securitatea serviciului de email


Cea mai intainitA problemA asoc iatA cu po~ta electronicA 0 reprezintA primirea de spam (mesaje nesolicdate). Din p1icate. tralicu l de spam a depa~ il 90% din tralicul SMTP in Internet Pentru a reduce traficul de spam in primul rAnd trebui ca serveru l de email {S MTP } sA nu accepte sa trimita mesaje de la orice client SMTP din Internet. Majoritatea destin atiilor

.1

268

INTRODU CERE iN SISTEME DE OPERARE

de mail vor varifica pantru fiecare mesaj dadl. nu a lost IIimis folosind un server SMT? de tip open mail relay (server ce accepta sa trimita mesaje pentru orice client), Cal: in care vor considera respeclivu l mesaj drept spam.
Traficul de spam poate Ii controlat ~i pe serverul destinalie inainte de a Ii prelua\ de aplica!ia client. Reducerea Ira/icului de spam pe serverul de 8MTP peate Ii facuta prin
impleme ntarea a Irei tipuri de liste:

Llste albe - mesajele trimise de un server cOl1linut inlr-o astlel de lisla sunt cons iderate automat mesaje legitime

LISle grl - mesajele primite de la servere necunoscute sunl, pentru 0 perioada de limp, raspinse. Dacli serverul sursA incerca retransmileraa mesajului ~i dupa expirarea aceslei perioada, masajul va Ii considarallegit im. Acaasta. metoda sa bazeaza pe iaptul ca serverele de spam nu vor incerca retransmiterea mesajelor.
Liste negre - mesajele primite de la un astlel de server sunt elichetate ca spam

o alta clasa de aplica!ii

de liltrare a traiicului de spam sunt integrate in LDA (Local De/ivery Agent). Aceste aplicalii in general folosesc un set extins de criterii pentru a calcula probabilitatea ca un mail sa lie spam. Filtrarea tralicului de spam poate Ii rea lizata inclusiv de clientul de mail. Cu toate acestea, chiar ~i in cazul lolosirii simu~ane a tuturor metodelor de control al tralicului nedoril, mesajele de spam nu pot Ii tOlal eliminate. este absen!a unui mecanism de autentificate a expeditotulu l. Exista exlensii ale protocolului SMTP ce rezolva aceasla. pro~ema, dar care nu se bucura. de 0 popularitate insemnatii. Singura sclutie cu adevarat eficienta. in preveniraa atacurilor bazate pe asumarea unui false identitali (numite alae uri phising) este instruirea utilizatorilor asupra limita.rilor protocolului SMTP.

o aM p ro~ema importanta a serviciului de email

9.4

WWW

World Wide Web sau WWW este, probabil, cel mai cunoscul 5i utilizal serviciu din Internel. WWWul se prezinta ca un set de resurse interconectate prin intermediul de leglituri (hyper/inkuri). Aceste resurse sunt denumite pagini web si contin hypertext, imagini, lilme. Hypertextul este in esenta text simplu, la care sa ad<lugat 0 formatare standardilatli, ce specilicli utililarea de hyper/inkuri. Accasul la resurse se realizeala. prin intermediul unui navigator (browser). 0 pagina web va con!ine, de obicei, legaturi (hyperlinkuri) catre alte pagini (resurse), justifica.nd denumirea de Web. Wor ld Wide Web-ul este inventia lui Sir Tim Berners-Lee din 1989, una din personalitiitile marcante in dezvollaraa Internet ului. Sir Tim BernersLae esta directorul World Wide Web Consortium (W3C), organilatia care coordoneaza. delvoltarea WWW in ullimii ani. WWWul a cunoscul 0 delvollare mult mai ampl! ajungAndu-se la folosirea expresiei Web 2.0 pentru a simbolila servicii le web de noua generatie olerite de diversele comunitlili web. in acela~i limp, WWWul evolueaza catre ceea ce Sir Tim Berners Lee a denumil Semantic Web, adicli 0 exlensie a WWW-uluiincarecontinu!ul poate fi exprimat in limbaj natural si utililat de agen!i specifici de analiza.
~,., ov 'atanai

CAPITOLUL 9. SERVICU DE RETEA

269

9.4.1

Tehnologiile de bazii ale WWW

WWWul isi datoreaz;'i existent1i celor trei tehnologii utilizate de Sir Tim BernersLee, Acestea sunt URL, HTTP!?i HTML !?i sunl prezenlate in continuare.

URL
URL inseamna Uniform Resource Locator!? i esle un nume lntro sinlax;'i bine precizatil. pentru a identilica resursele din Internel. URL este de lapt un sinonim pentru URI (Uniform Resource Identifier). in mod lipic, un URUURI esle inlrodus in bara de adrese a unui navigalor!?i este lolosit pentru accesarea unei resurse (a unei pagini web) din Internet. Un navigator va "decodilica" URLul !?i va accesa resursa dorila, Astlel. in cazul1n care se acceseaza URLul htt p: //www . exa.mple . com se face 0 ce rere HTTP catre serverul examp le . co m. Pe de a~a parle. URIul mailto : bogdan@examp le . co m va 1nsemna deschiderea unui cl ient de email penlru compunerea unui mesaj clitre bogdan@example,com. Un URL are 0 sintaxa bine specilieata lolosila penlru identiliearea slaliei din Internel. a 0sit de aceasta si a res ursei pe care 0 poate pune la dispozi!ie acest servieiului 101 servieiu. Astlel, in cazul URLului http : //www . examp le . co m/ page . html 5la)ia care detine resursa esle serverul www. examp le . com. 0 cere re DNS va Ii lolosilil. pentru trans latarea numelui lntro adres;'i IP. $ irul ht t p : I I este lolosit pentru idenlilicarea serviciului; in cazul de lata acesta este serviciul de Web care folose~le protocolul HTTPsiportu! implicit 80 . Resursa cerulli de pe server eSle I page . html. Drepl urmare. in urma inlrodllCerii URLui in bara de adrese a navigalorului, acesla va lace 0 cerere HTTP catre stalia identilicat1i de numele www . ex ample . c om pentru pagina Ipa.ge . html de pe server. Aceasta va Ii alisata apoi clienlu lui (in interiorul browserului). Exemplul de URL prezentat mai sus este unul simplificat. Asllel, sintaxa comp leta pentru un URLeste:
protoco l : !!server ,p ort/cal e !catre!resursa

campul protocol speciliea, evident. prolocolul lolosit pentru comuniea)ie. Acesta poate Ii ft p, http , s cp etc.; dacil. acest cflmp lipseste, un browser va lolosi i mplic~ http ; campul server reprezinta numele sau adresa IP a staliei cu care se realizarea unei comunieatii;
dore~te

campul port eSle portul utilizat (acesta poale lipsi), caz In ca re se loloseste porlul implicit al serviciului; Icale/ca t re/ r e sll rs a reprez inta ca lea catre resursa allata pe server; aceSla va Iolosit aceasta cale pentru a oleri respectiva resursli clientului; de obicei. res ursa esle 0 inlrare in sislemul de lisiere al ser verului. Sintaxa URlului poale Ii complical1i. Astlel, un URL tip IIp poale asigura inclusiv autentificarea pe server. Folosirea URl ului f t p: //bogda n: p4r 014 8un4@exam ple . com/ sources . t gz inseamna

270
autentificarea utilizatorului bogd<l"

lNTRODUCERE iN SISTEME DE OPEAARE

eu

parola

p 4r0148un 4

pe

serverul

example. com, folosil'ld ftp pentru descarcarea fi~ierului sOurces. tg~ .

HTTP
HTTP {Hypertext Transfer Protocol) eSle prolocolul fu ndamental al World Wide
Web-ului. De~i navigatoarele pot lolosi alte protocoale in afara HTTP, acesta ramane

eel mai important mecanism de comun icare.


Similar celorlaite servicii din Internet, serviciul Web (HTTP) fuoctioneaza ca sistem client-server. Clientul Web esle navigatorul (browser-ut) folosi! pentru ce rerea unei resurse prin intermediul unlii UAl. Porlul implicit utiliza! de HTTPesle 80. Prolocotul HTTPesleunprotocoldeUpintrebareraspuns(reques/- response). Clientul Web (navigatorul) lace 0 cerere cat re un server. dupa care acesta ii trimite un raspuns si resursa ceruta. in exemplul de mai jos. te lnet este utilizat pentru a electua 0 cerere HTTPcatre google . ro :
ra<van@anaconda ; -S tel net google . ro 80 Try; ng 72 . 14.<21 . 104 ... ~ Connected to g oogle . ro . Escape character i s " ) '. , GET I HTTP /l . O HTTP/l . O 302 Found 7 Loca t ion : http : // ......... . googb . ro/ Cache - Cont r o l: pri vat"
2

t .. )
Dupa real izarea conexiun ii pe portul 60, cl ientul trim ite ce rerea GET I HT TP! l . O. Aceasta inseamna citirea directorului ri'l.dac ina al serverului IOlosind HTTP versiunea 1.0. Raspunsul server-ului este HT TP/l . O 302 Found urmat de pagi na efecliva. Daca pagina dorita nu se alia pe server. raspunsul server-ului va Ii rror 402 Pag e n ot Fo un d. ACeSI raspuns nu inseamna lnsa ca serverul nu lunctioneaza, caz in care mesajul alisat de client ar Ii Server not Found. Dalla caracteristica importanta a protocolu lui HTTP este laptul ca esle un protocol neorientat pe co nex iune (staleless). Acest lucru inseamna ca dupa ce clienlul trimite 0 cerere si ii sose~te raspunsul conexiunea este incheiata. Pentru 0 noua resursa trebu ie realizata 0 alta conexiune. Opus este protoco lul FTP care este un protocol cu conexiune persistenta. Petru ca este nevoie ca anumite informalii sa l ie persistente dea lungul mai mullor conex iuni s-au gasil diverse solUlii . cookie-uri pe cl ient, ses iuni pe server, variabile HTTP etc. Un alt neajuns al HTTP este Iipsa unui suport puternic de securitate. Acest lucru este corectat prin folosirea protocolului HTTPS care foioseste com unicalie criplala. Majoritatea sislemelor de webmail de aslazi folosesc HTTPS pentru a asigura conlidenlialitatea datelor.

HTML HTML (Hypertext Markup Language) este un limbaj lolosit pentru a descrie continutul unei pagini Web. HTML loloseste marcaje (tag-uri) pentru a defini modul in care un

CAPITOLUL 9. SERVICU DE RETEA

271

element dintro pagina Web este afisat de un browser. o pagina simpla Web descrisa in format HTML eSle urmaloarea:

, , , " " "

uzvan@a nacond3 ; '/publ i c_html S main . html <html> <head> <t it 1e>Pag1na mea</tit l e> </head> <body> <hl>Antet</hl>
Te~t si mplu <strong>Text ~ ldin <1st ro ng> <em>Text cuuiv</e m >

,"

" "

</bo dy>

</html> Un marcaj incadreazi'! de obice i un text. La inceput, marcajul este <nume_ma rc aj > si se incheie cu < /nu me_marcaj >. Marcajele prezenle in aceasta pagina sunt: html. pentru definirea documentului HTML head prezinla iniormatii despre pagina. spre exemplu liliul {ma rcajul title} h1 defineste un antet de nivel 1 strong defineste un text aldin (bold) em
define~te

un text cursiv {ita lic}


afi~a

Un client Web va interpreta 0 pagina HTML si 0 va existente.

utilizatorui conform marcajelor

XHTML XHTML (Extensible Hypertext Markup Language) este un standard ~ i un limbaj de marc are care are aceleasi posibilitali de exprimare ca si HTML lnsa se conformeaza sintaxei mull mai stricte a XML Urmand 0 sintaxa mull mai stricta. un document XHTML este mull mai usor de inlerpretal, spre deosebire de un documenl HTML care necesita un parser complex. Motivatia utilizarii XHTML 0 reprezinta cre~terea numarului de d i spo~ itive care nu au capac itatea de procesare a unui document HTML complex. Sintaxa stricta a XHTML permite 0 prelucrare mull mai rapida a unei pagini Web de caIre cl ient. Adoptarea XHTML se real i~eaza inlrun ritm inegal datorita lipsei de implemenlare in navigaloare a caraclerislicilor noi pe care standardulle aduce. Versiunea curentA de XHTML eSle 1.1. dezvoltare. Versiunea 2.0 a standardului este inca in

272

INTRODUCERE iN SISTEME DE OPERARE


Func~ionarea

9.4.2

serviciului

Dupa cum sa precizat, servieiul de Web IUflclioneaza in sistem cl ienlserver ~i lolose~te protocolul HTTP pentru com unicare. Funcl>onarea serviciului este sistematizata in ligura 9.9, in care sunt prezentati . un set de pasi urmati . tipic in obtinerea de catre cl ient, a unei resurse allate pe un server Web (de obieei 0 pagina: Web ).

....."'"

Figura 9.9: Functionarea servieiului de Web in primll tazll utilizatorul va lolosi un client Web (navigator) si va introdllCe in bara de adrese a acestuia un URL care identilicll resursa doritll. Navigalorul idenmica din URL sisteml.ll unde trebuie sa se conecteze si resursa ceruta. De obieei se va genera si 0 cerere DNS pentrl.l a alia adresa IP asociata serverulu i. Navigatorul se conecteaza: la server si, in cazu l protocolului HTTP, lormuleaza 0 carere delorma GET Icale/resursa HTTP/l .0 . Cererea ajunge la serverul Web. Acesta trebl.lie 511 olere clientului resursa carulll. Resursa este, de abieei, a inlrare in sistemul de !isiere (pagimi web, imagine, film elc.). Drept urmare serverul Web va trebui sa localizeze reSl.lrsa. Orice server web are configurat un director r1ld1lcinll specializat, denumit si webfool. Crice resursa este oblinuta din acest director. Drept urmare, calea completa in sistemul de ti~ie re este oblinutll prin concatenarea ca:ii din cererea HTTP la webfoot, rezultAnd intrarea I webr:oot/c <l l e l res ur sa . Dupa ce obline res ursa obtinula, serverul va trebui sa a transm ita clientului. Pentru aeeasta el emite un rllspuns HT TP 2 00 OK si ataseaza resursa. Clientul prim este reSl.lrsa de la server si, dad este vorba de 0 pagina Web, interpreleaza: codul {X)HTML si afi~eaza rezu~atul utilizatoru lui. Conexiunea se inchide

9.4.3

Servere Web

Un server Web este responsabil cu olerirea de re surse din sistemul local de lisiere clltre cliBr1~ (navigatoare) prin intermediul protocolului HTTP. Exemple de servere Web sun\ Apache HTTP Server, Microsoft liS, Sun Web Server, Zeus Web Server. Apache HTTP Server este eel mai lolosit server Web din Internet. in general, un server Web p!"ezinta un lisier de configl.lrare prin intermediul cMu ia ii poate Ii alterat comportamenlul. in cawl Apache HTTP Server vers iunea 2, acest fisier atanal

CAPITOLUL 9. SERVI CII DE RETEA

273

de configurare eSle l etc/a pa che2/apache 2.con f . Allerarea aceslui lisier de conligurare permite schimbarea porlului pe care acesta ascullA conexiun i (implicit 80), a webroot,ului (implicil /va r Iwww) si altele. Un server Web ~a primi 0 cerere HTTP in lorma GET Icale/cat re/ r es urs a HT TP/ I . 0 5i va identilica din siSlemul local de fisiere intrarea asocial!!. resursei, Fiecare server are un director radacina (denumit webfOOt) unde este cAutala res ursa penlru a Ii olerita clienlului. in cazul serverului Apache , In urma unei cereri GET Ical e/cat r e/resursa HTTP/ 1 .O va trimite clientului /isieru l identilicat de Ivar I w.... I calel cat rei resursa (sau l u sr I loca l I Apache2 Ihtctocs).

9.4.4

Clien~ii

Web

Clien!ii Web se numesc navigatoare sau brow ser-e. Un cli ent Web se va conecta la un server Web pentru a solicita a resurs!!'. Resursa eSle specilicatA de uti lizator lnlrun URL Clientul Web transmite 0 cerere HTTP catre server solicitii.nd resursa clientului. De obieei aceast!!. resurs!!. este a pagin!!: Web. Codul HTML esle interprelal apoi de navigator ~i alisal utilizatoflJlui. Cele mai ulilizate tipuri de nal'igatoare sunt Internet Explorer, Mozilla Firefox, Opera si Salari. Internet Explorer este eel mai utilizat navigator cu 0 pondere de 8085% urmat de Mozilla Firefox cu a pondere de 10-15%. Cetelalte navigatoare au ponderi mutt mai mici. Exist!!. si navigaloare in finie de comand!!:, cum ar Ii lyn x , w3m, l ink ... Navigatoarele Web reprezint!!. una dintre cele mai utilizate aplicalii din cadru l unui sistem de operare. Competitia dintre acestea a generat ceea ce ga numit "browser wafS". Astlel, anii 19941998 au lost marcati de competi!ia dintre Netscape Navigator si Internet Explorer cu victoria celui din urmll. in anul 2002, Internet Explorer era 1010Sii in proportie de circa 92%. Ullimii ani sunt domina~ de competi!ia inlre Mozitla F i re/o~ si Internet Explorer, Competi!ia dintre navigatoare a condus si la apari!ia unui numAr important de caracteristici printre care: navigare tabularl'i, blocarea mesajelor de tip pop-up, coreetie gramaticala, gesturi de mouse, suport pentru diverse prolocoale (FTP, IRC, BitTorreflt) si pentru standarde (CSS, XHTML. XSLT, RSS).

9.5
9.5.1

Studii de caz
Utilitarul cURL

Utilitarul cURL esle aplica!ie pentru trans/erul de fisiere ce isi propune sA olere suport atAt pentru cerinte a~ansale de seeuritale. cat si pentru un num!!:r loarle mare de protocoale. Lista protocoalelor implementate de cURL include FTP, HTTP, IBlflet, LDAP, preeum si protocoale orientate spre seeuritale preeum SCP, SFTP, FTPS, HTTPS. Pefltru asigurarea securitl'ili se pol lolosi in cURL numeroase metode de autenlilicare pe baza de parola, cat si pe certificate.

lNTRODU CERE iN SISTEME DE OPEAARE

Utilitarul cURL ce se execut1l din linia de comand1l, ceea ce pe rmite includerea sa in scr ipturL Gel mai adesea cURL este folosit pentru scripting HTTP, in scopul simul1lrii activitMii utilizalorilor ce folosesc dilerite broswere. Utilitarul cU RL implementeaz1l numeroase mecanisme speciliCe clientilor web, ce le mai multe suplimentare lal11 de "qet_ Spre exemplu ole r1l gestionarea cookies (Irimiterea 5i salvarea local1l), navigarea prin pagini de lormular, folosi rea unui proxy web, urm1lrirea redirect1lrilor automate. sau schimba rea semn1ltu rii navigalorului. Spre exemp lu, presupunem c1l i n cad ruf unui site se al1 1l un formufar disponibil la ad resa: test.cs.pub.ro/login.cgi . in acest formular treouie comp letat un camp de nume 5i apoi apasat bulonul OK pentru a accesa site-ul. Formularul este scris lolosind sintaxa HTML:
,

<form nethoda " GET" a ction a "login.cg1"~ <i n put type- tex t n _ -"nume " > <tnput t ype 9ubm it n _- presa value "OK " >
</ f o r>O>

Listing 9.1. Formular de login simpfu Gererea poate Ii trimis1l lolosind cURL astfef:
r a zvan @k i"i : - $ curl " t es t. c s . pub . rO Ilog- i n cq i ?nume - R&z van \& press - OK'

In cazu l unui form uiar ce pe rmite clie ntului s1l incarce un lisier se poate folosi cURL cu opliunea -F. Presupunem c1l lormularul este scris astfel:
, " <form method_" POST " ~n ctyp ~ _ ' multipart/ form data' ecti c n _ "upl o a d . cgi "> <i nput type _til" n _ _ upl o o d ~ <i nput type - ,ubmit nllllHl _ pr~ ~~ val ue - " OK " '
</ fora~

Listing 9.2: Formular de upload simplu Penlru lormularul allat la adresa test . cs . pub. ro/upload . cgi va Ii inc1lrcal li5ierul test 0 1 5i apoi simulata apasa rea butonului OK:
razvan@ ki " i: -$ curl - F
CO'
upload - @ t ~~ t O l

-F

pres' ~ OK

t ~~t . c ~ . pub . ro/ u p l oad .

Utilitarul cURL olera suport 5i pentru sc himbarea identitalii navigatorufuL Pentru a simu la o ce rere caire serveru l te5t.com ini!iat1l de un navigator Internet Explorer 7.0 ce ruleaz1l pe un sistem Windows 2000 vom 1 01 0si comanda:
razvan@ ki " i: -$ curl -A "MOziUa/4 . 0 5 . 0)" t ~ "t.co (co mp at ib l ,, : MSIE "l . 0 ; Iol1ndow.'I NT

9.5.2

FTP

FTP (File Transfer Pro/aeof) este un protocol foarte rasp:l.ndit ce 0ler1l posibi litatea alaI inlrO retea transleru lui de lisiere . . focal1l cat si . prin Internet. Se bazeaz1l pe modelul client-se rver, deci presupune existenla a dou1l entitali intre care se rea lizeaz1l un Iran5ler de li 5iere, cl ientul liind eel care se conecleaza (5i se autentificA) fa serverul de la care poate descarca sau caruia i i poate trimite li5iere,

CAPITOLUL 9. SERVICU DE RETEA

275

Ca si in cazul modelului generalizat de cli entserver, serviciul FTPoleritdecatreacesta din urma 5e reduce la exislenta unei aplica!ii. numita "server FTP"ceruleazapeosta!ie. Similar, cl ientul ru leaza 0 aplicatie numita "client FTP" ce se ocupa de managementul conexiun ii catre server si de Iralicul de date dinlre aceslia. Atal aplicatiile server cat si cele cl ient FTP sunt disponibile, practic, penlru loale plallormele existente. dovada a versatililatii si raspfJ.ndirii protocolului FTP. Un dezavantaj al protocolului FTP este faptu l ca acesta transfera atiit informa!iile de conectare cAt si continutul propriuzis al lisierelor in mod necriptat, interceplarea unui astfel de Iralic pu\iind duce la 0 interpretare facila a sa.

Fun c!lonare Un cl ient FTP ce se conecteaza la un server trimite acestuia un sel de dale de autentilicare (nume 5i parola) care au asociate pe server un 0 structura de directoare ce sunl puse la dispozi!ia acelui utilizalor. DacA aulentilicarea reuseste , clientu l are dreptul sa Irimi\a in continuare comenzi pentru a interactiona cu fisierele la care are acces. Drepturile de acces la jisiere se reduc la cele de listare/creare de directoare, Citire, modilieare. stergere de !isiere sau directoare, ceea ce implica un tranSfer bidireClional intre cl ient 5i server (clientu l poate atiil sa descarce. ciit si sa Irimi\a fiSiere pe server). In practica, aceste drepturi sunt enun(ate in aceeasi structura de tip "rwx" ca si pe sistemele UN IX. Serverul FTP "asculta" conexiunile pe portul 21 5i real izeaza Iranslerul de comenz i lot pe acesta. Transferul efectiv de lisiere 5e realizeaza in paralel, pe portul 20. doar in urma unei conex iuni preslabilite. Porturile rezervate penlru protocolul FTP sunt 21 penlru stabilirea conexiunii si 20 penlru tran5ferul elecliv de dale. 0 variantA securizata si similara 0 reprezinta SFTP (SSH File Transfer Protocol) 0 alta limitare a sa este imposibililatea de a transmite alribl.itele ce lin de data si ora creariil modificarii fisierelor, acestea fiind rescrise la destina!ie. De asemenea, aceasta limitare esle eliminata in cazul lui SFTP. Transferul datelor prin FTP se poate lace prin dow! moduri, selectate manual inaintea ini!ierii transfe rului sau determinate automat de catre clientu l FTP: Mod ASCII: lolosit pentru Iranslerul fis ierelor text ; are avanlajul de a transmite dalele 10105iOO codurile ASCII ale caraclerelor, ceea ce permite compres ia dinamica a inlormaliei, la un raporl foarte bun, deci un flux mai putemic de date, dar are dezavanlajul de a corupe continutul oricarui lisier nonlext. Mod binar: lolosi! pentru transferul oricarui tip de fisiere (inclusiv text)

Exe mplu d e ulilizare Conectarea la un server FTP dintro linie de comanda Linux se poale lace direct prin comanda ttp, urmata de numele sau adresa serverului la care se doresle conectarea, ca in exemplul:
rool:ie@l oca lhost -$ f t p ttp . lu g . ro Tr y i ng 1 93 . 22 6 . 14 0 . 5 1 ... 3 COI'lM c ted t o ft p . l ug . r o 1193 . 22 6 . 140 . 51) .
~

276
, " , " 10
11

lNTRODUCERE iN SISTEME DE OPEAARE

220 Iv.FTPd 2.0 . 31 N~me Iftp. l ug,ro : rootl ' anonymous 331 Plea ... specify tl'te pusword . Fassword : 230 Login successful . Remote system type is UNI X. us in g binary mode to tunsfec files .
ftp>

Promptul ft p > indidl laptu l ell. urmatoarele comenzi vor Ii trimise direct caIre server. CAteva comen~i comune sun! Is sa lJ dir pentru a lisla con\inutul directo rului curent, cd pentru a sc himba directorul, get pentru a descarca fisiere le specificate ca parametri (mget pent ru fisie re multiple) sau put pe r'ltru trimiterea de lisiers. Oeconectarea de la

serverul FTP se face prin comenzi le quit sau disconnect.


o categorie speciala de ellen!i FTP 0 rep rez inta broswerele web, limitarea acestora constAnd in faptul ell. nu par mit decfll descl!.rcarea fiSierefor de pe server. Conectarea fa un server FTP printr-un browser web se poate lace prin introoucerea adrese i sate in bara de adrese a browserului, specificAnduse protocol ul:
ttp , llttp. l ug . rO

In cazut ser ~e retor in care accesu l nu se poate face anonim (lara cont predefinit). browserul ~a cere un nume de utilizator si 0 parola. Pentru a specilica direct din adresa paramelrii de autenlilicare, se poale scrie:
ttp : I lu .er: paro l a@server , 25 S S

Exemplul ante rior specifica explicit si portu l pe care se realizeaza conexiunea (2555), iniormalie necesara in cazul in care serverul nu ruleaza pe portul implicit, 21.

Cuv inte cheie

client

FTP HTML HTTP IMAP


IP LDA POP3

,,"

5MB

PO"
punct-Ia-punct
~p

spam SSH (Secure Shell) stiva de protocoa le TCP lei net UDP URL webmail

wget

WWW

server

XHTML

CAPITOLUL 9. SERVICU DE RETEA

277

intrebiiri
1. Care dintre operaliile de mai jos NU se bazeaza pe 0 arhitectura clientserver?

ridicarea mesajelor editarea unui nou mesaj trim iterea unui nou mesaj verificarea mesajelor folos ind broswer

o
o

2. Protocolultelnet comun ica direct (lara intermedierea nivelului transport) cu nivelul


retea. Dupa slabilirea unei conexiuni de lelnel comun icalia se unidirec!ional: de la server catre client.

va

face doar

adevaral, adevarat adevarat, lals fals, adevarat lals, fals

o o o o
o

3. Care dintre servici ile de mai jos NU eSle util intro solutie de wabmail?

SMTP IMAP

o
o

HTTP
SSH

4. Care dintre ce le de mai jos NU reprez inla 0 tehnologie relevanla pentru serviciul web:

o o o
o o

URL

HTTP
HTML FTP

5. Care dintre urmaloarele esle 0 aplicatie server SMTP? Postfix Firelox

o o

o Outlook
Apache

6. jntrun cl ient web (broswer) este taslata adresa:


ft p ://be5tman : none@te5t . co m/li5ta/admi5i . txt

Care din Ire urmaloarele afirmalii esle adevarala?

o o

va Ii iniliata 0 conexiune pe porlu l 80 catre serverultest.com va fi descarcat fisierulltesl.comllislaiadmisLlxt

278
o sa

INTRODU CERE iN SISTEME DE OPERARE

va folosi pe ntru autent~icare

parola "bestman"

o pentru statli lirea conexiunii utilizatorul "bestman" sA ,rebuie sA exists pe

!est.eem
7. Pentru conectarea la un server SSH esle necesar1i cunoasterea adresei IP sau a numBlui ONS a serveflJlui. Fillrarea mesaielor spam sa poale face numai pe

serverul de mail, I'lU si pe client o adevarat, adevi'l.rat


o adevarat, lals

o fals, adevi'!.rat

o fals, lals
8. Care din urmAtoarele NU esla un client web?

Firelox

o Internet Explorer

o wget
o Thunderbird

9. Care dimre urml'iloarele aplicalii NU poate Ii lolosita pantru conectarea la un server web:
o tel net

a ssh o wget
o curl
10. Comunicatia intra doua servere de mail S8 reali zsaza folosind:

o o

PQP3

HTIP
5MB

o nieiuna dintre variante

C JPYnghted matanal

Capitolul10 Elemente de securitate


There are two kinds of cryptography in this world:
cryptography that will stop your kid sisler from reading

your liles , and cryptography thaI will stop major


governments from reading your files.

Bruce Schneier

Ce se invala din acesl capitol?


Problemalica securitAtii IT Elementele unei politici de securilate Securizarea sistemului Controlul accesului
$ecuritalea sistemului de l isiere

Forme de alae de (elea


Criplare 5i firewall-uri
Monitorizare

10.1

Problematica securitalii

Securitalea la nivelul calcu latoarelor. in particular, s; a domeniului IT, in general, a


capatat un inleres deosebit in ultimete decenii. Des; un concept discutat din cele mai ~echi limp uri, securilatea a capalal noi forme. ramuri de proiectare ~i implementare odata cu dezvoltarea sistemelor de cal cui ~ i indeosebi a InternetutuL Pe 0 planela in care pesle 1.5 miliarde de oameni sunt conectati la Internel (circa 25% din populalie)' sBcuritatBa si integritatea informatiei au 0 relevanta dBosebit<i. In domBniul IT, domeniul secu ritalii a cunoscut 0 dezvollare alerta. cu mulle subdomen ii ~i speciali~tL Se discuta despre ingineria secur itatii, despre criptogral ie, gestiunea riscului, securitatea relelei, inginBfie soc iala. ~iru~i ~i anti~irusi. scrierea de cod sigur (secure coding ).
I http ;l/ww<i.inte rnelwo rk!stal$.comlst. ts.hlm

279

C JPYnghted matanal

280

INTRODU CERE iN SISTEME DE OPERARE

In ciuda fapltJlui d. domeniul eSle unul vast, nivelul de cunoa~tere ~i intelegere a publicului larg in privinla securitatii (Isle destul de scaziJI. De-a lungul ultimilor ani, multe Ierne tehnice specifice domeniului securila!ii au parasi! domeniul lT, !iind preluate de ziare, jurnale TV, sau de industria cinematografica. Oin pacate procesul nu a lost eel rna; adesea, unul ce incerca aducerea in stera publica a conceptelor de securitate,
ci rna; ales unul ce speculeaz(l
senz a~onalul

prin ignorarea constrangerilor tumi; reale,

ducand la promovarea unOI no; mituri ale erei IT. De multe ori se cons idera nOlmare "performanlele" hackerilor din filme, care reusesc sa compromitli securitatea unui sistem in cAteva secunde. Exe mple de "scenarii" care ajutA la rAspAndirea acestui lenomen sunt serierea de virusi pentru sisteme de operare extraterestre (vezi "Ziua Independentei". 1997) sau lolosirea unui ecran 3D pentru virusaraa unui sistam (vezi "Swordfish", 2001 ). Exista, i nsa, si exemple pozitive i n lumea cinematografica, precum fotosirea nmap si SSH pentru compromiterea unei relale electrice computerizate (vezi "Matrix", 1997' ).
Capitolu l de fatA nu i~ i propune sA of ere cititorului sfaturi despre obtinerea unei puteri nemArginite i n eontrolul tuturor sistemetor electronica, ei sA adueA un nivel minim de ordine in domeniul populat de mituri al securilii!ii IT. A deveni cu adevArat un profesionist i n securitate aste 0 carierA, dupa cum spunea si Eric S. Raymond: "Being able to break secu,ily doesn't make you a hacker anymore than being able to hatwire cars makes you an automotive engineer:

10.1 .1 Principii de baz8


Seeuritatea caleulatoare are drept seop protejarea inlOfmatiilor de la accese neautorizate, furt. corupere ~i alte riscuri. Domeniile securitAtii se relerA atat la mecanismele folosite pentru a obtine accesul sau a corupe informatii le cAt ~i la protejarea aeestora. Forma generalA de ri se i n securitatea IT se numeste atae de securitate.

o prima clasificare a riscuril or de securitate distinge trei tipuri de atacuri :


ataeuri venite din Internet (cu 0 ratA de sueees red usA); ataeuri initiate din reteaua localA; atacuri generate de pe aceea~i masinA, aces tea din urma avAnd un impact mult mai insemnat decAt primele.
De~ i eu gradut de rise eel mai ridicat, ataeurile initiate de utilizatorii serverului tintA su nt deseori tratate i n graba ~i unitar.

Domeniul securil<'!ii dispune de un set de principii generale. Acestea nu sunt aplieabile doar in cadrul domeniului IT, ci in domeniul securitAlii i n general. Aceste principii nu sunt exhaustive, dar urmArirea acestora faeiliteazA proiectarea si imptementarea unui sistem cu nivel de siguranta cAt mai ridicat. Privit din perspectiva unui sistem IT, 0 solutie de securitate trebu ie sa includa atat 0 politicA de securitate, ce define~te drepturile ~i responsabilitAtile utilizatorilor, cAt ~i
I htlpJ Inm ap.o rg/"Im ageslmalli. 1

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

281

specilicatii ale asigurArii securitAtii fizice, ale componentelor sistemului de operare, ale aplica!iilor locale. precum si ale serviciilor de retea. Unul dintre principiile fundamenlale ale securitatii, fie ea IT sau de orice a~a natura. este: securilalea unui sislem esle egals cu securitalea celei mai slabe verigi. Altfel spus, degeaba iIi pui usA ull raperlormantA dacA nu lolose\>ti cheia, sau aplicat in domeniul lT: nu are rost sA cheltui sume enorme de bani pe sisteme de securitale. dacA utilizatorii !olosesc drept parole propriul nume, sau i~i lin parola lipitA pe monitor. in orice sistem existA entitA!i active (utilizatori, procese) si drepturi pe ca re aces tea Ie au asupra sistemului. in condi!iile asigurarii sBCuril<'i!ii sistemului, fundamental este principiul celui mai mlc prlvileglu . Acest princ ipiu impune alocarea drepturilor minime entitAtilor active: doar ceea ce este nevoie. Un administrator de sistem va avea acces la intreg sistemul si resursele acestuia. Un utilizator obi~nuit va avea acces doar la acele resu rse care ii sunt necesare. Cateva de mecanisme care respecta acest principiu sunt: folosirea unui director de tip home cu drepturi complete pentru
f~ca re

utilizator;

folosirea comenzii sudo si fisierului / et e/ sudoers pentru a conferi anumite privilegii utilizatorilor; (vezi sectiunea 10.3.3) separa!ia intre in!ormatiile din !isierul /e te /pa sswd seejiunea 10.2.3)
~i

/e t e/sh ado w; (vezi

lolosirea doar a dreptului de execulie pe directoare cArKI se doreste parcurgerea aceslora; (vezi sectiunea 10.2.4) Acest principiu este legal de principlut limitiirii drepturllor (vezi secliunea t 0.3.3). intrucat resursele sistemului sunt limitate, un utilizator poate ajunge sA foloseasca 0 foarte mare parte a acestora in dAuna altor utiliz atori sau a sistemului de operare, putArKI conduce u~or la suspendarea lunc~onArii acestuia. i n general, limitarea drepturilor previne atacuri de tipul DoS' (denia/of-service). Un utilizator poate crea foarte mulle procese duca.rKI la ocuparea memoriei (fork bomtr), un atac de relea poate deschide mulle conexiuni' care ocupA memorie, un utilizator poate ocupa spatiu pe disc si impiedica folosirea acestuia. Solutia este conligurarea sistemului sA limiteze drepturile uti lizatorilor sau proceselor sistemului penlru a preveni supraulilizarea resurselor ~stemului. Spre exemplu, folosirea cotelol"" previne supraindrcarea spa!iului de pe disc. Asocierea dintre 0 entitate act iva (denumita ~i subiect) ~i dreplurile pe care aceasla Ie detine asupra unor resurse (denumite si oblecte ) se numeste controlul accesului (access control). Sistemele de operare lolosescdilen te mecanisme pentru a stabili cAnd, cat de mUlt, cum si dacA poate un proces (subiect) sA foloseasca 0 resursa (obiect). o politica de securilate trebuie sa stabileasca un compromls intre gradul de lIexibililale a serviciilor IT 1li nivelul de securilale doril. Lu ate ad literam, ce rinlele de securilate ar presupune izolarea tolala a sislemului de lumea exlerioara. dar cum 0
, h IIp :1 len .wikiped i a .o'I)'wikilD" " i a L 01_ servic" ' h lip :1180 .wikip" d ia .o,glWikilFo, k_ tromb ' hllp :IIM .wikip<rd ia .orl)'wik. S Y N_flood ' htlp ;llen .wikip<rd ia.o,glwikiID i.k_qc>ola

C JPYnghted matanal

282

INTRODU CE RE iN SISTEME DE OPERARE

aSlle. de at>Ordare duce Ie limitaree tUr1C?onalitatii, cel mai adesea securitalea unui sistem asia delini!a ca un set de metoda de proteclie menila sa descurajeze si sA intAfz ie atacatorul. As igurarea flexibilitatii unui sistem presupune adi'lugarea de noi lunctionalitati. Aceasta sa traduce, in general, in creafea unai apl icati i complexe. Sa spune "complexitatea asia

dusmanul securita!ii"' .

Un principiu de baza pentru asigurarea securita!ii aSia

simplitatea 2. Orice noua caracteristic A adauga1<'1 unui sistem sau unui program poate

insemna introduce rea unai noi 1/ulnerabilitA!i.

Se estimeaza d. Inll-o compan ie

speciali za!.. pentru dezvoltarea de prog rame, sa introduc zeei de defecte (bug-uri) Ie fiecare 1000 de linii de cod. in deZ\'oltarea software, opusu l simplita1ii se nume~te feature creep': adaugarea de lunctionalitati care nu sunt necesare.

Un sislem cu nivel loarle bun de securitate se poale obtine mai usor daea planilicarea aeesluia line cant de securitale decal daca mecanismele de securilate sunl implementate dupa 0 perioad.!i in care aeesta a lost dezvcltat. Planificarea unui sislem linand cont de securitale (design with security in mind) este un laetor decisiv pentru ob1in erea unui sislem cal mai sigur. Daea. in pro iectarea unei apliea!ii, a unei re!ele sau a unui sistem, se tine eont de posibilile ataeuri, de princ ipi ile de baz.!i ale securitatii, de madiul si contextu l de utilizare a aplica1iei, probab ililitalea oblinerii unui sislem vulnerabil esle scazuta. De asemenea, orice rloi mecanisme de aSig urare a unui nivel suplimentar de securitate vcr Ii mai usor adaugate sislemului. Ingineria sofware lolosesle denumirea de secure by design'". Un exemplu eSle sislemul de operare OpenBSD", care pune accent pe obtinerea unui sistem cat mai sigur sigur. Securitatea unul sistem nu este 0 finalitate , ci un proces. Un sistem nu va Ii nieiodatll perfect sigur, cAt timp acesta esle Iol0s i1. Securitatea unu; sislem presupune un ~ir de aetiuni continue pentru a preveni pos ibile alaeur!. in general, securitatea se traduce in resursele pe care Ie poale investi un atacator fal.!i de resursele pe care Ie invesleste eel care protejeazll sistemu l (bani, timp , personal). in carlea "Secure Coding: Principles aOO Practices" (8J (capitolul 2 "Alchrtecture'). se mentioneaz.!i ca. inlr-un interviu de angajare, raspu nsul potrivit la in trebarea "CAt de sigura poti sa laci aplicatia mea?'" este "Cat de sigura wei sa lieT. Ra.spunsurile "Pot sa 0 lac sigura in lala oricarui atac." sau "Pol sa 0 fac cat de sigura se poate." ar trebui sa. rezulte in eliminarea candidatului din lista de potential i angajati. Un sistam poata Ii mai sigur decat un alt sistem, dar aeest lucru se realizeaza cu un numar crescul de resurse, stres i\l,; funclionalilali obscure. lntotdeauna Irebuie cflnt.!irit cAt de sigur se dore~te a Ii un sistem la cate resurse pot Ii investite. Nu sa poate ob1ine un sistem perfect s igur, dar un sistem trebu ie mentinulla un nivel de securitate. Operaliun i peri od>ce de mentenan!li, monitorizare. actualizare, verificare sunt necesare pentru asigurarea unui nivel dorrt de securitale. 0 d ivizie responsabi la cu as igurarea securita!ii unui sistem va trebui sa considere in permanen!.!i exterlorul ca liind a zona nesiguri. Tot ceea ce nu lace parte din sistemul controlal Irebuie
, hnp 1/www.M: hneie r.comlnew. -038 .h!m I ' hnp j len ."'ikiped ia. (),glwikilKlS S "'p,j" c ip Ie ' hltpjfen .wikiped i3.o,glwikilFealu,,,_ c,eep hltpJ len .wikiped ia. mglwikiiSe cu ro_ by _de. ig n http)/www.op<tnbsd,orgl

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

283

considerat ca 0 zoni'! cu poter"ltiale riscuri sau alacalori. <Xiee vuloorabilitale a sislemului Irebuie reparata la timp pentru a nu permile unui potential alacalor sa 0 loloseasca. Oepinzfmd de domeniu, pot exista si aile principii penlru asigurarea securita!ii. Prir"lcipiile prezenlale mai sus reprezinla cAleva din principiile de oaza ale securiti'!lii. Aceste principii nu sunt complele si nu sunt aplicate 0 singura data. Penlru a obtine un sistem eu nivel cal mai bun de securrtate, principiile de baza trebuie revizuite, meeanismele lolosile trebuie imbunaUi!ite ~i , in general, treooie exeeutate aetiuni periodice de evaluare a securita\ii sistemului.

10.1.2

Termeni

Oomeoiul securita!ii dispun e de 0 serie de lermeoi care descriu la nivel general conceplele de baza lolosile. intelegerea acestor termeni este IUndamentala pentru oriee specialisl in IT si mai ales pentru cei care doresc sa urmeze 0 cariera in domeniul securitalii. Mai jos sunl prezenta!i 0 parte din termenii de baza ai domeniului: amenin\are (threat) se relera la oriee eveniment sau circumstan!a eu poten!ial de a produce pagube unui sislem prin access neautorizat, distrugerea sau modificarea dalelor sau denial of service: ameninlarile provin ca urmare a ac!iuniior umane sau a cauze naturale; aUlanlificare (authentication) lnseamna verilicarea ider"ltiUltii unui utilizator, proces sau dispozitiv, in general ca cerin!a penlru a permite acestuia aceesul la resursele sistemului, aulorizare (authorization) eSla oleriraa sau respingaraa drapturilor da accas penlru un ulilizator sau proces; confiden\lalilate (confiden tiality) este scopul securita!ii care solicita protejarea dalelor de la incel cari intentionale sau accident ale de vizualizare/cili re; conlidentialitatea se refera alat la datele allate pe un dispozitive de stocare, cat si la eete allale in prooosare sau in Iranzit; control acces (access control) inseamna permilerea f~osirii autorizate a unei resurse, simutlan cu prevenirea lolosirii ne aulorizate sau lntrun mod neautorizat; Integrltate (integrity) eSle scopul securi tlltii care solicitll protejarea de la Incerc1lri inlen!ionate sau accidenlale de a ~erare a inlegrita!ii dalelor; integrilalea datelor presupune ca acele date sa nu Ii fost alterate/modilicate intrun mod neautorizat; la lei ca ~i confiden!ialitalea se refera alAt la dale aflale pe dispozitive de slocare, cal 5i la date allale in procesare sau in Iranzil; denial of service eSle un tip de atac care are ca elect prevenirea accesului autorizat la 0 rasursa sau int<'irzierea operati ilor critice in raport eu timpul; identitate (identity) reprezinta 0 informatie unica in cadrul unui domeniu de securitale, recunoscuta ea 0 entitate unica In acel domeniu; rise (risk) reprezinlll probabilitatea ca 0 anum ita amenintare Si'i exploateze 0 vulnerabilitate a sistemului si impactul care ar rezulta in urma aeestei ac)iuni;

".,_'.1

284

INTRODU CERE iN SISTEME DE OPERARE

vulnerabilitate (vulnerability) sa relara la 0 slabiciune la nivelul proiectarii, implementarii sau operarii sistemului, care poale Ii declansata intentional sau accidental, rezull:l.nd lntr-o violare a politici i de securitate a sistemului.

Exista 0 serie de confuzii de terma ni de nume pentru persoal1ele implicate in domeniul securitAtiL De multe ori no!iunea de hacker asia lolosila generic pentru a cataloga atacatorii de fe!ea de~i . mai coreet, denumirea corecla esla cea de craclc.er {sau black-hat hacker}. Urmaloarea li sla reprezinta denumiri le uluale folasile 5i semnificaliile acastora:
hacker aSia, in sensul sau ini!ial, un programalor caracterizal prin curiozitate ~ i dorinlA de rezolvare a problemelor exislenle (de unde notiunea de hacking' ; in sensul securitatii, no!iunea de hacker poate avea doua intelesuri: while-hal hacker (ethical hacker) sau black-hal hacker (cracker); cra cker (sau black-hat hacker esle speciali~al in alacatarea unor sisleme penlru obtinerea accesului; mo~vatia poale Ii l inanciara, politica, sau pentru distractie; scopul este, in general, distrugerea, furlul sau alterarea inlorma!iei; script kiddie este un termen peiorativ lolosit penlru a descrie persoanele lara cunostinte tehnK:e deosebite penlru a Ii considerati hackert dar care lolosesc scripturi sau programe scrise de attii penlru a ataca sisteme de calcul si relele; ethical hacker {sau wh ite-hat hacker esle un expert in securilate, specializat in metodotogii de testare a vulnerabil italii unui sistem sau a unei retele penlru a asigura un nivel cat mai bun de S8Curitate; in general, ethicat hackerii aplici!. metode similare cracileril or, dar cu scopul linal de testare ~i securizare a sistemului atacal.

10.2 Securizarea sistemului


$ecurilatea sistemului se relera la mijloacele prin care se poate proteja un sistem de calcul. Atac urile pot veni din exterior (d in Internet, sau din releaua locala) , pot veni din interior (de ta utilizatori) sau pot Ii cau~e naturale (cade rea tensiunii poate conduce la pierderea unui hard disk sau la coruperea datelor). Prolejarea sistemu lui nu se relera doar la proteclia sistemului de operare ~i a aplica!ii!or ce rulea~a peste acesta ci si la protec!ia lizK:a a sistemu lui: pozitionarea in zone sigure, lolosirea de u~ i metalice. prevenirea accesului persoanelor neaulorizate.

10.2.1 Securitatea sistemului de operare


$ecurilatea aplicatiilor trebuie sa porneasca de la asumarea gradului de risc dal de sistemul de operare. Dintre componentele sistemului de operare, 0 mare parte a atacurilor i ncearca sa exploateze limitari ale implementarilor de separare a dreplUrilor de acces la memorie sau la sistemul de fisfe re.
I htlpJ len ,wikiped ia, ",glwikiIH .ckeUp'og'a mme'_.ut>cu Itul. !

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECUR ITATE

285

Un sistem de operara aste sigur daca resursele acestuia (zone da memoria, dispozrtive de intrare/iesire. l i ~iere etc.) sun1 accesa1e in mod valid de entiUI~le active (in general procese). Accesu l valid este as igurat de nucleul sistemului de operare. ce aclioneaza ca un intermediar intre utilizatori ~i componentele hardware. Pornind de la sistemele da operare simp~ (cele pantru PDA) p<'lr1a la sistemele complaxe ce ruleaza pe calcu latoarele personale, securitatea olerita de nucleu se bazeaza pe suport hardware. Procesoare le olera ce l putin dow'l nive lUli de privilegii: un nivel de pnvilegi i pentru opera!ii obisnuile; un altul pantru accesu l la inslruc~uni prw ilegiate: accesu l la zone de memorie rezervata; accesu l la dispozitivela hardware etc. Accesul
~

aceste inslruqiuni privi leg iate este parm is doar nucleului.

5ecuritatea memorlel in sistemele de ope rare moderne, securitatea memoriei esle str1'lns leg1'lta de mecanismu l de memorie virtuala. Fara a intra in detalii, este suficienl de precizat faplul c1'l sistemele de operare asigur1'lliecarui proces un spatiu dedicat de memorie virwa la (denum it ~i spaliu de adrese ) care este mapatias ociat unor zone din memoria RAM. Zonele de memoria RAM paste care eSla mapat spatiul de adrase al unui procas nu poate Ii accesat de catre alte procese . Problemele de securilate la nivelul memoriei lin de detectarea corecla a incercarilor de accesare a unor zone de memorie care nu sa afta in spaliul de adresa al procesului respactiv, dar ~i a iroc ercahlor de sch imbara a unor zone de memoria in spa?ul propr iu de adrese, pe parcursu l rulari i procesului. Fiecare proces are propriul sau spa!iu de memorie virtuala mapat paste un spa!iu de memor;e l izica printr-o latJela de translatare ce apaT1ine procesului. Pentru un proces care incearca sa accesaze 0 adresa de memorie pentru care nu exista 0 translatare catre 0 adresa lizica (ad;ca pantru care nu exista pagina respactiva de memorie i n RAM ), procesoru l va varif;ca la nival hardware daca respectiva adresa se afti'!. in spatiul de adrese al prooosului. Daca se afta, inseamna ca respectiva pag ina de memorie a lost avacuata pa d isc (swap) si trabuie adusa in RAM. in caz contrar va Ii general un semnal de pag in a (de memorie) invalida (denumit page fau lt'), pe baza caruia nucleul va putea decide suspendarea sau terminarea procasului in cauza. in sistemele Unix procesul prime~te semnalu l S I GSE GV, ~i are ca elect terminarea procesulu i cu mesajul "Segmentation fault'. Toate acesle opera!iuni cad in sarcina procesorului si sunt realizate la nivel hardware. Pro1ectia memoriei asle 0 componenta esentiala a siSlemelor multitasking (sistema ce olara posibi lil ataa mai mullor procese de a se aHa i n stare de execulie in acelasi limp). Din punct de vedera hardware, primela procesoare pentru calculatoarele parsonala ce olara suporl penlru proteqia memorie; sunt prooosoare le din lam ilia Intel 80386 2. Folos ind mecaI1isme imprumumate de la DOS, cara ru la pa sisteme lara suport
, http ://M .wil<;p..d ia .orglwi<ilPag.o_fau h ' http ;lle n ,wil<;p..d ia,o,glwikillntel_80386

C JPYnghied ma'ana.!

286

INTRODU CERE iN SISTEME DE OPERARE

hardware (8086, 80266 ), versiunile de Windows pAnli la Windows 98 si Windows ME nu au oleril 0 proteqie complelA a memoriei.

10.2.2 Controlul accesului


Controlu l accesului sa relera la oferirea accesului autorizat 5i preven irea acccesului neau\orizat la sistem. Poate Ii vorba de accesu l !izie al unei persoane sau de accesul

unui utilizator in cadrul sistemului de operare.

Securitatea !iziea

Securilatea fiziei!. include 0 gamA larga de parametri, de la controlul accesului personal


pan! la asigurarea diferi\ilor parametri optimi de funclionare. o primA compor'lenta a secur~a.tii lizice presupune plasarea ochipamentelor in locuri In care 5e poale asigura controlul accesului, penlru a preveni utilizarea neautorizala, distrugerea sau iurtul. Spedicaliile de alimentare cu tensiune vor include evaluiiri ale consumului de putere pentru dimensklnarea surselor neinteruptibile de putere (U PS-uri). sau a generatoarelor de tensiune. As igurarea temperaturii optime in centrele de operalii tine de folos irea unor sisteme de aar condilionat sau de ir.c<'ilzire cu un grad rid icat da radundant<'i. Exist:!i 5i carinta da protactie impotriva incand iilor : 0 camara cu sarvare va trabui sa aiba, pe langa sisteme de detec!ie ~i stingere a incendiilor, ~i poctea ~i pere!i din materiale rezistenta la Ioc.

o bun<'i pol itic<'i de securizara va urm<'iri plasarea echipamentelor in bunkere allate la 5ubsolul cl:!idirilor, urmarindu-se astlel ~ i protec!ia impotriva cutremurelor.

Secutitatea fa nlveluf utilizato tll ot Una d intre componentele asantiale ala unei politici da securitate asta securitataa la nivel ul utilizatorilor. Securitatea utilizatorilor se bazeazA pe separarea resurselor fiecAru i utilizator. precum si pe folosirea autant~iciirii pentru protejarea accesului la resurse. Principiul important de prevenira a atacuri ler la nivalul utilizatorilor este principiul celui mai mic privHeg iu. Orice operatiune trebuie executaiA dintr-un cont cu drepturi d.t mai limitate. Un adm inistrator novice va lolosi contul privileg iat inclllSiv pentru electuarea unor operatiuni uzuale. Exploatarea unor amb iguitA!i ale variabile lor de madiu poate duce in acest caz la rularea accide ntal;"i a unei aplicatii malitioase l;"isata intr-un spatiu public (gen Itm p / ), rulare ce nu ar Ii lost pos ibil;"i d intr-un cont de utilizator. Una dintre criticile aduse sistemelor din familia Windows a lost crearea unui coni implicit de l ip Administrator care of era drepturi depline utilizatorului sistemului. inclus iv instal area atanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

287

unor programe malitioase. incepAnd cu Windows Vista, acest lucru a fost combatut prin lolosirea User Account Control'.

10.2.3 Parole
De~i mecanismele de autentihcare sau divers~icat. in continuare 0 pondere sem nificaliva 0 constitu ie pe rechile <ut ilizato r , parol.!> . 0 solu!ie alternaliva, ce of era un grad mutt mai rid icat de scatabilitate, precum si de securitate, este lotosirea de certificate. Conceptul ce sUi. la baza folos irii de certificate se nume~le PKI2 (Public Key Infrastructure).

Numarul resurselor electronice fi ind in continua cre~tere, mul!i utilizalori ajung sa com iti'!. cel pulin una dintre erorile de cap.i!.tAi ale autenlilicarii: alegerea de parole usor de ghiC~ (spar!), folosirea unei pa role penlru mai multe conturi sau notarea parolelor in locuri nesigure.

Alegerea parolelor Una dintre principalete pro~eme in alegerea parolelor este folosirea de parole prea simple. Mul!i utilizatori folosesc numele propriu , numele soliei, copiHor sau cAine lui. 0 data de nastere, numele echipei preierale. Aceste paro le pot Ii usor ghicite prinlr-un atac de lipul dictionar. Se spune ca, 0 parota eliCienl<'i: Irebuie sa aiba un

numar de minim 7-8 ca ractere;


~i

Irebuie sa foloseasca atAI minuscule, cat

majuscule
(~i

~i

cifre;

trebu ie sa includa eel pulin un caracter special cadrul parolei); nu Irebuie sa l ie un cllVant din diclionar; nu Irebuie sa l ie un

nu doar pe ultima pozitie in

nume de persoana.

Cu toate acestea, parolele trebuie sa fie u~or de relinut. in aceasta situatie, cea rnai la i ndemana sol utie este alegerea unei fraze pe baza care ia se poale deduce parola (vezi Ross Anderson - Security Engineering, seejiunea 3.3.3 [3]). "Come 10 the dark side, we have cookieS!" peate Ii lolos~a pentru a retine parola "Gtlds, whc!", dupa cum "$adal engineering bypasses aI/technologies, including firewalls- poate genera -53001, If". In cazu l lolosirii unei parole ce nu respecta recomandarile de mai sus. atacurile bazate pe dictio nar (incercarea parolelor ce apartin unui set de cuvinte comune), sau ce le bazate pe loTlA burta (incercarea luturor combina)iilor de caractere) pot avea rezultate aproape imediate. E ~ista numeroase aplicat ii ce simuleaz1l asllel de atacuri, una dintre cele mai re numi\e liind John the Ripper'.
, h lip :1/80 .wikipe d ia .o,glWikiIU ' 8'_ Acco unl_ Coni ro l ' hllp :1180 .wil<;p..d ia .mgIWiki/PublkUlo y_;nfrasl,,_<:lu , e ' htlp ;liope nwall,comljo h rV

C JPYnghted matanal

288

lNTRODUCERE iN SISTEME DE OPEAARE

De la conturi triviale de downloacl pAnA la conturi le de email, sau la conturile bancare

electronice, tot mai multe resurse salieila 0 autentificare pe baza de parola. Esle idea tE!. separarea conturllor prJn parole Individuate. Cum aces! lucru presupune
memorarea unui numar ridicat de fraze , 0 solutie de comprom is consta i n folosirea unor parole comune pentru servicii similare cu miza de securilate redud . Astlel, nu eSla prl.!dentA to lO$i rea PINului cardului de bancA pentru contul de mail ; un alae de fortA brula ar dura aproximativ 0 microsecundi:i. Se peate insa folosi aceeas i parorA penlru mai mulle site-uri de desd!.rcare de soltware. Desi folosirea unor parole comune pentru servici i electroniCe cu miza mk:a reduce numArul parole lor, acestea pot Ii insa. destul de multe. In plus. po liticile de sec uri tate solicita schimbarea period ica a parolelor: timpul de viata recomandat pe ntr u 0 paro la este de ~se luni. in masura in care parolele lolosile nu pot Ii memorate, vor Irebui notate, 1n mod evident, notarea parolelor nu trebuie lacuta pe 0 foaie cu acces public. o solutie pe ntru parolele rar lolosile consta in paslrarea lor centralizata. Exista numeroase aplicatii menite sa protejeze printr-o singura paro la 0 baza de date de parole {spre exemplu KeePass ' , Conslie nlizarea imporlan!ei unei parole nu line doar de protejarea unor res urse personale. ci de gradul de securitate a intreg ului sistem, precum si a relelei locale. Ailiel spus, intro relea in care utilizalorii lolosesc parole Iriviale, riscu l nu esle doar unul personal. Un atacator poate sa comprom ita. din Inlernel un cont loca l. translormand un alac de la dislanta inlrunul general de pe aceeasi masina., ceea ce ii cre~le mull sansele de succes. Acesta este si motivul pe ntru care au evoluat si mecanismele pr in care administratorii de retea pol lorJa lolosirea unor parole e/iciente. AIM relelele Windows. cat si cele linux olera suporl penlru securilalea bazala pe jetoene herdwere (S6curity /okeri) ce isi rege nereaza. parola la fiecare 30 sau 60 de secunde. Odata sir.cron izat ceasul serverului cu ceas ul jeton ului hardware, utilizatorul va lolosi numele sau de cont si parola af~ala de jeton la momentul autentil icarii. Pre!ul unei astlel de solu!i i esle de 510 euro pe r jeton hardware. liecare jelon Irebuind reco nligural la 6 luni. Trebuie remarcat lotusi ell. aceasla. sol u!ie nu rezolva risc uri le de securitate fiz ic! a parole i.

Gestiunea parolelorin Unix Parolele erau. ini!ial, stocate in fisierul I ete/ p as s wd, dar, pe ma.sura. ce precalcularea 5i stocarea parolelor comune J a devenit posibila, a aparut nevoia unui fisier separat, cu permisiuni mai stricle, in care sunl slocate parolele. Acesla se nume~te le t el s h ado w si lormalul sa u. cat ~ al /ete/pas s wd, eSle descris in sectiunea 3.3.1. Utililarul pentru schimbarea parolei in Unix este pllss vd. Utilizalorul privilegial (rool) poale sch imba parola orica.rui utilizalor, ir.clusiv a sa, Un utilizator neprivilegial poate schimba doar paro la proprie. inainle de a schimba parola ii esle solicilata parola propr ie penlru a preveni s itua!ia in care un ulilizator uila. 0 sesiune shell deschisa.
2
~ li n ~ @v~ lh a ll a , -$ pa$$wd Cha n gi ng password Cor a ll na .

, httpJIktt&pa.. .inlo/ ' http;l/e n.wil<ip<ld ia. mglwikiiSecu r~y _loke n ' Un ulf&1 de ~ I ac se numesle dictionary allac/< : http;l/e n,wi<ip<ld ia,o'giwikiIDic1 ionarLaliack

CAPITOLUL 10. ELEMENTE DE SECURITATE


, (current) UNIX password : EnteI ne" UNIX password :

289

"

Retype new UNIX p assword :

pass"d: p a "ord updated successf ully

Daca se doreste obtine rea unei parole usor de retimJl, dar care sa fie relativ sigu ra, se 11 mod implicit parole de 8 caracte re peate lolosi utilitarul p"gen . p"gen genereazli 1 (incluzaoo cilre):

, , ,

dina@va lha ll a : -$ pwgen uo3Ph@ i s ali n a@va lha l la:-$ p wge n Eeb 7Aej~ XooObe i r

-,
-" ,

Utilitarul permite "persol1alizarea" parolelor ob!inute. in exemp lul de mai ios. parametrul - Il pre<:izeaz1'i laptul ea In paro la va Ii inclus1'i eel pubn 0 cilr1'i, parametru - c de va delini lungimea paro lei dorite. Ultima cilra reprez inta numarul de parole ce trebu ie generate.
, aiina@valhalla : -S pwgen -n -c 7 3 ahnqez5 a iv5I e c bi e 3poR

10.2.4

Securitatea sistemului de fisiere

Securitatea sistemului de li~ie re urmareste asigurarea izolarii utilizatorilor prin separarea lisierelor personale si pri n definirea ac!iun ilor pe rmise de ulilizatori pe diverse sectiuni din ierarhia sistemului de li~iere. Fiecare utilizator dispune de 0 intrare (un dire<:tor) in sistemul de l isiere pentr u ca re are drepturi depline. in Unix, acest director se gliseste in ihome . in Windows Vista, acest director este subd irector al c, \ Use rs . Utilizatorul poate controla actiunile permise pe lisierele con! inute in respectivul directo r. Unele intrari in sistemul de lisiere nu pot Ii lolosi te decAt de utilizatorul privileg iat.

Conlrolu l accesului Controlul accesului la d iverse elemente ale sistemu lui de lisiere d ilerA lntre sisteme le Wiooows si cele Unix. i n Windows, sistemu l de lisiere NTFS olera de la versiunea 4.0 posi bilitatea definirii unei lisle de acces pentru liecare utilizator din sistem. AceastA listA de acces este defi nila in raport cu sapte tipuri de actiuni: Full Control, Modify, Read & Execute. List, Read, Write, Special Permisions. Subiectul drepturilor de acces pe un sistem de fisiere NTFS este tratat mai pe larg in studi ul de caz al acestui capitol in se<:tiunea 10.6.1. Abordarea in cawl Wiooows este 0 lorma a mecanismului de control a accesului ' . Abordarea folosita in Unix pentr u delinirea dreplurilorde acces la sistem ul de fis iere este o matrice de drepturi. Pentru a ob!ine 0 matrice limitata, se lolosesc Irei trepte de privi legiu:
, http;lI. n.wiloiped ia.orglwikU Aceess_eontrol_l isf

290

INTRODU CERE iN S IS TEME DE OPEAARE

Tabelul 10.1: I

de acces in Unix

utllizat orul {user} ca re delina lisierul;


grupul (group) ca re del ina fisierul:

al!i utilizat otl {others}.


Pantru fiecare dintre cele Irei treple de privilegiu sun. definite clUe Irei d repturi:

cilire (read) - permite vizualizarea con!inutului unui director sa u a unui lisier;


seriete (read) - permite alte rarea con! inulului unui fi~ i e r sau director. Pentru un director, altera rea contin utului inseamna posibilitatea siergeri; sa u crearii de !isieta;

execu!ie (execute) - permile execu!ia unui li~ie r ~ i permite parcurgerea unui director; daca un director nu are drept de executie, nu peate Ii parcurs (nil sa poate ajunge la fi~iere l e si subdirectoarele con!inule). AV3nd tre i Ireple de privilegiu si \rei drepturi pentru liecare Ireapta, re zulta un total de 9 drepturi care pot Ii conligurate pentru un lisier dat. Forma liniarizata a matricei de acces (si a celor 9 drepluri) eSle alisala de comanda 1 5 cu opliunea de long listing (- 1):
root@ro" ~ du , -,-I

-ld

Iv~rlsvn/hhll/dbi

> dc"xr - xr - x 6 hfall

project ~

~096

J ul 23 13 , ]4 Ivachvn/hhll/dbi

in lislingul de mai sus, ulilizatoru l asocial direclorului /va c /svn/hfall/db / , (h fall ), are drepturi complete (r\o/x ). iar grupul asociat (projects) Si cei lalli utilizatori au drepl de cilire ~i executie (r- x) (se poate vizualiza 5i parcurge directorul). Forma liniarizata a malricei de acces penlru un lisier (afisata de comand a 1$ - 1) eSle prezentala in l igura 10.1 .

lip

I I utiliZOlOf I I
, ,

"

.. ,
grup

II

.~ i i

, ,

I
P""'" fi ox..:utat, '" p o",~ p.rc u r ~~ 000 fi modil k .. . "" 00< ( ~./~," .... e fi~i" '" n oitit . '" 00< oitl fl~~ r~ l. oonl inu," poot. fl uutat. "" po.t. puco rg. fl modfkot. , . 00< ( ~~to .... ~ f l ~ i .~ fi cit it, '" 00< oiti fi~ e rol" conlinut< 00" . Ii ....:ut. t , "" ""Ole "u rge II modi NcOl . " pot ''''. 4 t .,ge l il i.", P""" Ii <Itit. "" po' <iti ~~~ re l . co" ' inut . l ifi"' O~if"u i l

PO""

po". poo'.

_to

I ; n~

director

Figura 10.1: Permisiuni Unix

CAPITOLUL 10. ELEMENTE DE SECURITATE

291

Penlru a specihca mai succint drepturile de acces la un lisier, utilizatori i avansati Unix prelerA forma octalA a drepturilor de acces la un li~ier. in eadrul acestei lorme, lieeare drepl de aeees esle inlocuit cu un bit. Astfel. in eazul listing-ului de mai sus, drepturile de acces sun\:
""X I -X I -X

> III 10 1 10 1

Fiecare pereche de tre i bi!i (asociata unei trepte de prMlegiu) este tranformata inlro valoare octala. Forma linata., in octal, pentru drepturile de mai sus este, asadar 755. in tabelull0.2 sunt prezentale cateva exemple de asociere inlre forma literala si forma octalli a dreputurilor de aeces pe lisiere in Unix. Tabe lull0.2: Permisiuni in format lileral . octal

ehown

~i

ehmOd

i n administrarea seeurita!ii sistemului de li~iere in Unix, utilitarele de baza. sunt ehown ~i chmad. Primul afera posibilitatea sehimbari i proprietarului ~ i a grupului cliruia Ii apal1ine respeclivul fisier. in vreme ee al doilea permite modilicarea dreptu rilor.
Ioot@k i wi: - ' chown - R geoIge : useIS test!

i n exemplul de mai sus a lost electuala. 0 schimbare recurs iva. pentru toate fisiere le si subdirectoarele directorului test/ . i ntreg con!inulul directorului test! va apal1ine utilizatorutui george si grupului users. Daca. se sintaxei:
dore~te

doar modilicarea utilizatoru lui sau grupului, se

lolose~te

doar 0 parte a

Ia<van @ v a lh a ll ~ : /tmpS

> chown : chanqinq

own e I ~h1 p

c h own al,na b~ttle"hip of ' bHtl ~ "hip' : Ope ration not

peImitt ~ d

, 6 ,

razvan @ va1halla : /tmpS s udo bash roo t @ valhalla : /trnpt chown alina ba t tl"sh i p root@va l ha ll a,/tmp' 1$ - I battleship - r,,-r--r-- 1 a li na razvan 0 S ~p 19 18:0 1 bHUeshi.p Ioot@valha ll a,/tmp' chown : sha dow batt l eshi.p root@ ... ~ lh ~
ll ~ : ltmp'
~ l1n ~

" "
13

,. - r"- r-- r-- 1

15 -I bHtleship shadow 0 Sep 19 18:01 b attleshi p

in exemplul de mai sus a fost schimbat utilizatorul si grupul fisieru l / t mp/ b at t les hip in alina, respectiv shadow. Se observa. ea. in Li nux. un utilizator neprivilegiat nu

292

lNTRODU CERE iN SISTEME DE OPEAARE

poate schimba delinalorul unui fisier.


caIre
utili~ato rul

In

li nux, comanda chown eSla 10losil1l de ar de

privilegiaL Pe alte Unixuri (spre exemplu, Solaris) comand a poate Ii

folos ita 5i de un utilizalor neprivilegiat.


Comanda chmod permite modifica rea dreptur ilor de aeces ale unui fi~ier_ Comand a peate Ii lolosita dcar de ulilizatorul ce detine fisierul sau de utilizatorul privilegiat. Noile drepturi ale fi~ie rul ui pot Ii preciza\e in forma literala sau oclal,l. Fie !isiarul hello . c de rna; ios:

1" - 1 hello . c - rw- r -- r -root@ kiw i : ~f

razv~n

new 81 Oct

621 : 35 heU o . c

Pentru sChim barea drepturilor S 9 va Iolos; mai int1l.i forma lite ralA. Drepturile pot Ii prec izate pentru oricare dintre cele Irei niveluri de privilegiu: utilizator, grup, alIi utili zatori printr-o singura liter1'i: U , g , 0 , Drepturila pot Ii:

ad1'iugate prin fofos irea operatorului +; inf1'iturate prin lofosirea operatorului- ; precizate explicit prin lolosirea operatorului - ,

,
, ,
10 ,

toot@ k iwi : -f c hm od o+x hell o , c root @ Hwi : -f I; - 1 hell o , c -r ,,- r -- t - x 1 r azvan new SI Oc t root @ k iwi : -f chrnod u - rx hell o , c

62 1: 35 h"llo , c

<oot~kiwi:_f

- <- xt -- t - X

I s - 1 h ello , c 1 uzvan new 81 Oct

62 1: 35 h e ll o . c

in exemplul de mai sus a lost mai int<'li ad<'lugal panlru restu l utilizatorilor dreptul de execulie, iar la al doilea pas s-a precizat explicit cEi. drepturile utilizatorului trebuie s1'i lie "x adic1'i doar citire si executie. in format octal, pentru a acorda toate drepturile utilizatorului ("wx ). drepturi de citire ~i executie grupului (r - x), si doar drepturi de citire pentru restu l utilizatarilor (r -- ) este suficienta 0 singura comanda:

<oot@ ~ !wj : f

c hmod 754 hello . c

<oot@hwi : - I I; - 1 h ello . c - c wxc-x r -1 u.van new 8 1 Oct

621 : 35 h el l o .c

umask Penlru controlul drepturi lor unei noi intr1'iri in sistemul de !isiera sa loloseSl e un paramelru de re striclie numit maseii de creare (file mode creaUon mask) Drepturile efecU ve ce va r Ii atribuite unei noi intril.ri in sistemul de lisiere se oblin prin eiectuarea operaliei de 51 logic intre valoarea inversatil. a mastii si permisiunile implicite ( 666 pentru !isiere ~i 777 pentru directoare). Reprezentatli matematic, operalia este de faul t -perm & ~ma sk . Comanda ce permite inspectarea
~i

modificarea mastii se

n u me~te

umask.

CAPITOlUl10. ElEMENTE DE SECURITATE


u""'s ~

293

, ,
~
~

root@Uwi : -I 0022
root@ ~ iwi : - I

t.ouch us o, _ test l

root @ki wi : -I I ; - I UM,_t M tl - r ",- r -- r -- 1 r azvan razvan 0 Nov 10 1 7 : 28 u,07 _ t,, , tl root @ ki wi : - f
uma ~ ~


"

02"J

root @ l:i wi : -f touc h U$07 test2 roOthiwi,-' ls - 1 us o"J _ test2 - rw-r--- - 1 razvan ruv~n 0 Nov 10 11 : 28 u"o1 _ test2

" "
,.

"
18 ,.

"

root @ Uwi : -1 I ; - Id UM"J_tMt_dirl dr",xr - x --- 2 r azvan razv~n 1024 Nov 1 0 1 7 : 29 u,oi_tes t _ dir

in listingul de mai sus, in primti lazti masca are valoarea 0022 . Acest lucru inseamnti cti un li~ i er nou creat (usc ?_testl va avea drepturile

666

-022 _ 666 755 _ 110 110 1 10 111 10 1 101 - 110 100 100 _ 644 _ "W- r -- r - -

in ultimul pas, masca are valoarea 021. Oireclorul u sc? test _du/ drepturile
111 , 2 -021 _ 177 & 750 _ III 111 1 11 111 10 1 000 _ _ 111 1 01 000 _ 750 _ r ",x r -x ---

va fj creal cu

10.3 intrefinerea sistemului


Oupti conligurarea drepturilor de acces la nivelul sistemului de operare sau al sislemului de fisiere, unui sislem Ii trebuie asiguralti mentenanta. Aceasta presupune verilicarea periodicti a nivelului de securitate a sistemului. a jurnalelor, a actiunilor utili zatori lor ~ i proceselor. Prevenirea atacurilor este cea mai bunti forma de asigurare a securittilii, iar un administrator de sistem prolesionist va inspecta periodic sistemul si va lua m<'i.surilor adecvate aturICi cand siguran!a sistemului este pericl itata.

10.3.1

Monitorizarea sistemului

Monltotlzarea dlnamlca a slstemulul Monilorizarea dinamicA (in limp real) a sislemului urm<'i.re~le nivelul de inc<'i.rcare a diferitelor resurse hardware. Astle l. pentru a determina gradul de incArcare a procesorului se poate folos i comanda uptillKl. Pentru a urmAri nive lul de folos ire a memoriei RAM se poate folos i comanda t"r&&.

29.

lNTRODU CERE iN SISTEME DE OPEAARE

ComarKIa top (vezi sectiunea 5.2.4) comb ina informatiile clerite de comenzite uptim .. si free .
top - 14:05 : 0 up
U' ,

>
"

T~ s k 5 :

6 1 tot a L

Cpu Is) : 99. H


Mem ,

8 : 12 , Z user~ , lo"d "veu9'" 1.01 , 1.02 , 1.QO 3 runHng , 58 sleep i ng . 0 ~ topl'ed . 0 zomb i e 0 . 3t 'y , 0 . 0 \ nl , 0.0 \ i d . O. Ot ,,~ . 0 . 0 \ h i, 0. 0 \
2542001: used,
1 444l<
2S40~

"

,
~

Swap :

2S6HOk tot"l , 289129k tota l ,


NI

fr"" ,

usea ,
SHR S

29169H f ...,.. .
'C~U

12680k buffers 413561: c3che(!


TI M+ COMMAND

10

"

" " " " "

PIP USeR 2490 www-dat a 14067 "oot 1 root 2 root 3 ""ot 4 root 5 root 31 root 41 root

VIRT

RES

\MeM

5 8
14

" ,

o 26204 18m 12m R 99.S o 2064 1036 1852 R 0 . 3 o 1504 512 1352 S 0 . 0 19 0 0 0 S 0.0 - 10 o 5 0.0 - 10 o S 0.0 -lO o S 0.0 - 10 o S 0.0 o S 0.0

, , , , ,

, " , , ,

7.5 0.4 0.2 0.0 0.0 0.0 0.0 0 0 0.0

2'5 : 2~ . 52

apache
top in it

0 : 00 . 02 0 : 00 . 73 0 : 00 . 00 0 : 00 . 00 0 : 00 . 00 0 : 00 . 00 0 : OJ . 15 0:00.00

ksoftirqd/O
ev~nt"/O

k helpe r k acp i d k blockd/O pdflush

Prima linie conIine (in ace l a~i format) informa!iile oferite de comanda uptime: ora curenta, in tervalul de timp de la ultima in~ializare a sistemului (in cazul exemplului 8 ore si 12 minute), numarul de utilizatori autentificati in sislem ~i incarcarea medie a sistemului pentru ultimele 1, 5 sau 15 minute. 0 incarcare supraunitara este echivalenta cu un sistem solicitat. liniile 4 ~i 5 ofera informa!iile specifice comenzii t"ree . linia 4 descrie incarcarea memoriei RAM, iar linia 5 indica nivelul de utilizare a part~iei de swap. Folosirea unei cantilali ins em nate de memorie din swap indica faplul ca memoria RAM este insuficienta pentru cerintele sistemului. In exemplul de mai sus se observa ca procesorul este supraincarcat, in vreme ce memoria RAM esle bine dimensionata (pentru ca memoria swap nu esle folosita). InspectAnd mai departe procesele cele mai re levante din punctul de vedere al consumu lui de resurse se observa ca procesul apache a petrecut in procesor 275 de minute, adica mai mutt de jumatate din timpul scurs de la ultima ini!ializare a sistemului. Se observa, de asemenea, ca, in momentul rt.Jlari i comenz ii, procesul <lp<lche folosea 99.5% din procesor. Acesta este un comportament neob i ~nu it. Pentru un sistem bine configural cele mai active procese vor reusi la nivelul unei luni de zi le sa. ocupe 12 minute. Concluzia analizei dina mice a sistemului de mai sus nu este ca resursele hardware sunt insuficiente, ci ca unul dintre servicii (mai exact serviciul de web) are un comportament anormal. Prima masura ar trebui sa fie oprirea procesului apache si inspectarea configura!ii lor specifice acestui daemon.

Monitorizarea utiliziirii discului o alta res ursa importanta. a unui sistem 0 reprezinta spatiul liber de pe harddisk. Pentru aceasta trebuie monitorizat nivelul de ocupare a partiti ilor definite pe disc, dar si dimensiunea unor directore ~ i fis iere.

CAPITOLUL 10. ELEMENTE DE SECURITATE

295

Spatiulliber pentru partitiile diseulurilor sistemului se poate vizualiza eu ajutorul eomenzii df:

, ,

roo t @ c ur , uri :/ h ome/ c our ~ e ~ f

-0
Ava il 1. 2G
1 2~M

F ih'y,te m / d ev/ h da l tmpfs


/dev/ hd a ~

Siz@ 4 . 6G
1 2 ~M

U ~@ d

u,,, \

Mount"d /dev/shm /home

J . 2(;
4 . 0K

n,

in exemp lul de mai sus spa~ul pe disc este imp!!.r1i1 in dou!!. parl ilii: una folosit!!. pentru rularea sistemului (montata ca / ) $i 0 a doua lolosit!!. pentru stocarea date lor utilizatoriior (montata ca /ho me). i n acest lei. cniar daca spa!iul pe parlitia /home este epuizat, acest lucru nu va a/ecta /unelionarea sistemului. In cazu l in care se dore~le inspectarea dimensiunii unui li~ier anume se peate !olosi comanda is sau comanda stat :

'"'

) . 2(;

" '"

'"

""

> - rw- r ----- 1 root

roo t ho.e d u: -' 10 - lh /v o r/loq/opo che2/occe . l oq ~dm 1. 2M Sep 19 20 : 1 2 /var/ l oq/ ~ p ache2/ ~ ccess . l o q - C \s Ivu/loql a p a ch"21 a cc,, . l og

root@ro."du : -I 9t H 5 7482956

Pentru a obtine dimenSiunea unui director se peate lolosi coman da du:


roo t @ c u r. u ri:/home/cour s e s # du - sh rC 155M rC

Monit orlzarea servl clilor d e relea Pentru monitoriza rea net&tat .


serv~ i ilor

de relea disponibile pe statia locala esle lolosit ulilitarul

Apelat I!!.ra niCiun parametru, netstat va ali$a 0 lista cu toate conexiunile active (portur ile aflate in starea de listen se considera inactive). 0 utilizare Ireeve nta a aceslui utilitar urm!!.reste testarea lunclionalih'itii anumitor servere (HTTP,FTPetc.). i n general, aceste servere asteapta conexiuni TCP sau UDP pe anum~e porturi. Penlru a obline lisla tuturor conexiunilor TCP, se poale lolosi:
r oo t @ r o,e du : -' net,tat -- tcp -- all

> Active lntern et conn" ctions \s ervers a nd establi $ hedl


, "
6

Proto Recv - Q Send - Q Local Address tcp 0 O ' : ss h o . : smtp o tcp tcp o . :g i t o

I'orei qn

"'dd~"ss

State
L I S TEN L I STEN L I STEN

.:

(. . I

Pentru a verdica lunctionarea dileritelor servere instalate, care ascultli. eventuale cereri de conectare. esle utila comanda :
root@rosedu :-I n" t stat -- tcp -- li s teninq
3
-- nu m" ~lc - port s

> Ac t ive Inter net conn@ctions (o n ly se r ve""l


" Proto Recv - Q Send - Q Local Ad dress tcp 0 0 0.0 . 0.0 : 22 tcp 0 0 0 . 0 . 0 . 0 : 25 t cp 00 . 0 . 0 . 0 : 9418 I'o r e i qn "'ddr"H 0 .0.0. 0 : 0 .0.0 .0 : 0. 0. 0 .0 : State
L I STEN L I STEN LISTEN

296
7

lNTRODU CERE iN SISTEME DE OPEAARE


0127 . 0 . 0 . 1 : 3306

tcp

0 . 0.0.0"

LISTEN

"

(. .I

Se observa ca sistemu l ma~ina locala exisUi servere care ascuitA pe portul 22 (SSH), 25 (SMTP) sau 3306 (mysql). Asadar, server-ele SSH, SMTP si mysql sunt functionale. Pentru vizual izarea co nexiunilor UDP, se poate utilize parame\rul -u sa u --u dp

Sa presupunem eli sa descopera un server care lunctioneaza (sa ana In starea LI STEN)

pe porlul 22. Pentru oprirea acestui server pulem opri procesul corespunzalor, inainle
insa. trebu ie allal pid-u l aces!ui proces (optiunea - p sau --progr am):

, ,
,
,

co,

root@roseau:-I netstat --tcp -- liste ning --progum --noIDH i c-ports A.ctive lnt ~ rn e conne ction s (only server') Peoto Mcv- Q Se nd - Q Local Addre ~~ For e ign I\ddr e~~ S t ~ t e PID/Progra m Mme 0 . 0 . 0 . 0 : 80 0 . 0 . 0.0 : LISTEN 572l/apache

I .. 1
tcp6 tcp6

, , ,

, , ,

::: 22 : : 1 : 25

: : : : : :

. .

LISTEN LISTEN

5515/ .. hd 5505/maoter

Ulterior. se poate trimite un semnal KIL L catre procesu l cu numarul 5515.


root @ r o, @ du : -I kill -KI LL 5515

Monitorizarea activitii!ii utilizatorilor Pentru a determina ce utilizatori sunt autentilicati la un moment dat in sistem se loloseste comanda who :
2 3 root@cursurJ:-1 who so pt./O Aug 10 IJ : 50 I~n~cond~.c, . pub ot pull Aug 10 14 : 05 IkiwJ.cs.pub.rol
. rol

Din exemplul de mai sus se poate deduce ca in sistem sunt autentilicali utilizatorii so ~i ot. Ambii utilizatori au acces in sistem prin emu latoare de te rminal (p ts ), cu alte cuvinte prin intermediul unor ses iuni la distanla. Sesiunea utilizatorului so a lost initiata la ora 13:50 de pe sta!ia anaconda. cs . pub . ro, i n vreme eEl sesi unea uti lizatorului ot a lost lnceputa la 14:05 de pe sistemul kiw i . cs . pub . roo Pentru a determina ce utilizatori au lolosit sistemul in ultima perioada, se poate lolosi comanda 1 aa t :

,
,

root@swarm : -I l ast pta/l pte/l &ndreif pt.12 andr~if pts/2 &ndreif pts/2

-,
141 . 85 . 37 . 227 la8 . 27 . 10 5 . 225 81 . 181 . 250 . 24 81 . 181 . 250 . 24 81 . 181 . 250 . 24 1 08 : 01 : 55
200~

r oot root

.. , 'e, .. , '" " .. , '" " .. ,.. .. ..,, """


,

20 : 24 la : 21 14 : 55 14 : 25 14 : 01

still 109geo U : 39 100:11) 14 : 56 100:00) 14 : 41 100:151 14 : 25 100:241

,"

" t mp begins Tue Sep

10.3.2

Jurnalizarea

~i

gestiunea jurnalelor

Majoritatea serviciilor sistemu lui ruleaza. ca daemoni (vezi sectiunea 5.3) si nu pot comunica d irect cu utilizatorul. Utilizatorul interactioneaza cu servicii le prin intermediul

CAPITOLUL 10. ELEMENTE DE SECURITATE

297

semnalelor si a fisiere lor de configu rare, iar serviciile of era info rmatii de stare, raportare ~i funclionare prin intermediul f i ~ierelor jurnal (server logs).
Fi~iere l e jurnal pol avea diverse formate. dar, in general, liecare linie de tip jurnal precizeaza ora ~i data, adresa IP cu care serviciul a comuniCat ~i 0 descriere a mesajului. Unia de mai jos este 0 parle dinlrun jurnal al unui server Apache in Common Log Format. in cazul de fala este yo rba de a conex iune iniliala de web crawlerul de la Yahoo! ' .

72 . 30 . 78.249 - - [19/SepJ2009 : 20 : 29 : 26 +0300 1 "GET It&q/plC&s~1 HTTP!l . O 2006331 " - " " Mo zlI1a/ 5 . 0 Icompatible ; Y ~ lloo ~ Slurp/3 . 0 ; http : //help .
y~hoo.com/help/us/ysearch/s l urp)

Pe un sistem
~p~che2

U n i~ ,

jurnalele se gAsesc, de obicei, in Ivar 1 10g/ :


Ivar/lo9 daemon . log 4 . g" debu9 drne$9 dmesq . O k e r n. l og kern. l og . last l og lpr . log

, roo t @s"a rm :-I , .0 '" , '00 , &uth . log . O


~ uth .

"

mai.1.l og . mai.l . log . s. gz


rna; I . log .

.y. l og sys l og syo l og

mal1.log . 6

. 2 . g"

"

syslog

(. .. I

Crearea jurnalelor sy s k loqd este un utililar care permil e lucrul cu mesajele sistem si cele generate de kernel. Pe scurt, aplicatiile trimit dilerite mesaje catre syskl ogd iar acesta, utilizfu1d un lisier de configurare. depune aceste mesaje in anumite li~iere , Ie scrie in anumite console sau eventual Ie tr imite catre 0 altA masina. In Debian utilitarul sysk lo<;Jd este disponibil in pache\1.J1cu acelasi nume. de conligurare este letc /syslog.co n f . Aces! lisier conIi ne r&gu li care delinesc modul in care sunt stocate mesajele de jurnalizare tra nsmise de serviciile sistemului. Desi este loarte util pentru monilorizarea sistemului, syskl ogd prezinta si unele dezavantaje. De exemplu. 0 aplica!ie neglijenta ar putea genera Ioarte mutte mesaje, ceea ce ar putea duce la umplerea discului 5i la instabilitatea lntregului sistem. Trimirea mesajelor cAtre 0 alta masinA. mai pU lin importanta in relea. ar rezolva aceasta problemA. Unele aplicatii, precum serverul web Apache, nu folosesc sYll klo gd, ci implementeaza module proprii de jurnalizare.
Fi~ierul

Inspectarea jumalelor Penlru citirea jurnalelor se poate lolosi orice ulilitare de editare sau vizualizare, de la vi la less. DateritA laptului ell. me5ajele recente sunt ata5ate la sfArsitu l lisierului jurnal, un utilitar des Iolosit esle t a il.
, http ;lihe !p.yahoo.comN uslyahoolsearch/webcrawlerl

298

lNTRODU CERE iN SISTEME DE OPEAARE

Penlru inspectarea dinamica a jurnalelor sa lolosesle comanda tail eu optiunea - f .


Comanda taU
af i ~eaza

in mod implicit ultimale 10 linii dintr-un


af~area

fi~ier

dat. Prin lolosirea

paramelruiui 1 se asigura

dinamica a liniilor adaugate la respeclivu l fisier.

Comanda de mai jos esle un exemplu de 10105ire pentru inspectarea dinamica a activitatii serviciilor de e-mail:
root@cursur i :!var!logf tail - f
/v~r! l O'l/""' 11 . l o9

Rot lrea jurnalelot


Pentru a evita problema ocupi'l.rii spa!iului de pe disc de fi~ierele jurnal, sistemele Unix dispun de utilitaru l loqrotate. Acesta permite reutilizarea fi~ i erelor de jurnalizare zilnic, saptamanal sau daca au depasit 0 anumita dimensiune. in momentul in care conditia de timp sau spatiu a lost indeplinil<''i se electueazA 0 rotatie. o rotalie inseamA 5alvarea continutul jurnalului intrun li~ier de backup cu un nume lor mat din numele originalla care 5e adaugA un numAr. Fisierul de backup copia avfir1d un numAr mai mare cu cal esle mai veche (Iest.log.l . lest.log.2 etc). La fiecare rulare, logrolale va slerge fi~ierul eel mai vechi ~i Ie va actualiza pe celelalle corespunzalor. in general. fisierele de backup sunt arhivale ~i comprimale. Mai jos sunl prezentate lisierele de jurnalizare penlru un server web Apache:

, , , ,

root@.warm:-f total 35092 - rw-r----root - n,.- r ----root - r w- r ----roo t -r"-r----root - rw- r ----rOOt

I ... 1

, " , "" "" , , "" "" ""

-,

/va r /log/ a p a che2/ 5118409 10545752 54934 4 ') 12546 845592 20: 45 acc",$S . log " : 3 5 access . log. 1 '" '" ", 03 03 : 3 6 access . log . 10 . g. '"' " : 3 3 a ccess . l og . II . g< '"' '" 03 03 : 35 ace .. "" . log . 12 . gz '""

1ogrotate esle de obicei rulal zilnic de cAire serviciul de planificare periodicA (c r on ). Fisierul sAu de configurare esle / etc/ l ogro t ate . con f .

Aile utililere de jurnaliza re

Utilitarul dmasg poate Ii lolosit pentru alisarea informatiilor de la inilializarea sistemului. Aceslea sunt mesaje ale nucleului si pot Ii oblinute ~i prin vizua lizarea directA ajurnaletor de mx:leu. Pentru conliguraliile implicile. jurnalele de nucleu sunl paslrate in fisierul /var/log/ kern. l og.

10.3.3 limitarea drepturilor


Sistemele Unix olerA suport in principal doar pentru doul'i niveluri de privilegiu: ulilizatori neprivilegiali si administrator (rool). in practica este necesar un grad mai ridical de flexibilitate in acordarea privilegiilor. pentru a permite ulilizalorilor obisnuili rularea unor aplicatii privitegiate. in acelasi limp. un ulilizator obisnuil poale abuza de resursele care

CAPITOLUL 10. ELEMENTE DE SECURITATE

299

ii sunt puse la dispozitie si poate, accidental sau intentionat, conduce la destabilizarea sau susperdarea sistemului. De accea. un sistem de ope rare va oferi lacililali pentru limilarea sau extinderea privilegiilor la nivel de aplicatie sau la nivel de uti lizator.

Folosirea atributelor setuid

~i

setgid

o categorie aparte de aplicatii 0 reprez intA uti litarele ce necesitA resurse speciale din nucleu. Pentru a putea da posibilitatea si utilizatorilor neprivilegiali de a rula astlel de programe, identilicatorul utilizatorului (uid) se schimba pe parcursul executiei programului. La incheierea unei astlel de actiuni se revine la identilicatorul utilizatorului ce a lansat aplicatia. intrun sistem unux. acest lucru este reahzat prin folosirea atributelor setuid si setgid. Aceste atribute sunt marcate ca permisiuni de acces pentru un lisier executabil. in momentul rularii acelui executabil, procesul creat ru leaza nu mai ruleaza cu drepturile utihzalorului care a lansat programul, ci cu drepturile utilizatorului ce detine lisierul; daca acest utilizator este root, atunei procesul are drepturi privilegiate. Pentru activarea atributelor setuid si setgid se foloseste utilitarul chmod. Bitii asociali ce lor doua atribute se gasesc inlr-un numar in octal ca re precede cele 3 numere in octal asociale drepturilor de aeces:

, ,
, ,. " "
,

root @ l: iwi : -f - r"xr - H - X

," -,

a . out ra2van razvan IJS64

'"'

, , ,

20 : 49 a . out

root@);iwi:-I chrnod 2755 &. o ... t


root@~iw! : - I
-r"xr-Sr-~

," -,
," -,

a . o ut
u~ v&n

ra~van

13 564

'"'
'"'

20 ; 49 " . out

root @ ki wi: - f chmod 4755 root@kiwi : - I - I\;5r -x r -x a . out

~ . out

r~zv~n

ra2v~n

13564

20 : 49 a . out

In exemplul de mai sus, prima rulare a comenzii chmod activeaza bitul asociat setgid (lolosiOO va loarea oclala 2). A doua rulare a comenzii chmod acli~eaza bilul asocial set ui d (Iolosird valoarea octala 4). Alternativ, bitul asociat setgid poate Ii aetivat lolosind sinlaxa g+5, iar bitul asocial setuid eu ajutorul sintaxei u+s ca argumente la chmod. Trebu ie avut in vedere ca marcarea unui executabil cu dreptul de suid reprez inta un potenlial rise de S8Curitale. Daca pe parcursul executiei utilizalorul reuseste sa IOr!eze te rminarea anormalli a programului lnainte de relacerea uidului, se poate ob!ine acces la un shell de root. Din acest motiv un pas important in S8Curizarea unui sislem este determinarea l uturor executabilelor ce au activat atribulul set uid, si dezaclivarea acestuia de la aplicatiilor nefolosile. Aeeast lucru se poate reali za eu ajulorul comenzii f i nd (vezi S8Ctiunea 12.6.3).
roo t @ k i wi: -f f i nd I -perm -4000 -0 -p@r rn -2000 -typ@ f -prin t

300

lNTRODU CERE iN SISTEME DE OPEAARE

Printre utilitarele care au nevoie de activarea alributu lui set uid pentru a pulea Ii fu late de caIre utilizatori obi~nu i !i sa alia ping ~i traceroute .

Schlmbarea riidacinii sistemului de fisiere (c hroot)


Unu t dintre mecanismele extram de elic iente in securizarea unO( servicii sa numeste ch roa t . Acesta presupune dimininuarea vizibi litA)ii unui serviciu in raport eu sislemul de
fi~iere.

Folosirea mecanismului chro ot are rolul de reducere a riscurilor de securitate. Dad. un atacator obline aeces eu ajutorul unei vulnerabilitali intr-un proces ce folose~le chro ot,

aeesla va avea aeces limital Ie sistemul de procesului poar",i numele de chrootjail.

fi~jere.

NOlll director rAdacina yizibil

Pe de alta parte. lolosirea aeestui meeanism este destul de dilicila. datoritli laptului ea in general programele sunt eompilate pentru a Iolosi biblioteei (vezi sectiunea 11.4). Din aeeasta cauza. bibliotecile Irebuie incluse in directorul vazut de proces ea radae ina. 0 alta solulie esle compilarea statica a programelor, lara biblioteci. Fie serverul de DNS bind9. Daea se modifica seriplul de inilializare adaugand op!iunea -e Ivar/dns, servieiul va porni eonsiderand Ivar/dnsl ea radae ina a intregului sislem de lisiere. Primul lisier eaulal va Ii / etc/bind/named . con f. asllel ea inainte de lansarea serviciului va treooi copiat lisierul lete/bind/named. con f in Ivar / dnsl ete/bi ndl named . con f . Pe langa aeestli~ i er vor trebu i eopiate lisierele de zona (necesare conligurarii serviciului de DNS). li~ierele de jurnalizare, dar ~i unele lisiere speciale gen I dev /null sau Idev I log. Majorilatea programelor ce implemenleaza serviciile UNIX olera posibilitalea rularii procesului cu sistemul de lisiere limital. Daca programul nu olera aceasta posibilitate, sau daca se doresie testarea me<:anismului, se poate Iolosi utilitarul c;:hroot. Utilitarul chroot esle implemenlarea la nive lul shellului a mecanismului de schimbare a rMacinii sistemului de lisiere vazut de un proces. in exemplul de mai jos se ruleaza utilitarul chroat inlr-un nou director /root/te st. Daca nu se spe<:iliCli ce comandli se ruleaza , implicit se exe<:ula inlerpreloru l de comenzi precizat de variabila de mediu SHELL. Cum Ibi n /s h aste 0 legalurli catre Ibin/bash. esle necesara eopierea sa in viitorul sistem de lisiere.
r oot ~ ~lwj " ,

pwd

,
2

hoot root@ k iwi : -' mkdir root@ k iwi : -f mkdir roo t @ kiw i: -' cp
t e~ t
t e~ tJb1n

,
,

e "

IbinJba~h

10

t M t /bin/

11

root~k1wi:-' chroot Jroot/t e st chroot : cannot "un command ' /bin/bash ': No ouch Cil@ or di" @ cto"y

,.

"

root~Hwi:_'

"

l dd Jbin/bash 11bncur.e . o . 5 -> Jllb!11bncur.e . o . 5 {O~4001cOOO) libdl . so.2 -> IlibJtls!libdl . so . 2 (Ox4005bOOO)

CAPITOLUL 10. ELEMENTE DE SECURITATE

301

" "

li bC.,o . 6 _> Ilil>/tls/libc . ,o.6 (OK400SfOOO) I li b/1d - linux . $0 . 2 _> Ilib/la-linux.so.2 (Ox40000000) ,A root@l;iwi,-. m ~d(r test/lll> root@l;iwi:_, cp 11 (b/l Hmcuues so . S I l i b/ 1 (bdl . SO . 2 test/lib root@klwi : -I cp Ilibll i bc . so . 6 test/lib roo t @ ki wi: -f chroot roo t @ ki wi:/I pwd
Iroo t / t e ~ t

" "
."
~~

" ,.
"
26

5e observa ca. in prima laza, rularea comenzii bash prin chroot nu poale Ii realizata. Motivul este absenta bibliotecilor. 5e aliseaza apoi lisla bibliotecilor necesare bash, iar respectivele biblioteci sunt apoi copiate in viitorul sistem de fi~iere. Comanda chroot poate Ii acum executata, rezu ltfmd un prompt intrun sistem de fi~iere ce ale doar 2 directoare si 4 lisiere. 5e pot totus i rula comenz ile interne shellului bash.

sudo Utilitarul ,"udo permite utilizatorilor neprivi legiati sli ruleze unele comenzi avflnd identitalea (uid-ul) altui utilizalor (in general a utilizatorului rool). Utilitarul sudo poate Ii lolosil pentru a oleri privilegii limitate anumitor utilizatori si a evita astlel lolosirea contului root; privilegiile acesluia pot deveni 0 problema in cazul in care co ntul este compromis. Controlul utilizatorilor ca re au dreptul sa ruleze comenzi privilegiate, precum si lista exacta a comenzilor este pastrata in liSierul letc/sudoers. Fi~ierul are in mod implicit doar drepturi de citi re. Pagina de manual men!ioneazli The sudoers file should always be edited by the visudo. Utilitaru l vi.sudo evita olerirea unor drepturi proviwrii de scriere si minimizeaza astlel alte riscuri de securitate. La lansarea unei comenzi sudo, dupa verilicarea lisierului letc/sudoers va Irebui introdusa parola utilizatorului ce a Ian sat comanda sudo. Daca se doreste rularea comenzi lor privilegiate configurate fara solicitarea parolei {rise de securilate}, se loloseste tagu l NOPASSVlD in lisierul de co nligurare:
r&zv~n

ALL- (ALL) NOPASSWD : ALL

listingul de mai sus esle 0 linie din fi~ i erul / e t cl sudoers. Utilizalorul ra zvan poate rula in numele tuturor utilizatorilor din sistem (A LL - (A LL) ) oriee comanda (ALL ), tara a ii Ii solieitata parola (NOPAS SWD). Pentru exemplul urmator sa presupunem ca a lost dezaetivat atrioo tul se t ui d din cadrul executabilului /bi n /ping. Penlru a permite utilizatorului rookie sa foloseasea comanda pinq, administratorul va trebui sa adauge in fisierul /et c /sudoers urmatoarea linie:
rookie ALL_ (ALLI Ibin/pi.ng

Daca utilizatorul r ook ie ineearca rularea unui interp retor de comenzi cu drepturi pri~ilegiate, operalia e~ueaza:

302

lNTRODU CERE iN SISTEME DE OPEAARE

roo x le@xlw! : -$

s~do

/bin/bash

2 Sorry, u .er io calhost.

roo~le

Is not

~ll o~ed

to execute ' lbin/bash '

~s

root on

Daca sa incearca rularea comenzii p ing, tara a lolosi sud o, se obtine din nou mesaj de eroa re:
,

rooki@ @ xi wi, -$ /b i n!p,ng 141 . BS . 99 .1 - SU ' {bin/p i ng : Permission denied

Folosirea comenzi i sudo impune parcurgerea


rularea execulabil ului /bin/pi n g :
roo k le@kiwi : -$ .udo Ibln/ping 141 . 85 . 99.1
,

Ij~ierului

letc/sudoers si permile

PING 141.85 . 31 . 1 (141.a5 . 37 . \) : 56 dH ~ byt e , 64 byt~ s f r om 141.85 . 31 . 1 : icmp_~ ~q - O ttl - 64 t ime - O. S

m~

Rularea unei comenzi sucto lara a avea 0 corespondenta in fiSierul letc/sudoers va Ii jurnalizata ca un incident de securilale. Pentru a verifica lista eomenzilor ee pot Ii rulale ea root se poale folosi opliunea -1 a comenzii sudo :
, , Iookie @ kiwi:-$ ,udo -1 U'@ I r ool:i " may run th .. fo ll oWing commands o n this hos t: IALL) /b in /ping

Lim itarea resurselor folosile de un proces sau utilizalor Utilitarul u limit permite controlul resurselor alocal e penlru un proces pornil din interprelorul de comenzi. Pentru inspectarea limilArilor curente se poate se foloseste argumenlul -a :

, , , , ,

...

root @ ki ... i: -f ulimit core til" dH~ .He scheduling priority file SHe pending signalo loe . ed memory

-,
Iblocl:s , (kbytes, Iblocks , Ikbytes ,

,.,

.""

(. .. 1

" "
" "

root@l;iwi :

-.

ulimi t

roo t @ l;iwi:-f ulimit 204B

-. .

, -,' - 0> -" " 1-" "


I-e)
i)

unlimited unlimited 16382

2048

In exemplu de mai sus a 1051 real izala 0 listare a luturor limitarilor curenle. pentfl.l ca apoi sa fie redelinil numarul maxim de fisiere desch ise fa 2048. Dacll, in seopul prevenirii unui atae DoS local (cau zat de erearea unui numllr de procese ext rem de mare). se dore~te limitarea numarului de procese penlru utilizalorul privilegiat, se recomandll adllugarea in fisierul / root / . bashIC a unei limite de procese:
ulimit - u 102 4

Utililarul ulim i t permite limita rea dreplurilor la nivelul unui proces Illra a Ii insa persistenle. La reporni rea sistemului, conligurari le realizate se vor pierde. Penlru a

CAPITOLUL 10. ELEMENTE DE SECURITATE

303

asigura persistenta schimblirilor, pe un sistem Linux se poate lolosi lisierul /etc/security/limi t s.coof. Acest li~ier reprezintli uo mecaoism elicient pentru limitarea resurselor disponibile unui utilizator sau unui grup de utilizatori. Se pot delini doua tipur i de limite, denumite limite software si limite hardware. La deplisirea unei limite software se genereaze'i un mesaj de ateotionare. La depi'l~irea uoei limiUjri hardware procesul in cauzli este terminal. Sintaxa l isierului se bazeaza pe delinirea de reguli. 0 regula are patru elemente: !inta: utilizatorii sau grupurile pentru care se aplice'i respectiva regule'i: tlput de regula : regulile pot Ii definite ca software sau hardware; tlput de IImltare: este precizat parametrul care este limitat: !imitarea : valoarea la care se real izeaza limitarea. Ca exemplu, se presupune cli se doreste limitarea numarului de procese ale utilizatorului roo k ie la 35, iar la depa~irea limitei de 20 de procese sa lie generat un mesaj de avertisment. in plus se doreste limitarea numarului de autentificari simultane permise utilizatorului rookie la to. Pentru aeeasta vom adauga in fiS ierul /etc/security/ l im i t s. can f urmatoarele trei linii:
,
J

roo ki e roo xi e roo ki e

"oft ha r d

npro c nproc
maK109in~

Limitarea spa! iului ocupat pe disc Umitarea spa!iului ocupat de !isierele unui utilizator se realizeaza prin lolosirea de cote. ln Linux, acest lucru eSle realizat cu ajutorul utilitarului quot a . intrucfll configurarea acestui utilitar depaseste domeniul acoperit de aceasta carte. recomandam cititorului sa parcurga unul din multiplele tutoriale din Internet legat de conligurarea cote lor in Unu .

10.4

Atacuri de refea

Privite ca forma principale'i de actiune a crackerilor, atacurile de relea nu trebuie sa constitu ie cuno~tin!e interzise sau privite cu suspiciune. intelegerea modului in care un atae este produs, a eonditiilor care laciliteaza produce rea aeestuia si a efectelor ulterioare sunt esentiale pentru a proteja 0 re!ea de calculatoare sau pentru a delini politieile de securilale asociate. Cunostin!ele ~i deprinderile legate de atacurile de re!ea sunt necesare ethical hacker-itor, persoane specializate in fo rme de testare a sistemelor informatice pentru securizarea acestora.

10.4.1 Tipuri de atacuri in retea


Atac uri le de relea sunt clasilicate in lunctie de gravitate io trei categorii: atacuri de recunoa~lere. ataeuri DoS, ~i atacuri de ob!inere a accesului.

304

INTRODUCERE iN SISTEME DE OPERARE

in~iala .

Alacurile de recuno8\11ere nu SUi'll atacuri pmpriuzise, ci de obicei constituie faza de investigare, a unui alac (vezi sec)iunea 10.4l Cel mai simplu alac de

recunoastere paale Ii general printrun script ce inventariazA sla!iile dinlro relea


folos ind pachete de ping. Pentru a obtine informalii in legalura cu servici ile rulata pe 0 masina S8 poale lolosi 0 aplica!ie de scanat porturi (vezi sectiunea 10.4.3) , Ap licatiile mai complaxe de recunoastere olara nu numai lisla serviciilor, dar si 0 lisla: a posibi lelor

vulnerabilitiUL Un astfel de utililar asIa Nessus' _


Atacurile DDS (Denial of Service) au ce seop coogastionarea unai relele, a unui server sau doar a unui serviciu, in scopul reducerii sau opririi lunctionalitatii. Se poate distinge inlre atacurile c las ice DoS. bazate in general pe flooding. ~i alaeurile DoS dislribuite, numite DDoS, ce au la baza un mecanism de propagare (un virus) pe un numar cat mai mare de destinatii si sincronizarea ataeului DoS catre 0 tinta, Un flood reprezinta un numar loale mare de pachete ve nite inlrun interval scurt de limp. Un Iralic ce poale Ii inlerprelal drepl llood la nivelul ruterului de acees in re!eua locala poale Ii Iratat drept Iralit normal in nucleul Inlernelului. Penlru lehnologiile aCluale un Ilood eSle deMit astfel: la nivelul unui switch de nivel 2 un numar de 100.000-1 50.000 de pachete pe secunda; .. la nivelul unui ruler de acces (ce conecl eaza 0 relea loca la) un flood are 8.000-12,000 de pachele pe secunda: in nucleul Internelului un tralic de milioane de pachele pe secunda poale Ii tralal drept Iralic legitim. in ciuda capacitatii de prelucrare a unui valum de pachete de ordinu l zecilor de mii pe secunda, complexilatea adi"iugali"i de modele de flood specifice poate reduce limila de pachete pe secunda la cateva sute. ICMP flooding se bazeaza pe trim iterea unui numar toarte mare de pachete ICMP (de tip ping). consumand intreaga li"i!ime de banda disponibila. Cel mai adesea atacul este preven il prin liltrarea intrag Iraficului ICMP, cu costul pierderii funC!ionalila!i utililarelor p i ng ~i tra c .. r o u t ... Alacul UDP flooding are electe puternice cand lolose~te drep! !inti"i porturile 7 ~i 19, ad ica serviciile de ec ho ~i c hargen. Acesle servicii liind rar lolosite. i n relele loca le pot Ii oprite de lirewall-ul de intrare in LAN, li"ira un impact real asupra lunc!ioni"irii (etelei. Atacurile bazate pe Ilooding sunt in general combinate cu un atac de tip s poofing, pr in care se genereaza ad rese sursli fictive si dilerile pentru pachetele din flood. In lipsa unui alae spooling, 0 liltrare pe baza depi"isirii unui numar limitli de pacilete per sursli ar elimina alacul flooding. Alacu l spooling as igura in acela~i limp ascunderea idenlitalii ataeatorului. In plus, daca destinatia alaeului bazal pe llooding nu esle 0 sursi"i !inli"i ci adresa de d ifuzare a unei relele. loale ech ipamentele din respectiva retea vor incerca si"i ri"ispundi"i unei surse ce nu exisli"i T n real ilate, alac ul devenind un alac de tip DDoS si se va numi un alae smurl. Alacuri le DDoS pornesc de la pule rea enorma de calcu l disponibila in relelele actua le locale. Unele dinlre aeesle alae uri pot Ii neintentionate, precum in cazul Slashdot effect. Numele vine de la vestitul site Slashdot, care a postal un link caire un site cu capabilita!i
I http)lwww.n.... u .orglne .. usl

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

305

mai mici. CAnd loarte multi utilizatori au incercat sli acceseze respectivul site, efectul a lost echivalent cu un alae DoS. Atacurile de ob~inere a accesului au impaclul eel mai mare, deoarece prin ob)inerea accesului la un serviciu eel mai adesea pot Ii compromise ~i alte servicii sau masini. o pondere importantli in atacurile de otJtinere a accesului 0 au atacurile tJazate pe exploalarea vulneratJ ilillitii aplica)iilor wetJ. SutJieclul esle unul amplu, iar ce i ce vor sa urmlireasca numeroasele metode de exploalare a riscur ilor de securitale ar tretJui sli parcurgA cartea lui Joel ScamtJray, Hacking Exposed Web Applications [24]. Atacurile de otJlinere a accesului pot avea dreptlinta ~i tehnologi ile din spalele aplicatiitor web, un numar important de atacuri !iind directionat lmpotriva tJazelor de date. Cel mai cunoscut astlel de atac este inse rarea de cod SOL (SQL Injection). Acest atae se tJazeaza pe modul direct de interogare a bazei de date.
SELECT X from TABLE where
us~r

- $user_ input AND pa 55 - Spa ss_ input

PresupunAnd scriplul de mai sus, daca la inlroducerea in cAmpul utilizator a unui oome va lid de utilizator urmat OR -- (in SOL -- delineste un comentariu). operatia de selec)ie devine:
SELECT X from TABLE where us er - $xxx OR -- AND
pa ~~

- ' nu_ conteaza'

si va Ii validata pertru orice nume de utilizator allat in baza de date. MergAnd mai departe se poate introduce in c<'lmpul utilizator Xxx OR I- lOR -- , aceasta garantAnd accesul indite rent dacli utilizatorul xxx existli sau nu in baza de date. Pentru a preveni un astlel de atac, interogarea bazei de date trebuie facuta prin tunc!ii de biblioteca ~i nu direct prin select. Exista aplicatii ce oferli posibilitatea lansarii unui numlir mare de alaeuri. 0 astlel de aplica)ie esle melasptoit' . Dupli 0 laza de determinare a vulnerabititalilor (efecluatli, spre exemplu cu Nessus) se pot selecta vulnerabi litAti le gAsite si pot Ii lansate simultan mai mulle atacuri de obtinere a accesului. Dincolo de noliunile lehnice legate de atacurile de relea. nu trebu ie pierdul din vedere riscul de securitale adus de utilizatorii neglijenti din relea. Chiar si in cazu l unor utilizatori responsabi li, nu trebu ie ignorale riscurile unui alae bazal pe inginerie soc ialli. Nu esle 0 intamplare ca eel mai cunoscut cracker eSle Kevin Mitn ik. ale cArui atacuri s-au bazal in mare ma sura pe 0 buna inlelegere a modului de gandire a utilizalorilor ~i a administratorilor din re!etele actuate.

10.4.2

Virusi, v iermi , troieni

Un viru s esle un program sau doar 0 secven\a de eod ee se ala~eazA altor tis iere executabile larA cunostinta sau acceptul utilizatorului. Un virus include alaturi de mecanismele de execulie ~i modalitati de replicare prin inserare in eodul altei aplicalii.
, http.llwww.metasploil.co m

306

INTRODU CERE iN SISTEME DE OPERARE

Clasificarea viru~ilor in lunc;ie de modul de replicam distinge intra mai multe tip uri de dintre care eei mai intalni~ sun\: vi ru~i de email, de macro, bombe log ice, virusi de bool, vie rm i ~i tro ieoi.
viru~i.

Simpla prezenlA a unui fi~ier in/octat pe un calculator nu aSIa echivalenta cu infoctarea sistemului. Penln! a infecta sistemul, un virus trabu ie sa fie e~eculat cel pulin 0 data. Unele aphcatii fuleazA cod eXe(:utabil in mod automat (fiini informarea utilizatorului). Un exemplu asle rularea fi~ierului au to r un . i n f' la mon\area unui CDROM sau USB

sUck.
Email-u.asle unul d intre modurile pr incipate de propagare a viru$ilor. Virusii de email sun\ conlinu~ in alasamentul emailului, daseori avand exlens ia schimbata {cel mai adesea in extensie speciliea imaginilor}. Ap licatia )inta a unui astle l de vir us este clientul de email, Oalor~a numarului mare de ulili zatori ai Microsoft Outlook, 0 mare parta a acastor viru~i sunt dazvollati special pantru aceasta aplieatie.

Odata executat un atasament de email inlectal, virusul se incard in memoria RAM si va urmari sa se multipliee. Pentru aceasta va cauta lista de adrese constru ite de clientul de email (address book) , Majoritatea clientilor de ema il creeazA lisla de adrese in mod dinamic, fara consultarea utilizatorului, ~i nu 0 protejeaza prin criptare, Odata deschisa lisla de adrese. virusul va lolosi diract AP I-ul de trimis amailuri pantru a sa mu~ipliea , Exemplele de viru~ i de email sunt MyD o om, I l ov e you , o a doua categorie importanta de virlr,l i 0 reprezinta viru~ii de ma cro . Un macro esle o bucatA de cod executabi l, ata~ata unui l isier document. Aplica?ile !inta a acastor virusi sunt cele de gestionare a documentelor, gen ed itoare de text, loi de lucru, sau editoare de prezentAri. Aceste aplica)ii In general vor aten!iona ulilizatorullnainte de deschiderea unui document ce contine macro uri. Pentru a reduce gradul de rise. daca la deschiderea unui I~ier sunte~ avertiza!i de e~istenta unor macro uri, inchideti documenlul si rula!i un program antivirus pa respectivul fi~ i er. de boot nu reprezinta 0 amenintare majora pentru sistemele actuale datorita dilicultatii de laJ1sare in executie. Penlru a lansa un astf~ de virus, sistemul trebuie sa incerca initializarea de pe 0 partitie infectatiL Impactul acestor virusi sa diminuat odata cu dispari)ia floppy d iscurilor. in prezent viru~ii de boot se pot propaga prin CO -uri sau flash carduri, Trolenil (trojan horses) reprezinta aplicatii (aparent legi~me) ce con~n (sau instaleaza) un program malilios, Pentru a avila astlel de alacuri se recomaJ1dA instal area aplicatiilor doar din surse sigure, precum ~i veriticarea intag rrtati i fisierelor Inainte de instal are. Vlermii (worms) sunl programe care folosesc vulnerab ilita!i in diferite servicii din Internet pentru a se muitiplica, Virus ii de mail reprezintA 0 categorie de viermi. Pentru a reduce impactul virusilor sunt importante atat masurile lu ate la nivelul ratelei, cat ~i exersarea unor deprinderi din partea utilizatorilor. Este important ca accesu l in retea sa lie protejat de un firewall (vezi sectiunea 10.5.1), ca serverul de email sA aiba instalat un antivirus, sa existe 0 politica de monitorizare a serviciilor etc. La nivelul utilizatorului eSle important sa nu lanseze in execulie lisiera primite prin emai l, s;'i nu deschida alasamente primite de la necunoscuti, sA mentinA un antivirus actualizal pe sta)ia de lucru etc.
I htlpJ len, wikiped ia, ",glwikV Aut" Ru nif Mack _ .""t"rs
Viru~ii

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

307

10.4.3

Scanarea porturilor

Un program de scanat porturl este 0 ap li catie care iniliaza conexiun i catre toale porturile unei sistem tinta. $copul este cel de a detremina care porturi sunt deschise, alla.nd astlel ce servici i sunt disponibile. Programele de scanat porturi lac parte din setul de utilitare de baza. folosite atollt de crackeri (blackhat hackers) ~ i ethical hackeri (white-hat hackers) pentru a detecta serviciile deschise pe un sistem si versiunea acestora. Dadl in urma scanarii de porturi se detecteaza servicii potential vu lnerabile. se poate trece la folosirea unui exploit.
Slar~itul anilor '90 i n Romania a dus la 0 cre~tere dramatica a popu larit<\1i i programelor de scanat porturile, atM in nl.ndul cracker ilor c:l.t si al administratorilor de relea. Principala cauza. a acestei schimba.ri a fost dezvoltarea retelei metropolitane. precum si a dileren!ei foarte mari intre costul tralicului metropolitan si cel al tral icului Internet. Astlel intr-un interval relativ scurt numa.rul atacuriior asupra servereior allate in rete le publice (mai ales asupra celor allale in universilali) a crescutloarte mult.

nu este ilegala., lolosirea unui scaner de porluri poate Ii interpretata drepl un alae, si prin urmare este posibil sa va he liltrat accesul din reteaua din care au lost ini!iate scana.rile. 0 asHel de restriclionare este totu~i destul de improbabila.

De~i

Utititarul nmap Exista numeroase aplica!ii de scanat porturile, una dintre cele mai cunoscute liind nmap'. Dalorita popularitatii de care se bucura in randul administratorilor de sisteme Linu x, aplicatia a fost portata ~i pe platforme Windows' . nmap implementeaza mai multe metode de scanare. putand oferi inform alii despre porturile deschise, dar si despre porru rile explicit filtrate. i n plus fata de inlormatiile releriloare la sericiile rula!e. nmap pune la dispoz i ~a administralorului de relea melode de detectare a statiilor active dintro relea , de all are a vers iunii sistemului de operare, versiun ile serviciilor acti ve, utilizatorii ce ruleaza aceste servicii , precum si mulle aile informatii re levante pentru sistemul scanat. Dintre cele opt l ipuri importante de scanare, ~ase se relera la scanarea porturilor TCP, unul la scan area portur il or UDP si unul la monitorizarea conectivitajii , aceasta ultima metoda incerc:l.nd sa. determine doar daca stalia destinalie este activa ~i daca. se poale ajunge la ea.
Op~unea

- sP (Ping Scan) permite detectarea sta!iilor active intro re!ea locala:


- ~p

,
, S 6 ,

root @ eu r s ur i :-' nma p

141 . BS . 37 . 0 / 2 4

St art i nq Nma p 4 . 6 2 ( h u p : fl nrnap . o r q ) at 200 9 - 09 -23 16 : 21 EEST Ho s t c sr . es . pub. ro ( 141 . 85 . J7 .1 ) ~ppe~rs to b e u p . f.'.AC Addr ess : OO: 09 : 6B : a 9 : 0 6 : 67 I I BM ) Ho st ft s.eate . ro (14l.a 5 . 3 "] . 2 ) appurs to b e ~ p . f.'.AC Addr ess : OO : 11 : 31 : 49 : 3A : E 4 IAs u ste k Compute r)
, http ://www .in.
8 CUf8 .ory/nm ap

' http ;llwww,sourc ,.Jorge,ne~pfOj&ctsfn mapwjn

308
" 10 " 12 " ,. 15

INTRODUCERE iN SISTEME DE OPEAARE

Host p r oLc . pub . ro (141.85 . )7 . 3) ~ppe" r . to b e up . MAC Adaress, OO;09 : 6B : 89 : 05 : 24 (IBM) Host info.cS.pub . ro {l41.8S.J7 . 6) appears to be up . MAC "dare"" , OO ; 13 ; 8f : 18 : 42 : 2C Ii\si aro" k Incorporation) Host 141.65.31.7 appears to be up . MAC "ddre". , OO ; SO ; S6 : 9A : J3 : 46 IVMOI"re) Host 141.85 .37.8 a ppe a ~s to be up . MAC Addr ~ "" : 00 : 09 : 6B : 89 : 06 : 67 (IBM )

Metodele de scanare a portu rilor Tep sun! d iierentiale prin prezenta unui anumi! flag inlr-ull pachel Tep. Op!iunea - sS {Tep SYN scan) eSle op! iunea implicita care folose~te

flagul SYN al Tep si detecteaz1'i porturile deschise pe un sistem.


> You
raz" .. n @ v a lha ll a : -/cart e- uso$ ruMP - ,5 localho't r ~qu~"t~d " ,can t ype which requi r e, r oot privi.l"ge ~
.

"

QUITTHlG '

Ioot @ valhalla : -I mnap

- ~S

localhos t

,
"
~

Starting N m ~p 4.69 ( http : //nmap.o rg ) ~t 2009-09 - 23 15:38 EEST I nteresting ports on 10c&lhon 1127 . 0.0.1): Not shown : 1105 closed ports
PORT STI<TE SERVICE

10

" "
" " " " " 22

"

" "

"

21/tcp 22ftcp 25ftep 53/ tc p IIlftcp 139ftcp 445/tcp 631/tcp 5900/tcp 1634/tcp

open open
op ~ n
op~n

op ~ n op ~ n

;mtp domain rpcbind


n e tbio~ -~M micro~oft -d~

'" ,"

open ope n open op@ n


I

"0

hddt"mp
IP address II host up)

Nmap done,

scanned in 0 . 31 2 seconds

OP!iunea - s5 necesita drepturi privilegiate. in exemplul de mai sus, utilizatorul neprivilegil r a zvan nu a pulul rula comanda nmap cu oppunea - sS , liind necesara lolosirea utilizatorului root. Penlru utilizalorii neprivilegiali, se POI lolosi aile opliun i precum - sT (TCPconnecr scan). Comportament ul este simi lar op!iunii - 8S , dar mai lent:

,
" ,

'a.v a n@valha ll a,-/c~rte - u ~ o$

nmap - oT l oca l host

Starting Nffi<'lP 4 . 69 ( http : //nmap . org ) at 2009-09-23 16 : 00 nSl In t eresting port" on local hos t 1121 . 0 .0 . 1) : Not sho.on : 1105 close d poet s
PORl SlATE SERVICE
op~n


10

"
"

" "
,e

2lftep 22/ tc p 25/tcp 53/tcp II1/tcp I39/tcp 445/tcp 631/tcp 5900!tcp 7634!tcp

op@ n open ope n open open ope n open open

smtp domain rpcbind


nHbio~-~sn

,,'
'"

ml cro~oft - ds

".0

hddtemp

CAPITOLUL 10. ELEMENTE DE SECURITATE

309

" ,a

Nm~p

done: 1 IP "ddreu (I host up) scsnned in 0 . 170 seconds

Aile douA optiuni de scanare importante sunt - sV si - 0. Optiunea - sV olerA intorm at ii despre versiunea servieiilor ce asculta. pe porturile deschise, in vreme ce op)iunea - 0 oferA informa!ii des pre sistemul de operare instalat, precum si timpul de la ultima reporni re.

,
,

root@Hw i :-' n"",p - sV - 0 141 . S5 . 37 . 53

St~ r ting nm"p 3 . 55 { http : //www . in.ecu r e.or\l/nmap/ 1 o t 2004 - 06 - 27 1 7:23 EEST lftteresting ports on dhcp- 53 . cs . pUb . ro (141 . 85 . 37 . 531 : S IThe 1659 ports sc a nned bot not shown below are I n HUe : closed) 6 PORT STATE SERVICE VERSION , 22!tcp open ssh OpeoSS~ 3 . 8 . 1p1 (protocol 1 . 991 a Device type: geneul purpose Running : Linux 2 . 4.XI2 . 5 . XI 2 . 6 . X ' 0 05 details: Li nux 2 . 5 . 25 - 2 . 6 . 3 o r G~ntoo 1.2 Li.nux 2 . 4 . 19 rcl - rc7) 11 Upt ime 0. 1 05 d .. y~ (~inc@ Fei Aug 27 14:52: 1 2 20041

" "

Nm~p

r un completed -- I IP

~ddress

11 ho,t upl ,canned ,n Il . B40 second,

nmap olerA ~i alte oPliuni. Comanda de mai jos real izeazA scana rea portu ri lor cupr inse intre 1 si 100 pe slatia localA:

,
, "
6

root @ valh" l h:-/c"rte - usol


St~ r ting

nm~p

- p 1- 1 00 l oc" l host

, a g 10 12

Nm"p 4 . 6a ( http : //nmap.o r g 1 "t 2009 - 09 - 23 16 : 14 EEST Interesting ports on local host 1127.0.0. 1): Not shown: 96 closed ports FORT STATE SEIIVICE 21/tcp open ftp 22!tcp open ssh 25/tcp open smtp 53/tcp op ~ n domain
Nm~p

"

don@: 1 I F .. ddre~~

II host upl scann@d i n 0 . 107 ,@conds

10.5 Securizarea re,elei


Securizarea unui sislem sau a unei re!ele pol presupune invesli!ii imporlanle ali'll in echipamente, cAt si in software. Cu toate acestea, oriee sOlutie de securitate nu trebu ie sA piard1l din vedere c41 eva componenle de bazli.. Primul pas in orice solu!ie de securitale 0 reprez inta stabillrea unor politlcl clare de securitete. 0 astlel de politicA de securitate va urmAri: separarea domeniilor cu nivel de secu ritate dilerit: delinirea clara a drepturilor fiecarui ulilizator; delinirea servici ilor ce trebuie oferile de fiecare componenlA a relelei. Odata slabi lita. polilica de securitate va l rebui reslrie!ional l ral icul nedoriVnenecesar prin configurllrea politlcllor de fillrare II pach etelor si a unui firewall (vezi sectiunea , 0.5.1).

310

INTRODU CE RE iN SISTEME DE OPERARE

Inleclarea sialiilor dintrQ relea localA peale oferi 0 poarta de aeces unui alacalor in spatele firewall-ului, reducand gradul de securitale al rata teL Din aces! mOliv un administrator responsabil nu sa va ocupa dcar de configurarea lirewallului ~i a serverelOf, oi si de securizarea slatiilor de aeces

o componenta imporlanta a securitatii 0 reprezinta confiden!ial ilatea.

in scopul

protejarii unor dale sensibile S8 recomanda contigurarea criptArii traficului. Operalia de aulef1tificarea trebuie sa fie, in general, 0 operatie securizati:!, a~a cum S8 inlamplE!. in cazul SSH.

10.5.1

Firewall-uri

Firewall-unle sun! dispozitive sau aplieatii care filtreazA pachetele de relea pe baza unor politici sau reguli prestabilite.
Firewal'-urile au rolu l de protejare a retelei prin fi ltrarea traficu lui nedoritlnenecesar. Un firewal l peate fi configural s~ filtreze lraficul ICMP pentru a preveni atacuri de lip flood, ce rerile de ini\iere de conexiune in re\eaua locala sau orice traliC care nu este men!ional explicit ca fiind Iralic legitim, Firewal '-urile POI Ii dispozilive dedicate (firewall-uri hardware) sau aplicalii (firewalluri software), Firewall-urile hardware sun! mai rap ide, dar prezin!<l costuri mai mari. Firewal '-urile software prezinta avantajul flexi bilila!ii. dar nu sunt la fe l de eficiente ca firewal '-ur ile hardware. Ap licalia lirewall pe sistemele Linux eSle Iplables '. ExceplAnd rolul sau de til!rare a pachetelor, iptables poote fi folosit ~i pantru alterarea pachetelor ~i pentru NAT (Network Address TranslaUon). Sistemele Windows incepiind cu Windows XP dispun de a aplicatie fi rewall naliva, Windows Firewall, dar exisla numeroase aplicatii de lip lirewall persona l, precum Zone Alarm'.

10,5,2

Criptarea informatiei

o lehnica folosita incA din cele mai vech i limpuri, criptarea irltormatiei irlseamrla folosirea unui algorilm care sa trallsforme un mesaj cunoscut illtrun mesaj criptat. Aceast algoritm presupune, in general, Iolosirea unei che i de cr i p t are. Opera!ia irlversa se cheama decriptare. Criplarea este Iolosita pentru a proteja datele de aeces neautorizat. Datele proteiate pot Ii stocate la Url moment dat pa Url dispozitiv de suport sau pot fi date trarlsmise prirl relea. irl domelliul IT, exista doua lipuri de criptare: criptarea cu chei simetrice ~i criptarea cu chei asimetrice.
1http)lwww.nmfilt8f.0.li . ht.pJlwww.ZOIluta. m.comisecuf it1Ien- u..... ome.htm?lid . .... ...

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

311

Criptarea cu ch ei simetri ce presupune folosirea unei chei atfH pentru criptare cAt 5i pentru decriptare. Cheia esle secreta - esle cunoscuta doar celor doua entitali care comunica. Formal, cele doua operalii sunt descrise asUel:
cripta re : K IM) - C decr i p t are : K IC) - M

eSle che ia, M asle mesajul ini~al , iar C eSle mesajul cripta\. Foklsirea pesle mesajul criplat duce la obtinerea mesajului ini!ial.
K

aceleia~i

chei

Exemple de algoritmi de criplare cu chei simestrice sunt DES, Twol ish. Siowfish. IDEA. AES. AES (Advanced Encryption Standard) esle algoritmul adoptal ol icial de gLNernul SUA. Algoritmul a lost ales in urma unui proces de standardizare de 5 ani la care au participat 15 proiecte dilerite. Criptarea cu ch ei asimestric e Ioloseste 0 pereche de chei: 0 cheie publica si 0 che ie pri~ala. Dupa cum reiese si din denumire, cheia pri ~ata esle secreta. iar che ia publica este accesibila de oricine. Exista doua utilizari penlru 0 pereche cheie pri~atAlche i e publicA: semniituri digitate (digital signatures), in care cheia pri~ala este lolosita pentru criptarealsemnarea unui document, iar cheia publica eSle folosita pantru a ~erifica laplul ca documenlul este autentic: oricine poale face ~erif icarea dar numai de\inalorul chei pri~ate poate semna un document; criptare (public key encryption), in care cheia publica este folosita pentru criptarea unui mesaj, iar cheia pri~ala este folosM pentru decriptarea mesajului; oricine poate crea mesajul crip!at pentru a Ii transmis posesorului cheii pri~ale, dar numai acesla din urma poale decrip!a mesajul. Formal, procesele de semnare mai jos:
semnare : p( M) - S ve ri f icare : P IS) _ M c r ipta r e : P IM) - C dec r i p t are : piC ) M
~i ~Bfilicare

l?i cele de criplare l?i decriplare sunt descrise

i n cazu l semnarii. se 1010seSIe cheia privatA p penlru a "cripta" mesajul M in mesajul S. Cheia publica P es!e folosi!a pen!ru decriplarea mesajului S inapoi i n mesajul M. in cawl criptarii/decriplarii, lucrurile se deslasoara asemanator, dar se folosesle cheia publica pentru criptare ~i cheia pri~atA pentru decriptare. Criplarea cu chei asimelrice esle, in general, mai sigura decal criplarea cu chei simetrice: cheia nu Irebuie sa fie partajata si algoritmii sunt mai robusti. Cu toate aceslea. criplarea cu chei asimeslrice esle mull mai lenla decal crip!area cu chei simetrice. Exista situa!ii In care cele doua metode se folosesc la un loc. Spre exemplu, in cazul SSH, inil ierea oonexiunii se lealizeaza Iolosind criptare eu ehei asimetrice; in urma inil iBfea se rea lizeaza 0 negociere dupa care se ob!ine 0 cheie simetrica: aceas!A che ie va Ii fo lositA in continuare pentru criptarea comunicatiei . inlre clientul si . ser~erul SSH.

312

INTRODU CERE iN SISTEME DE OPERARE

o extens ie a semnalurilor digitate 0 reprezinta certificatele digi ta le' . Un certifiea! digital conIine 0 cheie publ ica si un set de informatii despre posesorul certificatului semnate

digit ale. Intruedl che ia publK:1i esle inclus1i. in certifieat, oricine poate verifiea validilalea informaliilOf. Oepinzand de infrastNctura folos ita, semnatura poale Ii a unei autor~ati
specializate (eA - certificale authority', i n cazul PKI- public key infrastructure'll sau a rna; multor utilizatori (e ndorsements), in cazul web of trust".

10.5.3 Monitorizarea retelei


Autorii de cAl1i de relele de calculatoare sau de ghiduri penlru administratori; de retea precizeaza in gel'\eral ea activilatea de monitorizare eSle una dintre cele ma, importante sarcini ate unui administrator. Cu toate aces tea , adesea, recomandAril e propuse sunt deseori limitate la cele e~k:lente precum: "Un administrator trebuie sA cileaseA regulal jurnalele de pe liecare ser~er" sau "Este important sA nu uitati . sA pornrti . ser~iciul de monitorizare".

Este important de illteles cA monitorizarea nu se rezumA dear la rularea unui daemon de genul sys klogd sau la deschiderea sAptAmilnalA a unei aplicatii pracum Eve nt Viewer, Cele douA tonetii principale ate monitorizArii sunt asigurarea dinamicA a se<:uritA)ii pr in alertarea i n lala unei illoorcAri de atac, ~ i posibilitatea localizArii ~i definirii unei delec!iuni sau a unei l unctionAri suboptimale. EXistA mai multe criterii pentru a clasilica primA clasilicare lace distinclia lnlre: monitorizaraa unui sistem specilic; monitorizarea conectivitAtii: monitorizarea tralicu lui din relea. Monitorizarea unui dispozitiv specilic presupune rularea ullui serviciu ce va urmAri apetarea celorlalle servicii , precum ~i accesul la jurnatele create de acest server. Un exemp lu este serviciul de jurnalizare olerit de syskl ogd. Monit~ permite monitorizarea proceselor, fisiere10r ~i poate sA e~ecute diverse actiuni la nevoie. Monitorizarea conectivitAlii se bazeazA deseori pe mecanisme loarte simple, cel mai important dintre acestea liind folosirea utilitarului ping , metoda l iind denumitA ping sweep. Crearea unui sistem de interogAri ICMP periodice poate oferi administratorul ui informatii despre i ntreruperaa unui segment de retea sau des pre defectarea sau stingerea unuia dintre servere. Ull astlel de sistem de interogAri poate Ii realizat ori printrun scr ipl simplu, or i se poate apela la aplicatii dedicate. Monitorizarea de relea cuprinde numeroase componente, de la dispozitive hardware dedicate (denumite generic IDS - Intrusion Defecfion System), la programe de interceptare a tralicului in relea (programe de sniffing), precum si programe de evaluare
, hnp 11en ,wikiped ia, orgIWikiID ig itaL ee, tihcate ' http j l en ,wikiped ia. or(jlwikilCe 'tilica Ie_ autho'ity ' http://en ,wikiped ia.or(jlwikilPublic_ " ''y_ infrMIruc:tur e http) l en ,wikipedia ,<> r(jlwikiIWeb_of_ l rusl http) l mmon it.comimonili

di~ersete

l ipuri de actiuni de monitorizare. 0

C JPYnghted matanal

CAPITOLUL 10. ELEMENTE DE SECURITATE

313

a securitatii unui sistem din retea, in aceasta categorie intrAnd programele de scanat porturi. 0 ap licatie Ioarte cunosc uta de monitorizare a re!elei este Nagios' . Aparilia switchurilor in re!elele locale a transformat mediul partajat al Ethernetului in tr-un mediu dediCat. Cu alte Cuvinte, inlr-o retea cu switch uri, pachete le schimbate intre doua sta!ii nu vor mai Ii vizib ile de 0 a tre ia sta!ie aflata in aceea~i re!ea locala. In aceasta situa!ie, un administrator de re!ea ce do re~te monitorizarea Iraficului catre 0 anumita deSlinatie va trebui ca inainte de a lansa prog ramul de interceptare a traliCu lui sa faca un atae ARP poisoning' pentru respectiva destinatie. Pentru aceasta se pot Iolosi ulililare precum Cain' si dsniff'.

Utilitarul tcpdump tcpdump este un utilita r deslinal monitorizarii Iraficului in re!ea


~i

achizitionarii de date.

Placile de retea. cum sunt cele Ethernet, capt ureaza la nive lul legalura de date door cadrele adresate lor sau pe cele de difuzare. De aeeea, penlru a caplura toate cadrele, tcpdump Irebuie sa Ireaca interfala intrun mod special de Il.lCru, numit promiSCuous mode, pentru care are nevoie de suportu l sistemu lui de operare. La 0 ru lare simpla, tcpdump caplureazl'i paehetele de pe prima interiata de relea a sistemului si ati~eaza informali i din antetul IP ~i

rcp.

2
3

root@froao:-' tc pa~mp tcpaump : liotening on ethO 14 : 45:09.252803 frodo . no1.39993 > 64 . 12 . 30 . 90 . 5190 : p 444608787 : 444608793(6) ack 1453900500 .. i n 32893 {DF) 14 : 45 : 09 . 254091 frodo . noi . 33335 > ma i n.no i. domain : 16713+ PTR ? 90 . 30 . 12 . 64 . in-addr . arpa . (42) {On 14 : 45 : 09 . 254583 main . noi . domain > frodo . no i. 33335 : 16713 NXDoma i n 0/1/0
{1J3)

{on

In exemplul de mai sus, fieeare linie contine: timpul in care paehetul

rcp a intrat in reteaua local1'i;

informali i legate de antetullP (adresa sur5a 5i adre5a destina!ie); informali i din anlelu l TCP (pDrt su rsa, pot de5linalie, numere de 5ecven!a, flaguri TCP). Pentru a vedea 5i contin utul pachetuiui se poate utiliza optiunea - x :

, ,

root@froao:-* tcpdump - cl -> tcpau mp: l istening on ethO 18 : 38:51.061244 64 . 1< . 24 . 46 . 5 190 froao. nol . 3<777 : 3127656695 : 3127656a09(114) 3009470569 win 16Ja4 {OF) Ites Ox60 ] 45aO 009a c7a1 4000 6406 354d 400c 1630 cO~8 OOOb 1446 8009 ba6e 40n b360 e069 5018 4000 HOd 0000 2a02 20de 006e 0003 OOOb 0000 87d9 Od61 0836 3032 3033 3631 3400 0000 0700 0 1 00 0200 7000 OcOO 2500

."

, http://Www.nag ''' .orgi , http ://M .w ikip"d ia .e , (jIwik ~AA P _ spoofing , http ://www.oxKl.lIIca in.hi mf

http ;llWww.monkey.org!-dug&Ongldsniftl

3"
10 "

lNTRODUCERE iN SISTEME DE OPEAARE


0000

6 p~c k ets r ece i ved b y filter 0 pac l; ets d ropped by kernel

Conform structurii unu; pachel IP, primii 20 octeti (4580 009a c7a l 4000 6406 354<1 400C
1830 cOa6 OOOb) reprezintA antetullP iar urm1ltorii 20 de octeti (1446 8009 ba6c 4017

b360 e069 5018 4000 1lad 0000) reprezinta a ntetul TCP.


Exisla solu!ii grafice ce realizeazd interpretarea con~nutului pachetului. Cea mai cunoscutA aplica!ie graficA de interceptare si interpretare a tralicului de relea aSle Wireshatk ' , ulilitar disponibil alaI in mediul Windows, cat ~i in Linux. Echivalentul
penlru t c pd ump in lumea Windows eSle wi nd ump'.

10.6 Studiu de caz


10.6.1 Drepturile pe
fi~iere

in NTFS

Sistemu l de fi~iere NTFS olera 0 serie de imbunatatiri lalE!. de FAT, atal din punctu l de vedere at performantei, cat ~i at securitiilii. inlr,un sistem de tis iere FAT, loate conluri le de utitizator au drepturi egate ~i depline asupra sistemului de fi~iere,

Figura 10,2: Precizarea dreplurilor in NTFS Securitatea In NTFS se implemenl eazA prin inlermediul mecanismului de lisle de acces,

o lislE!. de acces reprezinla un set descriptori ata~ati fi ~ierefo r ~ i direcloarelordin sistemut


, http;!lwww.wi,e.ha ,k. Dlg! ' http;!/www.winpcap.O'glwindu mp~ n .. a lV

right

ma'sonar

CAPITOLUL 10. ELEMENTE DE SECURITATE

31 5

de l isiere. Pentru ca un proces sa poatii accesa un lisier sau un director, sistemul de securitale verifica daca procesul are dreptul de a-I accesa. Ca masura sporita de securitate, sistemul de li~iere NTFS olera posibililalea criptarii datelor pe care Ie stocheaza. Avantajul implementarii mecanismelor de criptare direct in sistemul de li~iere 11 reprez inta viabi litatea pe care acest tip de securitate 0 men!ine in lucrul cu oriee sistem de ope rare care olera suporl pentru sistemul respecliv de lisiere. Din mediul Windows , criptarea unui l isier sau a unui director (inclusiv a con!inutului saul se lace din ecranul de proprietali al I~ i eruluildirectorului (elie dreapta > Properties> Advanced> "Encrypt contents to secure data-). Pentru a putea actiona granular asupra securitAtii sistemului de lisiere, in Windows trebuie dezactivatA oppunea "Use simple lile sharing" (de la Explorer> Folder Options> View> Use Simple File Sharing: debilare). Ullerior, alribuirea drepturilor se lace din lereastra de proprietati a unui director sau a unui fisier. sub tabul Secur i ty. Se selecleaza utilizalorul sau grupul care va Ii edila\. iar din lista de drepturi se indica permisiunile ce 'lor Ii atribuite. Toate configurar ile se aplica door lisierului sau directorului selectat. Pentru a configura explieit permisiunile. butonul Advanced aliseazA 0 nouA interia!A in care pot Ii vizual izate toate lipurile de permisiuni ce sunt aplieate fisierului sau directorului ales, inclusiv drepturi mostenite prin ierarhia sistemului de I~iere.

10.6.2

Recuperarea parolei

Un oon administrator de sistem treooie sA lie con~tient de mecanismele de recuperare a parolei pentru a putea preveni proceduri neautorizate de modi/icare a acesteia. Existii doua metode importante pentru a realiza recuperarea parolei de root, ambele necesitand accesul li2:ic la echipament. Prima metoda presupune modificarea din meniul boolloaderului a paramelrilor Ir i mi~i la incArcarea nucleului, iar a doua se bazeaza pe lolosirea unui CD Linux bootabil.

Editarea GRUB Prima metoda de a parolei de root necesrta editrea meniului de boot a GRUB. Din meniul GRUB se selecteaza imaginea de nucleu ce se doreste incarcala ~i se activeaza editarea respectivei linii de grub prin optiunea e. in capitolu l 6 sunt prezentate pe larg metodele de modificare a optiunilor transmise la incarcarea nucleului. La linia continand imaginea de nucleu selectata se adauga optiunea ini t - !bi n!bas h si se continua procesul de ini~al i zare a sistemului. in urma incheierii procesului de ini!ializare se va obtine un shell rool. Daca la execulia comenzii passvd se primeste mesaj de eroare lrebuie remonlal sislemul de li~iere penlru scriere si cilire. Acesllucru se real izeaza lolosind comanda:
roo t @ u bunt u: - I mount - 0
remount,r~

Penlru a preveni 0 recuperare neaulorizata a parolei de root se recomanda folosirea parolelor de acces la meniul bootloader-ului. in cazul GRUB, acest lucru se realizeaza cu ajutorul opliunii passwo r d in cadrul li~ierului de configurare a GRUB.

316
Fo los irea unui Li ve CD

lNTRODU CERE iN SISTEME DE OPEAARE

A daua metoda de recuperare a parolei presupune lolosirea unui Live CD Linux. DacA ordinea de boot nu acorda prioritate unila!ii optice in lata hard discului, va trebui schimbata ordinea de boot din BIOS.
DupA initializarea Sislemului de pe CD !rabuie oblinut un shell de root.
!ludo:
root~ubu n tu:-'

in

cazul Live

CD-ului Ubuntu aeeesta sa real izeaza prin executa rea din contul neprivilegia\ a comenzi
sudo bash

Trebuie creal un nou director in care sa va face monlaree vechiului sistem de I~ i e re:

,
J

r oot @ u b untu: -I mkd i r Imn t / x


Ioo t @ u b untu: -f mount
Idev/hd~2

/mn t/x

1 n acest moment putem invoca comarKIa chroat:


root@ ubunt u: -' chroot Imnt/x

Ultimul pas presupune invocarea utilitarului pssswd si schimbarea parolei de root. lnlrucAI, prin inlermediul Live CD-ului, ulilizaloru l are acces privilegialla lnlreg sislemul, va avea acces complet la sistemul de f i~iere de pe discul sistemuluL Invocarea comenzii ps sswd va conduce la modificarea inlormatiei din fi~ieru l / e t cl sha d ow. Pentru a preveni 0 asUel de procedura eSle necesar sa se forteze din BIOS ca prim dispozitiv de boot unul dintre hard discuri ~i sa se defineasca 0 paro la de acces la meniul de configurare a BIOS -ului.

Cuvinle cheie

eel mai mic privilegiu cea mai slab! veriga contro lul accesu lui aUlentificare autorizare cripla re alacuri Chmod chown chroat

drepturi pe

fi~iere

in UNIX

do
letcfsudoers lelc/passwd. /elclshadow letcfs ecurity/I im its. conf li sle de control a accesului - ACL malrice de drepluri firewall criptare, decriplare chei Simelrice, chei asimetrice chei private , chei publice semni'ltur;'j digilala, cerlil ical digital hacker

df
DoS
drepturi pe
fi~iere

in NTFS

CA PITOLUL 10. ELEMENTE DE SECUR ITATE

317

natstat monitorizara nmap paro le pol itica de securilate quota secu ritatea fizica sniffer

",lo
suid

syslog tcpdump lop

ulimit umask virusi

intrebari
I . Cara dintre urm atoarele NU este 0 functional itate olerita de utilitarul nmap?

o o o

scanarea porturilor UDP si TCP detectarea vers iunii sistemului de ope rare detectarea statiilor active din reteaua locala fi ltrarea pachetelor de re!ea

2. Fie urmatoarele comenzi:


2 3

urn" ,k 022 ",ch o "Acest a nu .. st .. un t @st " > t"st c hrnod go' x test

Care vor Ii drepturile pentru utilizatorii grupului fisierului test ?

o o o o o o o
o

doar cilire doar executie citire


~i

execulie
~i

citire. se riere

execu!ie

3. Ca re dintre paro lele de mai jos esle cea mai sigurii pentru utilizatorul cornel ? cornelush coRnel _cOrN3t[]sh+ niciuna, toate parolele vor Ii incercate lntr-un alac bazat pe dictionar

4. Care dintre riscurile de mai jos reprezinta riscu ri de secu ritate lizica pentru un server?

o o o

lipsa unui lirewall parole pentru utilizatori prea simple varfuri de tensiu ne in reteaua electrica

318

INTRODU CERE iN SISTEME DE OPERARE

o absen!3-lioontei pantru sistemul de ope rare 5. in urma procesului de scanara de porturi sa poale determina:
o daca un serviciu ruleaza pe un port dal o versiunea serviciului o daca sarvieiul asia l illral

o toate variantale
6. Primirea unui email ce contine un virus pe un sistem ce nu are antivirus duee automal la infectarea sa. Un sistem intectal eu un virus nu mai poate Ii tinta unui

a ll alac.
o adevarat,
ade~arat

o adevarat. lals
o fal$, adevArat o fals, lalS

7. Tralicul caire un server asia monitorizat eu tcpdump . Care dintre urmatoarele informalii NU poate objinuill.? o porrul pe care ruleaza serviciul o numArul de clienti ai server-ului
o dimensiunea pachetelor lolosile

o adresa IP a serveruh.li 8. Pantru a limita numlirul de p!"ocese per utilizator se poate lolosi:
Q ulimit Q quota

Q nmap
Q c:hroot

9. Care este primul pas in securizarea unei retele?


Q

definirea unei politici de securitate

Q delinirea regulilor de tiltrare pe firewall Q inslalarea de programe antivirus pe loale slaliile din relea Q criplarea tralicul ui

10. Pe un sislem

Linu ~ .

ce lisier slocheaz1i parolele ulilizatorului (criptale)?

Q !et c !passwd
Q

! e t c!shil. d o w

Q ! e t c!s e cu r i t y ! l im i t s. co n f Q Iva ( / l o g /a p ac he 2/ a cc e s s. l og

C JPYnghted matanal

Capitolul11 Compilare
~i

linking
He who hasn', hacked assembly language as a youth has no heart. He who does as an adult has no brain. John Moore

Ce se invlllii din acest ca pitol?


Cum 58 ob!ine un program executabil din\r-un program sursa Compilarea si interpretarea unui program Etapele comp ilarii Utili zarea Gee penlru compilarea si linkeditarea unui program
Optimizarea compilari i

F ~ i ere

obiect si fis iere executabi le

Bibl ioteci de tunc)ii

Automatizarea ac)iunilor cunoscand dependen)ele intra ele; utilrtarul make Concepte de portabililate Link-editarea codului C si C++

11.1

Introducere

Unul dintre aspectele importanle in utilizarea unui sistem de operare asia dezvoltarea de noi programe. Aces! lucru presupune folosirea unui limbaj de programare pentru scriaraa da cod sursi'i. Codul sursA aSia compilal, iar programul axaculabil obtinul aSia rula!. Ac!iunaa de scriere de cod sursa poarta numele de programare sau dezvoltare. Parsoana cara scria codul sa numa~ta programalor sau dazvollator. Tarmanii in limba engleza sunt programmer, software devetoper sau software engineer. Sistemele de ope rare moderne pun la dispozitia dezvoltatoruluilprogramatorului 0 suilA de aplica!ii lolosile pentru scrierea de noi programe. in cazu l lamiliei de sisteme de operare Windows, suita de aplicalii Visual Siudio reprezinla forma cea mai cunoscula 319

.1

320

INTRODU CERE iN SISTEME DE OPERARE

pentru dezvollarea de r'loi aphcal ii. Aooasta perm ila crearea de pfOg rame in diverse limbaje de program are 5i CI.l ulililate diversa. Dezvo~area de aplica!ii Sf! desf1l:soara: inlr'un mediu integral (IDE - Integrated Development Environment) (vez j sec!iullea 14.9)

De partea cealaltA, sistemala Linux pun la dispozilia utilizalorului suita de aplicatii GNU,
folosM penlru compilarea , link-editarea 5i depanarea programelor. in mod tradi!ional,

dezvoltatorii de aplicatii pe sisteme Linux Iolosesc utili tare dedicate (editor. cempilalar, depanalor). dar se Iolosesc din ce in ce mai mult ~i mediile integrate precum Eclipse sau
Anjuta (vezi sec~unea 14.9. 1 ~i seqiunea 14.9.2).

11 .1.1 Editoare
Prima fazii a procesului da dazvoltara asta scriaraa da cod specific unui limbaj da de instructiuni, variabi le si programara. Codu l reprezinta 0 Insiruira . . funetii panlru acel limbaj. limbajul impune 0 s inta~a pe care programalorul treoo ie sa 0 respecle. Fi~i erul In ca ra sa scria codul asta, in general, un lisiar . ta~t si poart<'i numele da fisiar . surs<'i, sau mai simplu sursa. E~presia -trebuie sa ma uil prin surse"' se reler<'i la parc urgerea fi$iarelor surs<'i ala unei aplica!ii pentru analiza codului. Scrierea de cod sursa sa realizeaza prin inlermediul unui editor. Editoare raspandile in lumea Uni~ sunt vi, Emacs, nano, joe, kate, gadit, Editoare r<'ispAndita i n lumea Windows sunl Notepad ...... Ultraed il , Crimson Editor. De obieei, in lumea Windows , editoare le sunt parte a unui IDE (Intagrated Development Environmant) cum este Visua l Studio sau Eclipse. Un editor eSle lolosit pentru scrieraa unui lisier sursa. Drept urmare, editoare le moderne prezi nta 0 serie de caracteristici utile acestui scop: indentare automala, colorare a codului (syntax highlighting). code folding, variable completion. folosirea de ragistre de editare pentru oparatii m u lt i ~e etc. Lumaa Unix esta dominata da rivalitatea dintra ed itoarele vi si Emacs', in weme 00 vi este un adept al filozil iei Unix (keep it simple) si este folosit doar pentru editarea de fi~iere sursa, Emacs este un ed itor complex cu fac ilil<'i!i care includ posibililalea de lolosire ca mediu integrat de dezvoltare (IDE), client de e-mail. client de IRC etc. Dea lungul vremi i, insa, numeroase fac ilita!i au fost adaugate si ed itorului iii aslfel incat functionalita!ile olerite sunt apropiate. vi ~i Emacs repraz inta de fapt doua lamilii de ed iloare. Ce i mai cunosculi re prezentanti ai celor doua lamilii sunt. re spectiv. editorul Vim' ~i GNU Emacs'. Am~e ed itoare d ispun de facilita!i avansate pentru ed itare Cunoscu\i pentru eficienla si permit pos ibilitatea de eKiensie si personalizare. fanatismul lolosirii unuia d intre cele doua ediloare, programatorii vor prezenta lisierul propriu de configurare (.vimrc in cazul Vim 5i .emacs In Calul GNU Emacs).

o prezentare mai ampl1i a editorului Vim gasi~ in capilolul14.


, httpj leney"lopedia2 .the!"'oddienaty.eomlUse.the.S<>UfCe. Luke http://M .wikiped i3. 0 rglwikiIE dilo r_war , http://Vim. ""urce1or~e. n ell http)lwww.gnu.org/soflwar.le macsi

C JPYnghted matanal

CAPITOLUL 11. COMPILARE

~I

LINKING

321

11.1.2

Compilare!iii interpretare

Programul scris in cod su~a eSle comp4lal sau interprelat pentru a indeplini sarcina penlru care a fosl scris. Atat compilarea cat si inlerprelarea unui program sunt lorme de translatare a acestuia si . executie . pe un sistem hardware. Translatarea se relera la translormarea inlrun limbaj a unui program scris intrun alt limbaj. in delinitia cea mai simpla. comp ilarea unui program se releta la obtinerea unui I ~ ier binar executabil. Execularea acestui l isier duce la indeplinirea sareinii pentru care a lost scris programul. Dupa cum se va observa in secliunea It.3 exisla mai mulle laze specilice compilarii unui program. De partea cealalla, interpretarea unui program elimina laza obtinerii unui executabil si execula codul asocial unui program pe masura pareurgerii acestuia. Avanlajul interpretarii unui program este timpul mai scurt de dezvoltare (se elimina faza de compilare) si depanarea mull mai lacila. Pe de alta parte, dezavantajul interprelatii unui program esta viteza mai scazutil de executie. in cazul compilarii , rularea executabilului inseamna rularea de cod spec~ic sistemului fizic. in cazul interpretarii. codul sursa este pareurs. analiz al si apoi executat, rezultand intr-un limp de rulare mai mare.

Limbaje compilate

~i

limbaje interpretate

Utililarul lolosit pentru compilarea unui program poarta numele de compilator, iar eel lolosil pantru interpretare poarla numele de interpmtor. Compilatorul, respectiv Aslfel , interpretorul, sunt implementar! ale limbajului de programare asocial. campilatorul/interepretorul cunoa~te sinlaxa limbajului de programare in care a 105\ scris respectivul program si este folosit pentru translatarea acesluia inlr-o forma execulabila: li~i er execulabil in cazul compilalorului, sau execu!ie in timpul translatarii in cazul interpratorului. Una dintre cele co nluziile din lumea limbajelor de programare si a programarii in general eSle clasificarea in limbaje com pilate 5i . limbaje interpretate. De multe ori se mentioneaza . ca C, CH. Ada, Fortran, Java sunt limbaja campi late, in vreme ce Perl, Python, PHP, Ruby, lisp sunt limbaje interpretale. De lapt, orice limbaj poate Ii alat interpratat cat si compilat. Astlel , de;;i limbajul C este de obicei com pilat, exista si interpretoare pentru acesta ' . in coneluzie, nu axista limbaje interpretate sau compilale ci implemenliri de compilator sau implementiirl de Interpretor pentru un limbaj. Intr-adevar, limbajele au asociate preponderant un 8I1umil tip da implamentare (C are implemenlari de compilator, Perl are implemenl<\ri de interpretor) si, drept urmare, sunt denumite "Iimbaje comp ilate " sau "Iimbaja interpretate". Totusi, aceasta clasilicare aste l0rlata ~i recomandam fie atrib\Jita implementarii acelui limbaj.

sa

, http;l/www.ooftintograHon .com!

C JPYrtghted matanal

322
Umbeje d e niv el
Sc8ZUt

INTRODU CERE iN SISTEME DE OPERARE


sl timbaje de nive l i nal!

Ointre multiplele clasificari posibile ale limbajelor de programare', 0 clasi/icare rl'ispanditA aSle in limbaje de programare de nivel scAzut si limbaje de programare de nivel inall.
Limbajele de programare d e nive l scilzut SlJnl acele limbaje care nu olera 0

abstractizare a amilecturii sistemului de calcu l in mod ob i ~nuit, aeeste limbaje olera o translatare minima a instrocjiunilor arhitecturii. limbaie de prog..-amare de nivel scazut sun! codul ma~i na, adica scriarea unui program direct in binar ~i limbajul de asamblare, Un programalor nu va serie niciodata cod ma~inll
5i loarte rar cod in limbaj de a5amblare.

Llmbaje'e de program are de n lvel i nal! sunllimbaje de programare care olera 0 abstractizare a arMecturii siste mului de calcul. Limb ajele de programare de nivel Inalt sunt mai u~or portabile ~i olera 0 sintaxa mai apropiata de limbajul natural. Limbajele de programare de nivel lnalt olera 0 plaja. larga de abstractizAri. Unale limbaje pot ascunde complet detalii legate de modul de adresare a procesorului, alocareafdezalocarea memoriei, lucrul cu obiecte etc. No\iunea de limbaj de nival ina~ devine relativa raportat la lacilitatile ole rite. Daca In anii 7 0, limbaj ul de programare C era considerat limbaj de nival inalt, in zilele noastre peale Ii cons ideral limbaj de nivel seazut Tn comparatie cu limbaje precum Java, Python, Ruby. Exemple de limbaje de nivel Scheme. Prolog, Hask~1.
Ina~

sunt: C/CH, Java, Perl, Python. PHP. Ruby. Lisp,

11.1 .3 De la sursa la executabil, de la executabilla proces


Dupi'i. cum sa precizat, In urma compilArii unui li~ier sursil. se obline un executabil care poate Ii apoi rulat pentru Indeplinirea sarcinii pentru care a lost seris. in capito lui 5 sa menlional ca un execulab11 esle 0 enlitale pasiva care deserie modul in care va ru la n cadrul unui programul. Rularea electivA se realizeazA Tn urma executiei programului T proces. Procesul eSle enlitatea activil. in eadful careia se vcr aloca resursele programului ~i se va rula codu l asociat pe procesor. cum re iese ~i din ligura 11.1 , oblinerea unui executabil dintr-un fi~ier sursa sa realizeaza in urma eompilarii aeestuia din urma. La fel, procesul este oblinut din executabil in urma eXBCutiei. Utilizatorul va trebui sA cunoasca dear limbajul de nivel Inalt si sa serie codul sursa In aeest limbaj. in continuare. eompilatorul va ob!ine executabilul; eXBCutabilul este un lisier binar care descrie, in cod masina, operatii le precizate de utilizator. in faza de execu!ie. cu suporlul nucleului sislemului de operare, din executabilul obtinut anterior se creeazi'i. un proCBs. Procesul este entitatea activil. care va executa pe procesor operatHle descrise in cod ma~ini'i. in zona de cod a execulabilului (vezi sectiunea 5.1.2).
I htlpJ len .wikiped ia. "rglwikiIC ot"l/O ricaUist_"J "'program m;" Il..JaOl/lJage.
A~a

C JPYnghted matanal

CAPITOLUL 11

COMPILARE 5 1LINKING

323 'ula,.
proce,

Co
fit i.,

,om pll~ ~

Co
fit i.,
. , e< "t o~ i l

I ~M .,e

In e" e<", ~

cO<l

,",,;I

<=>

It
, i,t em o. coleui

Figura 11.1: De la

fi~ i er

sursa la executabil; de la executabil la proces

Compilatorul olera in acest lei un benehciu important: utilizatorul nu trebuie sa delina informalii des pre sistemului lizic din spale (zone de memorie, instrucliuni ale procesorului etc.), ci numai notiuni despre limbajul fo losil pentru a serie cod ul sursi\. Compilatorul va Ii responsabi l cu Iranslatarea codului sursa {Iisieru l sursa, text} in cod masina (Iisierul executabil, binar). Ulterior, in urma ru l1l.rii executabilului, sistemul de operare creeaza procesul care executa codul pe procesor. Folosirea unui compilator aduce dupa sine avantajul portabilitatii codului: utilizatorul va scrie cod su rsa portabil specific limbajului de program are. Compilatorul genereaza cod binar neportabil spec ilic sistemului lizic pe care acesta va rula. Mai mulle detalii despre portabilitate sunt prezentate in sectiunea 11.6. fn examplul de mai jos aste prezental un lisier sursa C (h w. 0 ) 5i comenzila penlru compi larea acestuia (9"00 h.. . o), generarea unui executabil (a .out ) si executarea acestuia In cadrul unui proces ( . /a . out).

,
3

linclude <stdio . h> tnt rnai n l yo td l

pr intf (" Hello , ~jj o rl d ! I n ") ;


r . turn 0 ,

Listing 11. 1: hw.c


mi rc .a@c oug a r : -i c ar t e-u ~ o i c ap- l O$

f i l e h w.c

, ,

> h ",.c : ASCII C p rogram t e xt

mlreea@eougar : -icarte - us o/ c ap- lO$ gec hw. e

G mireea@eougar : -/carte - us o/cap- l O$ fi l e a . ou t , a . out : eLi" 32 - b \t LSe executable , Inte l 8 0 3 8 6 , version 1 ISYSV) , tor GNU/

g
10

Lin u x 2 . 4 . 1 , d y nami c all y lin k e d not s t ri ppe d

lu ses s h ared l i b s ) ,

f o r GNU/Li nn 2 . 4 . 1 ,

mlrcea@cougar : -/carte-u s oi c ap-l0 S . /a . o u t Hell o, Wo rld !

11.1.4

Pachete necesare

Pentru dezvoltarea de aplicalii este nevoie de


cuno~tin!e

des pre un anumit limbaj de program are; C right mate-rial

'"

lNTRODU CERE iN SISTEME DE OPEAARE

un editor !alosi! pentrlJ a scrie cDdui sursa:


un interpretor sau un compilator pentru acellimbaj.

in restul acestui capitol, limbajul de programare lolosi! pentru exemplilicare ~a Ii C. Compilatorul lolosil va Ii Gee' , compiiatorul implicit pe distribuliile Linux. Pachetele necesare pentru dezvoltarea de apliCatii C sub Ubuntu sunt gee, libc6- dev . Sa recomanda ~i paginile de manual pentru dezvoltare din pachelul manpages-ctev si documentatia bibliotecii standard C din pachetul glibc - doc (sau glibc-doc-reference pe sistemele Debian). Instalarea utilitarului Make (vezi secliunea 11.5) eSla, de asemenea, recomandata.
<oot@COUg3,. , -. a p t - get Install gee 1 !bc6 - dev maopsges - dev gHbc - doc m3ke

Mai u~or, se poate instala pachetu l virtua l build- essen ti al. Destinat lormal creArii de pachete .deb, instal area acestui pachet cooouce la instalarea pachetalor importante pentru dezvoltarea programelor pe un sistem Ubuntu. Pachetu l nu include pachetele de documentane, deci acestea vor trebui instalate separal:
root@eouq3r : -1 3 pt -qet ins t& ll build-essenti31 manp ages- dev ql ibe- doe

11.2
1n

Compilare. GCC

general, procesul de compi lare sa reler1!. la oblinerea unui lisier executabil dintr-un li~ier cod sursa. Apl ica!ia care realizeaza aceasta trans latare se nume~te compilator. Un compilator este 0 apl ica!ie comp lexa care, pe IAnga rolul de translator, trebuie sA indeplineasca si alte cerinte. Codul binar obtinut de compi lator In cadrul executabilului va trebui sa satislaca una (sau mai multe) din urmAtoarele solicitari: sa fie cAt mai mic; sa ruleze cAt mai rap id; sa: consume cAt mai putin:.i memorie In momentul rul:.irii. Un compilator trebuie s1!. implementeze cat mai mutt din specilicati ile standardetor in rigoare . Spre exemplu, in cazul C, standardele sunt stabil ite de ISO'. Ultimul standard este ISO 9899:1999 denumit si C99" . Pe sistemele Unix, compi larea se real izeazA prin transmiterea l isierului sursA ca Compilarea rezuUA in generarea executabilului implic~ argument compilatorului.

<I.o ut":

,
,

miree&@eouq3r ; -!e ~rte-us o/e&p -10 S

qee hw . e Is

m'ree&@eouq~r : -/e~rte-uso/eap-10S

a . ou t hw . e

mirc~a@co u qa r' -I c a rt,,-u ~ ol cap-J 0$ . ! a . out 7 Hello , lio rl a '


1htlp11""c.gnu.o r~ ' htlp11www. i~o. o r(jli . otho "''' .hI '" , http) lwww.opoen la. orglJ T e IlSe22M1G l .lwwwldoc.l n I 2~6.pdf http)l. n,wikiped ia,orglwikU A.out

e APITOLUL11. eOMPILARE !?1LINKING

325

Pe sistemele Windows compilarea se realizeaza, in linia de comandi!.. lolosind utilitarul c1 ' . Executabilul ob!inul are acela~i nume cu li~ierul sursi!. insi!. cu extensia e xe:
c : \> el hw . e
J

c: \>

h" . ~ x~

Hello , Wo rl d '

Gee este compi latorul implicil pe distribu!iile linu~ ~i pe un numar mare de alte sisteme Unix. Scris de RK:hard StaJlman' in 1989 pentru proiectul GNU, era lolosit initial dear pentru a compila programe C (GNU C Compi ler). Oe-a lungul timpului s-a extins. ~i in ziua de azi, peate compila programe scrise in C++, Fortran , Objective-C, Pascal. Java etc. Drepl urmare, denumirea sa a lost sch imbat<li Tn GNU Compiler Collection. Pachelul GCC oleri!. executab ile (denumite ~i Irontend-uri) pentru liecare tip de limbaj pe care il peate comp ila: gcc este lolosil penlru a compila programe scrise in C;
'1++ comp ileaz<li programe scrise in C++;

'1nat compileazi!. programe scrise in Ada; '1cj comp ileazi!. programe scrise In Java;
'177 comp ileazi!. programe scrise in Fortran;

11.2.1

UtilizareGCC

La 0 rulare impliciti!. a GCC, acesta genereazi!. executabi lul a . o\lt . Fie urmi!.lorul program C:
, ,
)

linel ud.
m&iniJ

<,td i o.h>

, ,

pr int f (" Hell o . ~lIorld' \n") ;

listing 11.2: hw2.c in lorma sa cea mai simpl1i, compi larea se realizeaz1i prin transm iterea li~ierului sursi!. ca argumenl comenz ii gcc:
mlreea@coug3r,/e3rte- us olc 3p- 10S gee
h~2 . e

in mod implK:it se obtine executabilul a . out. Pentru rularea acestuia se loloseste construclia . I care precizeaz<li execu!ia din directorul cu rent :
mirce3@eoug3r : -/c3rte-u s o/c&p-10 S . 13 . out Hello , World !

Se poate spec ilK:a numele executab ilului care se doreste prin folosirea optiunii . oblinut . . - 0 urmala de numele execulabilului:
, http ://m s d n .m ic ,osolt co mI.. n .u . ml>fa'yim . 235639 IVS.80) .asp' ' http ;lIe n. w ikiped ia. olglwikUR ich ard _ Sta ll man

326

lNTRODU CERE iN SISTEME DE OPEAARE

,
~

mlrcea@cougar : -Jcarte - us o/cap- IO $ gee hw2.c - 0


",I rCM@cou g a r ; -/cane-uso/ cap-1 0S . /my_ e x ec ~ello, Worl <l!

my _e ~ec

In general, executabilele in Unix nu au extensie. Opliunea - 0 poate Ii prezenta oriunde in linia de comai'lda, doar eli va trebui sa fie llrmata de numele executabilului:

,
1 ,"1 rCM @ cou gar : -/cart e-uso/cap-1 0S . / my_other_exe c Hello , Wo rld!

o
,

gre~eala

frecventa este fo losirea opliunii

- 0

urmata imediat de numele fisierului sursa:

m.rcea@couga r : -/carte-usolcap-10S gee -0 hw2 . c my_ ether_ exec


my_ether_e xec : ( . rodaoa+OxO ): Multip le definit ion of ' _fp_h w' lu s r llib/gee! H86 - linux -gnuf4 . 1 . 21 . . I . . ! .. / .. !lib/ c r t 1 . 0 : I. rodata+OxO ) : f i rst defined h e r e

(. .. 1

ATENTIE: Aceasta sursa.

gre~eala

are cOl"lsecil"l!e grave pel"llru ca duce la pierderea fisierului

Programul hw2 . c prezel"ltat mai sus compileazA, dar I"IU respectA il"ltru totul stariClardul C. De exemplu, fUl"lc!ia main trebu ie sA lntoarca int' . Compilatorul nu va alisa. 11"1 mod implicit, l"Iiciun lei de avertismel"lt pel"ltru astlel de incol"lsistel"lle. Acest lucru poate Ii schimbat pril"l lolosirea optiul"lii - Wa l l (Warnings A/f) care comariClA compilatorul sa afiseze mesaje de avertizare pel"ltru abateri de la stariClard sau pel"ltru formular; atipice:
Mir ce~ @ eo u g ~ r : -/e~rt e-us oJc ap-10 S

gee -W~ ll hw2 . c -0 my_exec h,,2 . c : 4 : w~ rnin 9 : r e turn t ype defa u lts to ' i nt O h,,2 . c : In f unction ' ma in ': h .. 2 . c : 6 : wa rning : contro l reaches end of n o n void f u nct i o n

Dupa corectare, avertismel"ltele I"IU vcr mai Ii lumizate:

, , , ,

'include <.t di o . h> int main (void l


pr i n tf ( " Hello , _W o rl d ' \n") ;
r .. turn

0;

listirog 11.3: hw2.C

,
,

Mir ce~ @eo u g ~ r : -/e ~ r te-u5 0Jcap -10 S

gee

- W ~ ll

hw2 . c - 0 my_ exec

Mi

rcea@eo u g ~

r : -I e~rte-u50 I c ap-lO S

o gre~eala Irecventa care poate Ii eliminatA prin fo losirea op!iunii - Wal l este utilizarea COl"Istructiei if ( a - 1 1. Programul de mai jos foloseste 0 astlel de cOl"Istruc!ie care este raportata, insA, de compilator i n momentul lolosirii OPliunii - Wa l l :
' Un a di ntr" IIr" . " I;!" heyent" ru lizal" de p rOQramalorjj lnc"pator i &ste folo~irea formelor void Mai n (vOid) .au main {I Siandarduf C 'p"c~ i d fo rma int ma i n (vOid l ca fiind c ~ a cor",,' ii.. N"lolosirea ac",'e i forme oafe conduce fa problem . hUpJ/uurs .aber.ac.clklauj/widmairu htmf

CAPITOLUL 11. COMPILARE !?I LINKING

327

,
3

'include <9ldlO . h>


tnt
m~in( votd l

,. "
,
~

tnt a
if
(ll

print f

"

("H~ llo ,

_loIor 1<1 ' \n " , ;

Listing 11 .4: hw3.c


mHcM@cou ga r: -/cdrte - uM/cap- l0$ gee - \'!~ ll hw2 . c - 0 my _ ~x~c h ... 2.c : I n function ' main ': h.,2 . c : 7 : w~rning : suggest p&renthese, ~ssiqn m ent u' e d dO truth v&lue

~ro und

IMPORTANT: Din cauza sintaxei re laxale a limbajului C este recomandalA folosirea opliunii - wall la orice compilare de program.

11.2.2

Compilarea din surse multiple

o aplicatie comp lexA va avea mai multe fisiere surso:! continand diverse pArti din imptementare. in exemplul de mai jos, fisierul ma i n . c COnIine functia main , fi~iere l e add . c ~i sub. c contino respectiv. implementarea func!i ifor add ~i sub, iar fisieruf tun c . h de!ine antetele (declaratiile) acelor junc\ii.

,.
" "

" ,
3

'includa <. t<1io.h>

Hndude "tu nc.h "


'defi na IIIJM tnt m&i nl yotd l print f( "Surn 4(\d l_- _'d\n " , IIIJM, ,um(llUMII , printf ( " Suma-alternanta ('d) _ - _ \d\n ", NUM , r e turn 0 , 10

~um &lt

(NUM));

"

Listing 11.5: main.c

, sum( int nl , , ( int nl ' t e ndif


" urn ~ lt

.. ...

htndef 'de fine

rUlIc rUlIc--,,-

"

Listing 11 .6: junc.h


Jinclude " Cunc.h "

328

lNTRODU CERE iN SISTEME DE OPEAARE

"
,

, , , '" " ,
,
,

int surnl int


int

"

'"" '0' " ,, " '""


",. tur" ,urn ;

"

sum;

.-

, .-"
i i

iH )

Listing 11.7: sum.c


Jinclude " tu nc. h "
int
sum~ltl int

nl

int i,

;urn ;

"

'00. ""

- 0, , , " ,"'-- 0>


<-

"

" " " " " "

"he

."

iH )

'"" '""

.-"
listing 11.8: sumalLc
fi~iere

-- "

return sum;

Pentru ob!inerea unui executabil, toale aceste


compi lator ului:

vor Ii transm ise ca argument

,
J

ra'V3 n@V3 )h 3 1l a : -/carte - us o . git/src!code/lO - comp llareS gee - Wall m a! n .c ;"m . e . umalt.c
r uva n @va l hA l 13 ; ' I carte - uM . gi t! "rc I cod e /1 0 - comp 1 h reS . I Su013 110) - 55 5u m~- .. lt ~ r n a n ta(lOI - -5
~

. out

Se peate lolos; opliunea - 0 penlru a spedica numele exec utabilului final:


'a.va n @va l h a ll a:-lcarte - uso . git/srclco d e/ l O- co rnp i l are~

gee - Wall m a in .c

,
,

sum . c su m a l t.c - 0 exec


u.va n@va lh a l La , -!cane - U$ o. glt!s<c!coa e! l O-comp i
- -5
16re~

. !exec

Suma l lO) - 55 5 Suma-alt ~ rMnta(lO)

11,3

Etapele compilarii (inclusiv link-editarea)

Exemple le de pflnl\ acum au Iolosit Gee pentru a obtine dintrun lisier sau mai multe fisiere sursl\ un executabi l. Acest lucru a fosl realizat intr-o singurl\ comancll\, Totusi, rularea unei instante a Gee presupune trecerea printr-un set de etape de pre lucrare a fisierului sursl\ pana la executabi l, Aceste faze sun\. in ordine:

CAPITOLUL 11. COMPILARE !?I LINKING

329

1. preprocesarea; 2. oompilarea; 3. asamblarea; 4. link-editarea. o rulare simpla a eomenzii gee inseamna Ireeerea prin toale acesle faze. Prezenla unor parametri poate forta GCC sa se opreasea dupa una dinlre ele. Figura 11.2 sintetizeaza etapele oompilarii:

.,;0,

""OK'

"
.,,,,,,,,,,,"

. _."
p re pnx e ,~ re

_ . -'"
comp i l~re

" .,...mOl.
~s.mbl. re

-" .. " -

"

"

iokeditare

Figura 11.2: Fazele compilarii In eazul folos irii direcle a comenzii gee. se rea lizeaza inlegrat toate cele 4 faze. Fi~iere l e oblinule in urma fieeare i laze sunl, in aeeasla situa!ie, stoeale lemporar in sislemul de fi~iere dupa care sunl sterse. 0 ru lare de lip verbose a comenzi i gee prezinta: detaliat fazele procesului de oompilare:
r~ zv ~ n @ v ~ l h alla : -/eode/p t rS

ge e - v

- W ~ ll

p tLe - 0 ptr

,
3

U ~ ing

b uil t - in ' p e c , . T~rget : ,86_ 64 - 1inux- gnu

{. .. I
l u sr/ li b/gcc/x86_ 64 - lioux - g n u/4 . 3 . 3/cc l - qu i et - v p t LC - qu iet - durnpb" ,,, p tr. c -mt un@ _ g@n@ric - au x bas e p tr - Wa ll - ve r s io n - 0 I t mp/ccYyQva x . ,

6
,
A

(. . .1
IO@bia n 4 . 3 . 3 - 14 ) versio n 4. 3 . 3 ('86_ 64 - linux - gnu ) compile d by GNU evers i o n 403. 3 . GMP version 4 . 3 .1, MPPR veu i on 2 . 4 . i - p2 .
GNU C
{.

J
- V - Oy - 0

'0

GNU assembler version 2 . 19 . 5 1

I t mp /ccofhlN3 . o /tmp/coyOvdx . s Ix8 L 64 - linux -gnu l us i ng BFD verSio n (GNU Bi nut ils fo r De b ian l 2 . 19 . 51 . 20090723

as

"
,~

(. .. I
! u sr!lib/ g cc!x86_ 64 -li nux - gnu!4 . 3 . 3!collect2 --b ui l d -. d
-- eh - fr~ m e- hdr

m elf_ x86_ 64 --ha;h -; t yle-bo t h - d yna mic - lin ke r I l ib64!ld -1 1nu x - x 8 6- 64 . ;o


. 2 - 0 pt r ! u sr/ lib /g c c/xS6_ H - linu x - g nu !4 . 3 . 3/ .. f .. I .. I .. llib!cr tl. o ( 1 !tmp/ccoFh tN3 .o - lgcc -- as -n@ e d@ a -l qcc _ ~ -- no - as - nee d @ d -l c -l gcc

{. .. I

Oupa cum se observa mai sus, exisl1i 3 elape rezu llale In urma ru larii eomenzii gcc: 1. invocarea comp il alorului (ce l ) conduce la oblinerea fisierului in limbaj de asamblare /tmpf c cYy Qv d x. s;

330

INTRODUCERE iN SISTEME DE OPERARE

2. invocaraa asamblorului /t mp /cc o f h t N3 . o;

(as)

cooouce

la

obtinerea

lii}ierului

obiect

3. invoca rea linkerului (collect 2) conduce la ob!inerea lisierului execulabil p t r ;


in cazul Gee, preprocesorul esle invocal intern de compiialor (ce1) si nu rezultl1 in obtinersa unui !isiel templXar.

in continuara vor Ii prezen late mai detaliat laz81e proces ului de compi lare si lisielele intermediare ob~nute ,

11.3.1
Etapa

Preprocesarea
de preprocesare presupu fl8 inlocuirealexpa r'ldarea direclive lOf de

preprocesare din fisierul sursa.


Directivete de preprceesara ineep cu # (diaz, sharp in 81lQIezli). Prlotte acestea sa numara d irective #i ncl ude 5i directiva tde fin e. Dupa pre procesare, directiva ti nc l ude asIa inlocuit1l cu fisierul inclus, iar directiva Idefi ne define1lte un macro care va Ii substil1Jit Cll valoarea sa oriunde apare in codul sursa.

in exemplul de mai jos se realizeaza preprocesarea fi~ ierului i nf o . c .

,
Z

h f ndef I NFO H ,daUna INFO_ H_ , d aUne MAlL/IRRA Y_ LENGTH

32

6
,

.truct

H r ay_ 'tr ~ c t

{
;

i n t a rr ~yIMAX_ARRAY_LENC;THI int l e n;

listing 11.9: info.h

,
,

,
" "

' include

in f ~.h

int g e t _ .um l otruct a <u y_ nr u c t int 1; i n t . um; tf


I ~ - en

_0 )

" " " "


" "

>-

MA X ~ RRAY _ L r, NG 7 H )

r e tu r n 0 ,

for ( i - 0 , i < a - >h n;


"~m

iH )

+-

4 - > ~ cc ~ y l iJ ;

r .. turn

'~ m ,

listing 11.10: info.c Penlru oprirea rularii GCC dupa faza de preprocesare se foloseste optitmea - E:
~hted

matanal

CAPITOlUl11. COMPIlARE!?1 LINKING

331

mircea@cougar,-/carte - us o/cap- 10$ gee - !nfo . C f 1 " into.c" f 1 " <built - in> f 1 " <convnana - jine> "

,
10

5 f 1 " into.c " f 1 "l nto.h " 1

~ t r u ct

"
1>

&rr&y_,trunct in t a rr ayl32J ; in t l en ;

) ;

"

f 2 " into.c" 2

" '" " "


18

i nt get_ sum(struct array_ struct ' a)

i nt i ;
i nt
if

s um;

20
21

"

(a -> len >- 321

r et ur n 0 ; fo r ( i 0 ; i < .. - >len ; i " ) sum +. . . - >.. rray[il ;

"

2J

..

" ""
"

retu rn .urn;

Se observa inlocuirea directivei f i ne l ude CU lisierul in fo . h si inlocuirea macrodefini\iei MAX_ARMY_ LENGTH cu 32 In lisierul preprocesat. Preprocesarea este $ingura laza a procesului de comp ilare care nu rezulta in mod implicit intr-un nou f i ~ier. in absenta opliunii -0, rezultatul preprocesarii este scris la iesirea standard. Folosirea op\iunii -0 sau a operatorului de redi rectare per mite precizarea lisierului de iesire. Conventional, lisierul preprocesat are extensia . i :

,
J

mircea@couga r : -/carte-uso/cap-10S gcc - E info . c -0 in fo .


mircea@co u ga r: -/carte -u~ o/cap - 10$

gee - E i nfo .c > i.nfo . 1

Preprocesarea este efectuata pe un sistem Linux cu ajutorul utilitarului GNU CPP (C preprocessor)'.

11.3.2

Compilarea

Compilarea este etapa in ca re din lisierul preprocesat se obtine un liSier in limbaj de asamblare. Compilarea efectivl'i Inseamna traducerea codulu i din limbaj de nive l Inal! In limbaj de asamblare. limbajul de asamblare descrie instructiunile specifice procesorului
, http;IIg<;c.gnw.o rgio nlin &doc slepp!

332

INTRODU CERE iN SISTEME DE OPEAARE

sistemului lizic. opliunea - So

Pentru oprirea rulari i GCC dupa laza de compi lare se foloseste

in exemplul de mai jos. se compi leaza li~ierul i n fo. c din sec~unea anlerioara si se obline, implicit, lisierul i nfo . S. 5e poate preciza explicit li~ieru l de iesire cu ajutorul opliun ii -0.
mirc@a@co u ga r, -/cart@-u~o/cap-IO$

15 in fo .

, ,
" ,

,nfo . e

i nfo . h

mirc@a@eou ga r: -/c .. rt@ - u~o/cap - IO$ gee - S in fo c mlrcea@cougar,-/cart@ - us o/c ap- IO$ 1. Info . ' ,nf o . " i n tO .h info . s . file . text . globl g e t _, um . type g e t_sum : pu s h l rnovl s uN movl mov i e mpl jle mov l jmp 'info . c'

" " " "


" "

, , , ,

\ebp
\@ ~p . h bp $20 . \e s p

8 (\ebp) ,

\ea~

128 (\ea~ ), S31, 'ea~

'e~~

SO , -20 I'ebp )

."

.co
listing 11 .11: info.S

( ... 1

Pe sistemele Linux ~i Unix, li~ierul in limbaj de asamblare are, de obicei, extensia . S. Pe sistemele Windows, un fi~ier In limbaj de asamblare are extensia . asm.

Limbaje de asamblare Limbajul de asamblare esle un limbaj de program are de nivel scazul Instruqiunile sa le (denumite si mnemonici) sunl de lapl reprezenlarea simbolica a instrucliunilor puse la dispozilie de procesorul sislemului Exemple de mnemonici sunt mav, cmp , add. sub, pu sh elc. Instrucliunea In cod ma~ina:
10110000 OllO OOO I (OKb 061 )

este scrisa in limbaj de asamblare ca:

.L

061 h

Mnemonica mov lnseamna electuarea unei copieri. Rezultatu l eSle incarcarea valorii OK61 In registrul a1 al procesorului. Exista, in general, 0 asociere unu la unu inlre 0 instruc!iune In limbaj de asamblare si 0 instruc!iune In cod masina. Un program seris In limbaj de asamblare eSle neportabil: peale Ii rulat numai pe arhilectura de calcul penlru care a fost scris. Oaca programul in Iimbaj de asamblare trebuie portat pe 0 alia. arhitectura, trebuie rescris si lolosile mnemonicile spcilice acelei arhilecturi.

CAPITOLUL 11. COMPILARE !?I LINKING

333

intrucAt necesitA cunoslinle despre Slructura procesorului. resursele acestuia, mecanismul de acces la memorie, programarea in limbaj de asamblare este dilicilA. Se recomandA folosirea acesluia doar la nevoie: cand un limbaj cum eSle C nu olerA instructiuni pentru electuarea unei anumite opera!ii cand este nevoie de eficientA maximA care poate Ii obtinut.:i numai prin scr ierea de cod in limbaj de asamblare Traducerea codului in limbaj de asamblare in cod obiect se realizeaz.:i cu ajutorul unui asamblor in faza de asamblare descrisA in sectiunea urmAIOare. Fiind vorba de 0 asociere unu la unu inlre mnemonici si instruc!iunile procesorului, este posibila oblinerea codului in limbaj de asamblare pornind de la codul ob iect. AceastA operalie poarta numele de dezasamblare si esle prezentala in sectiunea 11.3.3.

Ti puri de limbaje de asamblare Chiar pentru acelaSi procesor pot exista limbaje de asamblare dilerite sau. mai corect spus, sintaxe de limbaj de asamblare dilerite. Pe art1itectura x86, asamblorul de la Microsoft loloseste Sintaxa Intel, pe cAnd asambiorui de tJnu x (GNU) fo loseste sintaxa AT&T ' . Astlel , copierea valorii Ox i OO in reg istrul eax se lace. lolosind ce le douA sintaxe, astfel:
ma,,1 ma" $0,,100 , MX . t e a" lOOh

; ;

~ lnt~x~

AUT
l nt~ l

~ ln t axa

La lei. stocarea valorii IDO la adresa in dicata de eax :


, mo"l $Ox 100 . mo,,1 I M X].

(" ax 1
lOOh

~ ln t axa

~ lntax~

ATOT I nt e l

11.3.3 Asamblarea
Etapa de asamblare esle etapa de Iraducere acodului scris in limbaj de asamblare (Iisier text continAnd mnemonici spec ifiCe arhiclecturii sistemului de calcul) in cod bi nar. Acest cod binar eSle cod masinA reprezent:l.nd cod iliCarea binarA a instruc!iunilor procesorului. Fisierul obtinut poarta numele de lisier cod obiect sau modul obiect. Pe Unix un modul obiect are extensia . 0 iar pe Windows extensia . ob j . Pentru oprirea ru lArii qc:c: dupA laza de asamblare se loloseste opliunea - c. in mod implicit sa inlocuieste extensia lisierului sursa cu o. Fisierul 5ursA poate Ii un l isier C sau un lisier in limbaj de asamblare:

,
,
, 6 ,

mireea@eougar:-/carte - uso/cap- lO$ gee - e in fo . c


mireea@co~gar:'/carte - usoleap - lO$

ls -I i nfo . O -rw-r--r-- 1 ubuntu ubontu 764 Sep 19 00 : 29 info . o

m.rcea@eougar , -/earte - os o lcap- l0S gee - c info . s

, http ;lI. n.wiloiped ia.olglwikiIXS6_ao.emi>ly_la nguage

'"
"
mirce~@couq"r:-/c"rt" - u$o/c"p - lO$

INTRODUCERE iN SISTEME DE OPEAARE

1. - 1 info.o - rw- r -- r -- 1 ubuntu ubuntu 7 44 Sep 19 00 : 29 into.o

Ca si pana acum, se poate lolosl op! iunea - 0 pentru a preciza explic it numele fisierului de iesire:

,
,

mirce,,@couqa r' -/c"rt~-u$o/c"p-lO$

gee -c in fo . ,

-0 modul . o

mirceo@cougar:-lcarte - u$o/cap- lO$ 1. -1 mo<iu l ,Q - <"'- r -- r -- 1 Ubun tu ubuntu 744 Sep l~ 00:41 modul . O

in cadrul suitei de aplica!ii GNU, asamblorul folos i! Gas (GNU Assembler)" iar
executabilul asocial este a s . Un l isier in limbaj de asamblare poate Ii asamblat folosind

as :

,
,

mlrcea@cougar:-/carte - us o/c ap- lO$ as into.S - 0 as out . O


mircea@cougar ; -/carte-uso/cap-lOS Is -1 a"_ out . o
- rw- r -- r -- 1 ubuntu ubun t u 744 Sep 19 00 : 48 a'_<lUt . O

Modul oblect Un modul obiect contine cod masina specific procesorului. Acesl cod eSle obli nut in urma fazelor de preprocesare. compi lare si asamblare. Un modul obiect are. de obicei. extensia . 0 :
mircea@co u ga ": -/c~rt~-u"o/cap-lO$

info.o , ELf" 32 - b i t stripped

LSB reloca t able ,

f i le in fo . o Inte l 80386 , venion I

ISYSV) ,

not

objdump; dezasamblare Datorita asocieri i unu la unu care exista intre codul obiect si codul in limbaj de asamblare, se poate realiza 0 operatie de dezasamblare. Dezasamblare in seamna "recuperarea" mnemonicilor i n limbaj de asamblare pornil"ld de la codul ma~ina ; este operatia inversa asamblarii. Utilitarul iolosit in aces! sens este o b j d u mp:

, ,
6 ,

ra"van@anaconda : -/U$o/compilare$ objdump - d i nfo . o info . o , f il e format elfJ2 - iJ86

Disassembly of section . text :


00000000 <get_ sum> : 0: 55 89 e 5 83 ec 14 8b 45 08 8b 80 80 00 00 00 83 fS I f

" "
"

.
,, , , , , ,,,

push
~o"

",
~,

'ebp ' e sp , ' e bp $Ox14 . \ " ,P


0 ~ 8('''bp) , ' e ax

~o"
~o,

Ox80 (' e ax) . 'eax $ Oxli . ',,~x

, http)le n.wikiped ia.orglwi!<i/GNU_A..embie r

CAPITOLUL 11. COMPILARE!?I LINKING


"
,.

335
I d <get_$um'O x l<;1> $OxO . Oxf[f[f[ec (hbp)

12 :
14:

7e 09 c7 45 ec 00 00 00 00

jle mov l

'"

( ... I

om
Un alt utilrtar IO IOSitor in lucrul cu l isiere obiect este nm. Cu ajutorul aceS\1.J ia se pot lista simboluri le dintrun f i ~ i er obiect:
r~zv~n @ ~nacond" : -/u s oJcompil"reS

nm info . o

00000000 T get_ ,urn

run peate ole ri informatii despre delinirea sau nu a unui simbol intr-un modul obiect:
r~%van@anaconda : -/uso/comp i l~,eS

nm ma!n . o

U add

00000000 T main U printf


U

sub

Din rezultatul afisarii se observa ca simbo lurile sunt marcate cu u sau T. T inseamna ca acel simbo l eSle delinit in zona de text {cod} a executabilului, iar u inseamna cli este nedelinit in modulul obiect primit ca argument. In exemplul nostru, modulul are delinit simbolul rna in dar nedefinile simbolurile add, sub ~i pr i nt f. Aceste simboluri se gasesc in aile module obiect sa u in bibtioteci. Rezotvarea aceslor simboluri 5e va realiza in momentul link-edilarii.

11.3.4

Optimizarea compilarii

Un compilator translateaza codul sursa in limbaj de asambtare. ~i dupa faza de asambtare. in cod ma~in1'i. Operaliile descrise intr-un limbaj de nivel inall pot Ii traduse in diverse "scenarii" de instruC\iuni in limbaj de asamblare. Avand cunost inte intime despre arhitectu ra sistemului de calcul (setul de instruC\iuni. regislrele procesorului ~i modurile de adresare), compi latorul peate alege un scenariu mai bun de translatare. Faza tranSlatarii in care comp ilatorul i ncearca oblinerea unui cod masina mai bun poarl1'i numele de optimizarea codulul . Denumirea de optimizare este u~or IOl"\ata. Un termen mull mai bun este eel de imoon.!lUltire; nu se poate spune cli se ob!ine cod op/lm. Dalorit1'i r1'isp{md irii aceslei forme, atAI in limba romAna cat si in limba englez a (optimizing compiler), se va lolosi in conlinuare denumirea de optimizare. Optimizarea are drept scop ob!inerea unui executabil care sa ru leze cat mai rapid care sa ocupe cat mai pulin spaliu.
~i/sau

Se peate intflmpla ca aceste doua scopuri (viteza mare, spali u ocupat mic) sa lie in conlliCt; ulilizatorul va putea preciza compi lal orului care $Cop este mai important. o data cu dezvoltarea sislemelor embedded, un rol important pe care trebuie sa-I indeplineasca executabilul ob!inut de comp ilator este consumul red us de putere.

336

INTRODU CERE iN SISTEME DE OPEAARE

Folosirea optimizarii reprezintA un compromis intre obtinerea unui executabil mai rapid sau care ocupa mai pulin spaliu ~i un limp mai indelungat de compi lare. Din aces! moliv, parlea de dezvoltare a unei aplica!ii se real izeaza lara optimizare. Faza de optimizare asle lolosita in momentul in care aplicalia esla pregatitA pentru tans are (release). Pentru a justifica avantajele ~i dezavanlajele folosirii optimizarii, mai jos se prezinta doua scenarii de compilare a unei aplica!ii C++:

lara optimizare; se obtine executabilul bb- ss a- no- op t :


ou foiosirea unOf opti uni de optimizare; sa obtine exe<:utabi lul b b - ssa - op t .

Sa poate observa, ca dezavan/aj 0 orestera a timpului neeesar pentru compi lare (de la 4 . 1 secuooe la 5 . 7 secunde). dar ca avantaj 0 scadere a dimensiunii execulabilului (dela 328KB la 140KB):
r~zv~ n @ v~ l h " 1 l<t : - hc h 001/ 2 001 - 200 L eo a e/ p t/te"",4/ p t4$ time g - 0 b b - .... n o - opt b b - s s " . e pp b"sic_ b l oc x . cpp ss a . c pp asambl or . c anal i zor . c i n terpre t or. t3 b . c - t fl

10 11

".er 5 s ys
s s ~ - opt

r eal

Om4.1 43. Om 3 . 6240 OmO . 4880 t ime g .. - 0 - 0 bb an~ l i zor . c

I~ z v~ n @ v ~ lh ~ 1l ~ : -h c h o o l /200l - 2006 _ co a e/ p t/t""",4/ pt 4$

" "
,. 1e "

b b - " . epp b a. i c _ bl ock . c pp " . cpp a samb lor . c i n t e r p r eto r . t a b . c - l f 1 Om S . 769. Om 5. 288 s OmO . 4 56s

re~l user sy s

razv a n @ va lh a l l<t , '/sehool1200 1 - 200 L co a e/ p t/ t ema4/ p t4~

1$ - lh bb- ssa -no -

"

'"

- <"xr - xr - x 1 U<v3 n uzvan

328~

Au g- 2122 : 11 bb - ssa -n o - opt

ruva n @ v a l h 3 11 ~ ; -/schoo l 1200 1- 2 00 L coa e/ p t/ t e m3 4/ p t4S I s - l h bb- sS 3 - o p t - <wxr - x< - x 1 U< v 3 n uzvan 140~ Au g- 21 22 : 12 bb -~~ a - op t

Gee per mite optimizarea codulu i obtinut prin intermediul op!iunii - 0. Aceasta este urmata de un numar ca re specilica gradul de optimizarefimb\.lnatatire a cod ului. in mod implicit, comp ilatorul nu oplimizeaza codul. Acest lucru este echiva lent cu lolosirea optiunii - 00 (litera 0 majuscula si zer o):

mircea @ eoug" r:- lear t e - uso/c Op - IO$ gee - e e h at.erv . c - 00


m i rce a@ "o ~ga r : 'leart e - u s o /cap- I O$
ch ~ tserv.o

19 - ) - r w- r -- r -- 1 uountu ubu n tu 3656 Sep l a 23 : 46 chauerv.o

Gee prezinta 3 niveluri numerice de compilare: op!iunea - 01 inseamna reducerea timpului de execu!ie $i a codulu i ob!inul lara a alecta semnilic aliv timpul de compilare; este echivalentll cu lolosirea optiunii - 0 (lara un argumenl numeric)

,
)

m ireea@eouga r ' ~/ca r te - uso/c a p - 1 0$

gee - c chat s e r v . c - 01

m irce 3 @cougar , -/ c arte - u so/c~p - 1 0$ 10 - 1 c h a t, e rv . o - rw - r -- r -- 1 u b unt u ubu ntu 3200 Sep 18 2 3 , 46 c h a ts e r v . o

CAPITOlUl11. COMPllARE!?1 LINKING

337

opliunea - 02 inseamna lolosirea luturor oplimizarilor care nu atrag un compromis vitezaspaliu

,
,

rn i ree~@eougar;-/carte - U'O/Cap -l 0$ rn i ree~@coug a r : -/c~rte - u.o/c~p -l 0$


eh~tserv.Q

gee - c ch a t.erv.c - 02

1. - 1 - rw - r -- r -- 1 ubuntu ubuntu 3232 Sep 18 23 ;4 7

eh~tserv.Q

Se observa ca sa obnn ut un cod ceva mai mare decat in cazu l opti unii -01, dar care va rula mai rapid . Nu intotdeauna un cod mai mit va Ii mai rapid. optiunea - 03 este in acest moment cea mai puternica (s i agresiva) metodl! de compilare:

,
,

rn ir ce ~ @cou9ar : -/c~r t @-u.o/c~p- 1 0$ rniree~@COU9ar;-/c a rt e - u.o/c~p -l 0$

9CC -c chat s @rv . c -03 ts -1 330a Sep 18 23 :4 7 chataerv . Q

chatserv . Q - rW - r -- r -- 1 ubuntu

ubunt~

GCC olera 5i optiunea - Os care i nseamna optimizarea codului pe ntru a ocupa cal mai pulin spatiu. 0 utilizare tipica este In cazu l dispozitivelor embedded care dispun de resurse hardware rduse:
1 ,
J
"' ir c e a~cou9ar : -lcar t " - usO/cap - 1 0$

9CC - c

cha t ~ erv . c

- 0.'1

"'i rce a8 cougar : -I carte - us,,1 cap - l 0 $ 1; - 1


ch~t3 e rY . o

- n. - r -- r -- 1 u buntu ubuntu 2868 Sep 18 23 : 47

ch~t'''rv . o

11.3.5 link-editarea
Un modul obiect este asociat unui singur !isier/modul sursa. Modulul ob iect descrie datele si codu l lunctiilor proprii. Varib ialele si luncliile poarta numele generic de simbo luri. Simbolurile externe modulului (adica !uncliile sau var iabilelele e~terne ndelinite local, prezente in aile module) sun t marcate ca ndelinite in cadrul modulului. Pentru obtinerea unui fisier executabil si deci pentru rularea acestui cod este necesarl!: identilicarea simbolurilor nedelinile, ope ralie denumita si rezolvarea simbolur ilor,

,;
unilicarea sau legarea (linking) a zonelor de date si cod asociate intr-un Iisier executabil. Aceasta operalie se numesle link-editare, linking sau legare. Spre exemplu. in momentul i n care se compi leaza un modul ob iect care loloseste func!ia de bibliotecA print f, simbo lul apare ca liind nde!inil (caracterul u la run):
razvan @ anac"nda : -/u ~ o/compil~r"$

rum main . "

,
J

00000000 T rna l n
U

printf

Funelia print f este delinila in biblioteca standard C. in urma link-editarii se obtine un execulabil care imporla zona de cod asociatA luncliei pri n tf din bib lioteca starldard C. Alta situalie este folosi rea intrun modul obiect a unei lunelii definite intr-un alt modul

338

lNTRODUCERE iN SISTEME DE OPEAARE

obiect;

un exemplu eSle folos irea iUr'lCtiei sum In fisiarul mai n. c descris in


~i

sectiu nea 11.2.2. Fu ncUa sum esle definita In sum , c .

Aplica)ia care rezolva simboluri le nedefinite


obiect poarta numele de linker.

care realizeaza legarea moduletor

ROlul unui linker eSla, asadar, de a lega mai muHe l isiere obiect sau biblioteci, de a rezolva simbolurile nedefinite ~i de a obline un executab il sau 0 bib lioteca.
Figura 1 1.3 prezinUi rolul indeplinit de un linker.

ri ~i er

b ibliote<.i

obie<t

linker

bibli o tec ~

execut.bil

Figura 11.3: FUr1C\ionarea linker-ului Mai multe detalii des pre biblioteci se g1i.sesc in secliunea 11.4.

Invocare linker
linker-ul de pe distribuliile G NU/ Unux esla G NU linker sau GNU Id'. Executabilul asocial este I d. Linker-ul esle rareori invocat cu ajuloru l come nzii I d . i n mod obisnuit, linker-ul esle invocala inlern de comanda g cc:

"

, , , ,

mir c @a@cQ u qa r: -/c~rt@ - u~o/cap - lO$

,cc - Wa ll - c ma;n . c
",'

mlrcea@cQu qar:-/carte - uso/cap- lO$

- Wa ll

mircea@cQuqar:-/carte - uso/cap- lO$ ",C - Wa ll


mircea@co u q~r : '/c~rte - us o /cap - lO$

-, -,

~dd . c

sul) , c sub . o

,c'

m ~ln . o ~dd . o

-,

exec

mirce~@co u q~r : -/carte - us o /c&p - IO$

. /exec

Suma 110) :

, http)le n.wikiped ia.orglwikiIG NU_ i n~" r

"

CAPITOLUL 11. COMPILARE!?I LINKING


"
Sum~ ~lte rn ~ nt~

339

{I OI:

-s

Se poate fotosi ~i ld. ins!! num!!rul mare de argumente care trebuie transmis face aceast!! optiune mai putin viabil!!:
mirce~@co u q~r: - /c~rte - U$o/c~p - 10$

ld -d y n ~ mi c - linker /lib/ld- linu x . o . 2 I uS" l li b/crt l .o lusr/ lib/crti . 0 lus r / li b/qccl i4a6 - li.nux - qnu/ 4. 1 . 2/crtbeq i n . 0 mai n.o add.o sub . o - I e lusr/l;b/qcc/i4a6 - 1tnux- gnuI4 . 1 . 2/c,te nd. o lusr Illblcrtn . o - 0 e~ec

mj

rcea@cougar :'/carte- usolcap- 10S . /exec

Suma 1101 : 55 S Sum~ ~lt ~ rnanta 110 1: - 5

11.3.6
Un

Fisiere executabile
este un fi~ i er binar ob)inut dintr'UI"I set de in urma operatiei de linkeditare.
li~i e re

11~ler e~ecutabll

obiect si

bi~ioteci

Spre deosebire de lisierele obiect, un lisier executabil are idenlihcate si, in general, relolvate simbolurile. Aceste simboluri SUl"lt relolvate la Iinkil"lg (tegare static!!) sau la rulare (leg are dinamic!!). in momel"ltu llans!!rii il"l execulie, inlorma!iile eon!inute in fis ierul executabil sunt folosite penlru a genera un proces. Un lisier executabil va contine cod ul masin!! lolosit penlru indeplil"lirea sarcinilor date dar ~i an tete ~ i sec!iuni de lormatare auxiliare. Aeestea SUl"lt folos ite pentru a descrie modul in care se foloseste codul, zonele de memorie folosite etc. Un I~ i er executabil are, a~adar, un lormat bine delini1. Formatul de I~ i er executabil se relera la li~iere obiect, li~iere executabile ~i la biblioteci eu leg are dinamica.

Formate ale fisletelot

e~ecutablle

Formatul unui fi~ier executabil' este stnlns legat de sistemul de operare. Sistemul de operare esl e responsab il cu interpretarea unui l isier exeeulabil si generarea unui proces pe baza acestuia. Un e~ecutab i l poate Ii rulat pe un sistem de operare daca acel sistem de operare oler!! suport pentru lormatul de executabil lolosi!. Formatul de li~ier executabil se refer!! ~i la li~ierele obiect. Exemple de formate de lisiere obiecVexecutab ile sun\: ELF - folos it in sistemele Unix; COFF - versiunea anterioara ELF folosil!! pe Unix; a.out - primul lormat lolosit de sistemele Unix; a olerit del1!Jmirea pentru executabilul implicit general de compilatorlli nker; PE - formatul implicit pe sistemele Windows;
, http;lle n.wiloiped ia.olglwikilObjecUile

340

INTRODU CERE iN S IS TEME DE OPEAARE

Mach -O - formatul implicit pe Mac as X. In linux, Iormatut de fi$i&r ob iectlexecutab il folos it aSIa ELF (Exe<:utable and linking Format) ' :
mi r ce~ @ co u qa r: -/carte - U$o/c O p - IO$

f il e in fo . o i nf o . o : ELF' 32 -b it LSB reloc &table , Inte l eO~86 , v .. uion I st ri ppe d

ISYS'I) , fiot

ml rce a@ cougar:-lcarte - uso/c ap - lO$ fi l e exec


exec : ELf n - t it LS6 ,,><ecuUb l e , l n te l 80396 , v e rs i on I ISYSV) , for GNul L i nux 2 . 4 . 1 , dyn a mic a lly li n k ed lu ses s h ~ ~"d l i b s ) . fM GN lJ!L1n u, 2 . 4 . 1 , not strippe d
mircM @ co ug ~r ; -/c ~ rte - usoJc&p - l0S

,
10 11

f ile Ibin/l" Ibin/l5 : ELF 32 - bi t LSB e x e c u t able . Int e l 8 0 386 , v e r H on 1 IS YSV) . fo r GNU/L i n u x 2 . 4 .1. dynami c dly lin k e d luses , h a r ed lib $ l . fo r GNU/L inux 2 .4.1, st ri pped

m1 rC M @ cou qa r: -I c a rt .. - u~ o l cap- I 0 $ f i 1.. 11 i b / l i b c - 2 . 3 . 6 . ~ o Ilib/ li bc - 2.3 . 6.$o : E LF n - bit LSB s h a r e d o bj ect . Intel a03S 6 , ve r sion 1 ISYSV) , for GNU/ Linu x 2 . 4 . 1 , strippe d

in listingul de mai sus se observa tipurile de fisiere care folosesc formatul ELF: module ob iect; f~ierul i nfo . 0 este un modul ob iect ELF reloc abil'; fisiere executabile; fisierele e xec si /bi n /l s su nt fisiere executabile format ELF; biblioleci partajale (vezi x.y.z); fisierul /lib/ libc - 2 . 3 . 6 . so eSle 0 bibl ioleca partajata (sharedobject) (vez i secliunea 11.4.1). Utilitarul readelf poate fi folosit pentru an al iza unui fisier in format ELF. in exemplul de mai jos se pot observa cateva din secti unile unui fisier executabil: . t e x t reprezinta zona de cod, . roda t a zona de date readonly.

, , ,
, '"

ra"va n @ a n aconda : - /U$o/compilare$ r ead elf - $ eKec ThH~ a r ~ H 3~ct i on h"adH3 , 3 t a rtinq at off3et Ox,,3S : Section Head ers: INr i Na me 1M "'I

Type NULL
PROGBITS

, , "' , ," ,"" " ( J


0 0 0 0

"'ddr

'"

She

" n, "'
0

00 000000 000000 000000 00

. i n te~ p
.n ot~ . II BI - ta9

0 8 0 48114 000 11 4 000013 00 08 0 48 1 28 000128 000020 08048148 000148 000028

NOTE HIISH

. h as h

0 00 0 "'

, http;!le n.wi<iped ia .orglwikilE ' 8CUtabl<o_ and_lin kat>e Jor mal ' http;!l. n, wikiped ia, orglwikURelocatio n_ (co mput~r_ $C ie nc e )

CAPITOLUL 11. COMPILARE

~I

LINKIN G

341

11.4

Biblioteci de

func~ii

o biblioteca este colectie de lunctii sau elase care oler~ servieii preimplementate dez~oltatorului. in general, 0 biblioteca este oblinuta prin comasarea mai multor lisiere obiect. 0 biblioteca eSle, de asemenea, un l isier.
e.ecut~b i l e

0<1

0<<<'

O""'V hb .

BEl
bi bliotedi
~i

module ob iect con\inut e

Figura 1 1.4: Biblioteca Bibliotecile de !unctii {engleza: libraries} au aparut penlru a oleri 0 mai mare flexibilitate deZVQl1atorilor de software. Acestea reunese lunetii des utilizate , astlel incat un program ~a lolosi 0 biblioteca lara a Ii neVQie de reserierea eodului doril. in zilele noastre, Ioarte mllite servicii au lost incapsulate in bibliotaei de lunctii pentru a u~ura procesul de dezvo~are de nOi apticatii. Astlel: biblioteca standard C (l ibc) olera servieiile de baza ale sistemului: biblioteei preeum GTK... ' sau Qf olera primibve pentru dezvoltarea de inter/ete gratice; utili tarul Pidg i n~ de instant messaging a izolat lunetiile prineipale in biblioteca l ibpurple; dezvotatorii Subversion' au dezvoltat biblioteca 1 i bsvnl : 1 ibpng, 1 ib jpeg, 1 i bti f f sunt lolosile pentN prelucrarea de imagini; l i btorr en t -rak shasa si l i btorren t -ra sterb ar sunt biblioteei care implementeaza protocolul SitTorrent lolosite de un numar mare de elien!i BitTorrenl. Mai sus sunt prezenlate doar eateva dintre aplicaliile bibliotec ilor. Praetic. orice l unctionalitate utilizabila de mai multe aplieatii poate Ii implementata lnlro bibli oteca.
, hl!p :I.w-.(jlk.oo'{ll ' hItp :Ilqt no~la. co JT\I ' http :I.w-.pidgin.imI http ;llw~ rs ion,tig, i., ofgl

C JPYnghted matanal

3<,

lNTRODUCERE iN SISTEME DE OPEAARE

Din circa 25000 de pachate instalatlile In cadrul distributiei Debian GNUILinux


Testing/Squeeze', peste 5000 sun\ biblioteci:
r~'v~n@v" lh " ll ,, ' -/cod .. /ptr$ ~pt - c~c h e

.",uch li brary I grep 'lib I we -1

5699

11.4.1

Tipuri de biblioteci

BibHotecile i~j incep utilizarea i n momentullinkedit~r i j. Pentru rezolvarea simbolurilor nedefini\e, Iinker-ul caut.:! in modulete obiect incapsulate in cadrul bibliotecilor ~i realizeaza rezolvarea simboluri lor. Rezolvarea inseamna marcarea locului in care simbolul eSla delini\. in J unelia de tipul bibl iotecii, linker-ul decide sa adauge mOdulul obiect necesar in codul executabil ului sau doar sa marcheze referinla rezol~ata. Exisla, aSllel, doua tipuri de bibli oteci:

blblioteel Cll legare statlcii (statical/y-linked libraries) sall, pe sCLI rt. bib/ioteci slalice; biblioteei ell legare dinamicii (dinamicallylinked libraries) denllmite bib/io/eci par/ajate (shared/ibraries) pe Linux si dynamic..,ink libraries (OLL) pe Windows. Inditerent de tip, bibliotecile de \unctii existii sub lormii de lisiere independente in sistem Bibliotecile statice (static libraries) sunt aeele biblioteei ale caror module obiect componente sunt ineluse in li~ i e rul executabil in momentullink-editiirii. Aillel spus. un exeeutabit obtinut in urma legarii eu 0 bibliotecii statica deline tot eodut necesar pentru a rula. Oimensiunea executabi lului esle m1!.rita prin ineluderea Ii!;ierelor obiect necesare din cadru l bibiotecii. in eazul blbliotecilor partaJate (shared IIbrartes). operalia de link-editare doar marcheazii referi ntele ea liind rezolvate. Modulete obiect nu sunt incluse in codul executabilului obtinut; vor Ii adal,JQate in momentul lansiirii in execU\ie sau in momenlul rul1!.rii. Codul asociat unei biblioteci partajate nu ajunge nieiodatii i n eadrul unui executabil. BibHoteca va Ii inciircata. in memorie la nevoie si va Ii lolosita in eadrul procesului oblinut in urma exeeu!iei. in iunclie de momentui in care biblioteca va Ii inciircatii in memorie, exista doua subtipuri de biblioteci cu legare dinamica: blblioteel eu incarcate la exeeu!ie (load-time dynamically-linked library) biblioteca este adusii in memori e in momentul in care programul executat. daci'1 nu exista deja aeolo; blblioteel eu ineiircare la rulare (run-rime dinamicaIIY'/inked/ibrary) - biblioleca este adusa in memorie la cerere , in momentul in care programul executa 0 instruc!iune care solieil1!. acest lucru. Bibliotecile partajate, dupii cum Ie spune si denumirea, reprezinta. metoda cea mai utilizata de a pune la dispozitie fune!ii comune penlru mai multe aplica!ii. Daea doua
, http)/package .de b;an.o rgite.tingi

CAPITOlUl11. CO MPllARE !?1 LINKING

, <3

sau mai multe aplicatii lolosesc aceeasi bibliotecA, aceasta va trebui sA lie incArcatA 0 singurA datA in memorie, economisind astlel spaliul ocupat. Biblioteca standard C. folos itA de cea mai mare parle a aplicaliilor, este, de obicei, 0 bibiolecA parlajatA. Tabela I I I reprezintA 0 compara!ie lntre biblioteeile statice si eele partajate:

11 .4.2

Informa,ii despre bibliotecile de func,ii

Pe un sistem Linux, bibliotecile se gAsesc in direcloarele /lib, l u sr /lib sau lust/local / l ib. Bibliotecile statice au extensia .11, iar cele parlajate so (de la shared object). In!ormalii primare despre bibliotecile de lunetii se pot alia prin intermediul comenzii
fil .. :
mi rc~a @ couga r : -I c a rt,,-u ~ ol cap-l 0 $ fi l e lu, r I 1 i bl 1 ibm . a

> lusr/lib/ li bm.a : current o r orchive


" ro l rcea@cougar:-/cane - u$o/cap- lO$ tile I Ilbl 1 ibm. so . 6 Ilib/libm o.6 : $ymbolic link to li bm - 2.3.3 . $O ' mt rce a @couga r,-/carte - usolc &p - lOS tile 1)!b/)!bm- 2 . J . J . 80 I l ibllibm-2.3.3.so : ELf 32-b i t LSB sh a red object, I nt e l 80386 . Ver S Ion 1 ISYSV) . not 'trippe d

,
$

BibHotecile statice sunt de lapt arhi~e de li~iere obiect. Ele sunt create prin intermediul comenzi i ar. (pentru mai multe in!ormalii se poate consu lta man arlo o bibliolecA parlajatA este creatA de linker. Pe un sislem Li nux, 0 bibiiotecA partajatA se creeaza cu ajutorul comenzii gee ~i optiunea - shared '. 0 biblioteca partajata este id entilicatA printrun numar de ~e rs i une. Penlru a lacilila lolosirea acesleia, se creeaza o legAturA care nu include numArul ~ers i unii. Comanda run poate Ii utilizatA pentru a (staticA sau dinamicA):
~izuali za

lista simboluriior dintr-o bibliotecA

mircea@cougar,-/carte - usolcap- lO$ n m I l ib/ l ibm . so . 6 2 00052b60 T !scanf 3 00043t20 T fprintf

, http ;lltklp.orgIHOWTOll' rogram Lib rary HCN/TOI. h. rOKlI;brar;' .hl ml

344

lNTRODU CERE iN SISTEME DE OPEAARE

, ,

000521>90 000521>aO

, .ca nt , sscant , , __lite_enable

secu re@~C;L) eC_ PR 1VA TE

11bc _ stac~ _ end@@C;LIBC _ 2 . 1

Simbolurile marcate eu T sunt simboluri din zona de cod (funelii) ce pot Ii foloS i\a extern
de alte programe sau alte bibl ioleci. Simbolurile care sunt precedate de caracterul u sunt simboluri care trebuie rezo lvate de linker la apelarea programului (sa observa cil ele nu au adresa in fisierul eu biblioteca). Acestea nu SUI1! definite local, ci in alte

biblioteci (simbolul _ libc_ enable_ sec ur e@(!G L IBC_ PRIVATE aSle delini! in
biblio\eca standard C -libe)

11.4.3

Utilizarea bibliotecilor

Bibliotecile reprezinta colee!ii de module preimplementate folosite pentru obtinerea unu;


executabil, ceea ce inseamna ca , i n momentul tinkeditarii, linkerutui Ii trebuie precizate bibliotecite necesare. Acest tucru se reatizeaza CIJ ajutorut op!iun ii - 1 (litera "L mic"). in tist ingut 11.4.3 se apeteaza funqii din biblioteca ncurses.
2 , Jinclude <.td'\o .h > tinclud .. <stdlib . h> tinclude <ncur .... , h> tnt main Iyoid l init,crll ; cbrea k II ; noe cho II ; pr int f ( . Smd' h_f oce hM d_onJeybodrd_H,_cont inue_ ... I ; fflu,htndoutl ; fflu ~ h I ~ tdin) ; qHch() ; nocbrea~ (I ; .. cho II ; e ndwin(l ; r eturn 0 ;

"

" " " " " "

Listing 11.12: Folosire lunc!ii din biblioteca ncurses in urma comenzii de compilare 5i rulare rezulla urmatoarea efOare:

, , , " ,
~

10 11

qce -W~ ll - 0 qetch qe t ch . c In function ' main ': qetch . c : l.t"xt+Ox51 : undefined refe r enc .. to "i nitscr ' getch.c: l.t .. xt+O Ka); undefi.ned reference to "cbr .. ak ' getch . e : l.te K t+O~f) : undefined rete renee to "ooecho ' qetch.e : l.t .. xt+Ox3dl ; undefi.ned refer"ne .. to "stdscr ' getch . c : l.t .. x t ~OK4<1 : undefine d reterenc .. to "wg .. tch ' getch . c : l . text + O~471 : undefined reference to "oocbre a ~ ' getch . c : l . t e x t+Ox4cl : undefIned reference to ' e cho ' g-Hch . c : l . t e x t+OxSll : undefIned refer~nce to ' endwin ' collect2 : 1d returned 1 eXIt status
c~zv~n @ v~lh~11~ : -/c~rt,,-u~ofc~p-10$

Itmp/cc~v3S"B.o :

Linkerul nu ga se~te definitiile funcliilor initscr. cbrea ~, noecho etc. Pentru a re20lva aceast<'i problema link-eru lui litrebuiespecilicatsaloloseaci.lbibl ioteca ncurses . Aceasta este localizata in fisierul libncu rses . a sau 1 ibncurses . so :

CAPITOLUL 11. COMPILARE !?I LINKING

,<5

ra.va n @va l h a l l a ; -/carte - us o /cap- 10 $ l s / u sr/ ) t b /ltbncurses .' luse 1 1 ibll i b ncune ~ . a IUH/l lb/llb nc u r.e . .o IUH/llb/llbnc u rSe . '0 . 5

Numele sub care va Ii folosiU'i biblioteca de linker se obtine prim eliminararea extensiei ( . a. sau . so) si a preli~ului l i b. Penlru lace legarea li~ieru l ui get c h . C cu biblioleca ncurses, se lo l ose~te comanda:
ra,va n @va l h a ll a ' -/carte - uso/cap- 10$ g ee - Wa ll - 0 geteh \
2
> g@ t c h.c - l ncun .. s

ruva n @va l h a ll a , -/carte - uso/cap- 10$ 1 s -1 g eteh - r><xr - xr- x 1 ruvan ruvan 10734 Sep 21 23 : :/5 getch

Se observ;"i c;"i, in acest caz, opera!ia de linking se desl;"isoan! cu sucess si se obtine execulabilul getch. BibHotecile sunt cautate in zone standard din sistemul de fi~ i ere: /1 l b, /usr / 1 l b, /us r /l ocal/li b. in cazul in care li~ i erul asocial bibliolecii nu se g;"isesle inlrunul din directorele slandard, se foloseste optiunea - L. Astlel, dac;"i se doreste legarea cu o biblioleca definil;"i in fi~ieru l /ho me/t r al an /libs/li bilv at a r. a, se lolose~te 0 comand;"i de forma :
ubuntu @ ubunt u:- $ gee - Wall - 0 mo rph mo rph. e -l avatar - L/home/t r a i a n / li b .

Cand se specilicl Un direclor suplimenlar in care se va realiza ca.ularea, numele acesluia se "Iipe~te" de optiunea -L ; nu se lasa spatii libere inlre opliunea -L ~i numele direclorului . In cawl bibliOlecilor parlajale, exista. 0 elap;"i suplimenlara. de ca.ulare a bibliolecii in momentul lansa.rii in execu!ie a programului (Ia inc;"ircare). Modul in care se specificl directoare suplimentare de ca.ulare depasesle sfera de cuprindere a aceslui cap itol. Penlru cei inleresati, Inlernetul olera mulle tutoriale despre aceste notiuni'.

11.5

Automatizarea sarcinilor - make

Ap licaliile complexe dispun de un numar mare de fi~iere sursa. Compilarea ~i linkeditarea acestora poate deveni un proces anevoios si repetitiv. Se poate intflmpl;"i ca doar cateva fi~iere sursa. sa. fie modilicate ~ i sa. nu fie nevoie de recompilarea intregii aplica!ii. Se doreste, a$adar. un utilitar care sa. automatizeze sarcinile de comp ilare, linking si allele ~i sa rezolve dependenlele intre li~ierele sursa pentru a eficientiza procesul. Make esle un un aslfel de ulililar: un program pentru aulomalizarea lask-urilor. Make rezolva problema executiei unor actiuni in fu nClie de relatiile (dependelele) inlre ele. 0 ac!iune este execulala doar daca ac!iunile de care depinde au 1051 execulale. Relaliile inlre actiuni sunt definite intr-un fi~ier numit Ma kefile. Pe baza acestuia, Make determin;"i aulomal secven!a de pasi care trebuie efectuala pentru respectarea dependenteior. Pentru a optimiza executi a actiunilor, Make determina daca 0 actiune a lost efeCluala si nu 0 mai executa. in acela~i timp. Make delecleaza daca penlru 0
, http ;lltklp.orgIHOWTOll' rogram Libra ry HCN/TOI. h. r.,.;l.librarie .html

3<6

lNTRODU CERE iN SISTEME DE OPEAARE

actiune s-a mOdifieat 0 dependeniA si 0 executa din nou. Figura 11 .5 dascrie mdoul de func\ionare a utililarului Make.

comenzl

Figura 11.5: Functionare Make Make reprezintA, de lapl, 0 ClasA de apliCatii. Cel rnai rAspAndit membru al aeasle; clase esle GNU Make' _Executabilul asociat esle make, Vorn deserie modul de lunc\ionare si utilizere a Make prin compilarea 5i link-editarea apliCatiei descriSA Tn sectiunea 10.3. Aplicatia consta din 4 fi~iere (ma in. C, sum, C,
s u ma l t.c, func . h).

11 .5.1

Cel mai simplu Makefile

Cea mai simpla forma de lisier Ma k efile conI ine comanda de compilare 5i linkir.g a

fisierelor de mai sus:

exec :

Listing 11.13: Makefile foarle simplu


Pentru rularea comenzii deserise In fisieruf Mak ef i l e se foloseste comanda make :
I ~ z v~ n @ v ~ lh ~ 11 ~ ' - / c ~ rt @ - u~ 0 . gi t /5 rc /co d @ /10-cornpil ar@$ m~ k @

gee m.. in.c 'urn . C ;umai t . c - 0 e xe C

Fisierul Makefife specific1l. faptuf c1l. pentru a ob!ine executabifuf e x ec se ruleaz1l. comanda qc:c: main.c: SUJII.C: suma.1t.c: - 0 .. x .. c:. exe c poart1l. numele de target (lin/a) a fis ierufui Makefile: ceea ce se doreste ob!inut. Din motive de tradi!ie. comenzile dinlrun lisier Makefile sunl precedale de caraclerul TAB. 0 greseal1l. frecvent1l. este fo iosirea de spatii in loc de caracteru l TAB Inainte de folos irea unei comenz i. Aparilia unui mesaj de forma celui de mai jos inseamna. destul de probab il. omiterea folosirii caracterului TAB:

6:

ra.va ft @va lh a ll a ,' /caIte - us o. git/sIc/co d e/ l0- co mp i l aIe~ M ~ k efile : 2 '

ma ke

'"

missing

sep~'H or.

Stop.

, http)/www.gnu.o '\P$OftwareJmake l

nght

mate-nal

CAPITOlUl11. COMPIlARE !?1 LINKING

347

11.5.2

Folosirea dependenlelor

Fisierul Makefil e de mai sus are un neajuns important: la orice rulare a comenzii Make se va executa comanda de compitare si linking indiferent dac~ fisierele sursa au fost sau nu modificate. Acest lucru inseamna realizarea unei actiuni inutile. Pentru a evita acest lucru, specific~m in Makefile faptul c~ executabilul e xec se obtine din ce le trei fi~ iere surs~ (main. c, sum. c, sumalt . cj. Cele trei fi~ i e re surs~ sunt ad~ugate In lisla de dependenle a executabilului (dup~ caracterul : - dou~ puncte). Dependenjele sunl fisiere sau alte targeturi de a c~ror existenta sau reat izare depinde targetu l curen!:

exec : mai n.c ,um .c ~ umalt . c gcc main.c , um . c , umalt . c - 0

~x ~ c

Listing 11.14: Makelile cu dependente in aceast~ situa!ie, ru larea comenzi i ma ke nu mai are ca elect compilarea si link-editarea celor tre i fisiere s u rs~ ci afisarea unui mesaj care mentioneaza ca executabilul exec exist~ ~i nu au fost modificate f i ~ i e rele de care depinde:
razvan@va lh alla : -/carte-u ~ o . git/5rc/code/ lO -com pilare$

make

make :

' e xe c' i , up to

d" t ~ .

Daca un lisier din lista de dependente va Ii modilicat, Make va observa acest lucru si va rula din nou comanda. Un element target sau dependentl'i a unui fisier Makefil e are doua st~ri: actualizat:
fi~ierul

asociat nu a lost modificat si dependen!ele sale sunt actualizate;

neactualizat: fisierul asociat a fosl modificat sau 0 parte din dependentele sale nu sunt actu alizate.

11.5.3

Oependenl e ierarhice

Fisierul Makefile anterior are lnc~ neajunsuri. Un neajuns important eSle prezenta fisiere lor sursa in lista de dependen!e. Fie situatia in care programalorul lnsemna urmatorul set de pasi:
modific~

fisieru l sum. c. Rularea comenz ii make va

se verifica daca dependen)ele targetu lui exec sunt aclualizate; se observa ca fisier ul sum . c a fost modificat, deci dependenta sum. c este neactualizata: target-ul exec este marcat ca neactualizat: trebuie rulata comanda larget-ului; se ruleaza comanda qcc main. C Sum . c sumalt. c; comanda are drept consecinla compilarea tulu fOr fisiere lor din lista de dependen!e si apoi link-editarea fisiere lor ob iect asociate.
asoci at~

348

lNTRODUCERE iN SISTEME DE OPEAARE

Se efactueaz1'i, asadar, tre i process de compilare (penIN mai n .c, sum. c, sumalt . c ) ~i un proces de linked itare a celor Ire i modu le obiect asociale. Totu~i, inlrucat doar fi~jeru l sum. C a fost modi/icat, nu aSle nevoie de compilarea f~ierelor main.c s i sumal t. c.
Pentru a elimina acest neajuns, S9 modifica
fi~ieru l

Ma k e! i Ie astlet"

exec , main.o sum. o sumalt .o

,
2 .. &i11 , O :

gee maln.o

."m . o

&umalt . o - 0

ex~c

m a in.c
'ICC - c ma in . c - 0 IMln . o

"
10

Surn . O: ' um . c qcc - c ,um .c


sUlMlt .Q :

- 0

~ um . o

.um alt . , gee -c ,um d l~

. c

-0

~ umalt . o

Listing 11.15: Makefi le eu depende nte ierarh ice

in aceasla situati e, fi~ierul Ma kefile deserie 0 arborescenl1'i de dependen!e, ca in


figura 11.6.

' urn .<

...... . _,

g" ' (

m ~; n_c 0

rna in.o

gee , Su m.C 0 $u m .O

gee -e $umalt,c _0 <uma lt,o

molrl.o

",m,o

, ,,,,,,It ,o

F~ura

11.6: Dependen!e intr-un fi~ier Makefil e

in ligura sunt reprezentate ~ i comenzi le rulale penlru ob!inerea liecarui lisier in parte. Astlet. 0 rut are simptl'l a come nzii ma k .. va produce urml'ltorul rez ullat:
r~zv~n@v~ l h~ 11 ~ ' /c~rt ~ - U$o . git/src/coa~/ 1 0 - COrnpilare$

make - f

M~ k efi l ~.

, main.c main . o , "00 -, -, 8um . C 'um . o -, 'UrMlt . C -, sumai t . 0 , '" '" main.o sum.O sumalt . o -, '"
-0 -0

aep . 'er

exec

Pasii pe care Ii electueaza utilitarul Make sun\:

CAPITOLUL 11. COMPILARE!?I LINKING

3<,

verifici'!l ista de dependenle a larget-ului exec: existi'! Irei dependente care au la randul lor aile dependenle; aceste dependenle trebuie verif icate; target-ul main . 0 nu exista, deci trebu ie oblinut; 5e ru leaza comanda qee -e main.c -0 main . 0; targe t-ul sum. o nu exista, deci trebuie oblinut; se ru leaza comanda qcc -c sum.e - 0 sum.O; target-ul suma l t . 0 nu exist!!.. deci trebuie oblinut; se ruleaz!!. comanda gee -e sumalC.C -0 sumalc.o; toate cele trei dependenle ale targetului exec erau neactuzalizate; target-ul exec este atunci neactualizat si trebu ie rulata comanda asociat!!.: gee main. 0 sum.o sumalc.o -0 exec. Dupa cum 5e precizase la lnceput, presupunem ca programatorul modilica fi5ierul sum. c. Rezultatul rularii comenzi i make este:
r~z ... ~n @ v ~l halla : -/earte - usc . gitlHC/code/lO - eompilareS ma ke - f Ma ke fil e . dep . ie r gee -c .u m. e -0 'um . o gee main . O ;um . O ;umalt . o - 0 exec

:
J

Pasii urma!i de utilitarul Make sunt: verilica lista de dependen!e a target-u lui exec; exista trei dependente care au la randul lor aile dependente; cele Irei dependente trebuie verilicate; target-ul ma.in . 0 exist!!., dependanta sa (ma.in . c) exista si este nemodilicatA; target-ul e5te actualizat, nu e5te nevoie de rularea comenzii a5ociate; target-u l sum . O existA, dependenla sa (sum . c ) existil dar esle modilicali; target-ul sum. o trebu ie actualizat si se ruleaza comanda gec -c sum . c -0 sum.o; target-ul suma l t . o exista, dependen!a sa (sumalt . c) exist!!. si este nemodilicata; targetul este actualizat. nu este nevoie de rularea comenzii asociate; una dintre trei dependen!e ale target-ului exec (s um. o) este neactuzalizata; target-ul exec e5te atunci neactualizat Si trebuie rulata comanda asociata: 'ilee main.o sum.O sumalt.o -0 exec. 5e observa ca, in acest caz, din eei patru pasi posibili (lrei pasi de compilare si un pas de link-editare) este nevoie de exocutia a doar doi dintre acestia: compi larea sum. c si linkeditarea. Fisierul Maket ile curent mai prezinta un neajuns: in cazu l unei modilicari a fi5ierul header f unc . h nu se actualizeaza niciun target, intrLICat lisierul nu este adaugat in lisia de dependente a niciunui target. Un lisier Ma.kefil e coreet arati'! astfel:
e x ec :
m ~1 n. o

sum. o sumalt. o
~umah .o

, ,

>

gcc mun.O $um . o

- 0 e xe c

m"'ft.O: mai n. c funC .h g ee - e ma in . c - 0 main . o

350
7 " sum . O' . u rn .c f unc . h 'Iee - e surn.c

INTRODU CERE iN SISTEME DE OPEAARE

"
,0

- 0

sum . O

s umalt . o : 9u malt . C (unc . h 'IC C - e suma l t . c - 0 sum.lt .O

Li sting 11 .16: Makefile cu fisier header in lista de dependente

11.5.4 Target-ul clean


Pentru ca , de obicei, se doreste curatarea completa a mediului de lucru (pentru distribu!ia surselor, mutarea aplica!iei, recompi larea acesteia in alt mediu etc.), un lisier Makefite olera, de obicei, 0 regula numita clea. n. Regula are rolut de a sterge fisiere le produse in urma rulari i comenzilor din f i ~ i erul Makefile: fi~ i ere obiect, fi~iere executabile, 1i~ere temporare etc. in mod tipic, 0 regula clea. n are asociata ocomanda rm ca mai jOs:
exec : ,
m ~i n. o

" um . O
m ~ in . o

"um~l t . o

,
m&i n . o :
7

qee

" um . O

~ um a lt . o

- 0 e x,,"c

m ~ in.c

'Iee - c main . c
s um . o , . u rn .c 'Iee - e surn.c

- 0

m ~ in . o

'0

- 0

$um . O

"

sumalt .o , surnalt . e 'Ic e - c sumalt . c

- 0

sumalt . o

" "
"

c lea n : rm - ! exec ma \n . o sum . o suma<t . o

listing 11.17: Makefite cu target clean Pentru a ru la comanda asociata targetului c lean se transm ite targetul ca argument comenzii make. Astlel. in urma ru larii comenzii make cl ean se ~terg fisierele obiect ~i fisierul executabil:
r&z"an @ ,, ~ <h ~ H ~ :

Mahfil ~

exe c

-/carte- usc . ql t fsrc/cod e /10 - compihref t mpS h fun c . h rnain . c rnain . o s u rn . c " um . o " umal t. c

5 u malt . o
cle~n

r~zv~n @ ,,~ l h ~ ll ~ : -/cane - usc . qltfsrc/code / 1 0 - compilaref t mpS m~ k e , rm - f ~xec ma i n . o ~um . o ~ umalt . o " r a zva n @va l h a l la : - / c .. rte - u~o . 'Ii t is rc I code / 1 0 - cornpi 1 ar @/ t mp$ 15 7 M ~ k e til e tune.h macn . C sum .C s u mo lt. e

11.5.5 Target-urile .PHONY.i all


o problem~ care poate impied~a func! ionarea corecta a target-ului clean este prezenla unui !isier cu numele clea n in direclorul curen!. in aceasta situa!ia, Make va considera target-ul clean ca fiind actualizat ~i nu va rula comanda asociata.

CAPITOLUL 11. COMPILARE!?I LINKING

351

ra:va n@ va lh a ll a : -/earte - us o.g i t/srclcode/lO - comp ilare/tmp$ ls Makefile clean exec fonc . h main . c main . o ~um . c 50m . 0 s u malt . c s umalt.o

u:van@valhalla : ~/carte-uM . gi tfsrcfcodefl O- compi lareftmpS make clean S make : ' cl ~ an ' i , up to d~t~

Pentru a rezolva aceasta problema, trebu ie marcat clean ca un target care nu este niciodatA actualizat. Comanda asociata va Ii, astfel, executata tot timpul. Mareajul unui target ca neaclualizabil se realizeaza cu ajutorultarget-u lui predelinit . PHONY, ca mai jOs:

,
J

. PHONY :
cl~~n :

clean

rm -f

~ K~C

ma in . o s um . o

s um ~lt .o

Listing 11.18: Makefile eu target clean Folosirea targetului . PHONY inseamna ea se ~a ru la comanda asociata target-ului clean indilerent daea exista sau nu un lisier eu numele clean in directorul eurent:
,
M~hfil~

ra:van@ valhalla : -/c~rt~ - uso . git/ s rc/code/10 - com p il~r~/tmpS 13 clean exe c fun c . h ma1n . C rna in.o ~um . c s um . o 5urn~ 1t.c

,
"

5 um~lt.o

ra.va n@ va lha l la,-/earte - u s o. git/srclcode/lO-compilare/tmp$ make c l ea n rm -f "'x"'c ma i n.o ~um .o sumd t.o

Target-u l .PHONY este, in general, lolosit si pe ntru marcarea targetului all ca target neacrulizabil. Targel-u l all este. in general, primultarget i ntr-un lisier Makelile si este verilicat implicit la rularea comenz ii make. Target- ul <Ill ineapsuleazli ea dependente liSierele/targeturile ce se doresc ob!inute prin rularea comenzi i make (in cawl de lala este vorba doar de target-ul exec) .

" " " "

, " , a
J

. PHONY :
~ll : ~x~c :

a ll clean

~x~e m~in.o

,um . o gee ma1n .0

~ um a lt . o ~um . o ~ umalt .o

-0

~x ~ e

ma1n.o: main.c gee - e maln . c - 0 main . o sum.o , surn. c gcc - c 9urn . C -0 Sum.O
~ um ~lt.o :

" " ,. "


17

, um a lt . c gee - e ,urn a lt . c

- 0

5 um~lt .o

cl~~n :

rm -f e Ke c ma in . o , um . O

5 um~lt.0

Listing 11. t9 . Makefile cu target all

352

INTRODUCERE iN SISTEME DE OPERARE

11.5.6

Variabile in Makefile

in l isierele Makelile construite pAI1~ acum nu a lost lolosita. optiunea - Wall la compil area !~ierelor sursa C. 0 solu!ie s i mpl~ este introducerea op!iunea - Wall in cad rul oolor tre i comen.!:i de comp ilare. TotuSi. aceasta aOOrdare nu este flexibila. Prespunand ca . la un moment ulterior. se doreste si adaugare opliunea - 9 pentru depanare. vor trebui din nou actualizate cele trei comenzi. variab ila se defin este 0 data si se folose~te de mai multe ori. Daca,la un moment ulterior. se dore~te actualizarea variabilei. mod~icarea se va face doar in locul unde a fast definita.

o aOOrdare lIexibill'i esta folosirea variabilelor Tn cadrul !iSierului Makefile. 0

cc - gee cn.... Gs - - wall


exec : rna1n.O 3um.O ~u:na1t . o $ICC ) rn .. in.o ~u:n . o SUD".a lt.o -0 @x@c

10

$ICC)

$ICf'LAGSI

- c .. ~in

. c

- 0 rTL01n.O

"

sum . O: sum.C SICCI SICrt .... GSI sumalt.o: 9uma l t .c SICCI $iCfLAGSI cle a n:

-C

~um . c

- 0 9um.0

"
1~

,.

-C 5u ...alt . c -0 .uma l t .o

16

"
"

rm -f

~K~C

ma in . o

S U~ . O

s urnalt.c

Listing 11.20: Make!ile cu vari abile i n cadru l l~ie rul ui Makelile de mai sus. au 1051 folDsite variabilele, respecliv. CC penlru a re~ne comanda asociata compilatoru lui ~i CFLAGS pentru a reline opliunile transmise acestuia. Variabila CFLAGS nu a lost Iolositl'i pentru obtinerea executabilului e xec pentru ca are sens doar in taza de oompilare. nu ~i in cea de linkeditare (averlismentele indicate de - Wall rezu ll<'i i n urma etapei de campilare ).

11.5.7

Sintaxi Makefile

Aceasta sec)iune are un rol recap itulativ ~i descrie formal sintaxa unui fisier Make!ile. Dupa cum sa prezentat si in sectiunil e anterioare, sin taxa unui li$ier Makelile este compusa dintro lista de reguli de forma:
t ~ rget: d ~p~ n" @na

unde:

<tao>comand a <uo> c om anda


<tao> .

Li sting 1' .2f: Sintaxa Makelile

target - numele unui fisier care trebuie gene rat sau numele unei aC\iuni; in cazul in care targetul este un fisie r, come nzil e trebu ie sa genereze acest fisier; i n cazul atanal

CAPITOLUL 11. COMPILARE !?I LINKING

353

In care comenzi le nu genereaza un fisier cu numele targetului, se va cons idera la fiecare rulare ca target-ul nu a fost creat (a~adar toate comenzile se vor executa): dependen!e - lista de targeturi (separate prin spa!ii) care trebu ie l ndeplinite (liS iere care trebu ie sa existe) pentru a se real iza targetul curent - make poate determina daca trebuie reexecutat targetul daca una dintre depende1e sa modificat (unu l din fisierele din lisla de dependen!e sa modifical ); comanda - comanda care duee la realizarea target-ul ui (de ob icei la comenzi sunt trecute comenz ile de compi lare care due la real izarea unui li~i e r cu numele target-ului); <tab> - caracle rul TAB. Regulile lormeaza un arbore de dependente. Pentru ca un target sa lie executat, se verilica daca toate depend en!ele lui exista ca Ii~iere. Daca nu este l ndeplinita aceasta conditie , dependentele care nu existA sunt exec l1late. ap licAnduse acelasi algoritm.

11.5.B

Maduri de utilizare a Make


li ~ierul

La executia comenz ii make, vor Ii luate in co nsiderare targeturile delinite in Ma kefile . Pentru a exec uta un target, se lolose$te sintaxa:
mircea@cougar:-/carte - u$o/cap- 10$ m a Ke target

unde target este numele targ et-ului ca re se

dore~te

a Ii executa!.

La ulilizarea lui Make fara parametri, se va executa primul target definit l n fisier ul Makefil e. Din acest motiv, primul target descris este de obicei cel mai complex, cu cele mai multe dependen!e. Convenjiona l, Makefile-urile lolosite pentru compilarea unei aplicatii delinesc primul target all. Target-ul all detine i n lista de depend ente celelalte ta rgeturi ca re trebuie ob!inute. Utilitarul GNU Make lolose~te , i n mod implicit, unul din f i ~ i e rele GNUMa kef i le, Makefile sau make tile. In cazul i n care niciunul dintre acestea nu existA, si comanda make nu primeste nici un argument. va intoarce eroare:
, razvan@ valha lld : -/ c arte - U$ o . g1t/ s rc/code$ ma ke make : ... No t .. rget$ $p@cifi@d and no "",k .t il .. found . S to p .

Penlru a lorta lolosirea unui lisier Makelile cu all nurne decal numele implicite. se foloseste op!iunea - f:

, , ,

aum. C sum . O "" sum a lt.c sumal t . o mun.o sum.o suma lt . o '" exec '" Make poate func!iona si /ar1'l existen!a unui fisier Make/ile. Pentru a compila direct fisierul
,,0 - 0 -0 -0 -0 - 0

r a z va n @ v .. 1h.. 1l.o : -I carte-u~o . gi t dep . i er. h e .. d - 0 mu n .c - 0 maln.o

/"

rc 1cod .. 11 0 - comp i l.or@$ mdk e - f Make f i le.

mypr og . C (ca re nu depinde de altele) se


m1rc~a @ co ug a r : - /cdrt e- u ~ olcdP - 10$

fo l ose~le

comanda :

ma k~

myproQ

354

lNTRODUCERE iN SISTEME DE OPEAARE

lar pentru a compila direct myp~og . C cu parametrul de compi lare - Wa.ll S9 foloseste comanda:
m1rc~a @ co u ga r: -/~art e- u ~ olc~p - 10$ mak~

CFLAGs. - wall mypcog

11.6 Portabilitate
Portabilltatea esle caracterist ica unei apl ica!i i de a putea Ii 1010sil1l intr-un mediu dilerit de ee l pen\ru care lost initial prOiectata, Aces! lucru poate insemna un all sistem de operare, 0 alta arhilectura hardwa re, 0 alta biblioteca. Se spune ca 0 apl ica!ie esle portabi la daca are nevoie de modi/icari minime pentru a putea rula pe un all mediu. Actiunea de portare esle actiunea de modificare a unei ap lita!ii penlru a pulea Ii folosita pe un all sistem de ope rare sau $istem fizie. Un mediu pe care se realizeazii porlarea se mai numeste platforma. Daca in deceniile trecute I"K.Imarul de arh itecturi posibile pe ca re rula 0 aplica\ie era destul de mare, in zilele noastre arhitectura hardware dominanta este x66. La fel sistemele de operare pe care se porteaza 0 aplica\ie sunt Microsoft Windows. App le Mac as x si UnixfLinux. in lumea sistemelor embedded, insa, portabi litatea ramAne 0 problema importanta.

11.6.1

Portabilitatea la nivelul arhitecturii sistemului de calcul

In zi lele noastre, sisteme le desktop sunt dominate de arhitectura x86 asa ca rareori este nevoie de po rtarea unei aplica!ii la nivelul arhitecturi i sistemului de calcul. in sisteme le embedded portarea la nivelut procesorului este un factor important. In general. in sa, portarea la nivelul arhitect uri i nu este necesara datorita compilatorului. Astlel, pemru un limbaj de nivel l nalt, compilatoru l va asigura traducerea codulu i sursa in cod masina specific procesorului dat. Gee este ce l mai portat si cel mai portabil compi lalor fiind capabil de a comp ila prog rame pentru 0 varietate de arhitectur i.

11,6.2

Portabilitatea unui limbaj de programare

Programarea i n limbaj de asamblare nu as;gura. prin delini\ie, portabilitatea codului, deorece acesta este intrinsec legat de arhitectura Sistemului de calcul. Unul dintre motivele raspandirii Uni x in an ii '70 a fost sc rierea acesluia in e , un limbaj de nivel inalt portabil. Folosirea e insemna eliberarea de arhitectura hardware pe care va rula apl ica!ia. Porlarea codu lui era facuta pr in intermediul compilatorului. in ziua de azi, aplica\iile e sum usor portabi le datorita existentei unui compilator e pe orice platform1!i. Cu toate acestea, anumite aspecte precum organizarea octe!ilor' sau lungimea cuvantului
, http)le n,wikiped ia,orglwi!<iIE ndia nnen

CAPITOLUL 11. COMPJLARE!?J L1NKJNG

355

procesoruJui' ri'lmAn aspecte de care trebu ie ti nut cont.

com pi lator

Figura 11.7: Portabilitatea asigurata: de compi lator Java este un limbaj de programare gAndit pentru a Ii portabil. Deviza Java este "Write once. run everywhere" . Pentru a asigura aces! lucru. un program Java este compilat inlro forma portabili'l de modul ob iect denumita bytecode. Acesl bytecode este apoi interpretat de 0 ma~i n <"i virlual<"i Java. Masina virtual<"i Java este responsabila. cu translalarea bytecodeului portabil in cod specific sistemului pe care acesta ru leaza. Astlel. rularea unui program Java sa u unui modul com pilat in bytecode pe 0 nou<"i platform<"i este conditiona\<"i de exislen!a unei ma~ i ni virtu ale pe acea platforma . Ma~ina virtuala Java este continutii in pachetul JRE de la Sun (Java Runtime Environment). Acesta contine ma~ina vi rtua l<"i si bibliotecile cu functii standard Java.

< omp i l ~to r

m~ ~ i n ~

(dependenta de

Figura t t .8: Portabilitatea asigurata de

ma~ina

virtuala

, http;lI. n.wikiped ia.ol glwikiIWord _ (com pu1 ing)

fight

ma'sonar

356

INTRODU CERE iN SISTEME DE OPERARE

11.6.3 Portabilitatea la nivelul sistemului de operare


Portabilitatea unei aplicalii sa poata raleri si la posibititatea rut1\rii acesteia pe un a~ sistem de operare. Acest lucru este corelat. de obicei, cu inter!etele de programare (API - Applicatioo Programming Inter/ace) pe care sistemul de ope rare Ie pune la dispozi~e (system AP I). Ast!el. Windows pune la dispozi!ia programatorului C inter/al a Win32 API'. Unix, pe de alia parte pune la dispozitia programatorului intarfata POS IX (Porta~e Operating System Interface)' _ Pentrv desehideraa unui lisier un programator Windows va lolosi apelul Cr ea t eF i le, iar un programator Unix open. Pentru asigurarea portabilitatii i nsa, multe b i~ioteci olera programalorvlui 0 inter/al a portabilA peste sistemul de operare. Aslfel , lunctiile ANS I din bibl ioteca standard C su nt portabile peste diverse sisteme de operare. De e~emplu. pentrv desehideraa unui li~iar, programatorul va lolosi apelul f ope n indilerent de sistemul de operare pe care va ru la aplicalia. Un e~emplu de bibliotecA plXtabilA este wxWidgets) . AceasIA bi~iotec1\ permite erearea de aplicatii gra!ice peste dilerite sisteme de operare prin intermadiut unui API com un. Bi~ioteca aseunde atAt comunicarea eu sistemul de operare din spate cAt si eu bi~iotecile gralice neportabile pe care aeesla Ie pune in mod obisnuit la dispozitie.

11.7 Studiu de
11.7.1

eaz

Gee in Windows

Suportul pentru comp ilatorul GCC in madiul Windows esta disponibil prin proiectele: MinGW' (Minimalist GNU for Windows) rep raz int1i 0 portare a apliea!iilor de dazVQltare de bazA ale proieetului GNU pe sisteme Windows. Componentele prineipale sunt GNU Compiler Collection (G CC ). GNU Binulils !ili bi~iolecile de runtime C. MinGW loloseste Dll-urile de sistem standard si AP I-ul de bazil. al sistemului Windows . Cygwin 5 este un madiu care olera aplicati ilor un strat (layer) de emulare a AP I-ului Unix. impreuna eu 0 coleclie de utilitare care olara funclional ita!ile din Unix. i n vrame ee MinGW olerA doar aplicatii pentru dezvoltare , Cygwin permite instal area unei mari diversitati de aplicatii. Aceste implementari olera aeees la suita de aplicalii de dezVQltare a proiectului GNU Parametrii si modul de utilizare a eompilatorului sunt similare unui sislem linu x. in mediul Windows este posibila utilizarea GCC !ili impreuna eu un mediu integral de dezvOllare - IDE. DevC++6 este un astfel de IDE care olerA posibilitatea eompilil.rii programelor ulilizand GCC.
1http1Irn . d n.rn"ro.oll_oo mien-u . nibrat Y /33383 749 1VS.65) .as p. ' hnp1/www_open9' OlJP_O tgion linepub-sl96999 197991 ' http j Iwww..... widge ts .orf.ll ' httpJIwww_mingw_orgi http) l.ourcewaro.org/cygwinl
http) /www.b bod.hOKl .neVdllVcpp.htm I

C JPYnghted matanal

CAPITOLUL 11. COMPILARE

~I

LINKIN G
~i

357

11.7.2

Linkeditarea modulelor C

a modulelor C++

De~i doua limbaje asemanatoare (C++ esle consH:leral un superset al C), combinarea cod ului scris in C si C++ poate furniza probieme. In cele ce urmeaza. nu ne yom referi la accesarea claselor C++ din C sau folosirea apelurilor din biblioteca standard C++ i n programe C - situatii rar inta.lnite. Ne yom referi la folosirea fur.ctiilor definite in module C intr-un moduf C++ ~i invers'2.

Contelliul Vom considera un scenariu foarle simplu care ir.clude 6 fi~iere: c--pr i nt . c : iisier C contine implementarea fuoctiei c--prin t ; cpp--prin t . cpp :
i i~ier

C++ coniine implemenlarea iuoctiei cpp--p r int;

c--pr i nt. h : iisier header ce contine declaratia fuoctiei c--pr i nt ; cpp--p r int . h : fisier header ce corltirle declaratia functiei cpp_p r in t ; c_mai n . c : fi~ier C conlinfind iunc!ia main; va apela funC\ia c--p r i n t din fisierul c--pri nt _c sau funclia cpp"pr int din fi~ieru l cp p""pr i n c. cpp; cpp_main . cpp : f~ier C++ conlinil.nd funcl ia mai n; va apela functia c _p ri n t din fi~ieru l c--pr i nt . c sau functia cp p_ p r i nt din fisierul cpp_pr i n t. cpp.

,
,

hnc:lude <Md i o . h> tincludot


" ~--p ri nt.h

void c...,p r J n tt void l

p r intt ( " C- Hylc : jlassup' \ n " l ;

Listing 11.22: c,prin!.c

, , , , , ,

Unclude <i o;t r .... "'> tincludot


" ~pp _ p"int.h

void CPP_ P " in t (I

listing 11 .23: cpp,prin!.cpp


Ufnde f CYRI NT.J!_ 'de fin e C_ PRINTJ!_ void C-P " i nt t void) :
' . n<lif

, http ://M .wil<;p..d ia .orglwi< VCo mpatibi~t1 _of _C _and _ C%2B%2B;tLi n~ i" 9.. C _and_C.26. 2 B_codo ' http l /wwN,pa,a.hift,com/cH .h q . i te/mi, iog c .nd c pp,h!ml

matanal

358

lNTRODUCERE iN SISTEME DE OPEAARE

listi ng 11.24: cyrinLh


h1'nclef CPP pRINT H

,
2

.de une cpr PRINT K

void cpp_ pr int ( I ; hndif

"

listing t ' .25: cppyrinLh


'include c-print,h" II#jnclu de cpp_ p r; nCh"
int ma i nl void l

, ,
,.

c-print (I; Ilcpp_print ();

r e turn 0 ,

Listing 11.26: c_main.c


'includa cpp_ p<int . h" l/tiIlClud.. ,,__ prine . h"
int ma i n!)

,.

, , ,

cpp_ pri nt

(I ,

Ilc-prlneo ;

Listing 11.27: cpp_main.cpp in mod implicit , in cadru l lisierului c _ ma in . c se apeleaz.:i fuoc!ia c _ print , iar in cadrul fisierului cpp_main . cpp se apelea~a functia cPPJ\ain.

J nlr-un prim pas, se compileazacele patru fisiere C/C++. Folosim gee pentru compilarea fisiereior C Si 9+';' pentru comp ilarea liSierelor CH .
<&zv~n@v~lh~ll~ : -/mixS

Is
cpp-,"ain . cpp cpp-prin t. cpp cpp-p ri nt . h

ca: van @va lh a I1 3 ; -/rnix$ Is 13 c-,"a;n . c c-pdnt . c c-pr in t . o ,. c--",~in . o c_pr;nt . h cpp --"'~1n . cpp

, , " , " 10 " 12

c _IMin . c

c_p ri nt . c

c-pr1n t. h

r~zv~n @ v~ l h~ ll ~ ' -/miK$ r~zv~n @ v~ l h~ l h , -/miK$ r uv~ n @va l ha ll a:-/mlx~

gee - i'ldl - c c _ mu n .c gee -i'ldl -c c-p rint . c


9++ - i'lall - c cpp_ ma1n.cpp

ra.v a n @va lha ll a:-/mlx$ 9"

- i'lo11 - c cpp-pr i nt .cpp

cpP...JM.in . o cpp_ pr;nt . cpp

cpp-p un t . h cpp-pr in t. o

CAPITOLUL 11. COMPILARE !?I LINKING

359

Penlru link-editare, lolosim perechile c rna.~n . O si c-print . Q, respectiv cpp_rnain. 0 ~ i cpp_print. o. Executabilele ob!inute sunt denumite in co nform itate cu fisierele obiect fofosite pentru generare.

, ,
3
~

I~zv~n @ v~ l h ~ ll ~ : -/mix$ r~zv~n@v~ lh ~ l h : -/mi.x$


uzv ~ n@v~ l h 3 1 1a : _/m l "$

gcc g"

c~~in . o

c _ p ri nt . o - 0 cpp-pr i. nt . o

c ~ain - c-print cpp_m~i.n - cpp-p ri nt

cpp_m~i. n .o

- 0

. /c~a i n - c-pr!nt

C- sty l e: W h assup? ruvan@va lh3113 : -/m l x$ . /cPPJOa l n-cpp-pri nt nuei

C++ style : True,

Pentru linkeditarea modulelor obiect ob!inute din surse C++ a lost fofositE!. comanda qH. Comanda g++ apeleaza linkerul (i d) cu !oate OPliunile necesare. Se poate fo losi si comanda gcc pentru linking, dar trebuie specificata explicit lolosirea bibliotecii standard C++ (1 ibst dc ++).
r~zv~n@va l h~ ll ~ : -/mi.x$

>
3

cpp_m~in.o:

gcc cpp_m~in . o cpp-pr i nt . o - 0 cpp_m~in - cpp-p rin t (.eh_frame+OxI2) : undefined reference to ' _ 9xx_ person a li ty_ vO

" 6 ,
$

cpp-print.o: I n function ' cpp-print I) ': cpp-print .cp p: ( . t ext+Oxa ) : undefined reference to
(.

' std :: cout '

.. )

collect2: Id returned I ent stat u s ruvan@va lh 3 11 3 : -/m!x$ 9CC cpp-",aln . o cpp-print." - " cpp.J\\ain - cpp-pr1nt_ new - I'tdc ++
I~zv~n @ va l ha ll a :

" 11
1>

C"

style : True .

-/mix$ tru@'

. /cpp~~in - cpp_ p r

int _ n''''

Problema Ce se int~mpla, insa, daca link-editarea se real izeaza intre un modul obiect provenit dintr-un li~ier sursa C ~ i un modul provenit dintrun lisier sursa C++? Pentru a testa acest lucru. sunt actualizate li~ i e rele cJOain . c , respectiv cpp_main . cpp pentru a include 5i apela funcliile specifice cel uilalt limbaj. Dupa care se comp ileaza si se realizeaza linkeditarea:
razva n @va l halla : -/m ! x l st(!c tt c.J\\ain.,, : I n function c~ain.c : l.t e xt . Oxa ): collect2 : I d r e turned new$ gcc c ma !n." cpp-prlnt . o - 0 c _ ma!n- cpp-pri nt ' m& i n ': undef,ned refer e nce to ' cpp-pein t' I ent ~ t~t U 5
9"
c~a i n . o

I~zv~n @ v~lh a ll d : -/mix - new$

cpp-p r int . o - 0

c ~ ~in - cpp-p ri nt

ls t dc .. 7 c_m~in.o : In function ' m~in ': a c _ main.c: l. t ex t 'O x al: undefin e d refere nce t o ' cpp-pcint ' collect2 : l d r<>turned I @ x it stat u s

" "
,~

,J

ruva n @va l ha ll a : _/m l x _ new$ g++ cpp_mai n. o c -p clnt . o - 0 cpp_ ma in- c-pr1 nt cpp.JO\<1!n.o: In f unct i on ' ma i n ': cPPJOa in.cPP : I.te.t+Ox5 ): undef i ned reference to ' c-pe . ntll '

360
,. collect2 : l d '''turn"d I exit
st~tu.

INTRODUCERE iN SISTEME DE OPEAARE

" '"
" '"
,~

rnvaft@valhalla,'/m(x - ne w ~ gee cpp_ main.o c-prlnl . o - 0 cpp_ main- c _ print lstdctt cpp_ main.o, I n function ' main ': cpp_ maln.cpp: (.te~t+Ox51 : undefined "ef"r,,~ce to 'c-pr lo t(I ' collectZ : 11 returned 1 exit status

in ambe le situa!ii, iodiferen! de comal1da folos ita (gee sau 9++) se obline eroare de linker. Linker-u l nu gAseste simbolul asocial fUl'lCtiei cpp_ pri n t. respectiv c _p ri n t .

Folosind utilitarul run se pot inspecta simbolurile din cadrul celor patru module obiect:
ra%van@valhal13 ; '/mlx-ne~S

om

c~ajn . o

cpp-print 0000000000000000 T mai.n


U

,0

, 6 7 "

nm cpp..ma 1n . o U _Zi c-pcin t v U _9 XX-PH s onali t y_vO 0000000000000000 T mun rnvan@valhalla,-/mlx - new$ nm c-print.o 0000000000000000 T c-pri.nt U puts
ruvan@valhalla ; -/mix -ne ~S nm cpp-pdnt.o 000000000000005 t _ GLOBAL_I_Z 9cpp_ printv 0000000000000022 t _ ~4 l _ 5 tat i c _ i nit i ali tat i on_ and_ destruct iot'LO i i 0000000000000000 r _~9cpp-PrIntv

r~zvan @ va l ha ll a ' -/miK-n@,,$

" '2

" ,.
,\ '6 "

,.

( ... 1

Problema este lolosirea tehnic ii de name mangling' 1010sitEl de compi latorul de C++. Simbolurile dintr-un modul CH sunt precedale de 0 constructie speciala de forma _ z. Tehnica este lolosila penlru a preveni folosirea aceluia~ i idenlificator penlru 0 va riabila functie care are acelasi nume in doua namespace-uri diferite. Modulul c_main . o marctleaza simbolul cpp_prin t nedefinit ~i solicila linker-ului rezolvarea acestuia. Modulul cpp_ pr int . 0 defineste lnsli simbolul _Z9 cpp_printv ~ i linker-ul nu poate face rezolvarea . Similar se intampla ~ i in cawl simbolului c_pr i nt (varianta C) ~i _z ?c-pr in t v (varianta CHi.

Solulia Pentru a rezolva aceasta problema, compi latorul trebuie sa detina informatii suplimenlare ~i sa marcheze simbolurile corespunzatoare in modulele obiect. o solulie directa este compilarea tuturor fis iereior sursA folosind 9++. Compilatorul de C++ poate compi la ~i fisiere C. iar modulele ob!inule vor lolosi tehn ica de name
mangling.

,
"

razvan @ valha ll a : -/mix -newS q++ razvan@ va l ha ll a : -/mix-n@"S .

cpp~ain . cpp

c-print . c - 0

cpp~ain -c_print

fcpp~a i n-c _ p r

i nt

, http)re n,wikiped ia,orglwi!<iIN.me _mang i "ll

CAPITOLUL 11. COMPILARE !?I LINKING

361

, ,

C- style ' lih"SS\lp? ra.va n@ va lhalla , -/m\x - new$ g++ c _ ma\ n.c cpp-pr\nt.cpp - 0 c _ ma\n- cpp-print ra.va n@va l ha ll a,-/mlx - new$ . /c_ mai n - cpp-print C++ style, True , troe!

Inlrucat esle posibil1l absenla unui anumil tip de compilator de pe un sislem ~i penlru c1i eSle mai efiCient ca un fisier surs1l lntr-un limbaj de prorgramare s1l fie com pilat cu un compi lalor specific. este de dorit 0 alt1l solu\ie. Solu!ia const1l in folos irea construc\iei extern "C" . Aceast1l construc!ie se plaseaz1l inaintea declaratiei unei tunctii penlru a forta compilatorul de C++ s1l foloseasc1l un klentifiCator de simbol care s1l nu utiJizeze tehnica de name mangling. In general, construc!ia extern C se fo loseste in cadrul fi~ i erelor header unde se g1lsesc declara!iile de func!ii. Fisierele c_print . h si cpp-print . h actualizate vor Ii:

" " "

, , , , '" "

It!"de ! CJ'R!NT_ R_ ,d. Un. C_PRINT_R_ ,ifelef _ cpluoplu, "t e en ' c' ' e ndif

void C""pr int (void l ; Hfdef _cpluspl u$ 'enclif ' . ndif

Listing 1t .28: cyri nt.h cu extern "C'

" " " " "

, , ,

, ,

Ufnde f CPP J' RINT_ M_ .de U"e CPPJ'RINT_ R_ tifde f _ cplu,plu, e x tern ' c ' hlndif void cPP""pr int (I ; ti fdef . e ndif ' e "di f

_ c plusp l ~s

Listing 11.29: cpp-'pr int.h cu extern ' C" In acest moment se poate realixa linkeditarea in "diagonaI1l", adic1i folosind perechea c _main.o si cpp-print. 0 pe de 0 parte si perechea cpp_main. 0 si c-pr int . 0 de cealalta parte.

,
3

ra,van@va l ha ll a , _/mlx _ new$ gcc - c c _ ma in.c


ruvan@v~lh~ll~ : -/mix-ne~S

g++ -c

cpp-"'~in . cpp

362

lNTRODUCERE iN SISTEME DE OPEAARE

, ,
11

ruv~n@"" l h" ll a : -/mlx - new$


ruvan@"alh a l1 3 ; -/mlx-ne ~ S

gee - c c-print.c
g++ -c cpp-prlnt.cpp

utvan@" a lh a I1 3 ; -/ml" - ne ~ S

gee c--,"ajn . o cpp-p rlnt .o - 0

c-", ~i n - cpp_ prjn t

lstdc tt

'"

raz" .. n @ valhall a : -/mix - new$ g"

cpP--,"a i n . o G_ print . o - 0 cpp-",ain- c-p rint

" "
,.

"""n@ valhall a : - /mi x - ne wS . ! c..ma in- cpp_ pd nt C . . style : True , true'


"a' v a n@v" l h a l h; -/m l x - ne w ~ . I cpp_ rna in- c-p " i nt
C-styl@ : I'Ih"",up?

I"

" ,.
17

Prin Ioiosi rea lJIilitarului run 5<1 observa folosirea unui identificator de Simbol lara mangling in cadrul fisiere lor ob iect C++.

name

, ,
" ,
~

"a"".. n@valha ll .. , -/miK - n@ w$ nm cpp_ main . o 1.1 _ 9xx-penon a lity_ vO U c-p r \ nt 0000000000000000 r ma i n
<uv a n@valha l1 3 ; _!m(x _ ne w$ fim cpp-pdnt.o ooooooooOOOOOOSf t _ GLOBIIL_ 13Pp-pd n t

(. .. 1
0000000000000000 T cpp-pnnt

Construc\ia extern C se loloseste alAt in cazu l ln care se apeleaza funClii C dintr-un modul C++ cat si in cawl apelarii unei lunc!ii C++ dintr-un modul C. In primul caz, cel al apelarii l unc!iei C dintr-un modul C++ , compi latorul de C++ marcheazll in modulul obiect obtinut din fisieru l C++ simbolul ca fiind nedefinit, In forma non-mangled. In cel deal doilea caz, al apelarii unei lunc!ii C++ dintr-un modul C, compilatorul de C++ marcheazii i n modulul obiect obtinut din fisierul C++ simbolul ca fiind deli nit, In formawi nonmangled. Compilatorul ia aceasta decizie pe baza lolosirii co nstruc\iei e>!tern " C O. Este imporlant ca alat lislerul care defineste func!ia. cat si cel care apeleazii lunclia sa includa lisief1.J1 header care co ni ine declaratia lunctiei precedata de constructia e>!tern " CO. Folosirea macro-ulul _ cp luspl u s permite dileren\i erea intre compilatorul de C sl compilatorul de C++ . Doar compilatorul de C++ va lolosi constructia extern C". Construclia nu are nicio relevanlii pentru compilatorul de C.

Cuvlnte chefe

compilare executabil inlerpretare limbaj

proces sursa preprocesare asamblare

CAPITOLUL 11. COMPILARE

~I

LINKIN G

363

cod obiect linker bitll ioteca partajare

executie apel de sistem make target dependenla

portabilitate
intrebiiri t. Bitlliotoc ile partaiate de lunctii:

sunt incarcate explicit la cerere de aplicalii ajuta ca ap lica)iile sa lie mai simplu de i ntretinut maresc aplica!iile deoarece sunt ioc luse in executab ilele rezu ltate sunt prezente sub forma de arh ive de fisiere obiect

o o o

2. Pentru a de zactiva link-editarea implicila pe care 0 realizeaza Gee, se utili zeaza parametrul:

0 -0 0
0- 0

-l s t dc++

0 -0

3. Caracleristica unei aplicatii de a putea Ii lolosrta inlr- un mediu penlru care nu a


losl ini\ial pro iectata:

se inla.l ne~te doar la bibliotBcilB parlajalB esle inial nita numai la apl i ca~ile Java se
nume~le

o o o

porlabHitale

niciuna din variantele de mai sus

4 . Pentru a executa un target dintr-un li~ier Ma ke f i I e, se folose~te comanda

o mak e Mak efile <t a r qet> o mak e <t arqet> o <t arqet> o ma k e <ta rqe t> Makefi l e
5. In urma prBprocBsarii SB ob!in:

o o

lisiere ob iect lisiere sursa C lara directive de precompilare


li~iere

o o

i n limbaj de asamb lare executabile

li~iere

C JPYnghted matanal

36.

INTRODUCERE iN SISTEME DE OPEAARE

6. Care din urmatoarele reprezintA 0 biblioteca at cArei cod eSle integral explicit in

codul unui executabil?


Q slatic library o shared library

o public library
o common library

7. Apel ul de sistem reprezintA 0 metoda de a accesa resursele computerului. Apel urile de sistem sunt realizale doar de biblioteci.
o adevarat, adevarat

o adevlirat, fals
o fals, adevi'lrat

o fals, tats
6. Fie comanda:
2 -Icarte-uso/cap-l 0$ fi Ie II i bl I ,bm-2 . 3 . 3 . so Ilib/libm- 2 . 3 . 3 . so : ELF 32 - bit L5B , hare d obJec t. In t el 80386 , ve r s i on 1 (SYSVI . no t s t ri pped
mirc" a~ cou9or :

Care afirma~e releritoare la fis ierul / lib/ libm- 2 . 3 . 3 . so aSle falsA? o fisieru l aSle binar, nu poale Ii ed ital eu un edito r text

o fisieru l aSle 0 bibl ioleca partajat(\

fi~ieru l

eSla executabil funclioneaza pe 0 pial/orma Inlel pe 32 bili

fi~ierul

9. Programe ie interprelale se depaneaza mai greu decat cele compilale. in urma compil(\rii rezulta !isiere In limbaj de asam blare care sunl executate direct pe procesor.

o o o o
o o

adevarat, adevarat adevarat, fars fals, adevaral fals, fals

10. Apel urile de sistem ale programului <p rogram> pot Ii urmarite folosind comanda:

t i me <pr og r a m> f i 1 e <pr og r am> 1 dd <p r og ram> s t r s c e <p r o gram>

o o

Capitolul12 Shell scripting


$he/llo DOS ... Come in DOS. do you copy? Shell to

DOS._

Ce S8 inva18 din aces! capito l? Rolul unui she ll in sistem

Ce eSle un script shell


Utilitatea scriplurilor shell IntBrac!iunB8 eu shellu l; 8xecu!ia comenzilor intr-un shell

Crearea

~i

ru larea unui script shell

Programarea shell: variabi le, 'unqii, strucluri de control


Folosirea filtrBlor de text

Expandarea shell Programarea shell (batch programming) pe Windows


Utilitarul sed Utilitarul awk

12.1

No~iuni

introductive

Capitolu l de lata i si propune prezenlarea mecanismelor pnn care diversele camenz i utilizatB pana acum pot Ii combinate pentru obtinerea unor elecle complexe in cadrul

unui script shell.


Un script she ll esle un program seris intr-un f;sier text tormat din combina!ii de comenzi si insl1uctiuni specilice unui interepreto r de come nzi (unui shell).

365

.1

366

INTRODU CERE iN SISTEME DE OPERARE

Un shell aSle un program care asigura utilizatorului 0 inletia!a de control si utilizara


a sistemu lui de operare.

Un shell poale avea intena!a grafica (GUI) sau poate avea interfala text (ClI). in cea dea doua situ3tie un shell mai poart<l. denumire de interpretor de comenzi. Shelluri eu inleriala gratiaa sun! Windows Explorer sau medii desktop construrte peste X Window System. Shell-uri eu interla texl (interpreloare de comenzi) sunl cmd. axe (Windows NT, XP), Windows PowerS hell (Windows Vista, Server 2008, 7), Bash (Bouma Aga in Shell), csh (e Shell ).
No~unea de shell scripting sa aplicA shel luriior eu interlatA text (Bash, C shell etc.).

in

cap itolul de fata, shell-ul folosrt va Ii Bash, GNU Bash' (Bourne-Again Shell) esle sheil-vi implicil pe majorilalea dislribu!iilor de Linv ~ ~i pe Mac OS X. Ne vom referi prin Bash (ev majvscvla) la shell, iar cv bash la executabilul utilizat de acesta.

12,1.1

De ce shell scripting?

Utilitalea principala a unui shell scri pt deriva din laptul ca este 0 combinatie de comenli deja existente, Acest lueru inseamna posibilitatea de automatilare, Sarcinile repetitive pot Ii deserise jntr-un script shell. Ori de cAte ori esta necesarA axacutarea acetai sarcini, se rule al a script-ul shell si aceasta va fi lndeplinita. Un exemplu elocvent esta crearea unvi cont de utilizalor. Pasii . urmali . penlru aceasta pol Ii urmatorii: I. erearea unui conI de utililator (folosind user add); 2. copierea unor directoare
~i

!isiere pentru contul proaspat creat:

3. stabilirea de cote (quota): 4. schimbarealstabilirea parolei: 5. transmrterea unui e-mail pentru a notilita utilizatorul de crearea contu lui. In lipsa unui script shell. administratorul sistemului ar trebui sa wleze comenli penlru liecare din pa~ii de mai sus on de cale ori este necesara crearea unui cont de ulilizalor. Folosind un script shell, adminislratorul 11 va rula doar pe acesta (folosind eventuali parametri). Electul imedial este marirea elicientai. Scriplurile shell se lolosesc in general penlru automal izarea sarcinilor de rutina , precum: realizarea de backupuri, verilitarea slarii sistemului etc. Exista situatii cand un utilizator doreste realilarea unei noi comenli prin imbinarea unora deja existente. Pentru a realiza acest lucru. I'll va crea un script shell pe care-I va putea utiliza ulterior. In sistemele Uni x, scripluri'e shell au vn grad mare de uti'izabililale pentru ca cea mai mare partea a comenzilor urmeaza lilozolia Unix: "Do one thing. rio one thing weir. Acest lucru ;nsemoa ca !iocare comanda esle ulila ~i (am pulea spune) e~ celeaza in
I

http) iwww.g nu.orglsof!wa wsl.II

C JPYnghted matanal

CAPITOLUL 12. SHELL SCRIPTIN G

367

real izarea unei anumite sareini, urmfmd ea sarcinile mai eomplexe sa tie realizate prin "imbinarea" mai mullor eomenzi simple intrun script shell.

12.1.2

Facilitati oferite de scripturile shell

in afara lolosirii comenzil or simple deja existente in sistem, fucru care conduce la posibililatea de automalizare a sarcinil or. un script shell olera si alte facililali utilizatorului. in primul r1l.OO, un shell olera un limbaj de program are eu varia bil e si instruc:tiuni de eiclu (fo r , whi I e) si de decizie (i f , case ). Acesl lucru i nseamna ca. dincolo de comenzi le de baz1l., un scripl shell poate lolosi facilitli!ile tipice unui limbaj de programare. Evk:lent, se poate pune intrebarea: De ce nu sar Iolosi un limbaj de programare precum CIJava? Avantajul major unui script she ll esle timpul red us de scriere a acestuia, utili zarea unor componenle deja create (I!ir!i a Ii nevoie de rescrierea acestora) si lolos irea unor resurse specifice ale sistemului: lisiere de con!igurare, drepturi de aCDeS, utilizatori etc. F~osind comenzi deja existente, facilitati de comb in are a acestora ~i de control al fl uxului. un script shall esta 0 solu~a rapid!i si aliciantli a unai problema. Sa spuna c!i un script she ll esle 0 metodli "quick and dirly" de rezolvare a unor probleme care ar necesita elort mai mare daca soar folosi alte limbaje. i n plus depanarea unui script shell este extrem de !aeilli. i n momantul in cara un script shell nu functioneaz!i eorect sa peata detarmina si corecta foarte rap id linia din scri pt care a cauzat eroarea. Dezavantejul unui script shell esle viteze scazuta de executie 5i lipsa accesului Ie slructuri eliciente da ealcu l. Astlel, nu asta recomaOOatli folosirea unui script shall intro silua!ie i n care l'iteza de execu)ie esle un laclor important . La fel. anumite probfeme nu se preteaz!i la a Ii rezolvate cu un script shell din cauza lipsei de facilit!i!i. Probfemele de algoritmic!i, elecluarea de catcule complexe, interactiunaa cu hardwareul sa real izeaz!i prin lolosirea de limbaje specializate. Totodala, un script shell permite interactiunea i ntre comenz i (sau mai bine zis i ntre procesele create prin rularea unei comenzi ). prin operatori specifici: I (pipe), :, II. B.B. elc. Alte facilitliti includ: posibilitatea retinerii iesirii unei comenzi intro variabi l1i pentru lolosirea ullerioaril. a acesteia: pesibilitatea redireclari i inlrariili esirii unei comenzi dintr-unfintrun lisier: acest lucru duce la prelucrarea l oarle usoan1 a lisierelor relevante i n sislem (de exemplu: /etc/p3 ssw d, l e t c!s h3d ow); lotosirea de comenzi noninteractive si programarea scriptului pentru executie la un moment ulterior. Se observ!i. asadar. c1l. un script shell esle un instrument /oarte pulernic penlru rezolvarea rapid1i a diverselor probleme des intalnite de utilizator. Programarea she ll devine un factor important pentru 0 mai buna utilizare si gestiune a sistemu lui.
"-,, 1

368

INTRODU CERE iN SISTEME DE OPERARE

12.2

Interac~iunea

cu shell-ul

Shellurile cu intertatA texi interactioneazA cu utilizatorul prin intermediul comenzilor. Un shell olerA un prompt utilizatorului (in mod tipic acesta se termini!: cu un caracler de lorma $, % sau #) unde se pot introduce comeflZ i. Execulia unei comenzi inseamnA, de obicei. genera rea unui proces dintr-un executabil asocial comenzii. o deprindere util i!: in lucrul cu comenz ile este prelucrarea sirului de caractere care Ie lormeazA. Astlel. un utilizator avansat va edita comenzi le sale ~i va lolosi istoricul pus la dispozi~e de un shel l pe ntru a Ii cat mai eficient. Shell-ul pune la dispoz~ia utilizatorul ui mai multe tacil itati de edilare si utilizare ra pidA a comenzilor.

12.2.1 Editarea comenzilor

o comandA este introdusA la promptul shel l-ului prin lolos irea tastelor corespunzatoare,
dupA care se apasA ENTER ~ i comanda va Ii executati'!.. Exist1i, insi'!., situatii in care se gre~este sau se uita. un arg ument sau 0 literA si este nevoie de ed itarea acelei comenzi pentru oblinerea electului dorit . Editarea comenzi i poate ;nsemna adAugarea sau steregerea unui caracter, a unui set de caractere , a unui arg ument al comenzi i. in mod evident, la lei ca i n cazu l unui editor, este nevo<e ~i de parcurgerea comenzii scrise. Editarea comenzilor in Bash este realizat1i prin intermediul bibliotecii read/ine. Detalii despre aceaSla gAsiti la on line' . Biblioteca readline este cea care aSigur1i editarea unei comenzi, ole rind intertata de control a term inalului. Comenz ile puS!! la dispozitie de readl ine pentru editarea co menzilor shell sunt inspirate din editoru l Emacs. UrmAnd conventia Emacs , vom prescur!a cu C tasta Cont ICol iar cu M tasta Al t (Met a ). PrezentAm , in continuare, cAtava dintre eele mai utile comenzi: C- f, C- b un Siigea t.'i - DreaF t a caracter inainte , respectiv ~i Siigea t ii - Stanga) inapoi (echivalent cu

C- a, C- e - inceput de linie, re5pectiv slars~ de linie (ec hivalenl cu Home 5i End) M-f, M- b - cuvant i nainte, respectiv inapoi: pe unele termi nale (spre exemp lu gnom e - t erm ina l ) trebu ie dezactivate scurtaturile terminalu lui pentru a permite comenzile readline C- d - sterge caracterul de sub cursor (echivalent cu Delete) Backspace M- d ~terge

~terge

caracterul de dinainte de cursor

pAnA la sHirsilul cuvanlului


~terge

t1- Ba c k sp ac e -

panA la inceputul cuvAntului

C- k - sterge pana la slarsilul liniei

c-,,. -

~terge

pAnA la inceputul liniei

C- y -lipeste (paste, yank) ceea ce s-a sters ultima oarA


, http) iwww.g nu.o rg/softwar WslJ/ma nu . lIt1tmL"<><leIReadtin . lnte raction. html

C JPYnghted ma'ana.l

CAPITOLUL 12. SHELL SCRIPTING

369

C- _ (Cont rol - underscore) - anuleaza (undo) ultima comanda de editare. Penlru cei ce doresc acesl lucru. edilarea comenzilor folosind read/ine poate Ii personalizata folos ind un lisier de conlig urare. Pentru mai multe detalii consu ltati manualul'.

12.2.2

Folosirea istoricului. Completare automata

8ibHoteca read/ine memoreaza comenzile lolosite in shell intrun istoric care poate Ii folos it ulterior. Se pot fo losi comenzi read/ine pentru parcurgerea comenzi lor shell. Astlel c - p sau C- n parcurg comenz ile anterioare sau ulterioare comenzi i curente. Sunt echi~alente cu Silgeatll - Sus ~i Sligea t il -J os. Istoricul este salvat la parasirea shellului intrun lisier. In cawl ba sh acesta este ~, . bash_h istory . La 0 noua aulentificare, shell-ul va incarca respectivele comenzi din history ~i utitizatorul le va putea reutiliza.

Ciiularea comenzilor (reverse search) In alara parcurgerii come nziior din isto ri c, 0 optiune loarte utitll este cllutarea acestora. Pentru cautarea comenz ilor in istoric se poate lolosi comanda C- r (reverse search):

ruva nhnaconda,-$ cd Ireverse-i - searchl ' chon ': c hmod 0+" uploa ds'

in exemplul de mai sus, apasarea C- r duce la schimbarea promptului. Utilizatorul peate introduce un ~i r de ca utare pentru identificarea unei comenzi. Penlru liacare caracter introdus, shellul va alisa prima comanda anteriora cea mai potrivita. Completarea sirului va duce la relacerea cautllrii. i rl afara introducerii ~irului de cautare exista cateva comenzi utile in modul de cautare: daca se apasa (dirl nou) C- r se cauta urmatoarea potrivire; daca se apasl! ESC sau C- j se incheie clluta rea; comanda alisatll la prompl va Ii cea gasita: daca se apasa ENTER se Incheie caularea
~i

se executa comanda gasrta;

daca se apasa C- g se intrerupe cautarea cu revenire la comanda de dinainte de cautare.

Complelare aulomatii (sulocomplelion) o facil itate ext rem de utila in elicientizarea lucrului cu comenzile shell esle cea de completare automatll (autocomp/ebon). Aceasta facilitate inseamna introducerea unui sir par!ial de inceput al unei comenz i sau al unei intrari in sistemul de lisiere ~i apoi apasarea tastei TAB pentru completarea automata. Spre exemplu. daca cineva doreste sa verilice serveru l de nume (ONS) al unui sistem, ~a folosi comanda:
, http ;liwwN.g n ~ .O rglsoflwareibashlma nu a LIht ml_ nodelR ead I., eln ~. File. htm I

370

lNTRODUCERE iN SISTEME DE OPEAARE

ubu ntu@ubu ntu ; -$ cat /etc/resolv . co nt

Un calcul simplu arall'i ca eSle nevoie de apasarea a 21 de taste (eu ENTER) pentru executia comenzii.
Putem fo losi , in sch imb, comp letarea automatA
~i

vom apl'isa tastele in mod prezenlat

mai jas:
ubu ntu @ubunt u , - $
c~t 1~<TAB~res<TAB~ . <TAB><ENTER>

Un ca lcutta fel de simplu indica apasarea a doar 14 taste (plus C8 tasta TAB devine foarle
importantli ~i esle ap1'isatA mull mai usar). Comanda afi~ata la prompt va Ii identica eu cea de mai sus ~i. drept urmare, efeclul va Ii acela~L in consecinla, se recomaooA insistent folos irea facil ita\ii de complelarea automata. AceastA facil itate nu eSle prezentA numai la shell-urile unui sislem de operare ci $i pentru comanda dispozitivelor de re!ea ~i a altor echipamente care dispun de 0 interfat1!. in linia de comand1!. . In pl us, totos irea taste i TAB are un ro l important in evitarea eroritor de serie re in cazul intrarilor sistemu lui de fi~iere. Experien!a persona l1l a autoritor acestei c1lf!i a surpr ins, nu de pu!in e or i, crearea de fi~iere cu nume "apropiate", dar nu identice, de ce le reale (precum letc/rezolv . co n t, letc/reso l v . comf, / et c l resal v . cf etc.). Aceste erori ar Ii putut Ii evila!e (dincolo de 0 mai mare vitez1l de utilizare a comenzilor) pr in folosirea tacilitAti i de completare automat1l. In situalia in care exist1l mai multe posibi litAli de completare. ap1lsaraa taste i TAB nu are niciun elect. Tolusi, se pot vizualiza toale aceste comb inalii prin ap1lsarea de doua ori a tastei TAB . Astlel, apAsarea z <TAB> <TAB> va duee la al isarea luluror comenziior care i ncep cu litera z:

, , ,

I~zv~n @ ~ n ~co nd ~ ,
zc~t
~cmp

.dHt .dump

-$ z<TAB><TAB> zeq <ep zforce zeiostopnm zgrep ,e nl ty :fgrep z i pc l o a l<.

."

H pq <ep z i p in fo 'ip note tip" pl lt

zless zmore znew zsoe li m

La lei, fo losirea comenzii cat / <TAB><TAB> duce la al isarea luluror intr1!.rilor care se gAsesc in directorul rMAci nA al sistem ului de lisiere:

, , ,

rnva n @anacon<ia . viminfo .. quot .. . u" ~ r bini boo t! cdrom l


d ~vl

; -$ W

homel i nitr<il initrd. irn9 initr<i . itll9 . o1d lib l lo st. found/
me<i i~ 1

etc I

ml'lt! opt! p roc l r oot! 5bi n l 5 rv l 5y.1

tmpl
u ~ r/

varl vmlinuz vmlinuz . old

Elltlnclerea completaril automate Dup1l c um $a observat, complelarea aulomat1l se refer1!. la comenzi ~i la intr1lri in sistemul de li~iere. Totu~i , aceasta poate Ii extins1l pr in intermediul unor scripturi personal izate la argumentele posib ile ale unei comenzi. Astlel tisierul letc / bash_comple t ion eSle lolosit pentru extinderea completMi automate. Pe ntru iolosirea acestui script esta necesa r1!. rul area co menzii:
ubuntu @ ubuntu:-$ . l e tc/b& s h_ completion

nght

malef~1

CAPITOLUL 12. SHELL SCRIPTING CAteva linii din acest l isier:


complete - t - x
' ~

371

. ~{sx iIHiI Pps

l ppt l pot l od p l ot PI '

oo i mpress

Linia de mai sus inseamnA cA dacA un utilizalor foloseste in linia de comandA ooimpr ess. argumentele posibile ale acesteia vor Ii considerate doar lisierele cu extensiile precizate.
~

f user comma nds see only users complete - u au uaermod usece:!el passwe:! cha ge write chto g<oups slay w

Linia de mai sus permite ca argumente numai nume de utilizalori pentru comenzile de lucru cu acastia In alara extinderilor existente in I etc!bash_completi on. utilizatorul isi poate delini noi extinderi pentru a Ie integra in shell. Se recomand~ ea aces tea s~ fie pla5ate in directorul !etc/ b ash_ comp l etion. d. Generarea de noi extensii de eompletare depaseste domeniul de interes al aces lei carli. Recomandam calor interesa!i pagina web asociala proiectului ' $au articolul legat de eompletarea automata de pe Deman
AdminiSlratiorr .

12.2.3

Comenzi interne (built-in)

~i

comenzi externe

Comenzile care pol Ii rulate dintrun shell sun! de doua tipuri: I . eomenzi externe: sunt rulate prin intermediul unui executabil 2. eomenzi interne: sunt exeeutate direct de shell
la r~

invocarea unui alt program.

Comenzile interne (sau built-in) sunt utilizate pentru implementarea de laeilita)i care sunt lie imposibil lie neconvenabil de real izal lolo5ind programe separate. Un bun e~emp l u esle comarda c d de schimbare a directorului curen\. Aeeasta eomanda nu poate Ii lolosita dintrun execulabil extern, ln trucAt la slArsilul rul~rii eomenzii soar pierde oriee elect ar avea ($i nu ar Ii posibil~ , astlel, schimbarea persistentA a directorului cure nt). Exemple de come nzi externe $i executabilullolosit pentru rularea acestora sun\: . lseu !bi n / l s t"il e cu l u sr!bi n / fi l e sucu !bin /s u it"cont"iq eu !sb i n!ifcon fi g Exemple de come nzi interne sun!: , - comanda nu lace nimic, doar expandeaza va ri abile 5i realizeaza redi rectArite; astlel, ru larea eomenzii:
ubuntu@ub un t u : - $ : > o u t. t xt

duce la Irunchierea

fi~ i e rutui

out.tx!. Ve rsiunea 5i mai simplA eSle

ubuntu@ub un t u : - $ > out .t x t


, http ://www.cahban.o rglba.M nde . htm I ' http ;liwww.d .. bian adm ini. tfa tio n.o .lPa rt.cI.. sf-ll &

372

INTRODU CERE iN SISTEME DE OPEAARE

- coma.lda este Iolosita pentru interpretarea unui lisier (de ob icei script) in shellul curen\. Echivalenta este comarlda source . Un exemplu de lolosire este incarcarea configura~ i lor din / etc/ bil s h _complet ion :
ubun t u ~u b unto : ~S

. /et c/ bas h_ compl etion

u bun t u @u b un t u : ~ $

S O U LC ~

/~ t c/ b a , ~c ornpl ~ti o n

cd - comanda folosita pentru schimbarea directorului curent .. cho - alisarea


~irului

de caractere primit ca parametru la

i e~irea

standard

alills/unalias - conligurarealdezactivarea conligurarii unui alias pentru 0

comanda. Astle l, daca lolosim:


alias
my g~~ p - ' g~ep -- co l o~ - tt y

- d " kip '

comanda mY9rep (alias) va Ii lansata ca 0 comanda 9re p cu argumentele precizate: se poate lolosi ca alias chiar numele comenzii. in cazul in care utilizalorul doresle rularea implicita cu acele argumente:
a li a,
g ~ e p - ' gr"p -- c olo ~ - tty

- d ' kip '

De notat esle faptu l ca 0 comanda poate Ii implementala ata! in shel l (buillin) cat 5i prin intermediul unui executabil. Astfel de comenzi sunt .. cho si tim ... i n aceste situatii comanda executatA implicit este comanda interna. Pentru executia comenzii externe trebuie apelata ca lea completa. in exemplul de mai jos sunt prezentale cele doua tipuri de ru lari pentru comanda tim .. (intern a si external:

r a z va n @ a n aconda : -/ cQd,,$ t ,me l s asm b oot_ h e llo late x s t a ck_ o vfl


I MI
U 5 @r

st a tic

te s t s

"

sys

O mO. 00 43 O mO. OOO, OmO.OOO.

ruva n h n aconda : -/codeS /usr/b, n /ti me 1 9 asm b o ot h e ll o la te x Ha ck o v tl stat i c tests O . OOuse~ O.OO syst em O: OO . OOehpse d 133 \ CPU ( Oavgte x t +Oav g dau 0 maxresi d e n t) k 11 Oi l"l p uts + Oo u t put ; (Oma ] o r +2 5 4m' Mr )pa ge h ul t ; O. " a p s " 10

Se observa ca poate exiSla 0 deosebire intre formatele de iesire ale unei comenzi
interne, respectiv externe. De asemenea, mecanismele de ajutor lolosite pentru comenzi (wh .. r .. is, apropos , -- h el p , man, info) lunc!ioneaza doar pentru comenzi externe. Pentru comenzi interne va trebui consultala documentatia de Bash (man bllsh. info bash) sau lolosita comanda (in lerna} help :
2
r ~ z v~ n @~ n ~co na a : - /c o a .. $ help t ime ti me : t ime [- p i P l ~E L 1 N E Ex e cut e PIPE LIN E a nd p ri n t a , umma r y o f t h " r eal ti me , USH

"

CPU tim"

[ ... I
ruva n hMco n d~ : -/ c ode S

help alias

CAPITOLUL 12. SHELL SCRIPTING


1 a
~li~ ", ~ li ~ .

373

~ li ~. '

I - p i Inamel- v duel with n o a r g ume n ts 0' wit h t h e - p op ti o n p ri n ts th e li st

I ... I

o lista completa a comen~ilor interne Bash gasiti in pagina de marl(Jal. ba sh/into ba sh sau online')

(",,,n

12.2.4

Execu~ia

unei comenzi shell

Dupa cum s-a preci~at , come n ~ i le sunt de doua tipuri: interne si externe. Clasilicarea este data de modul in care comenzile se executa in cadrul shell-u lui. Astlel, comen~i l e interne (buillin) sunt executate direct in cad rul shell-ului, altlel spus in cad rul procesului curent. De partea ceala lta. execu\ia unei comen~ i externe inseamna crearea unui proces l iu in shell-ul cure nt si inlecuirea imaginii procesului cu executabilul asociat comen~i i . Mai multe detalii despre caracteristiCile si crearea unui proces se pot gAsi in secliunea 5.2. Un preces astlel creal va conIine ca imagine execulabilul asociat comen~ii . De obicei, shell-ul va astepta terminarea procesului curent dupa care va oleri promptul utili~ator u lui. Acest elect poate Ii schimbat prin rularea procesului in lundal {background} cu ajulorul operatorului & (vezi seCjiunea 5.3). De repnut este laptul ca, in ca~ul inlantu irii mai mullor comenzi (vezi secliunea S.S.!), se creea~a un preces pentru liecare comanda. Astlel. la rularea comen~ii'
u b u I"lt u @ ubunt u : -$
l~

-1

M< t

se ~or crea doua procese: unul generat din execulab ilul/bin/l s iar all ul general din executabilul / u s r /bi n /sort . Shell-ul este procesul p1i ri nte al celor doua procese ~i ~a asigura comunica\ia intre aceslea {ieS irea comen~ii ls -1 va Ii redireclata caIre inlrarea comen~i i sort}. Figura 12.1 iluslreaza gralic execu\ia comenz ii de mai sus.

I""""""~---~
0"";0'
Figura 12.' : Execulia unei comenzi in shell
, http ;liwwN.g nu.orgisoflwareibashimanu.lIbash r..1. htmrt'SEC55

374

lNTRODU CERE iN SISTEME DE OPEAARE

12.3

Scripturi shell

Dup;"i cum am specilicat, un script she ll este un lisier text (un program) continflr1d comenzi shell, variabile, structuri de contr~ ~i lunclii cu rolul de rezolvare a unei probleme. Un script shell este interpretat de shel l. Interpretarea inseamnli parcurgerea lieclirei inllinJuiri de comenzi sau structuri de control ~ i realizarea sarcinilor descrise de aceasta. Ceea ce separli un script she ll de limbajele interpretate ob i ~nu ite este lolosirea directli a comenzi ior shell, a lacilitliti lor de inllinJuire a comenz iior puse la dispoz itie 5i a I~iereior de conligurare specifice sistemu lui. Come nzile componente ale unui script shell pot Ii executale manualla promptul shell-ului cu aceleasi rezultate ca in cazul rulari i scriptului. Astle l. liniile urmatoare dintr-un script shell:

, , ,

echo " rna i mare " else echo " rna i mi e'

"
"

t Mt

'" -" ,

t h "n

pot Ii executate direct in linia de comanda:


raZ"~ I"l @~Mconda : -$

if t" s t

10 - q t

4 ; t h " n " cho "mai .. are" ; else

~c h o

"mai

mi c " ; f i

sau asllel:

, the n , ecno " ma I else , ec h o " ma I > , ." " mar e

r~.v~ n @~ n ~co n da : -$

i t

test 10 - g t

m3re" mlc '

1n ultimul exemp lu, shell-u l olerli utilizatorului un miniprompt ( pentru a indica acestuia ca nu a linalizat comanda. i n cazul de lata . comanda este i f. Detalii des pre i f si . despre electul acestei bucali de script se regasesc In sectiunea 12.4.3.

12.3.1 eel mai simplu script shell


Penlru a pastra tonu l tutorialelor de limbaje de programare, eel mai simplu scr ipt shell pe care ~ vom descrie va Ii eel care va afisa mesajul "Hello, World !" la iesirea standard. Programul este prezentat mai jos:
2

echo " Hello , exit 0

World~ '

Programul este !oarte simplu. Folosim comanda echo pentru a afisa un sir de caractere la ie~irea standard si comanda e x it pentru ca programul sa se termine cu succes.

CAPITOLUL 12. SHELL SCRIPTING

375

Folosirea comenzii e xit este optional1'i; un script shell va intoarce in mod implicit 0 daca se ajuroge la slaq;itul programului. Astlel. scriptul nostru shell poate Ii scris Intro singura linie:
echo " He 110 , world
~ "

Rularea unui script shell Rularea unui script shell se realizeaza la lei ca in cazul unui limbaj interpretat prin transmite rea sa ca parametru interpretorului:
Iazva n @ a n aco n da : -/u ~ o/ ~ crip t ing$

bash hw . b a 5h

> He llo , Wo rl d '

$criptul shell poarta denumirea de hw . bash. 5e recomanda ca scripturile shell Bash sa aiM extensia . sh sa u . bash , cu toateca in lumea Unix extensia poate Ii omisl'i. Se observl'i alisarea mesajului "Hello, World!" la iesirea standard. in spatele acestei execu!ii. shell-ul genereaza un nou proces care interpreteaza continutul scriptului pri mit ca parametru .

! - shebang

Mecanismul uzual de executie a unui shell script este acela prin care se executa un program obisnuit:
ubu n tu@ u b untu : -$ . /hw . ba ~ h

Totusi, pentru a putea reali za acest lucru avem de indeplinit dou1'i pre<:ondilii: 1. scriplul treOOie sa fie exe<:utabil 2. i n momentul execuliei trebuie s1'i se cunoasc1'i ce interpretor va Ii lolos~ Python, (lbin/bas h pentru Bash. /usr/bin/python pentru /usr / b in/pe r l pentru Perl etc.) Primul pas se realizeaza foarte simplu. comanda chmod: Se adauga drepturi de execu!ie folosind
~ +x hw . ba ~ h

,
J

r~z v ~n @ ~n ~ conda : -/u ~ o/ ~ cr1pt1nqS

ch mod

- ""'H - H

razva n @an aco nda : -/u50hcript ing$ 13 - 1 hw . ba,h - X 1 uzv~n razvan 42 Aug 3 1 18: 46 h w . bash

Pentru realizarea ce lui deal doilea pas se folose5te pere<:hea de caractere "f' " (diez 5i semnul exclamarii) denumita -\li shebang. Aceasta pereche de caracte re este urmatl'i de calea com pi eta catre programul care va interpreta scriptul. Linia care contine shebang ~i calea completa cl'itre interpretor este prima linie din script. in momentul in care scriplul este lansat in executie, shell-ul parcurge prima linie si loloseste interpretorul specilicat pentru a executa sc ri ptul. Exemple de linii shebang sun!:
t ! / bin/ba sh - exe<:utarea scriptului lolosind Bash t! / u sr/bin/per l - exe<:ularea scriptului lolosind Perl

376

lNTRODUCERE iN SISTEME DE OPEAARE

t ! / u sr /bi n / p hp - executa rea scriplului folosind PHP


j !

/ u sr Ibi n ! p yt ho n - exec utarea scr iptului lolosind Python


~i

Astfel, dupa adaugarea dreplurilor de execu!ie


r ~ " v~ n @a n aco na a

a lioiei shebang scriptului nostru:

- !uso!script i n9 $ c a t hw. ha. h

f!/bl n /bas h

ec ho " He ll o , Wo rl d '
exit 0

~fiure

mesaj

il putem executa:
2

u.va n @a n aco naa , -!uso/scrip tl ng $ , ! h w . bas h Hello , Wor ld !

Un script shell nu necesita prezen!a liniei shebang. in mod implK:it un script este interprelat fo losind t b in /bash. Se recomand,t totusi, prezen!a acestei linii pentru a asigura consisten!a. In prezent, distributia Debian 5i di$tributiile derivate (precum Ubuntu. Kubuntu etc.) folosesc ca shell Bash, iar ca interpretor implicit de script-uri shell Dash. tnterpretorut de script-uri shell implicit este /bin/ah (link simbolic catre Dash).

Dash este mult mai rapid si mai elieient din punct de vede re al consumului de resurse dar este si mai timitat ca ~i sintad, comparativ cu Bash. Asadar. atunci cand modilicali scripturi existente in sistem care au in linia shebang ca interpretor / b in/ah, lua!i in considerare cii sintaxa este limitatii' comparativ cu Bash.

12.3.2

Comentarii intr"un script shell

Comentari ile intr-un script shell se realizeaza eu ajutorul caracteru lui t . Un comentar iu incepe de ta aparitia f pflna la slfirSitut liniei, asemanator cu / / din CH . Exemple de comentarii sunt:
, "
f come nt a ri u @ c h o "h " ll o com"n t ariu f ec h o " h " ll o' (comanda c o me n t~ t ~)

12.3.3

Comenzi simple shell

in mod evident, seriptul shell prezentat anterior nu esle un script shell in adevaralul sens al cuvflntulu i. Aceasta de-oarece aeela~i elect peate Ii oblinut prin rularea simplii a eomenzii echo urmata de argumentul "Hello, World!" la prom tpul shel '-ului. Un script shell va contine mai multe comenzi care vo r fi interpretale lntr-o singura instantii in momentul execuliei seriptului. Scripturile shell folosesc de multe ori comenzi interne. Vom prezenta, in eontinuare, 0 parte din cele mai lolositoare eomenzi interne:
, http.;lIwi<i.uoontu.oomlOa.hA. BinSh

CAPITOLUL 12. SHELL SCRIPTING

377

echo Com aroda echo per mite terminalului:


r~zv~n@~n~condd : -$

ali~area

siru lui primit ca parametru la iesirea standard a

e cho

" t e~t "

te~t

Op)iuni utile pe ntru echo su nt: -n: dezactiveazA afisarea implicitA a unui caracter newline la slars itul liniei:
,
rdzVdn@an~conda : -$ echo -n " test " testra,van@anaconda : -$

- e: permite interpretarea caraClerelor speciale:


"azvan@anaconda :~ $

@cho -n@ " t@'t\n\t\tte't2\n"

teot

t es t2

printf

Comaroda pr i ntf permite, ca Si echo, al iSarea unui Sir de caractere la iesirea standard. Permite. insa, la lei ca lunc)ia pri nt f din C, format area sirului de afi ~are:
ruvan@aMconda : -S puntf "\8 test 020 '03d\n" "tegt" 20

Se observa simi laritatea cu lunClia print! din C: primul arg ument este siru l de lormatare iar celelalte sunt argumenlele de al isat la iesirea standard.

exit Comaroda ex i t permite intreruperea e~ecu!iei script ului. Comanda poate pr imi un argume nl care specifica valoarea de retur. Aceasta valoare este implicit o.

export
Comanda e xpo r t permite exportarea unei variabi le (sub forma unei variabile de mediu) din scriptul cure nl in she ll. ASllel. dupa ce shel lul a incheiat interpretarea scriptu lui, variabila va putea Ii lolosita direct din shell. Pentru mai mulle detalii in legaturA cu variabile in script-uri consulta)i sec)iunea 12.4.1 .

,"
Comaroda s e t este utilizata pe ntru conligurarea Si personalizarea shel l-u lui. Oop)iune uti lA eSle opti unea - x care permite alisarea comenzilor unui scr ipt shell pe mil.surA ce acestea sunt executate.

378
~.d

lNTRODUCERE iN SISTEME DE OPEAARE

Comarx:la r .. ad eSle to lost!;! pantru a citi date de la intrarea standard si pentru stocarea aceslora Intr-o variabila. in exemplul de mai jos, se dore~te stocarea datelor introduse
de utilizator in variab ila a:
r~ z va n @a n a cond a : -/u ~o /~ c rip t i n g $ r ~a d

t @ st-'"S 'l"

r a z va n @an a conda t es t_m .q

- /u~ o h c rip t>n g$

@ ch o

$a

Se observ;'\ cil. variabila contine sirut fesLmsg introdus de utilizator.

12.3.4

One liners

Multe din problemele ce necesitA uUlizarea facilita!ilor shell pot Ii realizate prin intermediul unei simple linii S-a observat ca nu eSle necesar (5i niei elicienJ) sa utiliziim un script shell doar pentru afisarea unui mesaj precum "Hello, World!\n" la iesirea standard.
Folosind redireCl<'iri sau Inl<'intuirea comenziior se pot obtine electe imediate Intr-o singur<'i linie de shell. Astlel de comenzi combinate poart<'i numele de one liners.

Redlrectarea Intrllrlllle!iilril unel comanzl Redirectarea unei comenzi se olera la posibilitatea de substituire a intr<'irii, iesirii sau erorii slandard a unei comenzi cu un fiSier. Astlel. redirectarea inlrarii standard inseamnA d . 0 comandA va cili informalii dintr-un fi~ier in locul cilirii de la intrarea standard. Redirectarea iesiri i standard inseamn<'i c<'i rez ukatu l comenzii se va reg<'isi intr-un fisierde iesire. Pentru redirectarea intrarii standard se foloseste operatorul < (caraclerul "mai mic") urmat de numele fiS ierul din care se real izeaz<'i redirectarea. in cawl redirectarii iesirii standard, operatorul lolosil este > {mai mare}. Informa!ii des pre redireclarea intrArii si iesirii standard se reg<'isesc si in sectiunea 4.4. Vom exemplilica red irectarea lolosind ulilitarul c at. Comanda cat realizeaza , in mod implicit, afisarea con!inutului intrarii slandard la iesirea standard. Un exemplu de rulare este prezentat in continuare:
I ~ z v~ n @~ n ~ cond ~ : - $

cat

2 , ,

m~5~j l

meuj l meu:p
me~~j 2

Pentru inche;erea introducer;i de inlorma(ii de la intrarea standard trebuie folosita combi natia CTRL - D, insemnand sfarsit de !isier (end of file). Se observa c<'i ceea ce introduce ulilizatorulla intrarea standard se aliseazA la iesirea standard. Daca vern redirecta un fis ier la inlrarea standard, efectul va Ii afisarea co ntinutului fisierului la iesirea standard:

CAPITOLUL 12. SHELL SCRIPTING

379

, ,
~ ~

ra,va n@ a naconda , -fuso/scrlptlng$ cat < hw.bash f!/blnlbas h echo "H ello , World! " exit 0

Acest lucru este echivalent cu transm iterea fisieru lui ca arglJment come nzii eat. 1 n moo similar. daca. redirecta.m iesirea standard ln trun fisier, acesta va con!ine ceea ce a inlrOOlJS utilizaloru l la inlrarea standard (se folosesle CTRL - D pentru incheiere):
I~zv~n@~n~cond~ : -fu~of ~ c rip t ing$ c~t

> out . txt

> i ntroducem
3
dup~

me"~j

"
G

care a p a.am CTRL- D cat out . txt

r~'van@anaconda : - fusofscrip t i ng$

i ntroduce m mesaj dupa care a p asam CTRL - D

1 n exemplu l de mai sus, comanda ea t a afi~at fisierlJl out . t xt prin transmiterea acestuia ca argument, ech ivalent cu redirectarea acestuia cl'itre intrarea standard a comenzi i. Acesl comportament se extinde si la aHe eomenzii de prelucra re de fi\>ie re lexl (vez i sec! iunea 12.5). Un elect care poate pl'irea su rprinzl'itor este folos irea simu ltanl'i a redi rectl'irii intrl'irii ~i iesirii slandard. in acest fel, eontinutul fisierului de la inlrare esle eopiat in fisieru l de la iesire. Efectul esle idenlic cu lolosirea comenzii cp :

,
3

r~zvan@anacondd : -fu~ o f ~ c rip t 1 ng$

c at < h w. b d 3h >

n~ w . b ~3h

, ,

ra,van@anaconda : - fusofscrip t i ng$ cat n ew .ba. h f!/bl n /bas h echo "H ello, World! " exit 0

PentrlJ redirectarea erorii standard se loloseste ope ralorul 2> . Aceasla are legiitura cu descriptoru l de fi~ier asocial: intrarea standard are asoc iatdescriptoru l de fi~ier 0, ie~irea standard are asociat descriptorul de l i ~ i er 1 iar eroarea standard are asocial descriptorul de !iSier 2. Astlel, dacl'i se doresc redi rectate intr-un lisier erorile si avertismente le emise de qee se lolose~te operalorul 2> :

,
J

r ~zva n @a n aco nda : - fu"of~crip t i ng$

gec h w.c 2> @rr_warn .txt

"

r ~ zv a n @a n aco n da : -fusohcrip t i ng$ c a t u r _warn . tKt h",.c : In fu nct i on ' main ': hW.e,3: war ning, incompatibl e implicit d ec l aration of built - i n function ' pri n t! '

rnva n h nacon da , -fuso/scrlpting$ g cc hw. c 2> fdev/null

1 n eel deal doilea exe mplu. sa redi reclat eroa rea slandard caI re / dey / nu l l . Aceasta inseamna ca. nu se doreste afisarea la eroarea standard sau intrun l isier a diverselor informatii de avertisment afi~ale de g ee.

380

INTRODUCERE iN SISTEME DE OPEAARE

Se peate redirecta atfll iesirea standard cfll si eroarea standard folosind operatorul & >
(Alen~e: aces! operator nu func!ioneaza in interprelorul she ll Dash' ). i n exemplu de mai

jos se red irecteaza alAI ies irea standard cat ~ i eroarea standard a execuliei comenzii

st race:
I~zvan @a n aco nd a : -/u~o/~ c rip t 1 ng$

s t r ace i >

out _l~ . tx t

Operatorul Operatorul esle utilizat penl ru red irectarea iesiri i standard insa cu adaugarea (append) a informaliil or red irectate la sfflrsilul fisieru lui. Echivalenl ex isla operato rul 2 pentru adfl ugarea informati ilor de la eroarea standard. in exemplul de mai jos scriem ie5irile comenzilor 1s, p s ~i uptime jnlr-un acela~ i lisier:

,
J

r~.v~ n @a n aco nd a,-/uso/$cripting$

Is

out.txt
Out . txt

u:vanhnaconda , -/usolscriptingS ps

1

1 0
11

ra.van@a naconda : -/UM /s cnptingS u pti me Out . txt ra.van @anaco nda : -/u s o /s cuptlngS cat o u t.t x t a . ou t Hr_wa rn.t xt
h ", . ba. h

h" . c
n~"

12

" ,. "
'"

ne" . bos h out . txt out ls txt


PHI Tn
TIME CMD

"
,!

19

00 , 00 : 00 bash 30624 pta/2 31508 pts/2 00 , 00 : 00 ps 15 : 34 : 59 up 59 days , 39 ,.. n ,

2 u serS ,

load average : 0 . 37 , 0 . 55 ,

0.61

Here documents; OperalOrul Operatorul este lolosi\ in ceea ce se cheam~ here document. Un here document este lolosil. de obicei. cu utilitare interactive. Formalul de ulilizare este:
command word

Acesllucru va impune oomenzii cilirea iniormaliei allal~ in conlinuarea comenzi i de la inlrarea Slandard pan~ la intalnirea cuvanlului word in corpul scriptului. in exemplul de mai jos, se citeste de la inlrarea standard pana la in tfl lnirea cuvflntu lui END:
ra.van@a naconda : - /uso/scr1pt i ngS cat h ere . bash

> f ' Ibi n /bash


cat END

m@saj .i mp lu

" "

,
END

pentru un h He document .. ava nta j ul este ca nu trebule sa tolosesc mu lle comenzl echo

"
11

12

echo " s - a terminat " ruvanhnaconda , -/uso/scriptingS bash here.ba" h


, http.;lIwi<i.uoo ntu.oomlOa. hA. SonS h

CAPITOLUL 12. SHELL SCRIPTING


13 ,.
mes~j

381

. imp lu pe ntru un h ere document

" ,6
"

a vantaj ul este c a nll trebu i e sa folosesc mol t e co,"enz i echo

s - a ter minat

Dupa cum 5e observa si dill comenlariile fi~ierului . Ull here document poate fi fotosil in locul comenzi i .. c:h o. Un exemplu util i l constituie generarea unei pagini web simple. 0 prima alternativa este folosirea comenzii echo:
rHvan@ragMro ~ ;

-/uso/script i ng$ cat echo .ba sh

f!fbinlba.h ho. tna me - " r a gnarok" Mme - "razvan " echo echo echo echo echo echo echo echo echo echo

, " " "


" "
18

" " "

-, -, -, -, -, -, -, -, -,

-,

" <ht rnl>"


" \t<tith~ "

" \t\tPagina mea" " \t<ltitle> " " \t<body> " " \t\t< h 3>Statla este $host n a me< / h 3 >" " \t\t<h3>Numele 0'" este $M me</h3> " "\t\t<p>D a ta eHe S ld ate)</p> " " \t</bodp" " </ht ml ' "
b~"h

r~zv~n@r~gn~rok : -/uM h crlpt1ng$


<h t ml~

e cho .baoh

,. m

<ti t i .
P"'9ina mea

, " "
U

" " " "

<!tit l . <body> <h3>Stati a e ste rag n arok</ h 3> <h3>Numele meu este ratva n </h3> <p'Data este rue Sep 4 23 ; 23 : 05 EEST 2007<fp> </body> <fhtml>

Se observa ea esle incomoda Iolosirea comenz ii ech o. 0 solu!ie este ulilizarea unui here document:
r a .va n @rag n aro ~, -/uso/scriptin g $

cat h ere.bash

f!/bin/bash
hOSl n ame - " rag n aro ~ "

,
8

name - " ru"an"


cH EndOf Html

<h t ml> <titl e >


P"'9ina mM

"

11 13 <h 3>Statia es te $ h ostname</ h 3> ,. <h3 >Numele meu e. t e $name</h3> '" <p >Data este $Idate) </p> ,6 </body> " <fhtml> ' 8 EndOfHtml

"

</tit l ." <body>

382

lNTRODU CERE iN SISTEME DE OPEAARE

Inlormatii sup li mentare despre here documenfs se pot gasi on line ' .

Hera strings; opetatorul < Operalorul < permite folosirea de here strings. adica redireclarea unui sir de caracterB ~tre inlrarea standard a unei camenzi. in exemplul de mai jos, se lolose~te comarda read pentru a cili con~nutul unui sir intr-un set de

variabi le:

,
J

r ~ 'v ~ n @e n aco na a : -$

r e ad a 0 c d < " a l fa be ta gamma delta

ruva n @a naconda ; -$ e cho Sa SI:> Sc $6

a lt a beta g a mma delta

Ca ~i in cazul operalorul ui , acelasi rezuka! poale Ii ob!inul pr in fo losirea comenzii


echo:
ra<va n hna c onda ; -$ e cho " a l h beta g a rrrna delta " I re ad abc d

Trunchierea unui fi!(lier Trun chierea unui li!jo ier inseamnA eliminarea co n\inulului acestuia: fisierul devine gol (dimensiune 0). Trunchierea unui !isier se realizeaza pr in n fis ier. Acesl lucru se real izeaza folosind redirectarea contin ulului Idev/null 1 comanda:

, ,

r&<va n @ ana conda : -/uso/scr i pt . ngS 1s - 1 Ou t . txt - r w- r -- r -- 1 r a zva n Uzv &n 22 0 5 ~p 415 : 34 Out . t xt ra zva n @ aMco nda : - /u , o h cnpt . n gS c at
/d ~ v/n u ll

,. Ou t . tx t

r a z va n @ a n aco nd a : -/u~ o h c rip t> ng$ 15 - l o u t-txt 7 - r ",- r -- r -- 1 razvan r azv a n 0 S ~ p 4 1 5 : 35 out . tKt

Mai simplu, trunchierea unui f~ier se real izeaz.:\ prin redirectarea unei comenzi care nu afi~eaz.:\ nimic la iesirea standard. 0 astlel de comanda eSle : (comanda care nu face nimicj:
r azva n @ anaco nda : - /u , o/ , cr1pt i nqS : > Ou t . t x t

$i mai simp lu. lrunchierea se real izeaza folos ind comanda de mai jos:
r azv a n@a na conda , -/ uso/sc rl pt l ng$ > out . t Kt

Comanda esle ec hivalenl a cu cea de mai sus, cu absenta comenzi i ..

inliinluirea comenzilor Shell -ul pune la dispozi!ia utilizatorului operatori care permil lnlan!uirea diverselor comenzi pe nlru oblinerea de noi funC\ionalitati. Dintre acest ia, cel mai cunoscut eSle operatorul 1 (pipe) ca re red irecteaza ie~irea unei comenzi la intrarea alteia. Detalii despre acest operator se gasesc si in capilolul 5.
, http)ltldp.orgilDPlab$lhtmllh.re doc .htm l

CA PITOlUl12. S HEll SCRIPTING


Operalorul I (pipe) Un exemplu de ulilizare al operalorului I eSle informalii intrun fi~ier. 0 comanda uzuala este:
ubuntu@ubuntu : -$ Cd t f,le . t x t
fi~ier ~ u tarea

383
unei

I grep ke yword

Cautarea informaliei in secliunea t 2.5.7.

se realizeaza cu ajutorul comenzii qr ep. descrisa in

Un exemplu mai complex ca re utilizeaza 0 serie de comenzi prezentale in acest capitol eSle delerminarea numarului de utilizalori unici care sau autentificalin sislem i nlro zi data. Comenzile ulilizale sunl l.a$t, qrep , cut , sor t , uni q, we. Detalii despre acesle vor Ii prezentate in secliunile urmaloare. Penlru incepul, yom Iolosl comanda last care aliseaza aulentilicarile in sislem. Com aroda qrep esle lolosila pentru a extrage numai acele linii care contin ziua dorita:

" " " "


"

, , , ,

r~zv~n @ ~n ~ conda : -!u ~ o! ~ cr,ptlnqS

l~"t

- 30

~ ergi u
I~zv~n

c~rp~ l ex

alexef
COJoc~ r

aavloa toot ddvlad pta/O valentin pta/2


~lexd

pt,/4 pts/4 pt.!O pts!O pt.!O ptsn pts!O

89 . 18 . 20 . 56 "00 dhcp-204 . c , . p u b .
a~ . 121 .14 0 . 140 59 . 120.196.5~

,., "00 ,., ,


"00
"0 0

rUva n stehnb s t ehnb

pt./O pta/O pt./O


pt,/O

86 . 127 . 17 .1 56 "00 54 . 247.45 . 23 ",0 ahcp- 204 . cs . pub. 84 . 247 . 45. 23 86 . 122 . 195 . 234 ",0 89 . 120 . 196 . 59 dhcp-204 . cs . p u b . ad s 1- 7 6- 200 - 1 4 7 _ ad s l - 76 - 200 - 147 -

"00 ,,, "00 ,,, "00 ,., "00 ,0 '", "00 ,., "00

,., ,., ,., ,., ,.,

Qre p lion 3 23 : 36 23 : 19 23 : 14 22 : 42 19 : 50

, , , , , , , , , , ,

I~ : OO

15 : 14 15 : 07 13 : 47 13 : 30 10 : 30 10 : 05 06 : 13

23 : 46 23 : 35 01 : 41 22 : 51 I 9 : 51 16 : 01 17 , 33 1 5 : 09 02 : 43 15 : 04 10 : H 10 : 17 07 : 57

100 : 091 100: 1 5) 102 :2 7) 100:08) 100 :0 1 ) 100:00) 102:191 100 :O l) 112 : 55) (01 : 341 (00 : 13) (00 : 121 10 1 : 431

Dupa obtinerea autenUficarilor in sistem vrem sa extragem numai numele utilizatorilor. Penlru aceasla yom lolos i comarlda cut :
ro.vo n @anaco nda : -!uso/scripting$ 10.t - 30 )
6

I grep lion I cut -a' , - f l

serg'u ruvan carpalex


~lexd

cojocar
ddvl~d

,
8

roo t
dd."l~d
v~lent in

10

"
1>

ole x ef
r~zv~n

13

,.

stetonb stetonb

in acest moment avem numele utilizal orilor care sau aulentificat i n sistem in zi ua de Luni. Mai departe, va trebu i sa extragem 0 singura instantA a numeior care se repetA . Drept urma re yom folosi utilil arele sort 5i uniq:
ra,va n @anaconda,-!uso/ s cripting$ last - 30 so rt I uniq > o lexef , carpa 1e x cojocar 5 ddvlad

I grep lion I cut -a ' , - f l I

384

lNTRODUCERE iN SISTEME DE OPEAARE

"

r~zv~n

root sergiu stefanb vale nti n

Mai ram {me sa afisam numarul de aulenlihcari. Acest lucru se realizeaza prin contorizarea liniilor obtinute la pasu l anterior, cu ajutorul uti litarului we :
ra.va n@anaconda , -/uso/scrlptlng$ last - 30 I grep Mon I cut - d ' , SOrt I u nlq I we - 1
- t l

Comar.da de mai sus peate da rez ultate ineorecte in cazul in care Mon mai apare altundeva in rezu ltatul lurnizat de l all t . Daci!. ar exista un utilizator Monica. , atunei vor aparea ~ i liniile ce descriu autentilicarea in sistem a utilizatorului Monica. (chiar daca autentilicarea a avut sau nu loe in ziua de luni). Ace asta problema va Ii corectati!. in sectiunea 12.11 .1.

Operatoril ;, I I 51 55 Operatorii ;. I I 5i & & de inlan)uire a comenzilor tin cont de va loarea intoarsa de comarlda anteri oara. Astlel: comml ; comm2 - comanda comm2 se execu ta dupa executia comenzii co"""l comml I I comm2 - comanda cOllllll2 se execu\;''i in cazu l i n care cOmllll se intoarce cu 0 valoa re nenula comml & & comm2 - comanda eomm2 se executa in cazul in care corom l se Incheie cu succes (inloarce O) Operatorul ; eSle echivalenl cu executia secven!ialii a fiecarei comenzi. Operatorul & & esle lolosit car.d eomm2 depir.de de execulia cu succes a comenzi i comm1. 0 situalie este comp ilarea din surse si instalarea unei aplicalii:
roo t @ u b unt u: -I ma ke
m~ke

1ns t all

12.4

Programarea shell

Dupa prezentarea catorva comenzi simple si a operatorilor shell. putem patrunde in aspeclele de programare a unui shelf script. Dupli cum sa precizal, shellul pune la dispozitia utilizatoru lui un limbaj de programare. Acesta conIine , ca ~i alte limbaje de programare, variabile, func~ i , strLICturi de ciclare. instrucliuni de decizie. Combinate cu celelalte lacilitati ole rite de shelf (utilizarea de comenzi deja implementate. inlanluirea comenzi lor, redirectarea), programarea shell devine un instrument puternic la l ndemflna utili zatorului.

12.4.1

Variabile

o variabili!. are asooat un nume si 0 valoare. La lei ca in C, numele variabilelor este un ~ir de caractere ce poate conIine litere. cilre sau caracte rul _ (underscore) 5i trebuie

CAPITOlUl12. SHEll SCRIPTING

385

sa inceapa cu litera sau underscore. Exemple de nume de variabile sunt a., a.Ob, a._b, AxB_Ol_D etc. Spre deosebire de limbaje precum C, variabilele in shel l nu au un tip. Faplul ca 0 va riabila eSle un numar sau un si r de caraclere depinde de conlexlul in care este folositi1. De asemenea, 0 var iabila poate fi delinita oriunde. in mod ob i~nuit , unei variabi le Ii este asociata 0 valoare in momentul definirii. Exemple de ini!ializari sunt:

, -0
>
l

b ~lf~ c . ~06

a - 230

Un lucru important de re~nut este fragil itatea programarii she ll ~i co nstrangerile importante pe care Ie impune. Una dintre ele este faptul ca nu poate exista spaliu inainte sau dup<li semnul - din momentul inilializ<lirii unei variabile. AsUel, urm<litoarele ini!ializari vor Ii invalide:
, _0 > b . '~lf~ ' , a - 230

Valoarea unei variabile eSle refer~<li cu ajutorul simbolului $ . Astlel , dac<li dorim afi!?area va lorii variabilelor definite mai sus folosim comanda:
r~zv~n @~ n~conda : -$

echo

$~

$b $c $ci

> 0

~lh

~08.,

230

In consecinti1, daca dorim ini!ializarea unei variabile la va loarea unei alteia yom folosi 0 constfl.lctie de forma:
razvan@anacond~ : 'S

echo Se

, ,
6
7

0
r~zv~n@~n~cond ..

: -$ f."$b$c" echo $f

r~zv~n @~ n~conda : -$ dh~08""

In ultimul exemplu se observa ca variabila f contine valorile concatenate ale celor lalte doua variab il e. De asemenea, se poate observa ca ghilimelele nu schimba se nsul simbo lului $ . Dacll se doreste ca 0 variabilll sa fie un rezu ltat al unei operatii aritmetice cu 0 alta variabil<li se folose~te ope ratorul de expand are aritmetic<li descris in sectiunea 12.7.1:

, , ,

razvan@an aco nd ~ : -S

razv~n @~ n~conda :

-$

,-, ,-,
$IIS~

'" " o fac ilitate importanta a shell-ului este posibilitatea stocarii iesirii unei comenzi intro
variabila . Acest lucru se real izeaza prin intermediul construct iei $ (command ). in exemplul de mai jos, retinem in variabila loc a l users flum numarul de utilizatori care au directorul de baza in Ihome :

r~zv~n @~ n~conda :

-$ echo

-k ,

386

lNTRODUCERE iN SISTEME DE OPEAARE

."
,

, ,
,

rHv3 ft h naconda : -S e cho Sl ocai users num


~i

Daca vrem Sa contorizam

utilizalof\.ll root , adaugam Ita acea variabila:

."

ru"a n @a n acond~ ; -S

e cho StoU!

loc~ l

o greseala

Irec~enta

in ini!ializarea unei var iabile esl e fo losirea de spa!ii inainte sau

dupa ". Evita!i aparitia lJnor astlel de grasali in scripturile voastre.

Exempl e

afi~area ultimelor n adrese IP de la care s-au rea lizat conexiuni pentru un servic iu

(inspectie de jurnale)
~oot@anaconda ; /h o me/~a.va n /u.o/.c~( p ting _

cat - n service_ i p.oas h

,
3 4

~ ~/b1n/b~8h

7
'0 11 12

! p _ nom-J
log _ file-/va<!log/ap~che/access . l o 9

tail - n S1p_ num S l og_ f il e

I c ut - d . . - f 1
ba ~h ~ ervic~ _ i p . b a"h

r oot@anaconda : /home!r~ zv a n / u "O/"c dp ting ~

38 . 99 . 44 . 102 3 8. 99 . 44 . 102 38. 99 . 44 . 10 2

Afisarea memoriei lolafe ocupate de primefe 3 procese din sistem'


root@anaconda : /h o melra%van/ u "o/"crl p tln9 ~

,
,

, ,

" " '2


"

, ,
1

cat - n

me~roc . ba"h

~t / b in/b&sh ~ssl-S l ps

u s 2-S{ps
r~~3 - S { p ~

-, ". -. -, . -. -. '" '"

- - so~t - -~ss
--S Ort - - ~ ss -- ,o rt - - ~~~

he~d h e ~d

hMd SrssJ l1

tot a l

'"

k b - $ {{ S r l

$ n.2

, -. -. -. ,
;

tail t 3il t a il

-. -."
-. " "

echo "memo rie t ot a l a ocu pata

Stota l

"" " ""

"

p rimeh ; p r o c ese :

root@ a naconda : /home/ra>va n / u "o/"crl p tln9 ~ bash me~roc me rnor i e totala o cupata d e pr ime l e 3 p rocese : 29088 KB

. ba" h

Adaugarea unui utilizator in sistem in mod neinteraCliv


root@anaconda : /h o me/ra.va n /uso/.cr lp tln9 ~

cat - n my_ a dd_ user h

. ' / b in/bash
a.tl~1

' p re .t>pUnem Ca f"OJ . e mod ifioi proce se '" f>" parcu rs LJI " xeeuliei . eripl .u lui, ... p;lst rez8

inel! ",dine a le r . ii

CAPITOLUL 12. SHELL SC RIPTING

387

, , ,
" " " " " " "

~ddln9

, , , , , ,

~ Add a ne~ user ; invo ke all necesary scr i pt a nd comma nd Cor comp lete ~ user facilities

u ~e rname-"ne wu ser '

email - "razvan d @gma il. com "


GROUP ..NAME - " s tud ~nt' "
GROUP-PIR ~ "5 tu d~nt" " QuorA ~ "Z50"

'"

..
I.
1~

" n n
"

t add U5 H useradd - m -d / home/SGROUP_DI R/Susername -g $GROUP_NAME bin/bash $username

"

- $

17

20
21 22
2J

18 19
20 21 22

pass word pa sswo cd - S l p wgen - N II


~ cre ~ te

add passwor d - n o n - int e H~ctive mode e cho "Su s erMme : $p""word " I chp" ~~ wd
~

..
'" ""

23
24 t quo t a 25 ~ e tq uo ta SU 5 HM me $ II $QUOTA . 1024 )) S III$QUOTA' 10 ) 10 24)) SII$QUOTA. 10)) $1 1 I $QUOTA 1 0 ) 10 )) -a

$'''.

21
28

26
~ send e - mail ma l l - S "Ne w Account " $emaU EndOfMsg 2~ A ne w account has b een created for you . User n a me i . $u.ername .

27

..
~

28

. ..

" 32 " " )5 " " " " .,

30

YOur

paM~ord

is $password . Ple a se use passwd to

ch ~ nge

it .

"
n

32

YOur qou lImit is SQUOTA MB .

" " "


"

Hav@

~ndOfMsg

n1ce d ay '

e xi t 0

roothnaconda : /h omel u:v a n / " ao/acr! p t Ingl . l",y_ adoLuser . a h roothnaconda : lh ome/ra:va n /uso/scrl p t lngl cat letc/pa.swd newuaer : x : 105 1 : 1026 : : Iho me I at udent 8 1 newuser : fbi n (bash
t all - I

.. '6

12.4.2 Caractere speciale shell


Shellul are un set de caractere rezervate, caractere ce au roluri bine definite lntrun script.

388
Caraclerul blank (spaliu)

lNTRODUCERE iN SISTEME DE OPEAARE

Caracterul blank aSia 101 0sil pentru a separa argumentele unei comenzi de comanda si lnlre ale. Astle l, in exemplul
ubu ntu @ubun tu , -$ 1 $ - } mydir

avem comanda 18 cu doua argumente: - 1 si mydi r. Se poate i nl:l.mpla sa avern un

argument ca re contine caraetere blank. Spre exemplu. avem direclorul my di r. Penlru


af i~area

con!i nutului acestu i director, nu putem folos l comanda:

ubuntu@ubu ntu:-$ I s my dlr

lntrucal shell-ul ar conside ra doua argumente lransmise comenzii I s . Astlel, sar lncerca alisarea con~nutului directorului my 5i apai a directorulu i dir. Pentru a
prelntamp ina acest elect, caraclerul blank trebu ie "cital", adica trebuie lolosil ca un camete r obisnuit. Pentru aceasta exista trei sOlutii: 1. folosirea caracterului special ghilimele pentru "1 nglobarea" numelui de director ce conIi ne blank :
ubuntu@ub untu : -$ ls "my air "

2. folosirea caracterului special apostrof, la fe l cum sa folos it ghilimele:


ubuntu@ubuntu : -$ l s ' my air'

3. folosirea caracteru lui special bacl<.slash, care dezactiveaza caracterul special de dupa el
ubuntu@ubuntu : -$ I s my\ air

Despre caracterele speciale ghilimele, apostrof

~i

bacl<.slash se va disc uta in co ntinuare.

Caracteru l $ (dolar) Unul dintre acestea este caracteru l $ care poate Ii tolosrt pentru expandarea unei variabile (a vatorii aceste ia). a unei comenzi sau expanda re aritmetica. Expandarea unel vatlablle se refera la determ inarea valorii acesteia:

,
,
,

u<vanh naconaa : -$

.-,

ra<va n @anaco naa , -S b - meuj ra<van@anaconda ; -$ echo mesaj

,
,
"

""
- 1 I wC - 11

Expandarea unei comenzi se retera la retine rea rezultatului executiei comenzii :


razvan@ anaconda : -$
nu",-dH ~ - S I 15

"

razvan@anaconda : -$ echo Snum_air.

Expandare aritmetlca se refera la executarea de calcule aritmetice. Fara folosirea operato rului de expand are arilmetica, ope ratori; arilmetici ar Ii conside rati caracte re simple:

CA PITOlUl12. SHEll SCRIPTING

389

, ,,
~

razv a n @ a nacon da : -S 2+3 H


rHvan@a n a co~da

ec~ o

2+3+ 4

: -$

ec~o

S (( 2+3 +4 ))

Mai multe informalii despre utilizarea caracte rului s si despre expandare sunt prezenlate in sectiunea 12.7. Caracterul s este un caracter special. Acest lucru inseamnil. cil. nu poate Ii folosil cu semnilica)ia de caracter direct carld este urmat de un alt caracte r care impune 0 exparldare. Daca dorim afisarea sirului sa, nu putem lolosi comanda echo Sa, penlru cil. ar afisa valoarea ~ariabilei a :

r ~ z v~ n @ ~ n ~co n d ", , - $

ech o

$~

Pentru aceasta trebuie lolosit ca racterul bacKs/ash sau apos lrof. Folosirea ghilimelelor nu conduce la folos irea semn ifica)iei de caracler penlru $:

, ,
1

,,

ra%va n @ a n a conda : -$

ec~ o

" $ &"

..

r ~ z v~ n @ ~ n ~ c o n d ,,: -$

ec~o

' $a '

r ~ z v~ n @ ~ n aco n da , - $

ec~ o

\$a

Caracterul " (ghltlmele) Un all caracler special esle " (ghil imele). Acesl caracle r esle lolosil pen\ru a delini siruri de caractere:
" S a - " sir " S b - " ac~ "t Si r"

Caracterul ghilimele este folosit pentru pastrarea semnificatiei de caracter pentru caraclerele speciale: blank, (, ) , ~, I etc. Excep)ia 0 constituie caracterul $ care isi pastreaza semnilicatia in cazul expansiunii:

, , ,
,

r~ zv a n @ anaconda :

-$

u zva n @a naconda : - $
Ia z v~ n @ ~ n ~ c o n d,, :

..
ec~o

,-,

Pentru alisarea unui caracter ghilimele pulem folosi backs/ash sau apostrof:

- " -

-$

",

S c;

- ""
(\ I "

, , ,

r ~ z v~ n @ a n aco n da ,

~ imb olul

- $ ech o simbo l u l q hilirne l " " q hilirne l e

,,

razva n @ a n aco nda , - $ echo ' simbolul qhilirne l e sirnbo l u l qhilimel e < " <

("I'

390
Caraclerul \ (backslash)

INTRODUCERE iN SISTEME DE OPEAARE

Sa observe! lnsA cA nu putem alisa caractarul $ . Comanda de mai jos aliseazA valoarea variabi lei a:
ra< va n@a naco naa ; - S e ch o Sa ,,

Shell-ut interpreleaza caracterul $ ce initiator al unei e~pandari. Daca dorim afi~area sirului sa., nu putem lolosi construc!ia de mai sus, intrucAt sa va locarea expand area variabilei a. Pentru a reali~a acest lucru vom lolosi caracterul \ (backslash). Aces! carecter aSia caracterul de eilarea si are rolul de a pastra semnificatia caracterului de dupa el. Citara inseamm'j folosirea unui caractar eu semnihcatia literalll.

Astlel, daca dorim a/iS8rea sirului Sa, folosim comanda:

, " , ,

r a.va n@a naco naa :- $ e cho \Sa

Caracterul \ poate Ii !alosit si pentrtJ citarea caracterului .:


r~.v~ n h.n ~co na ~ : -$

ec ho \ "

Tot \ esta lolosit pentru alisarea \ :


r a z va n @an aconaa : -$ e c h o \\

Caracterul ' (apostrof)

Caracterul ' are un rol similar cu eel at caracterului ". Este folosit pentru descrierea de ~iruri 1li forleaza caractere le speciale sa-si pastreze semnifica!ia. Deosebirea intre ' 1li " este ca primul aste mu~ mai puternic. Astlel, orice caractere speciale care apar intre doua caraclere apostrof i~i paslreaza semnificalia:
2

ruva n h n aco naa , -$ e cho ' " ) ; ; 5 \

" ) ; ,

$ \

'

Alte caractere speciale Aile caraclere cu rol special in shell sunl ce le fo losite de operalorii shell: >, <, I , &, ; , (, ) sau cele folos ite pentru expresii regulate in shell: { , ) , " +, ? , I, ) . Toate aceste caractere isi pastreazA semniticatia dacA sun! folosite intre ghilimele sau apostroale. Mai mulle detalii des pre caracterele lolosite pentru expresii regulate in shell se regasec in sectiunea 12.7.2. Daca, spre exemplu, un utilizator doreste ati~area tuturor pachetelor instal ate care incep cu litera n, va trebui sa utilizeze comanda:
ubun t u @ ubu nt u: -$ d pkg -1 n

Comarxfa de mai jos nu va func!iona daca exista 0 intrare in directorul curent care incepe cu litera n din cauza exparxfArii expresiei regulate de cMre shell, lAra a Ii transmis caire utilitarul dpkg:

CAPITOLUL 12. SHELL SCRIPTING

391

,
~

ra,van@anaconda , -!uso/scrlptlng$ Is h .. . bash ne" u,van@anaconda , -/uso/scr l pt l ng$ dpl;g - ] n. No pac kages found matching new .

Solutia este citarea caracteru lui .:


, 3
r~zv~n@~n~condd : -!u~o! ~ cr'pt'ng$ dpkg - 1 " n. D@5i ud_ Unk nown!I n~ ta ll! R@mov@/Purg&/Ho ld I Stat us - Not /1 ns ta lled/Con f ig- file s/Unpac~ed! F a i led - con f ig /H~ 1 f - installed 1/ Err? - (no nel!Hold/Reinn - r e quired!X- bot h-problems IStatus , Err : uppercase- badl _ +++ II/Na me Version Desc ription 6 - ______________ ___ ________ ____ __________________ ________ ______________ _

, , " , "" ,. "" ""' nas - lib "" nautil us " " '" nautilus-cd-bu
na~o

na~o - tiny

"

'"
ii

naut i 1 u . - data

2 . 0 . 2-1etchl <none> <non@> <none> <none> <none> 2.14 . 3 - 11

free Pico clone with some description avulablel de,cription availabl~1 ,"0 description avallablel de;cription aVa1labl~1 description available I data f il es ' 0 ' n au tilus

'M ,",
,",

"

..

feature"

'",

12.4.3

Instructiuni de decizie

Instructiun ile de decizie fo losite in scripturile shell sunt i f si case . 0 instructi une de decizie permite lestarea unei cond ilii si eKecularea unei ac!iuni sa u a alleia conform cOnditiei.

"
Vom analiza instructiunea if prin urmatorul exemplu: daca utilizatorullocal esle root atunei se afiseaza un mesaj, daca ulilizatorul local este razvan se afiseaza un alt mesaj, iar da~ utilizatorullocal este altcineva, se al iseaza un mesaj specific:

" " " " "

, , ,

1 ,

razva~@anaco n da : -!u;o h cnpti~g$

cat - n if _ u; e r . ba ; h

, , , , , , , , '" "
1 I
~m ~o

I ! Ibin/ba"h

u,er - $ (whoami I test $user "root" ; the n .. eho "Bow b~for~ ~o O~ root . .. l it test $user "r~"v~n "; then .. cho ~ "0 humbl .. us .. r els .. .. cho ~ h umble u ... r .
H

., .,

. . '"'

,,, ,

ruva~@anaconda : -/u50/scnpti.~gS

bash i f _u "er . b ash

1$

humbl e u, e r.

Op!iunea - n a comenzii cat aliseaza si numarul liniei. Sintaxa i f este urmatoarea:

392

INTRODUCERE iN SISTEME DE OPEAARE

i t co nd ltle) ; t h en

2
~

acti u ne conditiel Indeplinita elif co n diti.,2 ; then acti un e condit1e2 indeplinita

else
a c ti u M co nd iti .. ne indephn, t a
fi

e ,

Cuvinte che ie predefinite SUn! i f. th en, el if , e l se, f i . conciiliel , respecliv condilie2


sunl co nditii care su n! testate. in cazul in care 0 condilie 9S!e i ndeplinitA se executil

ac!iunea asociaUt
Oupi\ cum se vede din exemplu (Iiniile 5 ~i 7), conditii le sun! exprima\e cu ajutorul utililarului test. Acesla interpreleazll condi! ia 5i i nloarce 0 dad. este i ndeplinitll sau 1

daca nu:

,
,

ruva nhMconda ; -fuMI SCr ipt, ngS teH " alfa " ra<va nhnaconda ; -/uso/scrlptingS echo
0
ra z va n @a n aco n da : -/u~ o /~ c rip t 1ng$
t ~5 t

alta

"
"alia"

, ,

.H

Ia z va n @a n aco nd a : -/u~ o /~ c rip t l n g$

~ ch o

"

Variabila $? eSle 0 variabilA predelinitA care deline valoarea de retur a ultimei expresii. Acelas i elect poate Ii obtinul eu ajulorul operalorului de test al shellului

, ,
,

r ~ z v~ n @~ n ~co nd ~ , -/u~o/~ c rip t l n g$

' ~lf~ "

~lf ..

ra.va n@a naco nda,-/uso/scripting$ ec ho


0
r& z v~ n @~n~co n da : -/uso/s c rip t lngS uzva n @~Mconda

"
- '"
[

, ,

~lh "

: -/UMI SCr ipt 1 ngS echo

"

Este obligatoriu un earacler blank (spa!iu) dupA [ !ili inainte de I ia operalorul de lest de eonditie din shell. Condilia 1010s~A i f nu trebu ie sA lie neapArat 0 condilie de lest. Se poate lolosi orice construclie care poate Ii evaluatA la un numAr. DacA acel numAr esle 0 conditia esle indepliniiil !ili se executA aCjiunea corespunziltoare, allfel nu. 1 n exemplu urm~lor, se afiseazil un mesaj corespunzillo r doar dacil ulilizalorul indicat de var iabila user are directoru l de bazil in I home (nu esle ulilizator de sistem):
L~ z v~ n @~ n ~co nd a : -/u~o/~ c rlp t i n gS

cat - n

h o rn e_U 3 e r . b a~h

, ,
" ,
~

.
3 5 6 7 6

,
1

f ' /h i n/ h .. ,h user_ " mih .. l "


if

gre p

" $u~er " letc!pus "d I gr e p " / home " , then echo " User $USQr is not home l ess . "

el.e
echo " user Suser is hom ele . "

CAPITOLUL 12. SHELL SCRIPTING


10 9
fi

393

"

,~ ~nva ft h n aco n da : '/uso/$crlptln g $ bas h h o me_ ~.er . b 8Sh , ) aml h a i u c : x: 10 11 : 1011 : Alex Mihaiuc " ,: /home/aml haiuc : /binlbash ,. miha1 , x : 10 1 4,1 0 14 : Mi h al Do b<escu "" / h o me/ mi h ai : / b ln/bash '" mtha if ' x : 1 0 23 , 1023 : Mihal fi o dan " ,: /home/ mi h"i f : / bln/bash ,~ User mlnai i. not homeleM .

echo -n "test" Se observa ca i t

testea~a ie~irea comen~i i

compuse

g rep "Su ser " /etc/ p aoswd 1 grep " ' h o me "

care verilicA daca exista utilizatorul mihai in sistem ~ i daca acest utilizator are directorul de baza i n / home (I inia 5). intruciit acesta exista, afiseazA mesajul "User mihai is not homeless.". comanda qrap af i~eaza si liniile gasite, lucru care este deranjant in perspectiva fu nctionalitatii scriptului. Solutia este red irectarea iesirii comenzii qrap cAtre / dev/ n ull.
Totu~i.
1

" "
"
,~

, , 6 , ,

r a zva n @an aco nd a : -/uMh c ript i n g$ cat - n 1 I ! /bin/ b a.h

h <>n, e_u~er. b a~h

,
,
3

u ,e r - " mi h.. i H

uzva n @anaconda : -/u90ls c ripting$ bas h h o me _ u,er . b a,h User mi h al la not homeless .

. ."
5

, ,

g a p "mi hai" /etc/p~S3 "d , gr e p " / home " ech o " User $user h o me l ess . " eloe echo " User $user h o me l ess . "

.. , "
"

/ ctev/ nu l l

t he n

Condi)ii de test Atat test cat si operatorul de cond i)ie shell ( .. 1 analizeaza 0 conditie si intorc 0 daca este indeplinit1'i sau 1 daca nu este indeplinitA. in exemplele prezentate de anterior conditia a lost sir l _ sir2 . ExistA mai mutte condi)ii , 0 parte din ca re sunt prezentate in tabelul de mai jos: 0sirx:l operatorii - a ~ i - 0 cu sintaxele respectiv Mai multeconditii pot Ii folosite simultan 101 co n ctiti e l -a conditie2 ~i co n ct i tie l - 0 co nct it i e2 . Gil-teva exemple de folos ire a condi)iilor de mai sus sunt prezentate in continuare:

,
,
,

raz v a n @a n acond3 : -/uso/scriptingS test


r~ zv a n @a n aco n da : - /u~o/~ c rip t 1 n q$
r~ zv a n @a n aconda : -/u~o/S c r1ptlnqS t ~st

-,

3.

t~t

t ~st

, w " "
" "

"' a . txt '" ",'

b . t xt

r ~ z v~ n @~ n ~co n d a : -/u~o/~ c rip t i n g$ ra.va n @a n aco n da , -/~so/scripti ng $

t@,t ; test

-.,

ruvo n h n aco nda : -/uso/ scr ipt i ng$ test

-, -,

" .

""

"

uzvan@a n acond3 : - /uso/ sc r ipt i ngS te at ". "

- "' "

39.
"
r~zv~n@"n"cona,, ' -/\lsohcripting$

lNTRODUCERE iN SISTEME DE OPEAARE


teot - f ".Kt
- it

3 - eq 4

Negarea unLJi cond iti i 59 face cu aju torul operatorului ' :


""z""n@anaconoa:-$ i t ' test 4 - gt S; then echo "4 nu e mat mare ca S" , else echo "4 .. mal mare ca 5" ; t i
2 4 nU e m31 rna"e ca 5

Operaloru l ( . )) de expansiune aritmetica poale Ii lotosi! pen\ru eva luarea unor

condi?i intr-un format asemanator C:


"azvan@anacond" , -/uso/$cript1fig$ i f III < 411 ; th"n "cho "devarat",
2

fi

aaeva r at

Mai multe datalii des pre operatorul . . . ) I Sf! gAsesc in sectiunea 12.7.1.

case
Instrucliunea case permite selectarea intre mai multe ~abloane de ~if\.lri de expresii regulate. In exemplul de mai jos se ver rtiC1!. dacii un Sir i ncepe CI.l 0 literA mica, 0 lite ra mare sau cu un numar:

, , , "

, 2

r~z,,~n@~n~conda :- /uMhcnp t inqS

,
1

cat - n

ca" e J> e qin . b~ ~ h

1 ! /binlb~"h

,
"

va r - " I\lfa " ca.e $v3r ( .. -z I _) [I\ - Z[_)

, ,

.,
e.3C

echo "li t era mi ca ";: echo "litera ma r e "; : [O - ~[_) echo "citra ";; echo "altcev a ""

'"

" "
,.

"

ruv3n@aMcond3 : -/uso/scrlpt l ng$ b3.h c3.eJ>eq!n . bash IIteu mare

Sintaxa pentru case, observabila

~i

in exemplu, este:

,
"

case v~lo ~ r ~ _v ~ri~ bila ,n sablonl) act i uni :: sablon2) actiuni ::

esa c

Cuvinte rezervate sunt case , i n, esac. Se ve rifica daca valoare _variab i l a se potrive~te cu unul dintre sablo anele ulterioare. in momentul gasirii unei potriviri se executa actiunile asociate. Acti unile asociate sablon ului se incheie cu I I (doua simbo luri 'punct ~i virguIA"). in exemplu l de mai sus, var iabi la va r se initializeaza la ~ i rul "Alfa" (Iinia 3). Dupa aceasta se verilica daca variabi la incepe cu litera micA (I inia 6), cu liter<'.i mare (Iinia 7) sau cu citra {(inia 8). $abloanele sunt date, de obicei. de expresii regulate. Mai multe detalii despre ex presii regulate se gAsesc in sectiunea 12.7.2. Caraclerul inseamnA orice ~i este lolosit ca echivalenl pentru cuvAntul cheie d e fa ul t dinC.

CA PITOLUL 12. SHELL SCR IPTING

395

12.4.4

Cicruri in shell

Bash pune la dispozilia utilizatorului Irei instrue!iuni de eiclare eu func~onal~ate sim ilara dar sintad diferita: f o r , whi le ~i d o/u nti l. VOm exemplifiea sinlaxa ~i modul de utilizare a aceslor comenzi pe un exemp lu simplu: ealeu lul sumei primelor 10 numere naturale.

Inslru cliunea for

$criptul shell pentru ealeulul sumei primelor 10 numere naturale este urmatorul:

,
,

rarifa n @a na cond3 : -!uso/scr i pt i n g$ cat -n rorl O. b ash 1 I ! I bi n/ b a"h

, ,
" 11
,.

, , , , , ,
;

,,'

,urn- O

d o n"

, ,,,,, ,, , '" "


~ urn - $ { I $ ~ um

10 ; O.

$ i) )

ech o ' Suma este '

~sum '

r~.va n h n aco nd a ' -/U$olscripti ng$

bas h fo r l O. b a$h

Suma este : 55

Dupll CUm se vede, sintaxa fo r eSle


fo r var in li sta : d o 3 acti uo! don e

""
,"
3

f o r var i n l ist3
actl un i

do ne

Varibila v ii r este fo losita: pentru a pareurge lisla element eu element. Cuvinte rezervate sunt f or , i n, d o si done . Se parcurg elementele listei (I inia 4) ~i se executa acliunile precizate (I inia 5). in cazul de lata (Ii nia 5), lolosind operatorul de expansiune aritmetiCa $ ( ( . . . ) ) se incrementeaza suma cu valoarea lui i. Ca orice alte lacilitllti shell, for poate Ii lolosit direct in linia de eomandll:

,, , , ,,

ruva n h naco nda , -/us o /$cripti ng $ t or 1 1n 1 2 3 4 : d o ech o $1 ; d o ne

Acest lucru se poate extinde si la ser iptul de mai sus eu pierderea pa1"\ialll a clarita!ii:
ruva n hnacond3 : -!usols c ri pt i ng$ s u m- a ; tor i in 1 2 3 456 7 89 1 0 ; do s um- $(($ . um +$ill : d o ne , e c h o ' Sum3 este : ~ " um' Sum3 ~ "t ~ : 55

396

lNTRODU CERE iN SISTEME DE OPEAARE

sau:

,
3
,

razvan@anaconda : -$

~UI. - O

razvan@anaconda : -$ f or i ~ sum- $IIS.um + $ill


> done

in I 2 3 4 5 6 7 8 9 t o ; do

"
2

u,va nh naco n<ia:-$ echo $sum

Usia poate cont ine orice lei de element, fie numar lie sir de caraclere:
ra,va n @anaconda , -/uso/scrlptlngS [or! i n a bc def Qhi ; do echo $i ; d o n e
abc

de! ghi

Separatorul implicit penlru lisla esle caracterul blank {spatiu}. Daca un ~ i r coniine blank, acesta trebuie eila\:
r"z""n@anaconda : -/u~ohcnp t i ng$

for i

in " abc def " 9h1 : do

~cho

$ i; don"

abc det

,
" ,

"

"hi .nv .. n @a n aco nda:'/ ~so/scrlpti ng$ [or! i n ' a b c de, ' ghl ; do echo $f ; d o ne abc det ghi

ra.vanhMconda : -/u90hcdptingS
abc def
gh i

fo~

in a bc\ def ghi , do echo 5i ; done

1 0
"

Comanda seq Rev~'!Oind la calculul sumai primalor 10 numara naturala sa obsarv!l lipsa de scalabililate a specilic!!rii manuale a elementelor listei. Acest aspect poate Ii automatizat prin lolosirea comenzii lI eq. Aceasta permite generarea unei liste de numere intrun interval dal:

, , ,
,

ra.va n@a naconda , -/uso/scrlptlng$

." , ,

, , ,
"

, ,

r~zv~n@~n~conda : -/u~o/~cr'p t i ng$

" "

, , ,

.., , , "

Cu dou!! argumente, se q aliSeaz!! elementele cuprinse intre cele doua limite_ Cu trei argumente. argumentul din mijloc (al doilea) este lolosit ca pas de incrementare. Dac!!, spre exemplu, am dori calcutul sumei primeior 100 de numere naturale am fo losi urmatorul scripl shell:

CAPITOLUL 12. SHELL SCRIPTING

397

" "
"

, , ,

, ,

, , , , , ,

f ' /b i n/b"sh

,,'

surn- O

'"

S(seq 100) ; sum- S( (~sum $ i) )

"

done
~ cho

SunM

~~ t~ :

S ~ um

uzv~n@ ~ Mcond ~ : -/uso Js criptlnqS

b~sh

forlO _s eq . bash

5um~ ~"t ~ :

5050

o altli sOlutie este to losi rea expandlirii aritmetice ca in exemplul de mai jos:
r ~ .v ~ n@~n~cond":-/U$O/$cripting$ c~t

, ,
"
"
11
Sum~

, , , , ,
1

- n forlO _ exp . bash

f ! /bi n /bash

,,'

. um - O
( (i

don ~

-" ,

0100 ; i H ) ) sum-S( (Ssum S1 ) )

"

@cho Su .... @$ t @: $ s um'

ruvan@anaconda,-/uso/$CripUng$ bas h for l O_ e xp.bash este : 5050

Se obse rva similaritatea cu sintaxa C pentru instructiunea t o!."".

Lucrul cu slstemul de Ih;liere Folosind for putem parcurg e intrarile dintr-un director at sistemutui de hsier. 0 emu lare a oomen zi i is este urmatorul scri pt shell:
,
r~z ... ~n @ ~Mconda : -/uM Js CrIptlnqS

,
~

, ,
" " " " " " " 11
'8

, , , .-0 " , , ," ,, , " ,


1 ilUbin/b a sh done echo "total

cH - n

for _ l" . ba ~ h

0,
t ,, ~

n_ $(($n
t

>0
U

@cho " - $i " eli! test - 0 " $ i " ; t h en echo '0 $i " else echo '0

-,'"'s.' ;

th ~n

" " " , " " "

"

, , , , , , , , ,
f

I~zv~n @ ~n~co n d,, : -/u ~ o Js cripting$

" n "

"

'"

'"
b~5h fo r_ h . b d ~h

do_untillO . baoh
~cho . b~,h

fo r lO.bash for 1 O_exp. b"sh forlO_seq.bash fo r _ iS.ba.h h @re.b". h hw.bash test_d ir "hilelO . b a "h

398
",
tot~l

lNTRODUCERE iN SISTEME DE OPEAARE


10

Folosire a caracteru lui (Iinia 4) inseamnll expandarea co n!inulului directorului curent Inlr-o lislA de intrAr i care eSla parcurs1l eu ajutorul variabile i i. Variabila n (Iinia 3) aSIa 10105il1l pentru contorizarea numarului de inlrar; (Iinia 5) lolosind expandare aritmelK:a. Se recomandll folosirea ghilimelelor in lucrul eu !isierals (Iinia 6) pentru a preveni aparqia caracte relor eu rol special in shell (vezi sec!iunea 12.4.2).

Instrucliunea while

Calculul sumei prime lor 10 numere nat1.Jrale folosind "'h i l e sa realizeaza eu scriptul de mai jos:
<~<van@ a n a cond 3 ; '/uso/scr i pt i ngS

cat -n

~ h ilelO . bash

, , '" " " " " "


'6

, , , , , , , ,
1

1 ! /binlb " .h
i- I

n- IO
, urn- O
whil e ten - h $n ; ,um- $ $ ~ um $1)) i") ) done

"

"

'" " "

echo " Suma este : Ssum "


I~so/scr i pti ng$

ruv a n h naconda : ' Suma este : 55

bash wh \ le10 . b a sh

Sintaxa while esta


, , cond i t i .. ; do ac tiuni done
whil~

conditie urmeaza aeeleasi reguli ea In eazul i f . E~emp lu l prezentat seaman!!. loarta mult eu un program C: inrtializari (Iiniile 2. 3, 4), eonditie (Iinia 7), aC\iuni (Iinia 8), ineremenlare (I inia 9). Se poale observa ea incremenlarea lui i (Iinia 9) s-a real izal prin intermediul operatorului de expand are arilmetiea. Comanda while eSle lolosila cu precadera In momenlui ln care eonditia eSle data de va loarea de rel ur a unei aile comenzi (de mulle on read ). 0 emulare a comenzii cat eu optiunea - [] aSle a~empl ificata in seriptul urmator:
razvan @ anaconda : -/u ~ oJ ~ cr,pt i ngS

cat - n

whil e_cat . ba ~ h

,
, "
,

,
1

f ' /b i n/ba ,h
i- 1 cat for 1 0 . ba,h I .. hi h

3 4 S
6

r@ad a ; do

@cho - @
done

$i : \t$~

i - $({SC'-I))

" "
'2

"

u<van @a n a conda ; -/uso/scr i pt i ngS b a sh " h i Ie_ca t bash I: I ! /bin/b a .h

CAPITOLUL 12. SHELL SCRIPTING

399

" ,. "

" " " " " ", , " "


0,

. um - S Ssum d o ne

,,' , '" , , , 0
s um- O

, ,, ,,

10 ;

SI II

"

"

echo ' Suma este : S5um "


cit e~te

Se observli cli se sl arSitullisierului.

in variab ila a cale 0 linie din hsiereul f orlO . ba sh pana la

Inslrucliunea unlil Comanda until esle aSemMalOare cu whi l e, doar ca in acesl caz condi\ia nu esle cea de conlinua re a actiunilor, ci este cea de opr ire . Datorita similarilatii nu vem insista: scriptul shell care ca lculeaza suma primelor 10 numere nalurale eSle prezenlal in cont inuare:

, " " "


" ,.
,. ,6

, , ,

ra,va n @a naco nda : -!uso/scriptin g $ cat -n u nti l l O.b ash 1 f ! ! b ! n /bash

, , ,-, , , , , ,

. um - O

n- 10
te~t

unt il

Sn; 0' $i) ) .um-S{ ISs um


i - $ {{ $>

" -,>

0 '

'" n n

d o n ..

ech o " Suma esee : Ssum "


-!u~olscripti ng $

ra.va n h n aco nda Su ma este , 55

bas h

un t il l O . b a~ h

Exemplele prezenlale in sec!iunea t 2.4.2 sunt pur academice. Nu exista niciun motiv inlemeial pentru a calc ula suma numeretor naturale sau a emuta comenz i existenle lolosind un script she ll. Rolul unui script she ll este acela de a lolosi cele mai potrivite utili tare existente pentru a rezolva 0 problemti.

12.5

Filtre de text

Utilitarele de liltrare a textu lui primesc la intrare un lisier text 5i olera la ie~ire 0 lorma prelucratti a acestuia. Prelucrarea poale impune schimbarea ordinii elementelor, se lec!ia anumitor elemente (I inii, co loane) , substilutia unor elemente (I inii, cuvinte, caracle re), adtiugarea de noi elemente (numar de linie etc.) ~ i alte operatii. Aceste utilita re sunt, de obicei, lolosite in tandem cu instruqiuni de decizie sau de cicl uri shel l pentru oblinerea unor inlormatii ce pot Ii utilizate ulterior.

400

lNTRODU CERE iN SISTEME DE OPEAARE

12.5.1

cat, tac, nl

Utilitarul principal in prelucrarea de siruri este cat. cat este folosit pentru alisarea unui (de cele mai multe ori) este prima comandA dintro inlAntuire de comenzi care lolosesc I . DupA cum sa precizat in seC! iunile anterioare, 0 op!iune utilil a cat eSle - n care al iseazA si numarul liniei:
li~ier ~i
r~zv~ n @a n aco na a '- fu$ o fscri pt i ng $ c~t

-n nurne . t Kt

, ,

2 ,

, , , ,

1 2

.o nn 9tefa n! a rnihae la fl-or! n cod ri n l uc i a n r a zva n t avi

Utilitarul tae (cat inversat) eSle folosit pentru alisarea unui lisier . . cu liniile inversate (prima linie ultima):
razva n@a naco naa : -fuso/scrip ti ng $ tac nurne . t Kt Uvi ~ ru va n l uc ia n , codrin e fl o ri n , ."haela $ t ~h n ia s onn 2

Utilitarul nl. 9ste lolosit pentru a

ali~a

liniile impreun1\ cu numarui lor:


nl for lO_eKp . bash

r~zva n @a n aco nd a ' -fuso/script; ng $

1 2 3 4 5 6

" / b i nf b u h 9um- O for ((i - 1 , 1 <- 100 ; 1++ )) ; do .um-S { {S s um + Sill done e c ho "SurM. eS t e : Ss m" "

5 e ,

Deosebirea lalil de cat - n eSle faplul c1l nl. nu consideril liniile goale. De asemenea, nl are opliuni penlru paginare, considerare de sec!iuni elc. care depa~esc aria de cuprindere a aceslei carti.

12.5.2

sort, uniq

Comanda lIort eSle 1010sit1l pentru sorlarea liniilor primile la intrare. In exemplul de mai jos, se realizeazll sortarea liniilor din lisierul n um e. t >: t :
, rnih~ela 5 fl o ri n r a zva n@anaconda : - fus ofs c ript i ng$ c a t nurne . tKt son n steh n ia

CAPITOLUL 12. SHELL SCRIPTING


6 cod r in , lucion A ruvan ~ tavi

401

" "
1~

1J

,. '5
1~

utvan@anaconda , -/"so/scriptingS sort codrin flo un lucian


mih~el~
r~zv~n

nume. t ~ t

"
13

s o un
s t ~h n i a

,.

t ov i

Se poate intampla ca un nume sA aparA de douA ori si sa avem nevoie doar de 0 singu rA apari!ie in iesire. in aceaslA situa!ie trebuie lolosit utilitarul unl.q sau opliunea -u la sort:
r~zv~n @~ n ~co nda : -/u ~o/s cr1pt1nqS ~ Ort

nurne 2 . txt

,
J

d~x

aliM

diM
cris ti crioti cristi
rU"~n

, A ruva n
~

" "
1~

utvan@anaconda , -/"so/scriptingS sort nume2 . n t I uoi q alex


~liM

1J

,.
'5

cris t i
uzv~n

" "
13

razvan @a naconda : -/u~ohcripting$

so r t

- u num.,2 . txt

,.
20

ahx oli na cris ti


r~zvan

..

Un exemplu util a lost prezentat in seqiunea 12.4.2. in acel exemplu se dorea aflarea numArului de utilizatori care s-au autentificat in sistem intr-o zi datA. Comanda utilizalA a lost:

r o.vo n@onaeonda : -/U$O/$cripting$ lost - 30 I grep Mon t cut - d ' sort I uniq I we - 1

- f ]

Opliuni utile so rt

Dintre optiunile utile ale comenzi i sort am intim:

- u : elimin<'i duplicatele dupA sortare; -r: sorla re inversA (in ordi ne descrescAtoare):

- t:

specifica rea separatorului lolosil pentru sorta re; implicit, sorla rea se realizeaza dupa priITtl.lI camp;

-n: sortare numerica; implicit sorta rea este alfanumericA, dupA cum se poate vedea in exemplul de mai jos:

402

lNTRODU CERE iN SISTEME DE OPEAARE

"

.. ,
IS
IS

.. "

"

" ",
7

, -, , '" 100 ,"


492

ra:van@anaconda : ~luso/scrjptjng$

sort

numere . t~t

2 101

razvan@an"conda : -/uso!scripting$ sort - n numere . txt

-3
10

17 I. ,. 20 21

J2 IS 28 1 00 492 2101

Sottate avansalii Uneori poale aparea silualia in care dorim sorlarea dupa 0 coloana
a l isierului de inlrare. Pres upunem ea avem 0 miniagenda cu persoane In care intrarile sunt 111 forma prenume , nume , numilr de telefon , adresi\ de e-mail ~i dorim sortarea dupli nume (adicA dupA a doua coloanA). Pentru aceasta yom 101 0s1 comanda:
2
~

ra<van@anaconda : -!uso/5c~ipt'ngS cat nume3.t~t Mrian,MonteanU,0111 III lll , ameex.com ilinca ,Z afi u,0711 III 112 . it@ex . com A.ndreM,popa,01l1 III 113 . ap@ex . com Dan,Md~a . 0111 111 114 . db@ex . com
raz,,~n @~ n~cond~ : -/u ~oh cnpt

,
10
11

D~n,B~de~ , 071 1

inqS III 114 . db@ex . com

~ Crt

-t - k 2 . 2 nurne3 . txt

Adri~n , Munte~nu , 0 1 11 Andree~ , Pop~ , 07 1 1

III lll . ~mhx . com III 113 . ap@e x. com Ili nc a , hEU , 01l1 ill 112 . i.~@e x . com

Am folosil argumenlul - t pentru a specif ica virgu la ca separator. Penlru sortarea dup~ o cheie specifica se fofose~te argumentu l - k . Acesta specifica de fa ce camp se incepe sortarea (aici este yorba de al doilea cil.mp) si cu ce cAmp se term ina (in cazul de fa!~ tot 2: - k 2 , 2). In caz de egaf itate , se poate afege un nou camp de sortare pr in specificarea unui nou argument -k.

12.5,3

head, tail

Comenz ife h e a d ~i tail su nt utile pentru a reline prime le sau ultimefe finii dintr-un fisier prim it fa intrare. Implicit se re\in primele sau uftimefe 10 finii. Exemple de utilizare sunt prezentate in continuare:

CA PITOlUl12. S HEll SCRIPTING

403

, , ,

r~.v~n@~n~conda : -/u$o/$cripting$

U il letc/passwd
- 0 -0

rUoJanhnacond3 ; -/uso/sc <Ipt I ng$ he a d ntvan@anaconda ; -/uso/scrlptlng$ Uil

'"
'"

letc/paM~d

letc/pass~d

Comerlzile specificate afiseaza respectiv: primele 10 linii din ullimele 10 lirlii, primele 20 de linii, ultimele 20 de linii.

fi~ie ru l /etc/passwd,

Comanda ta i l este utila penlru inspectia jurnalelor (Iog -urilor) . Jurnalele sunt de obicei fi~iere de mari dimensiuni ~i. pentru acestea. de cete mai mul1e ori este suficienta vizual izarea ultimelor intrari. o op!iune util a a comenzii tai l. este - f . Aceasta permite vizualizarea continutului unui fi~ier in timp real in sensu l ca a~teapl<"i scrierea unor noi linii in fi~ i er Si al isarea acestora pe masura ca aces tea sunt adaugate:
root@aMconda : -~

uil - f

Iv~rlloglapach ., !acc "" 5 . 1og

jntreruperea rularii comerlzii se incheie prin apasarea CTRL - C (transmiterea semnalului


SIGINT ).

12.5.4

cut

Comanda cut este utila pentru a extrage coloane dintrun fi~ier format corespunzator. Spre exemplu, daca Iolosim fisiarul prazentat in sectiunea antarioara si vrem afisarea prenumelui si a adresei de email Yom folosi comanda:
razvan@anaconda : -/uso/scripting$ cut - d > Adrian,am@ex.com , Iljf\Ca,i>~e x .com i<ndree a , a p@ex . com 5 Dan,db~ex.com

'

-f

1 . 4 < nume3 . txt

Cele doua optiuni cele mai importante ale comenzii cut sunt - d pentru a specifica delimitalorul si - f pentru a preciza cAmpu rile (coloanele) care se dorasc axtrase. In exemplul de mai sus, separatorul a lost virgula ~ i s-au retinut campurile (coloanele) 1 ~i 4 co respunzatoare prenumelui ~ i adresei de e-mail. Daca se dore~te extragerea numelui de utilizator si al directorului de baza pentru utilizatorii care au directorul de baza in thome, Yom fo losi urmatoarea comanda:
razvan@anaconda : -/uso/scripting$ cat !etc/passwd I grep !home I cut - d ' , ' - fl,6 ttp : !home/ftp 3 george,!home/students/george and"e ic : /home I Bt udents/ and re i c 5 epu u'u : /home I at udentsl I epu r as ... ~ va 1 ent in : !home!" t udent s l va lent i n , dhart~"cu : !hom ~ /"tud ~ nt " ldh~rtMc u $ c iconaru: !home!9tudents/c.conaru

Comanda de mai sus extrage utilizatori i care au directOful de baza irl /home (cot /et c!p asa wd I grep !holMl), dupa care extrage numele de utilizator si directorul de baza asociat (cut - d , : ' - r 1, 6 ). Separatorul de camp in /etc/passwct

404

lNTRODUCERE iN SISTEME DE OPEAARE

eSla " iar indexurile de cAmp corespunzatoare numelui de utilizator si directorului de baza sun! 1 ~ i 6_

12.5.5

tr

Utilitarul tr {transliterate} esla Iolosil pentru translatarea la nivel de caracter a


informatiilor de la inlrare. Actiuni posibi le care pot Ii efectuale cu ajutorul comenzii tr sun!:

translatarea caracterelor, eliminarea caracterelor care se repeta (squeeze) ,

stergerea de caractere.
Exemple de translatarea caracterelor SUrlt:
r~z" .. n @ .. naconda

: -/UM h cnpt i nqS tr a b <<< "acadae af "

,
,

bcbdb~bf

r~.v .. n h n .. con d" -/u$o/$criptin'l$ tr "c(l xyz < " acadaea f " xyxzx@xf

,
,0
"

ruva nh naco nda,-!uso/script l ng$ tr a - ' /< - z < " acadaea f "
"CAOA)<F'

..

ruva n hnaco nda : -/uso/scrlpUng$ tr '[ : l ower: ['


ACAOA~l\f

' [ ; upper : ] ' <<< " aca a aeaf"

In primut exemptu se translateaza caraclerul a in caracterul b. ~irul este transm is sub forma de here string. In cel deal doilea exemplu, avem un set de intrare (acd) ~i un set de iesire (xy z). Translalarea se face inlre primul element din setul de intrare si primul element din setul de iesire, al doilea element din setul de intrare si al doilea element din setul de iesire etc. AI treilea si al patrulea exemplu translateaza literele mari in litere mid. a- z simbolizeaza literele de la a la z. De asemenea, expres iile ( : lowe r : I ~i ( : upp e r : I reprezinta. respectiv. Iiterele m~i ~i literele mari din allabet. Utilitarul t:r:: foloseste mai multe aslfel de expresii. Mai mulle detalii puleli alia din pagina de manual sau info (man tr, info o;o:r::eutils). Exemple de eliminare a caractere lor care se repela sunl urmaloarele:
r~zv~n @~ n ~co n da -/u~ohcript>ng$

tr -,

<<< "a

> ,

b c

r~zv~n@anaco n aa

-/usohcripting$ tr - . a - z A- Z <<<

"~~

bb

ce "

In cazul primului exemplu, caraclerul spa!iu este eliminat pana la 0 singura apari!ie. OPliunea - s este lolosita pentru a specil ~a aC\iunea de eliminare a duplicatelor unui caracler (squeeze). In cel deal doilea exemplu se folose~te simultan opera!iunea de translatare ~i de eliminare de duplicate pe sirul de intrare "aa bb cc". Rezultatul este transformarea litereior mici i n litere mari simultan cu eliminarea duplicatelor acestora.
~Iergerea

caracterelor se lace cu ajutorul optiunii - d:

CA PITOLUL 12. SHELL SCRIPTING

405

,
~

ruva n @a nacon da : -fuso/scriptin g $ tr - d ' a ' bc d cb


: '/uso/scriptingS

<<< ' a b cdcba '

rHvan@a n aco~da 5 b cdcb

tr - d a ' a '

' b cd ' <<< ' a&bbccdd ccbbaa '

Op)iunea -d pri me~te un set de caractere care sunt etiminate. Opliunea - d poate Ii completatll de op)iunea - s o In ce l deal doil ea exemplu se sterge caracte rul a din ~irul de intrare iar ce lorlalte caractere Ie sunt eliminate dupliCatele.

12.5.6

we

Utilitarul we (word count) permite conto ri zarea numllrului de linii, de ca ractere sau de cuvinte dintr-un fisier text. La 0 folosire fllrll optiuni, we aliseazA alat numArul de linii cat si numArul de cuv inte si caractere:
~

ra.va n @a naco nda , -fuso/scrlpti ng $ we < for lO . b ash 8 2 4 10 2

, ,

Pentru afi~area numai a numa.rului de lin ii, de cuv inte sau de caractere. se lolosesc, respectiv. op)iunile - 1, - W, - c :
r~.va n @a n aco n da : - fusofscripti ng S ~e

-1 < for l O. b ash

," ,

ruva n @anaeo~da : -/uso/s c rlptingS

we - w < fodO . b ash

u z va n @anaeo~da : -/uso/S c riptin g S

we -e < fodO . b ash

102

12.5.7
li~ierel o r

grep

Utilitarul grep si var iantele sale (egrep. t"gr ep) sunt uti litarele de bazA in prelucrarea text. Acest utilitar permite seleclarea anumitor linii dinlr-un li~ie r text pe baza unei expresii regulate transmise ca argument. grep primeste ca parametru sirul de cautare si, eventual. l isierul in care se lace cautarea. Daca dorim sa vedem informal ii despre autenUlicarea utilizatorului adrian in sistem vom lolosi comarlda:

, ,

r~zva n @~ n aco n da

a dri a n a dri a n a dri a n

pt , / 2 p t./2 p tsfO

: - fusofscripti ngS l ast 92 . 80 . 182 . 1 58 92 . 80 . 14 9 . 92 . 80 . 14 9 . 10

"

,., , .,. . , , , '"

," .

gr e p adrian 22 : 30 09 : 10
09 : 0 ~

22 : 38 09 : 29 09:29

100 : 0 7) 100:18 )
(0 0:2 ~)

Daca. dorim sll afisam inlormatii despre utilizatorii din sistem al caro r nume incepe cu litera a vom lolosi comanda:
> ahxpo): e ox : 1 003 : 1003 : Po): e Ale x a ndu "" A
, "
~

ra.va n @a n aco nda , -fuso/ s cripti ng S cat letcf p asswd I grep ' "a ' & C : f hom.. /ale x p o): e : /bi n /ba. h a dri a n: x : 1 0 09 : 10 09 : Adrian Nistor " , : / h o m.. fad r l ~n : f b infbash am! h ai u c : x : 10 11 , 1011 : Alex M!ha!uc " " I h o m.. fa rnlh aluc : Ib;ofbash &IIM : ' : 1 0 1~ : 1016 ' Alina De&c on esc u",: fho me/a l lna : Ibin/b&Sh a nd r ewbwm : , : 1 0 31 : 1 02 6 : Andre i Bu ha i u : / h ome/ a t udent 51 and re ~ bwm : Ibi n /ba a h

406
7 "
~

INTRODU CERE iN SISTEME DE OPEAARE

~ nare1c :

leX" f : X , 1 0 32 : 1026 ' Alex Eft imie : /ho me!.t udent $/ "lex" f : loin Ib~sh x: 1 045: 1026 : Andrei Cibouru : t h ome/students! andreic : Ibin/b~. h

in cazul de falii, pentru ob!inerea utilizatorilor at cAro r nume incepe cu litera a se


folose~te expresia regulata ' a . Utilizarea ei va duce la selectarea acelor linii care incep cu litera a. {caracterul - este special ~j simbol izeazA inceput de linie}. Mai multe detali; despre expresii regulate grep se gasesc rna; jos:

gr ep este utilizabil cu foa rte multe op!iuni,


r~zvan @ a n aco n da ' -/u~o/~crip t 'ng$ c~ t

0 parte din cele rna; importante sun!

exemplilicate in conti nuare pe ntru fisierul gr ep_te s t . tx t:


q r ep_ te.t . txt
2
,
alf~

bet ..

I!.IFa BeTa

, "

Beta g a mma b e ta delta deltadd epsilo n

op!iunea - i ignon11iterele mari (ignore case) :


r a :v a n~an a conda : ~/uso/scriptingS

grep -i

" alf ~ "

<

g~ep_ te.t . txt

2
J

aHa
A1F~

bet~

Be Ta

op!iunea - v inverseaz1i. c1i.utarea (ai i~eaz1i. liniiie care nu conlin expresia de cautare):
r azva n @~n~conda : ~/uso/scripting$

grep - v "alfa" < grep_ test.tKt

AU' a 8eTa Beta gamm a beta delta


d e lt~dd e p ~ ilon

razv ~ n~ilnaconda : -/uM/ ~ cripting$

qre p - v - ,

" a l h " < qrep_ t e ,t . txt

Bet a q a mma
delt~dd

10

beta delt~ epsilon

optiunea - n af iseazli num<'irulliniei:


razv~ n @~n~conda : -/uso/scripting$

grep - n "alfa" < grep_ test.txt

1 :a l ta beta

op!iunea - w este folosit<'i pentru c<'iutarea unui cuvant intreg:


r a :v a n~an a conda : ~/uso/scriptingS

grep - w

" de l t ~ "

< grep_ te.t . txt

2 beta delta

op!iunea - r face c1i.utare recurs i ~1i. in structura de directoare:

,
, " 1

r ~ zv ~ n~~nilconda : -/u ~ of ~ criptinq $

qre p - r " for"

./for_ ls . b a sh : for i in .; do
./w hil e _c~t . bash : c~t for10 . b~. h I while ./for1 0 .b4 sh : for i. in 1 2 3 4 5 6 7 8 9 ./for l O_seq . bash : for i in $I.eq 11 001 ; ./for10_ exp , bash : for Iii _ 1; i <_ 100 ; ./if_ user . bash : echo "lIo" before me Cor

re a d ~ ; do 10 ; do do lHII ; do I alit root ."

~ i rlexpres i e

Rezu ltatul dat de utilizarea acestei optiuni pre zint1i. fi~iere l e i n care sa g1i.sit acel regu lat1i. ~i linia completM iniile comp lete din fisiere.

CAPITOLUL 12. SHELL SCRIPTING

407

Expresii regulate grep Dupa cum s-a observat. grep lolosesle un expresii regulate.
~ir

de cautare care poale avea forma unei

o expresie regulatii este un sir de caracle re utilizat pentru a se potrivi cu un aHe


de caractere conform unor reguli de sinta.><a bine precizale. 0 expresie regulata cO rltirle . caractere simple si . caractere cu semnilicatie . speciala.
~iruri

o parte din caracterele/gruparile de caractere cu semnilica!ie specia la sunt prezentate


i n conlinuare: Caracterele [ I sunt lolosite pentru a delini un seIde CEiraclerede potrivil; exemple: [ab ed ] inseamna potrivire cu oricare din caracterele a, b , e, d;

ra - z 1 inseamna potrivire cu oricare minuscula;


( O- 9a - zA- Z ] inseamna potrivire cu orice caracter allanumeric ;

r -A- Z ]

inseamna potrivire cu orice caracter mai pulin majusculele.

Caraclerul inseamna oriee caracter; Caracte rul pozi!iorl at in alara unui set de caractere inseamna potrivire cu inceputulliniei; Caraclerul $ inseamna potrivire cu
slar~itullini ei;

Simbolurile \< , respecliv \> sunt lolosite pentru a se polrivi cu lnceput si slArsi! de euvAnt;

~i ru l

vid de la

Simbolul ? inseamna polrivire de cel mull 0 data a caracterului/grupului de caractere anterioare; Simbolul l nseamnii. pOlrivire de zero sau mai multe ori a caraclerului/grupului de caractere anterioare; Simbolul + inseamnii. polrivire de 0 data sau mai multe ori a caracterului/gru pului de caractere anterioare;

I n I Inseamna polrivire de n ori;


I n, I in seamna potrivire de eel pulin n ori;
{ n, m I Inseamna potrivire de cel pulin n ori ~i cel mull m ori.

Caraclerele/grupurile de caractere prezenlate mai sus pot Ii cOr"lcatenate per"ltru ger;erarea unei expresii regulate comp lexe. Informatii complete despre comenzile de filtrare de texl falosite in shell scripting gasi!i i n paginile inlo asociate (i nt"o co re util.s ).
~,., ...ov ... aJ:lnal

408

INTRODU CERE iN SISTEME DE OPERARE

12.5.8

sed

Utilitarul " .. d (stream editor) este tolosit pentru a aplica translormAri textuale unui flux de date. in mod implicit. cile~te de la inlrare 0 linie. aplica operalia specilicala. dupa care al iseazA linia modilicatA. " .. d poate Ii cons iderat un editor noninteractiv. Aeesta aplicA un set de operatii l iecMei linii din li~ierul de la inlrare. intrucal in memorie se reline 0 singurA linie, preluerarea se poate lace pe un l isier cu un numM arbitrar de linii. Pentru a exemplilica modul de uti li zare a s ..d vom Iolosi urmatorul liSier de lucru:
2
~

e ,

u.vanhnaconaa : ' i'.ndreea popescu " li n lOM.Cu Mihai Fra ncu Calin Mtone.cu Sllvia I\sav ~ i Doina Ignat

!~so!scrlptlng$

cat se<Lex

. l~l

Sinta xa de rulare un exemplu obisnuit de rulare a " .. d este inlocu irea unui text cu un altu l:
ruvanhnaconaa;-!u$o/$cripting$ .e a ' .!l\ ll n!A LIN! ' $ea_ ex txt

2 I<ndreea Popescu
" ALIN lone.cu

( ... I

Dupa cum se observa. sinta xa de ru lare se d esle:

in cazul in care ti~ i erul de intrare li pse~te . se Ioloseste intrare standard . De eele mai multe ori, comenzile sunt date intre caractere apostrol pentru a evita lolosirea caraelerelor speciale shell. In mod implicit. sed aliseaza liniile de la intrare la ie~ i re. Penlru a dezacliva acesllLICru se lolose~te opliunea -no Sintaxa comenzi sed Dupa cum sa putut observa
~i

la exemplele anterioare. 0 eomanda se d are sintaxa

[adr esA) [functiej [argumente).

Adresa defjne~te spa~ul din fi~ ier la care se ap li ca funelia . Adresa poate Ii 0 linie a fisierului, un spaliu de linii sau 0 expresie ce identifiea linia. in acest lei:
I s/a/AI - inlocuieSle Iilera a eu A in prima linie a 1 , 10 sl al AI 10 0, $ sial AI inlocuie~le fi~ i erul ui: I~ i erului:

litera a eu A in primele leee linii ale

inlocu i e~te

litera a eu A de la linia 100 pana la sfa~itul fi~ierului ;


~jrul

lalfal s/a/A! - inlocuieste litera a cu A numai in liniile in care apare alta .

CAPITOLUL 12. SHELL SCRIPTING

409

Func!ii sed Functiile cele mai utile lied sun t prezentate in continuare. FUnc!la de substltu!le (II) a lui sed eSle s si a lost folosita In exemplele anlerioare. Aceasta loloseste ca argumente ~ i rul de inlocuit ~i cel Inlocuitor. Separatorul lolosil implicit eSle I (slash), dar se poate lolosi oricare altul:

OPliuni utile ale luneliei de substitulie sunt: g (global) - inlocuieste toate apariliile sirului de inlocuit p (print) - al i ~eaza linia la pentru lIad
w

ie~ i re ;

lolosil, de obicei, in conjunc!ie cu opliunea - n

(write) - scrie linia intr-un

li~ier

primit ca parametru

Func! ia quit (q) opre~tecrti rea de la intrare a fi~ierului . Exemple de lolosire sunt ali~area primelor N linii din l i ~ i erul de la in tra re:
ra,va n@a naco nda , -/us o /scripti ng $ se d ' 2q ' ;: Andr ee ... Po pescu 3 Ali n l o nescu
sed _e ~ t~t

sau alisarea primelor linii pana la gasirea sirului Cal in :


;:
J

ra<va n@aMco nda ; -/usols c upUn gS se d ' /Ca 1 i n/q ' sed_ e x . tx t Mdr eM p o p e scu Ali n I O n ~'c u M ihai Fra nc u c ali n Ant o n e , cu

Func!iile print ,i delete (p , i d) aliseazil, respectiv sterg linia de la inlrare la iesire.

Expresii regulate in sed Funcliile .. ad pot avea argumente. intrucat .. ad lucreaz<'i pe intrare in format text, argumentele pot Ii exprimate ca expresii regulate. Acestea sunt simitare cu expresiile regulate grep (vezi seqiunea 12.5.7). Mai mulle detalii despre acestea pute~ gasi in pagina inlo lIad, lolosind comanda:
i nfo , e d " Re gul ar
E xp re ~~ i on 5

Exemple Mai jos se pol regasi cateva exemple de utilizare a comenzii sed: translata rea ul""!..li lisier in lormat DOS (CRlLF) in lormat Unix:
,,,d ' 5/ . $// '

Se observ<'i ca se eliminA ultimul caracler de la slarsitu l liniei (in cazul de lala caracterul \ r - Carriage Return)

41.

INTRODUCERE iN SISTEME DE OPEAARE

translata rea unui fisier in format Unix in format DOS:


s e d " /$/\r/ '

Sa adal.lg3 la sfarsitulliniei caracte rul \ r .


afi~a rea

tuturor [iniilar mai putin ultimele 100:

s e d ' 1, 2800d '

stergerea spaliilor alba de la inceputulliniilor unui lisier:


s e d ' ./1 \tl _/l '

stergerea spaliilor alba de la sfaq;itul liniilor de lisier :


oed ' .1[ \t].$// '

~tergerea liniilar goale:


oed ' .1'[ \t).$// '

afiSarea liniilar care conlin un sir de cautare (emulare qrep):


.,d -n
' /reQe~/p '

afisarea iolr-un lisier a Ijniilar care con!in un anumi! sir:


sed
' /rege~/w

o ut . txt'

substitu!ia de coioane; in iisiarul de exemplu warn sa inlocuim numele cu


pren umele:
razvan@anaconda : -/usc/'eriptinq$ /\2 \ 1 / ' $ .. d_ .. x _txt Po p ... c~ And~ .... a lonescu Alin !'ra ncu Mi h ai Antone.cu Calin Mavei Silvia Ig-Mt Doina

.,,<1 ' ./ \ ([a - zA- Z [ \)

\ I I a - zA-Z I \ )

2 , "
6

in exemplul de mai sus se folose~te construclia \ [ regex\) penlru a sloca va[oarea expresiei regulate . Aceste valori sunt to[os ite, respectiv, cu ajutoru[ in constructi . i[or \1, \2, \3 etc In situatia de mai sus. numele este retinut . constructia \2 iar prenume[e In \ 1. AfiSarea se face T n formatu[ nume prenume.

12.5,9 awk
awk este un utilitar si un [imbaj de programa re fo[os it pentru pre[l.'Crarea textului pe sisteme Unix_ Exista mai mufte versiuni de awk. versiu nea cea mai intalnita pe sisteme Linu x l iind impiementarea GNU, gllwk'. Limbajul awk lire 0 sintaxa asemanatoare cu timbaj u[ C care permite operatii avasate pentru tormatarea tisieru[ui text. Denumirea awk provine de [a ini!ia[e[e ce lor ca re au proiectat limbaju[: A[fred V. Aho, Peter J. Weinberger si Brian W. Kernighan.
, http)/www.g n ~. O '\P$Oitware/g awk/

CA PITOlUl12. SHEll SCRIPTING

411

1 n forma sa cea mai simpla, awk poate fi folosit ca 0 versi une avansata a utilitarului cut. Daca. 5pre exemplu, 5e dore~te doar extragerea numelui de utilizator ~ i a directorului home folosind fisieru l /etc/passw d urmatoarele doua comenzi sunt ech ivalente:

, ,

r a zvan@ va l h a l ld : -/carte - u s o ' '1it$ r a zvan@ v a lhalla : -/carte - UM . (l"1t$ pa55wd

..

-0 '"' , -,

' '

, ,

-, '-0
,

letc/pa ~ 5wd

print SI," :", H ; ) '

l e tel

Comenz ile de mai sus rejin primu l si al sa5e lea camp al fiecare i linii din lisierul letel passw d folos ind separatorul : . OPliunea - F a awk precizeaza separalorul folos i!. Argumentele $1 , respect iv $ 6 sunt folosite per"ltru extrage pr imul si aI saselea cAmp. Un avar"ltaj important al a .. k fa!a de c u t este posib ilitalea formatarii iesirii. ir"l vreme ce c ut selecteaz<'i ar"l umite co loar"le, a wk pe rmite si preluc rarea iesirii se lectate. Astlel, daca dorim ca informalii af isate sa fie ir"ICadrate de caraclerul I (pipe), se va fo losi urmatoarea comar"lda:
razvan@ va l h a ll a : -/carte - u s o ' '1it$ awk - F , $1 , $6 ; ) ' IHC/p.o.sswd

"

' { print!

" 1 \ - 15 ~ 1 \- 255 1 \n - .

> t root
, I daemon

I/root
I /usr h bin I/bin I/d,.v Ifb l n I/usrfg a",es I /var/cache/",an

"
6

,
$

I bin I sys I sy nc I games I",an

{. .. I

Instructiunea p r i nt f folos ita In exempl ul de mai sus are 0 sir"ltaxa similara celei din C, cu absenla parantezelor. Sintaxa awk este similara sintaxei sed:
a wk [option' l ' program
In ~ truction"

'

l input fi le )

1 n ger"leral, prog ramul awk este aplicat fiecarei linii citita de la intrare. awk permite folos irea clauze lor spec iale BEGIN ~ i END care permit apl icarea instruqi unilor asociate doar la ir"ICepulul si sfArsilul prelucrarii. Astfe l, per"ltru a incadra iesirea de mai sus, se foloseste 0 comand<'i ca cea de mai jOs. Programu l se poate introduce pe mai multe lir"lii, pana la "ir"IChiderea- acesluia Iol0siOO caracteru l ' (apostro!):
ruva n @valn a ll ~ : '/c a rte-UM . git$

> BEGIN { printf

)

6

>

{ printf " j\- 15s t \ - 25sl\n ", SI, S6 ; )

{ printf > END > ' /Hc/pa ;;wd

"+ --------------- + -------------------------+\n"; "+ --------------- + -------------------------+\n";

awk -F ' : '

. - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - -- - - - - - .

7
8

I roo t

t (!~em" n
I bin

10

t.y.

I /root I/UHlsbin I /bin I/dev Ifvar/run/pulse


I/home/5 ~ ned

"
,.

( .. . I
t pulse

,)
,.

t saned

+--------- - ----- . --------------------- -- -- .

412

lNTRODU CERE iN SISTEME DE OPEAARE

awl<. foloseste . instructiuni . si comenzi similare limbajului C. Daca se doreste afisarea din 5 in 5 a utilizatorilor sistemului ~i a directorului home asocial se poate lolosi 0 comancHl, de forma:
r~zvan @ valhall a : -hchool!2009 - 2010/ u 50/cart "- U'Q . 9i t $

a .. k - F ,,- - f

pcint_ u,@ r s . awk


2

I"tc/pas~"d

. --------------- +------------------------- +
I coo t I \lame. I uucp

"

l /root I/\lsr/g ames

, "
,

I/v"r/spool/uucp
I!var/run/ lr cd I/v" rlrunJdbus I/var/llb/gOrn I/ v ar/l l b/mpd

li re
I Messaqebu .

"

Igam
I mpd

'0
11
1>

IposH;'
I pulse

I/va rispoo l /postfix


I /var/run/pu h e

+ --------------- + ------------------------- +
OPliunea - f permite selectarea fil?ier ul care sa cantina programul awk, prezentat in tist ingut 12.5.9. Variabita curr en t _ users retine numarul de utilizatori curent. Este ini!iatizata cu 0 la inceputul prelucrarii (in cadru l bt ocului BEGIN) si apoi este incrementatA pe parcursul prelucrarii liniil or. Se loloseste instructiunea i f pentru a selecta doar anumiti utilizatori.

,
, '" " " "
"

' / U5r / bin/aw~

lItGIN

{
C U Hent _ ~"e re

printf

- 0,

+ --------------- ~

_________________________

~ \n

"'

c ur r e nt _ u, ,, r , ++ , if !cu e nt _ u ,e r , \ 5 -- 1) p<intf " 1\-IS sl\ -2S ' I \n " ,


END

$1 ,

$6 ;

pri n t! " . --------------- . ------------------------- . \n" ;

listing t 2.1: A/isare ulilizatorilor din 5 i n 5 awk permile folosirea expresiilor regulate penlru seleclarea doar anumilor linii. Astlel, daca se doreste a/isarea doar acelor utilizalori care au directorul home In /home se loloseste un program ca eel prezentat in listingul 12.2. Expresiile regulate se scriu intre caracte re / (slash) similar utililarului se d. RezuRatu l rularii aceslui program eSla:
ra"van@ va l ha ll a , -/earte - uso . git$ a"k - F ' : ' - f
print - home - u~ers . ~" k

letel

pass"a
2

+--------------- >------------------------->
t ruvo n I festiva l I ntp
l alina I ttp I sanea
~ --------

, ,

e
,
! g

I/hom.. /razvan I/homelfeH ; val I/horne/ntp I/h"rne/ 41i n& I /h"rne /ftp I /h"rneis &ned
--- ---- ~ ------------------------ - +

' ~/usr/bin/ a wk

CAPITOlUl12. SHEll SCRIPTING

413

, BEGIN , , , ,. " , "

printf "+--------------- +------------------------- +\n ";

!\!ho~!

p rj ntf " " - 15$ll- 25 sl\ n" ,

$1,

$6 ;

printf

"+

--------------- ~

_________________________

";

l isting 12.2: Afisare utilizalori /home

in listingul12.2 se ver ilicii daca fiecare linie contine sirul !home. Oe lapt, lunctionarea corecta a program ului sa bazaaza doar pe varifica rea faptului ca a ~asea coloana conIine sirul Ihome. Acest lucru se poale real iza u~or in awk, dupii cum este prezentat in listingul 12.8.1 . Consl ructia $ 6 - I' \ Ihomel verifica dacii alsaselea camp al unei linii incepe cu ~irul /home.

,
3

' U u sr!bi n hwk


BEGlN

,
S6
1
END

pr i nt f

+-

-------------- ~

-------------

------------ ~

\ tl ;

1'\/hom.,!
print f - 1\-15"1\-25"I\ n " , $1, $6;

,. "

printf " . --------------- . ------------------------- .\n";

lisling 12.3:

Afi~are

utilizatori /home lolosind expresii regulale

Un all avanlaj important al comenzi i 3wk lata de coma nda cut este lolosirea unei expresii regulate pe post de separator. OP!iunea - F a awk primesle ca argument 0 expresie regulatA care este folos itA pentrlJ a separa cil.mp uri le unei linii. UrmAtoarele douii comem:i. pentru determinarea adresei hardware a interfe!ei ethO su nt echivalenle:
ra.va n @va lh a ll a , -!carte - U$ o g lt$ !.bln!ifconfig ethO I head - 1 I tr - s ' , I c~t - d ' , - { 5 OO : ld : 09 : b4 : 0c:26 razvan@ valha ll a : -!carte-uso . git$ I s b i n!ifconf i g ethO I hea d - 1 I awk - F
\ t ]+ ' ' { pri nt \$5 , OO : ld : 09 : b4 : 0c : 26

.,

I'

Expresia regulata [ \ t I ~ specifica faptul ca orice sel de spa!ii albe (caraclere blank sau TAB) va Ii lolosit ca separator. awk ofe rii un set mult mai amplu de func!ionalitali. Mai multe detalii des pre acestea despre cazuri posibile de utilizare giisiti in manualul Gawk' .
, http ;liwwN.g n ~ .O rglwflware1g awklmanua V
~i

'"

lNTRODU CERE iN SISTEME DE OPEAARE

12.6 Comenzi de lucru cu

fi~iere

Comenzile de lucru eu f~iere sunt comenzi care permit cautarea in sis\emul de fi~ie re si executarea unor acliuni pentru fisiere le cautale. Comenzile prezentate in aceasta

secHu ne sunt xargs , l oca t e

~i

ri nd.

12.6.1

xargs

Comarlda x ar gs permite Iransmiterea de argumenle unei aile comenzi, argumente ce pot Ii trimise de la inlrarea standard. Spre exemplu, daca avern un fisier ce conIine 0 lislA fisiera pe care dorim sa Ie stergem (!:Ate unut pe linia), vom lolosi comanda: x a rqll

rm f ile .txtcainexemp luldemaijos


ra.V3 fi @aMcona3 : -/uso/scrlptlng$ cat 2 tmpl . txt 3 t ,"p2 . t xt t mp3 . t xt
f! l " . t~t

ra."an@a naconda : -/uM h cupt i ngS


t mpl .t xt t mp 2 . t x t tmp3 .txt
r~zv~n @~ n ~co n d~ ' -/usohccipt>ng$ ruv~ n @anaco n da,-/uso/scr ipt; ng$

1.;

t mp .

,0

, "

XHgS rrn " f il e . t xt

11

is : t mp .:

No

ls t mp. .uch fi.l .. or dir .. ctory

In exemplu, fisierul f!e conlinea Irei nume de fisier: tmpl . t x t , tmp2 . txt , tmp3 . tx t. Folosind x args se invoca rm. Argumentele pentru rm sunt ciUte de la intrarea standard in care a fost rooi rectat fisie rul fi le . t xt . Rezultatul esta stargerea fi~iere lor t m p l . txt , tmp2 . txt 5i tmp 3 . t xt precizate in fi~ie ru l file.tx\. Daca un utilizator dore~te
afi~area fi~ierelor

ce contin siru l for va utiliza comanda:

ubunt u @ubuntu : -S grep - I ' foe '

""

ubunt u @ubu nt u: -S Is I xargs grep - I ' for '


do re~te

La lei. daca se comanda:


tr ,
- 5

generarea unei li ste a utilizatorilOf in sistem 5e poate uti liza


c ut -d ' , ' -f I <
letc/p~sswd

r~zv~n @~ n ~co n da ' -/uso/s c rip t 1ng$

I so r t

' \n ' ' ,


adr i an ahxe f alexpol:e a li M a rniha l uc [ .. ,I

Debi~ n- ex irn

""
2

ruva n hnaco nda,-/uso/scripting$ cut - d ' : ' - f I < I"tc/puswd I sort I xargs ec h o Debian-e.im ~ dd ~n ~Iexef dexpo k e ~ liM ~ m ih~iuc [ ... 1

Op)iuni utile pentru xargs sunt - d este folosita pentru a specifica de[imitatoru[ de parametri: implicit acesta este orice caracter alb (whitespaca); in exemplul de mai jos se sterg fisiere le tmpl . t l<t, t m p2 . txt ~i tmp3 . t xt :

CAPITOLUL 12. SHELL SCRIPTING

41 5

ra :van@anaconda , ~ fuso f sc r i pt i ng$ cat r i 1402 . t~t

,
2

t mpl . t~t , tmp2 . t~t , t",p3 . t x t

ra:va n~anacooda : ~fuso/scriptl~g$

I s tmp

t mp1.t> t

tmp2 . t~t

tmp3.txt
xa r g ~ ~ d ' . ' em < such t il" or diuc to ey fil~2 . txt

r a:v a nhodcoodd : -/u ~ o/ ~ c r ipt i ng$

m :

c .. noot r@mov@

' \ n ':

no

Ullima linie apare ca urmare a faptu lui ca se interpreteaza caracteru l newtine (\n ) ca un argument posibil. - 0 impune folosirea ca delimitator de argument a nul-terminatorului de sir (\0 ); acest tucru este util Tn momentul in care parametrii conlin caractere speciale (~ank. backslash etc.); este lolosil , de obicei. impreuna cu argumentul-printO la find, precum este deseris in seC!iunea 12.6.3. - I permite folos irea unui ~ i r care va Ii substituit pe parcursul comenzii cu argumenlul primit la intrare; in urmatoru l exemplu, fisierele primite la intrare sunt copiate cu extensia . bk up in / tmp :
1
r a zv a o8aod co oda : -!u ~ o! ~ c r ipting$

cdt

file3 .t ~ t

2
J

forlO . bash forlO _ ; e q . ba ; h


fo r l O_"x p . b a ~ h

ruv .. n@ .. o~cooda t H ,,3 . t x t

: ~/uso/scr ip t i ng$

xarg$ - I

~b c

cp

~bc

!tmp/ .. b c .bkup <

ruv .. n@ .. oacooda , ~/uso/scr ip t ing$ 1$ Itmp / . b k up /t enp l CoriO . bash . b~ up /t mp /forl O_e~p. bash . b~up /tmp/tor l a_seq . b ash . bkup

Se observa ca s-a Iolosit sirul . abc ca sir de substituit (prin intermediul optiunii . - r ). La aparilia acestui ~ir in comanda Iolosita de X;J.l'qs. acesta a lost lnlocuit cu parametrul de la intrare (in cazul nostru fiecare din ce le trei fisiere). Astlel, comanda
ubuntu@ubuotu : ~$ x a r g s

-, .0,

este echivalenta cu

" ",

Itmpl abc. bkup

, , ,

ubuntu @ u b uotu : ~ $ ubuntu@ub uotu , -$ ubuntu@ub uotu : - $

"

forlO . bash fo r l O . b d ~ h . bkup torlO . b ... h tor lO_s"q.b a sh .bku p forlO . b a. h tor lO_"xp . b a sh . bkup

" "

12.6.2 locate
Comanda locate permite loca lizarea de fisiere al caror nume corespunde unui anumit sablon transm is ca parametru. Comanda locate foloseste 0 baza de date constrUita cu ajutorul comenzii updatedb. Un exemplu este prezentat in continuare:

416

lNTRODUCERE iN SISTEME DE OPEAARE

.a.van@anaconaa : '/~so/sc. l pt l ng$

time <ocate strace

2
~

!~sr!blnlstrac"

/usr/share /doc/,tuce

lusr !share/doc/atrace/ch&ngelog . Oebian . g:


Ius. fshare/doc/Huce/changelog . 9<

e
,

(us. l"har ~ /doc!"tuc e /copYC1ght


u ~ r I s har~! doc! , t rae" !TO DO . gz I usr I "ha r ~ / ma n /rM.nl h t rac~ . I . 9 z ! u ~ r I " ha r ~ Iv irn /v im7 0 J ~yn t ~x! ~ t c ac~ . vim I V~ r /1 ib! dpkg / i nfol ~t race . 1 ist

"
10

" "
"
,.

rul
use~

OmO.288.
OmO.264s

sys

OmO.004.

Dupi'l cum sa vede comanda locate este marte rapid1\ intrucAt IoloseSle baza de date generataJactua lizata anterior de updat edb. i ntruciH esle pos ibil ca anu mite fi~ie re sa Ii fost ~terse de la ultima actualizare, se poate lolosi optiunea - e penlru a afisa doar fi~ierele care existA in siSlem dinlre cele cunoscule:
I~zv~n@~n~co nd ~ : -/u~o/ ~ cripting$ loc~te

-e

'tr~ce

2 , ,

lusr/bin/,t r ace
lu s rlsh~re/doc/'trac "

lusr l,h~ r ~/ d oc/'trac .. /ch~ngelog

. Deb i ~ n .

gz

lusr/.h~re/doc/otrace/ch a ngelo9 .

gz

"

(. .. 1

Comanda l o c a te eSle de mulle ori Iolosil1l i mpreuna cu xa rqa:


2
ra.va n @a n~cond~,-/uso/ser ipti ng$ locate - e .tr~ce I xargs file lusr/bin/strace : ev n - b l t LSe execuUble , Intel 80386 , ver"ion I {SYSV) , for GNulLinu, 2 . 4 . 1, dyn a"'i c~lly li nk ed uses "h~r ~ d lib") , for GNU ILl nux 2 . 4.1, "tri ppe d lu s rl s h~ r e/doc/'trac ,, : d ire ctory lusrlsh~r ~ /doc/9trace/ch&ngelog . Debi~n .gz: gzip compre Me d d~U, ,, ~s ch&ng~log.D ~ bi &n - . from unIx, l&s t mod ifi ~ d : Fri Oct 21 00 : 22 : 12 2006 , m~x compre3S1on

[ J

12.6.3 find
Comanda find esle principa la comand1l utilizala pe nlru ca uta rea in sistemul local de fis iere. Comanda realizeaz1l 0 c1'iu tare recursiva i n SlruClura de directoare si descoper1'i acele intrariin sistemul de fisiere care salisfac 0 anumitA cond~ie. . . Suplimentar, comanda fi nd pe rmite exec uta rea unei ac~ un i speci fice. Sinlaxa find eSle mai complexil. decAl a aftor comenzi si 0 vom prezenta dupa urmAtorul exemplu :
2 " , " ,
r~zv~n@~n~cond~ : -$ [end /usr/inclu d el - type [ - n a me t erm . h' - p rint lusr I inc 1 ude I asm- gener leI termios . h lusr/inc lude/ linux/t .. rmios . h

lusr/inc lude/~om/termbets . h
lusr/inc lud e/~"m/te~mlos . h

lusr/include/blts/termlos . h lusrlincl u de/"y"/termios . h

CAPITOLUL 12. SHELL SCRIPTING


a
10

41 7

/usr/include/termio . h /uu/inc l ude/termiO$.h


( ]

in exemplul de mai sus, se caut~ recurs iv in /usr/inc l ude fi~ierele (- type f ) al c~ror nume coresp unde expresiei regulate' term . h ' ~i se alilleaza acele fi~ie re (-print ). Astlel, Sintaxa find este
find director optiunL.,otr.v.re
~ctiuni

unde: direc tor este directorul in care se lace cAutarea (recursiv); opti uni _potri v i re sun t opliuni de cAutare in sistemut de fi~iere (adancimea cAutA rii. tipul intrArii, nume, delin1'itor, permisiuni etc.); actiuni reprezinta ac!iunile intreprinse in momentul gasirii unei intrarii corespunzatoare; actiunea implicita este print (de ali~are).

Optiuni de potrivire utile sun!:


tipul intrarii se precizeaz1'i cu ajutorul optiunii - type : astfet. - t ype f inseamnA un fisier, - type d inseamn~ un director, - type 1 inseamnA a legatura simbolica etc.; exemptu: afisarea legatu rilor simbolice din ierarhia utilizatorului curent:
r~'v~n@~naconda,-$

f i nd /home/ra'van/public_ htmi/ - type 1

, ) ,
&

/home/ra~van/pub il c _ ntml/pub/boola

/home/ u zv a n/pub l i c _ htmll p ict urea /home /uzvan/pub l .c_html/movi e ,


/horn e hnvdn/public _ ntmllgam ~ ;

Ihome/uzvan/pub l, c_html/wiki /horne / u zvan/publ i C_ html/ ;chool/u,o/ Cur ~ ur 1

I ]

numele intrarii se precizeaza CU ajutorul op!iunii - name urmatA de 0 expresie regu latA descriind numela; optiunea - wholen"me eSle folosita pentru potrivi re cu numele complet al intrarii (cale absoluta): exemplu: afi~area directoarelor ce contin calea' cf f':
uzv ~ nhnaconda : -S

/u"r/includ ,, /c~+/~

)
1

luar/ include/c++14 /u'r/include /c++/4 /u,r/ include/cHf4 /u3</includ,,/c " /4 /U3< / include/c' _/4

find IUSr/inelude/ - type d . 1.2 . 1 . 2Ib~ckw ~ rd . 1 . 2Ibit; . i . 2Idebug . i . 21 @ xt . i . 2/ext/pb_a oe

- "holen~me

" /e ++ / "

I ]

permisiunile se precizeazA CU ajutorul op!iunii - perm: astlel, - perm 644 va g~si intra-ri le care au drepturi de crtire 5i 5criere pentru utitizator ~i doar de citi re pentru grup ~i pentru cei lal!i; exemplu. afi~area executabilelor suidate de sistem:
~a'v~n@anacond~,-$

f i nd /bin - perm 4755

, )

/bln/a" Ibin/mount

418
" /b i n /umO\lnt /b in /ping lti n!plng6

lNTRODU CERE iN SISTEME DE OPEA ARE

timpul ultimu lui acces sau a ukimei modilic1'iri cu ajutorul op\iunilor - a min, -atime, - mmin, - mti me ; -a mi n 20 inseamn1'i eli fis ie rul a lost accesat in urma cu 20 de minute. - amin - 20 inseamna ca fi~ ierul a fost accesat in urma ell eel mull 20 de minute. - mi n +20 inseamn1'i ~ fisierul a lost accesal in
urma cu eel pulin 20 de minute; exe mplu: aflarea mai mull de 100 de zi te:
r~zv~n@anaconda : -$

fi~iere l of

modificate in urma cu

tina / home/razvan/ - type f - mtime +100

spa!iul ocupat pe disc cu ajutorul optiunii - 5i ze ; - size + 1OM va selecta fisierele


care ocupa mai mull de 10 M8: exemp lu: aflarea
fi~ i e relor

ca re ocupa mai mull de

200 MB:
razvan@anaconda , -$ fina / home/razvan/ - size +200M

de!inatorullisieru lui cu ajutorul oP!iunii - u s e r; grupullisierulu i cu ajutoru l optiunii - group. Actiuni le ce pot Ii intreprinse cu ajutorut comenzii f i nd sunt: aliSa rea liSieru lui se lace lotosind - pr i nt ; aceasta actiune este implicita; alisa rea fis ierelor lolosind nul-terminatorul ca separato r iolosind - printO; optiunea este utila i n combinatie cu argumentul -0 la xarqs ; exemplu: mutarea l isierelor . iso pe 0 noua parti~e :
ubuntu@ubuntu:-$ tina abc mv abc /mnt/haa~ - type t - name > . iso - printO I
x~ r q.

- 0 -[

ste rgerea l iSierului cu ajutorul - de le te; exe mplu : ste rgerea l iSierelor temporare din ierarhia uti lizato rului local:
razvan@anaconda : -S f Ind . -type f -name ' .- ' - de le te

exec utia unei comenzi precizate de utilizator cu ajutoru l optiunii - e xec ; sirul ( ) este utilizat pentru inlocuirea intrarii gasite in comanda de dupa e x ec; comanda trebuie sa se term ine cu ; (puoct si virgula); se recomanda ca at:!.t sirul ( ) c:!.t si caracterul ; sa lie citate pentru a preven i interpretarea lor ca niste caracte re spec iale; exemp le: - ere area unei copii pentru lisierele mai vechi de 1 an din directorul curent:
razva n @a n aconda : -/uao/scriptlngS fin d exec cp '{I' It mp / ' {) '. b~up ' , ' - type f - mtime +365 -

ad augarea dreptului de execu\ie pentru toate directoarele :


ra.va n@a naco nda,-/uso/scr l pt ingS t i nd - type d - exec chmod a+x

, {) ' ','
- al isarea l isieralor C in care aste delinita fu nctia main:
razva nhnaconda : -S find schooI/2001 - 2006_ codel - type t - name ' . c ' -exec grep - I ' int main" ' {) ' ' , '

CAPITOLUL 12. SHELL SCRIPTING

419

Actiun i asupra fisierelor gasite cu l ind pot Ii executate cu ajutorul optiunii - e xec sau prin folos irea xa r g9.

Exemple In continuare sunt prezentate cateva exemple utile de lucru CU find : editarea fiSierelor . c din ierarhia cu renta care folosesc funclia print f :
"azvan@anaconda : ~S vi Sif i nd "choo l !2001-2006_cod~! ' .c - @xecgrep - I - w ' printf ' '{ ) ' ',' ) - t yp~

f - nam@

arhivarea fisierelor mai vechi de 30 de zi le:


ra:v3n@anaconda : ~/uso!scriptingS f Ind . - depth - type f - mtime 30 I t3r --files-fr om- - -- null -c<f out.tgz

stergerea fisiere ior utili zatorului local din /tmp:


r 3< v 3n@4na conda : -/uso/scdptingS find Itmp - type f - user S(who a mil de l e t e

Informatii complete de come nzile de lucru cu fisierele se gasesc in paginile info asociate (info find).

12.7

Expandarea in shell

Oe-a lungul seC!iunilor anterioare s-au prezentat dilerite metode de expandare In shell. Expandarea unei variabile la valoarea ei. expandarea unei comenzi, expandare aritmetica. Sectiunea de lata oler;~ 0 recapitulare structurata a acestor mecanisme.

12.7.1

Simbolul $

Simbolul $ este folosrt pentru expand area unei variabile, comenzi sa u expresii si posibilitatea transmiterii rewltatulu i acesteia. Ca racterul are 0 semnificatie spec iala, drept pentru care va trebu i cilat (lolosiOO ghilimele, apostrol, backs lash) In cazu l in care se doreste folosirea sa literala.

Varia bile o variab ila are un nume ~i 0 valoare. Asa cum s-a specificat, 0 var iabila nu are tip in shell. Poate Ii interpretata ca numar sau ca sir in funclie de s i tua~e. Spre exemplu, in niciunul din cazu rile de test de mai jos nu se genereaza eroare:

,
) ruvanhnacond3 : -!usohcriptinqS test " 3 " - Sb razvan@anacondil : -/uM h cnphnqS
t ~"t

-~q

$b

420

lNTRODU CERE iN S IS TEME DE OPEAARE

Numele var iabilei peate Ii incadrat intre acolada. Acestea sun! optiunale dar sun! utile pentru a proteja numele variabilei de caracterele urmlitoare. i n exemplul de mai j05 utilizarea acoladelor duce la afisarea darita, altlet nu ar Ii fost alisa! nimic, var iabila ba
ne/iind initializa@.:

,.

r~'v ~ n h.n .. cona .. '

- /U$ohcripti n'l$ ech o S {b) ..

Folosind caracterul $ sa pot lace diverite expand<"iri asupra variabil ei:

determinarea numiirului de lite ra compun variabila:

,
, ,

~ .. <v .. n~ .. n .. co nd a

: - / uso/scripti ng S v" r - "" lf anume r. c

r a z v a n Sana c onda : -! U$ Of $ C r i pt ing S ec ho ${ fv acf


U

portiun i din numele variabilei:


r az v a n 8dna c onda : - ! U$ Of s c r i pt in\l S e cho ${vac : 3 )

, ,

" nume r ic
r azva n @ .. nd c onda a num!"
: ~ /u s o / s cr i pt i n g $

ech o $(var : 3 : S f

El(pandarea unel comen:l:1


Expandarea unei camenzi inseamna executa rea aeesleia si reline rea rezullalului comenzii. AceSlluc ru se peale lace in doua moduri:
S Icoma nda)

""

' c oma nda '

(caraclerul lolosil eSle ' - badlquo/e- se an a pe laSIa eu ~ de l<'inga lasla 1) Rez ullalul unei eomenzi poale Ii reli nul inlr-o va riabilii si folosil ullerior.

El(pandarea aritmeti ea Expandarea aritmeliea presupune evaluarea unei expresii si relinerea rezultalului aceSleia. Penln; aceasta se foloseS le operatorul $ ( ( . . . ) 1 sub forma $ ( ( exp resie ) I. Daca nu este nevoie de reti nerea rezultatului se peate folos i operatorul (( .. ) )

.,

, ,
J

r a z va n @ a n aco nd a : -/u~ o /~ c rip t 1 n g$

a_j I l a ++ )) e cho Sa

ra z va n @ a n aconda : -/u~ o h c ript1 n g$


r~'v ~ n @a n aco nd a : - /u~ohcripti n'l $

CAPITOLUL 12. SHELL SCRIPTING

421

12.7.2 Expresii regulate in shell


Shellul per mite interpretarea expresiilor regulale pentru a permile expandarea numelor de fisiere. Construc!iile care permit expand area numelor de fisiere sunt: acoladele {) permit precizarea unor optiuni penlru expandare; astlel, expresia {a , b , c ) . d sevaexpandala a . d b .d c . d ; expandarea la orice sir de caractere; astlel '.c inseamnA toate li~ie re care au exlensia c , iar a c reprezintA toate li ~ iere le care incep cu litera a ~ i se term inA in . c;
"inseamn~

? inseamnA polrivirea cu un singur caracter (oricare ar Ii acela);

I ... ] permit specificarea unei clase de caracle re; astlel, la- z] inseamnA litere mici (a - dO - 3A- D] i nseamnA lilerele de la a la d, de la 11 la D sau cilre le de la 0 la 3; I ' a- z ] inseamnA orice mai putin literele de la a la z. Exemple de utilizare a expresi ilor regu late shell sunl prezenlate in conti nuare:
ali~a rea

luturor fisierelor C din directorul curenl: Is


" .C

ubun t u~u b untu : ~S

ali~a rea

luturor fi ~iere lo r de tip png, jpg sau gil:

ubuntu@ub untu : - $ is ". (pnq , j pq , qif)

alisarea lulurOr lisierelor al cAror nume incepe cu 3 cilre:


ubuntu @ ub un t u : - $ h
(0 - 9 ) [0 - 9 ) [0 - 9 ).

12.8

Parametrii unui script shell

La fel ca orice all program. un scripl shell poate primi argumente in linia de comandA. Aceslea pot Ii lolosne penlru a oferi un mod de conligurare a scriplului in momenlul execu\iei. in C, modul in care se realizeaz~ accesulla argumentele in linia de comandA este prin intermediul va riabilelor argc si argv. Astlel. variabila a r gc indicA numarul de argumente primile in linia de comandA (incluzAnd numele execu tabilului), iar argv eSle vectorul de argumente: ar gv [ 0 I este numete execulabilului, ar gv [ I I numele primului argument, argv I argc - l ] eSle ultimul argumen t. In Bash. accesul la argumenle se realizeaza prin inlermecliul va riabilei SI . repreze ntA nd numarul de argumente, si al variabilelor $1. $2 etc. reprezentAnd argumentele elective. Ca exemplu, yom lolosi scriplul de mai jos, care nu face allceva decAl sa afiseze argumentele primite:
r ~ .v ~ n @~ n ~co n d~ : -/U$o/scripti ng$ c~t

,
l

-n

~ "g

. b a. h

' ! I tln / b ~sh

ech o Scd p tu l are Sf ar qume nte .

422

lNTRODU CERE iN SISTEME DE OPEAARE

, , , " " " " "


" ,.

, , ,-, , '" " "


;

echo "Num"l" script"l,,; este $0 . echo " Argument"l" scriptului sunt ' $@ '

..hll" teat Sf ; echo "I\rgumentu!

" -"

"

i++11

"

este S{ ! i) ."

done

raz"an@ anaconda : -/uMhcnpt ingS bash ar<'ls . ba;h alta be t a gam"" delta Scriptul a r e 4 ar9umente .

" ,. " .., "


>2

Humele scr i ptu l ui este args . t>ash .


Argument" l . . . cr i ptului sunt
' ~lf~

bet" 9"rnm" delta '.

Aegumentu l

ea t e alfa .

" 2< " "


2e
~

Mgumentul 2 .. ,c e b e ta . i'.<I.umentul 3 esc e

9""""' .

Argumentul 4 e st e delta .

in cazul exemplul ui de mai sus, se trimil4 argumente. Daca variabila argc numara inclusiv executabilul, variabila $I conl orizeaza doar argumentale. Variab ila SO contine numele executabiluluL Variabila $@ conIine toate argume ntele separate pr in spaliu (blank) (Iinia 5). Folosind variabila i se parcurg toate arg umentele primite in linia de comanda (I inia 9) si se aliseaza (Iinia 10). Se obse rva ca am lolosit construcUa $ ! i , penlru a expanda variabila i si apei variabila care reprezi nta argumentul primit din linia de comanda. Un al mod de a realiza parcurgerea argumentelor primite in linia de comanda ar Ii tost urmalorul:
i -1

, ,

> for a r g i n $8 ; do
echo " Arguffi@ntul $i @s t @ $a r g . " Ii i ")) don e

Variabilele $1 , $2, ... , $N, rep rezenUind argumenlele primite din linia de coma nda, pearta numele de parametri pozi)ionali.

12.8.1

Comanda shift

Comanda s h i ft , dupa cum i i spune numele, este folosita la deplasarea argumenleior din linia de comanda in parametri pezitiona li. in exemplu l de mai jos, se lace parcurgerea paramelrilor pozilio nali 10105ind comanda sh ift:
i _1

,
,

while

test - z $1 ; do echo " A~gum@ntu\ $; este $1 ." 111+ +)) .hi ft

CAPITOLUL 12. SHELL SCRIPTING


6 done

423

Comar"lda "hift ests responsabi la cu deplasarea sprs stanga a argumentelor unui script shell. Astlel, dupa rularea comem: ii shift , se pierde informatia despre primul argument, variabila $ # scade cu 1, var iabila $1 reprezinH!. al doilea argument, variabi la $2 reprez inta al tre ilea argument etc. Comar"lda shift poate primi un argument reprezentand contorul de deplasare. Implicit (lara argument) acesta este 1.

12.8.2 Parametri speciali


Dupa cum a lost prezentat anterior, exista variabile speciale folosite de shell pentru prelucrarea argumentelor in linia de comar"lda:
$ f reprezinh'i. numArul de argumente din linia de comandA,

SO reprezinta numele scr iptului shel l; $1 , 52, ... , $N reprez inta argumentele din linia de comanda;
$@

reprezinta lista de argumente separate prin spalii.

in alara acestor variabile mai e~ista cdliva parametri speciali, prezentali in continuare:
$? reprezinta va loarea de retur a ultimei comenz i:
$ $ reprezinta pidu l procesulu i bash curent ;

$! reprezintA pid-ul ultimului proces lansat i n lur"ldal.

12.8.3 Exemplu de utitizare a parametrilor

, , ,
J
~ ~

.!
fi.

Un exemplu util este un script shell care sa u~ureze lucrul cu comanda tind in momentul cautarii unor !isiere dupa nume. Scriptul este prezentat in continuare:
Ibin/b~"h - n~

if t en $f

2;

th~n

echo Two~ar9ument$~ o re~requ1red. ex it 1

,.
11

U'

t n t - d $1 ; then

echo
~ Kit

fi~.t_a<9uMentwis~not~~~di~ecto~y .

fi fi nd "$1 " - type f


- narn~

"
,

1J

"$2"

Listing 12.4: Fisierul myfind.bash


r~.v~n@~n~conda

-/u$o/scripting$

b~sh

myf ind.bash

. boSh"

.1"hilel0.b~. h
. /nw . b~"h

. lfo<-l" . b~"h

'"
, " ,
~

lNTRODU CERE iN SIS TEME DE OPEAARE

. /service_ ip.ba. h . /"h l e cat.bash . /us . bas h (. .. I

Se observa eli: se transmit ca argumente directorul in care se lace cautarea si expresia regulatA asocialA nLJmelui fisieru lui. in alara apelArii find (Iinia 13), se verilicil. numarul de argumente (Iiniile 36) ~i daca, primul argument este un director (Iiniile 8-11).

12.9

Funclii

La lei ca majoritalea limbajelor de program are. shell scriptingul per mite folosirea de lunclii. in general lunctiile sunl bucAti de cod lolosite pentru a separa 0 lunctionalitate sau pentnJ relolos ire (pentru a nu se serie de douA or; acelasi cod) . De asemenea, funCjii le au un rol important in marirea lizibilitalii codu lui.

in shell scripting. IUl1c!iile intervin in cazu l scriplurilor de dimensiune mai mare. unde exislll oocAti de cod care sunl to losile de mai mulle ori.

12.9.1

Sintaxa un ei fun c tii

Prezenlam sintaxa comenzii prin urmalorui exemplu. in care se poate sterge sau adauga un utilizator in sistem:

,
,

. Ubln/ba.h
it' t Mt $I - n e 1; the n
~ cho One_argument_requ l r e d : _~_or_d_(add_or_d ele t ~) .

,
6

exit 1
fi

"

usernarne_t " .tu.er groupM"", - teotgroup functio n


<>.<;1<;1

'" " " " " " " " " " " " 22
" " " "

(l

cat fete/grou p I grep ~group n ame /<;Iev/null if test $? - eq I ; then I no group addgroup $groupname echo Group_Sgro u pn~me_<;II<;In ' t_e~!"t_ " o _lt_ ~as_cre~ted. u, eradd - m - d /home!Su " ern~~ - g $groupn a me -, !bin!b~sh $u . ername e chQ u,er_$u ,e rn&me_added . _u, e _pa',wd_to_Ghan~e-p&5"Word .

.>

"

function <;Ielet e

(I

u 5e r<;lel - r $u.ername ec h o U.er_$u$ername_<;Ielete <;l ,

"
2t

c .... SI in

CAPITOLUL 12. SHELL SCRIPTING

425

"

" "

"a", .. dd " " d " ' delete ;; . ) echo " Requlred~a<gumeftt. ~ are~ ' esac

a '~ or~ ' d '

." , exit 1 ;;

)Z

listing 12.5:
roo t @ .. n .. co nd a

Fi~ierul

user . bash
b a sh
u~er . ba ~ h

: /home/ra"vanfu ~ o/ ~ cripting l

..

,0

, , , a
G

> Adding g r oup ' t"stgroup '


Done .

(G ID 103l)

Group testgroup didn ' t exist so it was cr"ated . User tutuS,," .. dd"d . Use passwa to c h .. ng" pau"ord . root@anaconaa : fhorne/ruvanfusofscrlptlngl b ash user . bash a User test us er deleted .

"

in exemplul de mai sus func!i ile sunt add si delet e ~i sunt folosite. respectiv, pentru a adiluga si a elimina un utilizator in/din sistem. Sintaxa unei delinitii de lunctie este:

,
3

funcoon num" funco.. cod .hell

(I

Se observa ca 0 funqie shell are un antet ~i un corp. in antet se prezinta numele func!iei (nume _ functie ), iarin corp se regasesc comenzile ce se executa in momentul apelarii luncliei. Cuvantul f un ct ion este cuvant rezervat ~ i poate Ii omis. Astlel. olunclie definilii:

, ,

function tutare II

poate fi del inila

~i

astfel :

, ,

t estare ()

Pentru a apela 0 lunctie se 101 0se~le direct numele lunc!iei urmal de paramelri. exact ca i n cawl apelului unei comenzi.

12.9.2

Parametrii unei

func ~ii

in mod evident, 0 func!ie poate primi ~i argumenle. Modul de delinire luncliei nu se schimbA; altlel spus, inlrun shell script 0 lunctie nu are parametri fo rmali. Totu~i , modul de apel se schimbA prin precizarea parametrilor penlru luncl ie. Pentru a exemplil ica modul in care se transmit parametrii unei func!ii vom lolosi un exemplu de calcui a sumei unor numere naturale transm ise ca argumenle functiei
sum-f u nc :

426

lNTRODU CERE iN SISTEME DE OPEAARE

,
~

. ~/bjn/bash

f unction , ui'rLfunc ()

,
'" " ,.
,.
" '"

, um- O
whil e
t .,t

- z SI ; d" ,um- $S , um + Sl)) shift

done

sum_ func 1 2 3 4 5

"

echo

' Sum'~Ssum '

sum_ tunc 2 3 S 1 II 13 l"J 19 aCho Sum : ~S.u m

listing 12.6:

F i ~ i erul

sum- f u nc . bash
surn- fu nc . ba,h

r~'v~n@anaco nd a ; -/u$o/$cripting$

b~. h

2 "

Sum : 15 Sum ' 77

Se observa col argumentele unei tunclii se obtin tot folosind parametri pozitionali (51, $2 etc. ), Variabila $I reprezinta numarul de argumente transmise func!iei. Variab ila so riml":me neschimbatA $i reprezinla numele scriptului. De asemenea, sa peate lolosi comanda shi.tt. in momentul in care functia se intoarce, valorile parametrilor pozitionali sun! restaurate. Numele lunetiei este re!inul in variabila FUNCNAME.
dore~te

Variabila sum a lost dafinitA in cadrul funCliai si asta viz i bil~ si in axtarior. Dac~ sa ca 0 variab ila sa fie vizibila numai in interiorul unei funet ii aceasta trebu ie prefixata /olosind cuvil.ntul cheie local.

12.10

Scripturile de pornire Bash

Scripturile de pornire Sash sunt fisiere intepretale la pornirea unei sesiuni shell. Acestea se ocupa de aClualizarea variabilelor de mediu si de rul area unor comenzi personalizate de utilizator; un exemplu 11 constituie config urarea de alias-uri. Sesiunile de shell pot Ii clasifiCate in: sesiuni Interactive/non-Interactive dupa cum perm it sau nu rularea de comenzi prin prazantarea unui prompt utilizatorului; 0 sesiune noninteractiva aste, de ce le mai multe ori, folosita pentru rularea unui scr ipt shell 5esiuni de autentificare (Iogin)/non-autentificare (non/ogin): se5iun ile de emulator de term inal (qnom.. - t .. rminal, konsol .. , xt .. rm) sunt sosiuni nonlogin Fisierele de porn ire sunt interprelate de sesiunile de shell interactive in modul urmator: 0 sesiune de shell login va interpreta, in ordine, lisierele letelprofile, apoi ~ I . bash-profi le, -I . ba sh_logi n si ~ I . prof i le ; la incheierea sesiunii se interpreteaza lisierul ~ / . bash_ l ogou t

CAPITOLUL 12. SHELL SCRIPTING

427

0 ses iune de shell non-login va interpreta oomenzile din - I . ba.shrc Fisierul - I . bas h rc este lisierul recomandat pentru personalizarea sesi unilor de shell ale unui utili zalor. intr~at un shell de login nu interpreteaza -I .bashrc, liSiert.J1 - I . ba.shJ>rofi 1e va contine, de obicei, 0 linie de lorma:
2

I include . bashcc If I t exiots if - f -I . ba ~ hcc I : then -/ . b a shrc fi

12.10.1

Variabile de mediu

Dupa cum a lost specilicat anterior, unul din roluri le importante ale sc ri ptur ilor de pornire shell este conligurarea var iabilelor de mediu. Variabilele de mediu sunt var iabile care alecteaza modul in care un proces ru leaza. in mod obi~nu i t, in sistemele Unix. un proces mo~tene~te variab ilele de mediu ale parinlelui sau. Astlel , pentru procesul asociat executiei unei comenzi. variabilele de mediu sunt cele ale shell-ului. De cele mai multe ori, va riabilele de mediu sunt oonligurate in scripturi le de porn ire ale Bash. Declaratia unei variabile de mediu se face in lormatui
expoct VARIABLE - value

Daca nu se precizeaza e xpo r t , atunci variabila nu va Ii mostenita de procesele liu. in mod obi~nu it , variabi lele de mediu SU l1t denumite cu majuscule. Vizual izarea variabi lelor de mediu existente la un momel1t dat se real izeaza cu ajulorul comenzii anv sau sat:
~

ra<van@ana cond3 ; -/USo/ s cc l pt l nqS env SSHJ,GENT_PID- 7985 TERM- xtec m SH ELL_ /b i n/ba,h

"

( ... I

Exemple de variabile de mediu sun\: PA TH reline 0 lista de directoare lolosile de she ll penlru a 9as i executabi lele asoc iale come nzii; lista este sepa rata pr in , (doua puncle); daca 59 doreste adaugarea directorului - Ibi n la variabila de mediu. se lolose~te comanda:
, , 7 razvan@anaconda :- fu , o/ , c ci pt i nq$ @cho $PATH /uo< Iloc a l/b i.n : 1 usr Ibin : !bin, Ius c Ibi nl x II : / UH 1 \lames uzvan@.onaconda : -/uso/,c r iptin\l$ @Kport PATH _ $P AIH : -/b in cuvan@anaconda:-fu$o!sccipting$ echo $PATH lusr/local/b l n : lusrfb i n , /bill : lusr/b1n/~ II : / u sc/g & mes : /horne/ru v 3 n/ bin

HOME reline directorul de baza al utili zalorului curent USER este numele utilizatorului cu renl EDITOR este editorul implicit

428

lNTRODU CERE iN SISTEME DE OPERARE

12.11
12.11.1

Studiidecaz
Contorizarea numarului de utilizatori autentifica,i in sistem

Folosind cu nostintele din acest cap itol, se poate rezolva coreet problema contorizllrii numarului de utilizatori autentilica!i in ziua de luni in sistem, problema propusa in secliunea 12.3.4. Solulia este prezentata in conti nuare:

,
, ,

, '/bin/ba , h u , er_ day " Monday case $u , U_day in " Mon day " I day_ last _ "Mon" ;;
' Tu ~ sday"1 d a y _h st _ "Tu~" ;;

,
"
7

" ,0 " ,.
,J

" Wedn esday " ) day_last _ "Wed" ;; " Thursday " ) day _ last - " Thv " ; ; " ""!d~y ' l day_ last - "F "; ";; "SHurday " ) da y_ hst - " Sat ";; ' Su nda y " ) da y_la, t - "Sun" ;; ., ech o " ~l_lnva li da" ; exit 1 ;;

" ,.
"

h , t

h~ad

,.
.., done

- n - 2 I while cead u s er term ip d a y oth"c , do if t e st $d a y _ $day _1a~ t ; th e n " eho - $u ,,, c ",

I sort - u

"

wc - 1 Listing 12.7: Fisierul count - Iogi n.bash


bash coun t - l ogin . ha ,h

Iazva n @a naco n da : -/u~o/, c cip t 1ng$

linia 3 deline\lte va riabila user_day lolosita pentru a retine ziua despre care dorim informatii (generalizal). Aceasta va Ii data in lormatul complet pentru a avantaja utili zatorul. liniile 5-t4 se ocup<'i de traduce rea zi lei in lormatullas t ; ziua in Iormal ul l ast {prescurtatj eSle relinul<'i in variabila day_ last . liniile 1620 reprezinta , de fapt, 0 comand<'i inlanluita. comenzii sunt: Componentele lanjului de

l ast - aliseaza informatii despre utilizalorii aulentificali in sislem; head -n - 2 - reline primele linii de la inlrare, mai pulin ultimele doua: este nevoie de acesl lucru deoarece ultimele doua linii dale la iesire de last nu $unt utile: ciclu l wh ile esle lolosit pentru a citi, lolosind read. diversele campuri ale lieearei linii date de last: numele de ulilizator, terminalul asocial. adresa IP de conectare, ziua in care $-a real izat autentilicarea; variab ila other, l iind ultima variabilll. retine restul de inform alii pana la sla~itull i n i ei (inlormatii eare nu intereseaza): daea ziua corespunde zilei relinute in variabi la day_ l ast atunei se aliseazA la iesire numele de utilizator:

CAPITOLUL 12. SHELL SCRIPTING

429

sort - u - sorteaza si retine in mod unic liniile primite la intrare ; in cazu l nostru aceste linii sunt ch iar cete afi~ate de cic lul wh i l e, adica utitizatorii care s-au autentilicat in sistem in zi ua data de variabila u ser_d a.y ; we: -1 - contorizeaza numarUIUi de linii lurnizat de so rt -u; rezultatul este numaf\.ll de ulilizalori dislinqi ca re s-au autentilicat in sislem in ziua de data de variab ila user _da.y .

12.11.2 Schimbarea promptului shell


Promptul este sirul de caractere olerit de shell unde utilizalorul poate introduce comenzi . In Bash, un prompt care se termina in caracterul $ reprezinta 0 sesiune de shel l a unui ulilizator neprivilegial; un prompl care se lermina in ca racterul f esle asocial unei ses iuni de she ll a utilizatorului root. Aspectul promptul ui este controlat prin intermediul unei variabile speciale, anume PSI. Aceasla conlroleaza modul in care promplul esle oleril utilizalorului. Comanda e ch o permite inspectarea var iabilei:
r~zv~n@~n~cond~ , -$ ~cho

$PSI

\u@\h,\w\$

Se observa ca var iabila cuprinde 0 se rie de caractere speciale cilate cu ajutorul

bacl<.slash:
\u inseamna numele utilizatorului; in exemplul de mai sus se traduce in sirul
razVan

\ h inseamna numele sistemului


\ w inseamna alisarea direclor ului curent , cu abrevierea directotului de baza la

caracterul \$ inseamna # pentru root sau $ in rest

Promptul poale Ii schimbat la un sir de caractere simplu:


r~zv~n@~n~cond~ : -$

PSI-"prompt : "

prompt :

Promptul Ii personalizat 5i fOlos ind 0 serie de cametere speciale ca in exemplele de mai jos:

prompt : echo PSl - " \u - Ih[\dl\$ " PSl - \u-\h [ \d [ $ prompt : PSl - "\u-\h[\ dl\$ "
razvan -a n~condd[Pri

, 8 ,
10

Sep 14 1$ PS1 - -\ u +\h \W (\111u~ol -/u~o/convl

r~zvan'anacond"

(lS : OS l cd

r ~ zv a n' a nacond .. u~o

(IS : OSlcd

" ,.

ruva n+ a naco nda conv (la : 091

Secvente spec iale care au lost lolosite in exemplele de mai sus sunt:

43.
\d

lNTRODUCERE iN SISTEME DE OPEAARE

inseamnli data curenta

\ 1'1 inseamna timpul curen!


\IY inseamna dire<:torul curent ca si cale relativa tala de directorul home (\w
afi~aza

calea com pi eta)

o liSla comp lel1i eu secvenlele speciale de personalizare a promptului sa poale gasi


on line',

Variabila PS l eSla del initA in l et e/ pro f ile $i ~/ .b "s h rc . Penln; configurarea permanenta a acesteia se recomanda uti lizarea fisierului ~ / . bashrc.

Foloslrea de culorl in prompt Promptu l poate Ii colora\ prin lolosirea secven!e i speciale \e [ . Astfel, daca sa doreste

alisarea unui prompt de cu loare rOsie. se loloseste comanda:


rnva nh naconda , -/uso/c onv$ PSI " \e [0 ; 3 )m\u@\ h ; \ w\$ \e 1m"

Pentru obUnerea unui prompt de culoere verde comanda asle:


.a'V3 n @a n 3co nd 3 : '/~so/conv$

PSI " \e [O; 32 m\ u @\ h ; \ w\$ \e[m"

Seeven!e[e speciale \e [x ; y m ~i \e [m delinesc spa!iu[ de ap[ieabi[itale a[ unei eu [ori. Secventa x ; y def ine~le eulearea u ti [ izal~. Secven!e posibile sunt:

O; 30 -negru O; 31 -rosu O; 32 -verde o ; 3 3 -galben 0 ; J 4 - albastru o ; 35 - magenta O; 36 -eyan O; 3? -alb

In lisla de mai sus " are valoare o. Se poate folosi valoarea 1 pe ntru verSiunea deschisA a eulorii. in mod evident. se pot asocia euleri dilerile penlru eemponentele premptului. ca In exemplul de mai jOs:
r a z."a n @an aconda : -$ P S! "\e 10 ; 36m\ u \e [m@\ e [0 ; 34 m\ h \elm : \eI0 ; 31 m\ ,, \e [rn \ $

in exemplul de mai sus. in eadrul promplului. numele uti[izalorului va Ii a[i~at fo[osind cyan, numele sistemu lui [o [osiOO albastru , iar numele directorului curent folos iOO rosu.
' httpJltldp,orgMOWTOlB aoh. P rompt HOWTOlba.h prompte.capeuqu.nce .ntmt

CAPITOlUl12. SHEll SCRIPTING

431

12.11.3

Batch scripting in Windows

1 n Windows, scriplurile shell au ca echivalent scripruri balell. Un script balch are de obicei extensia . bat. Programul folosit pe ntru ru larea scripturilor batch este cmd (interpretorul de comenzi pe Wi ndows). La fel ca un script shell. un sc ript batch permite execu!ia de comenzi native Windows si programarea cu aj utoru l variabile lor, a instruC\i unilor de decizie ~i a instrucliunilor de cic lare.

Comenzl Windows Rularea unei comenzi in Windows se rea lizeaza prin intermediul interpretorului de comenzi Windows. Pentru pornirea acestuia, i n Windows XP trebuie pornita aplieatia Command Prompt: Slart>AII Programs->Accesories-> Command Prompt. 1 n afara comenzilor obisnuite pentru lucruf cu sistemul de /isiere (di r , ed , mkd ir, rmdi r, del, eopy, move etc.). exista si alte comenzi utile. lista cu toate comenzi le Windows se poate obtine lolosind comanda hel p :
,
~

C : \D"c um ~ nt " and Se tting ' \Razva n . RAGNAROK>he lp FOr mOre information on ~ specific cOrrrn.'lnd, typ e HELP command-Mme MSOC Dis pl ays Or modIfIes file ext ~ n"ion aSSOCIatIons .

," , ATT R1B BREAK


" "
Ci'oC LS

Schedu l es command ,
D i.pl ~ys

~ nd

p rogr ~ rns

to r un on a compu t e r.

or ch a nges fil e

~tt ribu te .

Set. or c l ears exten d e d CTRL+C c h ec H ng .

Dis pl ays or mod i f i es access contro l l Ists {ACLs] o{ {lles .

" "

I ... ]

In tabe lul t2.2 este prezentat un tabel cu comenzile utile Unux ~ i echivalentul lor in WindowS:

Operatori Interpretorul de comenzi Windows are, asemanator interpretorului Bash, operatori de redireetare sau de eomunieare intre procese. in exemplul de mai jos dorim sa retinem in fisierul del . t x t in /ormalii des pre eomenzile eare se oc upa eu stergerea de inlormatii:
C : \D"c um ~ nt'

and Se tting , IRazvan . RAGNAROK>he lp I fi.nd ' t r

(Ddl~l H e

>

,
,
6

d el. txt C : \Oocume n t. "nd Settin9.\Razv~n . R AGNA ROK> ty p e del .txt DEL De l ete. one or mor e files. ERASE De l etes one or more fil es .

, ,

t,Aan

Cre" l es , changes , Or deletes t n e volume label of

di s~ .

432
10 (

INTRODUCERE iN SISTEME DE OPEAARE

Variabile

Ca si in Bash, variabilele nu au un tip. Definirea acestora se realizeaza cu ajutorul comenzi i set :

, " ,

C: \Document.

~nd

Sett'ng.\Razv~n . RAGNAROK>.et

aa 3

C : \Document. a nd S",tti.ng.\Razvan . RA(;tlAROK'echo h l

Afisarea conti nutul unei variabile nu se mai real izeaza prefixarld-o cu ajutorul caracterului $ , ci fo losind caracteru l % inainte si dupa numele variabilei. Ca si In Bash. comanda set este 101 05ila si pentru afisarea variabilelor curenle:
C : \Docum ~ nt"

and s e tt'ng s \Ra<van . RAGNAROK>. e t


~nd

>
"

~- 3

ALLUS ERSPROFILE_C : \Documents


APPDA TA - C'\DOGume nt~

Se ttinq.\lI ll U... r.

dnd Se tt 1ng ~ \Razvan . RAGNAROK\l\pphc~ t 10n Da t a

, " , " 10
11

ComrnonPrograrnFil .. , _C : \Progcam File5\Common File, COMPUTERNAME_RAGNAROK ComSpec - C: \W1NDOWS\synemJ2\cmd . exe FP NO_ HOST_CH~CK - NO HOMEOR1VE_C : HOMEPI>.TH _ \Documents and Settings\Ruvan.RAGNI>.ROK
(.

Varlabil e de mediu DacA in Bash variabilele de mediu sunt definite i n fisierele de porn ire, in Windows trebuie lolosita 0 lereastra de contigurare. Pentru accesul la aceasta se folose~te: cl ick dreapta " My

Compufer,.Properfies->Advanced->Environmenf Variables.

Variabila PATH de!ine, ca si in caz ul Bash, lista de directoare ale c<'iror executabile pot Ii rulate din linia de comand<'i. $pre deosebire de Bash, separatorul folos~ este ; (punct si virgu la). ln exemp lul de mai jos se adaug<'i directorul D, \mybin la ca lea de executa bi le:
2 " C : \Documen t, a nd Setting,\Razvan . RAGNAROK >ech o \PATH\ C : \p r og ram f i l e. \ imagemag ic k- 6 . J . 4-ql 6 ; C: \P rogram F Ues \MiKTeX 2 . 6 \ rni ktex \bin ; C: \WINDOWS\.yotern32 , C : \WINDOWS ; C : \WINDOWS\Syotem32\libem ; D: \Soft"'are\ .wftool. C : \Doeument. and Sen 1 ngs \RU van . RII(;NIIROP .et PII TH - \P II TH\ ; D : \mybl n \
C : \Ooc~ment. a nd Settlngs\Razvan . R,II(;NI>.R,OPecho \PAT~\ e : \program f i l ee \imagemag i ek - 6 . 3 . 4-ql 6 ; C : \ P rogum f i l ee \M. KTeX 2 . 6 \mikte, \bin ;C : \WINDOW S \ ~ y't ern 32 ; C : \ Ii IN DOW5 ; C : \WINDOW S \ Sy,tem32 \ libem ; D : \ 50 ft ",ar~ \ , wf to ol, ; D: \ rnyb i n\

,
"

CAPITOlUl12. SHEll SCRIPTING Programarea batch

433

Dupli cum sa precizat. echivalentul scripturilor shal l din linux su nt scripturile batch d in Wiooow-s. De ob ieei. aoostea au e~tensia . bat . E~emplul eel mai simplu de script batch este prezentat mai jos :
>
J

"
6

e : \OOCUME - l \RAZVlIN-I . RAGnyp~ hI<. bat @~c h o off ~ c ho "H ~ ll o . World'" C : \OOCUME-l \ RAZVAN - l . RAG>h w " He ll o , Wor lo!"
b~t

in mod implicit, ru larea unui script batch duee la af isarea comenzi lor intAlnite (ech ivalent eu set - x din Bash). Pentru a preinta.mpina acest lucru se foloseste d irectiva @ec h o
of f.

Un emulator al come nzii dir lolose~te for si este prezentat in continuare:

>
J

c : \[lOCUMt-l \ll.AZVI\N- I . RAG>type oil r . b a t @echo off for Hf i n ( 0 1 do echo Hf


l . RAG>dH . ba t

" c : \OOCUME - l \RAZVAN . g tk - boo km ~ r k " d ~l. t xt

,0

" ,. " ,.

d i r. bat qsview3 2 . ini hw . bat logtlle . txt PUTTY .RND


.,, ~ scp .IWD

vlml n fo

InstruC!iunea i f are 0 Sintaxa asemlinlitoare inSlruC\iunii echivalente din Bash:

,
,

C : \OOCUME - l \ RAZVAN - l . RAG>set

~~3

C : \OOCUMi.:-l\RAZVAN- l .RAG> I ! \a \ EQU 3 ech o " true " " tr u e "

Mai multe des pre comenzile instruc?unile if Si for se pot afla prin eonsu ltarea informa\iei de ajutor: i f /? ~i for /?

12.11.4

PowerShell pe Windows

PowerSh e ll este un nou interpretor de comenz i dezvoltat de Microsoft. Se bazeazli pe programa re orientatli obiect ~i pe versiunea 2.0 a platformei de dezveltare .NET.
Wiooow-s PowerShell este gratis; poate Ii descllrcat de pe siteul asociat' . Window-s Powe rS hell urmeazli, intr-o oarecare mlisurll, ideea din spatele utilitarelor shell Unix, anume de a realiza sarcin i complexe prin combinarea unor componente deja existente. Aceste componente sunt denumite cmdlets ~i sunt, de tapt, in stante ale unor clase .NET. Deosebirea de shellur ile Unix este faptu l cli in loe de a crea 0 bandli de transmitere a informa!iei in format text (pipel ine), cmd let-ii com unicll folosind obiecte.
' http;llwwN.mic ro.oft.com/window e rve r2003ft "" hno\:;>g ie $lman agem .n tlpow.~ he l Vdetaul t.mspx

'"
Cmdlets

lNTRODU CERE iN SISTEME DE OPEAARE

Cmdlet-ii reprezint<'i blocurile de bazi!. pentru Powe rShal1 echivalenl cu comenz ile de baza Unix folositede Bash.

Astlel, pentru listarea proceselor din sistem se

folose~te

cmdlet-ul qet-proce ss.

Acesta prezintl'l al iasul pa 5i aSle echivalent comenzii P" din Linux. Pentru listarea cont inutului unui director se foloseste cmdiet-ulget - chi.lditem cu aliasul.ls_
Daca, spre exemplu, un ulilizator darasle omorflfea proceselor al caror nume incepe cu litera p , sa 101 0$9$le comanda:
PS>

get - proce ,s p. I , top- process

Folosind concepte din programarea orientata obiect, se pot extrage campuri din
rezu ltatul unei comenzi. Astlel, daca se dore~te ellerea l impului ultimu lui acces penlru un directoru l Cookies , S9 foloseste comanda:
PS> $ Iget - i tem
Cookie ~ 1

. hH~CC~ ~ 5 tirn "

Pentru af isarea proceselor din sistem in forma tabelara se poate folos i comanda

, eo> Get-P r oc,,"" , " , 2876 ApntEx m ." 2044 Ape! nt , 3448 calc
N~m ..

Forma t- T~bh

",

N~ m "

1624 CFSvc.

Variabil e -? i slrucluri d e conlrol PowerShell permite crearea de scripturi. Ca ~i Bash , printre facilita!ile precizate se numara complelare automata, utilizarea de variabile, slructuri de control ~i lunc!ii. Spre deosebire de Bash, variabile le PowerShel1au un tip:

PS C : \> $b FS C : \> $b 3 . 14\5926

3.14\5926

PS C : \> $b.Get Type (l . Name

In Windows PowerShell, echivalenlul pentru for (din Bash) asle foreach:

'" " " " '"

" , , , '" " "

C : \WINOOWS\.y.tem32> 1 .. 10 I

fo r e~ch

{ $_ '

2 I

CAPITOLUL 12. SHELL SCRIPTIN G

435

Inform alii complete des pre Windows PowerShell se gas esc in documenta)ia care sose~te cu pachetul de instal are. Informa)ii complete ~i tutoriale sed se pot gasi la ortl irte ' .

Cuvinte chele shell bash script shell read line editarea comenzilor istoricul comenzilor reverse search autocompletion oomenzi irtterne (bu ilt-irt) oomenzi externe shebang echo print! set exit read operatorul de comurtica!ie I variabile shell caractere speciale shell: $, #, " " \, (, ). , . &, I, ;, I, 1 . ? blank il. test, comanda de test 1.. lor, whi le, until Iillre de text: cal. taco nl, sort. uniq, head, tail, cut , tr, grep expresie regulata (pattem matching) xargs , locate. find shell: expandarea variabiiei. substitujia expandare aritmetica
$O.$n.$#.$~, $? , $$. $ !

expandarea comenzii,

parametri i unui script shell; eXJXesii le funC!ii shell scripturi de initializare: .bashrc,

redirectarea intrarii/iesirii/erorii standard .bash..J)rofile, l etc/bash_prolile operatorii <. >. 2>, &>, here document. here string operatorii , < operatorii de secven~ere ;. &&. II variabile de mediu batch scripling power shell; cmdlet

lntrebat l I. Ca re din urmatoarele nu este un intepretor de comenzi? o Bash

PowerShell Command Prompt

I http ;li.ed.wu,eefo 'II". netl9'abbag~uto,;al sl

C JPYnghted matanal

436

INTRODU CERE iN SISTEME DE OPERARE

o Flash
2. Ce comand1l esle folosita pentru caularea lmei
e~pres ji

regulate inlNm lisier?

0"
o grep
Owl

sort

3. Care din urmatorii operatori esls asocial eu un here documenr?

o,
01

~>

0
4. Care din urmatoarele op!iun i testeaza ega lilatea inlre doua

0 ,H $, 0

", -- "
" --

-- "
J
$b

~i ruri?

0 test $,

'b
-0

O J

5 Care 9s19 Bfectu. comenzii lIort

fil.R.tx t?

Q sorteaza liniite nevide din fi~ier o sorteaza liniile vide din


fi~ier

o sorteaza liniite unice d in fi~ ier


o sorteazA liniile in format numeric

6. Ce ulilitar NU

va ajuta un utilizator sa substituie caracterul a eu A intr-un fi~ ier?

vim

o o

cut
sed

0 "
7. Care din urmatoarele NU esle un avantaj al unu; shel l script? o viteza mare de execu!ie

automatizarea sarcinilor

o folosirea de componente exislenle o depanare lacila 8. Care eSle utilitatea shebang ( # ! )? o permile editarea lInlli script shet l C JPYnghted matanal

CAPITOLUL 12. SHELL SCRIPTING

437

o o o

permite asoc ierea de d repturi de executie unui script shell prezintA ca lea cAlle utilitarullolosit pentru rula rea scriptului esle 0 linie de comenlariu speciala intr-un script shet l

9. Care din urmatoarele NU esle 0 inslrucliune i n Bash?

0 for 0 whi l e 0 u nt il 0 r e pea t


10. Ca re din urmAtoarele comenzi NU ahseazA intrArile din direcloml curent?

0 "

for i i n . ; do e cho $i ; do ne fin d


i s

o o

- min de p t h 2 - t yp e f

C JPYnghied matanal

438

INTRODU CERE iN SISTEME DE OPERARE

Tabelul 12.1: Condrtii in shell

I 1 lisier I 1 lisle!
i i i i i i
fi~ier

~
.m

I e.~_l~ Tisier

-,

i~
asia ]Ide 0

"

I -0
-Ilt

I'

",I"

I ~ Ii i I ~ Ii i

ce Ii i I eSle ulilizatorului i I lisier eSle mai

I-Gf i si e r
" -o,
f i sier2 f i si e r 2

recent decal al doilea


-ot
Illisier I

- g'

~
I -" I -"

"
I"

, . , ~
.

recerll

" -0'
- g'

12 numere
I 2 Ilumere
I caraclere """, I'
caraClere

~"~~~~~;:'~'~:~:':.' ml' F=~


I
~maimic

-It

~all
"
il~

il

~rnaimic
I si rl
-

- Ie
si r 2

I ,.

leu al doilea
ilHunli

,,,,,I "

nu .

I"" ,.

C JPYnghted matanal

CAPITOLUL 12. SHELL SCRIPTING

439

Ii i

i i I ,

C JPYnghted matanal

Copyrighted material

Capitolul13 Mediul grafic


A bus station is where a bus slops. A Irain station is where a train stops, On my desk I have a workstalion (Anonymous)

Ce sa ilWa~ din acest capitol ?


Tipuri de imagini, fonluri, Unicode, UTF-S
Interiala grafic;li in Linux: X Window System

Componentele X Window System: wirKIow marlager, desktop environment, display manager


COrllig urari de

bala: rezolutia, aranjame ntul caracterelor pe tastatura

COrllig urarea sistemului folosir.d KDE

Servicii desktop Conligurare X peste SSH, VNC, ROC


in momentul de fata, cea mai utilizata metoda de interaqiune eu sislemul de operate aSle interfala GUI. Principalul sau avantai lata de celelalle tipuri de inter/ete (CLI, rUI) (vezi ~i secliunea 2.3.1) consta in u~urinta eu care utilizalorii inva~ sa 0 foloseasca. Evolulia interlelelor gralice s-a realizat In paralel cu evolutia hardware-ului. Prima i neercare de rea lizare a unei interlete grafice a avut loe In anii '60 la /nstitulU/ de CerCflIiri at Universililii $Iandford'. La acel moment, inter/ala grahca cupr indea un mouse elementar cu ajutorul caru ia se puteau accesa link-uri In documentele text (text
hyper/inks).

in momentul de fala, inter/etele grafice lneep sa paseasca i n era 3D. Aero din Windows VistaJ7~ , Compiz~/KWin ' din Linux si Quartz Compositor'! din MacOS X olera
' Si an lord RMearch In'lilLJle hl lj>11www...i.coml . hnp.llI<www. m;c .o soft.comlWilldow olW indow.-. islaITeaturesl ae.o.asp x hlip :l1www.m;c ... soft .comiwindowolWindows-7ffeatIJ.eslaero.a ... x
' h ltp :1180 .wikiped ia .o rgIWikilCo mpi2 http ://M .wikiped ia .orgIWikiIKWiot http ://afOtechn;ca,co mJapplelreviews12005!04ImaCQu -10 -~ , ar$ll 3

C :opynghted matar~1

,<2

INTRODUCERE iN SISTEME DE OPERARE

utilizato fului 0 experient<l. 3D la a cArei real izare participi1 in mare masura placa video 5i nu procesorul ca pana acum.

13.1
13.1.1

Concepte in mediul grafic


Tipuri de imagini

In functie de modul de stocare a inlormatiei, imaginile d igitate S8 imparl in doua tipuri: imagini raster (bitmap) 5i imagini vee/aria/e. a imagine taster (bitmap) reline informa\ia ca 0 malrice de puncte. De exemplu, fotografiile reali zate eu 0 camer<'i Iota digitalA sun! imagini raster. Este formatul de imagini eel mai des 10105it, avand diverse imp lementari: BMP , J PE: G, GIL PNG etc. Oezavantajul acestu i tip de imagini esle col, atune; caoo imaginea 8Sle redimensionatA (scatali'll, continutul noii imagini \rebuie aproximat din continutul imaginii initiale. Aceasla aproximare se poale realiza cu rezullale bune in cazul in care imaginea este micsorata. in cazu l In care imagine esla miirila, rezultatele sunl cu alAt mai nesalisfacaloa re cu cal facloru l de scalare esle mai mare, precum se poate vedea in figura 13.1.

I
\.. ~

Figura 13. 1: Marirea unei imagini in formal raster Fiecare punet dintro imagine raste r (bitmap) este descris prin mai multe componente, in fUI)C!ie de suporlu l de iel;lire: pe ecran un puncl dinlr-o imagine raster esle descris prin 3 ~alori reprezenland in tensitatea luminoasa (pe 8 bili) a urmatoarelor culori: rosu (Red), verda (Green), albastru (Blue) - prescurtate RGB. In cawri speciale (pre lucrari profesionale de imagini), intensitatea fiecarei culori poate Ii exprimata pe 16 bili (crescand astlel spectrul de culori ce poate Ii reprezental)_ De asemenea, pe langa cele 3 compone nte {RGBj, anumite imagini d ig itale (precum formalul PNG) conti n si 0 a 4-a componenta numita Iransparen!i!J (Alpha). Astlel, in cazul imaginilor cu Iransparen!a (RGBA), pentru fiecare punct se asociaza l;li un ni~el de transparenla, permilAnd astlel ascunderea (tolala sau part ialii) a unor parti d in imagine.

CAPITOlUl13. MEDJUl GRAFJC

443

pe suport liparil , un punct dintr-o imagine raster eSla dascris prin 4 va lori, reprezentand cantitatea de cu loare necesara pentru oblinerea cu lorii punctului din patru componenle: cyan (C) , magenta (M), galben (Yellow), negru (black - K)
lntr-o imagina vecloriaJa informatiife sunt retinule sub forma efamenle gaomelrice de baza: finii, efipse, puncte ~i gradienli de cufoa re. Avanlajuf major al aceslor lipuri de imagini eSle acela ca sunt loarle usor de redimens ional (practic, culoa rea liecarui punct din imagine peate Ii calcu lata exacl pe baza elementelor ce com pun imaginea). In urma redimensionarii (mic~orare sau marirel, calitatea imaginii nu se pierde (Iigura 13.2). ExistS. cateva formate mai cunoscule care stocheaza continutul in formal vectorial, cele mai cunoscute fiind:
SVG', P S , EP S, PDF .

I ,

Figura 13.2: Marirea unei imagini in format vectorial

13.1.2

Fonturi. Unicode

Fonturila sunt tis iera intr-un anumit format ca re conli n informatii despra modul de desenare a caracterelor pe ecran. Prinlre cele mai utilizale in prezent formale pentru lonluri se numara True Twe ( . t t i ) si Open Type (. ot f ). Fonturile sunt de cele mai multe ori deserieri veetoriale ale aspectului earacterelor. motiv penlru care ele pot scala atat 1 1'1 dimensiuni foarte mici edt ~ i 1 1'1 dimensiuni foarle mari lara pierderi ealilalive. ExiSla 4 Sliluri mai eunoscule In care se poale prezenta un lont: normal, italic (caractere aldine - ca raclerele sunt u~r inclinate spre dreap\a) , bold (caracterele su nt ingrosate), bold-ila/ic (caractere aldine ingrosale). Initial. selul de earaelere ASCIf ~ a neeesitat 7 bili penlru reprezenlare (un bit hind lolo$~ penlru caiculul parila!ii in transmiterea liecarui caracter). Aeesl lucru perm ilea existenla a 128 caraclere , 33 dintre acestea liind ca raclere de conlrol. Ulterior, cAnd bilul 8 nu a mai lost lolosit ca bit de par~ate , lolosirea aeestuia a dus la ex\inderea setului de caractere cu inca 128. Pe cele 128 de noi pozi!ii au lost plasale caraclere si simboluri dar $a constatat necesitatea unor extensii.
' acceptat de W3C ca .tarldard penl ru WWW _ http://www.w3.o rgiG raphics/SVGI ' http ) len,wik iped ia, o,glwikU ASC II

444

INTRODU CERE iN SISTEME DE OPERARE

Astlel, a ap1i.rut nOliunea de pagina de coduri (code page)' prin care erau definite noile
128 de caractere d isponibile. Penlru 0 perioada de limp sau lolosil frecveot pagini de

coduri create fie pentru 0 anumiti!. limb1i. fie pentru grupuri de limbi.
Nevoia de a avea mai mull de 256 caractere ac<:esibile la un moment dat a dus la impunerea unui nOll standard de reprezentare a setului de caractere - Unicode (in prezan! ajunsla versiunea 5). Acesta permite reprezentarea prin pana la 4 octa!i a unui caracter (folos ind maxim 32 de bili). in aces! fel SUI.! acoperite inclusiv caraclere le

asiatica.
Exista mai mu~e slandarde 2 pentru codificarea caract ere lor Unicode in fisiere. Cel mai folos i! eSle UTF- 8, format in care primale 126 de earaetere sunt identice eu eele d in ASC II. Acesta este un format eu numarvariabil de octeti, numarul de octeti ocupati de un earaetE!f fiind dat de numlirul de biti de 1, panli la primul bit 0 , din primul octel (ineepand de la eel mai semnificativ bit"), Daca primul bit este 0, alunei earacterul ocupil. un octet ~i, in mod special, este acelas i earaeter ea in setul ASC II, Daca un octet are primii bili 10, atunei eSle un octet care continua reprezentarea unui earacter. Mai multe i nforma~i despre eodificarea UTF- 8 se pot gasi onl ine' . in prezenl, fontur ile importante din sistemele de operare moderne au suport pentru un numar semnificativ de caractere definite in standardul Unicode.

13.2
13.2.1

Interfala grafica in Linux. Componente


X Window System

X Window System (cunoscut ea XII sau ea X) este un cadru (Iramewor\o;) ce perm ite dezvollarea de interlele gralice in medii Unix.

Monitoarele (CRT sau LCD) afiseaza imagini in format raster. Din acest motiv, imaginea finala Irimisa caIre aeeslea esle in format raster. X Window Sy s tem permite: desenarea si mutarea fereslrelor pe ecran , interacliunea eu mousB-ul si interae~unea eu laslalura, Reslul esle llisal in seama programelor, moliv pentru care aspeclul vizual al interletelor grafice bazale pe X difera deslul de mull de la un sistem de operare la altul. sau eh iar intre versiunile aeeluiasi sistem de operare. X a fost ereat in 1964 la MIT". Versiunea eurenta a protocolului este XlI ~i a aparut in 1967. in momentul de lata p!'oiectul X esle eondus de catre X.Org Foundation si a ajuns la versiunea XII Release 7. 4.
, hnp 11en ,wikiped ia, orgIWikilCO<!e---page ' http j l en .wikiped ia. or(jlwikilCo mP'lrl. on_ 01_ Unico<l&_e n cod ing.
' http://8n . wikiped i3.or(jlwikilMo.t_. ign~i<:ant_b~

http) l en .wikiped ia.m(jlwikilUT F.8


ht'pjlwww. m~,.du

C JPYnghted matanal

e APITOLUL 13. MEDIUL GRAfl e

445

13.2.2

Arhitectura X Window System

X Window System are 0 artlitectura de lip clientserver: mai multi clienti X se conecteaza la un server X (figura 13.3). Serverul accepta ceren de desenare a obiectelor grafice si trimite inapoi catre clien!i intrA rit e (inputul) de ta utilizator (preluate de la tastatura, mouse etc.).

9 I I I

E".n

1 9 I I

'"'v~ ,

9 c2J

C "n,' " dist. "\i

1;>""u'~

>t""

<==> I,- , ~., I <==> I"-,, ~ I

C.k~I . ' o",llo<.1

figura 13.3: Arhitectura X Window System 5erverul X este responsabil de administrarea resurselor ce permit inleracliunea cu utilizatorut. Aceste resume sun!: ecranul. tastatum. mouseul, /ouchpadul, slylus-ul, joysffck-ul etc. Serverul X ruleaza pe calculatorul care interac!ioneaza cu utilizalorul si trim ite intrAril e (inputul) primit de la acesta catre clien~. Cli entii proceseaza informalia napoi inlorm atii pe care serverul Ie va alisa prim itA de la server 5i ii trim it acestuia T utilizatorului pe ecran: in prezent, cea mai utilizatA implementare a server-ului X esle olaritA de proiactul X.Org '. e lien!ii X se conecteaza la un server X pentru a folosi resursele adminislrate de acesla. Ei cer serverului sa al i~eze pe ecran obiecle grafice si preiau de la acesta intn'.irile (inputul) utilizatorului, precum apasarif e de taste sau miscari le mouse-ului. Clien!ii pot rula local (pe acelasi calculator cu serveru l) sau pot rula pe un all calculator allal fa distantA. Exemple de clienti X: un browser we b, un client de e-mail, un program de mesagerie instant. Protocolul X este protocolul utilizat in comunica!ia dintre cl ien!i X ~i serverul X. Comunicatia dintre elien!i si server se desfa~oara dilerit lala de mode lui general al comunicaliei cli ent-server. in general clientul, ca localilate, se alia pe calc ulatorul local iar servarul sa aHa pa un calculator allat la distanta. in cazul X Window Syslem lucrurila slau invers. Serverul se alia pe calculatorul local pentru a putea trimite si primi informatii da la utilizator. Glien!i sa pot alia tot pI! calcu latorul local sau pe unul all at la distanla. in exemplul din figura 13.4 , pe un calculator allat la distan!a ruleaza trei cl ien!i X. Acesl calculator poale sa nu aiba conactat niciun monitor si nici mouse sau laslalura. Fiecare din cei trei cl ienti este conectat la un alt server X (Iiacare server X fiind pe un Calculator
, htlp l /www.<.o ' lP

C JPYnghted ma'ana.!

446

INTRODU CERE iN SISTEME DE OPERARE

Calcul o.

',,<0' I
Sorver X I

Ca'cul.,.., .n
.. d"'. n!1

1"'''''''Of 1<==> 1
I

1 1 1Q

o.n'

,10

d;"t.o n(i

C.ku'_. "',."

.... , ot.,.- I

1<==>1
Colcw, ",lo<o'l

5.,,,,,, . 1

lI.""."" I

1<==> 1

S<:\W,'

<?J L'='=d":.=" ;"~='"==J

Figura 13.4: ExemplI) de conectare client-server lolosind protocolu l X

diferil), Fiecare server X praia dalele de la utilizatoru llocal (de exemplu prin ir'ltermediul tastaturii ) si Ie Iransfera c lienlului, prim ind i napoi de la acesta informalii care treOO ie prezel"llate ulilizatorului pe ecral1. Toata procesarea informaliei de la utilizator asle realizatil de calculalorul aflal la distantA (acolo urlde se executa: clientu l). Praclic, in modelul de rna; sus, calculatorul aHa! la distan\A se ocupa de procesarea datelor, calculatoarele 1, 2 si 3 lunctionAnd pe post de term inale. X nu contine nicio specificaUe legata de felu l in care arata interlata cu utilizatorul (Applicab'on User Interface): modut i n care arata buloanele, meniurile, ferestre~ etc. Aceste specifica!ii sunt implementate in schi mb de cAtre alte componente, precum Window Managerul (managerul de lerestre). Des/c.IOp Environmentu l (mediul desktop) sau de bibliotecile de componente gralice utilizate de aplicatie apl icat ie. Un window manager conlroleaza amplasarea si modul in care arata terestrele aplica!i ilor. Acesta este un tip special de client X (se conecteaza la serverul X ca orie& all client) care controleaZA lelul i n care arata ce ilalti clienti X. Windo w mana gerul face ca tot i clien!ii sa aiba caracteristici comune : bara de trtIu a lerestrei, butoane le de minimize si maximize etc. EI poale crea 0 interla!a asemanatoare cu cea din Microsoft Windows sau cu cea din Mac OS X.
Window managefe/e pot oleri lunctionalitati . . de baza (precum t wm' , window managerul care vine i mpreunA cu X) sau lunctionalitA!i complexe (cum ar Ii En lightenment ee sa apropie ca funetiona litate de un desktop environment). PrinlfB e&le mal eunoseute window managere se numara: Kwitf este window managerul lolosil de KOE , Melaeity' eel folosit de GNOME si Compiz' este eel ulilizal pentru desenarea interle!ei 3D d in proieclul cu acelasi nume.
, httpj len .",ikipedia.",(jIwikifTwm http://M .,,,ikiped i3. 0 ' (jIwikiIK win ' http:!len .wikiped ia .0 ,(jIwikilMetao~y http) len ,wikiped ia,,,'(jIwikiICo mpiz

C JPYnghted matanal

CAPITOlUl1 3. MEDIUl GRAFI C

447

in cazu l in care aceasta componenta lipseste. se vor putea craa ferestre noi dar nu vor avea bara de lillu. in plus, ele nu vor pulea Ii mutale pe ecran, nu vor pulea Ii inchise cu ALT +F 4, nu va func!iona AL T+ IAB, nu se va putea mula 0 fereastra din furlClal (background) in primplan (foreground). i n schimb, con)inutul lereslrelor va ramane neschimbat. Stilul in care arata lereslrele (aspectul lor vizuai) este controlat de 0 componenta a window managerului numita window decorator. Acesla este responsabi l cu desenarea titlului fereslrei. a butoanelor ~ i a marginii acesteia. Un desktop environment (mediu desktop) include un window manager, mai mulle aplica!ii si 0 inlerfala cons istenta din punct de vedere vizua l. Cele mai cunoscute medii desktop sunt KDE' (Iigura 13.5) si GNOME' (Iigura 13.6) .

. '_.

_ -=.-~

-" -,.,........ , --~'ft

__ ,

..."n.,_

.-

-- .-.. , ..... ''''''''1 ... .. __


- - -- -- - 1

"" - "'-"1

, ...-" "
~

._ ......,,-.- ....
'-''''''''~ . --.,.,,-~

~"

::: ::::::~ " . . .. _" " ... ",_ul " .. . _"


...,.""

,.,_ .. _u.j

.. " .. ..,.... ,,,

"

.....,.... "' :

Figura t 3.5: KDE Un display manager esle un program care permile pornirea unei sesiuni pe un server X de pe acela~i ca lculator sau de pe unul allat la distan!a. Acesta esle implementat ca un tip special de cl ient X. Display managerul afiseaza utilizatorului un ecran de autentilicare (login) permilf1ndu -i acestuia sA introducA un nume de utilizator si 0 parol<'\. DupA ce autentilicarea s-a realizat cu succes 0 noua sesiune este pornita. E~emplu de display managere: kdm (Iigu ra 13.7) lolosil de KDE , gdm (Iigura t 3.6) lolosit de GNOME sau x dm, display managerul implicit din X Window System. Atunei cand display managerul ru leaza pe acela~i ca lculator cu serverul X, el va porni serverul inainte de alisa lereastra de autentilicare. Astlel display manager-ul are 0 funclie asemanatoare cu procesele l ogin ~i ge t t y (vezi sectiunea 6.5.3).
, httpJI.n .wikiped ia .org/WikiIKOE ' http ) len, wi!< iped ia, org/WikUG NO ME

.
,~

INTRODU CERE iN SISTEME DE OPERARE

...

.--,... ~ ., C

LC;<:,~~",",,,",",~---------c. ~''''

-.. -..,- ~"

---

,
,

. ..'
,

- . ........
"
~

,.,,,,,

.to., ,".- . ...., ..

..... "'N " .... \_

Figura 13.6: GNOME

Figura 13.7: Fereaslra de login din Kubunlu (KDM)

13.3

Pornirea

~i

oprirea interfelei grafice

in cazul ln cale interfa\a gratica nu porneste odati'l eu sistemul de operare, ea poate Ii pornila separa\. Pentru a realiza acesllucru exista mai multe posib ilitati: Fol osind x init

xi nit esle un program care

porne~le

serve rul X 5i un prim client care se conecteazi'l

la el. Utilizatorul nu mai Irebuie sa se aute ntifice lnll -o fereastra de login deoarece el s-a autentificat in sistem inainte de a ru ta comandi'l x init . Atunei cand aces! prim client i~i incheie activitatea. ,. in:i.t va apri serverul X:

CAPITOlUl13. MEDIUl GRAFIC

'"

Figura 13.8 . Fereastra de login din Uoontu (GDM)


george Sas g ~r d'~$

mao

~init

(. .. 1
The xinit pr o gr ~ m i~ u~ed t o ~ t a rt th e X Window Sy s t em ~ erver ~ nd ~ first cl ie nt pr o gr ~ m on sy ~ tem5 that cannot St3rt X dire ct ly ( r om l etc/ini t Or i n environmento that use mul t ipl~ window ,y.te"" . when t hh firSt

chent ex i t" . x i nit ,,, 11 kl 11 the X .er'Jer

~nd

then terminate .

Folosind start x startx esle un front-end penlru x init care of era ulilizalorului 0 interfa!a mai compled:
georgea3sg3rd ; -$ ", an s tartx
~

{. .. 1
The s t a rtx ,cript is a f ront end to xinit that provide s ~ ~ omewhat n i c e r user int ~ r fa c ~ fo r runnin9 a s in91e ,e,sion o f the X W i ndo~ Syste m. I t i, often run with no ~r9ume nts .

Foloslnd Un Display Manager Atunci cAnd un Display Manager este pornit pe cak:ulatorul local, el va porni mai intAi un server X, urmand ca apoi sa prezinte utilizatorului un ecran de autenlifica re . Dupa autentilicare esle pornit un server X in numele utilizatorului. Pornirea unui Display Manager se poate face in mod asemanator servici ilor:
<OOt a3s g3rd: / home!geo rge l s ervIce kam St3rt

Penlru qdm se procedeaza in mod asemanator. Pentru oprirea intertelei grafice este suficienta oprirea display managerului Acest IlICru se poate realiza in felul urmator:
<oothsgard,!home/george. k ill - 9 . dm

Comarlda anterioara opresle loate procesele al caror nume esle oricfll de lung si se term ina cu siru l de caractere "dm".

45.
paramerul stop:
root@~.ga ra: / h o me/ge o rgel

lNTRODU CERE iN SISTEME DE OPEAARE

o alta metoda de oprire a inlarletei grafice eSla oprirea serviciului kdm (sau gdm) iolosind
service kdm stop

Penlru oprirea si reporni rea imediata a interfetei gra/ice eSla suficient sA fie repornit display managerul folos ind servici ile kdm (sau g dm) insa cu parametrul resta. rt :
root@osga ra: / hom e/georgel service kdm r estart

De asemenea oprirea si repornirea imediata a serverului X sa poate rea liza 5i prin

combinatia de taste Ct r 1 t Al t +Back space .

13.4 Configurarea serverului X


Aceasta sec!iune sa va cancan Ira pe prezentarea modurilor de contiguratie temporara
a server-ului X. KDE 5i GNOME vin cu ap licatii pentru configurarea permanenta: a server-ului X. salvand conliguraliile in li~ie re specifice Desktop Environmenlului.

in ultimele versiuni, necesitatea utilizarii unui lisier de configurars a server-ului X a lost eliminala. Fi~ieful de conligurare utilizal in vers iunite anlerioare se numea / etc/ XII h:org . co n f . Principalul dezavantaj al acestuia era laptul ca trebuia repornit serverul la fiecare modilicare a f i~ie rului. Fi~ierul mai poate Ii utilizat in prezent pentru realiz area config urarilor permanents, dar, pentru simplitate in conligurare , comenzi le pentru configurarea temporara se pot salva in li~ierul - / . xprof i Ie . Fisierul / etc/ Xl l / xorg . co n f , daca esta Iolosit, trebuie structural pa secliuni specifice fiecaf\Ji dispozitiv. dupa cum se poate observa ~i online' sau in documenta)ia man(man xorg . c:onf).

13.4,1

Configurarea

rezolu~iei

Versiunile recente ale server-ului X implementeaza extensia Xran d r, extensie care permite modilicarea live (lara reporn irea mediului grafic) a rezolutiei. dimensiunii desktop-ului, orientarii ecranelor etc. Acest lucru reprezinta un mare avantaj in cazul sistemelor la care se conecteaza monitoare externe (precum laptop-urile). Extensia Xrandr poate Ii utitizata lolosind comanda xrandr. Cateva utilizari Irecvente ale comenzii sUi'll prezenlale mai jos: alisarea starii curenle a sistemului grafic
2 xran d r Sc r .... n 0 : mi nimum 320 x 200 , c uu .. nt 12S0 x 1024 . ma x i mum 128 0 K 1280 connected 1250 x I02 4+ 0+0 In orma l l eft inverte<l r ight ax i s ax i sl 33Smrn nOrnm 12 8 0x l 0 2 4 60 . 0 - + 15 .0 60 . 0 11 52x864 15 . 0
mir c ea ~a c orn : -$

, '" ,

, http. ;lIwi<i.uoontu,oomJ)(ICo nfiglR&Solution

CAPITOLUL 13. MEDIUL GRAFIC

451
70. 1 75.0 72.8 60.0 60.3 66 . 7 56.2 59 . 9

, .,

1 024Ki68 832x624
900~600 640~4aO

75 . 0 74 . 6 72.2 75 . 0
70.1

120x400

activarea luturor monitoarelor coneclate la rezolutia lor default:


rn i rcea@acorn : ~$

xrandr -- auto

dezactivarea unui monitor (LeD-ul in acest caz):


mirce a ~ a corn : -S

xrandr --output LVDS --off

activarea unei anumite re zolutii (se poate preciza optional si rata de refresh pentru 75 Hz se folose~te parametruf -- rate ? 5)
mirce a ~ a corn : -S

xrandr --output LVDS --mode I 024x768

13.4.2 Configurarea tastaturii


Printre cele mai importante coniigurari afe tastatu rii se numara aranjamentuf caracterelor pe taste (keyboard layout). Aceasta co nfigura!ie eSle importanta mai ales In condiliile in care un utilizator doreste sa scrie caractere care nu se gas esc implicit pe tastatura. In Iimba romana s-au impus mai multe standarde de-a lungul timpului. Unele presupunea LJ inlocLJirea completa a unar caracte re de pe tastatura pentru includerea diacriticelar. In 2004 a fost decis un nou standard pentru aranjamentul caracterelor romflnesti pe tastatura, cu urmataarele specifica!ii (pe scurt): caractere rama nesti sunt di sponibile ca aranjame nt secundar pentru tastatura US, apasand tasta AltG!: (Iasta Alt din dreapta) - majoritatea tastaturilor din Romania au aranjamentul US. faarte putine fiind inscriplianate cu diacritice romAnesti in vechiul standard diacritice le <'i . i, ~ . t sunt disponibile apasand AltG r si aceleasi taste dar fara virguli!. (respecliv a, i , s, t ) a eSle accesibil pe tasta q pentru a ob!ine literele mari se apasa si tasla Shi ft Astfel, pentru a obtine caracterul T se apasa tastele: Al tGr + Shi ft +t ; pentru a abline caracterul a se apasa Al tGr +q . Pe Iflnga acestea, aranjamenlul permite si ab!inerea caracterului (eura) prin apasarea com binatiei de taste AltGr + e . o alta problema in cazul aranjamentului de tastatura pentru limba ramana este modul in care se formeaza diacriticele $ si t.. Mu~i utilizatori nu remarca faptul ca aceste doua caractere (si lite rele mari echivalente) au doua repreze ntari posibile: cu virgulil (virgu la este la 0 miCA distantA de caracter) si cu sedilJ (vi rgula eSle lipita de caracter). Standardul realizat de Academia Romani! men!ianeaza ca diacriticele se const ruiesc falos ind virgula. . 0 mare parte din implementi!.rile de aranjamente din sistemele de apera re sunt gresite din acest punct de vede re.

45 2

lNTRODU CERE iN SISTEME DE OPEAARE

Penlru a activa aranjamentu l de tastalura pantru limba romfmA conform standardulu i, in Unu x se utilizeaza comanda:
mirceo@aco rn:- $
$etK~bma p

ro

Varianta cu sedila, in caz eli esla necesara pentru compatibil itate , se poale activa folos ind aceeasi comarxlA dar adaugMd ~i parametrul ced i lla .

13.5

Configurarea sistemului din KDE

i n Kuoontu , (oate conhgurarile importanle ale sis\emului sunl reunite intrun panou de comand1i numit System Settings. Aces\ panou eSla asem~Ator ca iunctionalilate cu Cont rol Pa nel din Windows 5i poate Ii aceasa! din meniul de KOE (aflat in stanga jos, in mod implicit).

13.5.1 System Settings


Pentru Kubuntu 9.10, fereaslra de configurare asle prezentata in figura 13.9 .

, . -.-. '-_. - -. -.- .-, '" .... -. --- -- _., _. "' --', --.-._ ." ---'- ,. ' " _ ...... -"
.-'-

,- . , ~

..l

II
~

II

_"

l'
~

--'-.~

Figura 13.9: System Settings in Kubuntu 9.10


Ea olera acces la princ ipalele configurari desktop-ului 5i ale 5i5temu lui de operare: configurari legate de aspectul vizual. configurarea perifericelor. configurarea relelei etc.

13.5.2

Schimbarea aspectului

interfe~ei

grafice

Appearance con~ne configurari legate de modut in care arata interfala grafica. Se poate alege schema de culori a ferestrelor si a butoanelor (Colors). fonturile folos ite pentru afisarea texte lor din interfata grafiea (FonlS) , icoanele folosile in sislem (Icons) . sti lul in care arata elementele vizuale{S/yle). felul in care arala bara de titlu a fereslrelor (Window Decorations), animatia care arata stadiul curen! al procesu lui de inarcare KDE (Splash Screen) . Figura 13.10 prezinla un exemplu de configurari vizuale.

""'"

~ a'enal

CAPITOlUl13. MEDIUl GRAFIC

453

--.
.'

-x

.-.

--" -Figura 13.10: Alegerea schemei de culori

Desktop permite modihcarea lundalului (Background) , a screen saver-ului (Screen Saver) sau a numarului de desktopuri (Multiple Desktops). in mod normal i n linux se lolosesc douA sau patru desktop-uri. fiecare poate avea propria imagine de fundal si propriile programe deschise. 1 n general, aplica!iile sunt grupate de ci'ltre utilizato ri pe desktop-uri In lunetie de utilitate. De exemplu , pe desktopu l 1 se poate deschide un web browser, pe desktop-ul 2 un client de e-mail, pe desktop-ul 3 0 temA de casa si pe desktop-ul 4 un program de mesagerie instant. Avantajul olerit de aceasta abordare este acela ca liecare desktop devine mai liber. avand mai putine programe deschise. De asemenea, acest mod de orga nizare permite mai usor co ncentra rea atenpei pe anumite activiti'lti. Noti/ications cont ine configunriri legate de sunetele asociate diferitelor actiuni din sistemul de operare (System Notifications). De asemenea tot in aceastA sectiune se pot dalini ~j aplicatiila care pornesc alunei cand un disc asta inserat in unitalaa optica (ech iva lentul opUu nii autorun din Wi ndows) (Storage Media Notificalions).

13.5.3

Configurari de bad ale sistemului de operare

About Me permite introduce rea datelor persona le ale utilizatorului si specilicarea cAii caIre directoarele sale personale: direclorul home, directorul unde se alia fisiere le de pe Desktop si direclorul Autostart . 1 n directorul de Autos t ar t se pot pune scripturi care vo r Ii rulate la pornirea KDE. Accesibilily olera acces la dilerire configu rari penlru persoanele cu dizab ilitati. Delault Applications permite specificarea aplicaUilor folosite la deschiderea diferitelor tipuri de lisiere. Regional &. Language con~ne configu rAri legate de reg iunea in ca re se gAseste utili zatorul (de exemplu modul in ca re sunt alsata numerele, separalorul penlru partea zecimalii a numerelor, simbol ul pentru moneda ulilizatii. tipul de calendar lolosit, formatu l orei si al datei). Tot In aceastii sectiune se poate alege tipu l de taslatu rii (de exemplu cu 104 sau 105 taste) si aranjamentul caracte relor pe taste. Figura 13.11

.1

454

lNTRODU CERE iN SISTEME DE OPEAARE

prezinla configu ratia pentru tastalura in limba (omAna.

" ......." ......"._. - . t ... .

'--"-

._-_. ..--'------. _~

44

...

--

~ ---

.-...,........

--~i

. K''' __ ___

-.

_ ~

--J
~

Figura 13.11: Tastalura in limba romtlna

13.5.4

Configurari administrative
a orei sistemului. Tot aiei sa poate alege
~i

Date & Time permile configurarea datei

/usu l O far corespunz1'ltor zonei in care S9

gase~te

utilizatorul.

Keyboard & Mouse conIine conhgurllri legale de tastatu ra si mouse. Una din ce le
mai importanle optiul1i prezenle aiei asia cea legalA de starea Nu mLock la ini)ializarea

KOE. Sa poale alege ca Nurn Loc l< sa fie activat, dezaclival sau sa i~i pastreze starea anteri oan'i. in cadrul subsectiunii Mouse sa poate alege lema cursorului de la mouse. Tot in aceasta sec!iune se pot configura combinat iile de taste (shortcut) pentru diferite func!ii din KDE. Gele mai utilizate comb ina!ii (cu valorile lor implicite) sun! prezentale in tabe lul t 3.1. Display per mite, printre aUele, alegerea uneia dintre rezo lutiile de ecran disponibile si a paramelrilor de culoare (gamma, luminozilate. co ntrast). Multimedia contine configurari ale placii audio.

13.5.5 Configurarea relelei


In System Sellings, la Network Settings se pot lace configurari ale reteleL in Networl<. Connections> Wired apare lista conexiunilor conlig urate (figura 13.12). Alegand una din aceste conexiuni se pot configura paramelrii ei [relerin\a la paramelrii de relea], precum in figura 13.13.

13.5.6

Managementul utilizatorilor

Conligurarea utilizatorilor se realizeazAlolosind aplica!ia KDE User Manager (ku se r ) figura 13.14. alenal

CAPITOlUl13. MEDIUl GRAFIC TabeluI13. 1: Combinalii de tas te uzuale in KDE

455

I ~o~blna'ia
n

Deschide lereastra de ajutor Al t +F2 Deschide lereastra de Run de unde se poate porni 0 aplicatie specilicand numele executabilului Porneste aplica!ia System Activity In care este al isat~ 0 list~ a Ctrl +Esc proceselor active Face Irecerea la desktop-ul n (n eSle un num~r i ntre 1 si 4) Ctr l +Fn Alt +Tab Face trecerea de la 0 aplica\ie la alta. Folosind tasta Shift se Al c +Shi f t +Tab cicleaza aplicatiile In ordine invers~ Alt+ F4 nchide fereastra activa Ctr l +Alt+Esc Aceasla combi nalie permite terminarea unei aplicatii in mod 10l1al. Dup~ ce comb inatia de taste a lost efectu ata. cursorul mouse-ului se va transforma (eel mai uzual intrun x ) si lereaslra pe care se va real iza click va Ii terminataln mod lonat. Functionarea aplicatiei este similara comenzii kill

".

de

I Ac,lune

""

-----, " ... .---, -,


iI iI

'-.

o.
,

--

~::

'.~
Figura 13.12: Con/igurarea conexiuni lor la relea

;~ J

Aici se pot adauga, sterge sau modilica ulilizatorii din sislem. Se pot modiliea numele de login, numele real al uti lizalorului, grupurile din care face parte elc. Pentru a modilica dalele unui ulilizator se selecteaza utilizatorul doril si se apasa bulonul Modify, fereastra afisata fi ind prazentata In ligura 13.15.

13.5.7

Monitorizarea sistemului.i managementul proceselor

Ap licatia KDE pentru monitorizarea sistemului esta System Monitor (comanda ksysguard). Aceasta vine implicit Impreuna cu Kubuntu. Ap licalia are douA tab- uri in configuratia implicitA: unul pentru managementul si monitoriza rea proceselor (figura 13.tS) si unul pentru monitoriza rea sistemului

.1

456

INTRODUCERE iN SISTEME DE OPEAARE

Oc.n-I!O-O' """<-'"" ... ... _iYII""_


~(-

p .. ,,.

- .. -......
!I'_ _

t ........

"'.I .~

~- .

"" ,.,.,.

'-"," I.O.!'

Iiot_ ",.,.....,

" " - . . ,""uO .o.'

---,
ai '

Figura 13. 13: Conligurarea parametrilor de relea de bazA

!"o \1M' _

I!O'O

"" ... ::.-

. -- .'! -

a- c -

---." ....... _ . -, . -~- -~

Figura 13.1 4: Administararea utilizatorilor in KDE User Manager

(figura 13.17). Dacil se doreste, lisla de procese poate Ii alisa!a sub forma de arbore. De asemenea, in parlea de sus a ferestrei se aliA un camp Search se permile cautarea unui proces In liSla dupa numale lui. Un proces poate Ii opril In mod fortat dad. eSla selecla! din lisla si esle apasal butonul Kill,
Pentru monitorizarea sistemului, aplica!ia pune la dispozi!ie 0 co leclie de senzori ale caro r valori pot Ii grupate 1 n lab-uri personalizale, precum se poale observa in figura 13.18.

CA PITOlU l1 3. MEDJUl GRAF JC

.e . "j

457

--~

" -Figura 13.15: Modi/icarea datelor unui utilizator

\101<. "

_."

.. C' .. _ _

---..... ......

~.

-,.,

.-

"' ~.

-,

""",
"-

--. "-- ... ..~.

-,- I ,. '" .---.." ,. n. ""..


'"

..

"""""""""-

" "" "." ,.

"" "" '" "" "" "" "" "" "" "" '" ", "" "" '"" " " "" " "" " '"" "" '""
", " ," "

. ,., " . "" '"" '" .


", "

"" '''A ", "" '"" " " '"" "" "" ,. ", "
U.

"

_.
,~,

~--,

"

"" ""' '"" "" "" "" ,...


","

,,~

..... n ... . . ' .......

Figura 13.16: System Monitor - lisla de procese

13.5.8

Gestiunea pachetelor

Exista mai multe ulilitare pentru a realiza gestiunea paehetelor /o losind inlerfata gra/ica. In Kuoontu , aplieatia utilizata pentru managementul paehetelor se numeste KPackageKit. Figura 13.19 prezint1l inter/ala KPackageKit pentru realizarea aetualizllrilor.

Ap lieatia permite gestiunea repository-urilor. actualizarea bazei de date eu paehete, ellularea de pachete dup1\ nume, instalarea de paehete noi. dezinstalarea de pachete si aClualizarea tuturor pachelelor din sistem.

458

.Q .,-..... ....
<.. M......

_ ---

lNTRODU CERE iN SISTEME DE OPEAARE

_ .... ,w" ""''''

_ .."
~.~.

.-..:;:=';;;====~;:;;;;====~ .-.
,

,.-~~,,, - ~ ,.-

_ .. ....

-..
~ . ""' ,'

" "

. ,....... ""-

Figura 13.17: System Monitor - monitorizarea sistemului

.Q "-...... -.._ ........ -, _ .. .. -, '-

..

_0 0 0

~~

0 0 0

oro

,-.--------------0-

Figura 13.18: System Monitor - senzori care pot Ii folosi~ in tab-uri personalizate

13.6

Servicii desktop
aplica~iilor

13.6.1 Pornirea facita a

KDE versiunea 4 a introdus in KDE un nou serviciu de pornire a aplicatiilor. EI inlocuieste vechea fereastra de Run (asemanatoare eu cea din Windows) eu 0 fereastra in care utilizatorul esta ajuta! dinamiC sa identifiCe aplicalia pe care doreste sA 0 porneasca. Accesulla aceasta fereastra de execu!ie se face folos ind comb inatia de taste Al t +F2 aceeasi combinatie ca in KDE3 si in Gnome.
in urma introducerii ciltorva litere din numele sau descrierea aplicatiei {figura 13.20}, fereastra se va compfeta cu apficaliile posibife. Aceea~i fereastra poale Ii fofos ita ~i
ale-r~a.l

CAPITOlUl1 3. MEDIUl GRAFI C

459

QJ ,.. ,--"",," . ' .' _ .Jc_ _ " ... , '" '" .. _ ....... _

... .u H on'"
... , . . ~ . _ ... 100

l.o,..

r ~ "l

"'9''',MNn -,
"'"' ..... _

..

-, ...
"

.......

"_0-"......,,,' r",
~T<

. .. _

.. ..

0 -

Figura 13.19: KPackageKit - aplicatia pentru managementul pachetelor

- --

-Figura 13.20: Fereastra de executie a aplicati ilor pentru realizarea de calcu le simple - doar se introduce calculul dorit urmat de semnul egal (spre exemplu: . 19 2000 - ) ~ i re zultalul apare in lisltt

13.6.2

Cautarea

fi~ierelor

in sistem

in prezenl. pentru ca utilizatorul sa poata gasi date pe calculato rul propriu, fiecare sistem de operare modern oler<"i un serviciu de C <"iutare a lisierelor, in general, acest serviCiu se bazeaza pe un daemon care indexeaza pe rmanenl l i~ierele din sistem. La index are, pe langll numele 5i locatia lisierelor, daemon-ul de indexare poate cOlecta aUIt continut cat si metadate ale fisierului (spre exemplu , in cazu l fi~iere l o r ME' 3, se inclexeaz<"i ~ i tag-uri le fisierului precum artistul, numele melodiei etc,). Servicii le de c<"iulare din sistemele de operare pe ce le mai cu noscute sun! urm<"iloarele:

460

INTRODU CERE iN SISTEME DE OPERARE

Windows - Windows Search'


linux - Strigi' (KDEl , Beagle" (GNOME)

Mac OS X - Sporlighr'
Utilizatorul poole instala ~i solu\ii third-party pentru realizarea ciil1l1iri lor in sistem. Cea mai cunoscuta so lulie pentru cautare pe desktop oleri!a ca ap lica !ie separata asIa Google Desktop Seaferf'.

13.6.3

Notificiiri

Sistemele de operate moderne pun la dispozitia aphcaliilor sarvici i de notificare a utilizatorului. Astlel, notilicArile au un aspect consistent, aforlu! pentru dezVQltarea apliCa!iilor scade ~i cre~te nivelul de ulilizabilitate. i n Unux exista supor! pentru notificari generice prin intermediul bibliotecii 1 ibnot if y. Pa lang1l. sistemale de notiticare puse la dispozi!ie de desktop, majoritatea inlelie!elor gralice pun la dispozi!i e 0 zonA in dreplu l ceasulu i penlru icoanefor aplica!iilor care doresc sa nOlifice utilizatorul {pe bara de aplicalii sau pe bara cu meniul desktopului}. Aceasla zona mai eSle numila tray (sau system tray).

13.7

Aplica~ii

KDE vs. GNOME

Alegerea intre KDE ~i GNOME aparJine fiecaru i utilizator si se poate baza pe mai mulle criteri i, precum aspectul vizual 5i nivelul de lunC\ionalitate dorit. Tabelul 13.2 prezinta comparaliv aplicat iile cefe mai uzuale de KDE si GNOME. Ap lica!iile prezentate nu reprezinta restric~i de utilizare. Ele se pot executa atat pe si KDE cal ~i pe GNOME daca sunt instalate bibliotec ile necesare".

13.8

Studii de caz

13.8.1 Configurarea X peste SSH


cum a lost prezentat ~i la inceputul capitolului . arhitectura X Window System perm ite comunicarea prin relea intre dientii X si ser~erul X. Aceasta comunicare se poate rsaliza lolosind rnai mulls protocoals, prin trs cars si SSH . SSH ssts un protocol care permite comunicarea intre doua ca lculatoare utilizanci un canal securizat (sec!iunea 9.2.2). SSH poate astlel securiza mesajele d intre clientii si servarul X
1htlp1Iwww.mioro solt comlWindow slp .odllCtslWinl..... ilylde. ktopse3rt: ...d e lault .m ' hUp 1Ist!;gi,oou rcel:>fge ,nfIV ' http 1lbeag Ie -p roiect.org! http11www. ..t>pl<o.co mimacosxlwhat.i macooxl..... lIighl .hlml http)lde. klop.g<><>gle.c om! la lare. ap1ioatiilo r ' bl>iolec,e sunl inota l.t. aulomot la in O
A~a

.p.

C JPYnghted matanaf

CAPITOlUl13. MEDIUl GRAF IC


Tabe lul 13.2: KDE si GNOME

461

(figura 13.21). Forwarding.

Optiunea SSH ca re permite acest fucru poate se numeste . . X II

Calc u lat o r la d lsta nlJ, C. lc ulno< loul: 19 2.1U . l . l


192 . 168. 1.10

U' HI.a'or

<=;)1

Serve r X

a i~ n t

I.

dl'' ' nll

Figura 13.2 1: Conexiunea cfient - server X peste SSH Penlru a putea ru la un client X affat la distanta. peste SSH, primuf pas este configurarea protocolului SSH in acest sens {activarea XII Forwarding} . Cea mai simpla metoda este spec ificarea parametrufui - x aturx:i cAncI se reaf izeazli conex iur"lea SSH de pe cafcufalorul utifizalorufui (uncle este server-uf Xl pe calcufatorul urde se va executa clier"ltul X. Comarda cu care se realizeaza conexiunea SSH per"ltru a permite incapsularea protocolului X este:
george@a"g~rd : 'S

soh geMge@l92 . 16S . 1 . 10-X

Dupli ce conexiunea SSH a fost stabilita. se poale pomi Ur"l clier"lt X. De exemplu, se poale porni KCalc:
george@~ca'~:'$ ~calc

Dupa cum se poale observa in figura 13.22. bara de litlu a fereslrei KCa/c specifica faptul ca aceasta fereastra corespunde unui cl ient care nu se gaseste pe calcu latorul local @acasa .

",
"M_"," "
~_

......",,_--.. .......
~ ""~,
~ ~ '~.,..M.
, ~ ,,~, ""~

_ ...,." """ , ........ "" " .. _ ,,' "",, H".' '' "' .... K"." "'"" ..., ,_
..
h ~ ~ _

,~

"'.... ... _.... .,,,.. .. '''' ...... "'" ,. "','....,.....


M'
_~

_ ..... .
~~

lNTRODU CERE iN SISTEME DE OPEAARE

"". -...w , ..
~ ,,_

,.,,~

.......

~ ' ~p

<o.H~"

... ..,. '"' .......


,~~

""'-'...., .. _

..,~

..... _

~._

..., _

..,

~,

\~

~,

...,

'M. ". """

' ~ ""~M' _ ~~

....-A. .. ",',

...... rr~~~~~~~~~~~~~~

-- -'"
Co

_.__.- ..... "


~ , ~""

'" ,. ., ,
co
~

'" ' OK ' ''' ... ~II

,
I.

',

, ,

"

""". Of< .,..

Figura 13.22: Pornirea unei aplicatii X peste SSH


Folosind X peste SSH se poate executa si un lntreg Desktop Environment. nu doar programs individuale. Aces! lucru nu aSIa lns1'i ulual datoritA alternatiWllor mai bune

existente in aces! sens (vnc. t'reenx elc.). Conexiunea SSH necesita criptare docriplar9 - aces! lucru presupune consumul unOf resurse hardware suplimentare.

~i

Pentru a putea rula X peste SSH 101 0siOO pe calculatorul local Windows (server X) ~i Linux pentru clientii X, tret:xJie ca pe calculatorul local sii lie instalat Cygwin (s au un an server X instalabil pe WiOOows).

13.8.2

Instalarea!!li configurarea VNC

VN C (Virtual Network Computing) este unul dintre cele mai lolosite sisteme de vizualizat desktop-ul unui calculator allat la distan!ii. VNC se bazeazii pe protocolul RFB (Remote Frame Buler) ~i de aceea poate Ii lolosil inlre sisteme de ope rare dilerite (Windows, Linux, Mac as X). VNC func!ioneazii pe sistemul clienl - server. Pe calcu latorul anat la dislanli1 (al ciirui desktop va Ii vizual izat) ruleazi! un server de VNC la care se conacteazi! un client allat pe calcu latorul local. La un server se pot conacta mai mul!i clienti simultan. Un cl ient poate si1 vizualizeze desktop-ul calcu latorului pe care ruleazi1 serverul VNC sau, data este permis din conligurarea serverului. poate si1 si interaqioneze cu el (de exemplu schimbAOO pozitia cursorului mouseului). Figura 13.23 prezinti1 0 astlel de sesiune VNC. Serverul de VNC preia de c:l.teva ori pe secuOOi1 imaginea care se aliseazi1 pe acran si 0 trimite tutu ror clientilor. in caz ul in care clientii Ii cer acest lucru, serverul peate accepta de la acestia ceren de miscare a cursorului mouseului, de elactuare de clickuri de mouse sa~ de introducere de caractere. in acest lei, utilizatorul poate prelua controlul calculatorulu i pe care ruleazi1 serverul de VNC.
ale-r~a.l

CAPITOlUl1 3. MEDIUl GRAFI C

463

w ::=::=_ '!J!':.':.:::!' ,.::=. _ __ __


~ =-..:=w

9 = - .....

=_

Figura 13.23: Conectarea prin VNC folos ind un cl ient Windows

~i

un server Lin ux

Folosind VNC este posibil ca mai multi utilizalori sa aiba simultan controlul unui calculator. De ce le mai multe ori. illainte de a putea accesa Ull server de VNC, uti li zatorul treooie sa se autentifiCe. Acest lucru se realizeaza pe baza ullui rlUme de utilizator ~ i a ullei parole. AtAt ill Willdows cAt ~i ill Linux exist1'i mai multe programe, alAt server cat ~ i cl iellt, care implementeaza VNC. Pentru linux, unul dintre cele mai simple servere VNC este x llv nc. OcIata inslalat, acest server esle pornit prin apelarea comenzii x llvnc:
qeorqe ~ ~ca" ~ : -$

xllvnc - u ~ epw 10/09/2007 22:48 : 59 - u ~ epw : found

Ihorn e /qeorqe/ . vnc/pa ~~ wd

,
10

"

10/09/200722:48 : 59

I I

Tryinq ":0" in 4 ,econd, .

Pre ~ 5

Ctr l-C to abort .

10/0~/2007 22:48 : 59 1 2 J 4 A 10/09/200722:49 ,0 3 '" XOpenDlsphy of " : 0 " successful .

"
,~

,)
'5
16

22:49,03 22:49 : 03 u si ng X d i splay :0 10/0912007 22:49 : 03 10/0912007 22 : 49 : 03 X di ~ play : 0 . 0 is 32bpp deptn - 24 true color
1 0/0~/2007
Fr ~rnel.\ u ff ~ r

10/0~/2007

Info :

17
'" ,.

width : height :
scal@ci_ wicith :
sc~leci_height :

12S0 1024
1280

1024

21

I . .. 1
The 'INC desktop is : POR! - 5900

" 2)
~

3cna : 0

Comanda trebu ie apelata de catre utilizatorul care este autentifiCat in inler/ala grafiCa. Implicit, dupa ce ultimul cl ient se deconecleaza, serverul se va opri. Pentru a securiza accesul clientilor pe baza unei parole, x ll v n .: trebuie pornit eu opliunea ~usep". in acest caz serverul va verifiCa daca exista fisierul

464

INTRODU CERE iN SISTEME DE OPERARE

~/ . v fl c/ passwd. in cazul in care l isierul existll., din el va Ii cititil. parolace va Ii cerutll

clientilor. Daca fisierul nu existll.. utilizatorului i sa va cere 0 paral1l. ce va Ii stocat1l. in


~

/ . vnc/passwd ~ j va Ii folositll. la urmll.toarele instanle ale serverului.

Existll. mai multi clienti VNe in Linux: xvnc:4v i R" Rr , x vnc:v i .... Rr etc.

$i in Windows exista servere cal clienli VNe. Unele programe sun! graluite (ca de
exemplu tlg hIVNC), altele trebu ie cumparate (ca de
e~emplu

RealVN e. ce dispune

~i

de 0 versiune gratuitA dar limitata ca optiuni).


o altema\iva la VNe asle FreeNX. Acest program trimite datele intra client si server peste SSH, lnsa comprima dalele inainte de a Ie Irimite. in acest lei reu~e~te ob!ina

Sd

periorman!e superioare VNC-u lui ca timp de raspuns f?i ca IAtime de bandii consumato'i.

13.8.3 Remote Desktop Connection


RO C (Remote Desktop Connection) este 0 aplK:a!ie care lune!ioneazii in mod similar cu

VNC ~i care permite unui utili zator so'i aCCBseze de la distan\o'i desktop-ul unui calculator. Aceastii aplK:atie este disponibilii doar impreunii cu Windows XP Professional sau eu Windows Vista Business, Ultimate sau Enterprise. in comparatie cu VNC, ROC are avantajul co'i este instalat ooato'i cu instal area Wirldows. Oezavantajul ROC este acela eii nu permite accesarea desktop-ului simultan local ~i de la distanto'i. Cu alte cuvinte, atunei cMod un utilizator este autenttlicat local pe calculator si interaclioneazo'i direct eu sislemul de operare, nu este posibil ea altcineva so'i lie autentilK:at prin ROC si sii vadii actiunile primului utilizator. in momentul in care se ineean:::o'i autentilicarea prin ROC, ulilizatorul local esle deconectat. Atunei eo'ind un utilizator allat la distanlii este autentificat prin ROC si un ulilizator local incearcii si el sii se aulenliliee. ulilizatorul aflalla dislanla esle deooneclat. Pentru utilizarea ROC. acesta trebu ie activat pe calculatorul server (calculatorul care va Ii con\(olat de la distanla). Pemru a realiza acest lucru pe Windows XP se acceseazii System Properties (click dreapla pe My Computer, apoi Properties). dupii care din tabul Remote se bileazo'i Allow users to connect remotely 10 this computer (hgura 13.24). Este posibil sA fie necasare configurAr i ale programelor de tip firewall (vezi sectiunea 10.5.1 ) existente pe cele douA calculatoare intre care se doreste realizarea legaturii. Pentru a raaliza conexiunea, de pe calculatorul local trebuie pornit cl ientul de ROC (figura 13.25). Acesta se acceseaza prin Start> All Programs> Accessories> Communications > Remole Desktop Connection sau Start > All Programs >
Accessories> Remote Desktop Connection.

Pentru conectarea la calculalorul allal la distanta esle necesaro'i adresa IP a acestuia. Folosind bulonul Options se pol configura parametrii conex iunii ROC (figura 13.26). Oupl'i ce conexiunea a lost ini~al i zata, utilizatorul trebuie sa se autentilice (Iigura 13.27). Oupii ce autentilicare este realizato'i cu succes, desklop-ul calculatorului alia la dislantA peate Ii accesat, asemano'itor unei eonexiuni VNC.
~,.,.

"0" ".atanal

CA PITOlU l1 3. MEDJUl GRAF JC

465

G:I.- .................. "" ...... ""'-.. ~ "'El _ _ ........... .. _ ...... _


_

El _ _

-... _f_ . . . _., __ " "'" ..... " '- _


,~''''''''_~

... _

''''--

,,,-~""""',- ~

...

- -...

....

.....

Figura 13.24 : AcJiva rea ROC

-6'........ D...,.p L.""""rIoi~ :;:.-O l!.

*_

Cuv inte cheie

Remote ~ktop ~ ConnectIon

~ ~

Figura 13.25: Fereastra clientu lui de ROC

apl ica!ii grafice client X desktop environment: KD E, GNOME diacritice display manager: gdm. xdm, kdm font grafica raster grafica vectoriala

ROC server X servicii desktop Unicode UTF-8 VNC window manager:


Compiz

Kwin ,

Metacity,

GUI
keyboard layout protocolul X rezo lutie

X Forwarding X WindOw System

X.Org xi n it .stsrt x

Xrandr

466

INTRODUCERE iN SISTEME DE OPERARE

0 - .... """""" - ' ~ _....,......,.

"'''"'!t , 4 C,11

:3

Iffl:g

II "'" II

M>

! ! qe..." !

Figura 13.26: Configurarea oppunilor conex iunii ROC

E".. j'<U'v_

be ""'" ......... I'<'J comecl b:I the """'* a:qo.t

.... f'"

'"",'"",0,1.

_~

.......

I.. .. ....

Figura 13.27: Autentificarea RDC

intrebarl
I. Care din urmatoarele formate de
f~ iere

NU esle un formal vectorial?

o o

PDF

o True Type lont


PNG

SVG

2. Care dintre urmAtoarele este un standard pentru descrierea modul de codificare a


caracterelor inlr'UIl l isier?

CAPITOLUL 13. MEDIUL GRAFI C

467

o o

True Type Unicode UTF-8 RGB

o
o

3. Un Display Manager are rolul de a:

o
o

controla lelul in care arat1l ferestrele permite unui utilizator sa se autentifice in inter/ata grafca controla deschiderea si inchiderea lerestrelor gestiona conlinutu l lerestrelor

o
o

4. Ca re dintre urmatoarele perech i NU contine elemente cu acelas i rol?

o
o

KDE ~i GNOME k dmsi qdm Kwin


~i

o o

Metacity

Xorg ~i bitmap

5. Utilizatorul Dorellucraz1l pe un calculator cu inter/ala gralica instalata, dar care NU este porn~a. EI lncearc1l s1l porneasca interiala fo losind comanda urmatoare dar nu reu~e~te. De ce?
dore l ~home : ~S

se r v i c e <am st a rt

o SCriplul k d m nu porneste inter/ata grafic1l

o o

Dorel nu are dreptul s1l porneasca serviciul kdm Doreltrebuia sa ruteze scriptut atart x lnainte de a rula scriptut k d m

o Doreltrebuia s1i ruleze scriptul atartx dupa ce a rul at scriptu l kd m

6. Care dintre urmatoarele NU este 0 metoda de control de la distanla a unui


calculator?

X peste SSH VNC Spotlight Remote Desktop Connection

o
o o o

7. Care dintre urmatoarele NU este un Window Manager? KDE Compiz Kwin Metacity

o
o o

468

INTRODU CERE iN SISTEME DE OPERARE

8. Care din tre urmiitoare le aplicatii eSla utilizata in mediul grafie pentru monitorizarea ocupiirii resurselor hardware?

o o

top
htop

Q System Information {k s y squard}

o free
9. Un Window Manager controleazli felul in care arala ferestrele aplicatiilor. Un clie nt

X preia intrarea (inputul) direct de la utilizatof.

a a

adevarat,

ade~arat

adevarat, lals

o fals, adevi'lrat

o fals, lals
10. Care dintre urmiitoarelB NU reprB zinta un cl ient X?

a o

Kcalc gnome-terminal

a Xorg a kdm

C JPYnghted matanal

Capitolul14 Uti litare pentru dezvoltare


First learn computer science and all the theory. Next develop a programming style. Then forgel all/hat and just hack.
George Carrette

Ce se inva!ii din acest capito l? Conventii de codara


Ed itoru l Vim

Sistema de conlrol a versiunii; Subversion si Gil Parcurgerea rap idA a cod ului Compilarea una; aplicalii din surse Zonele unui executatlil si proces Depanarea unui program folosind GDB, ddd
~i

Valgrind

IDE-uri: Eclipse, Anjuta, Microsoft Visual Studio Gestiunea unui proiect software

14.1

Introducere

Dezvoltarea aplical;ilor asle una din principalele activita!i ale special j~tilor in calculatoare. Procesul de delvollare necesitli un se t de ulilitare pe care programatorul
(dezvoltatorul software Ie lolosesle). de la edUoare ~ i utilitare de parcurgere a cod ului, pAnA la utilitare de depanare si investigate a execuliei apl icatiei , FAr<l. a lsi propune sA acopere la nivel de detaliu aceste utilitare. capitol ul de latA pre<:inta principalele utilitare lolos ite de un dezvoltator de software pe un sislem UnixlUnux. Mulle dintre acestea sunt portate pe Windows si Mac OS x . in general, dezvoltarea de apl icatii pe un sistem Unu x pres upune folosirea de utilitare dedicate (editoare, compilatoare. depanaloare, mecanisme de documentare), i n vreme ce dezvoltatorii de aplicatii pe sisteme Windows lolosesc, de obicei. un mediu integrat de dezvo~are (IDE - Integrated Development

<6,

.1

470

INTRODU CERE iN SISTEME DE OPERARE

Environment); cel rnai cunoscut eSla Microsoft Visual Studio (vezi sectiunea 14.12.1).
Tolusi,
~i

in linl.lx sunt lolosile IDE-uri precum Ecl ipse sau Anjuta (vezi sectiunea t 4.9).

14.2 Coding style (indent, astyle)


Una dintra greselile frecvente raalizata de programatorii incep1!.tori aSia credinta cA VOl putea intelege codul surs1!. selis de ei lnsisi oricand in virtor' , Serieraa unui cod dezorganizat, fllr1\ comentarii eSla, de obieai, echivalent1l cu serierea "lnui cod
nementenabil. Per'llru a prevani situatiile in care sa consumA limp pentru in!elege rea codului scris de

altcineva Irebl.iie respectate un set de norme de baza pentru edilarea codului. Folosirea
aeastor norme ajuta 5i lucrul Intr-o echipa de dezvollere. dind mai multi dezvol1atori ajung sa parcurga codul scr is de un a~ul Diverse pr04ecte software colecteaza normele prelerate (sau obligatorii) de redactare a codulul Intrun document de stil de codare (coding sryle, programming sryle, coding srancfards, code conventions), Exemple sunt Java', GNU', 850', Linux~, Python 6, PHP ' etc. 5ti1urile de codare varlaza In lunc!ie de limbajul de programare sau de proiect, dar exfsta un set de regul i comune care faciliteazA in!elegerea ~i imbuMta.!irea ulterioari!. a codului, Exemple de astlel de reg uli sunt: lotosirea de nume relevante pentru variab ile; se preier<"i denumirea num_ f i l es in loe de nUlTLvar, J::ncryp tMessage in loe de DoS t uff sau trnp in loe de Te mp ora r yVar ia.bileFo rS to r i nglntege rA rra.ySi ze; variab ilele de genul i , j sa cons idera implicite pentru parcurgerea vectorilor iar folosirea lor nu ttabuie detaliati!.; indentaraa codu lui , corpul unui bloc de inslruc!iuni se indenteazA l ie cu TA8 fia cu spatii; spa!ii/l inii libere; penlru lil ibilitate se recomanda lolosirea spa!i ilor libere intre argumentele unei lunqii , inainte si dupa simbolul ~ in momentul ini!ializarii unei variabile etc. ~ i a liniilor libere pentru separarea blocurilor de instructiuni; lunClii kilomatrica; corpul func~ ilor Irabuie limilat pentru a Ii u~r de parcurs; funCli i care dep<"isesc doua ecra ne lrebuie evitate; comentarii; codul trebu ie comentat penITu a lacilita in!e~gerea aceslu ia ; comentariile nu trebuie sa fie redundante, trebuie sa ajute programatorul aco lo unde codul eSla d ilicil de lnlales;
' Eagleson', Law 01 P ,<>o<amm ing : Any code 01 you, own Ihat you haven'tloo~ad at lo r six 0' more months, mighl as well have been "" itten by someo ne else . ' hllp1fj ..... 8. sun .cornldocsJcCtdeco
' hl1p1/www.g n u.o tO'pt~standato.l

"V,

. hllp:ilwww.freeMd.o.O.cgilman.cgj?que. y-sryle&.sel<lion_g
hllpj~x '- li nu . """linu v2.6 .31IDooumenl.tioniCodingSty" t hllpJIwww.python .o,Qi<l<1vipepsipep00061

' httpJ/pea r.p hp, net/m an uaVenistanda!d .php

C JPYnghted matanal

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE

471

oonsecygnta stilului: e5te mai bine sa se scrie un cod greu lizibil, dar ca re are 0 oonsecygnla in stil- ch iar ilizibil- decal sa se loloseasca mai multe stiluri. fie ele si oone. Indent, astyle In si\uatiile in care f i~iere le sursa conlin cod indenta\ necorespunza\or, se pot folosi ulilitare precum i nden t sau asty l e. Utili\arul i nden t indenteaza corespunzalor codul C, conform unor opliuni configurabi le prin argumente: spalierea si indentarea folos ita, inlroducerea de linii libere. af~area codului de functii. pentru blocuri i f si fo r , afisarea comentar iilor. inlegrarea diygrselor op!iuni in ceea ce se nume~\e sl il (COMMON5T YLES ). in mod implK:i! se Iolosesle stilul de codare Iolosi! de GNU'. Fisierul14.1 conIine cod indentat necorespunzator. Folosind oomanda de mai jos se va obline fisierul14.2 Iormatat folosind 5tilul GNU.
ra"va n @val h ~ ll ~ : -/de v el o pmen t S

indent

permite

, nd e nt ugly - code . c - 0

ugl y - cod e - d ef~ ul t . c

OPliunea - 0 este fo losita penlru a specifK:a fi~ierul de iesire. in absen!a acesteia se modifK:a direct fis ierul sursa.

,
J

'include <'td i o . h> int ma in I) { int i ; int par _O, i mp ar_ O, int ,um- 0; o<o l i _0 ; i<1 00 ; i++ ) \

A pri n t! 1" p ~rti~ l~ sum ~ ls_ l d\n" , s um) , i1' lsu m\ 2 -- 0 1


'0 { pri n tt( "p ~r\n ") ,

"
,~

pa r " ;) die {p r1n t! ( " lmp ar\n") ; par -- , )

" ..
,
J

r . turn 0, )

Listing 14.1: Fisier indentat necorespunzator


.tnclude <.tdio . h> int 'Mi n int int int

, , , , , '" "

,~

I)

" - 0, l mpar - 0 , '" ' 0' - , 0, '0' 1 00 ; "


0;
.u m su m ~ i ;

; 1

" "

,)

prl nt f ( " p ar t la l _su" _ ; s _ \ d\ n ", suml , if (. um \ 2 -- 0 1

p rin t! ( " p ar\ n "l ;


p ~ r H,

"

, http ;liwwN.g n ~ .O rglp ,.. pI. tanda rd . 1

472

lNTRODUCERE iN SISTEME DE OPEAARE

" '" " " "

.he
print! ( " jmpHln ") i
p~r -- ;

" ,.

r e turn 0 ,
Fi~ier

"
listing 14,2: formata! cu stilul GNU
Folos ind alte op\iun i se pot specifica aile sti luri de coding: - k r pentru 51ilul Kernig han & Ritch ie, - 1 inu>: pentru Slilul Lin ux, - or ig pentru S1i lu1initial sse.
Fi~ieru l

15.8 esle formatal folosind stilulUnux, folos ind comanda:

razvan@va lha ll a :- /developmen t S indent - linux u91y-code . c - 0 ugly-code linux . c

, , , " "
J

int mainl) int int int fo r


1;

par ~ O. impH ~ 0 , sum . 0 ; Ii - 0 ; i < 100 ; i H)


Bum SUM + ! ,
p rintf{p a rth l ~"um~ l" ~ 'd\n .

"urn ) ;

if

(s .... \

2 -- 0)

" " " " " "

" " "

pdntfl " pHln " ), p a r H;

pc intf l"impa r \ n " j ; P&C -- ;

r .. turn

0;

List ing 14 .3 : Fisier formata! cu sti lul linux

Utilitarul sty Ie ' (Artistic Style permite indentarea si formatarea cod ului C, C++, C# si Java. La lei ca ~i ; ndent, asty Ie are diverse opliuni de formatare ~i stiluri predelinite. o l i ps~ a utilitarului astyle este absenta opliunilor de introducere de spalii. Comenzile de mai jos formaleaz~ un fis ier conform stilurilor GNU, linu x sau Kern ighan & Ritchie:
I~zv~n@v~ lh ~ ll ~ : -/developmen t S ~5 t y l e

--.ty l e-9nu < u91y-code .c > ugl y-

,
"

code - ~3ty l e - gnu

.C
~5 t y l @

I~zv~n @va lh a lh.:- /d"v"lopmen t $


co d e - ~.ty l " -lin ux . c

--styl,,_ li nux < u91y -code .c

ugly-

ruva n @va lha ll a : -/developn\ent$ asty l e code-astyle-h . c

-- "ty l e - ~\H

< u91y - code . c > ugl y -

, http)la.tyle.ooorcetorge.net!

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

473

14.3

Editorul Vim

Editoarele reprezintii unlitarele de bazii pentru un dezvoltator de aplicatii. Editoarele profesioniste vor oleri acestuia lacilitiiti pentru parcurgerea. prefucrarea ~i editarea rapidi'1 a fis ierelor cod sursii. Editoarele profesionisle vor oferi functionalitiili de colorare a sintaxei (syntax highlighting), cofapsarea oodufui (code folding) , indentare automati'1 etc. In lumea Unix. cele mai cunoscute editoare sunt Vim si GNU Emacs. urmi'1toare prezinti'1 modul de lucru si func!ionaliti'1tile editorului Vim. Sectiunea

Unul dintre cele douii editoare protagor'liste. traditior'lal, ale "rii.zboiului editoarelor"' este vi. Pentru ca programul original nu mai eSle acUv dezvollat, au apiirUI numeroase CIOM, derivate ale codului. sau rescrieri complete. Cel mai cunoscut asUel de program eSle Vim', dezvoltal de 8ram Mooler'laar. Majorilalea distributiilor de Unux vin cu 0 clonii de vi minimalii preir'lstalata. Pentru majoritalea exemplelor urmiitoare, aceasla nu eSle suliciBr1lii; recomandam, deci, inSlalarea pachetului v i m inlreg . In sisteme le Debia n, de exemplu. pachetul in stalal implicit se numeste vim -t iny , iar cel cu mai multe oPliuni - vim . Pentru varianta care include interlatii gralicii, exislii v im - f u 1 1.

Pornirea editorului. Moduri Vim poate Ii porni! din linie decomandii, avAnd drept parametru op~onal numele hsierului pe care sa i l incarce. Upsa acestui paramelru inseamna editarea unui ti~ier nou. Odata porni!. editorul nu func~oneaza conven!ional. EI este in modul Normal. unde nu eSle posibili'1 in troducerea texlului. Functie de sarcin a care Irebuie ind ep liniti'1, Vim poate Ii intrunul dintre modurile de mai jOs): Normal - faciliteazii deplasarea rapid1'i prin text. De asemenea, 0 serie de optiuni avansate ca mark-uri sau lold-uri. descrise sumar in conUnuare. pot Ii manevrate in modul Normal. Inse rt - siroguru l mod in care putem introduce text. Acesta nu este modul implic~ la pornirea edilorului. deci nu este posibila introduce rea de text imediat dupa inciircarea unui fisier. Aceast1'i particu~ritate eSle sursa mu~or confuzi i. Pentru a intra in modul Insert din Normal, comanda cea mai simpla esle i. Pentru a reveni in modul normal, se folose~te Esc ape. Pentru a edita texl elicient, nu se ramane in modul Insert mai nevoie.
mu~

decat este

Command - comenzile avansate se inlroduc ulilizAnd acesl mod. Din modul Normal. se lolose~te : penlru a intra in mod ul Command. Lansarea comenzii se face 1ol05 iOO Ente r , iar anularea ei. natural. prin Escape. Multe dintre comenzile Vim sunt precedate de . Aceasta inseamni'1 ca introducerea lor se face in modul Command.
, h lip :1180 .wikipe d ia .o,glWikiIE dito r_ w~ , ' Vi iMp,(..... _ h!tp:/Iwww.vim.mgl

' Iista nu e. t. exhaustiv"

C JPYnghted matanal

'"
C:l.teva camenzi de baza sunt:

lNTRODU CERE iN SISTEME DE OPEAARE

Visual - selectarea unai portillni arbitrare de text S8 lace folosind aces! mod. Dupll
selectare, 0 comando1 va ac!iona, daca aces! lucru esla posibil, asupra textului

selectat. Intrarea in modul Visual se face, din Normal, Iolosind v, iar revenirea in
Normal- utiliziind Escape sau lansand 0 comanda de edita re

: W- salvare lisier ("write"). Daca fisierului Ii 8SIa asocial un nume, sa Suprascrie vechiul fisier, Daca comanda esle urmala de un nume de fisier, acesta esle creal sau, dac1'i existA, suprascris;
: q - iesira din program ("quit"). Daca exista modi/ican nesalvate, utilizatorul

trebuie fie sa Ie salveze ( : w) , fie sa foloseasca var ianta : q! pentru a nu Ie salva;


: wq - scurtatur<'i pentru cele dou;'.i comenzi de mai sus.

Sistemul i ntegral de Help Spre deosebire de majoritatea comenzi lor Uni~ . pagi na de manual vim nu i~i propune sa doeumenteze in Intregime utilizarea aditorului. ci doar datalii despre argumentele In linia de comand(\'. Vim are un sistem intern de help. foarte dezvoltat. Pentru a alia informalii despre comanda : .... se fofose~te :help : w. Implicit. ecranul va fi Imp(\.l1it in jum(\.tate. cu partea superioar(\. afisand informa!ii de ajutor. inchiderea noii lerestre se face fo losind : q . Este util de retinut ca se poale folosi :help penlru comenz i In mod Normal, comezi "exlinse" (earacterul : eare Ie precede Irebuie inclus), dar ~ parametri de configurare. Acestia din urma trebu ie sa fie dati intre ghilimele. de exemplu: :help cin d ent '. Nu in ul\imul rand. 0 res ursa excelentA penlru familiarizarea cu Vim esle vimt utor, un tutorial self-contained eare vine cu editorul. Lansarea lui sa face conve ntional, in linie de comanda.

Oeplasarea In modul Normal Modul Normal olerA caleva op!iuni inedite de deplasare. Parte din pulerea editoru lui vi stA in natura sa modalA, pentru ca atunei ca.nd nu se edrteaza text, tastele alfabetiCe sunt disponibile pentru alte comenzi utile. este posibilA. inclusiv In modullnserl. folosirea taslelor sAge\i pentru deplasare pr in texi . modul Normal olera 0 alternaliva avantajoasa. Se pol lolosi tastele h j k l in loe de sageti. dupa topologia:
2 h j
De~i

Aceste taste au avantajul ca. pe 0 tastatura standard QWERTY. se afla pe home row. rflndul central al tastaturii. Ele polfi apasate cu mana dreapta:, lara a deplasa prea mult degetele din pozWa lor naturala, folosind tehniea touch typing'. Aile comenz i uti le pe ntru deplasare . precum si semnifica!iile lor. su n!:
, http)len .wikiped ia.orglwi!<ifTo"" h_typing

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE


$ - slArsitulliniei (analog End);

475

- - Inceputulliniei (analog Home); ,.. - cuvAntul urmator ("word"): b - cuvAntul anterior ("back"):
fK -

urmaloarea apari!ie a caraeterului

pe linia curent(\. (""find "):

Fx -

preeedenta aparitie a earacterului K pe linia curentA;


pozi~onare

<n umil.r>g -

pe linia data ("go to line" );

gg - prima linie;
G - ultima linie ;

\ - paranteza care corespunde eelei de sub cursor. Perechile de paranteze pot fi configurate: : help' ma.cchpa. ir s' . /c ex c - urmatoarea apar ilie a lexlului speciliea\. Aceasta este 0 comanda "extinsa" {tastarea / provoaea intra rea in modul Command}.

Edililre avanSCIla

Exist:!i CQmenz i care, lansate In modul Normal sau Visual, manipuleaz:!i lext. Majoritatea celor prezentate mai jos lunclioneaza i n felul urmator: daca 0 comandA asia lansat:!i In modul Normal, ea asleapta 0 secventA de deplasare, penlru a specilica textul asupra caru ia sa opereze. Astlel, dfa va sterge tot textul din poz itia curenta pAna la urmatoarea aparitie a caraelerului "a" pe linia eurenUl; dae(\. 0 comanda este lansata in modul Visual, ea ae!ioneaza imedial asupra textului selectat. in plus, se iese din modul Visual ~i se ravine in Normal. ExcePlie fac comeozile similare eu c, descrise mai jos, care duc in moclullnsert. CAteva eomenzi de editare si variante utile ale lor sunt prezentale In continuare, cu menliunea esenliala ca lista nu este nicidecum completa. Imporlant esle 0 comanda peate Ii urmata de orice m i ~are ' , inclusiv folosind repeli!ii2.

ca

d - stergere ("delete"). Textul este pus In 'clipboard";


dd - sterge linia curenla (scurtatura);
D-

sterge restul liniei curente (scurIAturA);

dw - sterge urmatorul euv:!int (comand:!i compus:!i); dG - sterge de la linia curentA , pana la linalul ff!; ierului (comanda compusA):

c - schimbare ("change"). Textul este pus in "clipboard" si editoru l intrA in modul Insert; - cc - sch imba: linia curenta (scurlalura);
' : h moUon . t.t
' : h r~ ;>eat. tKt

C JPYnghted

mataf~1

476

INTRODUCERE iN SISTEME DE OPEAARE


c - schimba restulliniei curente (scurtaturii);

caw - schimb<"! urmatoarele 8 cuvinte (comandA comp usA);


c schimba de la inceputul linie1, pana la caracterul cu rent (comanda compusa) ;
A _

y - cop iere in "clipboard" ("yank"). Nu afecteaza textu l, dar peate Ii 1010sil in

oonjunclie cu p;
p - inserare din "cl ipboard" ("put" sau "paste"). Pune conlinutul ultimei camenzi d, c , sau y dupa poziiia curentit o greseala frecvenlA eSle aceea de a copia cava 10105100 y , apei, in ainte de a pune continutul in all lac, a ~terge co nlinul superfluu, spre exemplu 0 linia 90al1\. Aceasta stergere suprascrie conlinutul clipboard"-u lui. 0 solulie imediatA esle comanda u ("undo"). dar rasp un sui mai amplu esle folosirea regislreloL

Registre Registre le sunt locuri in memorie unde Vim poate stoca text. Astlel, eeea ee pan<' aeum am numit "clipboard " este, de tapt, un registru implicit. Registre le de uz general sunt adresate 1010sind literele allabetului. Nu exisll'i nicio dileren!l'i intre a Iolosi litere mici sau mari. Modul de lolosire a registrelor eu eomenzile de editare este urml'itoru l:

$emnil icatia componentelor come nzii eSle urml'itoarea: "- anuntl'i cl'i vom lolosi un regiSlru nestandard:
R -

anunta registrul lolosit. Poale Ii oriee registru din domeniul a - z sau unul special ' ;

c - comanda propri u-zisi!. Toate precizl'iri le $i exemplele sectiunii precedente sunt valabi le.

UUllzare make Folosind eomanda : ma k e, se poate rula make (vez i secliunea t t .5) direcl din Vim. Implicit , Vim reeu noaSle mesajele de eroare si Ie listeaz~, lacilitfl.nd deplasarea prin surse. Deplasarea intre mesajele de eroare se face utilizand eomanzile : en ex t si : cprev . Acesle comenzi lunc!ioneazii si dacii eroarea nu se atll'i in fisierul cure nt, deschizfind lisiere noi daca esle nevoie. Astlel , Vim poale Ii 10105il elicient pe post de IDE (vezi sectiunea 14.9). o allii comandii utill'i in acest sens este , cope n, care deschide 0 lereaslrii cu toale erorile. Acesta peate Ii 10105ilii pentru pozi!ionarea pe 0 anumitii. eroare fiirii a lolosi : cn ext in mod (epetal. Denumirea generica a aceslor lacililati eSle quickfix .
' mai mu~e intormatii la: h reqht e r,

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE Conligurarea Vim

477

Editorul Vim este remarcat prin ilexibilitatea sa, iar elementul central al co nfigurabilitlltii sale sunt optiunile. Folosind comanda ; set se pot interoga sau conHgura optiuni. Unele optiuni sunt de tip boolean. Acestea se seteazll pe /rlle lolosi nd romele lor (; set autowrite). iar pe false lipind no la inceputul numelui ( ; set n oa u towrite ). o listi'!. completi'!. a lor este prezentA in help, dar poate Ii intimidantll. CAteva exemple relevante sunt prezentate in continuare. textwi d th -Iungimea unei linii dupi'!. care se face wrap. in general, penlru te~ t, cod sursi'!.. sau mesaje email, aceastA optiune trebuie sll lie mai micA decAt 80. 0 valoare de 0 inseamnll ca Vim nu va face line wrap: cin dent - daca aceasla op!iune esle selata. Vim va face indentare "inteligenla" bazatA pe Sintaxa limbaj ului C. Aceasta esta 0 op\iune booloeanA; file type - tipul fis ierului edita\. AceastA optiune influenteazA tipul de synfax highlighting folosit. dar ~i alte opliuni. Nu in utimul rAnd, interogarea valorii unei oPliuni se face utilizAnd comanda : set, dar adaugAnd caracterul ? dupll numele optiunii:
: set cindent?

Conligurare persistenlii Conligurarea op!iunilor la fiecare ru lare a edilorului este incomoda. Penlru a pllstra unele valori ale optiunilor, dar si pentn; a f1.Jla script-uri de e~tensie, se foloseste un liSier de configurare. Vim citesle, in ordine. /etc/virn/vi rn rc, apoi ~/ . vim r c . ASllel, eSle posibil sa suprascr iem OPliuni globale folosind lisierul personal de configurare. Distributiile livreaza, in general, un lisier de configurare in /usr / share/vim. Acesta poate Ii copiat in ietc/vim/vimrc ~ i apoi personaliza\ local. Este important ca unele optiun i, spre exemplu syn ta x ' , sll fie activate tot timpul , pentru folos irea efiCientA a editoru lui. Existi'!. posibililalea configurari i unor op!iuni numai pentru anumile tipuri de f~ i ere. Lin ia urmlltoare configureazA lungimea !iniei, indentarea , si comportamentul inlocu iri i spatiilor cu tab-uri numai pentru surse le sau headerele C:
~u t oc m d

Fil e Type C, cpp

s et

t ~ - 72

Cindent noe xpandtab

Edilarea de fi !?iere multiple Vim poate edita mai multe fisiere simultan, iar abstractiile pe care Ie loloseste pentru a prezenta utilizatorilor acest lucru sunl diverse.

478

lNTRODU CERE iN SISTEME DE OPEAARE

o posibilitate eSla impanirea ecranului in mai mu~e !erestre, cum lace comanda : hel p. Deschiderea unei n~ larestre se face folosind : s p l it sau : vs p li t, urmate de numele fisierului de edita\. Oeplasarea intre lerestre se lace uliliz.nd hj k, dar precedate de prefixul Ct r l - w. inchiderea unei ferestre esla un simplu 5i bine-cunoscul
: q.

Cand mai mulle larestrs nu sun! $uhciente, vim poale lolosi tab-uri. Fiecare lab poate conIine mal multe fereSlre, deci esle 0 greseala a asocia unu-Ia-unu lisierale deschise eu tab-urile. Pentru deschiderea unui lab sa foloseste : tabn ew, urmal optional de
numele unui fisier, iar pentru deplasare intra tab-uri g t 51 gT. inchiderea ultimai ferestre dintr-un tab provoac1i inchk:lerea tab-utui,

Intormatii mai complete se g1isesc, ca de obicei, In help: : help windows _t xt si : help tabpa ge , tx t .

Lucrul cu proiecte marl A edita un ansamblu de l isiere mari pune probleme complet diferite lata. de a ad1iuga cAteva linii unui fisier de configurare. Vim are facil it1i\i pentru primul caz, asa cum se va vedea in continuare, Pentru deplasarea jntr-un pro iect C, Vim are suport de c t ag s " Generarea unui !isier cta g s se lace Iolosirx:l:
vla d ~co< m y< : /SC h Ool/so/t~ma4 ~

ota g s - a R

Odat1i gene rat un astlel de fisier. Vim trebuie nolificat de existenla lui. prin intermediul optiunii ta g s. Deplasarea la locul de delinitie al functiei de sub cursor se lace utilizAnd Ct rl -I , iar pentru reven irea in loeul anterior" se lolosesle Ct rl - T. 0 alternativa mai puternica, dar ceva mai dilicil de folosit, este cscope 3 . Exista script-uri Vim care olera facililati similare pentru cod scris in aile Iimbaje. in general, ele sun1 publicate pe site-ul cenlral Vim'. Uneori, este uti1a memorarea unui loe Intr-un fisier, Vim numeste acest concept merk. Pen1ru a pune un mark pe linia curenta. se folose~te. in modul Normal , m, urmat de lilera corespunzatoare mark-ului. Litere le mici sunt mark-uri per-fisier, iar cele mari sunt globale. Deplasarea pAna la un mark se face utilizarx:l ' (apostrof) urmat de litera corespunzatoare. Comb inatia" (doua apostroafe) este analogul "Alt-Tab". Ea duce cursorul unde a lost inainte. si are euristici care detecleaza deplasanle semnificative. Astfel. deplasarile mic; sunl ignorate. o altA facilitate pentru lucrul cu fisiere lungi eSle f olding. Aceasta este, in esenta., comprimarea vizualil (f isierul ramane neschimbal) a unei regiuni de lex\. Criteriul dupa care se face comprimarea poate Ii nivelul de irx:lentare, elemente de sintaxa, sau marcaje ad hoc. Modul de comprimare esle dal de optiunea foldme t ho d. Comb ina!ii de taste esen!iale pentru folding sun!:
1 htlp1Ict8Q~. s o u teefo rQ" .net!

' poppi"fllha tlJg .. tlJeI< ' http;!lc sco po! . sou ru fo rg e .net http;!lwww.vim,Orglsc ripl$fondex,php

right

ma'enal

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE

479

zo - deschide un laid; zc -inchide un fold: z f - creeaza un lold, daca fo l d me t h od- ma. rk er. Acaasta comanda insereaza marcajele conf igurate cu foldmark e r.

14.4
14.4.1

Sisteme de control al versiunii


Principii

Sistemele de control al vers iunii sunt programe care tin codul sursa si toat1i istoria modilicarilor asupra lui. Folosirea unui astfel de sislem este 0 practic1i aproape universal1i i n industria software. dar si 0 deprindere util1i pentru proieele personale. Un sislem de control al versiunii (VeS - Version Control System) protejeaz1i. in primul rMd , i mpotriva modilicarilor care au eleete nepravazute, dar sunt g re u de observat. Oac1i, in urma unui bu ild, se constat1i c1i s-a introdUS un bug, se pot inspecta schimb1iri le lacute si determina mai simplu sursa eror ii. o alta situa!ie care poate apMea este cMerea hardware sau slergerea din gre~eal1i a unor lisiere. Un VCS oler1i un backup permanent sincronizat al codului, deci pierderi le ar putea Ii minimizate. Nu i n ultimul rAnd , un ves laciliteaz1i colaborarea l nlre dezvoltatori. prin combinarea automat1i a schimbari lor asupra aceluiasi lisier, acolo unde acest lucru este posibil. e1itava elemente cheie in jargonul ves sunt: repository - locu l central unde sunt !inute sursele 54 istoria. In majoritatea cazurilor, repos itoryul se alia pe un server ~i este loarte bine protejat. Pierderea unui repository poale Ii 0 catas\{ola. Sistemele dislribuite (vezi see~urlEla 14.4.3) redelinesc notiunea de repos itory: working copy - copia unui repository detinuta de un dezvoltalor. De obicei, un working copy nu are istoria codului. deei pentru consultarea lor este nevoie de comunicatia cu repository-u l. Obtinerea unui working copy se lace prinlr-o operalie numit1i trad il ional checkout : commit - un set de mod~icari pe care un dezvoltator iI trimite c1ive repository. Istoria codului este 0 in~irui re de commituri; update - sincron izarea unui working copy cu repository-ul. Aceasta opera!ie va aplica commit-urile care nu sunt deja in working copy; branch - 0 istorie distinctA a sursei. Conceptul eSle lolosit traditional penlru experimente asupra codului surs1i, dar sisteme le distr ibu ite redel inesc acest concept. tag - 0 stare semnilicativa a repos itoryului. Un exemplu de tag esle un release. 0 alta situa!ie in care arli nevoie de un tag este i naintea unei refactorizari importante. Se disting dou1i tipuri de sisleme de version are: C JPYnghted matanal

480

lNTRODU CERE iN SIS TEME DE OPEAARE

Sistema centralizale.

Aceastea sistema S9 preleazii perlect Ie descrierile

conceptelor prezentale mai sus. Sun! inca foarle folos ite ~i activ dezvoltate, dar

tend inla actualA aSIa migrarea cMra sistemele distribuite. Example re levante sun! CVS, Subversion, Perforce. Sistema distribuite. Ideea din spaJele lor aSIa aeeea ea fiecare working copy are,
de lap!. istoria completa a codului. Astlel, flU mai exista un repository central.

Asemenea sistema sun! descefltralizate, in sensul oil nu sun! coarente toale


copii le dezvollaloriior. Din aceesla cauzA, 0 copie a codului sa numeSle braoch. Pentru ca nu exista un repos itory central, branch-urile sun! adesea sch imbate pr in email. Example relevante de VCS dislribuite sunt: gil. dares. Mercurial. Bazaar. se lin 10ale fi~ierel e care nu pol Ii generate allfe!. Cu alte cuvinle. sislemele VCS in mentin surse, dar nu si lisiere binare. alt~ regu l~ este ca, in orice moment, starea repository-ului sa fie cons istenta; codul trebuie tot timpul sa comp ileze. indiferent daca are buguri sau facilitAli incomplete. Sintagma "a stnea build-ul" descrie un com mit care lasa codul intro stare in care nu se comp ileaza_

vcs

14.4,2

Subversion

Subversion ' este sistemul cenlral izat cel mai lolosit in momentul de fatA . ESle urmasuf CVS ~i adopta 0 abordare cfas ica , simplu de inlefes _ Executabilul de Subversion se numeste II vn. Operalia prin care se creaz<'i un working copy este svn checkout. Subversion poate funcliona peste SSH. sau poate lofosi protocoful propriu.
vla d ~co< m y<

$ svn

c n ec~ o ut

$vn : l!sv n. rosedu, o<g!wouso

Pentru a face un nou commit, se fofoseste sv n commi t. Schimbiirile sunt automat transmise serverului central. deci compulerul are nevoie de conexi une la retea . inainte de a face un commit , se recomanda actualizarea working copy-ului pentru a evita conllictele. Aceast lucru se lace folosind comanda svn update . Ad<'iugarea unui nou fisier la repository se face folosind svn add. Transferul c<'itre server nu se va face, insa, decdt la urmato rul comm it . Folos ind sv n s t at u s, se poate inspecta sta rea copiei de lucru. Aceast1i comand<'i tip<'ireste un sumar al li~ierelor schimbate sau ad<'iugate. dar ~i at celor care nu sunt in repos itory-ul centra l ("u ntracked"). Pe ntru a vedea schimbarile aduse li~ierelor, se lolose~te sv n diff. Subversion nu are suport nativ pentru branchuri ~i tag"uri, lapt pentru care majorilatea repository-urilor contin, in rM1icin1i, 3 directoare: br a.nches - simuleaz1i lunctionarea branch-uri lor din alte VCS-uri. Practic. crearea unui branch este 0 copiere a surselor intr"un nou subdirector al b ranches ; tags - simuleaza ex istenla tag-urilor. Crearea unui tag este echivalenta cu 0 copiere, cu menliunea ca existA 0 conventie ca nimeni sa nu modifice continutul directorulu i ta.gs
, http)ls ut.v.""m.tigris.orgl

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

481

tru nk - aici rez ida codul propriu-zis. Acest director este sursa copierilor care lac taguri ~i branchuri.

14.4.3 Gil
Gil' eSle un ves distribuitdezvoltat, initial, de Linus Torvalds. Se dislinge prin Ilexibililate ~i viteza ~i are a comunitale activa. Este sistemul de versionare lolosit de kernelul Unu x. Pentru a fo losi elicient Gil. se recomanda activarea culorilor si conligurarea globala a numelui ~i adresei de mail a utilizatoru lui.

, , ,

"lad@cormyr vlad@co rrny r "lad@cor myr

, ,

git con f ig -- g l obal US"Lnam" " John DO,," \l i t con!>\1 -- \llobal USH . .,ma il " john . doe@foobar . co m"
alway~

\lit conh\l -- global colo r. ui

Operalia de creare a unui '"working copy' (numit branch i n term inologie Gil) esle git clone. Pentru comunicalia cu serverul se pol lolosi HTTP sau SSH, dar este recomandat protocolul propriu Git, care are supor! mai bun de oompresie.
vlad@cormyr S git c l o ne glt : llglt . rosedu. o rg/rt t . git

Dupa modificarea lisierelor. ele trebuiesc adaugate explicit si apoi creat un comm it. in cultura Gil, acest lucru se sumarizeaza prin "Gitlracks changes , nol liles-. git commi t lanseaza un editor In care este solicitala 0 descriere a noului com mit.

,
,

vl~d @ cormyr

$ g i t add binops.c

vhMcormyr S git conunit

Starea branchului curent poate Ii inspectata tolosird git st a t u s , iar schimbarile pot Ii propagale caIre branch-ul de unde sa facut clonarea ("origin-) folosind gi t push. Sincronizarea cu origin se face lolosind gi t pull . Aspecte netriviale ale utilizarii Git sunt lucrul cu branchuri, operaliile de merge, rezolvarea confl iclelor. sau fo losirea gi t rebase.

14.5

Analiza

~i

parcurgerea codului

Un dezvollalor soltware prolesionist va petrece, de regula , mull mai mul! limp In parcurgerea, Inlelegerea si revizia lisierelor cod sursa decAt In crearea de cOd. Altlel spus, operatia de citire a codu lui este mai Irecvenla ~i mai de durata decat cea de scriere. Pentru a lacilita Intelegerea codului, eel care scrie eodut va trebui sa urmareasca un Slil de codare sau un set de norme. in ace l a~i timp, Insa. eel care urmare~te sau rev izuieste codul dispune de un set de utilitare speciliee acestui seop. in momentul In care proiectul software dispune de multe li~iere sursA. esle loarte important ca rev izo rul sa ajunga rapid la anumile pozitii din eadrul lisierelor sursa.
, http;lIgi! .cm.oomi

482

lNTRODUCERE iN SISTEME DE OPEAARE

Utilitare precum ctags ajut1\. rev izoru l 511 ajungi\ in locul unde a lost definili'l 0 lunetie sau 0 variab ila din doar caleva combina\ii de taste. Revizorul poata urmari astlel selul

de apeluri din cadru l unei apliealii. sau locurile in care 0 anum itA variabil.:i eSle Iolosil1l. sau utilizata. Unale IDE-uri (precum Microsoft Visual Studio (vexi sectiu nea 14.12. t )_

14.5.1

ctags

Utilitarul ctags eSle lolosit penlru a genera un index al simbolurilor dintr-un set de li~iere surs!!. pentru parcurgerea uscarA a aeeslora. Indexul eSla general inlr-un Iisier tag care va Ii ul1erior lolosit de un editor.

Uti litarul a re asociate doua comenzi: ctaq" 5i .. t a q". Comanda ctaq" eSla 101 0sit1l.
pentru a genera fisierul index pentru a Ii fotosit de editoare din famit ia vi , iar comanda etaq a genereaza fi~ier index pentru ed itoare din famil ia Emacs. Ediloarele folosesc comenzi specializate pentru a gasi rapid locul In care esle delinitaiUlil izata 0 lunclie sau variabi la pe baza fisierului index. In general , penlru a genera un li~ier index se fo lose~te op!iunea -R penlru a parcurge recursiv loate fisiere le sursa din directorul curen!. Astlel, pentru a genera f i~ierele index pentru sursele bibliotec ii standard C, se vor lolosi comenz ile:

, , , ,

r~zv~n @v~ l h~ ll ~ r~zv~n @ v~ l h~ ll ~

-/p~ckage~/g lib c - 2 . -/p~ckag@~/g lib c-2 .

7/g li bc - 2.7$

ctag~

7/g li bc - 2 . 7$ "tags

-, -,
TAGS

ra, va n@va l ha ll a:-/packages/gllbc - 2 . 7/gl1bc - 2.1$ - r ,,- r -- r -ra:van ra.van 533S062 0., 1 1 : 31 TAGS -t"-r--r-0., 1 1 ; 31 tags r~.v~n U.v~n 7364 1 95

In mod implicit, ctaqs genereaza l isierul tags , iar et aq s genereaza Ii~ierul TAGS. Fi~ieru l este incarcat automat de editor in cazu i in ca re li~ierul index se gase~te in direc\orul curen\. Altlel , lisierul poate Ii Incarcal in Vim lolosind 0 comanda de forma
: set
t~g -/ uor/include/ugs

" "

" -, tags

sau in Emacs, lolosind


M -x
vi s it -t~~ " -t~ bl e

Detalii despre utilizarea lisierelor index in Vim per"ltru parcurgerea rap ida a codului se gasesc in sec~unea 14.5.1. Pentru Emacs, informa!ii ulile sunt descrise in sec!iunea asociata a manualului'.

14.5.2

Analiza statics a codului - splint

Pe Ia-nga erorile raporlate de compila\or, sau erorile/probleme le din momentul execu!iei raporlale de ulilitare prec um Valgrind (vezi sec!iunea 14.8.2), dezvoltatorul poate lolosi utilitare de ar"l aliza statica a codu lui (SIalic code analysis' ). Aceste utilitare pa rcurg codul sursa lara compilarea, ir"l\erpretarea sau execu\area acestuia.
, http;lIwww.Q nu.o rWsoflware1.. macolmanualltllml_node1.. mac.rrag .hlm ,. Tag. ' http;l/e n,wikiped ia,orglwikiiSla tic_code_ana!y$i.

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

483

Un astlel de utilitar este Splint ' . Descendent al utilitarului lint din Unix, Splint parmits detectarea polenlialelor probleme de secu ril ate ~i a erorilor de coda re. Splinl poale Ii conlig urat s~ loloseasc.:i diverse niveluri de verilicare. Conlorm paginii de manual, se ofer.:i un premiu special pa rsoanei care creeaza un program util care nu raporteaza erori in cazul lolosiri i opliunii - st r i c t {verilicare strictaj. Un exemplu de rula re a comenzii s pl int si 0 parte a iesirii acesteia este prezentat mai
jOS:
ra.von@vO lhOll o : /tmp$ splint - wornpos i x min i - $hell . c Splint 3.1.2 --- 20 ~eb Z009

,
10

mini - s h e ll .c: (in function simple_ c mdl mjn! - shel l .c:38 ; S : Return value (type intI ignored : close(pi.n (OI) ~ Result returned by function call is not uged . If th,s IS intended, can C&st 7 r~ s ult to (vo i d I t o ~limiM t ~ m~ s 5a\l'" (Us e - retvahn t t o inhibit warning) 8 mlni-"h~1l.c : S2 : 7 : T ~~ t ~xprM ~ ion for if not bool e an , t yp~ int : Test expr""" i on type is no t inhibit
"~ rnin\ll

boolean or i nt .

(US" - predboolint t o

"
1>

mini - .he ll .c:6S : S : Assignment of int to char : str(OI 0 13 Types ore incompatible . (Us e - type to inh ibit warning I ,. mini - shel l .c:68 ; 48 ; ~o$Sibly null storage possed as non - null pua m: SHlen Igetenvipar-'atr!ngl) , 6 mini - she ll .c:2S:S : ~unct;on exported but not used ouUide mini - s h e ll : " sImple_ coo '$ A declaration i9 exported , but not used outside thi s module . D~claration can ,. U 5~ stat i c qualifier. I U s ~ -~xportloGa l to i nhibit "~rnin\l) 20 mini -,h .. ll. c :1 11 : 1 : D@flni t ion of s imp l ,,_cmd

"

21

(.

Dup1\ cum re iese din exemplul de mai sus. cateva din Ire probleme de codare, neraportate implicit de compilator, sunt: ignorarea valorii de retur a unei lunctii; folosirea unei expresii care intoarce 0 valoare intreaga in locul unei valori booleene; initializarea unei variabile cu 0 valoare de alt tip; posibila folosire a unei valori null; definirea unei lunClii nonstatice care nu este fo losita lntr-un alt modul. o bun~ parte din problemele rapo rtate de Splint nu sunt re levante in co ntextu l unui program. De aceea, Splint pune la dispoz~i a dezvo ltatorului optiuni de dezaClivare a anumitor mesaje, precum - expor t lo c al , - predb ool ini t, - ret vali nt etc. in general, inlormaliile olerite de Splint pot Ii toarte striCle ~i t1\ra importanta deosebitil. in cadrul programului. De aceea, S9 recomanda se lectarea inlormatiilor lurni zate dupa relevanla acestora.
, http;llwww.splint.orgl

484

lNTRODU CERE iN SISTEME DE OPEAARE

14.6

Automatizarea compilarii

Este posibil ca unele aplica!ii sa nu se gaseasca in repository-urile distribu!iei Iolosite. Mai mUll, este posibil ca aces tea sA nu lie disponibile intr-un lormat ce ar lacilita instalarea (cum ar Ii .deb, .rpm). Astlel de aplicalii trebuie compilate explicit pentru platlorma 1010sitA, pornind de la sursele lor.

14.6.1 Compilarea unei aplicalii din surse


De cele mai multe ori, sursele unei aplicalii 5e gas esc in lormatul tar.gz sau tar.bz2. A~adar, primul pas asta axlragaraa surselor din aceste arhive lolosind utililarul tar. Presupunand cA arlliva cu sursele se numesle loo.tar.gz sau 100.tar.bz2, pentru a exlrage sursele trebuie rulata una din comenzile:
user@.y. : -$
t~ r t~ r

- xzv! - xjv!

f oo . t~r . g' foo . t ~r.bz2

,
3

( ... I
use r @.ys:-$

Urmatorul pas i l raprez inta obtinarea liSierului makelile. In acest punct este recomandata citirea li~ierelor README sau INSTALL pentru a vedea exact pa~ i i ce trabuie urmati. Desi pot aparea miCi dilerente, majoritatea aplica!iilor pot Ii instalate urmarind pa~ i i descri~i in continuare. Scriptul configure este cel responsab il de genera rea makelile-ului, acesta verilicand versiun ile de software disponibile si dacA diverse dependinte sunt indeplinite. Este important de men)ionat cA prin modilicarea acestui script sau prin parametrii pasati in linia de comarKIA, se poate specifica directorul in care urmeaza sa fie instalata aplicalia. Scriptul se gase~te in directorul in care am extras sursele, 5i rularea lui se lace astfel:
user@.y. , -/foo$ . /configure

Orice lei de eroare intalniUi la acest pas, cum ar Ii lipsa unei alte aplicali i, va Ii 5emnaiatA In output-ul comenzii ~i trebu ie rezolvata inainle de trecerea la urmatoarea etapa. in urma scriptului de conligurare a rezultat un fisier numit makelile (sau Makelile, depinde de l i ~ i erul de conligurare). pe care II vom lolosi pentru a compila sursele. Pentru a lace acest lucru vom lolosi utilitaru l make, care cauta In directorul curent un fi~ier makefile pe care II va Iolosi in obtinerea executabilelor:
user@sys : /tooS
ma~e

Astlel. dupa rularea make, sursele vor Ii comp ilate insa executabilele rezultate se alia doar in directorul curent. Pentru a Ie muta in directorul de instalare:
userhys , /fooS
ma ~ e

Install

in acest moment, aplica!ia a lost instalata ~i daca directorul in care aceasta se alia exista In PATH, ar trebu i sa se poata rula din directorul curent. Pentru a scapa de fisierele temporare ce au fost generate In procesul de configurare compi lare. se poate rula:
~i

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE

485

user@s ys : -i foo $

ma ~ e

clea n

Pentru dezinstalarea aplicatiei. pot Ii ~terse manual fi~ierele din directorul unde a lost instalata, sau se poate lolosi makelileul generat anterior, ruliindu-se:
us er @s y. , -/ foo $ m a ke unins ta ii

GNU Autotools GNU Autotools ' reprez inta un set de utilitare din cadrul proiectului GNU ce ajuta la
cre~terea

porlabilitalii pachetelor software ~i a simplilicarH procesului de instalare a acestora. Cum am vAzut anterior, maj or~atea aplicatiilor pot Ii instalate urmiind cei trei pasi simpli : .lconligure, make, make install. Acesl lucru se datoreaza in mare parte utilitarelor din Autotoo ls, care reusesc sa unilormizeze procesul de build, indilerent de platlorma.

Utilitarele care lac parte din Autotools sunt: Automake - pornind de la un li~ier numit Makefite.am. creeaza un li~ier Makefile.in, lolosil apoi de scriptul de conligurare pentru a genera Makelile-ul linal; Autoconl - este cel care creeaza seriptul de conligurare, pornind de la un lisier numit conf igure.ae; Liblool - abstractizeaza procesul de creeare a librariilor slalice si dinamice.

14.7

Execulia unui program

In urma procesului de compilare ~i linkedilare rezulta un executabil (vezi secliunea 1 t .1.2). AceSI executabil de\ine inlormatii necesare sistemului de ope rare la rulare. pentru crearea unui proces.

14.7.1

Zonele de memorie ale unui executabil

~i

proces

Un l i ~ ier executabil are un lormal specilic. Pe liinga datele de organizare interna, un execulabil contine i nforma~i despre instnJCliunile care vcr fi executale pe procesor ~i datele lolosite. Aceste informa!ii se vor sloca in memorie in momenlul crearii ~i rularii procesului asocial. Un executabil va contine, a5adar. zona de cod 5i zonele de dalB. Zona de cod , denumila ~i zona text esle, de lapt, traduce rea in cod masina a luncliilor scrise in cod sursa. Aceste instruc!iuni vor Ii executate pe rand pe procesor, in momenlul crearii procesului. Functia main dintr-un program C este punetul de start din zona de Cod. Zonete de date reprezinta eehivalentul binar al variab ilelor globale delinite de un programator in codul sursa. Exista mai multe zone de date: zona pen t ru date initializa t e (.da/a) unde sunt stocate variabi lele globale initializate (de forma i n t size - 30 ;)
, http ;lIsoulce w a le.orglao.rtot>ookiacrtot>ooklautobook.htm l

486

lNTRODU CERE iN SISTEME DE OPEAARE

zona pent ru da.te n ei n i 1; ia l i za.te (. bss ) unde sun! stocate variabi lele globale neinilializa\e (de forma i nt file_a r ray (10 J ;) zona pentru ct3te read - o n ly (. rodat", ) unde sun! stocate daleje ce pot Ii doar citile ; din aceasta ca\egorie lac parte literalii din C: de exemplu, In calul instrUCliunii print! (" Hello , World! \n") ; , sirul Hello , World\ n este stocatin . rodata .

In momentul crearii procesului, sa aloea memorie pentru zonete de mai sus. in afara acestor zone, in cactrul unui proces 5e atoea zone de memorie doar pe parcursul rularii (zone de memorie dinamice), care nu sun! disponibile in executabil. Cele mai importante
zone sun! sliva 5i heap-ul.

Sliva (Slack) este zona de memerie dinamica forositA pentru a retine informa!ii despre apelurile de lunctii ~i pentru a stoca variab ilele locale lunctiilor. La liecare apel de lunclie, pe 5tiv~ se creeaz~ un cadru de stiv~ (stac/o; frame) cu inlorma~ i des pre apel 5i penlru alocarea var iabilelor locale lunctiei. in momenlul in care se revine din lunc!ii. cadrul de sliv~ asociat esle eliberat de pe stiv~. Molivt.ll pentru care se recomand~ avitarea apelurilor recurs ive eSle inc~rcarea stivai in cazul unui num~r mare de apeluri. Heap-ul esle zona de memorie lolosila pentru alocari dinamice. Alocari le dinamice sunl aloc~rile care se petree in timpul rul~rii procesului (Ia runtime). Opu$ul eSle dat de alocanle slatice, care sunl realizale in mom en lui compil~rii Variabilele glob ale sunl alocale static in zona. da t a sau in zona . bss. Alocarea dinamica se rea lizeaza, in C. cu ajutorul apelurilor de biblioleca malloc, calloc sau realloo . AceSlea primesc ca argument numarul de octeti pentru regiunea care va Ii alocala. 0 gre~eala Irecventa eSle omilerea eliberarii zonelor de memorie alocale. Orice zona de memorie alocata folosind apelurile din lam ilia malloc va trebui dezalocata fo losind apelul free atunci cand nu mai este lolosita. Daca se omite operalia de eliberare a memoriei se poate ajunge la situalii de memory leaking ' care alecleaza negativ lunclionarea aplicaUai sau a sistemului.

14.7.2

Utilizarea bibliotecilor partajate

in momentul executiei, sislemul de operare efectueaza 0 serie de opera!ii pentru a pregati aplica!ia pentru rulare. Procesele lucreaza in zone de memorie independente unele de anele. Astlel. ceea ce se gaseste la 0 anumit<'.i adresa pentru un proces nu se gase~te si la al! proces. Pe IAnga incarcarea zonei de cod ~ i a zonei de date din executabil, sislemul de operare trebuie sa incarce ~ i bibliotecile partajate. Bibliotecile statice davin parte din aplicatii ~i nu au cum sa fie Iralate la execulie. Pentru a vizualiza lisla bibliotecilor partajale utilizale de un program. sa comanda ldd , precum in exemplul urmalor:
mircea@couga~ : -/carte-usolcap-10S

folose~te

1dd Ibin/ba"h -> (Oxffff e OOO) li bread line . 3o . 5 - > Ihb/lib r ead li ne . ,o . 5 (Oxb;eb4000) li bh i 'tory . ~o . 5 _> llib/libh i .to r y . so 5 (Oxb;eacOOO)
lin u~ - gat e . so . l

, http)le n.wikiped ia.orglwi!<i/Memory__oak

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE

487

, ,

li b nc ur ' ' ' ' . $O . S _> /lib/ li b n c u r ." . o . S (O x b 7e6~OOO) li b d l .so . 2 - > Ilib/libd l . so.2 ( Ox b 1e66000 ) ll b c.so . 6 - > Illb/llbc . so . 6 ( Ox b 7d3aOOO ) 1l1 b / l d - llnoX . M . 2 IOxb7fO d OO O)

Informatiile despre bibliotecile partajate allate in sistem sunt colectate {manual sau automat} utilizand programulldconf"iq. Aceasta comanda: cauta biblioteci partajate in loca)iile standard letCJ1d.so.conf,
~i

in directoarele specificate in

configureaza legaturi simbolice corecle in directoarele cu biblioleci (penlru a oleri denumiri standard bibiiteciior. din punct de vedere ailormatului) salveaza relerintele catre biblioteci intrun cache. Rularea programului l dconfi q la liecare bootare este inelicienta - acesta este un motiv in plus pentru utilizarea unui cache. Modul in care programele utilizeaza bibliotecile de junc)ii este dejinit la linkeditare. Linkerul (ld) cauta bibliotecile partajate in directoarele standard si in directoarele adaugate in linia de comanda prin intermediul unor parametri speciali (- r pa th di r ~i - Ldir). inlrun sislem bazat pe biblilecile standard GNU C, inclusiv loale sistemele Unu ~ , pornirea unui executabil de tip ELF (formatul standard al executabilelor) determiM incarcarea ~i ru larea unui program loader. Pe sislemele Unux, acesta este /lib/l d - li nux . so . x (unde X este vers iunea). Acest loader gaseste ~i i ncarca bibliotecile partajate utilizate de catre program. Oaca se doreste supraincarcarea unor func)i i dintro biblioteca dar cu paslrarea restului bibliotecii, se pol introduce bibliotecile supraincarcate in /e t e / l d . s o . pr el oad aceste biblioteci preincarcate vo r avea intaietate relativ la setul st8l1dard. Acest liSier pentru preincarcari este utilizat de obicei pentru patchuri de urgenta - distribu)iile nu includ de obicei un astfel de fisier.

14.7.3

Analiza apelurilor de sistem

~i

a semnalelor

Pentru a interactiona cu sistemul de operare (cel care partajeaza resurse le computerului), bibiiotecile de func)ii apeleaza 0 serie de func)ii ale kernelului numite apeluri de sistem (system calls) . in continuare sunt prezentale doar cateva dintre utilizarile apelurilor de sistem: deschiderealinchiderea unui fisier (open, cl os e) citirealscrierea dintrunl intrun fis ier (r ea d, wr ita) deschiderea unui socket (pentru 0 cone~ iune TCPIIP) executia unui program (exe cv ) Aceste junc)ii sunl implementate la nivelul nucleului sislemului de operare deoarece SOul face management-ul resu rselor. Bibliotecile de lunctii "imbraca" aceste apeluri i n fu nc)ii/clasel obiecte utilizabile direct de caire programatori.

488
stra ce

lNTRODU CERE iN SIS TEME DE OPEAARE

Comat1da strace eSle util1!. penlru urm1!.rirea apelurilor de sislem efectuale la e~ecul i a unui program. Aceasta analiza reprezinta 0 metoda destul de eficienta in debl.lgging-ul programelor al caror cod sursa nu-I allem. Pentru a observa ce informa!ii poale sa olere s t race, se va analiza i e~irea programului penlru 0 aplicatie simpla (0 parte din iesirea programului a lost eliminah'1 pentru a usura analiza):
m1r c ~a @ couga r: -/~ d rt e- u ~ olc~p - l0$ s tr ac ~

, ,

~ xecv ~I !b in / .. cho

(".,ch o ,

U50") ,

e cho USO [I. 5 1 v .. n - I) I . 0


0

un~me l{ .y. _ LinUK .

node . o qu~rium ,

.. j ) -

( , .. 1
~ cc e5"1 !HC/ ld.so . pr "lo~d ,

ILOK)

_ -1 ENOENT (No such file or

<;Ii rectory)

" ,
!

open I" fete/ hi. so . cach .. ". O_ RDONLY) 3 tstH6413 , l at--",ode- S_ lfREG I 064 4, at_ alte- 141619 ,
{. ..

... 11 - 0

'0 " "


13

close 13) - 0 o pen l " /lib/tla/libc . so . 6" , O_ RDONLY) - 3 read 13, " \1 71ELF\ 1 1 1 1 I 1010101010\0\0\0\0\3\0\3\01 1 1010IOI220R\I " ... , - 512 h t ~ t 6413 , l, t--",ode _ S_ IFREG I 0755 , st_ ,ize_ 1363203 , ... ) 1 - 0
(

5121

J
0 O_RDON LYI O_LARGEFILE) _ } l.t_mode - S_ IFREG I 06 44, st_ site- 38399616 , ,11 - 0 0 II , ... 1) 0

,. " '6 "

clo s e (3) ( ... I


openl"/u.r/ li b/ l oc" l e/locale - ~rchi"e ",

tstat6413,

'"
,.

( ... 1
close I} )

'"
21
;!2

{. .. 1
tstat6411 ,
{. . .

I H --",ode- S_ IFCHR I 0600 , 8t_ rdev- m" kedev(136 ,

1
ll,

'" ,.

.. rit~ )

'uso \n " , 4USO

,5
,.

{. .. 1
exit_ groupIO)

Sa poate observa:
primul apel de sistem (ex ecve) indica ce parametri a primit programul: echo si

USO
programul a i ncercat sa deschida fisierul /etc/l d. s o . preload dar nu a fost gAsit (scopul acestui lisier este descris in subcapitolul dedicat bibliotecilor) apelul de sistem open a returnat va loarea 3 - aceasta rep rezinta: un descriptor de fisier (fd - file descriptor) - descriptorul de lisier este folosit in procesele de citire ~i in procesele de scriere (e un lei de pointer la li~ier, pointer utilizat de sislemul de operare) apelul de sistem close are ca singur parametru - descriptorul de trebuie inchis - odala inch is, un descriptor de fisier poale Ii refo losit apelul de sistem read indica 0 citire din descriptorul de fisier 3 apelul de sistem write are 3 parametri:
li~ i er

care

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

489

- 1 " file descriptorul uooe se scrie: in cazul nostru, dupA cum stirn, 1 este fi le descriptor-ul pentru stdout (iesirea staooard) - U80\n. acesta esle lexlul ce trebuie afi~at de comanda echo

- 4 lungimea textu lui ce Irebuie atisat


in acesl program sau pulut identifica cil.leva ape luri de sistem frecvente.

14.8 Depanarea unui program


De ce le mai mulle ori. programele scrise de noi nu lunctioneaza corectde la prima rulare. De asemenea, se peate intil.mpla ca un program care a func!ionat corect timp de cil.!iva ani inainte sa nu mai ru leze bine acum, in momentul introducerii unei date nepreva.zute initial. Oepanarea unui program este 0 metoda de a gasi ~i identific a aceste erori sau delecte din program. Oepanarea este 0 activ itatea de durata si obosiloare, de obicei. Abi litatea progra matorului de a identilica bugurile (gresel ile d in program) reprezinta factorul che ie in acest procas. Dar, nu trebuie uitata influenja pe care 0 au melodele de depanare (debugging). Oesigur, pentru programele scurte se poate lolosi prinff pentru alisarea diverselor informa!ii chiar daca eSle 0 metoda ce presupune modificarea codului mai mull decat este nevoie pentru corectarea greselii. Pentru programele mai complicate este necesara lolosirea unor in strumente de depanare, asa numitele debuggers. Aceslea sunt programe sau biblioteci ce-i permit programatorului monitorizarea execu!iei unui program, oferindu i capac ~atea de a1 porni, opri, reporni ~i. in unele cawri . a rula inapoi.

14 .8 .1

gdb, ddd

Un bun in strument de debug este GNU Debugger cunoscul mai mull sub denumirea prescurtata de GOB ' , depanatorul standard GNU, scris de Richard Stallman in 1986. Este un instrument portabil. capabil de a depana programe scrise Intr-o suita mai larga de limbaie (C, Ada , Basic. Fortran, C++ etc). GOB se remarca prin urmatoarele 4 lucruri, capacitati cerute de la orice program de depanare a codului: se permite pornirea executiei unui program, specihcand oriee parametru ce-i poate afecta comportamentul; este posibilA opr irea Pfogramului intr-un anumit punct, pe baza unor cond i!ii specilicate de utilizator ; i n cazu l opririi premature a programului. se pot examina toate condi!iile ce au dus la acest caz ;
, http ;l/$O u'cewa '" .orgl\/db

C JPYnghted

matef~a.l

490

INTRODUCERE iN SISTEME DE OPEAARE

S9 permile schimbarea valorii unei variab ile - uneori putandu-se schimba si instructiuni - pentru a modifica executia programului lara a parasi depanatorul.

Pentru a pul ea depana un program eu GOB, acesta trebuie inlai com pilat utilizand un flag special -g pentru a se permile salva rea anumito r informalii ce vcr Ii utile in co ntinuare. De asemenea, S9 recomandA evitarea oricArei optimizAri.
1 n conlinuare, yom prezenta un exemplu de rulare a unui program sub gdb. Pornim prin a lisla problema pe care 0 avem:
mi h ~ i @ ): e l <;l o n: /t mp $

cat I . e

2 fin c luae <.t at o , h >


, h n cl ud e <at d l !b . h >
i nt
m ~i n l)

" " "


" '"
2<

, '" " " " " " " "

i n t i, <\ , J' n - 6; a _ ( i nt 'l mall ocl n si z e of( c h a r )l ; fo r ( i _ 0 ; i < n ; i'_ ) 1 for I) - 0 ; ) < n ; ) ++ j
~ Ii]

a.

Ii ] -

Ii - i ) ;

0, n, i ++ ) ( for ( ) - 0 , j < no j +t j p r i nU ( " ' a ", a l i ll ) l l ; p ri n tf( " \n " ) , for ( i -

r ~ t urn

0;

"

mi h ~i @ hld o n ; -!t rnp $

.,
~,

9 cc - W ~ll I . e l . c ; I n f unction ma i n ; l .c : ~ ' warn1ng : ~$ si gn m ent f r om incomp ~ tib l e p o i nter t y p e


. /a . o ut

m i h aj@ ~ e la o n: 'lt mp$ S e gm e n t~t l o n

2Il

f"u lt
~i

este normal sll tralllm inttli warn ingurile diferit acum. ignorand outputul lui gee.

De~i

apoi sa depanam codul. yom proceda

,
,

m . h ~i@ ~ e )a o n: '/ t mp $ m i h ai@ ~ e la o n: 'll mp $

gee - wa ll - g - 00 1 . c gab . /a . o ut

Igdb) r un St ar ting p r o gra m:

I ho m ~ /m,haif t mp/a . out S ~ qm e n t a ti o n

Pr o g r a m r ~ c ~ iv ~ d ' i gnal SI GS EGV, Ox 080 4B 4 88 i n rn ~ i n ( ) at I . c : ll

hul t.

10

II

~l i)l i l

- i ' ( i-il ;

" " " "


'" "

11

.
, ,

19ab)

li st

ln t i , n _ 6; "

n,

" a,

J;

lint ) mallo c(n. s 1z eof(ch "r ll ;

(gab) pr int . " S4 - l i n t . j OxO Igd b) brM k ma i n

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE


18 ,.
~ ~,

491

..

1 at OxS04844S : file J.e , li n e 7 . Igdb) r The prog ra m b ei ng deb ugged has bee n started a l ready . Start it fro m the b eginning? Iy or n ) y Starti ng p rog ram: Ihome/mihai/tmp/a.out
Bre~ k po in t

" 2'

Brea k poi n t L main ( ) at I . c : ' ,S 7 n 6, 26 Ig d b ) n ext ~, 6 a (,n t_) mall o cl n ,izeof(char )) i ' 8 Ig d b) diSpl a y a 2'l I : a ~ l i n t ) Oxb f,,623SS JO Ig d b) n 30 9 f orO ~ O ; i< n ; i+. ){ J2 I : ~ _ l i n t ) OxS63400S Igdb) 10 I: a fo r " I Oxa63400S l j _ O; j< n ; j ++)

3?

'" ,,", 'S

l int

:)a

(gdbl q The prog ra m is running .

Exit any wa y ? (y or n l Y

In interiorul gdb, sau fo losit urmatoarele comenzi: run. prescurtat r - permite execu!ia programului: lisl, prescurlal I - permile listarea codului programu lui in jurul punctului unde acesta sa oprit: print, prescurtat p - permite
afi~area

unei variabi le:

brea k, prescurtat b - per mite stabil irea unui punct de intrerupere in interiorul prog ramului; next. prescuratat n - executa urmatoa rea instruc!iune a program ului (cea afisata in momentul tastarii comen~ii): display, disp - per mite
afi~area

unei variab ile pe parc ursul procesului de depanare;


ie~ i rea

quit. q - term inarea depanani programului, Observali ca simpla trimitere a unei executa rea coman~ii anterioa ra.
comen~i

din gdb.

goale (doar apasarea taslei Enter) duce la

Pentru mai mult detalii, consultati manualui GDB' ,.

ddd
Oe~i foarte util. GOB are un de~avantaj major: neavl'lnd interlata grafica. folosirea lui este mai graoaia. Din ferici re, existl'l un front-end gralic sub denumirea de Data Display Oebllgger (000 2).

Pe Il'Inga oferirea unei interfe)e grafice ce permite stab ilirea mull mai usoara a unor punCle de op rire a programului (breakpoints), ddd s-a remarcat pri n afisarea interactiva
, http ://sou,cewar...orglgdblc um.nlloni n_ cslgdb_ toc. h Iml.S EC_ Co ot.. nt. ' http ;liwwN ,g 0 u.o rg/soflware1Odd1

492

lNTRODU CERE iN SISTEME DE OPEAARE

a clatelor programului utilizand graluo . Aceastli afisare permite studierea unui program
prin anal iza datelor
~i

nu a Ijniilor de cod, un proces evident mult mai simplu.


gee
ddd
- W ~ll

m i ha i @ ~ eldon : '/ t mpS

- g - 00 I . e

"" h~i @ k ~ldon ' -!tmps

./ ~ . ou t

Fiind un front-end al GOB. pr incipiile de 10105ire sun! similare. Se va compi la sursa va porni debuggerul, restul comenzilor liind inlocuite ell butoane in mediulgrafic.
~i

sa

14.8.2 valgrind
Valgrind' eSle un utililar de programare lolosit pentru a depana memoria. a deJecta leak-urile de memoria 51a lace profiling. Autorul lui esle Julian Seward, care in 2006 a cAstigat un al dol19a Google-O-Reilly Open Source Award penlru Valgrind. Valgrind esle un framework de analiza. dinamica.. EI conIine un set de ulililare, iar fiecare dintre acestea real izeaza. un tip aparte de depanare sau profiling. Dintre aceste componen te, cele mai impertante sunt: memcheck - checker de memorie. cachegrind - simulator de cache, numarul de instruc)iuni executate miss-uri cauzate helgrind - depisleaza posibile race cond itions din program massif - un profiler pentru heap. spune cat memory heap utilizeaza. programul Cel mai des lolosit esle memcheck, de aceea implicit valgrind II folosesle pe acesta, daca. se doreste folosirea allui utilitar acesta se va da ca parametru.
~n d u,, @ Go li at h : -$ v~lgri.nd -- t ool . m ~""i.f ./t"~t

~i

cache

a ndrew@ Go li a t h ,-$ valgrind -- tool - c a c h egri nd , I te st

Similar cu gdb, programul Irebuie com pilat cu Ilagul -g penlru a primit informalii de depanare, astlel incal sa sa peala specifica linia exacta la care a aparul 0 problema. Compilarea lara. optimizari eSle ~i ea recomanda daca eSle posibil, daca. acesl lucru ar determina un timp de rutare prea mare se recomanda -01. Folosirea unei oplimizari de la 02 in sus poate produce erori de valori neinilializale care nu sunt corecle. In conlinuare vom analiza un exemplu de ru lare. Daca in mod normal ali rula programul aSlfel:
~n dr e,, @ Go li at h , -$

. /to,s <- acg J

~ r g2

Pentru a rula in valgrind cu verificarea leak-urilor de memorie rulati urma.loarea comanda:


an d "ew@ Co ) ta t h :-$ valg rl nd -- J ea <- c h ec <- fu ll . / te st 8rg l arg 2

Utilitarul memcheck depisteaza urma.toarele tipuri de erori:


, http)le n,wikiped ia,orglwi!<iNa lgrind

CAPITOLUL 14. UTlLlTARE PENTRU DEZVOLTARE

493

variab ile neinitializate citiri/scrier i in zone de memorie eli berate citiri/scrier i in zone inaccesibile leak-uri de memorie Exemple de output pentru anum ite erori: citire invalida
, " Inva li d writ e of size 1 at OxS04S41E : main lexarnple2.e : 61 IIddress OxiellJ60711 is 0 bytes after a b l ock of she 10 alloe ' d at OxlB900DDO : malloc Ivg_ rep l ace.J\'l"ll oc . c : 1311 by OxS04S40F : main lexa rnp l e2.e , 51

utilizare de variab ile neinitializate


, Co nd i tion"l jump or move depend. on uniniti a li.ed valuel., at Ox402DFA94 : _ ID_ vfprintf Litoa . h : 49) b y Ox402ES476 , _ IO""pri ntf (printf.c : 361 by OxS04S4"l2 : m&ln Itests/rnanuell . c : SI

free-uri ilegale
, " Inva li d free ( ) at OK4004FFDF : tree Ivg_c li e ntma ll oc.c : 577) by OxS04S4C7 : main Itests/doub l efree.c , IO ) IIddre.s Ox3S0"Jf"le4 1S 0 bytes inside a b l oc k of si.e 177 free ' d at Ox4004FFDF : tree Ivg_ c li e n tma ll oc.c : 577) by OxS04S4C7 : main Itests/doublefree .c : 10 I

suprapunerea adresei destina!ie cu cea sursa la cop ierea unor blocuri de memorie
Source and dest.Mhon overlap in memcpy(Oxbffff294 , O,bffff280, at Ox40026CDC : memcpy Imc_replace _ "trflleM . c : 71 ) by OxS04865A : main love r lap.e : 401 211

2
J

rezumat aileakuriior de memorie


LEIII( SUMMIIRY : ; b locks . definitely lost : bytes indirectly los t : bytes Co blocks . byt e s Co bloc k " . po "" ibly lo" t: ,till r"achable : byte, b l och . ~uppr@~ s @d : 0 byu, 0 bloch .

, ,
,

.. "
" "

'" , '" '"

Pentru mai multe detalii se ~a folosi paramevul --Ieak-checkztul'. detaliate des pre leakuri var arata astfel:

Informatiile

, ,
7 S

S byt " , in 1 b l ock , are defin i t e ly l o ,t in 1 0 " record 1 of 14 at OK ........ : malloe Ivg_ ro'plae".J\'lalloc . c : ... ) by OK ........ . mk Ileak- tr"".e: ll ) b y Ox . main I l u l:- tree.e:39 1 86 (8 direct , SO indirect) byt ... i n I blOcx$ are defi n ite l y l ost i n loss record lJ of 14 at Ox ........ : malloc Ivg_ replace.J\'l"lloc . c : ... ) by Ox ........ : "'k 11M k -tree.c : lll by Ox ........ : mHn llea k- tree .c : 251

494

INTRODU CERE iN SISTEME DE OPERARE

$ilaul proiectului coniine un manual de utilizara ' in care sa pot gasi mai multe i nlorma~i despre erori' si op!iuni' pentru memcheck.
Valgrind ruleaza pe majorilatea pialformeior Linux, exista 5i portari neoficiale penlru NetBSO si Free8SD.

14.9

Medii integrate de dezvoltare

Un madiu integral de dezvoltare asIa construit pentru a spori prod uctivitalea

programatorilor prin clarirea unor componente slrans legate prin intermediul inte rfelei eu utilizatoruL Totu~i, deoarece asia yorba de un sistem complex, productivitalea sporita poate aplirea dupa 0 perioada lunga de adaptare ~i invatare a mediului.
De regu lA, un madiu de dezvol!are (IDE) reprez inta un S inguf program in care sa desfasoara lot procesul de dezvollare: edilare, compilare, depanare etc.

in mod obisnuit. un IDE este orientat pe un limbaj de programare specihc. de~ i exislA ~ i exceptii_

14.9.1

Eclipse

UtilizAnd Java. av{md un comportame nt conligurabil prin plugin-uri, mediul de dezvoltare Ecl ipse' poale Ii ulilizat pentru a dezvolta cod inlr-o multime de limbaie. Sislemul de plugin-uri nu esle doar un mecanism ce permite folosirea mai mullor limbaje de program are, liind posibilA ~i integrarea solu tiilor de version are a codului (SVN). scrierea documenla!iei LaTeX, leslarea aplicatiilor de rel ea etc_ Cu loate aces tea, Eclipse are si cateva dezavanlaje. Interfata graficA este pulin mai complicatA. Fiind scris in Java, esle absolul necesara prezenla unei ma~ini virluale Java in sislem pentru a putea Ii Iolosil. Nu in ullimul rAnd, memoria consumata eSle destul de mare. De asemenea, fiind oriental pe proiecte, mediul de dezvo~are nu se preleaza pentru programele mici (sub 300 de linii) .

14.9.2

Anjuta

Spre deosebire de Eclipse, Anjuta' este un IDE pentru C si C+-. pentru GNUILinux. Scris penlru GTK ~ Gnome , programul olera 0 serie de lacilitati precum managemenlul proieclalor, un depanalor inlaractiv 5i un editor de cod ce permite syntax highlight ~ i source browsing. De asemenea. sunt posibile, prim intermediul unor plugin-uri scrise in C (in viilor C++ ~i Pylhon) diverse conligurari. De exemplu, se poale schimba edilorul de cod din Scintilla
, hnp 1N3 Ig< i nd,0'lIldoc ~manua V m3 .... 8 1 .h Iml ' hllp:i"'a Ig< i nd_O'gldoc oIma .... a Vmc-manual him 1 1t0le- manua I.e "0 t m 'II' ' h llpj"'3Igr i nd_o(gldoc ~maI1Ua V mc_ man ual. hlmlltmc _ m3nua Loplion
hlipJ 1www.l!Clipse_G r9 http) Ipro iec~.gno me .o rlJl~ njul1ii nd e. ' htm I

C JPYnghted matanal

CAPITOlUl14. UTiLITARE PENTRU DEZVOlTARE

495

I"

...

, ~

1 ..... -

''''

I ~

__

Figura 14.1: Eclipse

.."

- -~,",'- '

.....

....

(. -

.~ .

----, ,
--->

........

.'

.. -"'"

-= --,
~.

Figura 14.2: Anjuta sau GlkSourceView in vim sau Emacs prin inlermediul unUI Singur scr ipl scris de ulilizalor. DacA Anjula delecteazA mai multe pluginuri pentru acelasi scop, ulilizatorul va Ii rugal sa selecteze unul din aceslea, selec!ia fiindui memo rata. De asemenea, prin inlermediul plugin-ur ilor se pot introduce facil ita!i de source control (SVN). Mult mai important este faptul ca managerul de proiecle nu re!ine informatii despre proiect in all fisier, astfel fiind posibila dezvoltarea intr-un grup mixt de utilizatori,

496

INTRODUCERE iN SISTEME DE OPERARE

unii folosind Anjuta, altii folos ind editoare clas ice (vim, Emacs). Pelltru dezvoltarea aplica)iilor gra/ice Glk, Anjuta oler.:! un plugin pantru interac!iunea cu Glade. Acceptand ~i limbajul C++. Anjuta clerA un generator de class si un plugin ce va
arata ierarhia cleselor din proiect. De asemenea, eXistA plugin-uri penlru gdb, valgrind

5i gprof (ultimul pantru profilil'\Qul codului seris).

14.10

Managementul proiectelor software

o component<'i importantA in dezvoUarea aplica\i ilor software 0 rep rezint<'i activit<'itile de

ges\iune, monitorizare

~i

con\rol a aces\ora. Managementul proiectelor software asle

legal de procesul de dezvoltare software l?i de modulin ca re 0 aplicatie asle proieclata,


dezvellala, testata: si pre zentata. Activita:tHe de mallagement al proiectelor software se refera: la ln t~egerea cerin!elor aplicatiei, arhitectura si proiectarea acesteia, impa:f\irea de roluri si responsabilita!i in cadrul echipei. motivarea echipei. rezolvarea conflictelor. discu!ii, monitorizarea si Domeniul controlul act ivita:!ilor. feedback, evaluarea rezultatelor, analiza calitAtii. managementului proiectelor solware are 0 relevan!a: deosebita: intrucat fiecare proiect software d ilerA de un altu!' Oe asemanea, intrucat niciun limbaj de programare nu aste perfect, procesele de dezvoltare trebu ie sa fie bine corelate cu limbajele, tehno logiile si framework-urile fotosite.

14.10.1

Procese de dezvoltare software

Procesul de dezvoltare soltware rep rezintli structura de activitAti folositA pentru dezvoltarea unui proo us software. ActivitAtHe cuprinse In proces ul de dezvottare software sun\: planificarea - sa ralara axtragaraa ce rin\elOf si sta bi lirea func~onalitAli l or ; proiectarea - se referA la stabilirea specifica\iilor si a arhitecturii (module sau componente si interactiunile intre acestea); implementare - se relerA la dezvoltarea efectiva: a apl icatiei ; testa rea sau verificarea - insemna: veri/icarea respecta:rii cerin)elor software si a funC)ionArii In cooo i!ii optime a aplicatiei; docomentarea ap lica)iei; lansarea apl icaUei pe piala: sau livrarea acestuia clientului; mentenan!a - se relera: asigu rarea IUnclionMii corecle a aplicatiei in conditiile apari!ieie de noi pro~eme ~i ra:spunsuri la solicrta:rile clientilor.
~,., ...ov ... atanal

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

497

ExistA douA tipuri de modele pe ntru implementarea pracesului de dezvoltare software: modelul clasie (waterfall' ) si modelul ilerativ 2 Modelul clasic presupune 0 dezvol1are pas cu pas a activM.tilor pracesului de management. 0 activitate nu va lncepe cAt timp activitatea anterioarA nu a lost definibvalA. Acesl model are avantajul unei dezvoltliri riguroase. dar olen:!. 0 lIe xibililate redusA , iar 0 echipA care lucreazA la 0 anumitll. componentA va trebui sA astepte ca echipele anlerioare sA incheie componente proprie. Modelul de dezvoltare ilerativA pres upune constru irea unei pArti reduse a proiectului software si apoi eresterea aeesteia. Pracesul iterativ eSle prelerat i n momentu l in care nu se cunoa~le loarle bine sCQpul urmAri\. 0 subclasA a modelului iterativ 0 reprezintA Dezvoltarea agilA loloseste del vollarea agilA (agile software deYefopmenf' ). mecanismu l de feedback ca pr incipal mecanism pentru controlul si evol ul ia pro iectului. Un alt exemplu de model iterativ eSle Extreme Programming' care presupune de zvoltarea de pArti loarte mici ale unui prO iect (de obieei i n ech ipe miei) si apOi integrarea acestora in proiect.

14 .10.2

Apli c a~ii

web pentru managementul proiectelor software

ExistA un set divers de aplical ii de gestiune a proiectelor software. in cadrul aceslora. 0 ealegorie aparta 0 reprezintll. ap lieatiile web pentru managementul proiecteior software. Aceste apliealii olerA, i n general, un set integrat de componente printre care: wiki - un wiki este 0 aplieatie web care permile ed ilarea eolaborativA l aeilA de CQntinul ; celebra encieloped ie on line Wikipedia loloseste tehnolog ia wiki pentru dezvoltare eolaborativA ; un repos itory (vezi sectiunea 14.4) pentru gestiunea codului sursA; sislem de tiehete pentru raportarea problemelor (bugurilor) si pe nlru eerinre de noi funclialitll.ti ; road map si milestoneuri pentru planilicarea si contorizarea aetivitAtilor.
Trac 5 esle 0 apliealie; minimalistA pentlU gesti ur.ea pro iectelor software. Trae lolosa~te

Subversion ca apliea~e pentru gestiunea cod ului. Un aspect pozitiv al Trac este numArul mare de plugin-uri d i sponibile~. Trac este seris in Python ~i este Iolosit de un numAr mare de organizalii. Red mine 7 este 0 aplicalie web pentru gestiunea proiecte lor software scrisA 1010siOO Ruby on Rails". Redmine a lost inlluentat puternic de Trae . Redmine olerA in plus lalA de Trae 0 diversitate de utilitare de gestiune a codului (Subversion, Git, Mercurial, Bazaar. Dares), gestiunea de proiecte multiple i n cadru l aceleias i instan!e si folosirea de diagrame Gantt si de calendare.
1hn p1len .wikiped i a .o , ~ iI<iIW alerfalUnodel
' hnp:llen .wikiped i ~.o'~ikillle,al;"'e_developmenr

' h IIp :llen .wikiped ia .o'l)/wikilAgile _ OOftW 3 ' e _de"" Iopnre "'
' hnp :l/en ,w ikipe d i a.or~ ikilExt, e m ._ PrO\j , am ming

' h lip :1 1l, ac .edgewal.o rgI h IIp :1 1l,ach Hok. o,g!


' h!lp :I/wwN. r~ i n". orW

htlp l /wwN, rubyonr~ ~. , 0 ,g!

C :opynghted matanal

498

INTRODU CERE iN SISTEME DE OPERARE

14.10.3

Resurse online pentru dezvoltarea proiectelor

Pel'ltru cei care I'IU doresc il'lstalarea ul'lei il'lslal'l!e de Trac sau Redmi ne pel'ltru dezvollarea si managemenlul prO ieclelor solware. se po lolosi resurse online. in general. accesulla aces lea este gralis. Oricine poate crea un cont asocial unui pro iect ~i poale Iolosi resursele puse la dispozi\ie pentru dezvoltarea acestuia. Ap lica!iipe ce slau la baza aceslor site -uri sUi'll del'lumite so f twa re f orge -ur i' . Majorilatea Iorge-urilor pot fi instalate separal. Princi palele site-uri care ofer~ servicii de g~zdu i re a proiectelor software sunl SourceForge', GNU Savannah', Google code" BerliOS 5 , CodePlex",

14.11

Resurse de documentare pentru dezvoltator

Mai mull deciill in oriee alt domeniu, in IT documentatia este u~or de oblinul, de la Iormat electrol'lic piil'la la cil.,i trad i~onal e , din surse oliciale sau contribu!ii ale allor persoal'le,

14,11 _ 1 Documentatie oficialii


Pachetele software cunoscule Yin. i n general, cu documentalie detaliala. Aceasla esle accesibila, in cazul prog ramelor simple ~i a bibliotecilor, pril'l pagil'li de mal'lual (man ). in cazul programelor GNU', manualul nu conIine decal un sumar al comenz ilor. Pentru il'llorma!ii mai detaliate se folose~te info . Exista allernative la info, pril'ltre care cititorul il'ltegra! dil'l Emacs, sau pinfo~. Alte suile software complexe, 11'1 general limbaje de programare, poseda utililare personaliza!e pentru vizual izarea documentaliei. Cateva exemple sunt: p yt h on doc pel'ltru documel'ltarea limbajului Pytho l'l' ; per l doc pel'ltru documel'ltarea fimbajului Perl '"; texdoc pentru documel'ltarea limbajului

TEX"

~i a suile; de macro-uri pel'llru el,

I6rEX"
I http 1Ie" ,,,,ikiped ia,orglWikiIForge_1001t,,,a,,,) ' hnp1Isoureeforge. net! ' http 11s ava n n"h.g""', oflll hnp1leode,IIOO{l le.oomf ' hnp1Iwww.bertios ,del ' hnp1IWww.oodeplex.comf ' http1IWww.g nU.O IQ/ hnp1Ip;nfo. S<>IJrcejo' g8, netl http1Iwww.pyll..on .o.g! " http11www.p"' 1, r9 " httpJllug.o,g! " htlpJIwww.latexproiect ,org!

C JPYnghted matanal

CAPITOlUl14. UTlLJTARE PENTRU DEZVOlTARE

499

14.11.2

Documentarea programelor proprii

Orice program Irebuie documentat, chiardaca nu este inlentia explicita a programalorului ca sursa sa lie citita de altcineva. Desi, in general, comentarii sumare la inceputul liecarei lunc!ii sunt suliciente, ex ista programe care permit comenta rea structurata si generarea de documentalie in vari; lormate (HTMl, pagini de manual, ~eX). Este, i nsa, important de mentionat ca documenta!ia generata este adresata dezvo/fa/orilor. si nu ulilizatorilor. Pentru ca un astfel de program sa lunc!ioneze corect, este nevoie de 0 metoda de a delimita come ntariile uzuale de ce le care co ntr ibuie la generarea automata a documentatiei. Doua exemple de lormate speciale pe ntf1.l limbajele din famil ia CIC++ sunllncepe rea come ntarii lor cu / _. sau cu III . Un astfel de program este Doxygen '. Este opensou rce. are suport pentru mai mulle limbaje si genereaza documentalie in formate variate. Este, in general, prima alegere pentru proiecte ope nsource care aleg sa genereze documenta!ia automat. Un exemplu excelent de documenta!;e generala de Doxygen esle cea a proiectului Pidgin' . Un exemplu de comenlariu compatibil cu Doxygen. pentru 0 lunctie C:

,..
,

5
~

Executa comen'ile @panm @paum @P"ra m @param

corespun'~to~re

unu i arbor .. .


10

C co"",nda compus& care treb~!e e~ec~tata pi deacdptorul Care trebu ie d~plicat pentru I ntrare po de,criptorul C"re treb ~ J.e duplicat pentru J.Mire .. eHe I daca treby,e sa asteptam comanda ~" se termine

"

@ret u rn codul de ieHre d ultimu lui proce ; e xecut" t, ~ " u pidu l p r oce, u lu i nou cr"at dac" "cest" nu " fo,t a't"ptat. O"c" com"nd" executata a fost quit s"u exit , ,,, i ntoarc" valoarea sp@ci"l"

12

OU I TT I NG.
he"",rl:. p> OJ. po sunt folosite "tunc i cand comand" hc .. parte diner - un p i p ... P.. ntru a nu Ie fo l os i, 1 .. set am la - I .
_/

" ,.
'"
,G

"

int exec_ command(const command_ t

_c ,

i nt p i.

i nt po ,

int ,,)

" ..

[ 1

Limbajul Java are un instrument propriu pentru generarea documentatiei de AP I, numit Javadoc~. Toata documentatia platformei Java' este generata utilizand Javadoc, iar lormalul Do~ yge n este voit compatibil cu eel Javadoc pentru a Ii 0 allernaliva facila . C# olera 0 allernativa interesanta , lolosind comentarii in format XML 5i marcate cu / / /. Desi marc area ca.mpu rilor este mai difici la. mediul Visual Studio olera suporl excelent pentru acest ti p de comentarii.
, http://Www .dox ygen .o rg!
' h!tp :lld.,."'opftr.pdg i n . irnldoxY9"nldto.ih!"' Vc~""u.html ' h!tp :I~av a. sun .comFi2'~Fia vadocl

http ;l~ av a . un .com{j2.eI1 . .21doc sfapLi

500

INTRODU CERE iN SISTEME DE OPERARE


Car~i ~i

14,11 ,3

tutoriale

Un tutorial este 0 "scurt1iturA", 0 relarinl1i rapid1i, dar incomplet1i a unai tehnologii sau limbaj. 0 astfel de resurs1i poate substilui temporar documentalia propriu-zis1i, in faza de familiarizare, dar detaliile care lipsesc (inten!ionat, pentru a asimila mai u~r lucrurile de bad) su nt adesea esentiale panlru a utilizare eficient1i a conceptului in cauz1i. Desi documentatia "Ia obiect" este accesibi la sub forma electronica, stiinla calculatoarelor nu duce lips<"i de c<"ir!i in format clas ic. Acestea nu sunt nicidecum deseori conlin sugestii, subtilit<"i\i ~i practici foarte valoroase . redundante, pantru

ca

categorie important1i de caTti SUi'll cele care isi pmpun sa delalieze un domeniu intreg. independent de implementare. Acestea conlin elemente teoretice avansate, dar si studii de caz relevante. 11'1 general, fiecare domeniu are 0 asemenea carte, recu noscu\<"i si respactat<"i de persoanele in lem<"i. Pen\ru c<"i nu sun\ '1ncuia\e- in studiul unei implementari particulare, aceste c1ir~ sunt prelarate in domeniul academ ic. Exemp le de asemenea c1irti si domeniile' lor asocia\e sunt: sisteme de operare: Silberschatz, Galvin, Gagne, Operating Syslem Concepts [25J: Tanenbaum - Modern Operating Syslems [32J; relele de calculatoare: Tanenbaum - Computer Nelworks [30[: arhitectura sistemelor: Hennessy. Patterson Quantitative Approach (9]; Computer Architecture: A

compilatoare: Aho , Sethi. Ullman - Compilers: Principles, Techniques, and Tools

(2].
Nu in ultimul rill'ld. profesorul Donald Knuth scrie 0 veritabil<"i monografie a programarii calculatoarelor, numita The Art of Computer Programming (1 4]. inceput1i in 1962, cartea este programat<"i 51i aibli 7 volume, dintre care doar prime le 3 au aplirut co mple!. Aile clirti se referli exclusiv la programare si descriu in detaliu fie un limba;, lie un set de utilitare sau un mediu lnlreg de programare. Spre deosebire de calegoria anterioarli, aceste car~ se adreseazli unui domeniu mai ingust de prob leme. dar adoptli 0 abordare hands-on, con!inil.nd Irecven! exemple de cod. Lucr<"iri celebre in acest sens sunt: Kernighan, Ritchie - The C Programming Language (13], Wall, Christiansen. Orwant - Programming Perl' [33], Kernighan, Pike - The Practice of Programming [12), sau Eckel - Thinking in Java [5J. in cele din urm1i, exist1i clirti care descriu in detaliu un program sau 0 parte a unui sistem complex . Acestea se remarcli printr-un grad inal! de specificrtate ~i limbaj tehnic. dar olarli 0 detalii line des pre sub iectul abordat. Asemenea lucrliri sunt apreciate in spacial in industria, de parsoane cara conl igureaz<"i sau modilic<"i programa ca parte a slujbei lor. in aceastli categoria 5e incadreazli, de exem plu, c;"iJ1i le lui Robert Love des pre kernelul Linu x, Learning the vi and Vim Editors de Robbins, Hannah ~i Lamb. sau DNS and BIND de liu 5i Albitz.
' D... ;g.-. dom .. n."' . .. int,e piitrund. Un ingin.. , nu i.1 F""mit...Ii ... limit.. "" la Un .in\jU' asp<JCt a l p'ole. i" i ..,i ' cunooc",. cu al.. ct,une in comunrtatea Perl d,,,p' TI!. C;Jm,,1800k

C JPYnghted

matar~1

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

501

Oeparte da domeniul tahnK:. dar relevanta penlru industria IT, sunl lucrArife cu tentli ideologicli sau cele care observli ~i com para lendin!e. Acestea lind 51i se relere la procesul producerii software-ului, fie el proprietar sau fiber. Titluri notabile sun! Brooks - The Mythical ManMonth. Raymond - The Cathedral and the Bazaar si Fogel Producing Open Source Software' . Ca 0 nola finalli asupra caf!ilor, esta esential a realiza ca ela dezvelta competan!e distincte lala de citirea documentaliei e~ctusiv tehnice. Ce1e doua lipuri de resurse sa felosasc impreuna - ele sa eompleteazli, nu se substituie.

14.11.4

Documentatie din Internet

Pe langA documenta!ia olK:iafa, existA mulle alte surse, fiecare cu specificu l ei. Gradul de detaliu si interactiunea d intre persoane variazli lunctie de mijlocul de comunK:alie .

IRC

IRC (lnternel Aelay Chal) asle un protocol de comunicatie multidirectional i n timp real. Cl ianti uzuali pentru acast mediu sunt Pidg in', XChat', sau irssi' . Desi protocolul insusi, in special datorita utilizArii programului mIRC, are 0 reputalie i ndoielnicA, existli mult pachete soltware ~i comunitliti care olerli superl inlormall~ osind IRC. Esle utilli 0 asemenea abordare cand se dore~te un rAspuns in timp real , la obiect, dar d in care de mUlie ori lipsesc detalii care nu sun! imediat relevante. Majoritataa proieetalor cara fo losesc IRC drapt mijloc de comun icare sunl gazduita de releaua Freenode' . Oezvollalorii se lanseazA freevent In d iscu~ i inlormale, llira legalura eu subiectul, de aesea proloco lul are un signaltonoise ratio destul de mie.

Use net Usenet este 0 relea care precede eronologic World Wide Webul. Canalul de comunica!ie este tot one-Io-many. dar, spre deosebire de IRC. aeeasta metoda este as incronA, asemananduse cu amail-ul. Oatorilli vars!ei ""Venerabile" a si a lipsei sa le relati~e de popularilate, Usel"\Bl este folos il de unii utilizatori mai in vArstli , dar care au cuno~tinle tehnK:a exceptionale. Usenet cont ine diseutii te hniee detaliate, dar ~i atacuri personale ~i flame-wars. in ultimii ani. ISP-urile au inceta! sa mai olere servere de Use net, dar 0 metoda excelent!!. de a citi si ser ie mesaje este arhiva Google Groups6. Un grup de 0 notorietate legendara. atAt pentru disculiil e referitoare la limbajul C. cAl si pentru flameurile numeroase, este co mp.lang.c.
, h lip :11p! oo""inll""' .oo mI ' hl!p,llpidg in.jmi ' h lip :lIxch81.0 '{j

' hltp :llir"i.org http ://f,eenode .n"u ' http ;llgfOu p . google ,comigroupsldi,?e l_giype"1i3DO

C JPYnghted matanal

502

INTRODU CERE iN SISTEME DE OPERARE

Mai mull dedi! orice alta sursa de informatie, Usenet aSle neiertator ell persoar'lele care lac greselL Se recomandA citirea catorva tread-uri de disculie inainle de a porni 0 disculie nouA'.

Google

o ultima sursa de informa!ie esle a folosi un motor de cautare. Avantaju l esle viteza eu carB acesla cautA prin majoritatea $urselor mentionate mai sus, inclusiv disculii Usenet sau log-urile canalelor de IRC. Pe de all11 parte, aSle uneori dificilli. alegerea cuvinlelor
potrivite pentru exprimarea unai probleme.

14.12
14.12.1

Studiu de caz
Microsoft Visual Studio

Microsoft Visual C++ (MSVC) eSle un IDE{lntegrated Development Enviroment) facul de Microsoft penlru limbajele de programare C, C++ si C++ICll. Acesta conIine utilitare de depanare si dezvoltare a codului seris in C++. Visual C++, componef1ta care se ocupa de codul CIC++. este compus din mai multe elemente: .. compilatorul Visual C++. conIine optimizari pentru platformele xes, x64
~i

Itanium

.. bibliotecile Visual C++, cum ar Ii ATl(Active Temp late library}, MFC{Microsoft Foundation Class), CRT(C RunTime library) si biblioteca standard C .. mediul de dezvoHare Visual C++. Compilatorul Si bibliotecile pot Ii accesate si prin inler/ala in linie de comanda. mediul de dezvoltare olera posibilitati de dezvoltare si depanara mai lacilA a proiectelor ExislA mai multe metode de a crea un proiect in Visual C++ , .. se poate folosi un sablon, cum ar Ii Conwle Application Template, pentru a realiza proiecte simple .. se poale lolosi ~i un wizard penlru crearea unei solu?i, 0 solu!ie poate mai multe proiecte

sa contina

.. se poate crea un lisier text simplu salvat cu extens ia .CPP. iar acesta sA fie inclus intr-un pr~ect gol de lipul Win32 Application Folosind wizardul avem acces la 0 ir'lterfala ce permite sa se creeze un proiect. sa se modeleze un proiect dupA un ~ablon ~i sA se generezeze fi~iere sursa si directoare per'ltru aplica!ie. Visual C++ lucreaza cu framework-uri de aplica!i i si biblioteci pentru a crea schelele de programe peste care se poate lucra ulterior. Mai multe delalii des pre proiecte pule)i gasi pe sile-ul MSON'.
1 Lurk

b<tfrJr~ yt;JU IfIap.

' ht'pJlm.dn,m"ro.oft.comJ.. n.u.hibr."I16765ttao, p<

C JPYnghted matanal

CA PITOlU l14. UTlLJTARE PENTRU DEZVO lTARE


~ ~ --

S03

....... --_- _.,. . ..-..- . -_~ - -~,

.. -- . .. -,..
.- ..
~"

"

.-.~ . "
.~

"' j
"'''

,
i

,' -

' --~'.-

'.

-- ,, ~

.... - ._.,'

" ~.-

..

- ~'"

--. -'"~.---,."'-.;:

---

_._

h. _ _ _

...
_ _

,
,

'"

__ _

,. .-.~-

_ _h

.. .
Figura 14.3: Proieclln Visual C++

~,

Figura 14.4: Creare proiect in Visual C++ Cuv inle cheie

coding slyle indent, astyle editor vim modul insert. command , visual contro lul vers iunii

subve rsion gil ctags


fi~ i e re

index (tag)

analiza stal ic<\ sp lint

504

INTRODU CERE iN SISTEME DE OPERARE

GNU Autotools

strace
_data , .bss, .rodele

sliva
heap

Eclipse
Anjuta waterfall
mod~

ilerativ

Trae

apeluri de sistem

.d
depanare

GOB

ddd
Valgrind

memory leak

IDE

Radmine moo into Doxygen Javadoc IRC -Internet Relay Chat Usenet Microsoft Visual Studio

intrebiiri
1. Care din urmatoarele asia un editor?

Cl Vim
Q asWle

o ctags

gdb

2. Care din urmatoarele aplicatii asia folos ita pentru depanarea Ie runtime a unui

program?
o Valgrind

o Trae
o indent

gil

3. Care din urmatoarele opera!ii NU aSia 0 opera!ie val ida la lolosirea unui sistem de gestionare a versiunii?

o o o

commit

o update
checkout/clone

boot

4. Care din urmAtoarele NU sa relera la recomandari d in cadrul unor conventii de

codara?
~,., ....v

... atanal

CAPITOLUL 14. UTlLlTARE PENTRU DEZVO LTARE

505

o o

numa sugasliva pantru variabila fWlClii cu dimansiuna razonabi la folos irea de spa!ii ~i linii libere licentierea codului sub GPL

o
o o o

5. Care din urmaloarele NU esle un IDE? Anjuta Eclipse Microsoft Visual Studio OpenOf1ice

o o o o o
o

6. Care din urmaloarele utililare esle folosil in conjunc!ie cu Vim panlru parcurgerea facila a codului?
clags splint indent
gdb

7. Care din urmatoarele NU esle un mod de folosire penlru edilorul Vim?

o o o o
0

v isua l

command
i ns e r t g r aphi c

8. Care din urmatoarele oomenzi este lolosila, in Vim, pentn; salvarea unui fisier?

,.
"
Grt
Vim Eclipse

0 'q 0

0 : he lp
9. Care din urmaloarele este un sistem penlru control ul vers iunii?

o o o

o o o

ddd

10. Care din urmatoarele esle 0 aplica!ie web pantru gesliunea proiectelor software?

Trac GTK
C JPYnghted matanal

506

INTRODUCERE iN SISTEME DE OPERARE

ddd

o Waterfall

C JPYnghted matanal

Capitolul15 Viata in Linux


See, you not only have 10 be a good coder to create a system like Linux, you /lave /0 be a sneaky bastard /00

;.J
Linus Torvalds

Ce sa invala din a cesl capitol ?


eu ce S9 ascultA muzicA in Linux Cum 59 veda un film in Unux

Cum sa serie un COfDVO in linux Cum sa foloseste V!M in Linux Cum sa descarca conlinut BitTorrent in Linux Cum sa
tolose~te

imprimanta in Linux

Ce jocuri 3D si 20 9xistA in Linux Cum sa tolosasc dou,!\. manila are in linux Cum 59 editeaza documente Word/E xcel in Unux

15.1

Muzica in Linux

Un player bun de muzicA trebu ie sa asigure, pe langa posibilitatea de a reda fisiere le audio, managemenlul aeestora, salvarea playlis\urilor, posibili\a\ea de "minimize to tra~' 5i. eventual, posibilitatea de audio-scrobbling (Irimitarea informatiilor despre muzica ascultatA unor site-uri de profil, precum lasUm' j. Un utilizator mai pretentios ar cere si management-ul fi~ ierelor de pe Audio-CO-uri. iPod-uri etc. Din lericire. majoritatea acestor cond ilii sunt respectate de player-ele audio din Unux, larA a Ii necesarA instalarea unor plugin-uri suplimentare (acestea liind instalate automat in momentul instalArii aplica\ieij .
, http l lwww. lu t.frnl

507

C JPYnghted matanal

508

INTRODUCERE iN SISTEME DE OPERARE

--- ... . ._. --. ...


~

..

...

. -. -. -~

()

"
__ _

II

a '0 -

--'"
- ~-

..-

i"-"'i~~c=:'Cl-~==-~;;:=1-~;:;:l-~ .. ...... - ", :::= :: :::::::


o10; _ _ .. , , _ ... _ .... ... _ _ __

'"-"

-. "~.''''

,,_ .....

" ""'_.

--"" _. -== = ... _----........ -- --. _ ,-----""",""---- --""'"


~

...

.--' .. - ......

Figura 15.1: Rhythmbox

._----j !~':''''
'0.

-. .. .. -....

--

- .-. -

o ..--:=:::.:--

.....

. . ,.
,.,
, .H

"

,. ,.

"" '"''

...

--, --.. -_.-,

-Figura 15.2: Amarok

.-

.. '. . .. ...

... ,. ,.

Sistemele de operare Ubulltu au preinstalat Rhylhmbox . Nu esle doar un player audio ci 5i 0 aplicatie pentru managementul fisiere lor audio, inspirati! din aplica!ia iTulles de la Apple. Echivalent, in mediile Kuoonlu esle preinstalat Amarok. DacA aplicatiile preinstalale Ilu corespufld preferin!elor lui, utilizatorul poate oriCAnd sa. instateze altele, precum: Banshee' - 0 aplicatie similarA Rhythmbox, bazatl'l pe mono listen' - 0 aplica!ie minimala scrisa in Python Audacious" - un player similar apliCatiei Winamp din Windows
, http 111>3 n~h M pro j&Ct. ' http) Iwww. li.ten project .org! ' http) Ia""acious m e<lia playe r.o rg

",gI

CAPITOLUL 15. VIATA iN LlNUX

509

Figura 15.3: Audacious " Exalls ' - 0 apl i ca~e similara Amarok pentru GNOME o aplicalie interesanta este Music Player Daemon2. A~a cum Ii spune ~i numete, programul ruteaza ca daemon, dar este contralat, fie local, fie prin relea, de un cl ient. Exista leci de astfel de clienti, pentru diverse platforme. scrisi in varii limbaje de programare si cu interfele grafice sau in mod text.

15.2

Filme in Linux

Vilual izarea de lilme eSle deseori mai lacila in Linux decat in Windows, penlru ~ programele care exista sunt toate gratuite in adevaratul sans at cuvantului, adiea nu vin cu alt software de pravenienta indoielnica. Mai mult. in general instalarea unui video player pe Li nux imptica automat instalarea codecuri lor asociate, da~ ele nu sunt deja instalate. VLC este un ptayer produs de proiectul VideoLAN. Acesta are avantajul de a avea codec-ur i integrate, ceaa ce reduce pachetele aditionale care trebuiesc inslalate cu el. Pe sistemele Debian, pachetul asociat se nume~te v l c. o alternativa la VLC este mplayer, cu 0 interfata mai minimala. dar la lei de bogat in lacilitali. Utilizatorii mplayer pot alege intre mai mufte variante de interiele, de la mod lexl ptlna la GUIuri solistieate ~i interfele native (pentru Mac OS X, de exemplu). mpl ay er are, de asemenea, posibilitatea de a rada l ilme folosind mai multe drivere de output, fo losind parametrul- vo in linie de comanda. Astlel. daca pachetele polrivite sunt instalate, un utilizator nu are, de exemplu, nevoie de interfata grafica pentru a vizua liza un fi~ier. mplayer poate afi~a direct in framebuffer folosind biblioteca di rect tb sau in mod texl lolosind aalib". Ambe le programe menlionate lolosesc preponderent bi~ i oleca libavcodec, parte a praiectului FFmpeg. Pentru unele formate specifice Windows, se pot instala drivere
, http ://www .... a i.. .org , http ://m pd.wikia.comiwikUMus ic_P layer _ Da"mon_ W iki H 1 ib Iokloe.l. 1 1 penl '" ~ ro-da imagini c ~1 m~i b in" , dec i poal. fi Iolod pe.l" con"''''ni 1""I-<> nly.

.1

510

lNTRODUCERE iN SISTEME DE OPEAARE

proprietare, numite generic w32codecs. Nu in ultimul rAnd , ambele pachela sun!


porJabile, deci pot Ii ru lale ell
u~urinl(\ ~i

pe Windows _

15.3 Scrierea unui CD/DVO in Linux


in mod clas ic , scrierea de CO-urifDVO -uri in Li nuK se real izeazii ell ajutoru l utililarului cdre cord. in ultimate versiun i, aplicatia a lost denumrt<'l. wodim. ApliCatii la grafiCe folos ite uzual pentru scrierea de CD- uri (G nome8a ker, 8rasero, K3b) 'olosesc in spate utilitarut cdrecord . Pentru a folosi wodimlcdrllcord aSIa neveie de 0 imagine de CO {l isier . iso . Pentru a obline 0 astlel de imagine se loloses!a utilitarul qe n l.soimaqe (fostul mk isofs):
2 ,

ruvan@va l ha ll a : -/projects$ 1$ Ilbruyl eLi be rat i ca_ORe 1 1 I Y--"00):5 . odt eLi be rat i cA_ ORe 1 11 y _ 115 u _ cart i . gn u me ric eL!berat!CA_ORe!lly_ cart! . odt eL!berat!ca_ORei lly_ l Isu_ cart! . ods
ruvan@valhalla ; -!pr<>]ectsS genisoirnage -0 libury . is o librar y! u s ing ELIBEOOO . ODT , 1 for leL,beratic,,-ORe illy_ca rt i . od t I
~Lib~rat i c,,-OR~ i lly-Pook5 . od t )

5
e
1

ToUl tra nslation ubl e si ze : 0

10
11

I 1
r~zv~n@v~ l h~ ll ~ : -!proj"cts$ file libr~ r y. i .o library . i.o, ISO %60 CD - ROM filesystem data CDROM

"

Scrierea CD-ului sa lace cu 0 comanda ca cea de mai jos:


r&zvan@valhalla : -!pro Ject s S cd record dev- !dev!hda speed-8 libra ry . i.o

Imaginaa . iso poate Ii montata $i accesata in sistemul local de li~iere , similar utilitarului Daemon Tools' din Windows:

,
J

uzvan@valhalla : -!pro JectsS .. kd i r tmp...Jl1ount


I~zvan @ valhalla : -!proj"c t 5$

5 udo mount -0 loop -t i 5 09660 library .i so

t mp-",ount!

,
6

r~zvan @va l ha l la : -!proj@c t 5$

ls t mp-",ount!
eliber~t . od.

elibeOOO.odt

e l ib@ut . gnu

e li beut . odt

Se obse rvo:i ca, in urma oblinerii imaginii, lisierele au lost redenu mite in lormatuI 6.3~ . in GNOME , scrierea CD-urilor se poate realiza cu ajutorul utilitarului GnomeBaker. Penlru scrierea unui CD. se poroe~te utilitarul, se selecteaza opliunea Data CD Si apoi se adauga directoarete de scris pe CD in arborescenta din partea stAnga jos, asa cum n momentul in care toate fisierele au lost adaugate se foloseste reiese din ligura 15.4. T butonul Burn. in KDE , scrierea CD-urile se realizeazo:i c u ajutorul ulilitarului K3b (vezi figura 15.5). Modul de utilizare este loarte apropiat de cel al GnomeBaker.
, hUp ;!lwww.d"~mo n . t oo l .cclenglhom .. ' http;!l. n. wikiped ia. otglwikila .3 _Iilen" me

nght

mate-nal

CAPITOlUl1 5. V1ATA iN llNUX

511

_!- _ _

t..

Figura 15.4: Scrierea unui CD lolosind GnomeBaker

Figura 15.5: Scrierea unui CD lolosind K3b

15.4

Messenger in Linux

Pentru ulilizatorii de Instant Messaging, Linux are, traditional, 0 alternat iva usor dilerila, dar mult mai Ilexibiia si mai utilizabila. Aces! program se numesle Pidgin. Ini!ial numil Gaim, Pidgin are avanlajul de a Ii multiprotocol. Folosind aceea;;i inter/ata ;;i 0 singura instanta a programului, un u1ilizator poate avea acces la conturi le de Yahoo Messenger, MSNiWindows Live, Google Talk, AIM etc. Mai mult, este posibila fo losirea mai multor conturi din aceeasi relea simullan. lara a Ii nevoie de inslalarea unui palch adi!ional. Central conceptulu i de conturi multiple din Pidgin este lereastra "Accounts". Aceasta poale Ii accesala din meniul Accounts --> Manage Acco unt s. Adaugarea unui cont

.1

512

INTRODU CERE iN SISTEME DE OPERARE

de Yahoo aSia cilt sa poate de facita; ea nu necesta configurllri aditionale. Google Talk necesila specificarea unui domeniu, pentru ca sa bazeaza pe un protocol deseris numrt XMPP ' . Un exemplu de adaugare a unui conI Google Talk esle prezentat in figura 15.6.

--,
,

[........,1 -",

.....'
"""",,.

-,,"'

1~~~~~ J

0 __

..._........
I .'""'~ II +6*1 I

..... .",.,..........,

rtl_ .......... _

0""'''' _1-""""' ..,......

Figura 15.6: Adaugarea unui cont de Google Talk in Pidgin Usia de contacle asle una singura, pentru toate contur ile active. Aceasta facil iteazli ~i gruparea mai multor contacte intr-unut singur, per'ltru catul in care acooasi persoana asia pretenta in lisla de contacle pe mai mulle canturi sau retele.
Pidgin are inclusiv supor! de chat multidirectional, cum ar Ii conferinte de Yahoo sau protocolul lAC. Aceste chat rooms pot fi adaugate 1n lista de contacte, astlel programul are 0 interfaU'i unitormA. Nucleul Pidgin eSle ~blioteca Purple. Aceasta mai este folosita, printre altele, si de Finch. un program cu interlata text-mode, dar asemanator cu Pidgin. Cele doua programe si biblioteca asociata sunt dezvoltate de echipe cu legaturi !oarte strAnse si au pornit din acelasi cod. Alternative la Pidgin sunl Kopete (parte a mediului KDE), Empathy (care va inlocui Pidgin in unele distributii), sau, cu interlata text, centerim.

15.5

BitTorrent in Linux

Pentfu protocolul BitTorrent (protocol peer-to-perr de tra!1sler de lisiere) exista mai multe aplicalii in Unux. Astlel , Ubuntu vine cu Tra nsmi ssio n ~ preinstalat. Simplu si usar conlig urabil. programul se remarca prin laptul ca utilizatorul nu trebuie sa seteze nicio prelerinla in~ial inainte de rularea acestuia (existand definite opliuni by-delault pentru ca toate lucrurile lunc!ioneze perfect). Oesigur, opliunile pot Ii reconligurate si acest

sa

1httpJho:mpp.O'll ' http) Iwww.tfan.m in ionb1.coml

C JPYnghted

matar~1

CA PITOlU l1 5. V1ATA iN llNUX

513

lucru sa lace foarte usor din intertata grafica, nefiind necesara 0 experienta loarta vasta . De asemenea. clientu l Transmission are ee l mai mic consum de memorie dintre toate 0se5O protocolul BitTorrent. aplicaliile ce 101

-............. ......
+

'

a' _ .... !_1

,-

, _....

0 ...... 0.0'

+ JlJ., .... . .......

Figura 15.7: Transm ission Pantru Kubunlu axistA pra inSlalal Ktorrent ' . ea $i in cazu l Transm ission, tolosiraa acestui program este foarte facila, majoritatea configurarilor realiz1lnduse prin interfala gralica.

... - -I F'::=-----:;-::-" . -i .... I


~-

-..... - ,.-...

.. -- , htlp)iI<lom, nl,orgi

_ .... - .... ..,., ,,-, .... -,,....... -, " " ,".'- ... . .
' '' ' _ u u

.... "... .. . ...


,

.....

Figura 15.8: Ktorre nt

-'---"-'' ' - -- ... .......


,~-.

.. .. .. .. , .. .. .. .. .. , ..

"

-,
,

Pentru cazul in care nu este disponibila 0 intertali1 text , existil pos ibililalea lolosirii

INTRODUCERE iN SISTEME DE OPEAARE

rlorrenl '. Ulilizand ncurses', aceasla aplicalie eSle foarle usor de lolosil pesle a conexiune ssh sau Intr-un madiu lara inter/ala gral ica. Nu In ultimul rand. exista Limewjre~ , 0 aplicatie crossp latform bazate. pe Java, suporlil.nd lacililali reduse de BitTorrent. in plus, aplicatia Ioloseste reteaua Gnulella' pentru a localiza lisierele Caulala.

15.6

Imprimanta in Linux

in Lin ux. lolosirea imprimantei este conditionatA de instalarea si conligurarea CUPS (Commmon Unix Printing System). CUPS permile inslalarea unui server care Irimile soliciUirile caIre 0 imprimanta. Poate Ii astfel fo losit pentru a servi solicitari sosite din retea. Pachetul asociat se nume~te cups. In cadru l CUPS exista pachetul cu p s-pdf ca re permite instalarea unei imprimante virtuale. Folosirea acestei imprimante virtuale conduce la obtinarea unui lisier PDF". In mod implicit. l isierele generate sunt stocate in directoru l PDF din home-ul uti lizatorului cure nt. Imprimantele (sau serviciul CUPS) pot Ii conligurate in doua moduri: prin intermadiul interletei gralice. In Gnome (vezi ligura 15.9) sau KDE (vezi figura 15. 10); prin intermadiul inter/elei web (vezi ligura 15.11); inter/ala web este accesata. In mod implicit. prin intermediul URLului hnp:/llocalhost:631 / .

Figura 15.9: Gestiunea imprimantei in GNOME Configura rea imprimantei poate Ii real izata numai de un utilizator privilegiat Operatiile uzuale sunt adaugarea imprimantei, stergerea imprimanlai. modilicarea co nligurarii de imprimanta. CUPS are instalale majorital ea driverelor de imprimanta astfel incat majorilalea imprimantelor vor pulea Ii conligurale lara operalii suplimenlare. in caz de problema sau in cazul lolosirii unor imprimanle ale caro r drivere nu sunt prazanle se recomanda accesarea siteului OpenPrinting".
1http1~ibto "en!. hau.nol ' httpllwww.g nu.o rQl""ftwareJncu,, "",lncu rses.hlm l ' http11hllp 11w" i . limew~e. rgl

m " -- .............
""W~"""'N ~

...... "' ,..,,,....'..,,, ,....... ____ ,

,ok.

' httpll"n .wil.;p..d ia .o,(jIwikilGr>.JI"lIa hlipJ I.. n.w iI.;p..d ia. m(jlwikilPoflabie _ Docu m ~n IJ or ma l

' httpJlwww.li r>.Jxfoundatio n.orglco llabo rateiwo,kgroopsIOp"nprintin9

right

ma'enal

CAPITOlUl1 5. V1ATA iN llNUX

1 "----..-. ----.

.. .
,

S15

--".._ . -----.--- . -~-~

________ u,

l~

.-.-.-... -- --- ---

--

. . . _"' _ T . . _"".
__ . _ 0 1

Figura 15.10: Gestiunea imprimantei in KDE

e __

&I!I _ _ "

_kom e!

,---"'._""_..... _----"""" ...._--CD ClIIIiIO h'


It I t i l t .... '

...,. '1.\

AbGut CUPS

For Printe r Drlv .. ",


~

~ nd

AH lstuce

.. ' ... """" <en ............ ...... ""' _ _

Figura 15.11: lnterfata web pentru CUPS

15.7

Jocuri in Linux

Oatoriloli originilor si mediului car uia ia fost destinat pana nu demult, linuxuf nu a repreze ntat un segment de piata atracliv penlru producatorii de jocuri. De aceea nu exisla loarte multe jocuri care pot ru la pe acest sistem de ope rare. In Windows, cele mai mulle jocuri lolosesc penlru desenarea obiectelor 3D AP 1-ul Oirecl30 de la Microsoft. parte a AP1ului multimedia OirectX (Oirecl X a ajuns la versiunea 10 odata cu aparilia Wi ndows Vista). Pe lAnga acesl API (proprielar Microsoft), exisla si jocuri care lolosesc un all API, open source, numit OpenGL (Open Graphics library). OpenGL esle 0 co lec!ie de IUrIC!ii grmdite a Ii crosslanguage si cross-platform. Esle printre pulinele AP1uri slandardizate folosite i n linux pentru crea rea obiectelor 3D si implicit a jocurilor 3~. Ointre cele mai cunoscute jocuri pe linu x avem: C nght male-nal

516

INTRODU CERE iN SISTEME DE OPERARE

Battle lor Wesnoth ' - un joe de strategie fantasy


Nexuiz' - shooter, elonA Quake

Armagetron Advanced) - un joe bazat pe un film SF din anii 80

Figura 15.12: Nexuiz

in afari1 de aceste jocuri gratis, 'acute de comuniUiti coneclrate in jurul lor, exista ~i jocuri CIJ supor! pe linux din partea unor firma mari. Dintre acestea probabi l cea mai bina cunoscutA asia Id Software care olera majorialatea jocurilor prod use ~ i pe Unux. Epic games, productatoflJl seriei Unreal, clara de asemenea pentru anumite jocuri si 0

varianta pentru linux.


Wine' aSia 0 aplicatie ce permita rularea unor programe destinate platformelor Windows pe un sistem Linux. Pentru a vedea dad. 0 aplicatie ruleaza in wine si alte informalii legate de ru larea ei in wine pule!i consulla baza de dale a proieclului 5_Winelricks& esle un script facut pentru instala mai usor anumite aplicalii specifice Windows, cum ar Ii directx sau Iramework-ul .NET.

15.8

Dual-monitor in Linux

Odata eu trecerea de la monitoare le CRT la cele LCD ~ i in acela~i limp cu scaderea pre!ului la hardware, posibilitatea de a conecla doua monitoare fa sistemul lizic a devenit accesibila. Cresterea productivitatii si a conlortului in utilizarea calculatorului indeamna din ee in ce mai multi utilizatori sa Ioloseasca 0 astlel de solu!ie_
, http1.w-_wMnoth_org , http1lwww.alie ntm p_o rQlnexu iz ' http 11ar mage lro n ad_net http 1.w-_winel>q_o ry/ htlp;ilappdb. w in el>q_o rQl ht'p;ilw ik i.w irlel>q. orglWin elricko

CAPITOlUl1 5. VIATA iN llNUX

S17

Atunei cAnd sunt conectate doua monitoare la sistem (sau un monitor si un llideoproiector) acestea pot Ii util i ~ate in doua configura!ii:

mirror, in care amandoua monitoarele arata

aceea~i

imagine

ex/ended. in care imaginile aratate de ce le doua monitoare sunt diferite ~i alaturate


Configura!ia mirror este utila numai i n ca~ul in care se dore~te vi~ualizarea acele i a~i informatii pe mai multe monitoare. in sch imb, configuralia extinsA permite marirea spatiului de lucru, asa cum se poate vedea in figura 15.13.

Figura 15.13: AIAturarea a doua desktop-uri. Fiecare este redat pe un monitor separat Pentru real i~area unei configura!ii de acest gen se pol fo losi utilitare grafice sau utilitare in linie de comanda. In cazul GNOME, accesAnd Syst em - > P~e f e~ en c e s - > Displ ay se pot configura atat parametrii pentru fiecare din monitoare (re~olu!ie, rata de refresh) cat $i activarea sau de~activarea fiecarui monitor (figura 15.14). in plus, intrefata de configurare permite alegere modului in care sunt asezate eele doua desktop-uri: unul langa allul. unul deasupra altuia sau, spre exemplu, pe ce monitor se alisea~A desktop-ul din stanga. i n ca~ul in care se doreste rea lizarea unui set de conf igUfiiri avansate, va trebu i folosit utilitarul x randr, descris in seC\iunea 13.4. 1. Un exemplu de comand<'l xrandr ce permite configurarea monrtorutui extern pentru un laptop ca desktop ext ins este urmatoarea:
qeo"ge~as g ard , $

xrand r -- output VGA -- mode 1920x1200 -- <ate 60 -- po. -- output LVOS --mode 1280xSOO -- r a t e 60 -- po. Ox1200

O~O

VGA -

Asa cum se poate vedea , pentru fiecare din monitoare (LVDS - ecranullaptopului Si iesirea video) se configureaza tre i parametri: rezo lutia, prin parametrul - -mo de rata de refresh, prin parametrul -- r a t e (acest paramelru poate lipsi, caz in care sistemul de ope rare va alege automat cea mai bu n;'!. variant;'!. posibil;'!.) pozitia desktoputui. prin parametrul --pos

Pozi!ia desktopului se mAsoarA, la fel ca majoritatea elementelor ce pn de grafica pe calculator, incepand din coltul din slanga sus. avand axa Ox orizontalA si axa Oy

518
Ig N _

lNTRODU CERE iN SISTEME DE OPEA ARE


.... N>...c rIotir ~

r ptop 15

Ace . 17-

HiJTOr _

1 n-a ~ 'I" ... 1

..... ' A<etu


~

OM

~ 1101"
r anel lcOfl

_1 0 .31

~I

..-

"'i'_ .."" InOll

o ~ "'P..,..1I1 poDOl

[ .. _ [[CI _ [
Figura 15.14: Coniigurari penlru desktop exlins in GNOME
orientata in JOS. Astlel, in exemplul de mai sus, ie$irea VGA sa va ana eu coltul din stl'mQa sus in orig ine (x- o, Y- O), iar iesirea LVDS se aflll sub cea VGA, amAndoui'l. aliniate la stanga (x - c, Y- 12 0 0), Un all exemplu de conf igurare a unui desktop multiplu, care a general conligura!ia prezentA in iigura 15. 14, eSla:
george @a sga r o , -S ~r and~ --o utput veA --mo de 1290xl024 --pos 12 90xO -o ut p ut LVOS -- mode 1290x900 -- pos Ox224

lesirea LVOS asIa plasat.:i in stanga (X- D), eu 224 de pixe li mai jos ca originea (Y - 224 ).

lesirea VGA aSIa plasali'i in dreapta, la 1280 de pixeli departare de origine (X- 12 80) ~i la acelasi nivel cu aceasta ( Y- O). Cei 224 de pixeli, ca lculati ca dilerenta dintre lnaltimea celor doua ocrane (1 024 ~i 800) , au lost folosi!i pentru a aduce partea de jos a celor doua ecrane la acelasi . nive l, Dupi'i cum se poate vedea si . in ligura 15. 14, in patea de sus a ocanului mai mic (LVDS j apare 0 bandi'i neagra care nu va Ii observati'i lnsa pe niciunul din monitoare,

15.9

Documente office in Linux

Desi suita Microsoft Office nu este disponibila pentru linux, interoperabilitate aproape completi'i cu ea se poate obline utilizAnd OpenOffice. OpenOffice are, similar cu produsul Microsoft, componente pentru editarea documentelor. a fo ilor de calcu l, gestiunea bazelor de date ~i realizarea prezentarilor, numite Wr iter, Calc, Base, respect iv Impress, in plus, existi'i un corespondent al lui Visio numit Draw si un editor de for mule matematice numit Math.

CAPITOLUL 15. VIATA iN LlNUX

519

Versiunea 3.0 a OpenOflice are ioclusiv suport pentru documente in format OOXML' . Este recomandata. in schimb. in situatia in care nu este nevoie de compatibil itate cu Microsoft Oflice, folosirea documentelor in format nativ. Standardul se numeste OOF (Open Document Format), este omologat ISO. ~ i implementat de numeroase aile su ite simi lare. Pentru distributia documentelor readonly este recoma ndat formatul . pdf. Salvarea unui document din Writer in acest format esle 0 facilitate care vine eu OpenOffice, nefiind nVoie de instalarea unui plugin. Oesigur. e~ is ta alternative la OpenOffice: KOffice este 0 surta similara. dar sunt ~i multe programe standalone, care pot OOita un ~ngur tip de fi~ier. Asemenea programe se disting prin vitez1i de operare superioara ~i necesrtAti hardware mai rOO use. Oou1i exemple cunoscute sunt AbiWord " ~i Gnumeric'.

Cuvinle cheie

Rhythmbox Amarok Banshee oode<:uri vce mplayer wodim (cd record ) genisoimage GnomeBaker
intrebiiri

K3b Pidg in BitTorrent Transmission Ktorrent CUPS OpenOflice

OOF

I. Care dintre urmatoarele afirma!ii este adevarat1i despre codecurile audio in Linux?

~i

video

nu exisl1i codec-uri audio/video penlru linux un utilizator trebu ie sa pl1iteasca pentru codec-uri In linux codec-urile sunt gratuite, dar Itebuiesc com pilate din surse majorilatea codecurilor sunt instalale ca dependente ale playerelor corespunzatoare

o
o o

2. Care dintre urmatoarele eomenzi NU are leg1itur1i cu procesul de scriere a unui


CD saL! OVO?
' Formatui OOXML 8 lo st int,od ", <>da!! co Mic ro. oll Office 2007 '0 se d i" ingfI p rin x- 13 e, ten. ia .~ n e . 0.. e. "rnplu doc"
, http ://wwN.ab>SOUfCe.co mi ' http ;lIp'<>i~ ...g no me.o rglg nu me'icI
ad~ug ",ea

litere i

C JPYnghted matanal

520

INTRODU CERE iN SISTEME DE OPERARE

o o

wodim
cdra cord

o mpl a yer

genisoimage
~i

3. Ce program are

lacilil<'l.!i penlru IRC?

o Pidgin

o
o

Ktorrent

o centerim
Audacious
folose~le

4. CUPS asia 0 su ila de programe care sa o pr intare

la:

o scrierea unui CD/OVD


o editarea de documel1te Ottice

o CUPS aSle un joe


5. Pentru trimiterea unui documenl ci'ilre un colag penlru printare aSIa recomandat
lormatul:

o a o o

. doc
. doCl(

. pdf

. od t

C JPYnghted matanal

Anexa A
Raspunsuri la intrebari
Capitolull . lntroducere
1. i n ter p r e tor de come nzi - trebuie sa se poata interpreta comenzi pentru

func!ionarea sistemului de operare 2. BI OS - BIOS-ul flU esle una din resumele de care esle nevoie in virtualizare

3. Larry I'lall- aulorullimbajului Perl


4. calltarea s 1 e l im i nar e a p rog-rame lor virus ' de aceste IlICruri se
ocupa 0 aplicatie antivirus

5. OpenSol ar is - cele lalte sun! sisteme de operare specializate pentru dispozrtive mobile
6. OpenVZ - ruleaza doar sub U nllX

7. un pr ol ec t care p roduce 0

co mponent~

impor tant~

ap l icat i ilor ce r u l eaza pes t e nu c leul Lin l1x , GNU's not Unix 8. Wi nd ows - per'ltru ea via!a e dur;,\ ~i marketingut e marketing

9. Symb i an as - dar iPhone as is catching up

10. Un ix - dezvoltat de un grup de la AT&T i n anul 1969

Capitolul 2. Instalarea Linux. Configurilri de bazil


1. 1 - poale ex isla doar un root
2. con fi g ur a rea u ne i p ar t i t i i pr i ma r e - pentru ca se ruleaza lntrun

mediu temporar

3. Pa l mOS
4. ade v .\rat, 5. comanda a a d eviha t fast
l ansa t ~

de utilizatorul roo t - se presupune ca


fi~iere

rool are privilegii complete

6. swap - swap esle un tip de pa rtilie, nu un tip de sislem de

'"

; JPYnghted matanal

522

INTRODU CERE iN SISTEME DE OPERARE

7. v i rt ua.U - toata ca lelalle sunl !ipuri de partitii

8.

lJbun t u

9. ,<; i ndo.. man age r - window manager sa relerll. la madiul grafic


10. a.dduser - adduser asia lolosila pentru a adauga utilizatori

Capitolul 3. Gestiunea pachetelor

~i

utilizatorilor

I . userad d - va erea un utilizator nOll folosind configura)ia impl ieila

2. Perm i siuni l e a.sup r" i e tc/ passwd flU a sigurJ: se cur it a. t e ma x ima , - I etc/passwd poate Ii citit de orice utilizalor
3. apt este u n wrapper pes t e dpl<g

4. l eg!'i tu ri s i mbolice

5. grupurile d in ca re f ace par t e - inlormal iile despre grupuri sunt !jnule


in
fi~i erul

I e t c/g r ou p

6. contine ver~iuni a l e uno r pachete di f eri t e de ceea sa gilses t e in r e posi to r y- ur i I e cent r ale - programatori i !olosesc asHel de repository-uri perliN leslarea de rloi vers iurli ale programelor

Capitolul 4_ Sisteme de

fi~iere

I . su port ul ui pe nt ru jurna 1i za re - in cawl in care se intrerupe curentu l,

ultimele operalii pot Ii rejAcute pe baza jurnalului 2. /et c /fstab


3. 606 - 653

rw - r - x- wx; a - x va elimina dreptul de executie de la 101i (r '", - r --- w- ); u +" va da drept de scriere owner-u lui (nu se realizeaza schimbari); 9 - r va el imina dreplurile de c~ire ale grupului (rw ---- w- ); o+ r va da drepturi de citire a~or utilizatori; drepturile in final vor Ii r w---- w- (606)
g

4. cat - comanda cat poate Ii ap licatA doar

fi~ierelor

5. i nt er f a t .1 de re t ea d e l ooback - nu ale corespondent in s istemuf de ffsiere


6. EXT3

7.

to~i

u t i li~ator i i - 755

- rw ,,- r - xr - x

8.

afi~area

de mesa j e despre arhivare -conlormman

9. mou n t

10. f ormat area partitiei e u s i s t emu1 de f i$iere dori t -liinddala o partitie, pentru a putea lolos i spali ul de pe aceasta, esle necesarA tormatarea acesteia cu un s istem de fi~fere
~,., ...ov ... atanal

ANEXA A. RAs PUNSURI LA iNTREBARI

523

Capitolul 5. Procese
I. i n i t - esle primul proces
porn~

in sislem. eu PID -ul I

2. ,whup - eomanda eSle lolosit.:! pel"llru a rula un proces eu earaeteristiei de daemon

3. 1 - exista un singur proces init eu PID-uI1


4. o r i c ate - nu existll.limita pentru procesele ballh din sistem
5. ki 1 1 - eomanda doar trimite semnale proeeselOf

6. f als, f al s - un program poate Ii rulat de mai multe ori - astlel se ~or erea mai multe proeese care au aeeea~i imagine: top aliseaza pe prima coloana pid-ul 7. pk i l l - comanda permite trim iterea de semnale
8. /p r oc - un sistem de proces in parle
l i ~iere

virtual, In care se gasesc inlOrma?i despre liacare

9. adev.ira t , fa l s - toate PID-urile au valori pozitive; in mod normal, priorit.:!!ile au valori intre 1 9 si .. 2O 10. explorer - ni ce - Explorer este un shell, nice eSle 0 comanda pentru modihcarea prioril<'itii unui procBs

Capitolul 6. Pornirea

~i

ini,ializarea sistemului

1. BIOS , GRIJB , vmlinuz , il"lit -

2. un sector ce con t ine semnatura OxAA55 (ult imii doi oc t et i I - un soctor este de tipul boot daca el contine ace~ti ultimi doi oceteti, asllel se poate lace un soctor care sa nu eOrltirla un sistem de ope rare dar sa lie bootabil avand aee~ti ultimi doi octe!i

3. upstart 4 . 4, 1, 1,

oricate -

5. POST (CMOS-

6. stage2 -

7. /boo t /g rub ( menu . lst8. i n i t , getty , login , bash 9. (hdl , 2110. adevAratiadevlra t -

Capitolul7. Analiza hardware a sistemului


1. CPU - CPU (Central Processing Unit) este procesorul, echivalentul unitalii de comanda si a unitalii de exoculie dirl mode lui VOrl Neumarln

524

INTRODU CERE iN SISTEME DE OPERARE

2. d d - dd copiaza date row de pe un dispozitiv 3. d d - dd asia ulililar de copiere de date, nu de informare


4. mod i flst a ll - nu exista comanda IEIodinstall

5. / dev Ihda3 - ldev/hda3 reprez int1'i un disc

6. / dey It tySO - ldevlttySO aSia asocial unui dispozitiv serial


7. sout hbri dgE: - southbridge asia unul din cele doua ch ipseturi importante de pe placa de baza

8. TGZ - TGZ sa relera la un lip de arhiva 9. pla.c a


g r a.f i c ~

- AGP (Advanced Graphics Port)

10. d i me nsi unea r ag i st te l or - dimensiunea reg istrelor aSia cea care denota tipul arhitecturii (arhitectura pa 32 de biti, pa 64 de biliJ

Capitolul 8. Configuriiri de relea


1. Sf' tveru l web de I ii <ld eesa cs . pub.to este op r i t -

slatia este

online (comanda pirlQ selVerul web esle oprit


2. Nu - adresa esle

reu~e~te);

daca browserul nu

rau~a~te

lnsaa mna ca

gre~iHi

(allreilea octel eSle 257; mai mare deeM 255)

3. 172 . 1 6 . 150.0 - se face operatia 172.16.150.200 SI-LOGIC 255.255.255.0; rezulla 172.16.150.0


4. Dore l a gene ra t

foarte mult t rafic in timp scu ~ t , l ucru speci fie v i r U$i lo r - op)iunea 1 a comenzii ping genereazA loarle multe pachete (flood)

5. Asocia nume de dO:lle nii eu adrese I P -conform delini)iei

6. 102 . 1 68 . 124 . 159 ,

pe n t~u ca a f o st ult i m a ad r e s a cont i gu rata de ro ot - masca esle configuratA implicit dacA nu se folose~te op)iunea netmask f~ienJl

7. ta l s , adevli r a t -

se cheama lelc/network/interiaces

8. a. deva ra t, fa l se - sarverala pot Ii accasala; DNS esta nacesar pantru a

asigura referirea acestora prin nume (in loc de adresa IP)


9. calea c h re sursa $i des t i nat i e -conformdefini)iei
10. ping loca. lhost - toate celelalte comenzi loklsesc comanda pirog catre un selVer releril prin nume ; relerirea prin nume nacesita un server DNS

Capitolul 9. Servicii de retea


1. e di ta re a unui nou me sa j - editarea se face pe sistemullocal. nu nacesita.

o conexiune clientserver
~,., ...ov ... atanal

ANEXA A. RAs PUNSURI LA iNTREBARI

525

2. f a l s , f a l s - telnet este protocol de nival apl icatie care lunctioneaza paste rep (nivel transport): coml.lnicatia este bidirec~onala 3. SSE - SMTP Si IMAP sunl protocoale de email, HTTPesteprotocolweb 4. E"TP - FTP (File Transport Protocol) nu are nici 0 legatura cu serviciul web 5. Postfix - Firefox este browse r, Outlook client de email, Apache este server w,b 6. pe nt r u stabi l irea eo ne x i un ii ut il i za to rul bes tman t n"buie sa ex i ste pe t e st . com - comunica)ia FTP necesita al.ltenUiicare pa server; beslman este ulilizalorul care Irebuie sa se a utenlifice 7. adevarat , fa l s - dindelini)ie 8. Thunderbi rd - Thunderb ird este clienl de email 9. ssh - wget ~i curt sunt clien)i web. iar telnet permite conectarea de comenzi ~i raspunsuri HTTP
~i

transmiterea

10. niciuna dintre va ria nt e - coml.lnicaliaserealizeazalolosindSMTP

Capitolul10. Elemente de securitate


I. f iltrarea Fachet elor de re t ea 2. e itire 5i exeeutie - cu umlls k 022 fis ierul va Ii creat cu drepluri 644 . Dupa executia comenzii chmod 90+x t e s t grupl.ll va primi drepl de exocl.l!ie. intr-un linal, grupul va avea drepturile r-x 3. _ cOrN31 [ I sh + - esle 0 parola oomplexa, formata cu cilre, li tere si simboll.lri 4. va rf uri de te nsi une !n re t e a ua elect rica5. toate var ian t ele 6. f a ls, fa i s -virusul dintr-un e-mail trebuie inlili aClivat; in lunetie de tipul lui si de clientul de email, metoda de activare poate dileri; un sislem poate Ii "gazda" oricMor virl.l~i. atal limp cal nl.l este protejal 7. numaru l de elient.i ai s e rv e r - ul ui -restulinlorma)iil orsepotextrage direct din tralieul monitorizal 8. uli.mi t 9. de fi nirea unei pol it ici de securit a t e 10. l e te/s ha do '"

Capitolul11 . Compilare si linking


1. a j utll ca aplica t ii l e sA f ie mai simpl u de in t ret i nut programatorii nu mai IreblJie s<"i dezvolte si s<"i intretina oomponenle, lJlilizilr1d oomponentele disponibile in biblioleci

526

INTRODU CERE iN SISTEME DE OPERARE

2. - c
3. se n ume:; t e portabi lita te

4. ma ke <target> - fisiarul Ma.kef il e !tabuie

s~

sa

g~seasca.

in directorul
folose~te

curent: pentru trimiterea unui lisier Make fi le ca parametru sa parametrul- f

5. fi$i e r e s u rsa C fara direc ti.v e de pre c:lmpil ar e

6. sta.tic libra.ry - codul dinlro biblioteca stalici'!. aSia integral la campilare in executabil

7. a.devarat , t l s - apelurile de sistem pot Ii execulate si direct de catre aplicatii


8. fi $i e r u 1 est e e><ecutab i 1 - reslul informatiilor reies din f ile
ie~irea

comenzii

9. f OIls , t a ls - programele interprelate sa depaneaza rna;

u~or

decal cele

compilate deoarece procesul de dezvoltare nu rna; presupune compilarea codultli;

in urma campilAri i nu rezullA lis iere in limbaj de asamblare (Iisie rele in limbaj de asamblare nu se pot e~ecula direcl pe procesor)
10. strace <prog ra m>

Capitolul12. Shell scripting


I. Flash - Flash esla un plugin penlru web browser

2. grap - aste singura comand;'i dintre cele prazentata care poate primi ca

parametru

axpresia regu latA

3. < < - esta operatorul pentru daschiderea unui hera dOCl.1ment


4.

t es t 0 --b - [ $01 -- $b ] nu ara oparanzii saparati de paranlaza; celelatte op!iuni nu sunl lolosile penlN lastaraa egalil.:!.!ii

5. Sort eaza li ni il e in !oemat nume r ic


6. c ut - cut esle lolosil penlru exlragerea de componente dintro Iinle de text
7. Viteza cr.ar e de execu1; i e -scriplurilashalltrebuies;'ilie interpratale,motiv

pentru care au

vltezA micA de execuVe

8. Peez i, nta c a l ea ditee ut il itarul folosit pe nte u eu l a eea scr i ptul ui


9. r epea t - nu existA comanda r e peat in Bash
10. fi nd .

- mindcp t h 2 -t ype din subdirectoara

-comanda

al~eaza

recursiv doar li~iere l e

Capitolul13. Mediul grafic


1. PUG - PNG este un format bitmap cu suport pentru !ransparen!.:!. (alpha channel)

atanal

ANEXA A. RAs PUNSURI LA iNTREBARI

527

2. UIf- 6 - [JIf- 6 este un standard de codificare a caracterelor in fi~iere 3. pe r mit e unui ut il i za tor Sa se a ut en t i fi ce in in t e rf a t a gr a fca - conform definiliei 4. Xorg ~i b it map - Xorg este 0 impleme ntare de server X, bitmap este un lip de imagini 5. Dorel nu are dr ep tu l sa porneasca s e rviciul kdm - din prompt se poate observa ca ulilizalorul nu este aulenlil icat ca r oo t 6. Spot l ight - Spotlight este un serviciu de indexare ~i cilutare a fi\?ierelor in Mac
OSX

7. KDE - KDE este un Desktop Environment 8. Syst em Information - restul aplica!iilor sunt Iolosile pentru a alia informalii in linia de comanda 9. Adeva ra t, Fals - Un Window Manager controleazil cum arata fereslrele aplica!iilor prin intermediul componentei window dewrator. Clientul X nu interactioneazil cu utilizatoru l direct; server-ul X lace acest lucru. 10. Xorg - Xorg este 0 implementare de server X

Capitolul14. Utilitare pentru dezvoltare


1. Vi m - gdb eSle un debugger, ctaga este un program ulilizat pentru a preluera 0 sursa si scoate un tisiercu indecsi ~i ,,"style este un code beautifier 2. Va lgr i nd - git este un program de revision control, ind.. nt este un code beautifier ~i Trac este un utilitar de management a pro iectelor 3. boot - checkout/cl o ne adue local 0 copie a repos itoryului , commi t adauga modilicArile la repository si upda t e aduee repos itOl"yul local la cea mai nOUi'1 versiu ne 4. 1 i cent ierea codu l ui su b GP L - 0 licen!a nu va influeflta Irumusetea sau lizib ilitatea codu lui. 5. OpenOffice - OpenOffice este Office Suite, nu olen1 unelte necesare dezvoltArii codului. 6. ctags - splint este un utilitar de analiza stalic1i a codului, indent esle un code beautifier Si gdb este un ulilrtar de depanare 7. graphic - in modul visua l se intra apastmd tasta v, in modul command se intra apasand :, in modul in se r t se intrA ap.1isAnd tasta i 8. : w - :q inchide editorul. :s va face replacei. :help lanseaza inlru n tab help 9. gi t - Vim este un ed itor, Eclipse esle un IDE
~i I~ierul

de

ddd esle un debugger

10. Tr ac - GTK este un widger roolkir, ddd este un debugger si Waterfall este un model de a dezvoltare soltware-ului

528

INTRODUCERE iN SISTEME DE OPERARE

Capitolul15. Viala in Linux


1. M a j o r it a t ea cod ec - u ril o r s u nt i nstal a t e ca de pende nt!! a l e

p l a yer - elo r cores pu nza t oa re .


trebu ie inSlalare ulterior codecurile)

- pentru 0 utilizare rnai usoara (nu

2. mplayer - 8sls un med ia player


3. P i d gi n - li bpurp l e , biblioleca llIilizaUi de Pidgin are
4. p rin t are - Common Uni)( Printing System
sup~r!

si pentru I Re

5. . pdf - celelalte formate nu sun! suportate integral pe toate

sisteme.e

C JPYnghted matanal

Bibliografie
[1] Tom Adelstein and Bill Lubanovic. Unux System Administration. O'Reilly Media,
March 2007.

[2[ Alfred V. Ahe, Ravi Sethi, and Jeffrey D. Ullman. compilers: Pn'ncip/es, Techniques, and Tools. Add ison Wes ley, January 1986.

[3] Ross J. Anderson.

Security Engineering: A Guide to Building Dependable

Distributed Systems. Wiley, second ed ition, April 2008.

[4[ Nitesh Dhar'ljani and Justin Clarke. Networl<. Security Tools. O'Reilly Madia, April 2005.
[5) BrI)C8 Eckel. Thinking in Java. Prentice Hall PTR, fourth edilion , February 2006.

[6] John Fusco. The Linux Programmer's Toolbox. Prentice Hall, March 2007.
[7J Simson Garfinkel, Gene Spafford, and Alan Schwartz_ Practical Unix and Internet

Security. O'Reilly Media, third edition, February 2003.


[8] Mark G. Graff and Kenneth R Van Wyk. Secure Coding: Principles and Practices.
O'Reill~,

July 2003.

[9] John L Hennessy and David A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann, fourtl1 edition, September 2006. ]10] Michael Horton and Clinton Mugge. Hadlnotes - Network Security Portable Reference, McGrawHili Osborne Media, July 2003. ]11] Steve Hunger. Debian GNUILinux Bible. Wiley, May 2001. [12] Brian W. Kernighan and Rob Pike. The Practice of Programming. Addison Wesley Professional, February 1999. [13] Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Prentice Hall, second edition, April 1988. [14] Donald E. Knuth. Art of Computer Programming. Add ison-Wesley Professional, October 1998. [IS] John R. Levine. Linkers and Loaders. Morgan Kaufmann, October 1999. ]16] Robert Love. Linux Kernel Development. Novell Press, second edrtion, January 2005, [17] Robert Love. Linux System Programming, O'Reilly Media, September 2007,

529

K;l matanal

530

INTRODU CERE iN SISTEME DE OPERARE

[18] Neil Mallhew a!1d Richard Stones. Beginning Linux Programming. Wrox. November 2007. [19] David A. Patterson and John l. Hennessy. CompulerOrganizalion and Design: The
Hardwar8/Software IntertaCiJ. Morgan Kaufmann , fourth edition , November 2008.

[20) Cyrus Peikari and Anton ChLNakin. Secunty Warrior. O'Reilly Media, January 2004. [21] Eric S. Raymond.

The Art of Unix Programming. Addison-Wesley ProlBssional,

Octobar 2003.

[22] Rlizvan Rughinis, RAzvan Deaconescu, Andrei Ciorba, and Bogdan Dainea. Relele locale. Printech, September 2008. [23J Razvan Rughini~ , Razvan Oeaconescu, George Milescu, and Mireea Bardac. UMizarea sis/erne/or de operare. Printech. September 2007. [24] Joel $cambray, Mike Shema, and Caleb Sima. Web Applications (Hacking Exposed). McGraw-Hili Osborne Media, second edition, June 2006. [2S[ Bruce Schneier. Applied Cryptography John Wi ley & Sons, second edition, October t996. [26[ Avi Silberschatz, Peter 8aer Galvin, and Greg Gagne. Operating System Concepts. John Wiley & Sons. sevenlh edition , December 2004. [27[ W. Richard Slevens. Advanced Programming in the Unix Environment. Addison-Wesley Professional. June 1992. [28[ W. Richard Stevens. TCPI IP Illustrated. Add isonWesley Professional. January 1994. [29[ W. Richard Stevens. Unix Network Programming. Prentice Hall. second edition, January 1998. [30[ Andrew S. Tanenbaum. Computer Networks. Prentice Hall, fourth edition , August 2002. [31 [ Andrew S. Tanenbaum. Structured Computer Organization. Prentice Hall, filth edition, June 2005. [32[ Andrew S. Tanenbaum. Modern Operating Systems. Prentice Hall, th ird edition, December 2007. [33] larry Wall. Tom Christiansen, and Jon Orwant. Programming Perl. O'Reilly Media, th ird edition, July 2000.

C JPYnghted matanal

Glosar
-Wall, 32.fi _. help, .4.3

help. 312 . ~im rc . !JJL Idev, 20.1 l etc!hostname, 2.36. lelc/hosls, 235
l etc/nelworklinterfaces. 225. letc/resolv.conf, 233. IprocJcpuinfo, 208 /proc/m od ules, 1M
inl ~tu irea

biblioteca, 3il biblioteca partajatA, 3i2.!U!fi bibliotecil staUcA, 3!l2 t)iblioteci ell legare dinamicA. 3!\2

bib/iolOO ell legare static!, 3!12 BIOS (BaSic Input Output System), 15..l bitmap. M2 booting. 152
boolloader, 1.5. branch, .u9. bug, ~ ol9I

comenzilor, .382.

bug-report, 4.9..Z

!ntrerupere, ~
_c~usplus,

3.61
and

c ~ C++, J5I
ClsvtA postalA .26i cache L I , 1B9. cache L2. 189. cachegrind . .492 cale absolutA. 12 cale relativA, 12 case (bash), 3fiZ..39.i cat. 3.Z8.~

ACL (A ccess Control U s/I, sa


ACPI (Advanced Conliguration Power Inleriace). 19.B. adres<'l IP, 21.9 adres<'l IPv6. 2l9. adresA MAC, 2J.9. agile, !l9I Anjuta, 4.69.. 4M apel de sislem, 1116 apeluri de sistem, i l l

certificat digitaJ, i l l chainloading, 159. checkovt, iZ9.


chmod, 29.1 chown, 291 chroot, 300 CLI (Command Line Interlace), 38...36..6. cl ient, .25=l

API

(Applica/ion Interface), Z

Programming

aplica tii de bazli, 2 apropos, U3.Z2. arhitectura unui sistem de cak:ul, 18B.
arhivare. 52

cmdlets, !l34.
CMOS (Complementary Metat Oxide Semiconductor), l.S3. code foIding , .41.3

3samb/are. 32B. 3.33


astyle, 412

autocompletion (bash), 369. AVFS (Anti-Virus FJlesyslem). 1.O.3.


awk, UQ
background. 13ll

bash. 36fi

bg.=

coding style, un comandA, .42 commit. iZ9. compilare, 32L.32B.. 3.3.1 compilare din surse multiple, 32Z compilator, 32L ~

53'

532 conhgurara bash, ~ conlig urare prompt shell, !l29 conlig urare vim , 41L config ure, !l8A consolli, ~ consola GRUB, 1.Ii!l conlrolul acceslIlui, .28.1
conlrolul versiunii,

INTRODU CERE iN SISTEME DE OPERARE

4L9.

cr iptare, 3.111 csh, .3fi6. clags, 418. 4B2 CTRl-1, 139. CTRlAlTDEL, 1A2

ELF (Executable and Linking Format), :>Ill Emacs, 3.2Q emlliare, 12 emulator de te rmi nal, 4.1 EncFS, .1Jl3. Ethernet, 252. ethtool, 239. exit, 311 export, ~ expresie regulat~ , MlI extern, 3.6.1 Extreme Programming, 4.9I feature creep, 282 fg, 1.3.2 fisier, 69..14 fi~ier executabil, 33lI. fisier obiect, 3.3J find, 4.16. Firewall, 3.1ll firewall, .310 for (b ash), .3fil..39.5 foreground, UQ fork bomb, 2B.1 freeV6rlta, 1Bli fsek , 212
FTP(File Transfer Protocol), 25.1

CTRL-C, 1.39. GTRl-Z, 1.3.1.1.39.


cul, 4Jll

Cygwin, 356.
daemon, 133. dares, fl9. dd, 206.

DOD (Data Display Debugger), ~ 4111 Debian, .25


debug, ~ debugger, !UlS depanare, 4.8a depmod, 195 desktop environment, 4A.Z dezasamblare, .3J4. dhclient, .22.5 DHCP (Dynamic Host Control Protoco/) .

fune\ii bash, FUSE , 103

director, 69.,.14 display manager. 4!1.2 dispozitiv bloc, .2ll3. dispozitiv caracler, .2ll3.
dispozitive de intrarelie~ire. 1Bl. distributie Linux, 2!l DLL (Dynamic-link library} , .3!l2 DMA, 2Ofi DNS (Domain Name System). 22.3. 25.1

'"

hlm', .49.9. LaTeX, .49.9. DoS (Denial of Service), 28.1 Ooxygen. 4S.9. driver, 3.1.9..3.
documenla~e

documenla~e

gateway, .222. GCC (GNU Compiler Collection), 325. g.ce in Windows, 356. GDB (GNU Debugger), .4B9 GID (Group Idenlrtier), 55 gil, flll~ GNU, 2.3 GNU Autotools, 4B5. GNU CPP (GNU C preprocessor), 3.3l GNUILinux, 2.3 GParled, c49. grep, 4ll5.. MlI GRUB, .1fi2 GUI, L GUI (Graphical User Interface) , .39. GUI (grafical user in terface), 366. hard-<lisk. 1.9O. hardware, .1B6 C JPYnghted matanal

echo, 311 Eclipse, ol59.. ~

GLOSAR head, 40Z helgrind, !1.92 here document, JalI. here string, 3B2 hipervizor, .16 host, 2.3!l hoslname, 2.3li HTML (Hypertext MarAup Language) ,

533

libnotify, 4.5ll. limbaj asamblare, .332 limbaje de nivel inalt, .3.22 limbaje de nivel scazut, .3.22 limbaje de program are da nivel inalt, .3.22 limbaje de program are de nivel scazut,
;]22

2ZJl
HTTP (Hypertext Transfer Protocofj,

25L2ZJl
hwinfo, 1.9a tCMP, 236. tOE (Integrated Development Environment),

320. .......
IDS (Intrusion Detection System), J12 if (bash), 36L ~ ifconfig, .22.5 imagine de CD, 212 imagine vectoriala, MJ IMAP (/nternel Mail Access Protocol), indent, 4Il info, !l3. 312 init, 11L 1A3. insmod, 195. instalarea din surse, ~ inter/ala de relea, 2..2S. interpretare, ~ interpretor, ~ IP, 21B. ipcontig, ~ IRC (/nternel Relay Chat), 50.1 istoric (bash), 369. Javadoc, .49.9. jeton hardware, 28B jobs, 1.32. jurnalizare, .!lJ kernel, 2...185. kil l, 131 kil lall, 13a kswapd, 1A3.

link-ooitare, 32B..33I linker, 338. Linux, 23. Live CD, 3.1 locate, i1!i 1 00pback, 22:6 Ismod, 1S4. Ispci, 19I Isusb, 19.6. masina virtuala, .16 make, .3!L5 man, !l3. 312 MAN (Metropolitan Area Network} , .2l.B. management proiecte software, 4Sfi
massif, ~

25L""

Master Boot Record, 3.1 MBR (Master Boot Record), 1.56. 2ll medii integrate de dezvoltare, MlA memcheck, !1.92 memoria, 1BI memorie cache, 1.89. memoria vi rtual<'l, .285 MinGW (Minima/isl GNU for Windows ), 35li modprobe, 1.!!5 module de kernel, 1S4. montarea unui sistem de fi~iere, 9.1 MSVC (Microsoft Visual C++) , 4.6.9. 5Q2 multicore, 1.BB. mul\iprogramare, 1.16. multitasking, 1.16. name-mangling, 3fill nice, 1A.6 I'll, 40.0 nm, 3.35. nohup, J..3.ol northbridge, l.9.1 NTFS3G, 1m NTLoader, ua objdump, 3M C JPYnghted matanal

LAN (Loca/ Area Network ), 21B. ", 4Bfi Idconlig, c4B6. Idd, c4B6. legatura simbolica, 101.

534

INTRODU CERE iN SISTEME DE OPERARE


procls, 114.12I program , 112 prompt, 42 protocol, 2A9. ps, 11l

one liner, 3Ia operatoful &, 13ll

operalorul $ ( I . . . ) ) , ~ operatoful , 38ll

operalorul

~ ,

3B2.

operatoful , 380.

operalorul I. lAO. .38.2 optimizare, m optimizarea compilarii, 3.35.


pachel software, sa pachale ne<:eS3re pentru dezvoltarea codului C, 3.24 pager, lL

RAM, 19..Q
ramdisk, 32 raster, 4,12. retea de calculatoare, 2l.Z read, 3Za readl ine, JfiB. Redmine, 49.1 registre , 18..8. 1M reg istre vim , .4I6. repository, .4I9.. 49.I resoivconf, 2.33. reverse search (bash), .35fi. rmmod , .19.5 roadmap, 409.l

paginator. 1L
paramolrii unul script shell , 4Z1 partiti logica, 3.1
parli~e,

JO

parti!ie de swap. 30. parli!ie e~tinsa . 3.1


partitie primara, 31

root.

PATH, N
pdflush, 143 peer to peer, .25A

ruter, 219...25.2

S,MAR.T,, 2llQ
scan area porturilor, 3QI schedu lin g, ll5. schimbare de context , 116. sector de boot , .l5ol sed , 4.08. Semantic Web, 2liB. semnal, 135.
semnale, ~

pgrep, 123
PID, 113.

ping. 2.3li PKI (Public Key Infrastructure), .2aI


pkill, .138. placa de baza, 1!ll

electronic!, 26..3. poll, 245. pon, .245 POP3 (Post Office Prolocof), .2S.1., ~ porI, 255. pori 1 1 0, 2.05. portabilitate, 3M POSIX (Portable Operating System Interlace), 35fi POST (Power-on Self Tesl j. 154. PPP, 2,U
P~ta

PPPoE, 243.

pppoeconf, 243.
preprocesare, 328..330 principiul celui mai m~ privilegiu, 28.1 principiullimitarii drepturilor, ~ prinU, :rrl proces , 112 proces de dezvoltare software, .'la!i procesor, .18.8

seq, 39fi server, 254 set, 3ZI setgid , 29..9. setuid , 29..9. sldisk, 2.ll shebang, 315 shell, 41 365 shell script, 3fi!i sh ilt, .422 shutdown, M

SIGKILL, 1.3.5 SIGSEGV, 1.35 SIGTERM, 1.35


simbolul $ , .ua sistem de fi~ iere, Zll sistem de ope rare, i sistem multi-core, ll5.

C JPYnghted

mataf~1

GLOSAR

535

sisteme cenlfalizate de vers ion are, ill!. sisteme distribuite de versionare, ill!. sisteme multitasking, 5. sisteme multiuser. 5. smarlmontools, 2OO SMTP (Simple Mail Transfer Protocol) ,

trunchiere

fi~ier, .38.2

TTL. 231
TU I (Text User Interface), L. 39. Ubtintu, 25 lJdev, 2111 UDP(User Datagram Protocof). 251. UID (U ser Ident~ier). 55 ulimrt, 3Q2 umask, 292
Unicode, ~

251.=
SNMP (Simple Network Management Protocol), 251. SO (sistem de operare), 1 southbridge. 19.1. spatiu kernel , 18li spaliu ulilizator, 18li spam, .26.Z splint, .48.2 sshfs, 1.Il3 Slarea unui proces, 115 slivi!: de protocoale, 2!!.9. slrace, 4B8. Subversion, .4Z9.. 4Bll sudo, !IT. 30.1 SVN (Subversion), .4Z9.. 4Bll swap, .30. 21.3. swapping . .30..ll1. SWitch, 2.5Z synta~ highlighting, ,li3 sysctl, 21Q sysfs. 1.9.6. system tray. i5ll tabe la de parti~i , 15I tac, MlIl tag, 419. tail, !lO.2 Task manager, 1A2. TCP (Transmission Con/rol Protocol) , terminal virtual, 4.!l. test (bash), 391. TFTP, .25A time, l26. top, 124.
tr, ~

unitatea aritmetici!: ~ logici!:, 1.BI unitatea de comandi!:, 1.BI update, 419. Usenet, 501. utilizare biblioteci, .34A valgrind, 492 variabila $ ?, 39.2 variabila s@, i22. variabila $1 421 422 variabile malle, 352 variabile speciale shell, 42.3 VBR (Volume Boot Record), 1.S6. VCS (Version Control System). ll9. vectorial, M3. vi, 32ll. vim, .32.0.. 413. vimtutor, 4L1 virt ualizare, 1fi virus. 3Q5 VNC (Virtual Network Computing), .462 WAN ( Wide Area Network), 21.!!. walel1all, 49.I ~, 4Jl!i webmail, .2fiS whereis, 312 while (bash), 3.6L 3.9B. wiki , 49.I window decorator, 4.4.I window manager, 4Afi WLAN, 253. working copy, 419. worm, .3Qfi
Xt l , ~

""

Trac , 49.I trace route , 231 troian, 3llii

XHTML, 2I1

C JPYnghted matanal

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