Documente Academic
Documente Profesional
Documente Cultură
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/ ()
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;";.
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
14 15
16
Studju de
cal
16
23
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
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
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
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
. 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
195
195
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
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
238
240 240
241
.243
9.1 .2 913 9 14
252
254
255
.,
viii 9.2
.257 25 7 258
,
933
94 WWW
.266
267 268
95
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
I i
10 3 1
Ii '
"
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
'"
,,
319 320
"
",.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
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[
357
365
"
"
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
,
12.5.1 cat, tac, nl 12.5.2 sort, uniq 12.5.3 head. tail
1254 ellt 1255 Ir
1 2 56
.400
.400 .402
403 404 405
we 12.5.7 grep
sed
_405
406
410
125 B 1259
awk
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
. 429
_ 431 . 433 441
.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
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
50'
507 509
.,
xii
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
xiv
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
C JPYnghted matanar
16
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
IQue.t) I<uport p ~ nt r u
a c~ ~ .~ i
a,Me<toJ, 1
~ a'd
5i.tem o.<pete IQue <t) I, uport p ~ ntfIJ aceea" a'l1It e ct wr~ h. rdware )
Hipervizor (VMM)
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
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
""
KVM
Open VZ
1. Care dintre urmaloarele aplicatii peale Ii privita ca 0 componenta a Sistemului de ope rare?
o
o
, 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
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
o Larry Wall
I:)
linus Torvalds
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
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
2.1
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
23
C JPYnghied matanal
24
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
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
C JPYnghted matanal
25
Iii
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 .
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
, , ,
o o
o o o o o o o o , , , ,
1 .-
T*
.,
"':=' If
.I..
~r
~ :::p=
I! +-+-+-+-+-+-
o o o o o o o o , , ,
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
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
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.
27
2.1.3
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.
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
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
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.!
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
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
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
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
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
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,
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).
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).
"
_ .. _
..
-,--~.-~-
......
'-
~~
---
.......... _"""'
_. _
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?
___
~
... _
.....
_..-~,
...
35
,. ,. - -..
... . .
, , ',
~ .
_." . .. " , . , .
, ','
.. , , ..,
--
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
.... ....
,
"
--
"-'-,
16'
.. -
. ~,-~----
~"'_M ' _
.-"- -
,.
,
h~
.... _
.. ".,._
!!
.,.
--
-, ""_"'_M. _
"
---~-.-
. ",,---
( _~N
~-.--
'"
-.
.
,
wi
.. .-
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
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
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).
-_ . ,...--_ ....... .
_
-.----~--._~_ ~
_--
~.----.--
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
-"
~---
_..._--_.
e
Figura 2.13: Ver ificarea datelor si alegerea harddisk-ului pe care va Ii instatal GRUB 0 ......." ... ( ... P ...
.....
--_ .........
_ 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
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
_ ..."--
40
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
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).
C JPYflghted matanal
"
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.
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
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
Oe exemplu, in cawl
~i
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
00 : 00 : 00 ba ~h 00 : 00 : 00 p '
"
..
"
george @a aga rd : -S
$roct i ""u ~ .
1.2
"
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
"
li ke --b .. ckup
,.
1$
copy contents
'"'
"
00'
accept
,.
special fi l es when
,.
[ . .. I
afi~a
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.
, ,
, ,
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:
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 . , .
,
,
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
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
,
,
The
~y~tem
is <;Ioing down
fo<
h~lt
NOW !
,
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 !
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
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
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 '
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
ulili~ator
U80 tara
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):
, 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.
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
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
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
,
~
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
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
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
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.
eLi consola dislri butia Linux gestionare utilizatori GUI Kubuntu live CD MBR inSlalarQ
".,
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
.....
7~,.'
U"'"
Gill) :
Goil
...... .ldov/.<!b l
l ....... cIb'
~.
,m!IO/d., .-]
. , ."
M."
~1 . S9G<B
.-~
.-
fOll2
fotl>
1 ." . "'"
' .0:; """
91." <>8
97.0 1 c;;e
07." Gill
f.,'2
/l'nedioM.'
IU'G6
00 ,0' ",,8
lU(lGS
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
o Debian
o ubuntu Live CD
o PalmOS
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.
o o
o
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
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
10. Care din urmatoarele comenzi NU eSle 0 comarKIa de ajutor po un sistem Linux?
Oman
info
apropos
o adduser
C JPYnghted matanal
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
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
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$ - }
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
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
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
~
"ndrei~@aMconda : -S
passwo~d :
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
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
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
user
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
EGJO~
Is tne
! ~ for m "tlon
correct? (yiN] y
" ,.
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
...
3. 1.3
Adaugarea
~ i ~te rg e re a
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)
$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 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
,
,
57
U.o@~.g~rd:-$
.udo SU
10
" " ,.
1~
e"it
"
1~
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!
~i
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
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
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
"
~ ~
.. 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
~seradd
,
,
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
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:
, ,
,.
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
[
. .. [
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 )
Li nUK hrnd U
'""
de ~ cript i on
Irnaq"
00
Pprol
C" l "
I , .. ]
60
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
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
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 .
61
,
5 7 ,
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 ]
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
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
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
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.
~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).
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 .
.
m j h a!@teldon : ~ ~
-- jist
edlto~
) 5
, 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
..
~
n u mber :
(neinteracli~)
~ww - brow"er
fusr/
update-al te rnat i ve s
3.3
3.3.1
Studii de caz
Fi ~ ierele
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)
65
She"ul folosit
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
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)
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 .
"
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
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
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
(. .. 1
3.3.2
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.
' 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 ,
'00'
linger l elc/passwd
l elc/shadow l etc/group
passwd
'"
adduser. deluser
'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?
o o
o
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
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
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
urile centrale
nu poate Ii protejat
o poate Ii folosi! de
or~e
distribu!ie
C JPYnghted matanal
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
~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
69
.1
70
~ilsau
alle
In
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
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
precum
,,'
io
etc.
"
utilizatorilor
" "
operare instalateicompilate de
,
log uri.
I~ i ere
,
temporare, cache (dale reutilizabile). spool
Ii~ iere
in linux
C JPYnghted matanal
12
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
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
Exista doua moduri pnn care se poale ae<:esa un absoluta sau 0 cale relaliva.
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
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
use rname
,.
Files
Ibi n; Isbi n
f'
sistemului
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
cd .. 1 .. 1 .
6 ,
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
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:
,
~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
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.
,
~
37 2007 - 09 - 04 10 : 59 he llo . t x t
1
8
"
,0
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
" "
, ,
, ,
" -,
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 .
" "
-~
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
4.3
4.3.1
fi~ierelor
liOi directoarelor
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 : /$
CAPITOLUL 4. SISTEME DE
FI~IEAE
n
nu modilici'l directorul;
- 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
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<,,~
78
ubuntu@ubu nt u ; -$ Is - }
2
Ihome/myuse~/myapp
use~5
11 76348 2 007-03 - 03 20 : 2a
IhomeJmyuserfmy~pp
- = 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~
J:
users;
- 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
dr"xr- xr-x
- <w- r -- r --
"
, , -<,,------- ,
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
",
. 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
..
'"" '"'
19 ; sa 06 , 14 19 ; sa 06 : 14 13 : 15 06 : 14 17 : 40
" "
. ./ .. /
medi~
,~,
" "
...
ln i t r d . i mg lib meoi&
.,
~".
.,.
.,.
.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
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.
,
,
touch Osierl
fisier2
, ,
, ,
" -,
rn He"" users
- r.;- r -- r --
..
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
touch fi s leci
- n,- r -- r --
, "
rOOt
- 0> root
2009- 08 - 21 17 : 11
fI ~ ier1
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.
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
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
, , , ,
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
,
7
f2 . txt
ubun tu @ ubunt u: -$ mv [2 . t x t
f3 . t x t
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
~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 >
ce anume se arhiveazll;
<cale> precizeaza directoru l/directoarelelfisiere care vcr Ii arhivate. Pentru a dezarhiva 0 arhiva . tar, se utilizeaza:
nume_ arhi va . t ar precizeaza numele arhive i care se dezarhiveaza: specilica. op)ional. locul unde se real izeaza
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
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
" ,.
,!
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
"
'" "
,..
"
"
. 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
""
$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.
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
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
, , '" , en " , ,
< >
00<
- 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
,
3
"
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 ~ "
lolose~le
operalorul 2 :
,
,
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 '
~i
,
J
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
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
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"
creeaz(t
, "0'
co
sau,
if
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.
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
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
90
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
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
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
"
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 :
" 6
/5bi n / un i x _ch ~ p wd
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:
. 1.q,
92
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.
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
4.7
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.2
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
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
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
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.
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
96
TabeluI4.14:
do
ii
cale
caraelere cu
LFN'
pentru nume lungi (LFN) pentru un lisler: FAT32 reline atal numele lung cal
suporl
caraclare
..
? , <, >, I,
NULL numele
permis
ma~ima
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.
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
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
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
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
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>
mont~"e>
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
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
afi~eaza
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 >
Pentru a demonta acest sistem de fisiere se poate utiliza oricare din urmatoarele doua comenzi:
,
,
100
4.8.3
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
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
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.
fi~iere
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
4.8.6
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
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
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
u~or
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
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
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
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
4.9.2
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.
in Windows
Tabelul 4.16 prezinta ed1ivalenta comenzi lor de baza Windows si Linu x penlru prelucrarea I~ierelor.
4.10.2
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
- 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
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
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
"
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
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
- 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
108
sistem de
montara
fi~iere
arhivare
dezamivare
,,,"
damontare
backup
descriptor de lisier
redi rectare
drept de aeces
Is , pwd, cd
cp, my, rm
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
o /e t c/fs t ab
f i~ierulu i ?
0534
451
CAPITOlUl4. SISTEME DE
FI~IEAE
109
fil ..
o o o o o
o o
touch
rm - r
cat
executabil
director al dl.rui nume 1ncepe cu . legilturil simbolicil cAire /bin interlata de retea de looback
o o o o o o o
o
HPF S
FAT32 EX T3
UF S
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
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
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
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
~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
""
"
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 : -$ 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
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
,,,
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:
, ,
, -$ cd
Iproc/~7401
"
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
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.
, ,
,
... ]
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
, -, -, , -,
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
~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
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
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
5.2
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
-,
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
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
... )
,, , , ,,
"
rIME
. '"'
.,
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
-, -,
"
ba , h , vi , gnome - terml na l
rIME
'"'
"
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
"
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
apach~2 apach~2
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
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
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:
r~zv~n @ a.qard :
-$
-,
-.
root, razvan
-c
apa ch,, 2
"
, , ,
,
portm~p
"'"
120
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
, ,
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
1574
"
3352
'" '"
STIME m 12 : 0 ~ pn/O
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.
, ,
, ,
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 {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
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
" ,. " , ,
"
-. .
'"
..
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
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
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
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;
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
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
\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 ...... .
96l20010: ".d ,
29'l'}<8k
" . d,
D,,.....i. _
' ."', i .
buff . ...
D, ......
2800961:
,,(h. d
. ,~ .,~
OJ
, .. II2!i<I S
~
G,w. n
O, O'l.eJ 0 , 01.2(1
3 , 0)01.'1(1 . . "rood
.. .
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
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).
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 ).
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
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
PIO USER
PR
NI
VIRT
RES
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
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
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 0
0 S 0 S
o 5
5.2.5 Timpul de
e xecu~ie
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:
,
)
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
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
'" '"
,"
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
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
unui proces.
document Wo rd.
" '"' '" Se peate observa ca procesul asociat Open Office are pid -ul 3066 si ca atare va fi
9tat
, , ,
PID TTY
TIME CMD
3066
au xv
cmdline
...
"
root amapa
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:
, , , , "
"
m
1000 1000 1000 1000 1000 1000
I .. 1
Uid : Gid :
,. ,
1000
1000
205120 202392 0
CAPITOlUl S. PR OC ES E
129
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
, ,.. . ,
" , , , , ,
"
-,
"
, ; " , ,
..
"
2009 - 08 - 04 13 : 31
: 31
-. -. -,
-,
-,
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
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.
5.3.1
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:
, , , , ,
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
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
~i
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
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
, ,
-, -,
jobs
'" , '"
(3] -
( 4 1+
.,
"
'"
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
" "
, , , ,
r a ""an@ as\"Ia rd : -$
( 41
I. 2(; 2 . 51-1 I. 7(;
"
. -" schoo l
.. "'
jobs
job ~
v mwa r ..
-,
&
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
~emac"
CA PITOlUl S. PR OCESE
133
"
6
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).
, ,
r~zv~ n @3.gu d
'" , ,
-,
"
-,
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
! .. .
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
'"
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
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
" "
'" "
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
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
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
, , , ,
-,
"
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,
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
5.4.2
~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
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
Comanda killal1 eSle folos iUi pentru transmiterea unui semnal caIre un proces sau
catre un set de procese atunei cand se
cunoa~te
ps -0 "pache2 - B
PIO TTY
TIME CHD
, " ,0
11
, , "
00 : 00 : 00 00 : 00 : 00 00 : 00 : 00
~pac he2
apache2 a pache2
00 : 00 : 00
apa che2
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
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
PHI COMMAND
USER
, ,
10
guest
gunt guest guest guest guest
kill~ll
'"
"
'"
-- user quest
" "
13
~ s qHd : /horn~/razy .. nt
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
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
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
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
-$ 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
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
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):
,
)
tree
111812 382964 497912
shared
"
buUers 19892
cached 185200
nght
mater~1
,<2
Sa observA eli sistemul beneficiaza de 512 MB de memoria RAM 5i . nu aSia folosi! spatiul . de swap_
5.7
Studii de caz
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.
_ ........"'""" 1 .."""""',-
1 ...... ,
Om_
,,., ,.,,.
. -.'"
_
-- . -- . - -.
_ ~ ,,"'. ,,"
" "
"""""" ""VIC!'
00
"""""" ,...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
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.
C JPYnghted matanal
1<,
'
... ..
........ -_ . ....... _ .. ...... ...... ....... --, . _ ........ -. ....... ... . ..... -.- .- -- .......
... - "' ..
"
~~~~~~-
""
- ".-.
coo. ..... ",
,
...-.~
..
''''
""
'''' ""
",,_s.,
""-~
....,
,
....
Ho",
"" 'oo........
""
u....~
~~~=--- .lJE
[iI'.lm
.<d.o: 00"Id
. ID""' ~"
..:J
y"" , .. ,.,..,.. .... ~ ......- . ., "'" _~_ ..... ~ ort "" . ...... ""
--
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' .
C JPYnghted matanal
.<6
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
" "
" "
r~ "v~n@".q"rd
-,
COMMIIND
<,vents/O ~h .. lp .. r
. "-
~i
opliunea nice :
- 0
kthread
~blockd/O
k .. cpid
i nit
-.
" , ,
"' -, -, -, -,
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~
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
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
148
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 o o o o
or icAte
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
149
o o o
o
o o o
p.
operalorul
&
o"
8. Ce d irector d in sistemul de
l i~iere
o o
o
/sys
Iproc
/ h ome
0 1
o o o o
o o o o
C JPYnghted matanat
Copyrighted material
Dispo~itive
conligurare
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
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.
Ii po r n~
.i
cHo la d is'antii
"'Io ~ind
C JPYnghted matanal
153
I Al lmentare I
j
BIOS
~
POST
r<
(booUo~der ~
(~U""der
r--
r<
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
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
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
155
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
d ispoziti~uluj
de boot
inc~rca ~j
se va executa
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
157
O xOOO
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
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) .
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
6.2.3
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~ ;
159
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
\~
"""
I(;RUS
,,~
. ... p
~~
oos compo,
" . ge
I_~)
I><>OI:tooder
IG~UB .\.~~
I)
" 'o j:
. I:
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
" '""
'" , ,
"
.,
root root
r OOt rOOt
- r .. - r -- r -- r,,- r -- r --
"
, ,
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 .
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'
, , , , " "
" " " "
hexdump fir't_, e ctor ed55 5~13 e084 0575 He6 Ol ft 000) 9966 ebOO 4"lfe 6412 4420 612 0012 00c3 0000
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
r~zv~n @ ~"g a rd :
Iboot/grubS hexdump
5t~g e l
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
" "
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
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
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.
'"'
(. .. 1
default
If tim~out " ~ c f SH a t i meout,
~nt r y
,
,
Ino r ma ll y
th~
tim ~ out
first entry
d ~ tinea) .
, 5 (. .. 1
163
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)
"
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
164
optiunile
ali~ata
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
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).
166
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
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
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
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.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
, "' ,
ra<van@a'garo : -$ who - r
r u n- l e ve l 2 2009 - 09 - 2317 : 51
168
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
""
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
... )
~nd
"
,
,0 " 12
f f f f
f of runl eve l .
" ,.
'5
,~
" '" ,.
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
(, . . 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"
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
169
"
" "
obser~a
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
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
"
10 " " "
S90vm~a<e
S9lapach~2
"",,,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 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
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
S: o n
6 : off
" ,.
'"
"
apache
'"
5 : oU
6 : 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
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
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:
, ,
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:
,
sta~t
on
exec Isbin/.hutdown -r
no~
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.
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
:.............. :
c..............:
l<>gln '
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
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
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.
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
-/ . 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
,
~
. .
. oot ~a nt : 'f
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
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;
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 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
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.
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.
179
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 /
, '"
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 :
~
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
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
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
l i~ier
) 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
181
"
1 00 ' I 0.5.
-----------------------------------
06:23 : 27 [209 KB/.) -
99 , 593
20~K/.
200~ - 0~ - 26
1 ~~593/99593)
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
o o
182
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
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
GRUBINTLOR
vml inuzlntoskrnl
PQS TICMO$
o
o
genylwinlogon
o slagel o stage1.5
o o
o
slage2 slage3
li~ierul
7. Care esle
o
o
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
C JPYnghied matanal
Copyrighted material
Mecanismele de accesare
~i
7.1
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
I .. -.- .... -.- .. -.-.- .. -.- .... -.- .... -.- .... -.I
BI.I"".<I
F~tira
........................... .
$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
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
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
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
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
189
1[
j
Regi strele procesorutui
M~mofl.
PAM
,"'--5'0,,"'" p. Q;5<
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
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
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
7.2.4
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
$oufhbridgeul rnai eSle nurni! si 1 10 Controller Hub (ICH) si eSle folo~t penlru inlerconectarea componentelor mal lente ale sistemuluL Coniine urmlltoarele
Magistral1i LPC pentru legatura eu Super 1/0 (tastatura, mouse, porI paralel, port
serial, oonlroler de floppy)
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
193
,"0
1 0.0'"
_.,'"
1-
._'00'....."11.
10 ...,,",
.,
lot.,,,., '""
.,.o/1k.
00000,"
<ont",10<
PC' bu.
PC,
,'''u
l PC bu.
' ''001
yl>oo,.
OI. ~
,-"
7.3
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.
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
, ,
'" "
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
"
U~ed
by
rteo"",, deo"""
12e~p
cpufre'l..., t a ts , cpufce'l...0ndemand
I ... J
Comarxla
ali~eaza
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
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
> 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.
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
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
I Director
/sys/devices
/ sys /bu s
Conflnut
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
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.
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
" -"
'"' ""'
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
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
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:
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
CPU
T2390
@ 1.66GII2 ,
.00
,
IntellR ) pentium(R)
Du~l
CPU
T2390
@ 1 . S6GHz ,
10
AT
Tran ~l ated
Se t
2 ke yboard
" "
13
I.
M~cin t o ~ h
SynPS/2
Syn~ptic.
Samsung ML- 164Q S@r i @. Intel Mob ile GM96S/GL960 Integrated Graphics Intel 965 GM
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
,. ., .. .,
~
"l~nO
..
"
Intel PRO/~i r e l e 394SABG Network Connec ti o n Realte k RTL6 10 1E PCI EKpr~$$ Fast Ethernet
:
" "
ethO
' ACP I - h1tp ;ltww..,acpU nloi
Ethernet
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
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
{. .. 1
~ m5c47 ml - i . a-0800 Ad~pu r:
"
~ .
fanl : hn2 :
'"
"" ""
"'" "'"
RPM . d i v RPM . d i v
. , -,
+3 . 32 +2 . 99 +4 . 3a +6 . 64
200
Pachetul de utilitare sma rtm ontoo ls
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
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"
,. , '"
"
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
,
" ,
___ 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 .
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
ST ... RT OF RE ... n SM.z. RT D... r ... SECTION
'0
SMART ( ... 1
o"erall - healt~
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
~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:
"
Linux
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
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/
,. ,
" "
, , ,
, , ,
" "
14 :4S cdrom / dev / cd/ cdrom - s rO 14, 48 cdromO - > / dev / cd/ cdrom - . r 0
'" "
-, -,
-,
loop/O loop/I
203
, r oot , root
(. . . 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
".
,,"
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
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.
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
2>/dev/null
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
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
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
'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
,~,
<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
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)
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 : -$
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
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.
f~ieru l
de
208
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
/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
""
fornily
-, ""' , " ,
Iproc/cpuinfo
G@nuin@int@l
' 0'
'"
T7500
2 . 20 GH'
209
" "
(. .. 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
" "
, , ,
-.
co< Iproe/meminfo
2~5676
S"apFree :
(. .. 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
7.7.2
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
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
211
restaurarea MBR
~i
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 >
212
r o ot~ u bu n t u : "
.td(s ~
/devJsda <
! u sbstic ~ / p arUt1ons . b ac k up
7.8.2
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~
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
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
opliunea loop.
- 0 l oop c d . i; o imn t i cd
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
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
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
AAM,DRAM
placA de bazA
chipset northbridge
magistrali'!, PC I, AGP
dispozitiv modul
driver
I,,,
Isusb, Ispci
sensors smartmontools
Idev
"'"
dd
pseudodispozitive
/pIOC
sysctl
ietc/sysctl.conf
MBR
Intrebfitl
o o
CPU
o unitatea de comandi'l
memoria
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
l smod modprobe
C JPYnghted matanal
215
o o
modinata ll inamod
o o o o
o o o
Idevl h da 5 Id e v /sda
o o o o
o
Ide v /t t ySO
8. Care din urmatoarele acronime NU este corelat direct cu dispozitive fiz ice?
o o o o
o o
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
dinamica,
Conlig urare DNS
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
conexiune fizica
~i 0
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
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.
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.
220
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.
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:
221
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:
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
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
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
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
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.
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
te '''Il
1. vreau
s~
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
225
numit DynDNS {Dynamic DNS }. In cadrul acestui sislem sla!ia va Irimile caire un server DNS specializat informatii actualizate legate de adresa ei IP.
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
8.3.2
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,
, , ,
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
[ ... I
227
. 2SS . 255 . 0
..
"
1~
I
HWaddr OO , la , F3 : AB ,4S, 62 MTU : 1500 Met ri c : l
et hl
" ,. "
[. .. I
10 Li n k ine t
enc~p : Loca1 ~ddr : l27 . 0 . 0 .1
"
[. .. 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 :
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~
inet
,.
I ... I
228
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
" ..
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
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
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
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:
, ,
K~rnel
"
Flag~
M .. tric
._, ,
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
, , , ,
'"
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
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
, , ,
.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
" "
, "
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
,
" ,
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
folose~te
lJrmiitoarea comandii:
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
,
~
root~ubunt~ : "
stop
9t~rt
8.4.2
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
8.4.3
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
,
!
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
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
resolv . conf
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.
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
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
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
va lolosi comanda:
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"
235
8.4.5
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~
~
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
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
8.4.6
Pentru stalia curenta se poate configura un nume local. urmatoarele comenzi se poate alia numele slatiei:
, ,
-"
236
, , , ,
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
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 ~
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
~
, --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
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.
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 .
,
"
2 . 006 m.
5 6
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
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.
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
, ,
{ 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.
dapist~rii
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
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
2:
""
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
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
"
" "
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
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).
~
....
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
u..".
L _
0<
II c-
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
,<3
_.j
... ..
~
. . -.- . ..
~
_--_ _--.,-
, . ---,~ ~
. ...
....
~
.... ..
,
-...
~ ---.~
""' ~-,.. ~ ~
...-..
'" !!
244
fete/network/i nt erfaces
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
10 " 12
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
u~e
PPP a nd h a; to u; e
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'
""
" ""
,<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:
, , , ,
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~
1.. I
Li nk encap , ~olnt - to - ~olnt Protocol inet .oddr : I92 . 168 . 10 . 3 P-t-P:l0.0.0.1
pppO
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
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 .
246
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
poate Ii accesala. Care poate Ii motivul penlru care cele dOllA teste au rezuilate
dilerite?
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
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
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
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
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
248
o fals, fals
o fals, adev<'lrat
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
Modelul cl ient-server
9.1
9.1.1
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
o sliva de protocoale reprezint;\ un set de protocoale cs comunic;\ intre ele prin fllnC!ii (nurnile prim itive) clar delinite.
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
Acces la mediu
C JPYnghted matanal
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
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
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
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
"
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
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
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
, , , ,
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
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
, , , ,
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:
251
ki wi . cs . pub .r o 29
9.2
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
5
6
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
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 " ,.
,!
" 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.
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, -$
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
(~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 ~
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'.
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
" 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:-$
2
~
00:10
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
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.
,
,
263
,
6 ,
_>
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)
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 : - $
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
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
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
,,'atanal
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
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 ~
right
ma'enal
266
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
~j
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_"""""
,- ,.
.~-
.~ -
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
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
.1
268
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
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.
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
269
9.4.1
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"
eu
parola
p 4r0148un 4
pe
serverul
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
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
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
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
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
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.
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
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,
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
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
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.
client
,,"
5MB
PO"
punct-Ia-punct
~p
spam SSH (Secure Shell) stiva de protocoa le TCP lei net UDP URL webmail
wget
WWW
server
XHTML
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
va
face doar
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
o o
o Outlook
Apache
o o
278
o sa
parola "bestman"
!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
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
C JPYnghted matanal
Bruce Schneier
10.1
Problematica securitalii
279
C JPYnghted matanal
280
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
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:
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
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
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
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"' .
simplitatea 2. Orice noua caracteristic A adauga1<'1 unui sistem sau unui program poate
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
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
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.
C JPYnghted matanal
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
~
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
hardware (8086, 80266 ), versiunile de Windows pAnli la Windows 98 si Windows ME nu au oleril 0 proteqie complelA a memoriei.
Securitatea !iziea
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
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
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
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
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
289
"
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 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
Tabelul 10.1: I
de acces in Unix
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
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
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
lolose~te
doar 0 parte a
Ia<van @ v a lh a ll ~ : /tmpS
own e I ~h1 p
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
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
In
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
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
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.
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.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.
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
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 :
fr"" ,
usea ,
SHR S
29169H f ...,.. .
'C~U
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
, , , , ,
, " , , ,
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
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.
295
Spatiulliber pentru partitiile diseulurilor sistemului se poate vizualiza eu ajutorul eomenzii df:
, ,
-0
Ava il 1. 2G
1 2~M
Siz@ 4 . 6G
1 2 ~M
U ~@ d
u,,, \
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(;
" '"
'"
""
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
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
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
296
7
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
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
20 : 24 la : 21 14 : 55 14 : 25 14 : 01
,"
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
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~ ,
"
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
fi~ier
paramelruiui 1 se asigura
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
, , , ,
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 .
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.
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.
~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:
, ,
, ,. " "
,
," -,
'"'
, , ,
20 : 49 a . out
," -,
," -,
a . o ut
u~ v&n
ra~van
13 564
'"'
'"'
20 ; 49 " . 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
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 .
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,
fi~jere.
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)
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
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
roo x le@xlw! : -$
s~do
/bin/bash
roo~le
Is not
~ll o~ed
~s
root on
Daca sa incearca rularea comenzii p ing, tara a lolosi sud o, se obtine din nou mesaj de eroa re:
,
Ij~ierului
letc/sudoers si permile
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
-. .
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
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
"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.
304
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
C JPYnghted matanal
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
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 ~~
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
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
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
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
,
, S 6 ,
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
308
" 10 " 12 " ,. 15
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
"
QUITTHlG '
- ~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
'" ,"
"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:
,
" ,
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
,,'
'"
ml cro~oft - ds
".0
hddtemp
309
" ,a
Nm~p
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.
,
,
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
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
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~~
310
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
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
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
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
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".
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
C JPYnghted matanal
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'.
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
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 "
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
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,
right
ma'sonar
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
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
/mn t/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
317
natstat monitorizara nmap paro le pol itica de securilate quota secu ritatea fizica sniffer
",lo
suid
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
urn" ,k 022 ",ch o "Acest a nu .. st .. un t @st " > t"st c hrnod go' x test
o o o o o o o
o
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
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
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 ~ .
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
F ~ i ere
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
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).
C JPYnghted matanal
~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
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~
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
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
f i l e h w.c
, ,
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
lu ses s h ared l i b s ) ,
f o r GNU/Li nn 2 . 4 . 1 ,
11.1.4
Pachete necesare
'"
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":
,
,
qee hw . e Is
m'ree&@eouq~r : -/e~rte-uso/eap-10S
a . ou t hw . e
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>
, ,
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
,
~
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
- 0
(. .. 1
gre~eala
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
, , , ,
0;
,
,
gee
- W ~ ll
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
327
,
3
,. "
,
~
tnt a
if
(ll
print f
"
("H~ llo ,
~ro und
IMPORTANT: Din cauza sintaxei re laxale a limbajului C este recomandalA folosirea opliunii - wall la orice compilare de program.
11.2.2
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
~um <
(NUM));
"
.. ...
rUlIc rUlIc--,,-
"
328
"
,
, , , '" " ,
,
,
"
"
sum;
.-
, .-"
i i
iH )
nl
int i,
;urn ;
"
'00. ""
"
"he
."
iH )
'"" '""
.-"
listing 11.8: sumalLc
fi~iere
-- "
return sum;
,
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
gee - Wall m a in .c
,
,
. !exec
11,3
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:
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
{. .. 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
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
{. .. 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
(as)
cooouce
la
obtinerea
lii}ierului
obiect
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
,
Z
32
6
,
.truct
H r ay_ 'tr ~ c t
{
;
i n t a rr ~yIMAX_ARRAY_LENC;THI int l e n;
,
,
,
" "
' include
in f ~.h
_0 )
>-
MA X ~ RRAY _ L r, NG 7 H )
r e tu r n 0 ,
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
331
mircea@cougar,-/carte - us o/cap- 10$ gee - !nfo . C f 1 " into.c" f 1 " <built - in> f 1 " <convnana - jine> "
,
10
~ t r u ct
"
1>
&rr&y_,trunct in t a rr ayl32J ; in t l en ;
) ;
"
f 2 " into.c" 2
i nt i ;
i nt
if
s um;
20
21
"
"
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
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
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~
'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 )
.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.
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
(" 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 ,
'"
"
mirce~@couq"r:-/c"rt" - u$o/c"p - lO$
Ca si pana acum, se poate lolosl op! iunea - 0 pentru a preciza explic it numele fisierului de iesire:
,
,
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 :
,
,
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$
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 ,
" "
"
.
,, , , , , ,,,
push
~o"
",
~,
~o"
~o,
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
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
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
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++:
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
" "
,. 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
"
'"
328~
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):
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)
,
)
gee - c chat s e r v . c - 01
337
,
,
gee - c ch a t.erv.c - 02
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:
,
,
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
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"$
,
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
obiect;
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:
"
, , , ,
,cc - Wa ll - c ma;n . c
",'
- Wa ll
-, -,
~dd . c
sul) , c sub . o
,c'
m ~ln . o ~dd . o
-,
exec
. /exec
Suma 110) :
"
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
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.
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
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$
ISYS'I) , fiot
,
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
"'ddr
'"
She
" n, "'
0
. i n te~ p
.n ot~ . II BI - ta9
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 )
~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
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<,
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
, <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
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
,
$
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
344
, ,
000521>90 000521>aO
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
"
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 :
,<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
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
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
Cea mai simpla forma de lisier Ma k efile conI ine comanda de compilare 5i linkir.g a
exec :
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:
ma ke
'"
missing
sep~'H or.
Stop.
, http)/www.gnu.o '\P$OftwareJmake l
nght
mate-nal
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!:
~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
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~
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
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"
,
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
- 0
~ um . o
. c
-0
~ umalt . o
...... . _,
g" ' (
m ~; n_c 0
rna in.o
gee , Su m.C 0 $u m .O
molrl.o
",m,o
, ,,,,,,It ,o
F~ura
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
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
, ,
>
- 0 e xe c
350
7 " sum . O' . u rn .c f unc . h 'Iee - e surn.c
"
,0
- 0
sum . 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
"
- 0
sumalt . 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
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 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 :
, 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
352
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.
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:
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
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
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
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
/"
fo l ose~le
comanda :
ma k~
myproQ
354
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~
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
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
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
355
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.
m~ ~ i n ~
(dependenta de
ma~ina
virtuala
fight
ma'sonar
356
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
~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--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.
,
,
, , , , , ,
, 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
,
2
"
, ,
,.
r e turn 0 ,
,.
, , ,
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
c _IMin . c
c_p ri nt . c
c-pr1n t. h
cpp-p un t . h cpp-pr in t. o
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
~
gcc g"
c~~in . o
c _ p ri nt . o - 0 cpp-pr i. nt . o
cpp_m~i. n .o
- 0
. /c~a i n - c-pr!nt
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
(.
.. )
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
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.
" '"
" '"
,~
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
,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
" '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.
,
"
cpp~ain . cpp
c-print . c - 0
cpp~ain -c_print
fcpp~a i n-c _ p r
i nt
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
, , ,
, ,
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
g++ -c
cpp-"'~in . cpp
362
, ,
11
gee - c c-print.c
g++ -c cpp-prlnt.cpp
utvan@" a lh a I1 3 ; -/ml" - ne ~ S
lstdc tt
'"
" "
,.
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
~I
LINKIN G
363
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
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
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
o o
li~iere
C JPYnghted matanal
36.
6. Care din urmatoarele reprezintA 0 biblioteca at cArei cod eSle integral explicit in
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
fi~ieru l
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
10. Apel urile de sistem ale programului <p rogram> pot Ii urmarite folosind comanda:
o o
DOS._
Crearea
~i
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
365
.1
366
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
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
C JPYnghted matanal
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
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
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.
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
t1- Ba c k sp ac e -
c-,,. -
~terge
C JPYnghted ma'ana.l
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
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
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
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
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
."
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:
, , ,
; -$ W
homel i nitr<il initrd. irn9 initr<i . itll9 . o1d lib l lo st. found/
me<i i~ 1
etc I
tmpl
u ~ r/
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
371
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
~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~
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
372
- 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
u bun t u @u b un t u : ~ $
S O U LC ~
/~ t c/ b a , ~c ornpl ~ti o n
i e~irea
standard
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
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:
st a tic
te s t s
"
sys
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
373
~ li ~. '
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
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
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
if t" s t
10 - q t
~c h o
"mai
mi c " ; f i
sau asllel:
r~.v~ n @~ n ~co n da : -$
i t
test 10 - g t
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.
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.
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
$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
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
f!/bl n /bas h
ec ho " He ll o , Wo rl d '
exit 0
~fiure
mesaj
il putem executa:
2
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
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
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
377
ali~area
e cho
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 : -$
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
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"
@ ch o
$a
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:
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
> i ntroducem
3
dup~
me"~j
"
G
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
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 ~ 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! '
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
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
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
" ,. "
'"
"
,!
19
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
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
381
" ,6
"
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 ~ ;
f!fbinlba.h ho. tna me - " r a gnarok" Mme - "razvan " echo echo echo echo echo echo echo echo echo echo
-, -, -, -, -, -, -, -, -,
-,
" \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
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
"
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
"
382
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 : -$
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
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
383
unei
I grep ke yword
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:
, , , ,
l~"t
- 30
~ ergi u
I~zv~n
c~rp~ l ex
alexef
COJoc~ r
89 . 18 . 20 . 56 "00 dhcp-204 . c , . p u b .
a~ . 121 .14 0 . 140 59 . 120.196.5~
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
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
384
"
r~zv~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
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
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
."
,
, ,
,
."
ru"a n @a n acond~ ; -S
e cho StoU!
loc~ l
o greseala
Irec~enta
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 _
,
3 4
~ ~/b1n/b~8h
7
'0 11 12
! p _ nom-J
log _ file-/va<!log/ap~che/access . l o 9
I c ut - d . . - f 1
ba ~h ~ ervic~ _ i p . b a"h
,
,
, ,
, ,
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
-. -."
-. " "
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
. ' / 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
387
, , ,
" " " " " " "
~ddln9
, , , , , ,
~ Add a ne~ user ; invo ke all necesary scr i pt a nd comma nd Cor comp lete ~ user facilities
'"
..
I.
1~
" n n
"
"
- $
17
20
21 22
2J
18 19
20 21 22
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
. ..
30
YOur
paM~ord
ch ~ nge
it .
"
n
32
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
388
Caraclerul blank (spaliu)
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
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 "
3. folosirea caracteru lui special bacl<.slash, care dezactiveaza caracterul special de dupa el
ubuntu@ubuntu : -$ I s my\ air
~i
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 : -$
.-,
,
,
"
""
- 1 I wC - 11
"
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:
389
, ,,
~
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
,,
razva n @ a n aco nda , - $ echo ' simbolul qhilirne l e sirnbo l u l qhilimel e < " <
("I'
390
Caraclerul \ (backslash)
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.
, " , ,
ec ho \ "
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
" ) ; ,
$ \
'
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:
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 .
, , " , "" ,. "" ""' nas - lib "" nautil us " " '" nautilus-cd-bu
na~o
na~o - tiny
"
'"
ii
naut i 1 u . - data
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 ,
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
1$
humbl e u, e r.
392
i t co nd ltle) ; t h en
2
~
else
a c ti u M co nd iti .. ne indephn, t a
fi
e ,
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
~ 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
, ,
,
~lf ..
"
- '"
[
, ,
~lh "
"
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
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 . "
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 .
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 , ,
,
,
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:
,
,
,
-,
3.
t~t
t ~st
, w " "
" "
b . t xt
t@,t ; test
-.,
-, -,
" .
""
"
- "' "
39.
"
r~zv~n@"n"cona,, ' -/\lsohcripting$
3 - eq 4
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
,
1
cat - n
1 ! /binlb~"h
,
"
, ,
.,
e.3C
echo "li t era mi ca ";: echo "litera ma r e "; : [O - ~[_) echo "citra ";; echo "altcev a ""
'"
" "
,.
"
~i
in exemplu, este:
,
"
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.
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.
$criptul shell pentru ealeulul sumei primelor 10 numere naturale este urmatorul:
,
,
, ,
" 11
,.
, , , , , ,
;
,,'
,urn- O
d o n"
10 ; O.
$ i) )
~sum '
bas h fo r l O. b a$h
Suma este : 55
""
,"
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:
,, , , ,,
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
sau:
,
3
,
razvan@anaconda : -$
~UI. - O
in I 2 3 4 5 6 7 8 9 t o ; do
"
2
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
~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~
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:
, , ,
,
." , ,
, , ,
"
, ,
" "
, , ,
.., , , "
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:
397
" "
"
, , ,
, ,
, , , , , ,
f ' /b i n/b"sh
,,'
surn- O
'"
"
done
~ cho
SunM
~~ t~ :
S ~ um
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
f ! /bi n /bash
,,'
. um - O
( (i
don ~
-" ,
"
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
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
" 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
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
, , , , , , , ,
1
1 ! /binlb " .h
i- I
n- IO
, urn- O
whil e ten - h $n ; ,um- $ $ ~ um $1)) i") ) done
"
"
bash wh \ le10 . b a sh
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
"
399
" ,. "
. um - S Ssum d o ne
,,' , '" , , , 0
s um- O
, ,, ,,
10 ;
SI II
"
"
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:
, , ,
, , ,-, , , , , ,
. um - O
n- 10
te~t
unt il
" -,>
0 '
'" n n
d o n ..
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
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
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
ali~a
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
401
" "
1~
1J
,. '5
1~
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~
1J
,.
'5
cris t i
uzv~n
" "
13
so r t
- u num.,2 . txt
,.
20
..
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
- 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
"
.. ,
IS
IS
.. "
"
" ",
7
ra:van@anaconda : ~luso/scrjptjng$
sort
numere . t~t
2 101
-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
~ Crt
-t - k 2 . 2 nurne3 . txt
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:
403
, , ,
r~.v~n@~n~conda : -/u$o/$cripting$
U il letc/passwd
- 0 -0
'"
'"
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
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
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
eSla " iar indexurile de cAmp corespunzatoare numelui de utilizator si directorului de baza sun! 1 ~ i 6_
12.5.5
tr
stergerea de caractere.
Exemple de translatarea caracterelor SUrlt:
r~z" .. n @ .. naconda
,
,
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'
..
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
405
,
~
tr - d a ' a '
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:
~
, ,
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
," ,
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
pt , / 2 p t./2 p tsfO
"
," .
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 "
~
~ 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
bet ..
I!.IFa BeTa
, "
grep -i
<
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$
qre p - v - ,
Bet a q a mma
delt~dd
10
1 :a l ta beta
grep - w
" de l t ~ "
2 beta delta
,
, " 1
./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
~ 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.
407
Expresii regulate grep Dupa cum s-a observat. grep lolosesle un expresii regulate.
~ir
r -A- Z ]
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;
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
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
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
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:
inlocu i e~te
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 ;
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
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
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.
o ut . txt'
\ 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/
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:
, ,
..
-0 '"' , -,
' '
, ,
-, '-0
,
letc/pa ~ 5wd
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
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$
)
6
>
. - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - -- - - - - - .
7
8
I roo t
t (!~em" n
I bin
10
t.y.
"
,.
( .. . I
t pulse
,)
,.
t saned
412
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
I"tc/pas~"d
. --------------- +------------------------- +
I coo t I \lame. I uucp
"
, "
,
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
+ --------------- + ------------------------- +
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.
,
, '" " " "
"
lItGIN
{
C U Hent _ ~"e re
printf
- 0,
+ --------------- ~
_________________________
~ \n
"'
$1 ,
$6 ;
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
413
!\!ho~!
$1,
$6 ;
printf
"+
--------------- ~
_________________________
";
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
,
S6
1
END
pr i nt f
+-
-------------- ~
-------------
------------ ~
\ tl ;
1'\/hom.,!
print f - 1\-15"1\-25"I\ n " , $1, $6;
,. "
lisling 12.3:
Afi~are
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
'"
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
~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
1.;
t mp .
,0
, "
11
is : t mp .:
No
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
""
I so r t
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 :
41 5
,
2
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
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
: ~/uso/scr ip t i ng$
xarg$ - I
~b c
cp
~bc
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
" ",
, , ,
"
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
2
~
!~sr!blnlstrac"
/usr/share /doc/,tuce
e
,
"
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 "
. Deb i ~ n .
gz
lusr/.h~re/doc/otrace/ch a ngelo9 .
gz
"
(. .. 1
[ 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
41 7
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).
, ) ,
&
/home/ra~van/pub il c _ ntml/pub/boola
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
- "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~,-$
, )
/bln/a" Ibin/mount
418
" /b i n /umO\lnt /b in /ping lti n!plng6
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
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 -
, {) ' ','
- 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" ' {) ' ' , '
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@
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
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@.:
,.
,
, ,
~ .. <v .. n~ .. n .. co nd a
, ,
" 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
""
(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
a_j I l a ++ )) e cho Sa
421
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
ali~a rea
12.8
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
422
echo "Num"l" script"l,,; este $0 . echo " Argument"l" scriptului sunt ' $@ '
" -"
"
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 .
Aegumentu l
ea t e alfa .
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
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.
SO reprezinta numele scr iptului shel l; $1 , 52, ... , $N reprez inta argumentele din linia de comanda;
$@
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 ;
, , ,
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
,.
11
U'
t n t - d $1 ; then
echo
~ Kit
fi~.t_a<9uMentwis~not~~~di~ecto~y .
"
,
1J
"$2"
-/u$o/scripting$
b~sh
myf ind.bash
. boSh"
.1"hilel0.b~. h
. /nw . b~"h
. lfo<-l" . b~"h
'"
, " ,
~
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
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
"
'" " " " " " " " " " " " 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
"
2t
c .... SI in
425
"
" "
"a", .. dd " " d " ' delete ;; . ) echo " Requlred~a<gumeftt. ~ are~ ' esac
." , 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
(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
(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
~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
,
~
. ~/bjn/bash
f unction , ui'rLfunc ()
,
'" " ,.
,.
" '"
, um- O
whil e
t .,t
done
sum_ func 1 2 3 4 5
"
echo
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 "
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 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
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
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
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
"
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:
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 .
$PSI
\u@\h,\w\$
bacl<.slash:
\u inseamna numele utilizatorului; in exemplul de mai sus se traduce in sirul
razVan
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
r~zvan'anacond"
(lS : OS l cd
(IS : OSlcd
" ,.
Secvente spec iale care au lost lolosite in exemplele de mai sus sunt:
43.
\d
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
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:
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
431
12.11.3
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 .
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 .
" "
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'
(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
di s~ .
432
10 (
Variabile
, " ,
C: \Document.
~nd
Sett'ng.\Razv~n . RAGNAROK>.et
aa 3
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"
>
"
~- 3
Se ttinq.\lI ll U... r.
, " , " 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\
,
"
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.
>
J
,0
" ,. " ,.
vlml n fo
,
,
~~3
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
Cmdlet-ii reprezint<'i blocurile de bazi!. pentru Powe rShal1 echivalenl cu comenz ile de baza Unix folositede Bash.
folose~te
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>
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
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:
3.14\5926
C : \WINOOWS\.y.tem32> 1 .. 10 I
fo r e~ch
{ $_ '
2 I
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
C JPYnghted matanal
436
o Flash
2. Ce comand1l esle folosita pentru caularea lmei
e~pres ji
0"
o grep
Owl
sort
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
fil.R.tx t?
6. Ce ulilitar NU
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
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
0 "
o o
- min de p t h 2 - t yp e f
C JPYnghied matanal
438
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
I-Gf i si e r
" -o,
f i sier2 f i si e r 2
- g'
~
I -" I -"
"
I"
, . , ~
.
recerll
" -0'
- g'
12 numere
I 2 Ilumere
I caraclere """, I'
caraClere
-It
~all
"
il~
il
~rnaimic
I si rl
-
- Ie
si r 2
I ,.
leu al doilea
ilHunli
,,,,,I "
nu .
I"" ,.
C JPYnghted matanal
439
Ii i
i i I ,
C JPYnghted matanal
Copyrighted material
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
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
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.
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 ,
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
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
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~
C JPYnghted matanal
445
13.2.2
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
1;>""u'~
>t""
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
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,'
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
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) .
. '_.
_ -=.-~
__ ,
..."n.,_
.-
"" - "'-"1
, ...-" "
~
._ ......,,-.- ....
'-''''''''~ . --.,.,,-~
~"
,.,_ .. _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
.
,~
...
.--,... ~ ., C
LC;<:,~~",",,,",",~---------c. ~''''
---
,
,
. ..'
,
- . ........
"
~
,.,,,,,
13.3
Pornirea
~i
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
porne~le
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:
'"
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
~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
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
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 : -$
, '" ,
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
xrandr -- auto
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
45 2
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
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).
, . -.-. '-_. - -. -.- .-, '" .... -. --- -- _., _. "' --', --.-._ ." ---'- ,. ' " _ ...... -"
.-'-
,- . , ~
..l
II
~
II
_"
l'
~
--'-.~
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
453
--.
.'
-x
.-.
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
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
'--"-
._-_. ..--'------. _~
44
...
--
~ ---
.-...,........
--~i
. K''' __ ___
-.
_ ~
--J
~
13.5.4
Configurari administrative
a orei sistemului. Tot aiei sa poate alege
~i
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.6
Managementul utilizatorilor
Conligurarea utilizatorilor se realizeazAlolosind aplica!ia KDE User Manager (ku se r ) figura 13.14. alenal
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
""
'-.
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
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
p .. ,,.
- .. -......
!I'_ _
t ........
"'.I .~
~- .
"" ,.,.,.
'-"," I.O.!'
Iiot_ ",.,.....,
---,
ai '
!"o \1M' _
I!O'O
. -- .'! -
a- c -
(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.
.e . "j
457
--~
\101<. "
_."
.. C' .. _ _
---..... ......
~.
-,.,
.-
"' ~.
-,
""",
"-
..
"""""""""-
"" "" '" "" "" "" "" "" "" "" '" ", "" "" '"" " " "" " "" " '"" "" '""
", " ," "
"" '''A ", "" '"" " " '"" "" "" ,. ", "
U.
"
_.
,~,
~--,
"
,,~
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......
_ ---
_ .."
~.~.
.-..:;:=';;;====~;:;;;;====~ .-.
,
,.-~~,,, - ~ ,.-
_ .. ....
-..
~ . ""' ,'
" "
. ,....... ""-
..
_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
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
459
QJ ,.. ,--"",," . ' .' _ .Jc_ _ " ... , '" '" .. _ ....... _
... .u H on'"
... , . . ~ . _ ... 100
l.o,..
r ~ "l
"'9''',MNn -,
"'"' ..... _
..
-, ...
"
.......
"_0-"......,,,' r",
~T<
. .. _
.. ..
0 -
- --
-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
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
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
.p.
C JPYnghted matanaf
461
U' HI.a'or
<=;)1
Serve r X
a i~ n t
I.
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
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 ~ ~ _
,~
_ ..... .
~~
"". -...w , ..
~ ,,_
,.,,~
.......
~ ' ~p
<o.H~"
""'-'...., .. _
..,~
..... _
~._
..., _
..,
~,
\~
~,
...,
' ~ ""~M' _ ~~
....-A. .. ",',
...... rr~~~~~~~~~~~~~~
-- -'"
Co
'" ,. ., ,
co
~
,
I.
',
, ,
"
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
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
463
9 = - .....
=_
~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" ~ : -$
,
10
"
10/09/200722:48 : 59
I I
Pre ~ 5
"
,~
,)
'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
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
Sd
periorman!e superioare VNC-u lui ca timp de raspuns f?i ca IAtime de bandii consumato'i.
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
465
El _ _
... _
''''--
,,,-~""""',- ~
...
- -...
....
.....
*_
~ ~
apl ica!ii grafice client X desktop environment: KD E, GNOME diacritice display manager: gdm. xdm, kdm font grafica raster grafica vectoriala
Kwin ,
Metacity,
GUI
keyboard layout protocolul X rezo lutie
X.Org xi n it .stsrt x
Xrandr
466
"'''"'!t , 4 C,11
:3
Iffl:g
II "'" II
M>
! ! qe..." !
E".. j'<U'v_
.... f'"
'"",'"",0,1.
_~
.......
I.. .. ....
intrebarl
I. Care din urmatoarele formate de
f~ iere
o o
SVG
467
o o
o
o
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
o
o
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 o
Dorel nu are dreptul s1l porneasca serviciul kdm Doreltrebuia sa ruteze scriptut atart x lnainte de a rula scriptut k d m
o
o o o
7. Care dintre urmatoarele NU este un Window Manager? KDE Compiz Kwin Metacity
o
o o
468
8. Care din tre urmiitoare le aplicatii eSla utilizata in mediul grafie pentru monitorizarea ocupiirii resurselor hardware?
o o
top
htop
o free
9. Un Window Manager controleazli felul in care arala ferestrele aplicatiilor. Un clie nt
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
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
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).
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
C JPYnghted matanal
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
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++ ) \
"
,~
" ..
,
J
r . turn 0, )
, , , , , '" "
,~
I)
; 1
" "
,)
"
472
.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
, , , " "
J
"urn ) ;
if
(s .... \
2 -- 0)
r .. turn
0;
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
,
"
.C
~5 t y l @
ugly-
-- "ty l e - ~\H
, http)la.tyle.ooorcetorge.net!
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
C JPYnghted matanal
'"
C:l.teva camenzi de baza sunt:
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
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
475
- - Inceputulliniei (analog Home); ,.. - cuvAntul urmator ("word"): b - cuvAntul anterior ("back"):
fK -
Fx -
<n umil.r>g -
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
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
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,
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
s et
t ~ - 72
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
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
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
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
Sistema centralizale.
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.
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
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
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.
, , ,
, ,
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~
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
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
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:
, , , ,
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
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
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.
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
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.
- xzv! - xjv!
,
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
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
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
~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
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
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
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
~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
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") ,
node . o qu~rium ,
.. j ) -
( , .. 1
~ cc e5"1 !HC/ ld.so . pr "lo~d ,
ILOK)
<;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
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
tstat6413,
'"
,.
( ... 1
close I} )
'"
21
;!2
{. .. 1
tstat6411 ,
{. . .
1
ll,
'" ,.
.. rit~ )
,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
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
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
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
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 ) ;
r ~ t urn
0;
"
.,
~,
2Il
f"u lt
~i
este normal sll tralllm inttli warn ingurile diferit acum. ignorand outputul lui gee.
De~i
,
,
gee - wa ll - g - 00 1 . c gab . /a . o ut
hul t.
10
II
~l i)l i l
- i ' ( i-il ;
11
.
, ,
19ab)
li st
ln t i , n _ 6; "
n,
" a,
J;
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?
l int
:)a
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
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
quit. q - term inarea depanani programului, Observali ca simpla trimitere a unei executa rea coman~ii anterioa ra.
comen~i
din 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
a clatelor programului utilizand graluo . Aceastli afisare permite studierea unui program
prin anal iza datelor
~i
- g - 00 I . e
./ ~ . 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
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 , -$
~ r g2
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
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
, ,
,
.. "
" "
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
$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
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
495
I"
...
, ~
1 ..... -
''''
I ~
__
.."
- -~,",'- '
.....
....
(. -
.~ .
----, ,
--->
........
.'
.. -"'"
-= --,
~.
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
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
14.10
ges\iune, monitorizare
~i
14.10.1
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
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
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
C :opynghted matanal
498
14.10.3
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
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,
TEX"
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
499
14.11.2
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
~
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
"
_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
500
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
(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
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
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
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'.
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
C JPYnghted matanal
S03
.. -- . .. -,..
.- ..
~"
"
.-.~ . "
.~
"' j
"'''
,
i
,' -
' --~'.-
'.
-- ,, ~
.... - ._.,'
" ~.-
..
- ~'"
--. -'"~.---,."'-.;:
---
_._
h. _ _ _
...
_ _
,
,
'"
__ _
,. .-.~-
_ _h
.. .
Figura 14.3: Proieclln Visual C++
~,
coding slyle indent, astyle editor vim modul insert. command , visual contro lul vers iunii
index (tag)
504
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
codara?
~,., ....v
... atanal
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
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
ddd
o Waterfall
C JPYnghted matanal
;.J
Linus Torvalds
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
..
...
. -. -. -~
()
"
__ _
II
a '0 -
--'"
- ~-
..-
'"-"
-. "~.''''
,,_ .....
" ""'_.
...
.--' .. - ......
._----j !~':''''
'0.
-. .. .. -....
--
- .-. -
o ..--:=:::.:--
.....
. . ,.
,.,
, .H
"
,. ,.
"" '"''
...
.-
.. '. . .. ...
... ,. ,.
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
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
pe Windows _
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
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
"
Imaginaa . iso poate Ii montata $i accesata in sistemul local de li~iere , similar utilitarului Daemon Tools' din Windows:
,
J
t mp-",ount!
,
6
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
511
_!- _ _
t..
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
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_ .......... _
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
C JPYnghted
matar~1
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
-............. ......
+
'
,-
, _....
0 ...... 0.0'
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.
-..... - ,.-...
.. -- , htlp)iI<lom, nl,orgi
_ .... - .... ..,., ,,-, .... -,,....... -, " " ,".'- ... . .
' '' ' _ u u
.....
.. .. .. .. , .. .. .. .. .. , ..
"
-,
,
Pentru cazul in care nu este disponibila 0 intertali1 text , existil pos ibililalea lolosirii
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
right
ma'enal
1 "----..-. ----.
.. .
,
S15
________ u,
l~
--
. . . _"' _ T . . _"".
__ . _ 0 1
e __
&I!I _ _ "
_kom e!
...,. '1.\
AbGut CUPS
~ nd
AH lstuce
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
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
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
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:
aceea~i
imagine
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 _
r ptop 15
Ace . 17-
HiJTOr _
OM
~ 1101"
r anel lcOfl
_1 0 .31
~I
..-
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
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.
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
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
litere i
C JPYnghted matanal
520
o o
wodim
cdra cord
o mpl a yer
genisoimage
~i
3. Ce program are
o Pidgin
o
o
Ktorrent
o centerim
Audacious
folose~le
la:
o a o o
. doc
. doCl(
. 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
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
mediu temporar
3. Pa l mOS
4. ade v .\rat, 5. comanda a a d eviha t fast
l ansa t ~
'"
; JPYnghted matanal
522
8.
lJbun t u
~i
utilizatorilor
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
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
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
fi~ierelor
7.
to~i
u t i li~ator i i - 755
- rw ,,- r - xr - x
8.
afi~area
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
523
Capitolul 5. Procese
I. i n i t - esle primul proces
porn~
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
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
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 -
524
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
slatia este
reu~e~te);
daca browserul nu
rau~a~te
lnsaa mna ca
gre~iHi
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)
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
o conexiune clientserver
~,., ...ov ... atanal
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
526
2. - c
3. se n ume:; t e portabi lita te
s~
sa
g~seasca.
in directorul
folose~te
6. sta.tic libra.ry - codul dinlro biblioteca stalici'!. aSia integral la campilare in executabil
comenzii
u~or
decal cele
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>
2. grap - aste singura comand;'i dintre cele prazentata care poate primi ca
parametru
t es t 0 --b - [ $01 -- $b ] nu ara oparanzii saparati de paranlaza; celelatte op!iuni nu sunl lolosile penlN lastaraa egalil.:!.!ii
pentru care au
-comanda
al~eaza
atanal
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
de
10. Tr ac - GTK este un widger roolkir, ddd este un debugger si Waterfall este un model de a dezvoltare soltware-ului
528
si pentru I Re
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.
[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
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
[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.
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.~
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
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,
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
Cygwin, 356.
daemon, 133. dares, fl9. dd, 206.
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
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
operalorul
~ ,
3B2.
operatoful , 380.
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
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.
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
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 , ~
""
XHTML, 2I1
C JPYnghted matanal