<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Raptor</id>
		<title>linux360 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Raptor"/>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php/Special:Contributions/Raptor"/>
		<updated>2026-04-19T13:27:44Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=3443</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=3443"/>
				<updated>2007-05-20T04:00:32Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Screenshot-shell_-_Konsole.png]]&lt;br /&gt;
&lt;br /&gt;
Doresti sa programezi dar sa nu fii intepenit intr-un editor? Vrei ca editorul tau sa te ajute in desfasurarea activitatilor uzuale? Atunci ai venit unde trebuie. Citeste mai departe.&lt;br /&gt;
&lt;br /&gt;
Abordarea urmatoare este orientata spre rezolvarea anumitor probleme, nicidecum nu incearca pomenirea tutoror setarilor astfel incat sa se trateze exhaustiv posibilitatile de configurare oferite de vim. Daca as incerca sa tratez toate posibilitatile aceasta ar fi help.txt din vim, si nu ar mai fi vorba de setari existentiale, nu? &lt;br /&gt;
&lt;br /&gt;
Dar exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc :&lt;br /&gt;
&amp;lt;code&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&lt;br /&gt;
:set foldmethod=syntax&lt;br /&gt;
:set foldlevel=100&lt;br /&gt;
:set nowrap&lt;br /&gt;
:set hlsearch&lt;br /&gt;
&lt;br /&gt;
:set t_ku=^[OA&lt;br /&gt;
:set t_kd=^[OB&lt;br /&gt;
:set t_kl=^[OD&lt;br /&gt;
:set t_kr=^[OC&lt;br /&gt;
&lt;br /&gt;
:map T :tabnew&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F2&amp;gt; :w&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F3&amp;gt; :edit .&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F4&amp;gt; :enew&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F5&amp;gt; :tabprev&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F6&amp;gt; :tabnext&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F7&amp;gt; :vsplit&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F8&amp;gt; :split&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F9&amp;gt; :tprev&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F10&amp;gt; :tn&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F12&amp;gt; :q&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:map X :set filetype=xml&amp;lt;CR&amp;gt;&lt;br /&gt;
:map t :set filetype=txt&amp;lt;CR&amp;gt;&lt;br /&gt;
:map j :set filetype=java&amp;lt;CR&amp;gt;&lt;br /&gt;
:map c :set filetype=cpp&amp;lt;CR&amp;gt;&lt;br /&gt;
:map s :set filetype=sql&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:map &amp;lt;M-2&amp;gt; :set ts=2&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;M-4&amp;gt; :set ts=4&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;M-8&amp;gt; :set ts=8&amp;lt;CR&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par multe si fara sens, nu? Hai sa le luam in parte.&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor cursorului sa urce.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse. In cazul in care nu aveti instalate fisierele ce contin sintaxa ar fi mai bine sa eliminati aceasta linie intrucat la deschiderea fiecarui fisier va va da intai o eroare intrucat nu gaseste fisierul de sintaxa.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;br /&gt;
&lt;br /&gt;
=== set foldmethod=syntax ===&lt;br /&gt;
Mai tineti minte din kate, kdevelop sau anjuta acele [+]-uri care va permit sa colapsati anumite blocuri (fold-uri) de cod?&lt;br /&gt;
Da, vim stie si asta. Acest editor este capabil sa analizeze din punct de vedere sintactic sursa dumneavoastra, in functie de sintaxa (C/C++/Java) sau de indentare (foldmethod=indent) - da, programatorilor python, nu ati fost uitati -.   Desi nu stie de XML, daca XML-ul este indentat, puteti folosi aceasta abordare pentru a colapsa anumite noduri. Intrucat editez in general surse, prefer foldmethod-ul sa fie implicit setat pe syntax. (zo - deschide un fold, zc - inchide un fold. Un fold este de la { la } corespunzatoare.)&lt;br /&gt;
&lt;br /&gt;
=== set foldlevel=100 ===&lt;br /&gt;
Implicit vim va deschide n niveluri de folduri (100 in cazul de fata) si le va inchide pe toate celelalte. In practica puteti seta foldlevel-ul manual in timp ce editati - de exemplu puteti folosi astfel sursele CPP ale unei clase pe rol de header, setand foldlevelul astfel incat sa inchida toate fold-urile corespunzatoare metodelor.&lt;br /&gt;
&lt;br /&gt;
=== set nowrap ===&lt;br /&gt;
Nu va imparti o linie de text in mai multe in cazul in care linia nu incape in ecranul curent.&lt;br /&gt;
&lt;br /&gt;
=== set hlsearch ===&lt;br /&gt;
Pentru ca sunteti inteligenti - altfel nu ati citi acest document, nu? - sunt sigur ca folositi un browser inteligent (e.g. Firefox). Si sunt sigur ca va place la nebunie sa activati highlight all atunci cand cautati un text (este o putere a mea ascunsa, de a sti aceste lucruri). Acest mecanism devine foarte util cand vreti sa vedeti unde este folosita o variabila - puteti pozitiona cursorul pe variabila, apasati *, si toate aparitiile variabilei sunt scoase in evidenta.&lt;br /&gt;
&lt;br /&gt;
=== set t_ku=^[OA, ... ===&lt;br /&gt;
&lt;br /&gt;
Up, Down, Left, Right... Aceasta setare este pentru sistemele UNIX mai dubioase (gen Solaris de exemplu) pentru care tastele cursor (cele cu sageti) nu mai functioneaza in mod normal (de exemplu afiseaza litere A, B, C, D). Atunci tot ce trebuie sa faceti este sa le setati. In vim nu veti scrie caracterele ^ sau [ ci in timp ce editati ''.vimrc'' (deci nu copiati fisierul de mai sus adliteram):&lt;br /&gt;
&amp;lt;code&amp;gt;:set t_ku=&amp;lt;Ctrl+V&amp;gt;&amp;lt;Sageata Sus&amp;gt;&amp;lt;Enter&amp;gt;&amp;lt;/code&amp;gt; si ar trebui sa vedeti pe ecran ceva in genul:&lt;br /&gt;
&amp;lt;code&amp;gt;:set t_ku=^[OA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mapari taste ==&lt;br /&gt;
Urmatoarele setari sunt legate de maparea tastelor si multe din comenzile respective pot fi schimbate pentru a se potrivi mai bine profilului dumneavoastra. De exemplu puteti asigna pentru &amp;lt;F1&amp;gt; :help, sau daca nu cititi niciodata help-ul puteti asigna fara probleme :qall! care va face vim-ul sa iasa fara sa salveze nici unul din fisierele deschise. In schimb este mandatoriu sa stiti ca va puteti configura vim-ul in detaliu pentru aproape orice task.&lt;br /&gt;
&lt;br /&gt;
=== map T :tabnew&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Vim stie de tab-uri. Da, ati citit bine, taburi ca in kate, kdevelop sau orice alt IDE. Aceasta mapare face crearea lor triviala.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F2&amp;gt; :w&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Salvarea fisierului curent cu un buton.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F3&amp;gt; :edit .&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Open-ul va permite nu doar sa folositi cautarea (/) ci puteti si sorta in functie de diferite campuri intrarile.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F4&amp;gt; :enew&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Curata bufferul curent.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F5&amp;gt; :tabprev&amp;lt;CR&amp;gt; si map &amp;lt;F6&amp;gt; :tabnext&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Navigare tab-uri (stanga, dreapta). Tab-urile sunt organizate ca o lista circulara, astfel incat daca sunteti la ultimul tab si apasati F6 veti ajunge dintrodata la primul tab.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F7&amp;gt; :vsplit&amp;lt;CR&amp;gt; si map &amp;lt;F8&amp;gt; :split&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Imparte ecranul curent in 2 parti prezentand acelasi buffer(vertical (vsplit) sau orizontal (split)). Puteti curata un view al unui buffer folosind :enew si apoi :edit . (sau F4, urmat de F3). Foarte util cand vreti sa vedeti un fisier sursa in paralel cu un log de exemplu... sau doua fisiere impreuna cu :diffthis (echivalent cu programul diff) pot face minuni.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F9&amp;gt; :tprev&amp;lt;CR&amp;gt; :map &amp;lt;F10&amp;gt; :tn&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Navigare in ctag-uri. Devine util cand sunt mai multe match-uri pentru acelasi tag. In cazul surselor monstru se intampla destul de des.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F12&amp;gt; :q&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Iesire din aplicatie.&lt;br /&gt;
&lt;br /&gt;
=== map X :set filetype=xml&amp;lt;CR&amp;gt; ... ===&lt;br /&gt;
syntax on ii spune editorului vim ca trebuie sa coloreze sintaxa in functie de tipul fisierului. Dar care este tipul fisierului? Implicit este extensia acestuia. Dar daca lipiti (dati paste) un fragment de cod din alta aplicatie intr-un buffer nou nout, atunci va trebui sa setati manual tipul fisierului. Personal prefer keybinding-uri. &lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;M-2&amp;gt; :set ts=2&amp;lt;CR&amp;gt; ... ===&lt;br /&gt;
Cate capete, atatea idei. Intrucat exista atat de multe conventii de notare imi place sa sar de la una la alta fara mare bataie de cap, si fara sa editez &amp;quot;nu stiu pe unde prin optiuni&amp;quot; (tm) de fiecare data cand deschid un fisier.&lt;br /&gt;
&lt;br /&gt;
== In final ==&lt;br /&gt;
Sunt sigur ca de acum o sa indragiti si mai mult vim-ul. Si sunt sigur ca veti incerca sa experimentati cu el. Dar daca aveti intrebari nu ezitati sa mi le adresati via e-mail (bogdan.mustiata@gmail.com), un post pe forum sau in discutiile acestei pagini wiki. &lt;br /&gt;
&lt;br /&gt;
[[Category:Tips'n'Tricks]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=File:Screenshot-shell_-_Konsole.png&amp;diff=3442</id>
		<title>File:Screenshot-shell - Konsole.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=File:Screenshot-shell_-_Konsole.png&amp;diff=3442"/>
				<updated>2007-05-20T03:48:17Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: Editare vim folosind tab-uri, vsplit si :diffthis.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Editare vim folosind tab-uri, vsplit si :diffthis.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=3441</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=3441"/>
				<updated>2007-05-18T21:00:08Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Doresti sa programezi dar sa nu fii intepenit intr-un editor? Vrei ca editorul tau sa te ajute in desfasurarea activitatilor uzuale? Atunci ai venit unde trebuie. Citeste mai departe.&lt;br /&gt;
&lt;br /&gt;
Abordarea urmatoare este orientata spre rezolvarea anumitor probleme, nicidecum nu incearca pomenirea tutoror setarilor astfel incat sa se trateze exhaustiv posibilitatile de configurare oferite de vim. Daca as incerca sa tratez toate posibilitatile aceasta ar fi help.txt din vim, si nu ar mai fi vorba de setari existentiale, nu? &lt;br /&gt;
&lt;br /&gt;
Dar exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc :&lt;br /&gt;
&amp;lt;code&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&lt;br /&gt;
:set foldmethod=syntax&lt;br /&gt;
:set foldlevel=100&lt;br /&gt;
:set nowrap&lt;br /&gt;
:set hlsearch&lt;br /&gt;
&lt;br /&gt;
:set t_ku=^[OA&lt;br /&gt;
:set t_kd=^[OB&lt;br /&gt;
:set t_kl=^[OD&lt;br /&gt;
:set t_kr=^[OC&lt;br /&gt;
&lt;br /&gt;
:map T :tabnew&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F2&amp;gt; :w&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F3&amp;gt; :edit .&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F4&amp;gt; :enew&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F5&amp;gt; :tabprev&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F6&amp;gt; :tabnext&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F7&amp;gt; :vsplit&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F8&amp;gt; :split&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F9&amp;gt; :tprev&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F10&amp;gt; :tn&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;F12&amp;gt; :q&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:map X :set filetype=xml&amp;lt;CR&amp;gt;&lt;br /&gt;
:map t :set filetype=txt&amp;lt;CR&amp;gt;&lt;br /&gt;
:map j :set filetype=java&amp;lt;CR&amp;gt;&lt;br /&gt;
:map c :set filetype=cpp&amp;lt;CR&amp;gt;&lt;br /&gt;
:map s :set filetype=sql&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:map &amp;lt;M-2&amp;gt; :set ts=2&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;M-4&amp;gt; :set ts=4&amp;lt;CR&amp;gt;&lt;br /&gt;
:map &amp;lt;M-8&amp;gt; :set ts=8&amp;lt;CR&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par multe si fara sens, nu? Hai sa le luam in parte.&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor cursorului sa urce.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse. In cazul in care nu aveti instalate fisierele ce contin sintaxa ar fi mai bine sa eliminati aceasta linie intrucat la deschiderea fiecarui fisier va va da intai o eroare intrucat nu gaseste fisierul de sintaxa.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;br /&gt;
&lt;br /&gt;
=== set foldmethod=syntax ===&lt;br /&gt;
Mai tineti minte din kate, kdevelop sau anjuta acele [+]-uri care va permit sa colapsati anumite blocuri (fold-uri) de cod?&lt;br /&gt;
Da, vim stie si asta. Acest editor este capabil sa analizeze din punct de vedere sintactic sursa dumneavoastra, in functie de sintaxa (C/C++/Java) sau de indentare (foldmethod=indent) - da, programatorilor python, nu ati fost uitati -.   Desi nu stie de XML, daca XML-ul este indentat, puteti folosi aceasta abordare pentru a colapsa anumite noduri. Intrucat editez in general surse, prefer foldmethod-ul sa fie implicit setat pe syntax. (zo - deschide un fold, zc - inchide un fold. Un fold este de la { la } corespunzatoare.)&lt;br /&gt;
&lt;br /&gt;
=== set foldlevel=100 ===&lt;br /&gt;
Implicit vim va deschide n niveluri de folduri (100 in cazul de fata) si le va inchide pe toate celelalte. In practica puteti seta foldlevel-ul manual in timp ce editati - de exemplu puteti folosi astfel sursele CPP ale unei clase pe rol de header, setand foldlevelul astfel incat sa inchida toate fold-urile corespunzatoare metodelor.&lt;br /&gt;
&lt;br /&gt;
=== set nowrap ===&lt;br /&gt;
Nu va imparti o linie de text in mai multe in cazul in care linia nu incape in ecranul curent.&lt;br /&gt;
&lt;br /&gt;
=== set hlsearch ===&lt;br /&gt;
Pentru ca sunteti inteligenti - altfel nu ati citi acest document, nu? - sunt sigur ca folositi un browser inteligent (e.g. Firefox). Si sunt sigur ca va place la nebunie sa activati highlight all atunci cand cautati un text (este o putere a mea ascunsa, de a sti aceste lucruri). Acest mecanism devine foarte util cand vreti sa vedeti unde este folosita o variabila - puteti pozitiona cursorul pe variabila, apasati *, si toate aparitiile variabilei sunt scoase in evidenta.&lt;br /&gt;
&lt;br /&gt;
=== set t_ku=^[OA, ... ===&lt;br /&gt;
&lt;br /&gt;
Up, Down, Left, Right... Aceasta setare este pentru sistemele UNIX mai dubioase (gen Solaris de exemplu) pentru care tastele cursor (cele cu sageti) nu mai functioneaza in mod normal (de exemplu afiseaza litere A, B, C, D). Atunci tot ce trebuie sa faceti este sa le setati. In vim nu veti scrie caracterele ^ sau [ ci in timp ce editati ''.vimrc'' (deci nu copiati fisierul de mai sus adliteram):&lt;br /&gt;
&amp;lt;code&amp;gt;:set t_ku=&amp;lt;Ctrl+V&amp;gt;&amp;lt;Sageata Sus&amp;gt;&amp;lt;Enter&amp;gt;&amp;lt;/code&amp;gt; si ar trebui sa vedeti pe ecran ceva in genul:&lt;br /&gt;
&amp;lt;code&amp;gt;:set t_ku=^[OA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mapari taste ==&lt;br /&gt;
Urmatoarele setari sunt legate de maparea tastelor si multe din comenzile respective pot fi schimbate pentru a se potrivi mai bine profilului dumneavoastra. De exemplu puteti asigna pentru &amp;lt;F1&amp;gt; :help, sau daca nu cititi niciodata help-ul puteti asigna fara probleme :qall! care va face vim-ul sa iasa fara sa salveze nici unul din fisierele deschise. In schimb este mandatoriu sa stiti ca va puteti configura vim-ul in detaliu pentru aproape orice task.&lt;br /&gt;
&lt;br /&gt;
=== map T :tabnew&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Vim stie de tab-uri. Da, ati citit bine, taburi ca in kate, kdevelop sau orice alt IDE. Aceasta mapare face crearea lor triviala.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F2&amp;gt; :w&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Salvarea fisierului curent cu un buton.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F3&amp;gt; :edit .&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Open-ul va permite nu doar sa folositi cautarea (/) ci puteti si sorta in functie de diferite campuri intrarile.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F4&amp;gt; :enew&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Curata bufferul curent.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F5&amp;gt; :tabprev&amp;lt;CR&amp;gt; si map &amp;lt;F6&amp;gt; :tabnext&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Navigare tab-uri (stanga, dreapta). Tab-urile sunt organizate ca o lista circulara, astfel incat daca sunteti la ultimul tab si apasati F6 veti ajunge dintrodata la primul tab.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F7&amp;gt; :vsplit&amp;lt;CR&amp;gt; si map &amp;lt;F8&amp;gt; :split&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Imparte ecranul curent in 2 parti prezentand acelasi buffer(vertical (vsplit) sau orizontal (split)). Puteti curata un view al unui buffer folosind :enew si apoi :edit . (sau F4, urmat de F3). Foarte util cand vreti sa vedeti un fisier sursa in paralel cu un log de exemplu... sau doua fisiere impreuna cu :diffthis (echivalent cu programul diff) pot face minuni.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F9&amp;gt; :tprev&amp;lt;CR&amp;gt; :map &amp;lt;F10&amp;gt; :tn&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Navigare in ctag-uri. Devine util cand sunt mai multe match-uri pentru acelasi tag. In cazul surselor monstru se intampla destul de des.&lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;F12&amp;gt; :q&amp;lt;CR&amp;gt; ===&lt;br /&gt;
Iesire din aplicatie.&lt;br /&gt;
&lt;br /&gt;
=== map X :set filetype=xml&amp;lt;CR&amp;gt; ... ===&lt;br /&gt;
syntax on ii spune editorului vim ca trebuie sa coloreze sintaxa in functie de tipul fisierului. Dar care este tipul fisierului? Implicit este extensia acestuia. Dar daca lipiti (dati paste) un fragment de cod din alta aplicatie intr-un buffer nou nout, atunci va trebui sa setati manual tipul fisierului. Personal prefer keybinding-uri. &lt;br /&gt;
&lt;br /&gt;
=== map &amp;lt;M-2&amp;gt; :set ts=2&amp;lt;CR&amp;gt; ... ===&lt;br /&gt;
Cate capete, atatea idei. Intrucat exista atat de multe conventii de notare imi place sa sar de la una la alta fara mare bataie de cap, si fara sa editez &amp;quot;nu stiu pe unde prin optiuni&amp;quot; (tm) de fiecare data cand deschid un fisier.&lt;br /&gt;
&lt;br /&gt;
== In final ==&lt;br /&gt;
Sunt sigur ca de acum o sa indragiti si mai mult vim-ul. Si sunt sigur ca veti incerca sa experimentati cu el. Dar daca aveti intrebari nu ezitati sa mi le adresati via e-mail (bogdan.mustiata@gmail.com), un post pe forum sau in discutiile acestei pagini wiki. &lt;br /&gt;
&lt;br /&gt;
[[Category:Tips'n'Tricks]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3394</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=3394"/>
				<updated>2007-02-10T09:15:05Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Configurare firewall in Ubuntu]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[ATi_%C5%9Fi_Slackware|ATi şi Slackware]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Supraveghere video sub Linux folosind ZoneMinder]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Internet mobil cu Vodafone SmartModem]] ([[:Category:Networking|retea]])&lt;br /&gt;
** [[Supraveghere video sub Linux]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Debricking Linksys WRT54GL cu OpenWrt]] ([[:Category:Troubleshooting|remedieri]])&lt;br /&gt;
** [[Instalare Gentoo - Sfaturi]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
** [[Detecţie componente hardware din consolă]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Dezlipire sticker Microsoft Windows|Cum să scăpăm de abţibildul de la Microsoft?]] ([[:Category:FAQ|Întrebări puse frecvent]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Întrebări puse frecvent]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Securitatea sistemului de operare (Slackware)]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Curbe Bezier|Curbe Bézier]] ([[User:Cbidea|Phaser]])&lt;br /&gt;
** [[Procesul de initializare al unui sistem Slackware GNU/Linux]] ([[User:Vladg|Vladg]])&lt;br /&gt;
** [[Instalarea distribuţiei Slackware Linux]] ([[User:Gabel|gabel]])&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Configurare_firewall_in_Ubuntu&amp;diff=3393</id>
		<title>Configurare firewall in Ubuntu</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Configurare_firewall_in_Ubuntu&amp;diff=3393"/>
				<updated>2007-02-10T09:09:01Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si in cele din urma ai facut-o si pe asta. Ai un server Ubuntu (sau Debian) si vrei sa ii configurezi firewall-ul. Configuratia default pe care vom lucra este urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# netstat -antl&lt;br /&gt;
Active Internet connections (servers and established)&lt;br /&gt;
Proto Recv-Q Send-Q Local Address           Foreign Address         State&lt;br /&gt;
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN&lt;br /&gt;
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN&lt;br /&gt;
tcp6       0      0 :::80                   :::*                    LISTEN&lt;br /&gt;
tcp6       0      0 :::22                   :::*                    LISTEN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dupa cum se vede avem un server mysql care va trebui sa fie folosit doar local, un server exim4 care si el va fi tot local, iar serverele ssh si apache vor trebui sa fie disponibile public. De asemenea acesta este un server &amp;quot;de productie&amp;quot; si nu are si rol de router in acelasi timp.&lt;br /&gt;
&lt;br /&gt;
Intai vom opri tot:&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# iptables -P INPUT DROP&lt;br /&gt;
root@ubuntu-server:~# iptables -P OUTPUT DROP&lt;br /&gt;
root@ubuntu-server:~# iptables -P FORWARD DROP&lt;br /&gt;
root@ubuntu-server:~# iptables -F&lt;br /&gt;
root@ubuntu-server:~# iptables -L -n&lt;br /&gt;
Chain INPUT (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy DROP)&lt;br /&gt;
target     prot opt source               destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dupa cum se vede tot traficul este in acest moment blocat. Evident daca sunteti conectat remote (e.g. prin ssh, miscarea de mai sus este kamikaze)&lt;br /&gt;
&lt;br /&gt;
Apoi permitem serviciilor necesare sa poata comunica. Ca un &amp;quot;best practice&amp;quot; pe care l-am remarcat, regulile se pun cam intotdeauna preferential pe INPUT. Ideea e ca un eventual atacator sa nu trimita pachete pe care aplicatia noastra sa le proceseze - chiar daca raspunsul ei ar fi oprit - ci ele sa fie oprite direct la nivelul kernelului. Asta ne salveaza macar de niste timp de procesor inutil folosit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 80&lt;br /&gt;
root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 22&lt;br /&gt;
root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 25 -s 127.0.0.1&lt;br /&gt;
root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 3306 -s 127.0.0.1&lt;br /&gt;
root@ubuntu-server:~# iptables -P OUTPUT ACCEPT&lt;br /&gt;
root@ubuntu-server:~# iptables -L -n&lt;br /&gt;
Chain INPUT (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80&lt;br /&gt;
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22&lt;br /&gt;
ACCEPT     tcp  --  127.0.0.1            0.0.0.0/0           tcp dpt:25&lt;br /&gt;
ACCEPT     tcp  --  127.0.0.1            0.0.0.0/0           tcp dpt:3306&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT)&lt;br /&gt;
target     prot opt source               destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acum fiecare isi mai poate modifica firewall-ul in functie de cerintele de securitate si preferintele de securitate dorite - de exemplu desi eu nu am adaugat nici o regula pentru OUTPUT, unii dintre dumneavoastra se pot gandi sa adauge. Urmatorul pas ramane de a configura aceste reguli de fiecare data cand sistemul booteaza. Aparent in viziunea unora editarea /etc/rc.local poate fi suficienta intrucat acesta este ultimul script care va fi lansat de catre sistemul de operare atunci cand booteaza. Totusi aceasta abordare nu este suficienta intrucat serviciul de networking (reteaua fizica) impreuna cu serverele noastre apache, mysql, exim4 si sshd sunt deja pornite la momentul cand rc.local este executat, insemnand ca a fost un timp de cateva secunde cand nu a existat un firewall sa ne protejeze aplicatiile.&lt;br /&gt;
&lt;br /&gt;
Astfel, cel mai bun moment de a seta firewall-ul, ramane inainte sau imediat dupa ce placile de retea fizic sunt configurate, dar inainte ca orice alt serviciu de retea sa fi fost pornit.&lt;br /&gt;
&lt;br /&gt;
Dupa cum citim in manual (man 5 interfaces) putem sa lansam un script inainte sau dupa ce o interfata de retea este activata sau oprita. Vom folosi acest mecanism.&lt;br /&gt;
Intai vom salva regulile firewall curente intr-un fisier, fie acesta /etc/iptables_rules.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# iptables-save &amp;gt; /etc/iptables_rules.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apoi vom edita fisierul /etc/network/interfaces si vom incarca regulile din firewall imediat inainte de activarea interfetei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
pre-up iptables-restore /etc/iptables_rules.conf # linia adaugata de noi.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gata!&lt;br /&gt;
&lt;br /&gt;
Putem merge afara sa mancam ceva.&lt;br /&gt;
&lt;br /&gt;
--[[User:Raptor|Raptor]] 11:07, 10 February 2007 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Configurare_firewall_in_Ubuntu&amp;diff=3392</id>
		<title>Configurare firewall in Ubuntu</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Configurare_firewall_in_Ubuntu&amp;diff=3392"/>
				<updated>2007-02-10T09:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Si in cele din urma ai facut-o si pe asta. Ai un server Ubuntu (sau Debian) si vrei sa ii configurezi firewall-ul. Configuratia default pe care vom lucra este urmatoarea:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# netstat -antl&lt;br /&gt;
Active Internet connections (servers and established)&lt;br /&gt;
Proto Recv-Q Send-Q Local Address           Foreign Address         State&lt;br /&gt;
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN&lt;br /&gt;
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN&lt;br /&gt;
tcp6       0      0 :::80                   :::*                    LISTEN&lt;br /&gt;
tcp6       0      0 :::22                   :::*                    LISTEN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dupa cum se vede avem un server mysql care va trebui sa fie folosit doar local, un server exim4 care si el va fi tot local, iar serverele ssh si apache vor trebui sa fie disponibile public. De asemenea acesta este un server &amp;quot;de productie&amp;quot; si nu are si rol de router in acelasi timp.&lt;br /&gt;
&lt;br /&gt;
Intai vom opri tot:&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# iptables -P INPUT DROP&lt;br /&gt;
root@ubuntu-server:~# iptables -P OUTPUT DROP&lt;br /&gt;
root@ubuntu-server:~# iptables -P FORWARD DROP&lt;br /&gt;
root@ubuntu-server:~# iptables -F&lt;br /&gt;
root@ubuntu-server:~# iptables -L -n&lt;br /&gt;
Chain INPUT (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy DROP)&lt;br /&gt;
target     prot opt source               destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dupa cum se vede tot traficul este in acest moment blocat. Evident daca sunteti conectat remote (e.g. prin ssh, miscarea de mai sus este kamikaze)&lt;br /&gt;
&lt;br /&gt;
Apoi permitem serviciilor necesare sa poata comunica. Ca un &amp;quot;best practice&amp;quot; pe care l-am remarcat, regulile se pun cam intotdeauna preferential pe INPUT. Ideea e ca un eventual atacator sa nu trimita pachete pe care aplicatia noastra sa le proceseze - chiar daca raspunsul ei ar fi oprit - ci ele sa fie oprite direct la nivelul kernelului. Asta ne salveaza macar de niste timp de procesor inutil folosit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 80&lt;br /&gt;
root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 22&lt;br /&gt;
root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 25 -s 127.0.0.1&lt;br /&gt;
root@ubuntu-server:~# iptables -A INPUT -j ACCEPT -p tcp --dport 3306 -s 127.0.0.1&lt;br /&gt;
root@ubuntu-server:~# iptables -P OUTPUT ACCEPT&lt;br /&gt;
root@ubuntu-server:~# iptables -L -n&lt;br /&gt;
Chain INPUT (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80&lt;br /&gt;
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22&lt;br /&gt;
ACCEPT     tcp  --  127.0.0.1            0.0.0.0/0           tcp dpt:25&lt;br /&gt;
ACCEPT     tcp  --  127.0.0.1            0.0.0.0/0           tcp dpt:3306&lt;br /&gt;
&lt;br /&gt;
Chain FORWARD (policy DROP)&lt;br /&gt;
target     prot opt source               destination&lt;br /&gt;
&lt;br /&gt;
Chain OUTPUT (policy ACCEPT)&lt;br /&gt;
target     prot opt source               destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Acum fiecare isi mai poate modifica firewall-ul in functie de cerintele de securitate si preferintele de securitate dorite - de exemplu desi eu nu am adaugat nici o regula pentru OUTPUT, unii dintre dumneavoastra se pot gandi sa adauge. Urmatorul pas ramane de a configura aceste reguli de fiecare data cand sistemul booteaza. Aparent in viziunea unora editarea /etc/rc.local poate fi suficienta intrucat acesta este ultimul script care va fi lansat de catre sistemul de operare atunci cand booteaza. Totusi aceasta abordare nu este suficienta intrucat serviciul de networking (reteaua fizica) impreuna cu serverele noastre apache, mysql, exim4 si sshd sunt deja pornite la momentul cand rc.local este executat.&lt;br /&gt;
&lt;br /&gt;
Astfel, cel mai bun moment de a seta firewall-ul, ramane inainte sau imediat dupa ce placile de retea fizic sunt configurate, dar inainte ca orice alt serviciu de retea sa fi fost pornit.&lt;br /&gt;
&lt;br /&gt;
Dupa cum citim in manual (man 5 interfaces) putem sa lansam un script inainte sau dupa ce o interfata de retea este activata sau oprita. Vom folosi acest mecanism.&lt;br /&gt;
Intai vom salva regulile firewall curente intr-un fisier, fie acesta /etc/iptables_rules.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@ubuntu-server:~# iptables-save &amp;gt; /etc/iptables_rules.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apoi vom edita fisierul /etc/network/interfaces si vom incarca regulile din firewall imediat inainte de activarea interfetei.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
pre-up iptables-restore /etc/iptables_rules.conf # linia adaugata de noi.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gata!&lt;br /&gt;
&lt;br /&gt;
Putem merge afara sa mancam ceva.&lt;br /&gt;
&lt;br /&gt;
--[[User:Raptor|Raptor]] 11:07, 10 February 2007 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3320</id>
		<title>SupraÃ®ncÄƒrcarea operatorilor Ã®n limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3320"/>
				<updated>2006-12-22T13:05:12Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Exemplu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Titlul oribil este rezultatul unei limitări in Wiki -- imediat ce se rezolvă, vom face şi titul mai uşor de privit''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introducere ==&lt;br /&gt;
Operatiile de baza sunt implementate in limbajul C++ cu ajutorul operatorilor. In limbajul C++ operatorii sunt, de fapt, functii. Operatorii oferiti de limbaj pot ''lucra'' decat asupra tipurilor de date predefinite. Pentru a folosi operatorii asupra tipurilor de date construite de noi, limbajul C++ ne ofera un mecanism care se numeste '''supraincarcarea operatorilor'''.&lt;br /&gt;
&lt;br /&gt;
De ce am avea nevoie de asa ceva? Dupa cum se stie se poate crea o functie a unei clase care sa faca exact ce ar face un operator si care sa o definim (de exemplu) '''suma'''. Atunci am apela acea metoda astfel:&lt;br /&gt;
&lt;br /&gt;
 Obiect ob1;&lt;br /&gt;
 Obiect ob2;&lt;br /&gt;
 Obiect ob3 = ob1.suma( ob2 );&lt;br /&gt;
&lt;br /&gt;
Cam greoi! Ar fi mai simplu daca am scrie aşa:&lt;br /&gt;
 Obiect ob3 = ob1 + ob2;&lt;br /&gt;
&lt;br /&gt;
Astfel s-a ajuns la nevoia de a supraincarcarea operatorii!&lt;br /&gt;
&lt;br /&gt;
== Teorie ==&lt;br /&gt;
&lt;br /&gt;
Supraincarcarea metodelor claselor in general si a operatorilor in particular sunt doua dintre cele mai importante mecanisme ale limbajului C++. Ele sunt un pas urias catre polimorfism (asta este alta bazaconie inventata de oamenii cu creiere luminate). Aceste ''oportunitati''  sunt cele care ofera flexibilitate aplicatiilor pe care le construim.&lt;br /&gt;
&lt;br /&gt;
Iata lista operatorilor din C++ care se pot supraincarca:&lt;br /&gt;
* new delete&lt;br /&gt;
* () []&lt;br /&gt;
* + - * / %&lt;br /&gt;
* ^ &amp;amp; | ~&lt;br /&gt;
* ! = &amp;lt; &amp;gt;&lt;br /&gt;
* += -= *= /= %=&lt;br /&gt;
* ^= &amp;amp;= |=&lt;br /&gt;
* &amp;lt;&amp;lt; &amp;gt;&amp;gt;&lt;br /&gt;
* &amp;gt;&amp;gt;= &amp;lt;&amp;lt;=&lt;br /&gt;
* == != &amp;lt;= &amp;gt;=&lt;br /&gt;
* &amp;amp;&amp;amp; ||&lt;br /&gt;
* ++ --&lt;br /&gt;
* ,&lt;br /&gt;
* -&amp;gt;*&lt;br /&gt;
* -&amp;gt;&lt;br /&gt;
unde operatorul '''()''' este apelul unei functii, iar operatorul '''[]''' este operatorul de indexare.&lt;br /&gt;
&lt;br /&gt;
Urmatorii operatori nu se pot supraincarca:&lt;br /&gt;
* . .* :: ?: sizeof&lt;br /&gt;
&lt;br /&gt;
Reguli care trebuie sa fie respectate in supraincarcarea operatorilor:&lt;br /&gt;
* operatorii =, (), [], si -&amp;gt; trebuie sa fie membrii nestatici ai clasei&lt;br /&gt;
* operatorul = nu poate fi mostenit&lt;br /&gt;
* operatorii pentru tipurile predefinite ale limbajului nu se pot supraincarca&lt;br /&gt;
* operatorii nu pot avea argumente implicite&lt;br /&gt;
&lt;br /&gt;
Operatorii pentru un anumit tip definit de utilizator (clasa) pot sa fie sau nu membru al clasei. In cazul in care se supraincarca un operator pentru o clasa, dar acel operator nu apartine clasei, trebuie sa fie declarat '''friend''' in clasa respectiva si sa aiba cel putin un argument de tipul clasei respective. Exceptie de la aceasta regula fac operatorii '''= () [] -&amp;gt;''' care nu pot fi supraincarcati folosind functii de tipul friend ale unei anumite clase.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
&lt;br /&gt;
Un exemplu: voi da ca exemple supraincarcarea operatorilor ++ pre si post indexat.&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class MyPoint&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
    MyPoint(); // constructor implicit&lt;br /&gt;
    MyPoint( const double a ); // constructor de initializare&lt;br /&gt;
    MyPoint( const double a, const double b ); // constructor de initializare&lt;br /&gt;
    MyPoint( const MyPoint &amp;amp;r ); // constructor de copiere&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator+=( const MyPoint&amp;amp; point ); // adunare cu un alt punct&lt;br /&gt;
    MyPoint&amp;amp; operator-=( const MyPoint&amp;amp; point ); // scadere&lt;br /&gt;
    MyPoint&amp;amp; operator*=( const double dVal ); // inmultire cu o constanta&lt;br /&gt;
&lt;br /&gt;
    // considerand punctul ca un vector de 2 elemente ( pozitiile 0,1 ), pe pozitia 0 fiind x&lt;br /&gt;
    // NOTA: nu este recomandat, este doar un exemplu de utilizare al operatorului []&lt;br /&gt;
    double &amp;amp; operator[]( const int index );&lt;br /&gt;
&lt;br /&gt;
    friend MyPoint operator+ (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2); // suma a 2 vectori&lt;br /&gt;
    friend MyPoint operator- (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2); // diferenta a 2 vectori&lt;br /&gt;
    double operator*( const MyPoint&amp;amp; point ) const; // produsul scalar a 2 vectori&lt;br /&gt;
    MyPoint operator*( const double dVal ) const; // multiplicare cu o constanta&lt;br /&gt;
    friend MyPoint operator*( const double dVal, const MyPoint&amp;amp; point); // pentru a asigura comutativitatea operatiei precedente&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator=( const MyPoint&amp;amp; point );&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator++(); // ++ prefixat&lt;br /&gt;
    MyPoint operator++( int ); // ++ postfixat&lt;br /&gt;
&lt;br /&gt;
    friend ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt );&lt;br /&gt;
    friend istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt );&lt;br /&gt;
&lt;br /&gt;
    void   setX( double x );&lt;br /&gt;
    double getX() const;&lt;br /&gt;
&lt;br /&gt;
    void   setY( double y );&lt;br /&gt;
    double getY() const;&lt;br /&gt;
 private:&lt;br /&gt;
    double x;&lt;br /&gt;
    double y;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint()&lt;br /&gt;
 {&lt;br /&gt;
    x = 0;&lt;br /&gt;
    y = 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const MyPoint &amp;amp;r )&lt;br /&gt;
 {&lt;br /&gt;
    x = r.x;&lt;br /&gt;
    y = r.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const double a )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const double a, const double b )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator+=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x+=point.x;&lt;br /&gt;
    y+=point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator-=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x-=point.x;&lt;br /&gt;
    y-=point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator*=( const double dVal )&lt;br /&gt;
 {&lt;br /&gt;
    x*=dVal;&lt;br /&gt;
    y*=dVal;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator+ (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2)&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    &lt;br /&gt;
    temp.x = p1.x + p2.x;&lt;br /&gt;
    temp.y = p1.y + p2.y;&lt;br /&gt;
    &lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 MyPoint operator- (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2)&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    &lt;br /&gt;
    temp.x = p1.x - p2.x;&lt;br /&gt;
    temp.y = p1.y - p2.y;&lt;br /&gt;
    &lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 double MyPoint::operator*( const MyPoint&amp;amp; point ) const&lt;br /&gt;
 {&lt;br /&gt;
    // produs vectorial intre 2 vectori&lt;br /&gt;
    // fiecare vector e determinat de origine si coordonatele punctului&lt;br /&gt;
    return x * point.x + y * point.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator*( const double dVal ) const&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(x * dVal, y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator*( const double dVal, const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(point.x * dVal, point.y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x = point.x;&lt;br /&gt;
    y = point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator++()&lt;br /&gt;
 {&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator++( int )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint r = *this;&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;lt;&amp;lt; &amp;quot;( &amp;quot; &amp;lt;&amp;lt; pt.x &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; pt.y &amp;lt;&amp;lt; &amp;quot; )&amp;quot;;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;gt;&amp;gt; pt.x &amp;gt;&amp;gt; pt.y;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void MyPoint::setX( double x )&lt;br /&gt;
 {&lt;br /&gt;
    this-&amp;gt;x = x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getX() const&lt;br /&gt;
 {&lt;br /&gt;
    return x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 void MyPoint::setY( double y )&lt;br /&gt;
 {&lt;br /&gt;
    this-&amp;gt;y = y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getY() const&lt;br /&gt;
 {&lt;br /&gt;
    return y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
double&amp;amp; MyPoint::operator[]( const int index )&lt;br /&gt;
{&lt;br /&gt;
	if( index == 0 ) return x;&lt;br /&gt;
	return y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 int main( int argc, char *argv[] )&lt;br /&gt;
 {&lt;br /&gt;
    // initializarea punctelor&lt;br /&gt;
    MyPoint pt( 5, 7 );&lt;br /&gt;
    MyPoint pt2;&lt;br /&gt;
&lt;br /&gt;
    // test pentru serializare    &lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt++ &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 6, 8 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; ++pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 7, 9 )&lt;br /&gt;
&lt;br /&gt;
    pt = MyPoint( 1, 3 );&lt;br /&gt;
    &lt;br /&gt;
    // Multiplicarea cu o constanta. folosirea operatorului *&lt;br /&gt;
    // Folosim atat operatorul * cat si operatorul * ca si metoda friend.&lt;br /&gt;
    // 2 * pt este echivalent cu: *(2, pt)&lt;br /&gt;
    // pt * 2 este echivalent cu: pt.*(2)&lt;br /&gt;
    cout &amp;lt;&amp;lt; 2 * pt &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; pt * 2 &amp;lt;&amp;lt; endl; // afiseaza la consola ( 2, 6 ) (2, 6)&lt;br /&gt;
&lt;br /&gt;
    // folosirea operatorului [] supraincarcat.&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;x pt[0]=&amp;quot; &amp;lt;&amp;lt; pt[0] &amp;lt;&amp;lt; &amp;quot;; y pt[1]=&amp;quot; &amp;lt;&amp;lt; pt[1] &amp;lt;&amp;lt; endl;&lt;br /&gt;
    pt[0] = 5;&lt;br /&gt;
    pt[1] = 5;&lt;br /&gt;
    &lt;br /&gt;
    pt2 = pt;&lt;br /&gt;
    &lt;br /&gt;
    // Folosirea operatorului + si - supraincarcate si a constructorului&lt;br /&gt;
    // cu un singur parametru double. Avantajul e ca logica + e definita&lt;br /&gt;
    // intr-un singur loc. Dezavantajul e chemarea transparenta a constructorului&lt;br /&gt;
    // si creerea unui obiect temporar.&lt;br /&gt;
    pt2 = pt2 - 2; // echivalent cu: pt2.=(pt2.-(MyPoint(2)));&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
    &lt;br /&gt;
    pt2 = 2 + pt2; // echivalent cu: pt2.=(MyPoint(2).+(pt2));&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
    pt2 = pt2 + pt2; // echivalent cu: pt2.=(pt2.+(pt2));&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Versiunea originală de [[User:Radubolovan|Radu Bolovan]] 12:04, 22 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3319</id>
		<title>SupraÃ®ncÄƒrcarea operatorilor Ã®n limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3319"/>
				<updated>2006-12-21T15:50:16Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Exemplu */ Operatorul + si - sunt acum metode friend, un constructor in plus si de asemenea comentarii mai multe pe marginea sursei main.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Titlul oribil este rezultatul unei limitări in Wiki -- imediat ce se rezolvă, vom face şi titul mai uşor de privit''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introducere ==&lt;br /&gt;
Operatiile de baza sunt implementate in limbajul C++ cu ajutorul operatorilor. In limbajul C++ operatorii sunt, de fapt, functii. Operatorii oferiti de limbaj pot ''lucra'' decat asupra tipurilor de date predefinite. Pentru a folosi operatorii asupra tipurilor de date construite de noi, limbajul C++ ne ofera un mecanism care se numeste '''supraincarcarea operatorilor'''.&lt;br /&gt;
&lt;br /&gt;
De ce am avea nevoie de asa ceva? Dupa cum se stie se poate crea o functie a unei clase care sa faca exact ce ar face un operator si care sa o definim (de exemplu) '''suma'''. Atunci am apela acea metoda astfel:&lt;br /&gt;
&lt;br /&gt;
 Obiect ob1;&lt;br /&gt;
 Obiect ob2;&lt;br /&gt;
 Obiect ob3 = ob1.suma( ob2 );&lt;br /&gt;
&lt;br /&gt;
Cam greoi! Ar fi mai simplu daca am scrie aşa:&lt;br /&gt;
 Obiect ob3 = ob1 + ob2;&lt;br /&gt;
&lt;br /&gt;
Astfel s-a ajuns la nevoia de a supraincarcarea operatorii!&lt;br /&gt;
&lt;br /&gt;
== Teorie ==&lt;br /&gt;
&lt;br /&gt;
Supraincarcarea metodelor claselor in general si a operatorilor in particular sunt doua dintre cele mai importante mecanisme ale limbajului C++. Ele sunt un pas urias catre polimorfism (asta este alta bazaconie inventata de oamenii cu creiere luminate). Aceste ''oportunitati''  sunt cele care ofera flexibilitate aplicatiilor pe care le construim.&lt;br /&gt;
&lt;br /&gt;
Iata lista operatorilor din C++ care se pot supraincarca:&lt;br /&gt;
* new delete&lt;br /&gt;
* () []&lt;br /&gt;
* + - * / %&lt;br /&gt;
* ^ &amp;amp; | ~&lt;br /&gt;
* ! = &amp;lt; &amp;gt;&lt;br /&gt;
* += -= *= /= %=&lt;br /&gt;
* ^= &amp;amp;= |=&lt;br /&gt;
* &amp;lt;&amp;lt; &amp;gt;&amp;gt;&lt;br /&gt;
* &amp;gt;&amp;gt;= &amp;lt;&amp;lt;=&lt;br /&gt;
* == != &amp;lt;= &amp;gt;=&lt;br /&gt;
* &amp;amp;&amp;amp; ||&lt;br /&gt;
* ++ --&lt;br /&gt;
* ,&lt;br /&gt;
* -&amp;gt;*&lt;br /&gt;
* -&amp;gt;&lt;br /&gt;
unde operatorul '''()''' este apelul unei functii, iar operatorul '''[]''' este operatorul de indexare.&lt;br /&gt;
&lt;br /&gt;
Urmatorii operatori nu se pot supraincarca:&lt;br /&gt;
* . .* :: ?: sizeof&lt;br /&gt;
&lt;br /&gt;
Reguli care trebuie sa fie respectate in supraincarcarea operatorilor:&lt;br /&gt;
* operatorii =, (), [], si -&amp;gt; trebuie sa fie membrii nestatici ai clasei&lt;br /&gt;
* operatorul = nu poate fi mostenit&lt;br /&gt;
* operatorii pentru tipurile predefinite ale limbajului nu se pot supraincarca&lt;br /&gt;
* operatorii nu pot avea argumente implicite&lt;br /&gt;
&lt;br /&gt;
Operatorii pentru un anumit tip definit de utilizator (clasa) pot sa fie sau nu membru al clasei. In cazul in care se supraincarca un operator pentru o clasa, dar acel operator nu apartine clasei, trebuie sa fie declarat '''friend''' in clasa respectiva si sa aiba cel putin un argument de tipul clasei respective. Exceptie de la aceasta regula fac operatorii '''= () [] -&amp;gt;''' care nu pot fi supraincarcati folosind functii de tipul friend ale unei anumite clase.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
&lt;br /&gt;
Un exemplu: voi da ca exemple supraincarcarea operatorilor ++ pre si post indexat.&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class MyPoint&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
    MyPoint(); // constructor implicit&lt;br /&gt;
    MyPoint( const double a ); // constructor de initializare&lt;br /&gt;
    MyPoint( const double a, const double b ); // constructor de initializare&lt;br /&gt;
    MyPoint( const MyPoint &amp;amp;r ); // constructor de copiere&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator+=( const MyPoint&amp;amp; point ); // adunare cu un alt punct&lt;br /&gt;
    MyPoint&amp;amp; operator-=( const MyPoint&amp;amp; point ); // scadere&lt;br /&gt;
    MyPoint&amp;amp; operator*=( const double dVal ); // inmultire cu o constanta&lt;br /&gt;
&lt;br /&gt;
    // considerand punctul ca un vector de 2 elemente ( pozitiile 0,1 ), pe pozitia 0 fiind x&lt;br /&gt;
    // NOTA: nu este recomandat, este doar un exemplu de utilizare al operatorului []&lt;br /&gt;
    double &amp;amp; operator[]( const int index );&lt;br /&gt;
&lt;br /&gt;
    friend MyPoint operator+ (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2); // suma a 2 vectori&lt;br /&gt;
    friend MyPoint operator- (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2); // diferenta a 2 vectori&lt;br /&gt;
    double operator*( const MyPoint&amp;amp; point ) const; // produsul scalar a 2 vectori&lt;br /&gt;
    MyPoint operator*( const double dVal ) const; // multiplicare cu o constanta&lt;br /&gt;
    friend MyPoint operator*( const double dVal, const MyPoint&amp;amp; point); // pentru a asigura comutativitatea operatiei precedente&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator=( const MyPoint&amp;amp; point );&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator++(); // ++ prefixat&lt;br /&gt;
    MyPoint operator++( int ); // ++ postfixat&lt;br /&gt;
&lt;br /&gt;
    friend ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt );&lt;br /&gt;
    friend istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt );&lt;br /&gt;
&lt;br /&gt;
    void   setX( double x );&lt;br /&gt;
    double getX() const;&lt;br /&gt;
&lt;br /&gt;
    void   setY( double y );&lt;br /&gt;
    double getY() const;&lt;br /&gt;
 private:&lt;br /&gt;
    double x;&lt;br /&gt;
    double y;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint()&lt;br /&gt;
 {&lt;br /&gt;
    x = 0;&lt;br /&gt;
    y = 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const MyPoint &amp;amp;r )&lt;br /&gt;
 {&lt;br /&gt;
    x = r.x;&lt;br /&gt;
    y = r.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const double a )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const double a, const double b )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator+=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x+=point.x;&lt;br /&gt;
    y+=point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator-=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x-=point.x;&lt;br /&gt;
    y-=point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator*=( const double dVal )&lt;br /&gt;
 {&lt;br /&gt;
    x*=dVal;&lt;br /&gt;
    y*=dVal;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator+ (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2)&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    &lt;br /&gt;
    temp.x = p1.x + p2.x;&lt;br /&gt;
    temp.y = p1.y + p2.y;&lt;br /&gt;
    &lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 MyPoint operator- (const MyPoint&amp;amp; p1, const MyPoint&amp;amp; p2)&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    &lt;br /&gt;
    temp.x = p1.x - p2.x;&lt;br /&gt;
    temp.y = p1.y - p2.y;&lt;br /&gt;
    &lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 double MyPoint::operator*( const MyPoint&amp;amp; point ) const&lt;br /&gt;
 {&lt;br /&gt;
    // produs vectorial intre 2 vectori&lt;br /&gt;
    // fiecare vector e determinat de origine si coordonatele punctului&lt;br /&gt;
    return x * point.x + y * point.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator*( const double dVal ) const&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(x * dVal, y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator*( const double dVal, const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(point.x * dVal, point.y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator=( const MyPoint&amp;amp; point )&lt;br /&gt;
 {&lt;br /&gt;
    x = point.x;&lt;br /&gt;
    y = point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator++()&lt;br /&gt;
 {&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator++( int )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint r = *this;&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;lt;&amp;lt; &amp;quot;( &amp;quot; &amp;lt;&amp;lt; pt.x &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; pt.y &amp;lt;&amp;lt; &amp;quot; )&amp;quot;;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;gt;&amp;gt; pt.x &amp;gt;&amp;gt; pt.y;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void MyPoint::setX( double x )&lt;br /&gt;
 {&lt;br /&gt;
    this-&amp;gt;x = x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getX() const&lt;br /&gt;
 {&lt;br /&gt;
    return x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 void MyPoint::setY( double y )&lt;br /&gt;
 {&lt;br /&gt;
    this-&amp;gt;y = y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getY() const&lt;br /&gt;
 {&lt;br /&gt;
    return y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
double&amp;amp; MyPoint::operator[]( const int index )&lt;br /&gt;
{&lt;br /&gt;
	if( index == 0 ) return x;&lt;br /&gt;
	return y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 int main( int argc, char *argv[] )&lt;br /&gt;
 {&lt;br /&gt;
    // initializarea punctelor&lt;br /&gt;
    MyPoint pt( 5, 7 );&lt;br /&gt;
    MyPoint pt2;&lt;br /&gt;
&lt;br /&gt;
    // test pentru serializare    &lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt++ &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 6, 8 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; ++pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 7, 9 )&lt;br /&gt;
&lt;br /&gt;
    pt = MyPoint( 1, 3 );&lt;br /&gt;
    &lt;br /&gt;
    // Multiplicarea cu o constanta. folosirea operatorului *&lt;br /&gt;
    // Folosim atat operatorul * cat si operatorul * ca si metoda friend.&lt;br /&gt;
    // 2 * pt este echivalent cu: *(2, pt)&lt;br /&gt;
    // pt * 2 este echivalent cu: pt.*(2)&lt;br /&gt;
    cout &amp;lt;&amp;lt; 2 * pt &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; pt * 2 &amp;lt;&amp;lt; endl; // afiseaza la consola ( 2, 6 ) (2, 6)&lt;br /&gt;
&lt;br /&gt;
    // folosirea operatorului [] supraincarcat.&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;x pt[0]=&amp;quot; &amp;lt;&amp;lt; pt[0] &amp;lt;&amp;lt; &amp;quot;; y pt[1]=&amp;quot; &amp;lt;&amp;lt; pt[1] &amp;lt;&amp;lt; endl;&lt;br /&gt;
    pt[0] = 5;&lt;br /&gt;
    pt[1] = 5;&lt;br /&gt;
    &lt;br /&gt;
    pt2 = pt;&lt;br /&gt;
    &lt;br /&gt;
    // Folosirea operatorului + si - supraincarcate si a constructorului&lt;br /&gt;
    // cu un singur parametru double. Avantajul e ca logica + e definita&lt;br /&gt;
    // intr-un singur loc. Dezavantajul e chemarea transparenta a constructorului&lt;br /&gt;
    // si creerea unui obiect temporar.&lt;br /&gt;
    pt2 = pt2 - 2; // echivalent cu: pt2.-(MyPoint(2))&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
    &lt;br /&gt;
    pt2 = 2 + pt2; // echivalent cu: pt2 = MyPoint(2).+(pt2);&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
    pt2 = pt2 + pt2; // echivalent cu: pt2.+(pt2)&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt2 &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Versiunea originală de [[User:Radubolovan|Radu Bolovan]] 12:04, 22 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Raptor&amp;diff=2793</id>
		<title>User:Raptor</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Raptor&amp;diff=2793"/>
				<updated>2006-09-10T11:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Bogdan Mustiata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bogdan Mustiata==&lt;br /&gt;
In anumite medii numele utilizatorului pe care Bogdan Mustiata il foloseste poate fi si raptor360.&lt;br /&gt;
&lt;br /&gt;
===Contact===&lt;br /&gt;
*Telefon: '''0746-522655'''&lt;br /&gt;
&lt;br /&gt;
*E-mail: '''bogdan.mustiata arond gmail.com'''&lt;br /&gt;
&lt;br /&gt;
===Interese===&lt;br /&gt;
*Programare C++/Java generala.&lt;br /&gt;
&lt;br /&gt;
*Servere concurente C/C++/Java pentru arhitecturi distribuite si/sau multiprocesor pentru sisteme UNIX.&lt;br /&gt;
&lt;br /&gt;
*bash si perl scripting.&lt;br /&gt;
&lt;br /&gt;
*Grafica cu GIMP.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Raptor&amp;diff=2792</id>
		<title>User:Raptor</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Raptor&amp;diff=2792"/>
				<updated>2006-09-10T11:04:27Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bogdan Mustiata==&lt;br /&gt;
In anumite medii numele utilizatorului pe care Bogdan Mustiata il foloseste poate fi si [[raptor360]]&lt;br /&gt;
&lt;br /&gt;
===Contact===&lt;br /&gt;
*Telefon: '''0746-522655'''&lt;br /&gt;
&lt;br /&gt;
*E-mail: '''bogdan.mustiata arond gmail.com'''&lt;br /&gt;
&lt;br /&gt;
===Interese===&lt;br /&gt;
*Programare C++/Java generala.&lt;br /&gt;
&lt;br /&gt;
*Servere concurente C/C++/Java pentru arhitecturi distribuite si/sau multiprocesor pentru sisteme UNIX.&lt;br /&gt;
&lt;br /&gt;
*bash si perl scripting.&lt;br /&gt;
&lt;br /&gt;
*Grafica cu GIMP.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Scripturi_BASH&amp;diff=2790</id>
		<title>Talk:Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Scripturi_BASH&amp;diff=2790"/>
				<updated>2006-09-05T11:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Despre corecturi si adaugiri ==&lt;br /&gt;
&lt;br /&gt;
* Am rezolvat cu 'bulibaseala' (doua 'revert'-uri si doua 'edit'-uri si gata) si acum articolul tau e la locul sau. Am aranjat nitel si formatarea. [[User:Csdexter|@Dexter]] 23:50, 24 November 2005 (EET)&lt;br /&gt;
* Il rugam pe [[User:194.150.217.197]] sa se abtina, pe viitor, de la adnotari gresite. &amp;lt;tt&amp;gt;df -h&amp;lt;/tt&amp;gt; scoate linii de forma ''&amp;amp;lt;cifra&amp;amp;gt;&amp;amp;lt;unitate-de-masura&amp;amp;gt; &amp;amp;lt;nume-director&amp;amp;gt;'' facand sortarea in ordinea (descrescatoare) a marimii imposibila. [[User:Csdexter|@Dexter]] 10:40, 29 November 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru corectura de sintaxa Wiki facuta. [[User:Csdexter|@Dexter]] 02:32, 27 December 2005 (EET)&lt;br /&gt;
* În ''[[Scripturi BASH#Cautarea unui fisier ce contine un anumit string|cautarea unui fisier ce contine un anumit string]]'' asterixul este inutil pentru că &amp;lt;tt&amp;gt;grep -r&amp;lt;/tt&amp;gt; tocmai aia face, search recursiv, şi nu are sens să se expandeze primul nivel al recursiei ca şi parametrii pentru grep. [[User:Raptor360|Raptor360]] 15:06, 29 December 2005 (EET)&lt;br /&gt;
* (Ti-am aranjat eu legatura ca sa bata chiar in text) Corect, mai ales ca glob-expansion-ul primului nivel ar putea genera un sir mai mare de 32kB cat e limita argumentelor de pe linia de comanda in Linux. Good catch &amp;amp;&amp;amp; thank you! [[User:Csdexter|@Dexter]] 23:34, 29 December 2005 (EET)&lt;br /&gt;
* La exemplul cu find .. -exec rm, nu are sens sa stergem fisier cu fisier, ci sa facem blocuri cu ajutorul lui xargs si sa le stergem astfel. [[User:Raptor360|Raptor360]] 14:03, 5 September 2006 (EEST)&lt;br /&gt;
* As modifica si &amp;quot;Cautarea unui fisier ce contine un anumit string&amp;quot; in acelasi stil... intrucat are aceeasi problema. De ce sa lansez grep de 1000 de ori pentru 1000 de fisiere in loc de 50 de ori pentru 1000 de fisiere? [[User:Raptor360|Raptor360]] 14:07, 5 September 2006 (EEST)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Scripturi_BASH&amp;diff=2789</id>
		<title>Talk:Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Scripturi_BASH&amp;diff=2789"/>
				<updated>2006-09-05T11:03:25Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre corecturi si adaugiri */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Despre corecturi si adaugiri ==&lt;br /&gt;
&lt;br /&gt;
* Am rezolvat cu 'bulibaseala' (doua 'revert'-uri si doua 'edit'-uri si gata) si acum articolul tau e la locul sau. Am aranjat nitel si formatarea. [[User:Csdexter|@Dexter]] 23:50, 24 November 2005 (EET)&lt;br /&gt;
* Il rugam pe [[User:194.150.217.197]] sa se abtina, pe viitor, de la adnotari gresite. &amp;lt;tt&amp;gt;df -h&amp;lt;/tt&amp;gt; scoate linii de forma ''&amp;amp;lt;cifra&amp;amp;gt;&amp;amp;lt;unitate-de-masura&amp;amp;gt; &amp;amp;lt;nume-director&amp;amp;gt;'' facand sortarea in ordinea (descrescatoare) a marimii imposibila. [[User:Csdexter|@Dexter]] 10:40, 29 November 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru corectura de sintaxa Wiki facuta. [[User:Csdexter|@Dexter]] 02:32, 27 December 2005 (EET)&lt;br /&gt;
* În ''[[Scripturi BASH#Cautarea unui fisier ce contine un anumit string|cautarea unui fisier ce contine un anumit string]]'' asterixul este inutil pentru că &amp;lt;tt&amp;gt;grep -r&amp;lt;/tt&amp;gt; tocmai aia face, search recursiv, şi nu are sens să se expandeze primul nivel al recursiei ca şi parametrii pentru grep. [[User:Raptor360|Raptor360]] 15:06, 29 December 2005 (EET)&lt;br /&gt;
* (Ti-am aranjat eu legatura ca sa bata chiar in text) Corect, mai ales ca glob-expansion-ul primului nivel ar putea genera un sir mai mare de 32kB cat e limita argumentelor de pe linia de comanda in Linux. Good catch &amp;amp;&amp;amp; thank you! [[User:Csdexter|@Dexter]] 23:34, 29 December 2005 (EET)&lt;br /&gt;
* La exemplul cu find .. -exec rm, nu are sens sa stergem fisier cu fisier, ci sa facem blocuri cu ajutorul lui xargs si sa le stergem astfel. [[User:Raptor360|Raptor360]] 14:03, 5 September 2006 (EEST)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2788</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2788"/>
				<updated>2006-09-05T11:00:59Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: Optimizare pentru viteza. Nu stergem fisier cu fisier ci cate 20.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Scripturi care permit schimbarea rapida a MAC+IP ===&lt;br /&gt;
&lt;br /&gt;
[[User:Raptor360|Raptor360]] 12:33, 8 June 2006 (EEST)&lt;br /&gt;
&lt;br /&gt;
====getmac====&lt;br /&gt;
&lt;br /&gt;
Primeste ca parametru un IP si returneaza MAC-ul acestuia sau &amp;quot;&amp;quot; daca nu exista in retea nodul cu pricina.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/getmac''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mac=`arping -I $IFDEVICE $1 -c 3 | grep reply | cut -f2 -d\[ | cut -f1 -d\] | uniq`&lt;br /&gt;
echo $mac&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====be====&lt;br /&gt;
Primeste ca parametru un IP si schimba MAC-ul si IP-ul pentru un device.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/be''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
gip=`echo -e &amp;quot;$1\t&amp;quot;`&lt;br /&gt;
echo -e &amp;quot; IP is $1.&amp;quot;&lt;br /&gt;
mac=`cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2`&lt;br /&gt;
echo -e &amp;quot;MAC is $mac.&amp;quot;&lt;br /&gt;
if [[ $mac != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
        ifconfig $IFDEVICE down&lt;br /&gt;
        ifconfig $IFDEVICE hw ether $mac&lt;br /&gt;
        ifconfig $IFDEVICE $1 netmask 255.255.248.0 broadcast 10.10.17.255&lt;br /&gt;
        route add default gw 10.10.17.1&lt;br /&gt;
        # echo &amp;quot;nameserver 10.10.17.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;$1 has not an associated MAC.&amp;quot;&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====switchuser==== &lt;br /&gt;
&lt;br /&gt;
Schimba MAC-ul si IP-ul aleator conform unuia stocat in /etc/stored folosind scripturile anterioare.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/switchuser''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
notfound=1&lt;br /&gt;
while [[ $notfound -eq 1 ]]; do&lt;br /&gt;
        rip=`echo &amp;quot;$RANDOM % 252 + 3&amp;quot; | bc`&lt;br /&gt;
        for i in `seq $rip 254`; do&lt;br /&gt;
                randip=&amp;quot;10.10.17.$i&amp;quot;&lt;br /&gt;
                gip=`echo -e &amp;quot;$randip\t&amp;quot;`&lt;br /&gt;
                if [[ `cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2` != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                        if [[ `getmac $randip` == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                                be $randip&lt;br /&gt;
                                exit 0&lt;br /&gt;
                                notfound=1&lt;br /&gt;
                        else&lt;br /&gt;
                                echo &amp;quot;IP $randip is already active.&amp;quot;&lt;br /&gt;
                        fi&lt;br /&gt;
                else&lt;br /&gt;
                        echo &amp;quot;$randip has no MAC associated.&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        done&lt;br /&gt;
done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scripturile folosesc fisierul de configurare ''/etc/stored'' in care se adauga perechi de forma: IP\tMAC, e.g. &amp;lt;code&amp;gt;10.10.17.241    00:20:ED:95:2A:A1&lt;br /&gt;
10.10.17.242    4C:00:10:53:BF:A5&amp;lt;/code&amp;gt; precum si variabila din enviroment IFDEVICE daca este definita. e.g. daca vrem sa schimbam ip-ul doar pentru device-ul eth1 atunci apelam la:&lt;br /&gt;
&amp;lt;code&amp;gt;# IFDEVICE=eth1 switchuser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script care lanseaza in fundal o anumita comanda data ca parametru de intrare ===&lt;br /&gt;
Puteti lasa o comanda sa se execute in fundal fara ca ea sa fie intrerupta la&lt;br /&gt;
iesirea dumneavoastra din sistem folosind urmatorul script pe care l-am numit&lt;br /&gt;
silent. (output-ul nu este salvat, pentru aceasta puteti folosi nohup)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Executing \&amp;quot;$*\&amp;quot;&amp;quot;&lt;br /&gt;
setsid bash -c $* 2&amp;gt;&amp;gt;/dev/null 1&amp;gt;&amp;gt;/dev/null &amp;lt; /dev/null &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriptul il puteti folosi de exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ silent wget -c -t 0 www.bigfiles.com/ubuntu.iso&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Bind zone remove script&lt;br /&gt;
#&lt;br /&gt;
# Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
if [ ! $# = 1 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
    echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
    		 else&lt;br /&gt;
	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
	&lt;br /&gt;
	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	else&lt;br /&gt;
		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	fi&lt;br /&gt;
	rm -f temp&lt;br /&gt;
	exit&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;lt;string&amp;gt;&amp;quot;  '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
sau&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Daca doriti ca in output-ul comenzii &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; expresia cautata sa fie cautata sa fie evidentiata puteti folosi parametrul &amp;lt;tt&amp;gt;--color&amp;lt;/tt&amp;gt; astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep --color -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*~&amp;quot; | xargs -n 20 rm -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gasirea fisierelor duplicate intr-un director ===&lt;br /&gt;
Aveti prea multe mp3-uri si majoritatea sunt duplicate dar cu alt nume sau orice de genul folositi scriptul de mai jos:D Eventual adaugati si un -maxdepth 1 sa nu fie recursiv.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ ! -d &amp;quot;$1&amp;quot; ]; then &lt;br /&gt;
  echo &amp;quot;Usage $0 &amp;lt;dir&amp;gt;&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
find &amp;quot;$1&amp;quot; -type f -print0 |   xargs -0 -n1 md5sum |     sort --key=1,32 | uniq -w 32 -d --all-repeated=prepend \&lt;br /&gt;
                                     |cut -f3- -d' '|sed 's/^$/Fisiere identice:/'&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Calcularea recordului de uptime ===&lt;br /&gt;
&lt;br /&gt;
Scriptul urmator va trebui plasat in crontab astfel incat sa ruleze periodic, de exemplu, din ora in ora. El va afisa in fisierul ''$output'' (initial ''/var/log/uptimeRecord.log'') output-ul comenzilor ''uptime'' si ''date'' (adica uptime-ul record si data la care a fost inregistrat).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Copyright (C) 2006 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
output='/var/log/uptimeRecord.log'&lt;br /&gt;
&lt;br /&gt;
function compareHrs&lt;br /&gt;
{&lt;br /&gt;
        uptimeCurentOre=`uptime | awk '{print $5}'`&lt;br /&gt;
        uptimeRecordOre=`cat $output | head -1 | awk '{print $5}'`&lt;br /&gt;
        if [ `expr length $uptimeCurentOre` \&amp;gt; `expr length $uptimeRecordOre` ]; then&lt;br /&gt;
#               echo Nou record - Uptime curent mai mare cu cateva ore decat uptime-ul record 1&lt;br /&gt;
                uptime &amp;gt; $output&lt;br /&gt;
                date &amp;gt;&amp;gt; $output&lt;br /&gt;
        else&lt;br /&gt;
                if [ `expr length $uptimeCurentOre` == `expr length $uptimeRecordOre` ]; then&lt;br /&gt;
                        uptimeCurentOra=`echo $uptimeCurentOre | cut -d&amp;quot;:&amp;quot; -f1`&lt;br /&gt;
                        uptimeRecordOra=`echo $uptimeRecordOre | cut -d&amp;quot;:&amp;quot; -f1`&lt;br /&gt;
                        if [ $uptimeCurentOra -gt $uptimeRecordOra ]; then&lt;br /&gt;
#                               echo Nou record - Uptime curent mai mare cu cateva ore decat uptime-ul record 2&lt;br /&gt;
                                uptime &amp;gt; $output&lt;br /&gt;
                                date &amp;gt;&amp;gt; $output&lt;br /&gt;
                        fi&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ -a $output ]; then&lt;br /&gt;
        uptimeCurent=`uptime`&lt;br /&gt;
        uptimeRecord=`cat $output | head -1`&lt;br /&gt;
        if [ `echo $uptimeCurent | grep -c day` == '0' ]; then&lt;br /&gt;
#               echo Uptime mai mic de o zi&lt;br /&gt;
                if [ `echo $uptimeRecord | grep -c day` == '0' ]; then&lt;br /&gt;
#                       echo Uptime record mai mic de o zi, comparam orele&lt;br /&gt;
                        compareHrs&lt;br /&gt;
#               else&lt;br /&gt;
#                       echo Uptime record mai mare ca uptime curent&lt;br /&gt;
                fi&lt;br /&gt;
        else&lt;br /&gt;
#               echo Uptime mai mare de o zi&lt;br /&gt;
                if [ `echo $uptimeRecord | grep -c day` == '0' ]; then&lt;br /&gt;
#                       echo Uptime record mai mic de o zi&lt;br /&gt;
                        uptime &amp;gt; $output&lt;br /&gt;
                        date &amp;gt;&amp;gt; $output&lt;br /&gt;
                else&lt;br /&gt;
                        uptimeCurentZile=`uptime | awk '{print $3}'`&lt;br /&gt;
                        uptimeRecordZile=`cat $output | head -1 | awk '{print $3}'`&lt;br /&gt;
                        if [ $uptimeCurentZile -eq $uptimeRecordZile ]; then&lt;br /&gt;
#                               echo Uptime in zile egal&lt;br /&gt;
                                compareHrs&lt;br /&gt;
                        else&lt;br /&gt;
                                if [ $uptimeCurentZile -gt $uptimeRecordZile ]; then&lt;br /&gt;
#                                       echo Record nou&lt;br /&gt;
                                        uptime &amp;gt; $output&lt;br /&gt;
                                        date &amp;gt;&amp;gt; $output&lt;br /&gt;
                                fi&lt;br /&gt;
                        fi&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
else&lt;br /&gt;
#       echo Fisierul nu exista, deci trebuie creat. Recordul e uptime-ul curent&lt;br /&gt;
        uptime &amp;gt; $output&lt;br /&gt;
        date &amp;gt;&amp;gt; $output&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2783</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2783"/>
				<updated>2006-08-23T15:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abordarea urmatoare este orientata spre rezolvarea anumitor probleme, nicidecum nu incearca pomenirea tutoror setarilor astfel incat sa se trateze exhaustiv posibilitatile de configurare oferite de vim. Daca as incerca sa tratez toate posibilitatile aceasta ar fi help.txt din vim, si nu ar mai fi vorba de setari existentiale, nu? Exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&lt;br /&gt;
:set t_ku=^[OA&lt;br /&gt;
:set t_kd=^[OB&lt;br /&gt;
:set t_kl=^[OD&lt;br /&gt;
:set t_kr=^[OC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor cursorului sa urce.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse. In cazul in care nu aveti instalate fisierele ce contin sintaxa ar fi mai bine sa eliminati aceasta linie intrucat la deschiderea fiecarui fisier va va da intai o eroare intrucat nu gaseste fisierul de sintaxa.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;br /&gt;
&lt;br /&gt;
=== set t_ku=^[OA, ... ===&lt;br /&gt;
&lt;br /&gt;
Up, Down, Left, Right... Aceasta setare este pentru sistemele UNIX mai dubioase (gen Solaris de exemplu) pentru care tastele cursor (cele cu sageti) nu mai functioneaza in mod normal (de exemplu afiseaza litere A, B, C, D). Atunci tot ce trebuie sa faceti este sa le setati. In vim nu veti scrie caracterele ^ sau [ ci in timp ce editati ''.vimrc'' (deci nu copiati fisierul de mai sus adliteram):&lt;br /&gt;
&amp;lt;code&amp;gt;:set t_ku=&amp;lt;Ctrl+V&amp;gt;&amp;lt;Sageata Sus&amp;gt;&amp;lt;Enter&amp;gt;&amp;lt;/code&amp;gt; si ar trebui sa vedeti pe ecran ceva in genul:&lt;br /&gt;
&amp;lt;code&amp;gt;:set t_ku=^[OA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips'n'Tricks]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2717</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2717"/>
				<updated>2006-06-08T09:36:45Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* be */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Scripturi care permit schimbarea rapida a MAC+IP ===&lt;br /&gt;
&lt;br /&gt;
[[User:Raptor360|Raptor360]] 12:33, 8 June 2006 (EEST)&lt;br /&gt;
&lt;br /&gt;
====getmac====&lt;br /&gt;
&lt;br /&gt;
Primeste ca parametru un IP si returneaza MAC-ul acestuia sau &amp;quot;&amp;quot; daca nu exista in retea nodul cu pricina.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/getmac''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mac=`arping -I $IFDEVICE $1 -c 3 | grep reply | cut -f2 -d\[ | cut -f1 -d\] | uniq`&lt;br /&gt;
echo $mac&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====be====&lt;br /&gt;
Primeste ca parametru un IP si schimba MAC-ul si IP-ul pentru un device.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/be''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
gip=`echo -e &amp;quot;$1\t&amp;quot;`&lt;br /&gt;
echo -e &amp;quot; IP is $1.&amp;quot;&lt;br /&gt;
mac=`cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2`&lt;br /&gt;
echo -e &amp;quot;MAC is $mac.&amp;quot;&lt;br /&gt;
if [[ $mac != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
        ifconfig $IFDEVICE down&lt;br /&gt;
        ifconfig $IFDEVICE hw ether $mac&lt;br /&gt;
        ifconfig $IFDEVICE $1 netmask 255.255.248.0 broadcast 10.10.17.255&lt;br /&gt;
        route add default gw 10.10.17.1&lt;br /&gt;
        # echo &amp;quot;nameserver 10.10.17.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;$1 has not an associated MAC.&amp;quot;&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====switchuser==== &lt;br /&gt;
&lt;br /&gt;
Schimba MAC-ul si IP-ul aleator conform unuia stocat in /etc/stored folosind scripturile anterioare.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/switchuser''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
notfound=1&lt;br /&gt;
while [[ $notfound -eq 1 ]]; do&lt;br /&gt;
        rip=`echo &amp;quot;$RANDOM % 252 + 3&amp;quot; | bc`&lt;br /&gt;
        for i in `seq $rip 254`; do&lt;br /&gt;
                randip=&amp;quot;10.10.17.$i&amp;quot;&lt;br /&gt;
                gip=`echo -e &amp;quot;$randip\t&amp;quot;`&lt;br /&gt;
                if [[ `cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2` != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                        if [[ `getmac $randip` == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                                be $randip&lt;br /&gt;
                                exit 0&lt;br /&gt;
                                notfound=1&lt;br /&gt;
                        else&lt;br /&gt;
                                echo &amp;quot;IP $randip is already active.&amp;quot;&lt;br /&gt;
                        fi&lt;br /&gt;
                else&lt;br /&gt;
                        echo &amp;quot;$randip has no MAC associated.&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        done&lt;br /&gt;
done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scripturile folosesc fisierul de configurare ''/etc/stored'' in care se adauga perechi de forma: IP\tMAC, e.g. &amp;lt;code&amp;gt;10.10.17.241    00:20:ED:95:2A:A1&lt;br /&gt;
10.10.17.242    4C:00:10:53:BF:A5&amp;lt;/code&amp;gt; precum si variabila din enviroment IFDEVICE daca este definita. e.g. daca vrem sa schimbam ip-ul doar pentru device-ul eth1 atunci apelam la:&lt;br /&gt;
&amp;lt;code&amp;gt;# IFDEVICE=eth1 switchuser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script care lanseaza in fundal o anumita comanda data ca parametru de intrare ===&lt;br /&gt;
Puteti lasa o comanda sa se execute in fundal fara ca ea sa fie intrerupta la&lt;br /&gt;
iesirea dumneavoastra din sistem folosind urmatorul script pe care l-am numit&lt;br /&gt;
silent. (output-ul nu este salvat, pentru aceasta puteti folosi nohup)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Executing \&amp;quot;$*\&amp;quot;&amp;quot;&lt;br /&gt;
setsid bash -c $* 2&amp;gt;&amp;gt;/dev/null 1&amp;gt;&amp;gt;/dev/null &amp;lt; /dev/null &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriptul il puteti folosi de exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ silent wget -c -t 0 www.bigfiles.com/ubuntu.iso&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Bind zone remove script&lt;br /&gt;
#&lt;br /&gt;
# Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
if [ ! $# = 1 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
    echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
    		 else&lt;br /&gt;
	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
	&lt;br /&gt;
	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	else&lt;br /&gt;
		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	fi&lt;br /&gt;
	rm -f temp&lt;br /&gt;
	exit&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;lt;string&amp;gt;&amp;quot;  '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
sau&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Daca doriti ca in output-ul comenzii &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; expresia cautata sa fie cautata sa fie evidentiata puteti folosi parametrul &amp;lt;tt&amp;gt;--color&amp;lt;/tt&amp;gt; astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep --color -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*~&amp;quot; -exec rm -f '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2716</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2716"/>
				<updated>2006-06-08T09:34:50Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Scripturi care permite schimbarea rapida a MAC+IP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Scripturi care permit schimbarea rapida a MAC+IP ===&lt;br /&gt;
&lt;br /&gt;
[[User:Raptor360|Raptor360]] 12:33, 8 June 2006 (EEST)&lt;br /&gt;
&lt;br /&gt;
====getmac====&lt;br /&gt;
&lt;br /&gt;
Primeste ca parametru un IP si returneaza MAC-ul acestuia sau &amp;quot;&amp;quot; daca nu exista in retea nodul cu pricina.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/getmac''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mac=`arping -I $IFDEVICE $1 -c 3 | grep reply | cut -f2 -d\[ | cut -f1 -d\] | uniq`&lt;br /&gt;
echo $mac&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====be====&lt;br /&gt;
&lt;br /&gt;
 Primeste ca parametru un IP si schimba MAC-ul + IP-ul pentru un device.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/be''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
gip=`echo -e &amp;quot;$1\t&amp;quot;`&lt;br /&gt;
echo -e &amp;quot; IP is $1.&amp;quot;&lt;br /&gt;
mac=`cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2`&lt;br /&gt;
echo -e &amp;quot;MAC is $mac.&amp;quot;&lt;br /&gt;
if [[ $mac != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
        ifconfig $IFDEVICE down&lt;br /&gt;
        ifconfig $IFDEVICE hw ether $mac&lt;br /&gt;
        ifconfig $IFDEVICE $1 netmask 255.255.248.0 broadcast 10.10.17.255&lt;br /&gt;
        route add default gw 10.10.17.1&lt;br /&gt;
        # echo &amp;quot;nameserver 10.10.17.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;$1 has not an associated MAC.&amp;quot;&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====switchuser==== &lt;br /&gt;
&lt;br /&gt;
Schimba MAC-ul si IP-ul aleator conform unuia stocat in /etc/stored folosind scripturile anterioare.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/switchuser''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
notfound=1&lt;br /&gt;
while [[ $notfound -eq 1 ]]; do&lt;br /&gt;
        rip=`echo &amp;quot;$RANDOM % 252 + 3&amp;quot; | bc`&lt;br /&gt;
        for i in `seq $rip 254`; do&lt;br /&gt;
                randip=&amp;quot;10.10.17.$i&amp;quot;&lt;br /&gt;
                gip=`echo -e &amp;quot;$randip\t&amp;quot;`&lt;br /&gt;
                if [[ `cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2` != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                        if [[ `getmac $randip` == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                                be $randip&lt;br /&gt;
                                exit 0&lt;br /&gt;
                                notfound=1&lt;br /&gt;
                        else&lt;br /&gt;
                                echo &amp;quot;IP $randip is already active.&amp;quot;&lt;br /&gt;
                        fi&lt;br /&gt;
                else&lt;br /&gt;
                        echo &amp;quot;$randip has no MAC associated.&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        done&lt;br /&gt;
done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scripturile folosesc fisierul de configurare ''/etc/stored'' in care se adauga perechi de forma: IP\tMAC, e.g. &amp;lt;code&amp;gt;10.10.17.241    00:20:ED:95:2A:A1&lt;br /&gt;
10.10.17.242    4C:00:10:53:BF:A5&amp;lt;/code&amp;gt; precum si variabila din enviroment IFDEVICE daca este definita. e.g. daca vrem sa schimbam ip-ul doar pentru device-ul eth1 atunci apelam la:&lt;br /&gt;
&amp;lt;code&amp;gt;# IFDEVICE=eth1 switchuser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script care lanseaza in fundal o anumita comanda data ca parametru de intrare ===&lt;br /&gt;
Puteti lasa o comanda sa se execute in fundal fara ca ea sa fie intrerupta la&lt;br /&gt;
iesirea dumneavoastra din sistem folosind urmatorul script pe care l-am numit&lt;br /&gt;
silent. (output-ul nu este salvat, pentru aceasta puteti folosi nohup)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Executing \&amp;quot;$*\&amp;quot;&amp;quot;&lt;br /&gt;
setsid bash -c $* 2&amp;gt;&amp;gt;/dev/null 1&amp;gt;&amp;gt;/dev/null &amp;lt; /dev/null &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriptul il puteti folosi de exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ silent wget -c -t 0 www.bigfiles.com/ubuntu.iso&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Bind zone remove script&lt;br /&gt;
#&lt;br /&gt;
# Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
if [ ! $# = 1 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
    echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
    		 else&lt;br /&gt;
	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
	&lt;br /&gt;
	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	else&lt;br /&gt;
		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	fi&lt;br /&gt;
	rm -f temp&lt;br /&gt;
	exit&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;lt;string&amp;gt;&amp;quot;  '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
sau&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Daca doriti ca in output-ul comenzii &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; expresia cautata sa fie cautata sa fie evidentiata puteti folosi parametrul &amp;lt;tt&amp;gt;--color&amp;lt;/tt&amp;gt; astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep --color -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*~&amp;quot; -exec rm -f '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2715</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2715"/>
				<updated>2006-06-08T09:33:56Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Scripturi care permite schimbarea rapida a MAC+IP ===&lt;br /&gt;
&lt;br /&gt;
[[User:Raptor360|Raptor360]] 12:33, 8 June 2006 (EEST)&lt;br /&gt;
&lt;br /&gt;
====getmac====&lt;br /&gt;
&lt;br /&gt;
Primeste ca parametru un IP si returneaza MAC-ul acestuia sau &amp;quot;&amp;quot; daca nu exista in retea nodul cu pricina.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/getmac''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
mac=`arping -I $IFDEVICE $1 -c 3 | grep reply | cut -f2 -d\[ | cut -f1 -d\] | uniq`&lt;br /&gt;
echo $mac&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====be====&lt;br /&gt;
&lt;br /&gt;
 Primeste ca parametru un IP si schimba MAC-ul + IP-ul pentru un device.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/be''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ ! $IFDEVICE ]]; then&lt;br /&gt;
        IFDEVICE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
gip=`echo -e &amp;quot;$1\t&amp;quot;`&lt;br /&gt;
echo -e &amp;quot; IP is $1.&amp;quot;&lt;br /&gt;
mac=`cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2`&lt;br /&gt;
echo -e &amp;quot;MAC is $mac.&amp;quot;&lt;br /&gt;
if [[ $mac != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
        ifconfig $IFDEVICE down&lt;br /&gt;
        ifconfig $IFDEVICE hw ether $mac&lt;br /&gt;
        ifconfig $IFDEVICE $1 netmask 255.255.248.0 broadcast 10.10.17.255&lt;br /&gt;
        route add default gw 10.10.17.1&lt;br /&gt;
        # echo &amp;quot;nameserver 10.10.17.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
else&lt;br /&gt;
        echo &amp;quot;$1 has not an associated MAC.&amp;quot;&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====switchuser==== &lt;br /&gt;
&lt;br /&gt;
Schimba MAC-ul si IP-ul aleator conform unuia stocat in /etc/stored folosind scripturile anterioare.&lt;br /&gt;
&lt;br /&gt;
''/usr/local/bin/switchuser''&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
notfound=1&lt;br /&gt;
while [[ $notfound -eq 1 ]]; do&lt;br /&gt;
        rip=`echo &amp;quot;$RANDOM % 252 + 3&amp;quot; | bc`&lt;br /&gt;
        for i in `seq $rip 254`; do&lt;br /&gt;
                randip=&amp;quot;10.10.17.$i&amp;quot;&lt;br /&gt;
                gip=`echo -e &amp;quot;$randip\t&amp;quot;`&lt;br /&gt;
                if [[ `cat /etc/stored | grep &amp;quot;$gip&amp;quot; | cut -f2` != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                        if [[ `getmac $randip` == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
                                be $randip&lt;br /&gt;
                                exit 0&lt;br /&gt;
                                notfound=1&lt;br /&gt;
                        else&lt;br /&gt;
                                echo &amp;quot;IP $randip is already active.&amp;quot;&lt;br /&gt;
                        fi&lt;br /&gt;
                else&lt;br /&gt;
                        echo &amp;quot;$randip has no MAC associated.&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        done&lt;br /&gt;
done&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scripturile folosesc fisierul de configurare ''/etc/stored'' in care se adauga perechi de forma: IP\tMAC, e.g. &amp;lt;code&amp;gt;10.10.17.241    00:20:ED:95:2A:A1&lt;br /&gt;
10.10.17.242    4C:00:10:53:BF:A5&amp;lt;/code&amp;gt; precum si variabila din enviroment IFDEVICE daca este definita. e.g. daca vrem sa schimbam ip-ul doar pentru device-ul eth1 atunci apelam la:&lt;br /&gt;
&amp;lt;code&amp;gt;# IFDEVICE=eth1 switchuser &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script care lanseaza in fundal o anumita comanda data ca parametru de intrare ===&lt;br /&gt;
Puteti lasa o comanda sa se execute in fundal fara ca ea sa fie intrerupta la&lt;br /&gt;
iesirea dumneavoastra din sistem folosind urmatorul script pe care l-am numit&lt;br /&gt;
silent. (output-ul nu este salvat, pentru aceasta puteti folosi nohup)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Executing \&amp;quot;$*\&amp;quot;&amp;quot;&lt;br /&gt;
setsid bash -c $* 2&amp;gt;&amp;gt;/dev/null 1&amp;gt;&amp;gt;/dev/null &amp;lt; /dev/null &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriptul il puteti folosi de exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ silent wget -c -t 0 www.bigfiles.com/ubuntu.iso&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Bind zone remove script&lt;br /&gt;
#&lt;br /&gt;
# Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
if [ ! $# = 1 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
    echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
    		 else&lt;br /&gt;
	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
	&lt;br /&gt;
	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	else&lt;br /&gt;
		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	fi&lt;br /&gt;
	rm -f temp&lt;br /&gt;
	exit&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;lt;string&amp;gt;&amp;quot;  '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
sau&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Daca doriti ca in output-ul comenzii &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; expresia cautata sa fie cautata sa fie evidentiata puteti folosi parametrul &amp;lt;tt&amp;gt;--color&amp;lt;/tt&amp;gt; astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep --color -Hr &amp;quot;&amp;lt;string&amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*~&amp;quot; -exec rm -f '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Echivalentele_Linux_ale_programelor_Windows&amp;diff=2713</id>
		<title>Echivalentele Linux ale programelor Windows</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Echivalentele_Linux_ale_programelor_Windows&amp;diff=2713"/>
				<updated>2006-06-02T12:57:14Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Echivalentele Linux ale programelor Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Echivalentele Linux ale programelor Windows ==&lt;br /&gt;
&lt;br /&gt;
'''Scris de Ovidiu Lixandru'''&lt;br /&gt;
''17 Mai 2004''&lt;br /&gt;
&lt;br /&gt;
''Articolul este în curs de (re)scriere, cei care doresc să ajute sunt bineveniţi. [http://www.linux360.ro/portal2/migrare-de-pe-windows/migrare-de-pe-windows/echivalentele-linux-ale-programelor-windows.html Aici] aveţi articolul iniţial, articol ce trebuie transcris în format wiki.''&lt;br /&gt;
&lt;br /&gt;
Una dintre cele mai mari dificultati ale migrarii de la Microsoft&lt;br /&gt;
Windows la Linux este lipsa de cunostinte în ceea ce priveste&lt;br /&gt;
corespondentele software. Începatorii cauta de obicei echivalentele&lt;br /&gt;
software ale programelor de pe Windows, iar utilizatorii avansati nu le&lt;br /&gt;
pot raspunde deoarece nu stiu foarte multe despre sistemul de operare&lt;br /&gt;
Microsoft. Veti gasi mai jos o lista bazata pe experienta celor ce&lt;br /&gt;
utlizeaza ambele platforme.&lt;br /&gt;
&lt;br /&gt;
Desigur, lista nu se vrea a fi una exhaustiva. Ea cuprinde cele mai&lt;br /&gt;
populare domenii si programe folosite. Dar cum noi programe apar în&lt;br /&gt;
fiecare zi, Daca doriti sa contribuiti la aceasta lista, va rugam sa ne&lt;br /&gt;
lasati comentariul dvs. folosind forumularul din josul articolului si&lt;br /&gt;
vom modifica continutul articolului în concordanta. Comentariul trebuie&lt;br /&gt;
sa cuprinda numele programului de adaugat, sistemul de operare, o mica&lt;br /&gt;
descriere a sa si un link spre pagina de Internet a programului (daca o&lt;br /&gt;
stiti). Toate remarcile si corecturile sunt binevenite. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Descrierea programului&lt;br /&gt;
! Windows&lt;br /&gt;
! Linux&lt;br /&gt;
|- &lt;br /&gt;
| colspan=3 | 1) Networking&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Browser Web&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
# Internet Explorer&lt;br /&gt;
# Netscape / Mozilla&lt;br /&gt;
# [http://www.opera.com/ Opera]&lt;br /&gt;
# [http://www.mozilla.org/projects/firefox/ Firefox]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
# [http://www.netscape.com/ Netscape] / [http://www.mozilla.org/ Mozilla]&lt;br /&gt;
# [http://galeon.sourceforge.net/ Galeon]&lt;br /&gt;
# [http://www.konqueror.org/ Konqueror]&lt;br /&gt;
# [http://www.opera.com/products/desktop/index.dml?platform=linux Opera]&lt;br /&gt;
# [http://www.mozilla.org/projects/firefox/ Firefox]&lt;br /&gt;
# [http://www.gnome.org/projects/nautilus/ Nautilus]&lt;br /&gt;
# [http://epiphany.mozdev.org/ Epiphany]&lt;br /&gt;
# [http://atrey.karlin.mff.cuni.cz/%7Eclock/twibright/links/ Links] (cu opţiunea &amp;quot;-g&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | &amp;lt;hr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
Browser web în linie de comandă&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# Links&lt;br /&gt;
# Lynx&lt;br /&gt;
# Xemacs + w3&lt;br /&gt;
# DosLynx&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://atrey.karlin.mff.cuni.cz/%7Eclock/twibright/links/ Links]&lt;br /&gt;
# [http://elinks.or.cz/ ELinks]&lt;br /&gt;
# [http://lynx.browser.org/ Lynx]&lt;br /&gt;
# [http://w3m.sourceforge.net/ w3m]&lt;br /&gt;
# [http://www.xemacs.org/ Xemacs] + w3&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client de e-mail&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# Outlook Express&lt;br /&gt;
# Netscape / Mozilla&lt;br /&gt;
# The Bat&lt;br /&gt;
# Eudora&lt;br /&gt;
# Opera&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://ximian.com/products/evolution/ Evolution]&lt;br /&gt;
# [http://www.netscape.com/ Netscape] / [http://www.mozilla.org/ Mozilla Mail]&lt;br /&gt;
# [http://sylpheed.good-day.net/ Sylpheed] / [http://sylpheed-claws.sourceforge.net/ Sylpheed-claws]&lt;br /&gt;
# [http://kmail.kde.org/ Kmail]&lt;br /&gt;
# [http://balsa.gnome.org/ Balsa]&lt;br /&gt;
# [http://www.collaboration-world.com/gnumail/ Gnumail]&lt;br /&gt;
# Opera&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client de e-mail în stilul MS Outlook&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Outlook&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://ximian.com/products/evolution/ Evolution]&lt;br /&gt;
# [http://www.bynari.net/ Bynari Insight GroupWare Suite]&lt;br /&gt;
# [http://sourceforge.net/projects/aethera/ Aethera]&lt;br /&gt;
# [http://sylpheed.good-day.net/ Sylpheed]&lt;br /&gt;
# [http://sylpheed-claws.sourceforge.net/ Sylpheed-claws]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client de e-mail în stilul The Bat&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
The Bat&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://sylpheed.good-day.net/ Sylpheed]&lt;br /&gt;
# [http://sylpheed-claws.sourceforge.net/ Sylpheed-claws]&lt;br /&gt;
# [http://kmail.kde.org/ Kmail]&lt;br /&gt;
# [http://www.gnus.org/ Gnus]&lt;br /&gt;
# [http://balsa.gnome.org/ Balsa]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client de e-mail în linie de comandă&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.geocities.com/win32mutt/win32.html Mutt]&lt;br /&gt;
# Pine&lt;br /&gt;
# Pegasus&lt;br /&gt;
# [http://www.gnu.org/software/emacs/ Emacs]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.washington.edu/pine/ Pine]&lt;br /&gt;
# [http://mutt.org/ Mutt]&lt;br /&gt;
# [http://www.gnus.org/ Gnus]&lt;br /&gt;
# [http://www.instinct.org/elm/ Elm]&lt;br /&gt;
# [http://www.gnu.org/software/emacs/ Emacs]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client de ştiri&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://forteinc.com/agent/index.php Agent]&lt;br /&gt;
# Free Agent&lt;br /&gt;
# [http://xnews.newsguy.com/ Xnews]&lt;br /&gt;
# Outlook&lt;br /&gt;
# Netscape / Mozilla Mail&lt;br /&gt;
# [http://www.opera.com/ Opera]&lt;br /&gt;
# [http://sylpheed.good-day.net/ Sylpheed] / [http://sylpheed-claws.sourceforge.net/ Sylpheed-claws]&lt;br /&gt;
# Dialog&lt;br /&gt;
# Gravity&lt;br /&gt;
# [http://bnr2.org/ BNR2]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://knode.sourceforge.net/ Knode]&lt;br /&gt;
# [http://pan.rebelbase.com/ Pan]&lt;br /&gt;
# [http://home.wanadoo.nl/bram_s/newsleader NewsReader]&lt;br /&gt;
# [http://www.netscape.com/ Netscape] / [http://www.mozilla.org/ Mozilla Mail]&lt;br /&gt;
# [http://www.opera.com/products/desktop/index.dml?platform=linux Opera]&lt;br /&gt;
# [http://sylpheed.good-day.net/ Sylpheed] / [http://sf.net/projects/sylpheed-claws/ Sylpheed-claws]&lt;br /&gt;
Consolă:&lt;br /&gt;
# [http://www.washington.edu/pine/ Pine]&lt;br /&gt;
# [http://mutt.org/ Mutt]&lt;br /&gt;
# [http://www.gnus.org/ Gnus]&lt;br /&gt;
# [http://www.tin.org/ tin]&lt;br /&gt;
# [http://www.slrn.org/ slrn]&lt;br /&gt;
# [http://www.xemacs.org/ Xemacs]&lt;br /&gt;
# [http://bnr2.org/ BNR2]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Agendă de contacte&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Outlook&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://icewalkers.com/jump.php?AID=1406&amp;amp;src=home Rubrica]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Download manager&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# Flashget&lt;br /&gt;
# Go!zilla&lt;br /&gt;
# Reget&lt;br /&gt;
# Getright&lt;br /&gt;
# DAP&lt;br /&gt;
# [http://unxutils.sourceforge.net/ Wget]&lt;br /&gt;
# [http://millweed.com/projects/wackget/ WackGet]&lt;br /&gt;
# [http://www.geocities.com/SiliconValley/Vista/2865/md.htm Mass Downloader]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.krasu.ru/soft/chuchelo/ Downloader for X]&lt;br /&gt;
# [http://devel-home.kde.org/%7Ecaitoo/index.html Caitoo (fostul Kget)]&lt;br /&gt;
# [http://prozilla.delrom.ro/prozilla.html Prozilla]&lt;br /&gt;
# [http://wget.sunsite.dk/ Wget] (consolă, standard)&lt;br /&gt;
# GUI for Wget: [http://kmago.sourceforge.net/ Kmago], [http://gtm.sf.net/ Gnome Transfer Manager], QTget, Xget, ...&lt;br /&gt;
# [http://aria.rednoah.com/ Aria]&lt;br /&gt;
# [http://www.lintux.cx/axel.html Axel]&lt;br /&gt;
# Download Accelerator Plus&lt;br /&gt;
# [http://personal1.iddeo.es/andresgarci/getleft/english/download.html GetLeft]&lt;br /&gt;
# [http://lftp.yar.ru/ Lftp]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Download site-uri&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# Teleport Pro&lt;br /&gt;
# [http://www.httrack.com/ Httrack]&lt;br /&gt;
# [http://unxutils.sourceforge.net/ Wget]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.httrack.com/ Httrack]&lt;br /&gt;
# WWW Offline Explorer.&lt;br /&gt;
# [http://wget.sunsite.dk/ Wget] (consolă, standard). GUI: [http://kmago.sourceforge.net/ Kmago], QTget, Xget, ...&lt;br /&gt;
# [http://www.krasu.ru/soft/chuchelo/ Downloader for X]&lt;br /&gt;
# [http://www.idata.sk/%7Eondrej/pavuk/ Pavuk]&lt;br /&gt;
# [http://www.lyra.org/sitecopy/ XSiteCopy]&lt;br /&gt;
# [http://personal1.iddeo.es/andresgarci/getleft/english/download.html GetLeft]&lt;br /&gt;
# [http://curl.haxx.se/ Curl] (consolă).&lt;br /&gt;
# [http://icewalkers.com/jump.php?AID=1941&amp;amp;src=home Khttrack]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client FTP&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# Bullet Proof FTP&lt;br /&gt;
# CuteFTP&lt;br /&gt;
# WSFTP&lt;br /&gt;
# SmartFTP&lt;br /&gt;
# [http://sourceforge.net/projects/filezilla/ FileZilla]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://gftp.seul.org/ Gftp&lt;br /&gt;
# [http://www.konqueror.org/ Konqueror]&lt;br /&gt;
# [http://krusader.sourceforge.net/ Krusader]&lt;br /&gt;
# [http://kbear.sourceforge.net/ KBear]&lt;br /&gt;
# [http://www.iglooftp.com/unix/download.html IglooFTP] [Prop]&lt;br /&gt;
# [http://www.ayukov.com/nftp/index.html Nftp]&lt;br /&gt;
# [http://www.wxftp.seul.org/ Wxftp]&lt;br /&gt;
# AxyFTP.&lt;br /&gt;
# [http://www.ibiblio.org/mc/ mc] (cd ftp://...)&lt;br /&gt;
# [http://tkftp.firebird.cx/ tkFTP]&lt;br /&gt;
# [http://yafc.sourceforge.net/ Yafc]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client FTP în linie de comandă&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# FTP din Far&lt;br /&gt;
# ftp.exe&lt;br /&gt;
# [http://www.ncftpd.com/ncftp/ Ncftp]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.ncftpd.com/ncftp/ Ncftp]&lt;br /&gt;
# [http://lftp.yar.ru/ Lftp]&lt;br /&gt;
# [http://sourceforge.net/projects/avf/ Avfs. (din orice program: /#ftp:...)]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Client IRC&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# mIRC&lt;br /&gt;
# Klient&lt;br /&gt;
# VIRC&lt;br /&gt;
# Xircon&lt;br /&gt;
# Pirch&lt;br /&gt;
# [http://www.xchat.org/ Xchat]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.xchat.org/ Xchat]&lt;br /&gt;
# [http://www.kvirc.net/ KVirc]&lt;br /&gt;
# [http://www.irssi.org/ Irssi]&lt;br /&gt;
# [http://www.bitchx.org/ BitchX]&lt;br /&gt;
# Ksirc.&lt;br /&gt;
# [http://www.epicsol.org/ Epic]&lt;br /&gt;
# [http://www.iagora.com/%7Eespel/sirc.html Sirc]&lt;br /&gt;
# [http://www.pjirc.com/ PJIRC]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Clienţi de chat pentru LAN&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# QuickChat&lt;br /&gt;
# [http://www.akeni.com/product/lan.php Akeni]&lt;br /&gt;
# PonyChat&lt;br /&gt;
# iChat&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# talk (console), ktalk&lt;br /&gt;
# [http://www.akeni.com/product/lan.php Akeni]&lt;br /&gt;
# [http://freshmeat.net/redir/echat/41626/url_homepage/echat Echat]&lt;br /&gt;
# write, wall (chat between users of one machine)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Mesagerie locală cu maşini Windows&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
WinPopUp&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
smbclient (consolă).&lt;br /&gt;
GUI:&lt;br /&gt;
# [http://linpopup2.sourceforge.net/ LinPopUp 2]&lt;br /&gt;
# [http://www.henschelsoft.de/kpopup_en.html Kpopup]&lt;br /&gt;
# Kopete&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Clienţi de mesagerie instant&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# ICQ&lt;br /&gt;
# MSN Messenger&lt;br /&gt;
# [http://www.aim.com/ AIM]&lt;br /&gt;
# [http://www.yahoo.com/ Yahoo Messenger]&lt;br /&gt;
# Trillian&lt;br /&gt;
# [http://miranda-icq.sourceforge.net/ Miranda]&lt;br /&gt;
# [http://gaim.sourceforge.net/ Gaim]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://licq.org/ Licq (ICQ)]&lt;br /&gt;
# [http://konst.org.ua/centericq/ Centericq] (multiprotocol, consolă)&lt;br /&gt;
# [http://alicq.sourceforge.net/ Alicq] (ICQ)&lt;br /&gt;
# [http://www.micq.org/ Micq] (ICQ)&lt;br /&gt;
# GnomeICU (ICQ)&lt;br /&gt;
# [http://gaim.sourceforge.net/ Gaim] (multiprotocol)&lt;br /&gt;
# [http://freshmeat.net/projects/ayttm/ Ayttm] (multiprotocol)&lt;br /&gt;
# [http://kopete.kde.org/ Kopete]&lt;br /&gt;
# [http://www.everybuddy.com/ Everybuddy]&lt;br /&gt;
# [http://sim-icq.sourceforge.net/ Simple Instant Messenger]&lt;br /&gt;
# [http://download.cnet.com/downloads/0,10152,0-10145-110-8786881,00.html?gid=104653&amp;amp;tag=dlntl Imici Messenger]&lt;br /&gt;
# [http://ickle.sourceforge.net/ Ickle] (ICQ)&lt;br /&gt;
# [http://amsn.sourceforge.net/ aMSN] (MSN)&lt;br /&gt;
# Kmerlin (MSN)&lt;br /&gt;
# [http://kicq.sourceforge.net/kicq.shtml Kicq] (ICQ)&lt;br /&gt;
# [http://ysmv7.sourceforge.net/ YSM] (ICQ, consolă)&lt;br /&gt;
# [http://www.kxicq.org/ kxicq]&lt;br /&gt;
# [http://messenger.yahoo.com/messenger/download/unix.html Yahoo Messenger for Unix]&lt;br /&gt;
# [http://kmess.sourceforge.net/ Kmess] (MSN)&lt;br /&gt;
# [http://www.aim.com/ AIM]&lt;br /&gt;
# [http://freshmeat.net/redir/msnre/41829/url_homepage/msnre MSNre] (consolă)&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Clienţi Jabber&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.jabber.ru/projects/jajc/ JAJC]&lt;br /&gt;
# [http://www.jabber.ru/projects/tkabber/ Tkabber (+activestate tcl)]&lt;br /&gt;
# [http://psi.sourceforge.net/ Psi]&lt;br /&gt;
# [http://exodus.sourceforge.net/ Exodus]&lt;br /&gt;
# [http://winjab.sourceforge.net/ WinJab]&lt;br /&gt;
# myJabber&lt;br /&gt;
# RhymBox&lt;br /&gt;
# Rival&lt;br /&gt;
# Skabber&lt;br /&gt;
# TipicIM&lt;br /&gt;
# Vista&lt;br /&gt;
# Yabber&lt;br /&gt;
# [http://miranda-icq.sourceforge.net/ Miranda]&lt;br /&gt;
# [http://gaim.sourceforge.net/ Gaim]&lt;br /&gt;
# [http://www.akeni.com/product/jabber.php Akeni Messenger Jabber Edition]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.jabber.ru/projects/tkabber/ Tkabber]&lt;br /&gt;
# [http://gabber.sourceforge.net/ Gabber]&lt;br /&gt;
# [http://psi.sourceforge.net/ Psi]&lt;br /&gt;
# [http://gaim.sourceforge.net/ Gaim]&lt;br /&gt;
# [http://konst.org.ua/centericq/ Centericq] (consolă)&lt;br /&gt;
# [http://freshmeat.net/projects/ayttm/ Ayttm]&lt;br /&gt;
# [http://www.akeni.com/product/jabber.php Akeni Messenger Jabber Edition]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Monitorizarea căsuţe de e-mail şi grupuri de ştiri&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
[http://www.watznew.com/ WatzNew]&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://homemade.hypermart.net/websec/ Web Secretary]&lt;br /&gt;
# [http://apps.kde.com/rf/2/info/id/999 Knewsticker &amp;amp; korn]&lt;br /&gt;
# [http://www.mozilla.org/ Mozilla]&lt;br /&gt;
# watch -n seconds lynx -dump&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Conferinţe audio/video&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
NetMeeting&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.gnomemeeting.org/ GnomeMeeting]&lt;br /&gt;
# [http://www-nrg.ee.lbl.gov/ vat/vic/wb]&lt;br /&gt;
# [http://www-mice.cs.ucl.ac.uk/multimedia/software/ rat/wbd/nte]&lt;br /&gt;
# [http://www.cs.columbia.edu/IRT/software/nevot/ NeVoT]&lt;br /&gt;
# [http://www-sop.inria.fr/rodeo/ivs.html IVS]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Comunicaţii voce&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Speak Freely&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.fourmilab.ch/speakfree/unix/ Speak Freely for Unix]&lt;br /&gt;
# [http://www.teamspeak.org/ TeamSpeak]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Firewall (packet filtering)&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# BlackICE&lt;br /&gt;
# ATGuard&lt;br /&gt;
# ZoneAlarm&lt;br /&gt;
# Agnitum Outpost Firewall&lt;br /&gt;
# [http://www.kerio.com/ WinRoute Pro]&lt;br /&gt;
# Norton Internet Security&lt;br /&gt;
# [http://soho.sygate.com/products/pspf_ov.htm Sygate Personal Firewall PRO]&lt;br /&gt;
# Kerio Personal Firewall&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
iptables sau predecesorul lui, ipchains (consolă, standard). Front end-uri:&lt;br /&gt;
# [http://kmyfirewall.sourceforge.net/ Kmyfirewall]&lt;br /&gt;
# [http://morizot.net/firewall/ Easy Firewall Generator]&lt;br /&gt;
# [http://www.fwbuilder.org/ Firewall Builder]&lt;br /&gt;
# [http://shorewall.sf.net/ Shorewall]&lt;br /&gt;
# [http://www.simonzone.com/software/guarddog/ Guarddog]&lt;br /&gt;
# [http://firestarter.sourceforge.net/ FireStarter]&lt;br /&gt;
# [http://www.smoothwall.org/ Smoothwall]&lt;br /&gt;
# [http://www.ipcop.org/ IPCop]&lt;br /&gt;
# [http://www.balabit.com/ Zorp]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
IDS (Intrusion Detection System)&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# BlackICE&lt;br /&gt;
# Agnitum Outpost Firewall&lt;br /&gt;
# Tripwire [prop]&lt;br /&gt;
# Kerio Personal Firewall&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.snort.org/ Snort]&lt;br /&gt;
# [http://www.psionic.com/ Portsentry / Hostsentry / Logsentry]&lt;br /&gt;
# Tripwire&lt;br /&gt;
# Tripwall&lt;br /&gt;
# AIDE&lt;br /&gt;
# ViperDB&lt;br /&gt;
# Integrit&lt;br /&gt;
# [http://freshmeat.net/redir/cids/40689/url_homepage/cids Cerberus Intrusion Detection System]&lt;br /&gt;
# [http://midas-nms.sourceforge.net/ MIDAS NMS]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Detecţie scanare porturi&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://pkdump.sourceforge.net/pkdumpage.html Pkdump]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
Securizare sistem&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
# [http://www.bastille-linux.org/ Bastille]&lt;br /&gt;
# [http://usat.sourceforge.net/ Linux Security Auditing Tool]&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pending]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Raptor360&amp;diff=2712</id>
		<title>User:Raptor360</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Raptor360&amp;diff=2712"/>
				<updated>2006-06-02T12:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Bogdan Mustiata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bogdan Mustiata==&lt;br /&gt;
&lt;br /&gt;
===Contact===&lt;br /&gt;
*Telefon: '''0746-522655'''&lt;br /&gt;
&lt;br /&gt;
*E-mail: '''bogdan.mustiata arond gmail.com'''&lt;br /&gt;
&lt;br /&gt;
===Interese===&lt;br /&gt;
*Programare C++/Java generala.&lt;br /&gt;
&lt;br /&gt;
*Servere concurente C/C++/Java pentru arhitecturi distribuite si/sau multiprocesor pentru sisteme UNIX.&lt;br /&gt;
&lt;br /&gt;
*bash si perl scripting.&lt;br /&gt;
&lt;br /&gt;
*Grafica cu GIMP.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Raptor360&amp;diff=2711</id>
		<title>User:Raptor360</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Raptor360&amp;diff=2711"/>
				<updated>2006-06-02T12:41:38Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Raptor 360 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Bogdan Mustiata=&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
*Telefon: '''0746-522655'''&lt;br /&gt;
&lt;br /&gt;
*E-mail: '''bogdan.mustiata arond gmail.com'''&lt;br /&gt;
&lt;br /&gt;
==Interese==&lt;br /&gt;
*Programare C++/Java generala.&lt;br /&gt;
&lt;br /&gt;
*Servere concurente C/C++/Java pentru arhitecturi distribuite si/sau multiprocesor pentru sisteme UNIX.&lt;br /&gt;
&lt;br /&gt;
*bash si perl scripting.&lt;br /&gt;
&lt;br /&gt;
*Grafica cu GIMP.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=User:Raptor360&amp;diff=2710</id>
		<title>User:Raptor360</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=User:Raptor360&amp;diff=2710"/>
				<updated>2006-06-02T12:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Raptor 360=&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
*Telefon: '''0746-522655'''&lt;br /&gt;
&lt;br /&gt;
*E-mail: '''bogdan.mustiata arond gmail.com'''&lt;br /&gt;
&lt;br /&gt;
==Interese==&lt;br /&gt;
*Programare C++/Java generala.&lt;br /&gt;
&lt;br /&gt;
*Servere concurente C/C++/Java pentru arhitecturi distribuite si/sau multiprocesor pentru sisteme UNIX.&lt;br /&gt;
&lt;br /&gt;
*bash si perl scripting.&lt;br /&gt;
&lt;br /&gt;
*Grafica cu GIMP.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=2709</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=2709"/>
				<updated>2006-06-02T12:23:20Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Intrebări puse frecvent]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Postfix tls mysql dovecot|Postfix cu TLS, autentificare din MySQL şi acces prin Dovecot]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Download si instalare E17 din CVS|Instalare automatizată E17 CVS]] ([[:Category:GEs|medii grafice]])&lt;br /&gt;
** [[MU Online sub wine|MU Online rulat cu Wine]] ([[:Category:VMs|maşini virtuale]]/[[:Category:Games|jocuri]])&lt;br /&gt;
** [[Quagga on Linux|Quagga]] ([[:Category:Networking|reţea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Autentificare ssh folosind chei publice/private|Autentificare la SSH cu chei publice]] ([[:Category:Networking|reţea]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Instalare Qemu|Instalarea emulatorului Qemu]] ([[:Category:VMs|maşini virtuale]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2708</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2708"/>
				<updated>2006-06-02T09:00:09Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor cursorului sa urce.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips'n'Tricks]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2706</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2706"/>
				<updated>2006-06-01T14:23:39Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* set bs=2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor cursorului sa urce.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2705</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2705"/>
				<updated>2006-06-01T14:23:23Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* set bs=2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 ii da o mana de ajutor.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2704</id>
		<title>Setari vim existentiale</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Setari_vim_existentiale&amp;diff=2704"/>
				<updated>2006-06-01T14:20:28Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exista cazuri cand editorul vim nu se comporta asa cum banuiti? Atunci puteti incerca urmatoarele setari in ~/.vimrc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;:set bs=2&lt;br /&gt;
:set nocp&lt;br /&gt;
:syntax on&lt;br /&gt;
:set ts=4&lt;br /&gt;
:set sw=4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===set bs=2===&lt;br /&gt;
&lt;br /&gt;
Pe unele masini s-ar putea ca atunci cand stergeti caractere folosind tasta backspace atunci cand ajunge la marginea randului cursorul sa nu mearga un rand mai sus, bs=2 impiedica lucrul acesta.&lt;br /&gt;
&lt;br /&gt;
===set nocp===&lt;br /&gt;
&lt;br /&gt;
Exista distributii care seteaza vim-ul in modul &amp;quot;compatibil&amp;quot; cu vi, iar uneori lucrul acesta pur si simplu ne da peste cap, apasam INS si uita sa afiseze --INSERT--, etc. nocp ii spune lui vim ''no compatiblity''&lt;br /&gt;
&lt;br /&gt;
===syntax on===&lt;br /&gt;
&lt;br /&gt;
Intotdeauna am iubit sintaxa colorata pentru surse.&lt;br /&gt;
&lt;br /&gt;
===set ts=4 si set sw=4===&lt;br /&gt;
&lt;br /&gt;
Fiind un mare fan al conventiei Java de notare am ales indent-ul cu 4 caractere spre deosebire de cel de 8 care este implicit. Desigur puteti seta sau 2, 4 sau orice alta valoare preferati.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2703</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2703"/>
				<updated>2006-06-01T13:54:54Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Exemple scripturi BASH */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Script care lanseaza in fundal o anumita comanda data ca parametru de intrare ===&lt;br /&gt;
Puteti lasa o comanda sa se execute in fundal fara ca ea sa fie intrerupta la&lt;br /&gt;
iesirea dumneavoastra din sistem folosind urmatorul script pe care l-am numit&lt;br /&gt;
silent. (output-ul nu este salvat, pentru aceasta puteti folosi nohup)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Executing \&amp;quot;$*\&amp;quot;&amp;quot;&lt;br /&gt;
setsid bash -c $* 2&amp;gt;&amp;gt;/dev/null 1&amp;gt;&amp;gt;/dev/null &amp;lt; /dev/null &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scriptul il puteti folosi de exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ silent wget -c -t 0 www.bigfiles.com/ubuntu.iso&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Bind zone remove script&lt;br /&gt;
#&lt;br /&gt;
# Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
if [ ! $# = 1 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
    echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
    		 else&lt;br /&gt;
	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
	&lt;br /&gt;
	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	else&lt;br /&gt;
		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	fi&lt;br /&gt;
	rm -f temp&lt;br /&gt;
	exit&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot;  '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
sau&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep -Hr &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Daca doriti ca in output-ul comenzii &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; expresia cautata sa fie cautata sa fie evidentiata puteti folosi parametrul &amp;lt;tt&amp;gt;--color&amp;lt;/tt&amp;gt; astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep --color -Hr &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*~&amp;quot; -exec rm -f '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2702</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=2702"/>
				<updated>2006-06-01T13:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Cautarea unui fisier ce contine un anumit string */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Bind zone remove script&lt;br /&gt;
#&lt;br /&gt;
# Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# This program is free software; you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU General Public License&lt;br /&gt;
# as published by the Free Software Foundation; either version 2&lt;br /&gt;
# of the License, or (at your option) any later version.&lt;br /&gt;
#&lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
# GNU General Public License for more details.&lt;br /&gt;
#&lt;br /&gt;
# You should have received a copy of the GNU General Public License&lt;br /&gt;
# along with this program; if not, write to the Free Software&lt;br /&gt;
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
&lt;br /&gt;
if [ ! $# = 1 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
    echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
    		 else&lt;br /&gt;
	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
	&lt;br /&gt;
	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	else&lt;br /&gt;
		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
	fi&lt;br /&gt;
	rm -f temp&lt;br /&gt;
	exit&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot;  '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
sau&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep -Hr &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Daca doriti ca in output-ul comenzii &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; expresia cautata sa fie cautata sa fie evidentiata puteti folosi parametrul &amp;lt;tt&amp;gt;--color&amp;lt;/tt&amp;gt; astfel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;grep --color -Hr &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot; /path/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;find /path -name &amp;quot;*~&amp;quot; -exec rm -f '{}' \;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:ATi_video_(2.6)&amp;diff=2701</id>
		<title>Talk:ATi video (2.6)</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:ATi_video_(2.6)&amp;diff=2701"/>
				<updated>2006-05-30T14:29:36Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* In articol se recomanda reboot. Nu se pot insera modulele manual pentru a nu mai fi necesar reboot-ul? Daca da, atunci care sunt acele module? [[User:Raptor360|Raptor360]] 17:29, 30 May 2006 (EEST)--&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F&amp;diff=2637</id>
		<title>Ce este GNU/Linux? / Cum invat Linux?</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F&amp;diff=2637"/>
				<updated>2006-05-03T06:05:04Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* /etc/inittab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce este GNU/Linux? Cum invat Linux? De unde incep? Cum fac sa...? Ce inseamna...? Cum ma pot ajuta singur in a invata Linux? &lt;br /&gt;
&lt;br /&gt;
Acestea sunt doar cateva din intrebarile pe care un utilizator nou de Linux si le pune in momentul in care incearca sa afle ceva nou, sa invete sa utilizeze si poate chiar sa administreze un astfel de sistem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Scopul acestui articol este sa raspunda la aceste intrebari, in special la cele care contin notiuni de baza si in general se va urmari sa cuprinda informatiile necesare pentru a intelege despre ce este vorba si cum interactionam cu un sistem GNU/Linux. Subiectele mai avansate vor fi lasate pentru discutie in cadrul forumului sau in cadrul altor articole deoarece depasesc scopul acestuia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Linux si Windows'''&lt;br /&gt;
&lt;br /&gt;
Vom presupune ca un utilizator are o oarecare experienta cu un sistem de operare, iar pe platformele desktop fiind utilizat cu precadere Microsoft Windows, vom incerca sa facem pe alocuri o mica comparatie pentru a vedea care sunt corespondentele anumitor notiuni pe care le cunosteati deja.&lt;br /&gt;
&lt;br /&gt;
Daca doriti sa aflati corespondentele unor programe de pe Windows pe Linux (sau invers) puteti consulta articolul [[Echivalentele_Linux_ale_programelor_Windows | Echivalentele Linux ale programelor Windows]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== O digresiune naiva despre contextul in care a aparut Linux ===&lt;br /&gt;
&lt;br /&gt;
''Nota: Cei care cunosc deja aceste notiuni, sau care doresc sa afle mai multe despre partea practica a notiunilor introductive pot sari peste acesta sectiune.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ce sunt sistemele libere? ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un sistem de operare liber este alcatuit din programe ale caror sursa este disponibila. Oricine o poate vedea si modifica daca simte ca are ceva de adaugat sau de reparat, conditia fiind sa le spuna si celorlalti despre modificarile sale astfel incat sa existe o munca de colaborare in dezvoltarea unui astfel de sistem. De altfel, fara colaborare nu s-ar fi ajuns aici.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Licenta sub care se desfasoara acesta activitate pe Linux este, in general, [http://www.gnu.org/copyleft/gpl.html GPL] alcatuita de Richard Stallman, coordonatorul proiectului GNU si al Free Software Foundation. Mai multe despre GPL, filosofia care sta in spatele acestor programe si binecunoscutul slogan '''Free as in Freedom''' aflati pe http://www.fsf.org si pe http://www.gnu.org.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La un moment dat in istoria tehnologiei informatiei s-a pus problema ca produsele software ar trebui sa se supuna acelorasi legi comerciale ca oricare alt produs, motiv pentru care a aparut si necesitatea de a ascunde ceea ce sta in spatele muncii sale, pentru a nu putea fi reprodus sau preluat/modificat de altcineva. Ca un raspuns la aceasta miscare a aparut GNU, o echipa de programatori care au creat din placere o suita de programe care sa le inlocuiasca pe cele care incepusera sau devenisera deja '''proprietare''' si asupra caroara ei nu mai putea lucra independent sa le imbunatateasca. Insa acesta suita de programe avea nevoie de un ''coordonator'', de un supra-program care sa impuna niste reguli de functionare, sa dea voie anumitor operatii la un moment dat, sa restrictioneze altele, in fine, avea nevoie de un [http://www.kernel.org/ kernel]. Acest kernel a fost creat de Linus Torvalds si a fost numit '''Linux''', motiv pentru care toate sistemele Linux actuale poarte acesta denumire.&lt;br /&gt;
&lt;br /&gt;
Insa corect este sa spunem sistem '''GNU/Linux''' deoarece in jurul acestor doua proiecte s-a dezvoltat ceea ce numim noi azi un sistem Linux.&lt;br /&gt;
&lt;br /&gt;
==== Ce este un program? ====&lt;br /&gt;
&lt;br /&gt;
La modul cel mai intuitiv, un program este un fisier text scris intr-un limbaj de programare care specifica anumite instructiuni. Insa ceea ce cunostem noi sub numele de program este cu totul altceva. Noi cunoastem ''intruparea'' acelui program, si anume un fisier binar executabil (un ''.exe'' pe Windows). Care este procedeul prin care transformam textul intr-un binar (astfel incat sa poata fi interpretat direct de calculator) si care este ''bagheta magica'' care il transforma din text in binar? Bagheta magica este un program special numit '''compilator''' si procedeul de transformare se numeste ''compilare''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Textul initial despre care va povesteam este de fapt ''sursa'' programului, esenta lui, pe care noi in sistemele &amp;quot;GNU/Linux&amp;quot; avem posibilitatea de a o modifica si de a crea un program si mai puternic decat cel initial daca suntem suficient de priceputi. In alte sisteme cu sursa inchisa (cum ar fi Microsoft Windows), nu avem aceasta posibilitate, prin urmare drepturile si posibilitatile noastre sunt ingradite. Pentru un utilizator obisnuit nu este o tragedie foarte mare deoarece probabil ca nu simte nevoia acestei libertati, sau nu stie ce sa faca cu ea.&lt;br /&gt;
&lt;br /&gt;
Daca ati ajuns pana aici si nu va este frica sa ma murdariti un pic de &amp;quot;unsoare&amp;quot;, inseamna ca sunteti curiosi sa vedeti mai mult. Aceasta unsoare de care vorbesc este de fapt dorinta de a afla mai multe despre internele unui sistem de operare si cateodata este necesar un mic '''hack''' pentru a rezolva posibilele probleme. In acest caz, nu pot decat sa va felicit deoarece aveti calitatile necesare pentru a invata Linux.&lt;br /&gt;
&lt;br /&gt;
==== Cum compilez un program? ==== &lt;br /&gt;
''a.k.a. Cum instalez din surse un program / o aplicatie?''&lt;br /&gt;
&lt;br /&gt;
Pentru a efectua o instalare corecta se recomanda citirea documentelor referitoare la instalare din arhiva care contine sursele. De regula, un README si un INSTALL ar trebui sa va lamureasca. Apoi dati comenzile urmatoare, pe rand si programul va fi compilat si instalat conform unor optiuni specificate in fisierul Makefile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Nota: Daca doriti sa schimbati optiunile de compilare default (ceea ce se si recomanda), dati comanda '''./configure --help''' sa vedeti o lista a optiunilor pe care le aveti la dispozitie. Aceste optiuni variaza de la program la program. Evident, in argumentele pe care le veti da lui '''./configure''' veti avea o instalare cat mai aproape de ceea ce vreti.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''make'''&lt;br /&gt;
&lt;br /&gt;
Utilitarul '''make''' s-a nascut din nevoia de a compila, linkedita si instala proiecte mari, alcatuite din sute sau mii de fisiere sursa. Pentru a explica rolul utilitarului '''make''', recapitulam pasii in care mai multe fisiere sursa C sau ASM (limbaj de asamblare) sunt compilate si linkeditate impreuna intr-un fisier executabil:&lt;br /&gt;
&lt;br /&gt;
Fie mai multe fisiere sursa C, cu numele sursa1.c, sursa2.c, sursa3.c. In mod normal, aceste fisiere sunt compilate separat de catre orice compilator C in fisiere individuale obiect: sursa1.o (sau sursa1.obj),&lt;br /&gt;
sursa2.o si sursa3.o. Dupa compilare, in faza de linkeditare din cele trei fisiere obiect rezulta fisierul executabil. Se pot recunoaste usor acesti pasi si in asamblarea si linkeditare impreuna a mai multor fisiere ASM intr-un singur fisier executabil.&lt;br /&gt;
&lt;br /&gt;
Daca din cele trei fisiere sursa de mai sus se modifica doar sursa2.c, care din pasii de mai sus trebuie repetati? Evident, nu este necesara recompilarea in fisiere obiect a fisierelor sursa1.c si sursa3.c, este&lt;br /&gt;
necesara doar recompilarea lui sursa2.c. In urma acestei recompilari se va modifica si sursa2.o, lucru care impune relinkeditarea tuturor fisierelor obiect in fisierul executabil final. Utilitarul '''make''', folosind un fisier de configurare cu numele Makefile, &amp;quot;are grija&amp;quot; ca din pasii necesari obtinerii unui anumit fisier (in cazul nostru fisierul executabil final) sa se execute doar acesi pasi necesari.&lt;br /&gt;
&lt;br /&gt;
Prezentam in continuare in fisier Makefile pentru exemplu enuntat mai sus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
demo : sursa1.o sursa2.o sursa3.o&lt;br /&gt;
	gcc -o demo sursa1.o sursa2.o sursa3.o&lt;br /&gt;
&lt;br /&gt;
sursa1.o : sursa1.c&lt;br /&gt;
	gcc -c sursa1.c&lt;br /&gt;
&lt;br /&gt;
sursa2.o : sursa2.c&lt;br /&gt;
	gcc -c sursa2.c&lt;br /&gt;
&lt;br /&gt;
sursa2.o : sursa2.c&lt;br /&gt;
	gcc -c sursa1.c&lt;br /&gt;
&lt;br /&gt;
clean :&lt;br /&gt;
	rm sursa1.c~ sursa2.c~ sursa3.c~&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Explicatii:'''&lt;br /&gt;
&lt;br /&gt;
Pe prima linie, fisierul demo, se obtine din fisierele sursa1.o, sursa2.o si sursa3.o cu comanda de pe linia doi. Prima linia este folosita de utilitarul make pentru a sti cand trebuie sa reconstruiasca (prin linkeditare) fisierul demo, iar linia doi pentru a sti cu ce comanda trebuie sa reconstruiasca acest fisier.&lt;br /&gt;
Linia patru este folosita pentru a contrui fisierul sursa1.o din fisierul sursa1.c folosind comanda de pe linia cinci. Aceste doua linii sunt folosita de utilitarul make in doua situatii:&lt;br /&gt;
* a) fie sursa1.o nu exista, el este necesar la linkeditare finala, si deci trebuie creat prin comanda de pe linia cinci;&lt;br /&gt;
* b) fie fisierul sursa1.c are data crearii mai noua decat sursa1.o, fapt ce impune recompilarea lui sursa1.c. Modificandu-se sursa1.o, data crearii acestuia va fi mai noua decat data fisierului demo lucru ce&lt;br /&gt;
va duce linkeditarea finala. Optinea -c folosita la compilatorul gcc inseamna &amp;quot;just compile, don't link&amp;quot;, iar optiunea -o inseamna &amp;quot;creeaza fisierul executabil cu acest nume&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Pentru a rula exemplu de mai sus, se tasteaza comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt;make&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Observatii:'''&lt;br /&gt;
* Observati regula ''clean'' din fisierul de mai sus. Prin comanda '''make clean''' se executa comanda de dupa aceasta regula (se executa comanda rm care sterge fisierele de backup)&lt;br /&gt;
* Liniile cu comenzile '''gcc''' si '''rm''' sunt indentate in dreapta cu TAB, nu cu spatii!&lt;br /&gt;
* Intr-un fisier Makefile se pot folosi orice comenzi valide shell pentru a crea un fisier necesar. Exemplu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fisier_cu_useri_din_sistem :&lt;br /&gt;
	finger &amp;gt; fisier_cu_useri_din_sistem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cum utilizez '''tar'''? (arhivare/dezarhivare) ====&lt;br /&gt;
&lt;br /&gt;
Codul sursa al unui program se va gasi cel mai des intr-o arhiva. Aceasta poate fi .tar, tar.gz sau .tar.bz2.&lt;br /&gt;
Pentru a afla mai multe despre tar si optiunile sale dati comanda '''man tar'''. &lt;br /&gt;
&lt;br /&gt;
Dezarhivarea se poate face astfel:&lt;br /&gt;
&lt;br /&gt;
* pentru o arhiva numita '''ceva.tar''' dam comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar -xvf ceva.tar &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva numita '''ceva.tar.gz''' dam comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar -zxvf ceva.tar.gz &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva numita '''ceva.tar.bz2''' dam comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar -jxvf ceva.tar.bz2 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arhivarea se face astfel:&lt;br /&gt;
&lt;br /&gt;
Presupunem ca avem directorul tralala in /home si vrem sa il arhivam.&lt;br /&gt;
&lt;br /&gt;
* pentru o arhiva numita '''ceva.tar''' dam comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar -cvf ceva.tar /home/tralala &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva numita '''ceva.tar.gz''' dam comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar -czvf ceva.tar.gz /home/tralala &amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru o arhiva numita '''ceva.tar.bz2''' dam comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; tar -cjvf ceva.tar.bz2 /home/tralala &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desigur, in loc de un director putea fi un simplu fisier. Se pot specifica mai multe fisiere, directoare pentru arhivare in cadrul aceleiasi arhive. Pentru a afla ce inseamna aceste comenzi - '''man tar'''.&lt;br /&gt;
&lt;br /&gt;
=== Ce este o distributie Linux? ===&lt;br /&gt;
&lt;br /&gt;
O colectie de programe cu sursa deschisa adunate sub aceeasi capota, structurate astfel incat sa indeplineasca un anume scop (sau chiar mai multe simultan), cum ar fi: server web, server de mail, desktop computer, workstation etc. Desigur, o distributie contine obligatoriu utilitarele de baza de la GNU si kernelul Linux pentru a functiona corect. Structurarea programelor poate include chiar modificarea si gruparea lor in functie de scopurile pe care le indeplinesc, astfel creandu-se '''pachetele'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dintre calitatile unei distributii notam:'''&lt;br /&gt;
&lt;br /&gt;
* Are un installer pentru instalare facila.&lt;br /&gt;
* Are utilitarele de baza GNU si kernelul Linux.&lt;br /&gt;
* Are o structura de directoare specifica oricarui sistem UNIX.&lt;br /&gt;
* Are suport pentru mai multe tipuri de sisteme de fisiere.&lt;br /&gt;
* Are un manager de pachete, astfel incat sa se poata adauga, sterge, actualiza (upgrade) si mentine o lista a pachetelor instalate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Care este cea mai buna distributie? ===&lt;br /&gt;
&lt;br /&gt;
Nu exista o ''cea mai buna distributie''. Daca doriti sa invatati Linux exista unele cu interfete ceva mai intuitive, insa diferentele sunt doar de gust. Ceea ce va trebuie cel mai mult este rabdare si perseverenta, deoarece nici o distributie nu este inabordabila. Incercati si vedeti singuri care vi se potriveste.&lt;br /&gt;
&lt;br /&gt;
; [http://www.centos.org/ CentOS] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 4.3)&lt;br /&gt;
: Cea mai fidela clona de RedHat Enterprise, disponibila gratuit.&lt;br /&gt;
&lt;br /&gt;
; [http://www.debian.org/ Debian] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 3.1r2 &amp;quot;sarge&amp;quot;)&lt;br /&gt;
: Una dintre cele mai vechi si complete distributii, cu o gama impresionanta (Aprilie 2006: peste 15940) de pachete in arsenal.&lt;br /&gt;
&lt;br /&gt;
; [http://fedoraproject.org/wiki/ Fedora Core] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 5)&lt;br /&gt;
: Cunoscuta ca fiind initiativa RedHat pentru a oferi o varianta gratuita a produsului sau Enterprise.&lt;br /&gt;
&lt;br /&gt;
; [http://www.gentoo.org/ Gentoo] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2006.0)&lt;br /&gt;
: Un proiect impresionant, avand in vedere ca pune la dispozitia utilizatorului un mediu de lucru prin care sa-si compileze intreaga distributie din surse, cu optiunile alese de el.&lt;br /&gt;
&lt;br /&gt;
; [http://wwwnew.mandriva.com/ Mandriva] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2006)&lt;br /&gt;
: Distributie usor de utilizat, cunoscuta ca '''Mandrake''' pana de curand, ofera si varianta Enterprise.&lt;br /&gt;
&lt;br /&gt;
; [http://www.slackware.org/ Slackware] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 10.2)&lt;br /&gt;
: Cunoscuta in mod special pentru simplitate si stabilitate (conform principiului [http://en.wikipedia.org/wiki/KISS_Principle KISS]). Cea mai veche distributie inca mentinuta.&lt;br /&gt;
&lt;br /&gt;
; [http://www.novell.com/linux/ SUSE] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 10.0)&lt;br /&gt;
: Varianta Enterprise a distributiei sustinuta de Novell.&lt;br /&gt;
&lt;br /&gt;
; [http://www.ubuntu.com/ Ubuntu] (versiune curenta&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 5.10)&lt;br /&gt;
: O distributie usor de utilizat (bazata pe '''Debian'''), relativ recent aparuta, cu o toleranta foarte mare pentru incepatori.&lt;br /&gt;
&lt;br /&gt;
''Nota pentru potentiali editori: Toate link-urile au fost luate din [http://www.google.ro/ Google]. In cazul in care am uitat ceva, sau vreun link nu este reprezentativ, va rog sa completati/modificati.''&lt;br /&gt;
&lt;br /&gt;
'''Pentru incepatori''' cu precadere, recomand o distributie boot-abila (Live CD), pe numele ei [http://www.knoppix.net/ Knoppix]. &lt;br /&gt;
&lt;br /&gt;
==== Ce este o distributie boot-abila? ==== &lt;br /&gt;
&lt;br /&gt;
Una care poate fi pornita si rulata direct de pe CD (DVD), fara a instala nimic pe hard-disk, programele si (parte din) sistemul de fisiere incarcandu-se in RAM. &lt;br /&gt;
&lt;br /&gt;
'''Utilizari frecvente:''' &lt;br /&gt;
&lt;br /&gt;
* identificarea componentelor hardware ale sistemului vostru&lt;br /&gt;
* testarea unui calculator la achizitionare fara a instala nimic&lt;br /&gt;
* lucrul pe un calculator fara hard-disk (sau al carui hard-disk ne este intangibil)&lt;br /&gt;
* troubleshooting.&lt;br /&gt;
&lt;br /&gt;
==== De ce as alege o distributie boot-abila? ====&lt;br /&gt;
&lt;br /&gt;
Deoarece nu trebuie sa instalati nimic pe hard-disk pentru a va &amp;quot;juca&amp;quot; un pic cu comezile de baza si pentru a va familiariza cu noul mediu de lucru si in general, cu setarile standard, nu puteti face prea multe trasnai :-). &lt;br /&gt;
&lt;br /&gt;
Mai apoi probabil ca veti dori ceva instalat totusi, pentru a va ramane salvate setarile pe care le faceti si pentru a putea rula aplicatiile cu o viteza mai mare, deoarece in momentul in care incarca de pe CD, nu ruleaza foarte rapid.&lt;br /&gt;
&lt;br /&gt;
==== Se poate instala Knoppix pe hard-disk? ====&lt;br /&gt;
&lt;br /&gt;
Desigur, folosind comanda:&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;sudo knoppix-installer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acesta este insa un subiect mai avansat si este recomandabil sa cititi FAQ original al Knoppix-ului pentru a afla mai multe detalii. Nu luati acesta posibilitate ca pe un indemn insa. Este doar dovada ca se poate, in cazul in care doriti.&lt;br /&gt;
&lt;br /&gt;
==== Mai sunt distributii interesante, utile pentru teste? ====&lt;br /&gt;
&lt;br /&gt;
Desigur. Un proiect foarte interesant este [http://www.damnsmalllinux.org/ Damn Small Linux]. Ceea ce ofera ei (in mod special pentru un utilizator de Windows) este [ftp://ibiblio.org/pub/Linux/distributions/damnsmall/current/dsl-embedded.zip o arhiva zip] in care sa gaseste o mini-distributie embedded Linux. Cu alte cuvinte, o luati, dezarhivati, dati dublu-click pe '''dsl-windows.bat''' si veti avea o surpriza placuta.&lt;br /&gt;
&lt;br /&gt;
O alta mini-distributie care ruleaza direct de pe partitia Windows este [http://www.slackware.org/zipslack/ ZipSlack]. Mai multe informatii despre unde o gasiti - http://www.slackware.org/zipslack/getzip.php.&lt;br /&gt;
&lt;br /&gt;
==== Cum instalez un program / o aplicatie sub forma de pachet? ====&lt;br /&gt;
&lt;br /&gt;
Acest lucru este dependent de distributia pe care o folositi. Daca sunteti incepator, se recomanda sa utilizati un manager de pachete in modul grafic.&lt;br /&gt;
&lt;br /&gt;
Daca vreti sa stiti mai multe, cititi in continuare. Dupa cum povesteam mai devreme programele au fost luate de dezvoltatorii distributiilor si puse in pachete pentru a fi grupate mai bine. Da, asta inseamna ca un program original se poate intinde pe mai multe pachete, respectiv poate fi grupat cu mai multe programe inainte de a forma un pachet.&lt;br /&gt;
&lt;br /&gt;
De asemenea, apare o noua notiune, si anume aceea de ''dependinte''. &lt;br /&gt;
&lt;br /&gt;
===== Ce sunt dependintele si cum utilizez un manager de pachete? ===== &lt;br /&gt;
&lt;br /&gt;
Dependintele sunt programe/pachete/biblioteci de care depind alte programe pe care vreti voi sa le instalati. Fiind vorba de un sistem cu surse libere (sub licenta GPL sau compatibila) un dezvoltator nu trebuie sa scrie ''totul'' de la capat pentru a realiza un program functional. El se poate baza pe anumite programe/biblioteci introduse de altcineva pentru a-si realiza scopul. Motiv pentru care s-ar putea sa va treziti la un moment dat ca doriti sa instalati ceva si vi se refuza acest drept pe motiv ca ii lipseste o componenta necesara bunei functionari, altfel spus, o dependinta.&lt;br /&gt;
&lt;br /&gt;
De aceea au si aparut de fapt programele numite &amp;quot;manager de pachete&amp;quot;, pentru a rezolva aceste dependinte fara sa trebuiasca utilizatorul sa le caute si sa le instalaze manual. De fapt, fiecare distributie are un manager de pachete bine pus la punct, altfel nu  ar fi ajuns la stadiul actual, tinand cont ca o distributie majora poate avea mii de pachete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pentru '''Gentoo''' vei folosi portage - un sistem de managemen de pachete inspirat din FreeBSD.&lt;br /&gt;
** Instalarea unui pachet: &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;emerge pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
** Dezinstalarea: &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;emerge --unmerge pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru mai multe detalii, consultati documentatia de pe [http://www.gentoo.ro/ site-ul comunitatii Gentoo in Romania]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''RedHat''' (acum numai pentru mediul Enterprise), '''Fedora Core''', '''Mandriva''' si '''Suse''' se bazeaza la nivelul cel mai de jos pe pachete in format '''rpm'''. Comenzi utile pentru a lucra cu ele:&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; rpm -i nume_pachet.rpm &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; rpm -e nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru nevoi mai avansate '''man rpm'''.&lt;br /&gt;
** Ca manager de pachete, acesta variaza de la distributie la distributie. [http://linux.duke.edu/projects/yum/ Yum] pare sa fie alegerea cea mai populara. Pentru a afla cum il setam sa utilizeze site-uri mirror din Romania, cititi articolul [[Yum_%C3%AEn_Rom%C3%A2nia | Yum in Romania]]&lt;br /&gt;
** Mandriva foloseste [http://qa.mandriva.com/twiki/bin/view/Main/UrpmiResources urpmi] sau [http://labix.org/smart smart]. ''Familia'' '''urpmi''' ''preia'' toate functiile utilitatului '''rpm''', nemaifiind nevoie sa folositi comenzile scrise mai sus. Un scurt exemplu de echivalente (cand extensia .rpm este data, urpmi va cauta pachetul local, in directorul curent; ca interfete grafice e recomandat sa aveti instalat '''gurpmi''' si '''rpmdrake'''; pentru mai multe detalii, consultati documentatia de pe [http://www.mandrivalinux.ro/ site-ul comunitatii Mandriva in Romania]): &amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;rpm -i nume_pachet.rpm &amp;lt;&amp;gt; urpmi nume_pachet[.rpm]&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;rpm -e nume_pachet &amp;lt;&amp;gt; urpme nume_pachet&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''Slackware''' se bazeaza pe pachete in format '''tgz'''.&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; installpkg nume_pachet.tgz &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; removepkg nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru a folosi managerul de pachete original dati comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; pkgtool &amp;lt;/code&amp;gt;&lt;br /&gt;
** Manager de pachete: '''slapt-get'''. Pagina oficiala este http://directory.fsf.org/slapt-get.html.&lt;br /&gt;
** Pentru creearea unui pachet din surse (exceptie unele programe gen php) se procedeaza astfel:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tar zxf nume.tgz&lt;br /&gt;
cd nume&lt;br /&gt;
./configure --prefix=/usr --sysconfdir=/etc/&lt;br /&gt;
make&lt;br /&gt;
make install DESTDIR=/tmp/nume&lt;br /&gt;
cd /tmp/nume&lt;br /&gt;
makepkg nume.tgz&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Distributii precum '''Debian''' si '''Ubuntu''' se bazeaza pe pachete in format '''deb'''.&lt;br /&gt;
** Pentru instalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; dpkg -i nume_pachet.deb &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru dezinstalarea unui pachet: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; dpkg -r nume_pachet &amp;lt;/code&amp;gt;&lt;br /&gt;
** Pentru nevoi mai avansate '''man dpkg''' sau '''man dselect'''.&lt;br /&gt;
** Manager(e) de pachete: '''apt-get''', '''aptitude''', '''Synaptic'''. Recomandam sa dati comanda '''man apt-get'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ceea ce trebuie sa retinem este faptul ca un manager de pachete avansat (in stare sa rezolve dependintele si sa instaleze pachetele astfel incat sa nu intre in conflict), trebuie sa si ''stie'' de unde sa ia pachetele. De cele mai multe ori, le setam special pentru a lua de pe site-uri mirror din Romania pachetele de care avem nevoie.&lt;br /&gt;
&lt;br /&gt;
De exemplu, pentru '''Debian''', avem de adaugat mirror-urile pe care le preferam in '''/etc/apt/sources.list'''.&lt;br /&gt;
&lt;br /&gt;
Dar am tot vorbit de mirror si nu am spus ce este. Bineinteles, exista o locatie oficiala a unei distributii, insa pentru a nu impovara prea tare acel site se creeaza ceea ce noi numim &amp;quot;o oglinda&amp;quot; a locatiei initiale, copiind toate datele pe un server din reteaua metropolitana, cu permisiunea dezvoltatorilor originali desigur. Fiind mai aproape de noi, iar unii beneficiand de o viteza mai buna in Romania decat extern, se prefera de regula un mirror &amp;quot;local&amp;quot; decat unul extern.&lt;br /&gt;
&lt;br /&gt;
==== Ce semnificatie au fisierele si structura de directoare? ====&lt;br /&gt;
&lt;br /&gt;
Dupa cum ati observat deja, la structura de directoare deja diferentele sunt notabile. In primul rand, ca totul in sistemul Linux este un fisier. Absolut totul. Directoarele sunt doar cazuri speciale de fisiere. Dispozitivele (devices) sunt tot fisiere.&lt;br /&gt;
&lt;br /&gt;
Programele asa cum le stim de pe Windows nu mai au extensie. Nici nu au nevoie, deoarece tipul de fisier este stocat chiar in el. Daca vrem neaparat, putem crea / denumi un fisier Eseu.txt, dar asta nu inseamna ceva anume, ci doar pentru noi sa il recunoastem mai usor eventual.&lt;br /&gt;
&lt;br /&gt;
Structura de directoare iar este speciala. Spre deosebire de Windows, calea unui fisier/director se specifica cu '''&amp;quot;/&amp;quot;''' si nu cu '''&amp;quot;\&amp;quot;'''. De fapt, asa a fost de cand lumea si pamantul in lumea tehnologiei informatiei, Windows este de fapt cel care face exceptie de la regula :-). De asemenea, nu mai exista separatiile cu care eram obisnuiti, aici fiind impartit tortul mai cerebral, insa mai putin intuitiv pentru necunoscatori. Poate sa va surprinda, dar un pachet de cele mai multe ori nu se instaleaza in acelasi director, ci se mai imparte in mai multe felii, depinzand de functiile lui.&lt;br /&gt;
&lt;br /&gt;
Iata cum trebuie gandita situatia:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/bin   - fisiere executabile importante (de ex: ls)&lt;br /&gt;
/boot  - fisiere statice, boot-loader-ul, kernel-ul &lt;br /&gt;
         (de ex: vmlinuz-2.4.27-2-386)&lt;br /&gt;
/etc   - mai toate fisierele importante de configurare sunt &lt;br /&gt;
         aici (de ex: lilo.conf, fstab)&lt;br /&gt;
/dev   - dispozitivele hardware&lt;br /&gt;
/home  - fisierele utilizatorilor (utilizatorul gica isi are &lt;br /&gt;
         home-ul in /home/gica)&lt;br /&gt;
/lib   - biblioteci si module de kernel&lt;br /&gt;
/mnt   - directoarele in care se monteaza alte sisteme de&lt;br /&gt;
         fisiere (de ex, Mandriva monteaza partitia C: &lt;br /&gt;
         a Windows-ului in /mnt/win_c)&lt;br /&gt;
/media - specific mai ales Debian-ului (contine /media/floppy &lt;br /&gt;
         si/sau /media/cdrom, etc... rolul e identic cu cel &lt;br /&gt;
         al directorului /mnt)&lt;br /&gt;
/opt   - software adaugat dupa, de obicei din surse neoficiale &lt;br /&gt;
         (de ex, rpm-urile de la OpenOffice.org)&lt;br /&gt;
/proc  - fiecare proces care ruleaza isi creeaza un director aici&lt;br /&gt;
/root  - home-ul root-ului&lt;br /&gt;
/usr   - ierarhie secundara (contine: /usr/bin, /usr/lib, etc...)&lt;br /&gt;
/sbin  - executabile esentiale de sistem (de ex: shutdown)&lt;br /&gt;
/tmp   - fisiere temporare (asemenea directoare sunt si in home-ul&lt;br /&gt;
         fiecarui user, de ex: /home/gica/tmp)&lt;br /&gt;
/var   - fisiere care se schimba des in timp (de ex: /var/log - &lt;br /&gt;
         jurnale de sistem, /var/cache - fisiere temporare...)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru detalii, a se consulta [http://www.pathname.com/fhs/ documentatia oficiala referitoare la ierarhia standard a fisierelor Unix].&lt;br /&gt;
&lt;br /&gt;
Asadar, un pachet cel mai probabil ca isi va pune fisierele si directoarele in mai multe locuri, &amp;quot;imprastiindu-le&amp;quot; dupa rolul lor prin diversele directoare, iar managerul de pachete (daca exista), va sti ce se intampla, dezinstalarea fiind facila pentru utilizator.&lt;br /&gt;
&lt;br /&gt;
=== Comenzi si practici de baza ===&lt;br /&gt;
&lt;br /&gt;
==== Ce este o comanda? ====&lt;br /&gt;
&lt;br /&gt;
O comanda este de fapt rularea unui program sau a unui script intr-o consola (fie ea fizica, sau virtuala). De exemplu, un program des utilizat pentru a da comenzi in consola din modul grafic, este Konsole din KDE.&lt;br /&gt;
&lt;br /&gt;
===== Utilizatorii sistemului =====&lt;br /&gt;
&lt;br /&gt;
Utilizatorii unui sistem se pot vizualiza in /etc/passwd. Majoritatea afisati acolo sunt de tip ''daemon'', adica programe care ruleaza in background fara a fi sub controlul direct al utilizatorului, si de obicei sunt instantiate ca procese de sistem, lansate la '''boot'''. De asemenea, sunt si cativa utilizatori speciali, sub care ruleaza programe de tip server foarte importante. De exemplu:&lt;br /&gt;
* guest - folosit uneori pentru a da acces read-only unor vizitatori&lt;br /&gt;
* ftp   - user-ul folosit pentru conectari anonime la ftp&lt;br /&gt;
* news  - folosit de Usenet&lt;br /&gt;
* lp    - folosit de sistemul de imprimare; vine de la ''line printer''&lt;br /&gt;
* nobody/www-data - folosit in special de Apache WebServer&lt;br /&gt;
Si nu in ultimul rand, sunt utilizatorii obisnuiti (umani) ai sistemului. O categorie aparte este '''root''', super-utilizatorul sau, altfel spus, administratorul sistemului, cu drepturi depline asupra lui.&lt;br /&gt;
&lt;br /&gt;
* Daca sunteti un utilizator obisnuit, linia de comanda va arata asa: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; andrei@acasa:/home/andrei$&amp;lt;/code&amp;gt;&lt;br /&gt;
* Daca sunteti '''root''' (administratorul sistemului): &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; root@acasa:/home/root#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bineinteles, toate modificarile majore asupra sistemului trebuie facute ca '''root''', dar atentie ca '''nu''' este recomandat sa folositi in mod ''curent'' acest utilizator, deoarece puteti face greseli destul de mari la inceput, care sa afecteze definitiv integritatea sistemului avand in vedere ca aveti drepturi depline.&lt;br /&gt;
&lt;br /&gt;
''Nota: In afara de conceptul de utilizatori, mai exista si '''grupuri'''.'' '''[FIXME]''' - de vorbit un pic despre grupuri si rolul lor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
====== Cum imi schimb parola? ======&lt;br /&gt;
&lt;br /&gt;
Cu comanda: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt;passwd&amp;lt;/code&amp;gt;&lt;br /&gt;
Daca sunteti root, puteti schimba parola oricui: &amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt;passwd gigel&amp;lt;/code&amp;gt; unde gigel trebuie sa fie un utilizator valid din sistem.&lt;br /&gt;
&lt;br /&gt;
====== Cum adaug / sterg utilizatori din sistem? ======&lt;br /&gt;
&lt;br /&gt;
Cu comenzile: '''useradd, userdel, groupadd, groupdel'''. '''man ''comanda'' ''' pentru detalii, unde ''comanda'' se va inlocui cu una din variantele anterioare.&lt;br /&gt;
&lt;br /&gt;
==== Care sunt comenzile esentiale? ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; &amp;lt;sh/&amp;gt; info nume_comanda/fisier_de_configurare&lt;br /&gt;
  man nume_comanda/fisier_de_configurare&lt;br /&gt;
  apropos ceva&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acesti &amp;quot;Cei trei muschetari&amp;quot; sunt '''absolut esentiali'''. Cand cineva va spune RTFM (read the fine manual), probabil ca se refera la aceste comenzi. &lt;br /&gt;
&lt;br /&gt;
'''info''' va da informatii privitoare la comanda respectiva sau la fisierul de configurare in cauza. &lt;br /&gt;
&lt;br /&gt;
'''man''' va da manualul comezii respective sau fisierul de configurare al unui program. In general in josul fisierului veti gasi referinte la comenzi, programe, fisiere de configurare care au legatura cu cel solicitat de voi.&lt;br /&gt;
&lt;br /&gt;
'''apropos''' este o comanda de genul &amp;quot;suna ca&amp;quot;. Poate ca nu stim exact o comanda, dar stim ca are legatura cu ''ceva'' si s-ar putea sa avem noroc sa ne dea ca rezultat ceva folositor.&lt;br /&gt;
&lt;br /&gt;
Daca chiar imi trebuie un utilitar / o comanda si ''apropos'' nu m-a dus unde voiam, [http://www.google.ro Google] s-ar putea sa fie mai viteaz. Bineinteles, nu excludem posibilitatea de a intreba pe altcineva, dar este de bun simt sa cautam si noi singuri pentru ca s-ar putea sa gasim raspunsul in cateva secunde.&lt;br /&gt;
&lt;br /&gt;
==== Comenzi utile ====&lt;br /&gt;
&lt;br /&gt;
'''info, man, apropos, which, mkdir, rmdir, mount, touch, rm, cp, mv, cat, cd, ls, grep, ps, who, whoami, su, sudo, df, du, tar, more, less, ps, kill, killall, ln, chown, chmod, chattr, passwd, useradd, groupadd, ping, ifconfig, route, iptables, locate, slocate, updatedb, find'''&lt;br /&gt;
&lt;br /&gt;
Exercitiu: Pentru a afla ce fac fiecare dati '''man ''nume_comanda'' '''.&lt;br /&gt;
&lt;br /&gt;
In cazul in care nu ati observat deja, puteti sa atasati niste optiuni comenzilor pe care le dati. Acestea se manifesta sub forma '''[comanda] --optiune''' de obicei. O astfel de comanda utila (pe care aproape orice program o are), este '''[comanda] --help''' sau '''[comanda] -h''', pentru a va arata o lista de optiuni (de obicei scurta, dar la obiect).&lt;br /&gt;
&lt;br /&gt;
===== Ce fac cu un program care nu se mai opreste? =====&lt;br /&gt;
&lt;br /&gt;
Ori folositi combinatia '''kill PID''', unde PID este un numar (Process ID) aflat la rularea comenzii '''ps aux''', ori dati comanda '''killall nume_comanda'''. De asemenea apasarea tastei '''q''' sau apasarea simultana a tastelor '''CTRL C''' poate opri rularea unui program in anumite conditii (cand el ruleaza in foreground).&lt;br /&gt;
&lt;br /&gt;
==== Ce este un &amp;quot;shell&amp;quot;? ====&lt;br /&gt;
&lt;br /&gt;
Un interpretor de comenzi. Cel mai utilizat la ora actuala este [http://www.gnu.org/software/bash/ BASH]&lt;br /&gt;
&lt;br /&gt;
==== Bash ====&lt;br /&gt;
&lt;br /&gt;
Iata cateva resurse pentru a afla mai multe despre el: http://www.tldp.org/LDP/abs/html, http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html&lt;br /&gt;
&lt;br /&gt;
Conceptul de &amp;quot;programare&amp;quot; in BASH se refera de fapt la a scrie script-uri care sa indeplineasca anumite functii utile. Toate functiile de initializare in sistemele GNU/Linux sunt scrise in BASH sau in SH.&lt;br /&gt;
&lt;br /&gt;
Un script este interpretat si executat direct, nu necesita o compilare ca un program obisnuit.&lt;br /&gt;
&lt;br /&gt;
=== Cum vede Linux hard-disk-ul meu? (Partitionare) ===&lt;br /&gt;
&lt;br /&gt;
Pentru a va lamuri mai bine, cititi articolul [[Parti%C5%A3ii | Partitii]] si va va raspunde la acesta intrebare si multe altele.&lt;br /&gt;
&lt;br /&gt;
Pe scurt, comanda '''mount''' este ceea ce cautati. '''man mount''' pentru detalii.&lt;br /&gt;
&lt;br /&gt;
Care este sintaxa?&lt;br /&gt;
&lt;br /&gt;
'''mount -t tip_sistem_de_fisiere device /cale/unde/vreau/sa/montez'''&lt;br /&gt;
&lt;br /&gt;
De exemplu daca vreau sa montez o partitie FAT32 (cea de-a doua partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t vfat /dev/hda2 /mnt/hda2 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o partitie NTFS (cea de-a treia partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ntfs /dev/hda3 /mnt/hda3 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o partitie ext3 (cea de-a cincea partitie de pe hard-disk-ul meu sa zicem) dau comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ext3 /dev/hda5 /mnt/hda5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o discheta (al carei sistem de fisiere este ext3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t ext3 /dev/fd0 /mnt/floppy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez un CD/DVD:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t iso9660 /dev/cdrom /mnt/cdrom &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daca vreau sa montez o imagine de CD/DVD in format '''iso''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; mount -t iso9660 -o loop /home/imagine.iso /mnt/cdrom &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pentru a de-monta un device, avand in vedere un exemplu de mai sus, dati comanda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; umount /dev/hda5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note aditionale'''&lt;br /&gt;
&lt;br /&gt;
'''/mnt/hda2''', '''/mnt/cdrom''', '''/mnt/floppy''' etc. trebuie sa fie un directoare deja existente, bineinteles, eventual create chair de noi anterior.&lt;br /&gt;
&lt;br /&gt;
Fisierul care se ocupa cu montarea tuturor device-urilor la pornirea sistemului este /etc/'''fstab'''. Acolo trebuie sa operati modificarile pentru a va retine setarile.&lt;br /&gt;
&lt;br /&gt;
Parametrul &amp;quot;-t tip_sistem_de_fisiere&amp;quot; poate lipsi de cele mai multe ori, gasind automat ce sistem de fisiere are partitia pe care vreti sa o montati.&lt;br /&gt;
&lt;br /&gt;
Unele comenzi nu vor merge &amp;quot;din prima&amp;quot; avand in vedere ca trebuie sa adaptati informatiile prezentate mai sus pentru sistemul vostru. Un caz bine de retinut este cel al lui /dev/cdrom, care de cele mai multe ori este o &amp;quot;scurtatura&amp;quot; (symbolic link, vezi '''man ln''') catre un device real, gen /dev/hdc, daca /dev/hdc este identificat ca fiind CD-ROM-ul vostru de Linux.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In majoritatea cazurilor, daca dati o comanda de mount, veti avea drept de citire si de scriere pe partitia/device-ul respectiv. Cum NTFS este o tehnologie inchisa, implementarea lui in kernelul Linux nu este inca completa si dreptul de scriere este foarte limitat. Daca doriti totusi sa faceti acest lucru neaparat (asumandu-va riscul sa partitia respectiva sa devina neutilizabila), aruncati un ochi pe proiectul [http://www.jankratochvil.net/project/captive/ Captive NTFS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Notă amuzantă: În cazul în care vi se pare de undeva cunoscut numele comenzii '''mount''', s-ar putea să fie de la utilitarul de Windows '''Daemon Tools'''. Vă aduceţi aminte că pentru a putea vedea o imagine a unui CD trebuia să creeaţi un CD-ROM virtual şi să &amp;quot;montaţi&amp;quot; în el imaginea dorită? Ei bine, acţiunea este similară cu comanda '''mount''' sub Linux.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Sisteme de fisiere ====&lt;br /&gt;
&lt;br /&gt;
Pe Windows avem trei sisteme de fisiere &amp;quot;populare&amp;quot;: FAT16, FAT32 si NTFS. Sub Linux, avem o intreaga suita: ext2, ext3, jfs, reiserfs, xfs si multe altele care necesita patch-uirea kernelului si recompilarea lui. In linii mari, toate sunt bune pentru un anumit scop. Nu va astepati sa fie un sistem de fisiere universal care sa indeplineasca toate cerintele posibile. Comparatii cu privire la actualele sisteme de fisiere puteti gasi pe [http://www.google.ro Google] cu duiumul, insa numai voi decideti care se potriveste mai bine scopului vostru.&lt;br /&gt;
&lt;br /&gt;
Personal eu utilizez pentru partitiile de Windows FAT32 si pentru partitiile de Linux ext3, deoarece sunt foarte bine  &amp;quot;impamantate&amp;quot;, avand in vedere vechimea lor. Cu alte cuvinte de pe Windows am acces read/write la partitiile Linux ext3 cu ajutorul proiectului [http://sourceforge.net/projects/ext2fsd Ext2 File System Driver for NT/2K/XP], dar atentie ca nu este lipsit complet de riscuri. Pana acum eu nu am avut probleme, dar va sfatuiesc sa nu incercati astfel de pozne daca aveti date importante pe partitiile pe care vreti sa faceti operatii.&lt;br /&gt;
&lt;br /&gt;
Sub Linux, accesul read/write la partitiile FAT32 este implementat de mult timp, asadar alegerile pe care le-am facut eu sunt clare. Voi, ramane sa va ganditi daca aveti nevoie de acesta flexibilitate cu pretul unor performante ceva mai scazute.&lt;br /&gt;
&lt;br /&gt;
In ceea ce priveste NTFS, pentru accesul read-only de sub Linux exista implementare direct in kernel, dar pentru acces de scriere, este mai complicata situatia. Se poate scrie cu modulul(driverul) clasic, dar numai in cazuri speciale. Proiectul [http://www.jankratochvil.net/project/captive/ Captive NTFS] este ceea ce cautati, dar din nou atentie sa nu va busiti partitia. Acesta foloseste driverul original ntfs de la Microsoft emuland subsistemele necesare, similar cu Wine.&lt;br /&gt;
&lt;br /&gt;
==== Ce este un boot-loader? ====&lt;br /&gt;
&lt;br /&gt;
Un program care ruleaza in momentul in care porneste calculatorul vostru. El este responsabil cu incarcarea si transferarea controlului catre un sistem de operare (in principal kernelul sau) sau catre boot-loader-ul altui sistem de operare (operatie numita chain-load).&lt;br /&gt;
&lt;br /&gt;
La ora actuala, cel mai popular si mai puternic boot loader in lumea Linux pare sa fie [http://www.gnu.org/software/grub/ GRUB] acum dezvoltat de echipa GNU. Personal, eu am folosit o varianta compilata de GRUB sa incarce mai multe sisteme de operare incapatanate (care voiau doar o anumita ordine de instalare), cum ar fi diverse versiuni de Windows, fara a avea la dispozitie nici o partitie Linux.&lt;br /&gt;
&lt;br /&gt;
Mai multe, in ceea ce urmeaza.&lt;br /&gt;
&lt;br /&gt;
==== Cum configurez un boot-loader? ====&lt;br /&gt;
&lt;br /&gt;
Aici intervin cele mai cunoscute programe de acest tip pentru platforma Linux: GRUB si LILO. Pentru CD-ROM-uri si dischete, avem: [http://syslinux.zytor.com/ syslinux] si [http://syslinux.zytor.com/iso.php isolinux].&lt;br /&gt;
&lt;br /&gt;
===== GRUB =====&lt;br /&gt;
&lt;br /&gt;
Pagina oficiala este [http://www.gnu.org/software/grub/ GRUB], iar cele mai bune informatii referitoare la subiect le puteti gasi in [http://www.gnu.org/software/grub/manual/grub.html GRUB Manual].&lt;br /&gt;
&lt;br /&gt;
Iata cateva o metoda pe care le-am folosit-o pana acum cand am avut probleme. Ea implica instalarea manuala a GRUB-ului, motiv pentru care se recomanda dezinstalarea variantei venita o data cu sistemul vostru.&lt;br /&gt;
&lt;br /&gt;
Dar inainte de toate, cititi documentatia oficiala! Dati comanda '''info grub''' intr-o consola sau alternativ consultati documentaia online la adresa http://www.gnu.org/software/grub/manual/.&lt;br /&gt;
&lt;br /&gt;
Daca vreti sa folositi instalarea care vine o data cu sistemul vostru, atunci nu aveti decat sa modificati fisierul '''grub.conf''' sau '''menu.lst''' dupa caz pentru a adauga optiunile pe care le doriti. In caz ca nu mai este functionala acea varianta de GRUB, presupunand ca boot-loader-ul de Windows a rescris MBR-ul sau altceva asemanator s-a intamplat, urmati pasii:&lt;br /&gt;
&lt;br /&gt;
# Boot-ati de pe un Live CD, Knoppix de exemplu.&lt;br /&gt;
# Intrati in consola.&lt;br /&gt;
# Daca nu sunteti root(administratorul sistemului) dati comanda '''su -'''.Acesta este trucul pentru a deveni root in Knoppix, insa nu este universal valabil, deoarece de obicei cere o parola.&lt;br /&gt;
# Creati un director. ('''man mkdir''') Exemplu: '''mkdir /hard'''&lt;br /&gt;
# Montati partitia unde se gaseste GRUB. Exemplu: '''mount /dev/hda2 /hard'''. De notat ca GRUB isi instaleaza fisiere de configurare in directorul /boot/grub, deci daca directorul /boot se gaseste pe alta partitie (cum recomanda unele distributii), comanda ''mount'' data de voi trebuie sa reflecte locatia corecta.&lt;br /&gt;
# Daca partitia unde se gaseste GRUB este diferita de cea unde se gaseste sistemul, montati si sistemul, urmand exemplele anterioare.&lt;br /&gt;
# Dati comanda: &amp;lt;code&amp;gt; grub-install /dev/hda &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Altfel, varianta mai dificila un pic este:&lt;br /&gt;
&lt;br /&gt;
# Luati o discheta care sa nu va trebuiasca prea curand si puneti-o in floppy-disk drive.&lt;br /&gt;
# Luati varianta [ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz 0.97] (de exemplu).&lt;br /&gt;
# Dezarhivati-o ([http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Cum_utilizez_tar.3F_.28arhivare.2Fdezarhivare.29 exemplu aici])&lt;br /&gt;
# Dati comanda '''./configure &amp;amp;&amp;amp; make install''' in noul director dezarhivat. Acum ar trebui sa aveti o versiune de GRUB compilata chiar in fata ochilor vostri.&lt;br /&gt;
# Daca BIOS-ul este setat sa booteze prima data de pe discheta, lasati discheta inauntru. Daca nu, dupa ce ati terminat toate aceste operatii si dati reboot, nu uitati sa setati in BIOS sa booteze prima data de pe discheta. &lt;br /&gt;
# Apoi, dati comenzile urmatoare pentru a crea o discheta boot-abila de GRUB, noi fiind tot in directorul initial, in care am compilat programul. &amp;lt;code&amp;gt;dd if=stage1 of=/dev/fd0 bs=512 count=1 &amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;dd if-stage2 of=/dev/fd0 bs=512 seek=1 &amp;lt;/code&amp;gt;&lt;br /&gt;
# Identificati partitiile. Un '''fdisk -l''' ar trebui sa va dea suficiente informatii. Atentie ca GRUB vede partitiile altfel decat sistemul de operare. Este destul de intuitiva notatia, dar daca nu va descurcati, '''info grub'''.&lt;br /&gt;
# Copiati toate fisierele din directorul nostru de lucru (cel in care am compilat noul GRUB) in '''/boot/grub'''. Daca directorul din urma nu exista, il creati.&lt;br /&gt;
# Dati reboot (CTRL+ALT+DEL), iar el va boota de pe discheta (daca asa e setat din BIOS, vedeti mai sus indicatia).&lt;br /&gt;
# Daca ati facut ce trebuia, el va incarca GRUB de pe discheta si va veti gasi in fata unei &amp;quot;pseudo-console&amp;quot;, o interfata de dat comenzi de fapt. &lt;br /&gt;
# Puteti da comenzile '''root(hd0,1)''' si '''setup (hd0)''' de exemplu, asta presupunand ca partitia este '''hda2''' si hard-discul este ''hda''. '''Adaptati dupa caz!''' Acum ar trebui sa aveti o idee cam cum le noteaza, nu-i asa? In principal, fiti atenti ca el incepe notatia de la 0, nu de la 1. Adica, in exemplul nostru (hd0,1) corespunde lui /dev/hda2 de pe hard-disk-ul primar (hd0).&lt;br /&gt;
&lt;br /&gt;
Iata si un exemplu de fisier de configurare (cu cateva exemple in el), citat din '''/boot/grub/menu.lst''' :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# menu.lst - See: grub(8), info grub, update-grub(8)&lt;br /&gt;
#            grub-install(8), grub-floppy(8),&lt;br /&gt;
#            grub-md5-crypt, /usr/share/doc/grub&lt;br /&gt;
#            and /usr/share/doc/grub-doc/.&lt;br /&gt;
&lt;br /&gt;
## default num&lt;br /&gt;
# Set the default entry to the entry number NUM. Numbering starts &lt;br /&gt;
# from 0, and the entry number 0 is the default if the command is&lt;br /&gt;
# not used.&lt;br /&gt;
#&lt;br /&gt;
# You can specify 'saved' instead of a number. In this case, the &lt;br /&gt;
# default entry is the entry saved with the command 'savedefault'.&lt;br /&gt;
default         0&lt;br /&gt;
&lt;br /&gt;
## timeout sec&lt;br /&gt;
# Set a timeout, in SEC seconds, before automatically booting the &lt;br /&gt;
# default entry (normally the first entry defined).&lt;br /&gt;
#timeout                10&lt;br /&gt;
&lt;br /&gt;
## hiddenmenu&lt;br /&gt;
# Hides the menu by default (press ESC to see the menu)&lt;br /&gt;
#hiddenmenu&lt;br /&gt;
&lt;br /&gt;
# Pretty colours&lt;br /&gt;
#color cyan/blue white/blue&lt;br /&gt;
&lt;br /&gt;
## password ['--md5'] passwd&lt;br /&gt;
# If used in the first section of a menu file, disable all interactive&lt;br /&gt;
# editing control (menu entry editor and command-line)  and entries&lt;br /&gt;
# protected by the command 'lock'&lt;br /&gt;
# e.g. password topsecret&lt;br /&gt;
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/&lt;br /&gt;
# password topsecret&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# examples&lt;br /&gt;
#&lt;br /&gt;
# title         Windows 95/98/NT/2000&lt;br /&gt;
# root          (hd0,0)&lt;br /&gt;
# makeactive&lt;br /&gt;
# chainloader   +1&lt;br /&gt;
#&lt;br /&gt;
# title         Linux&lt;br /&gt;
# root          (hd0,1)&lt;br /&gt;
# kernel        /vmlinuz root=/dev/hda2 ro&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
## ## End Default Options ##&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, kernel 2.6.12-10-686&lt;br /&gt;
#lock       # -&amp;gt; Optiune utila daca este activata parola md5, acesta &lt;br /&gt;
            # oprind accesul daca nu este introdusa o parola valida.&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/vmlinuz-2.6.12-10-686 root=/dev/hda2 ro quiet splash&lt;br /&gt;
initrd      /boot/initrd.img-2.6.12-10-686&lt;br /&gt;
savedefault&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, kernel 2.6.12-10-686 (recovery mode)&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/vmlinuz-2.6.12-10-686 root=/dev/hda2 ro single&lt;br /&gt;
initrd      /boot/initrd.img-2.6.12-10-686&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
title       Ubuntu, memtest86+&lt;br /&gt;
root        (hd0,1)&lt;br /&gt;
kernel      /boot/memtest86+.bin&lt;br /&gt;
boot&lt;br /&gt;
&lt;br /&gt;
### END DEBIAN AUTOMAGIC KERNELS LIST&lt;br /&gt;
&lt;br /&gt;
# This is a divider, added to separate the menu items below from&lt;br /&gt;
# the Debian ones.&lt;br /&gt;
title           Other operating systems:&lt;br /&gt;
root&lt;br /&gt;
&lt;br /&gt;
title           FreeBSD&lt;br /&gt;
root            (hd0,2,a)&lt;br /&gt;
&lt;br /&gt;
title           Windows&lt;br /&gt;
rootnoverify    (hd0,3)&lt;br /&gt;
chainloader     +1&lt;br /&gt;
&lt;br /&gt;
# Acesta ultima operatie incarca boot-loader-ul Windows cu ajutorul&lt;br /&gt;
# lui GRUB (operatie numita chainload)&lt;br /&gt;
&lt;br /&gt;
# Pentru operatii mai sofisticate legate de Windows, vedeti &lt;br /&gt;
# sectiunile: hide, map si makeactive din manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''N.a.:'' '''[FIXME]''' De adaugat si completat daca mai e ceva, in principiu vreau sa-l fac tutorial separat si il voi muta intr-un alt articol, aici venind un link catre el.&lt;br /&gt;
&lt;br /&gt;
===== LILO =====&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' Link - articol despre LILO&lt;br /&gt;
&lt;br /&gt;
=== Cum vede Linux celelalte dispozitive din calculatorul meu? ===&lt;br /&gt;
&lt;br /&gt;
=== Kernelul Linux ===&lt;br /&gt;
&lt;br /&gt;
'''N.a.''' Acesta sectiune va lua fiinta in cursul zilei de azi.&lt;br /&gt;
&lt;br /&gt;
==== Module (echivalentul driver-elor) ====&lt;br /&gt;
&lt;br /&gt;
==== Recompilarea kernelului ====&lt;br /&gt;
&lt;br /&gt;
===== linux 2.4 =====&lt;br /&gt;
&lt;br /&gt;
===== linux 2.6 =====&lt;br /&gt;
&lt;br /&gt;
=== Instalarea unei distributii (pe scurt) ===&lt;br /&gt;
&lt;br /&gt;
==== Slackware ====&lt;br /&gt;
==== Debian ====&lt;br /&gt;
==== Ubuntu ====&lt;br /&gt;
==== Fedora Core ====&lt;br /&gt;
==== Mandriva ====&lt;br /&gt;
==== Suse ====&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
&lt;br /&gt;
=== Imblanzirea unei distributii (sau cum fac customize) ===&lt;br /&gt;
&lt;br /&gt;
==== Initializarea sistemului ====&lt;br /&gt;
&lt;br /&gt;
===== /etc =====&lt;br /&gt;
====== /etc/inittab ======&lt;br /&gt;
&lt;br /&gt;
Dupa incarcarea nucleului, verificarea device-urilor existente in sistem si incarcarea driverelor pentru acestea se trece la faza init, programul '''/sbin/init''' fiind lansat pentru a alege o actiune pentru pornire.&lt;br /&gt;
&lt;br /&gt;
Operatiile executate de programul '''init''' sunt controlate de fisierul '''/etc/inittab'''.&lt;br /&gt;
&lt;br /&gt;
Fisierul '''inittab''' contine intrari ce determina anumite actiuni pe care le poate face sistemul in momentul intrarii intr-un nivel de executie.&lt;br /&gt;
&lt;br /&gt;
Formatul fisierului este:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''id:runlevels:action:command'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ex:	&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
1:2345:resppawn: /sbin/mingetty tty1&lt;br /&gt;
ca::ctrlaltdel: /sbin/shutdown -t3 -r now&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unde:	&lt;br /&gt;
&lt;br /&gt;
'''id''' este un identificator unic(caractere alfanumerice)&lt;br /&gt;
&lt;br /&gt;
'''runlevels''' reprezinta lista nivelurilor de rulare(0,1,2,3,4,5,6)&lt;br /&gt;
&lt;br /&gt;
'''0''' procesele sunt terminate si se opreste sistemul &lt;br /&gt;
&lt;br /&gt;
'''1''' se intra in nivelul mono-utilizator(in acest nivel reteaua, interfata grafica si anumite sisteme de fisiere nu fie active); este folosit mai ales pentru recuperarea sistemului in cazuri de urgenta&lt;br /&gt;
&lt;br /&gt;
'''2''' se intra in nivelul multi-utilizator(doar unele procese nu sunt active - NIS NFS AT X)&lt;br /&gt;
&lt;br /&gt;
'''3''' se intra in nivelul multi-utilizator cu acces la serviciile de retea&lt;br /&gt;
&lt;br /&gt;
'''4''' se intra in nivelul personalizat - se recomanda folosirea acestui runlevel pentru cazul in care doriti o versiune proprie (si nestandard) a serviciilor care sunt oprite/pornite&lt;br /&gt;
&lt;br /&gt;
'''5''' se intra in nivelul multi-utilizator cu acces la serviciile de retea si serverul grafic X; folosit mai ales in medii Linux Desktop&lt;br /&gt;
&lt;br /&gt;
'''6''' se opresc toate procesele si se reincarca sistemul de operare&lt;br /&gt;
&lt;br /&gt;
'''action''' actiunea pe care o realizeaza programul init&lt;br /&gt;
&lt;br /&gt;
'''wait''' asteapta incheierea executiei comenzii inainte sa treaca la la alta intrare din inittab&lt;br /&gt;
&lt;br /&gt;
'''respawn''' se lanseaza o noua instanta a unui proces, daca acesta isi incheie executia&lt;br /&gt;
&lt;br /&gt;
'''powerfail''' se executa daca se primeste semnalul SIGPWR de la UPS&lt;br /&gt;
&lt;br /&gt;
'''initdefault''' nivelul de rulare in care se intra dupa terminarea actiunii boot si init (intre 0 si 6 sau literele s sau S care sunt alias-uri pentru runlevel 1); atentie! daca acest runlevel este 0 sau 6 s-ar putea sa nu reusiti sa porniti masina cu Linux!&lt;br /&gt;
&lt;br /&gt;
'''ctrlaltdel''' procesul se executa cand init primeste semnalul SIGINT-cand de la consola se apasa Ctrl+Alt+Del&lt;br /&gt;
&lt;br /&gt;
'''command''' comanda/programul ce se va executa&lt;br /&gt;
&lt;br /&gt;
====== /etc/fstab ======&lt;br /&gt;
&lt;br /&gt;
Fisierul acesta contine informatii despre care partitii doriti sa fie montate la boot, unde sa fie montate, si cu ce opriuni. Mai multe detalii in articolul [[Partitii]], sectiunea [http://wiki.linux360.ro/wiki/Parti%C5%A3ii#Montare Montare]&lt;br /&gt;
&lt;br /&gt;
====== /etc/modules.conf ======&lt;br /&gt;
====== /etc/rc.d ======&lt;br /&gt;
====== SYS V init style ======&lt;br /&gt;
====== BSD init style ======&lt;br /&gt;
&lt;br /&gt;
===== Setarea conexiunii la internet =====&lt;br /&gt;
&lt;br /&gt;
In cele ce urmeaza, vom da cateva indicatii referitoare la cum sa va activati/setati conexiunea la internet.&lt;br /&gt;
&lt;br /&gt;
====== Incarcarea modulului specific ======&lt;br /&gt;
&lt;br /&gt;
Dupa cum am spus si in alte sectiuni, corespondentele driverelor de pe Windows sunt modulele. Asadar, noi trebuie sa identificam ce placa de retea (sau alt dispozitiv specific) avem si sa incarcam modulul necesar pentru a face dispozitivul functional.&lt;br /&gt;
&lt;br /&gt;
Identificati in primul rand ce dispozitiv aveti si apoi cautati a vedeti ce modul se potriveste, urmand sa il incarcati cu comanda: &amp;lt;code&amp;gt;&lt;br /&gt;
modprobe [modul]&lt;br /&gt;
&amp;lt;/code&amp;gt; unde '''[modul]''' evident se va inlocui cu numele modulului specific.&lt;br /&gt;
&lt;br /&gt;
Alternativ, se poate utiliza si comanda '''insmod''' in loc de '''modprobe'''. Ca de obicei, dati '''man insmod''', respectiv '''man modprobe''', pentru detalii.&lt;br /&gt;
&lt;br /&gt;
De exemplu, eu am descoperit cu comanda '''lspci''' ca am o placa de retea cu chipset Realtek 8139, motiv pentru care am cautat pe [http://www.tldp.org/HOWTO/Ethernet-HOWTO.html Ethernet Howto] de la [http://tldp.org The Linux Documentation Project] si am descoperit ca ceea ce imi trebuia era modulul numit '''8139too'''. &lt;br /&gt;
&lt;br /&gt;
Evident, chipset-ul placii de retea in mod normal ar fi trebuit sa-l stiu de dinainte de la achizitie, pentru a fi sigur ca este suportat de sistemul meu de operare. Daca '''lspci''' nu va lamureste, atunci uitati-va pe documentul de la achizitie, cutia in care a venit placa respectiva, sau cel mai bine, direct pe placa.&lt;br /&gt;
&lt;br /&gt;
====== Setari: IP, netmask, broadcast, gateway, DNS ======&lt;br /&gt;
&lt;br /&gt;
Ca '''root''', dati comenzile:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ifconfig eth0 [Your IP address] netmask [netmask] \&lt;br /&gt;
broadcast [broadcast] up&lt;br /&gt;
&lt;br /&gt;
route add default gw [Gateway address]&lt;br /&gt;
cat &amp;quot;nameserver [DNS address No. 1]&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf&lt;br /&gt;
cat &amp;quot;nameserver [DNS address No. 2]&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Peste tot semnele &amp;quot;[ ]&amp;quot; si ce contin intre ele se vor inlocui cu datele necesare, adica adresa IP, netmask-ul, adresa broadcast (optionala deoarece o va calcula el singur de cele mai multe ori), adresa gateway-ului si bineinteles DNS-urile.&lt;br /&gt;
&lt;br /&gt;
Semnul &amp;quot;\&amp;quot; de pe prima linie semnifica faptul ca respectiva comanda se continua si pe randul urmator, altfel spus, de la &amp;quot;ifconfig&amp;quot; pana la &amp;quot;up&amp;quot; avem de-a face cu o singura comanda.&lt;br /&gt;
&lt;br /&gt;
Mai multe despre semnificatia acestor denumiri si multe alte detalii interesante la http://tldp.org/HOWTO/Networking-Overview-HOWTO.html.&lt;br /&gt;
&lt;br /&gt;
====== Un firewall micut care sa ne protejeze ======&lt;br /&gt;
&lt;br /&gt;
Iata un exemplu de firewall relativ intuitiv, cu cele mai de baza optiuni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;start&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Begin firewall script.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/conf/all/rp_filter #Impotriva ip spoofing&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/tcp_syncookies  #Impotriva atacurilor DoS&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/proxy_arp&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_all #Nu raspundem la ping&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/send_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_redirects&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/accept_source_route&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_timestamps&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_sack&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_window_scaling&lt;br /&gt;
echo 60 &amp;gt; /proc/sys/net/ipv4/tcp_fin_timeout&lt;br /&gt;
echo 1800 &amp;gt; /proc/sys/net/ipv4/tcp_keepalive_time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##########&lt;br /&gt;
# POLICY #&lt;br /&gt;
##########&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -P INPUT DROP  # Nu intra nimic &amp;quot;by default&amp;quot; &lt;br /&gt;
iptables -t filter -P OUTPUT ACCEPT&lt;br /&gt;
iptables -t filter -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
##########&lt;br /&gt;
# ACCEPT #&lt;br /&gt;
##########&lt;br /&gt;
&lt;br /&gt;
# Acceptam conexiunile initiate anterior de noi.&lt;br /&gt;
&lt;br /&gt;
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED \&lt;br /&gt;
 -j ACCEPT&lt;br /&gt;
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#################################################################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;End firewall script.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;stop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;Stopping firewall...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -P INPUT DROP&lt;br /&gt;
iptables -t filter -P OUTPUT DROP&lt;br /&gt;
iptables -t filter -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -F&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;restart&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    $0 stop&lt;br /&gt;
    sleep 2&lt;br /&gt;
    $0 start&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;show&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
iptables -t filter -nvxL&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
    *)&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;Usage: firewall&lt;br /&gt;
         {start|stop|restart|show}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
    exit 1&lt;br /&gt;
&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Module (drivere) ====&lt;br /&gt;
&lt;br /&gt;
Mai tineti minte discutia din sectiunea [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Module_.28echivalentul_driver-elor.29 Module]? Pai acum este momentul sa punem in aplicare ce am discutat acolo, deoarece trebuie sa incarcam toate modulele necesare astfel incat dispozitivele din calculatorul nostru sa functioneze asa cum dorim. &lt;br /&gt;
&lt;br /&gt;
===== Placa grafica =====&lt;br /&gt;
&lt;br /&gt;
In cele ce urmeaza vom discuta despre placa grafica si modulele specifice care trebuie instalate astfel incat sa beneficiem de capacitatea ei la maxim.&lt;br /&gt;
&lt;br /&gt;
====== ATI ======&lt;br /&gt;
&lt;br /&gt;
Vedeti articolul [[ATi video (2.6)]]&lt;br /&gt;
&lt;br /&gt;
====== NVidia ======&lt;br /&gt;
&lt;br /&gt;
Intrati pe pagina oficiala NVIDIA, sectiunea Drivers aflata la adresa http://www.nvidia.com/content/drivers/drivers.asp, sau, cel mai bine pentru scopul nostru la adresa http://www.nvidia.com/object/unix.html.&lt;br /&gt;
&lt;br /&gt;
De aici intrati pe pagina care se potriveste cel mai bine cu arhitectura voastra, in cazul meu, Graphics Drivers - Linux IA32 - latest version. La ora actuala cea mai noua versiune este [http://www.nvidia.com/object/linux_display_ia32_1.0-8756.html 1.0-8756]. &lt;br /&gt;
&lt;br /&gt;
Alegerea mea se explica deoarece am un procesor pe 32 de biti si placa grafica NVIDIA Geforce 2 MX400 cu 64MB. Adaptati pentru hardware-ul vostru!&lt;br /&gt;
&lt;br /&gt;
Pe pagina respectiva veti observa niste link-uri care sunt foarte utile, nu le evitati sub nici o forma. Dintre ele, va recomand cu precadere fisierul [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/README/index.html README].&lt;br /&gt;
&lt;br /&gt;
Apoi, evident va luati de pe site ultima varianta a driver-ului, in cazul de fata,  [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/NVIDIA-Linux-x86-1.0-8756-pkg1.run NVIDIA-Linux-x86-1.0-8756-pkg1.run].&lt;br /&gt;
&lt;br /&gt;
Inainte de a continua, verificati daca aveti instalate sursele kernelului, si daca in '''/usr/src/linux/include/linux''' aveti fisierul '''version.h'''. In cazul in care nu il aveti inseamna ca trebuie sa il creati, recompiland kernelul. Daca nu aveti sursele kernelului, instalati-le.&lt;br /&gt;
&lt;br /&gt;
Pentru a crea fisierul version.h, in kernel-urile mai noi de 2.6 trebuie sa compilati macar o data sursele. Pentru a face acest lucru, consultati sectiunea din acest articol referitoare la [http://wiki.linux360.ro/wiki/Ce_este_GNU/Linux%3F_/_Cum_invat_Linux%3F#Recompilarea_kernelului recompilarea kernelului].&lt;br /&gt;
&lt;br /&gt;
De asemenea, asigurati-va ca nu aveti modulele referitoare la framebuffer-ul RIVA (rivafb) sau nvidia compilate deoarece vor intra in conflict cu driverul de la NVIDIA.&lt;br /&gt;
&lt;br /&gt;
Ca sa scapam mai repede de aceste doua mici probleme, exista metode... nu tocmai ortodoxe. Incepeti o compilare a kernelului si o opriti cu CTRL+C dupa ce vedeti ca a compilat version.h, il salvati in alta parte decat in '''/usr/src/linux/include/linux''', dati un make mrproper si apoi copiati la loc version.h de unde l-am luat.&lt;br /&gt;
&lt;br /&gt;
Iar pentru cele doua module care par sa intre in conflict, pur si simplu le mutati de acolo in alta parte, fara a mai necesita nici o recompilare. Din moment ce installer-ul de la NVIDIA nu le gaseste, nu va plange ca intra in conflict cu ele.&lt;br /&gt;
&lt;br /&gt;
Pasul urmator este sa opriti serverul grafic, '''X'''. Metoda fina ar fi sa incercati urmatoarele: '''Logoff''' din meniul de start sau '''xdm stop''', '''gdm stop''', respectiv '''kdm stop''' din consola. Daca nu va merg aceste solutii atunci va trebui sa il ucideti brutal. Dati '''ps uax''' sa-i aflati PID-ul, iar apoi, '''kill [PID]''', unde in loc de [PID], puneti numarul efectiv aflat cu ''ps''. Daca este si mai incapatanat, incercati cu '''kill -9 [PID]''', metoda cea mai agresiva de a-l opri de altfel.&lt;br /&gt;
&lt;br /&gt;
Daca ati oprit serverul grafic inseamna ca sunteti in fata unei console in acest moment. Mergeti in directorul in care ati salvat fisierul de la NVIDIA si dati comanda &amp;lt;code&amp;gt;sh NVIDIA-Linux-x86-1.0-8756-pkg1.run&amp;lt;/code&amp;gt; daca acesta este fisierul pe care l-ati luat. Daca ati luat alt fisier mai nou, evident, adaptati. Va vor mai fi puse cateva intrebari cu raspunsuri intuitive de catre installer. Daca raspundeti bine in curand el va va spune ca isi compileaza modulul.&lt;br /&gt;
&lt;br /&gt;
In final tot ce aveti de facut este sa modificati fisierul '''/etc/X11/xorg.conf''' corespunzator astfel incat sa foloseasca modulul nou compilat de la NVIDIA, in loc de cel standard. Inlocuiti linia &amp;lt;code&amp;gt;     Driver &amp;quot;nv&amp;quot;&lt;br /&gt;
(sau Driver &amp;quot;vesa&amp;quot;)&lt;br /&gt;
(sau Driver &amp;quot;fbdev&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt; cu &amp;lt;code&amp;gt; Driver &amp;quot;nvidia&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De asemenea, stergeti urmatoarele linii:&amp;lt;code&amp;gt;&lt;br /&gt;
Load &amp;quot;dri&amp;quot;&lt;br /&gt;
Load &amp;quot;GLCore&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt; si adaugati-o pe urmatoarea, in cazul in care nu exista deja:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Load &amp;quot;glx&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acestea fiind zise, acum ar trebui doar sa reporniti serverul grafic '''X''' si va veti avea astfel parte de accelerare grafica maxima.&lt;br /&gt;
&lt;br /&gt;
Atentie, acesta este un ghid foarte intuitiv si cu toleranta destul de mica pentru alte probleme ce pot aparea. Daca aveti nedumeriri sau cautati optiuni, respectiv metode de a rezolva anumite probleme mai avansate, nu ezitati sa consultati fisierul [http://download.nvidia.com/XFree86/Linux-x86/1.0-8756/README/index.html README].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' Acesta este un o alta sectiune pe care o voi mai peria, completa si transforma in articol separat, urmand sa pun in locul ei aici un link catre noua locatie.&lt;br /&gt;
&lt;br /&gt;
====== VESA ======&lt;br /&gt;
&lt;br /&gt;
Daca nu aveti placi grafice de la ATI sau de la NVIDIA si nu ati gasit nici un driver de la producatorul original al chipsetului grafic, atunci nu disperati, mai exista sanse. VESA nu ofera capacitati de accelerare 3D si nici putere de procesare foarte mare, dar asigura o imagine de calitate prin functionalitatea ei de baza pentru aproape orice chipset grafic.&lt;br /&gt;
&lt;br /&gt;
'''[FIXME]''' De continuat.&lt;br /&gt;
&lt;br /&gt;
===== Placa audio ===== &lt;br /&gt;
&lt;br /&gt;
==== Configurarea serverului grafic X ====&lt;br /&gt;
&lt;br /&gt;
Editati fisierul '''/etc/X11/xorg.conf'''&lt;br /&gt;
&lt;br /&gt;
===== Desktop managers =====&lt;br /&gt;
&lt;br /&gt;
====== KDE ======&lt;br /&gt;
&lt;br /&gt;
====== Gnome ======&lt;br /&gt;
&lt;br /&gt;
====== Altele ======&lt;br /&gt;
&lt;br /&gt;
=== Cuvant de incheiere ===&lt;br /&gt;
&lt;br /&gt;
Ei bine, in linii mari cam astea au fost intrebarile si raspunsurile care mi-au venit mie in minte. Sper ca am mai facut un pic de lumina in universul Linux pestru cei care abia acum s-au intalnit cu el sau pentru cei care sunt inca pe la inceputuri.&lt;br /&gt;
&lt;br /&gt;
Acesta nu este un ghid complet si nici nu incearca sa trateze foarte in detaliu subiectele in discutie, subiectele mai voluminoase meritand locul lor separat. Motiv pentru care astept sugestii si contributii astfel incat sa-l corectam si sa il imbogatim impreuna acolo unde am uitat ceva important, poate o alta intrebare, poate in alt raspuns, si impreuna sa-l ajutam sa evolueze.&lt;br /&gt;
&lt;br /&gt;
=== DISCLAIMER ===&lt;br /&gt;
&lt;br /&gt;
'''Linux este marca înregistrata a lui Linus Torvalds. Microsoft Windows este marca înregistrata a Microsoft Corporation. Toate celelalte simboluri externe, referiri la alte produse software, respectiv marcile înregistrate din aceasta pagina, aparţin autorilor lor de drept.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bibliografie ===&lt;br /&gt;
* Partea cu make si Makefile e extrasa din cursul de Sisteme de Operare al domnilor profesori Boian Florian si Bufnea Darius, Universitatea Babes-Bolyai Cluj-Napoca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Nota autorului: Documentul este inca in lucru.'''&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1921</id>
		<title>Talk:Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1921"/>
				<updated>2006-01-23T09:03:11Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre politica */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sa fim totusi oameni ==&lt;br /&gt;
* Hai sa nu mai postam anonim, okay? Multumesc ;-) [[User:Csdexter|@Dexter]] 01:45, 11 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
== Corecturi si adaugiri ==&lt;br /&gt;
* Multumesc pentru corectura, [[User:Raptor360|raptor360]] [[User:Csdexter|@Dexter]] 21:14, 11 November 2005 (EET)&lt;br /&gt;
* Am refacut pagina principala dupa ce [[User:Syl|Syl]] o ''remodelase'' din greseala si i-am pus articolul la locul lui. Urmare a acestei situatii, am facut o [[#Despre politica|extensie de politica]]. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [[User:Sin|Sin]], pe pagina principala textele sunt in romaneste -- asa ca fie il faci ''Quagga in Linux'', fie ii fac revert si ramane cum era (i.e. ''Quagga''); asta pana maine la 12:00EET. [[User:Csdexter|@Dexter]] 02:13, 26 November 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.153.211.220]]. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:86.124.16.82]] pentru sugestia de formatare facuta (traiasca Bacaul :P), mi-am luat libertatea de a o extinde pentru toate capetele de lista. [[User:Csdexter|@Dexter]] 14:06, 29 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:200.95.121.64]]. [[User:Csdexter|@Dexter]] 22:41, 30 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru refacerea acestei pagini dupa ce a fost vandalizata de [[User:201.129.129.126]]. [[User:Csdexter|@Dexter]] 17:31, 31 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.128.253.17]]. [[User:Csdexter|@Dexter]] 16:31, 1 January 2006 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.129.146.158]]. [[User:Csdexter|@Dexter]] 11:54, 2 January 2006 (EET)&lt;br /&gt;
* Multumim inca o data lui [[User:Sorin25|Sorin25]] pentru efortul constant depus la intretinerea acestei pagini.&lt;br /&gt;
&lt;br /&gt;
== Despre politica ==&lt;br /&gt;
* Avem doua categorii principale dupa scopul, forma si destinatia documentului ([[:Category:Tutorial|tutorial]] si [[:Category:HowTo|ghid]]) si vom avea cateva (mai multe) categorii secundare dupa domeniul acoperit de acesta (e.g. [[:Category:VM|masini virtuale]], [[:Category:Drivers|drivere]], [[:Category:Programming|programare]]). Pe prima pagina vor fi afisate doar cele doua categorii principale ca si capete de lista urmand ca, in paranteza dupa numele articolului, sa fie trecute categoriile secundare din care acesta face parte. Din pacate, paginile de prezentare nu isi au locul in aceasta structura deoarece scopul acestui Wiki nu este reclama pentru terti. Ca atare, am sa editez pagina principala si il rog pe [[User:Radubolovan|Radu]] sa revina cu un [[:Category:HowTo|ghid de instalare]] sau [[:Category:Tutorial|tutorial]] pentru [[KDSFlash]] astfel ca articolul sau sa poata fi prins in tematica. [[User:Csdexter|@Dexter]] 11:52, 23 November 2005 (EET)&lt;br /&gt;
* Scuze pentru purtarea mea! Cu toate ca nu stiam care sunt regulile, totusi trebuia sa obtin o aprobare (ma gandesc eu) ca sa fac o alta categorie! Voi face un tutorial - curand! [[User:Radubolovan|Radu Bolovan]] 22:38, 23 November 2005 (EET)&lt;br /&gt;
* Nu e cazul de scuze, nu aveai de unde sa stii (poate doar sa deduci). Nu cazul de aprobari si chestii de genul -- ideea e sa se mentina ordinea si coerenta, atata tot. De asemenea, in cazul unei pagini de '''Talk''' (cum este aceasta), se face sectiune noua pentru un subiect de discutie nou -- pentru raspuns simplu, se adauga doar inca un ''punct'' la lista si iti scrii raspunsul si te semnezi pe acelasi rand, la sfarsitul lui folosind &amp;quot;&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&amp;quot;. [[User:Csdexter|@Dexter]] 23:14, 23 November 2005 (EET)&lt;br /&gt;
* La cererea publicului, am mai facut doua categorii principale: [[:Category:Presentation|prezentare]] si [[:Category:Collection|colectie]]; drept pentru care, acum intra si articolul lui [[User:Radubolovan|Radu]], si post-it-urile lui [[User:Syl|Syl]] in tematica si sunt afisate pe prima pagina. Sper ca cu asta am facut pace. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [http://www.linux360.ro/ linux360] are, privitor la toate locurile sale publice incluzand forum-ul si acest wiki, o politica de toleranta nula fata de cei ce abuzeaza numitele spatii de nomenclatura prin folosirea lor in scopuri comerciale (reclame, anunturi) si, '''mai ales''', in cazul in care subiectul acestor reclame sunt medicamente pentru disfunctii sexuale. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Politica de toleranta nula consta, incepand de astazi, in interzicerea irevocabila a acesului pe perioada nedeterminata. [[User:Csdexter|@Dexter]] 23:40, 19 January 2006 (EET)&lt;br /&gt;
* Propun ca sa nu se mai poata edita fara un cont creat in prealabil, cont care sa fie si validat prin mail. [[User:Raptor360|Raptor360]] 08:31, 23 January 2006 (EET)&lt;br /&gt;
* De 2 ori am corectat aceasta pagina in aceeasi zi... devine frustrant. [[User:Raptor360|Raptor360]] 11:03, 23 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Despre interfaţă ==&lt;br /&gt;
* noua interfaţă nu funcţionează corect in IE 60, link-urile din view sunt ascunse parţial de logo. Cuprinsul are un dreptunghi albastru inchis inestetic (nu imi dau seama dacă asta era intenţia). hth --[[User:Sorin25|sorin25]] 11:19, 4 January 2006 (EET)&lt;br /&gt;
* Confirm ca se vede ca naiba si pe NS 7.2 si pe IE 6. Ca sa nu mai vorbesc de faptul ca atunci cand creezi un modul nou al unui program pornind de la un modul existent, faci o ''copie'' a respectivului modul si ''nu'', '''''niciodata''''', nu modifici modulul existent deja (care se poate afla in productie si pot depinde alte module si oameni (clienti) de el). Of of of, Ovidiu! Eu unul am trecut pe Skin-ul &amp;quot;Clasic&amp;quot; pentru ca MonoBook (care este preferatul meu) a devenit impracticabil. [[User:Csdexter|@Dexter]] 11:37, 4 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Sugestii diverse ==&lt;br /&gt;
* se pare ca nenea care tot se joaca cu paginile astea este unul si acelasi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(truncated for clarity)&lt;br /&gt;
&lt;br /&gt;
aut-num:     8151&lt;br /&gt;
aut-num:     28513&lt;br /&gt;
inetnum:     148.221/16&lt;br /&gt;
inetnum:     148.223/16&lt;br /&gt;
inetnum:     148.233/16&lt;br /&gt;
inetnum:     148.235/16&lt;br /&gt;
inetnum:     200.33.136/21&lt;br /&gt;
inetnum:     200.33.144/21&lt;br /&gt;
inetnum:     200.34.32/20&lt;br /&gt;
inetnum:     200.36.32/19&lt;br /&gt;
inetnum:     200.38.128/19&lt;br /&gt;
inetnum:     200.38.192/19&lt;br /&gt;
inetnum:     200.64/15&lt;br /&gt;
inetnum:     200.66.128/17&lt;br /&gt;
inetnum:     200.67/16&lt;br /&gt;
inetnum:     200.78.0/17&lt;br /&gt;
inetnum:     200.79.0/17&lt;br /&gt;
inetnum:     200.95.0/17&lt;br /&gt;
inetnum:     201.96/12&lt;br /&gt;
inetnum:     201.112/13&lt;br /&gt;
inetnum:     201.120/14&lt;br /&gt;
inetnum:     201.124/14&lt;br /&gt;
inetnum:     201.128.0/17&lt;br /&gt;
inetnum:     201.128.128/17&lt;br /&gt;
inetnum:     201.129.0/17&lt;br /&gt;
inetnum:     201.129.128/17&lt;br /&gt;
inetnum:     201.131.52/22&lt;br /&gt;
inetnum:     201.133.0/17&lt;br /&gt;
inetnum:     201.133.128/17&lt;br /&gt;
inetnum:     201.134/16&lt;br /&gt;
inetnum:     201.135.0/17&lt;br /&gt;
inetnum:     201.135.128/17&lt;br /&gt;
inetnum:     201.136/15&lt;br /&gt;
inetnum:     201.138/16&lt;br /&gt;
inetnum:     201.139.160/21&lt;br /&gt;
inetnum:     201.144/14&lt;br /&gt;
inetnum:     201.152/14&lt;br /&gt;
inetnum:     207.248.128/19&lt;br /&gt;
inetnum:     2001:1208::/32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As sugera blocarea intregului set de IP-uri&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1920</id>
		<title>Talk:Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1920"/>
				<updated>2006-01-23T09:02:58Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre politica */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sa fim totusi oameni ==&lt;br /&gt;
* Hai sa nu mai postam anonim, okay? Multumesc ;-) [[User:Csdexter|@Dexter]] 01:45, 11 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
== Corecturi si adaugiri ==&lt;br /&gt;
* Multumesc pentru corectura, [[User:Raptor360|raptor360]] [[User:Csdexter|@Dexter]] 21:14, 11 November 2005 (EET)&lt;br /&gt;
* Am refacut pagina principala dupa ce [[User:Syl|Syl]] o ''remodelase'' din greseala si i-am pus articolul la locul lui. Urmare a acestei situatii, am facut o [[#Despre politica|extensie de politica]]. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [[User:Sin|Sin]], pe pagina principala textele sunt in romaneste -- asa ca fie il faci ''Quagga in Linux'', fie ii fac revert si ramane cum era (i.e. ''Quagga''); asta pana maine la 12:00EET. [[User:Csdexter|@Dexter]] 02:13, 26 November 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.153.211.220]]. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:86.124.16.82]] pentru sugestia de formatare facuta (traiasca Bacaul :P), mi-am luat libertatea de a o extinde pentru toate capetele de lista. [[User:Csdexter|@Dexter]] 14:06, 29 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:200.95.121.64]]. [[User:Csdexter|@Dexter]] 22:41, 30 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru refacerea acestei pagini dupa ce a fost vandalizata de [[User:201.129.129.126]]. [[User:Csdexter|@Dexter]] 17:31, 31 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.128.253.17]]. [[User:Csdexter|@Dexter]] 16:31, 1 January 2006 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.129.146.158]]. [[User:Csdexter|@Dexter]] 11:54, 2 January 2006 (EET)&lt;br /&gt;
* Multumim inca o data lui [[User:Sorin25|Sorin25]] pentru efortul constant depus la intretinerea acestei pagini.&lt;br /&gt;
&lt;br /&gt;
== Despre politica ==&lt;br /&gt;
* Avem doua categorii principale dupa scopul, forma si destinatia documentului ([[:Category:Tutorial|tutorial]] si [[:Category:HowTo|ghid]]) si vom avea cateva (mai multe) categorii secundare dupa domeniul acoperit de acesta (e.g. [[:Category:VM|masini virtuale]], [[:Category:Drivers|drivere]], [[:Category:Programming|programare]]). Pe prima pagina vor fi afisate doar cele doua categorii principale ca si capete de lista urmand ca, in paranteza dupa numele articolului, sa fie trecute categoriile secundare din care acesta face parte. Din pacate, paginile de prezentare nu isi au locul in aceasta structura deoarece scopul acestui Wiki nu este reclama pentru terti. Ca atare, am sa editez pagina principala si il rog pe [[User:Radubolovan|Radu]] sa revina cu un [[:Category:HowTo|ghid de instalare]] sau [[:Category:Tutorial|tutorial]] pentru [[KDSFlash]] astfel ca articolul sau sa poata fi prins in tematica. [[User:Csdexter|@Dexter]] 11:52, 23 November 2005 (EET)&lt;br /&gt;
* Scuze pentru purtarea mea! Cu toate ca nu stiam care sunt regulile, totusi trebuia sa obtin o aprobare (ma gandesc eu) ca sa fac o alta categorie! Voi face un tutorial - curand! [[User:Radubolovan|Radu Bolovan]] 22:38, 23 November 2005 (EET)&lt;br /&gt;
* Nu e cazul de scuze, nu aveai de unde sa stii (poate doar sa deduci). Nu cazul de aprobari si chestii de genul -- ideea e sa se mentina ordinea si coerenta, atata tot. De asemenea, in cazul unei pagini de '''Talk''' (cum este aceasta), se face sectiune noua pentru un subiect de discutie nou -- pentru raspuns simplu, se adauga doar inca un ''punct'' la lista si iti scrii raspunsul si te semnezi pe acelasi rand, la sfarsitul lui folosind &amp;quot;&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&amp;quot;. [[User:Csdexter|@Dexter]] 23:14, 23 November 2005 (EET)&lt;br /&gt;
* La cererea publicului, am mai facut doua categorii principale: [[:Category:Presentation|prezentare]] si [[:Category:Collection|colectie]]; drept pentru care, acum intra si articolul lui [[User:Radubolovan|Radu]], si post-it-urile lui [[User:Syl|Syl]] in tematica si sunt afisate pe prima pagina. Sper ca cu asta am facut pace. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [http://www.linux360.ro/ linux360] are, privitor la toate locurile sale publice incluzand forum-ul si acest wiki, o politica de toleranta nula fata de cei ce abuzeaza numitele spatii de nomenclatura prin folosirea lor in scopuri comerciale (reclame, anunturi) si, '''mai ales''', in cazul in care subiectul acestor reclame sunt medicamente pentru disfunctii sexuale. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Politica de toleranta nula consta, incepand de astazi, in interzicerea irevocabila a acesului pe perioada nedeterminata. [[User:Csdexter|@Dexter]] 23:40, 19 January 2006 (EET)&lt;br /&gt;
* Propun ca sa nu se mai poata edita fara un cont creat in prealabil, cont care sa fie si validat prin mail. [[User:Raptor360|Raptor360]] 08:31, 23 January 2006 (EET)&lt;br /&gt;
* De 2 ori am corectat aceasta pagina in aceeasi zi... devine frustrant.&lt;br /&gt;
&lt;br /&gt;
== Despre interfaţă ==&lt;br /&gt;
* noua interfaţă nu funcţionează corect in IE 60, link-urile din view sunt ascunse parţial de logo. Cuprinsul are un dreptunghi albastru inchis inestetic (nu imi dau seama dacă asta era intenţia). hth --[[User:Sorin25|sorin25]] 11:19, 4 January 2006 (EET)&lt;br /&gt;
* Confirm ca se vede ca naiba si pe NS 7.2 si pe IE 6. Ca sa nu mai vorbesc de faptul ca atunci cand creezi un modul nou al unui program pornind de la un modul existent, faci o ''copie'' a respectivului modul si ''nu'', '''''niciodata''''', nu modifici modulul existent deja (care se poate afla in productie si pot depinde alte module si oameni (clienti) de el). Of of of, Ovidiu! Eu unul am trecut pe Skin-ul &amp;quot;Clasic&amp;quot; pentru ca MonoBook (care este preferatul meu) a devenit impracticabil. [[User:Csdexter|@Dexter]] 11:37, 4 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Sugestii diverse ==&lt;br /&gt;
* se pare ca nenea care tot se joaca cu paginile astea este unul si acelasi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(truncated for clarity)&lt;br /&gt;
&lt;br /&gt;
aut-num:     8151&lt;br /&gt;
aut-num:     28513&lt;br /&gt;
inetnum:     148.221/16&lt;br /&gt;
inetnum:     148.223/16&lt;br /&gt;
inetnum:     148.233/16&lt;br /&gt;
inetnum:     148.235/16&lt;br /&gt;
inetnum:     200.33.136/21&lt;br /&gt;
inetnum:     200.33.144/21&lt;br /&gt;
inetnum:     200.34.32/20&lt;br /&gt;
inetnum:     200.36.32/19&lt;br /&gt;
inetnum:     200.38.128/19&lt;br /&gt;
inetnum:     200.38.192/19&lt;br /&gt;
inetnum:     200.64/15&lt;br /&gt;
inetnum:     200.66.128/17&lt;br /&gt;
inetnum:     200.67/16&lt;br /&gt;
inetnum:     200.78.0/17&lt;br /&gt;
inetnum:     200.79.0/17&lt;br /&gt;
inetnum:     200.95.0/17&lt;br /&gt;
inetnum:     201.96/12&lt;br /&gt;
inetnum:     201.112/13&lt;br /&gt;
inetnum:     201.120/14&lt;br /&gt;
inetnum:     201.124/14&lt;br /&gt;
inetnum:     201.128.0/17&lt;br /&gt;
inetnum:     201.128.128/17&lt;br /&gt;
inetnum:     201.129.0/17&lt;br /&gt;
inetnum:     201.129.128/17&lt;br /&gt;
inetnum:     201.131.52/22&lt;br /&gt;
inetnum:     201.133.0/17&lt;br /&gt;
inetnum:     201.133.128/17&lt;br /&gt;
inetnum:     201.134/16&lt;br /&gt;
inetnum:     201.135.0/17&lt;br /&gt;
inetnum:     201.135.128/17&lt;br /&gt;
inetnum:     201.136/15&lt;br /&gt;
inetnum:     201.138/16&lt;br /&gt;
inetnum:     201.139.160/21&lt;br /&gt;
inetnum:     201.144/14&lt;br /&gt;
inetnum:     201.152/14&lt;br /&gt;
inetnum:     207.248.128/19&lt;br /&gt;
inetnum:     2001:1208::/32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As sugera blocarea intregului set de IP-uri&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1919</id>
		<title>Talk:Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1919"/>
				<updated>2006-01-23T09:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sa fim totusi oameni ==&lt;br /&gt;
* Hai sa nu mai postam anonim, okay? Multumesc ;-) [[User:Csdexter|@Dexter]] 01:45, 11 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
== Corecturi si adaugiri ==&lt;br /&gt;
* Multumesc pentru corectura, [[User:Raptor360|raptor360]] [[User:Csdexter|@Dexter]] 21:14, 11 November 2005 (EET)&lt;br /&gt;
* Am refacut pagina principala dupa ce [[User:Syl|Syl]] o ''remodelase'' din greseala si i-am pus articolul la locul lui. Urmare a acestei situatii, am facut o [[#Despre politica|extensie de politica]]. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [[User:Sin|Sin]], pe pagina principala textele sunt in romaneste -- asa ca fie il faci ''Quagga in Linux'', fie ii fac revert si ramane cum era (i.e. ''Quagga''); asta pana maine la 12:00EET. [[User:Csdexter|@Dexter]] 02:13, 26 November 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.153.211.220]]. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:86.124.16.82]] pentru sugestia de formatare facuta (traiasca Bacaul :P), mi-am luat libertatea de a o extinde pentru toate capetele de lista. [[User:Csdexter|@Dexter]] 14:06, 29 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:200.95.121.64]]. [[User:Csdexter|@Dexter]] 22:41, 30 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru refacerea acestei pagini dupa ce a fost vandalizata de [[User:201.129.129.126]]. [[User:Csdexter|@Dexter]] 17:31, 31 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.128.253.17]]. [[User:Csdexter|@Dexter]] 16:31, 1 January 2006 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.129.146.158]]. [[User:Csdexter|@Dexter]] 11:54, 2 January 2006 (EET)&lt;br /&gt;
* Multumim inca o data lui [[User:Sorin25|Sorin25]] pentru efortul constant depus la intretinerea acestei pagini.&lt;br /&gt;
&lt;br /&gt;
== Despre politica ==&lt;br /&gt;
* Avem doua categorii principale dupa scopul, forma si destinatia documentului ([[:Category:Tutorial|tutorial]] si [[:Category:HowTo|ghid]]) si vom avea cateva (mai multe) categorii secundare dupa domeniul acoperit de acesta (e.g. [[:Category:VM|masini virtuale]], [[:Category:Drivers|drivere]], [[:Category:Programming|programare]]). Pe prima pagina vor fi afisate doar cele doua categorii principale ca si capete de lista urmand ca, in paranteza dupa numele articolului, sa fie trecute categoriile secundare din care acesta face parte. Din pacate, paginile de prezentare nu isi au locul in aceasta structura deoarece scopul acestui Wiki nu este reclama pentru terti. Ca atare, am sa editez pagina principala si il rog pe [[User:Radubolovan|Radu]] sa revina cu un [[:Category:HowTo|ghid de instalare]] sau [[:Category:Tutorial|tutorial]] pentru [[KDSFlash]] astfel ca articolul sau sa poata fi prins in tematica. [[User:Csdexter|@Dexter]] 11:52, 23 November 2005 (EET)&lt;br /&gt;
* Scuze pentru purtarea mea! Cu toate ca nu stiam care sunt regulile, totusi trebuia sa obtin o aprobare (ma gandesc eu) ca sa fac o alta categorie! Voi face un tutorial - curand! [[User:Radubolovan|Radu Bolovan]] 22:38, 23 November 2005 (EET)&lt;br /&gt;
* Nu e cazul de scuze, nu aveai de unde sa stii (poate doar sa deduci). Nu cazul de aprobari si chestii de genul -- ideea e sa se mentina ordinea si coerenta, atata tot. De asemenea, in cazul unei pagini de '''Talk''' (cum este aceasta), se face sectiune noua pentru un subiect de discutie nou -- pentru raspuns simplu, se adauga doar inca un ''punct'' la lista si iti scrii raspunsul si te semnezi pe acelasi rand, la sfarsitul lui folosind &amp;quot;&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&amp;quot;. [[User:Csdexter|@Dexter]] 23:14, 23 November 2005 (EET)&lt;br /&gt;
* La cererea publicului, am mai facut doua categorii principale: [[:Category:Presentation|prezentare]] si [[:Category:Collection|colectie]]; drept pentru care, acum intra si articolul lui [[User:Radubolovan|Radu]], si post-it-urile lui [[User:Syl|Syl]] in tematica si sunt afisate pe prima pagina. Sper ca cu asta am facut pace. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [http://www.linux360.ro/ linux360] are, privitor la toate locurile sale publice incluzand forum-ul si acest wiki, o politica de toleranta nula fata de cei ce abuzeaza numitele spatii de nomenclatura prin folosirea lor in scopuri comerciale (reclame, anunturi) si, '''mai ales''', in cazul in care subiectul acestor reclame sunt medicamente pentru disfunctii sexuale. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Politica de toleranta nula consta, incepand de astazi, in interzicerea irevocabila a acesului pe perioada nedeterminata. [[User:Csdexter|@Dexter]] 23:40, 19 January 2006 (EET)&lt;br /&gt;
* Propun ca sa nu se mai poata edita fara un cont creat in prealabil, cont care sa fie si validat prin mail. [[User:Raptor360|Raptor360]] 08:31, 23 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Despre interfaţă ==&lt;br /&gt;
* noua interfaţă nu funcţionează corect in IE 60, link-urile din view sunt ascunse parţial de logo. Cuprinsul are un dreptunghi albastru inchis inestetic (nu imi dau seama dacă asta era intenţia). hth --[[User:Sorin25|sorin25]] 11:19, 4 January 2006 (EET)&lt;br /&gt;
* Confirm ca se vede ca naiba si pe NS 7.2 si pe IE 6. Ca sa nu mai vorbesc de faptul ca atunci cand creezi un modul nou al unui program pornind de la un modul existent, faci o ''copie'' a respectivului modul si ''nu'', '''''niciodata''''', nu modifici modulul existent deja (care se poate afla in productie si pot depinde alte module si oameni (clienti) de el). Of of of, Ovidiu! Eu unul am trecut pe Skin-ul &amp;quot;Clasic&amp;quot; pentru ca MonoBook (care este preferatul meu) a devenit impracticabil. [[User:Csdexter|@Dexter]] 11:37, 4 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Sugestii diverse ==&lt;br /&gt;
* se pare ca nenea care tot se joaca cu paginile astea este unul si acelasi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(truncated for clarity)&lt;br /&gt;
&lt;br /&gt;
aut-num:     8151&lt;br /&gt;
aut-num:     28513&lt;br /&gt;
inetnum:     148.221/16&lt;br /&gt;
inetnum:     148.223/16&lt;br /&gt;
inetnum:     148.233/16&lt;br /&gt;
inetnum:     148.235/16&lt;br /&gt;
inetnum:     200.33.136/21&lt;br /&gt;
inetnum:     200.33.144/21&lt;br /&gt;
inetnum:     200.34.32/20&lt;br /&gt;
inetnum:     200.36.32/19&lt;br /&gt;
inetnum:     200.38.128/19&lt;br /&gt;
inetnum:     200.38.192/19&lt;br /&gt;
inetnum:     200.64/15&lt;br /&gt;
inetnum:     200.66.128/17&lt;br /&gt;
inetnum:     200.67/16&lt;br /&gt;
inetnum:     200.78.0/17&lt;br /&gt;
inetnum:     200.79.0/17&lt;br /&gt;
inetnum:     200.95.0/17&lt;br /&gt;
inetnum:     201.96/12&lt;br /&gt;
inetnum:     201.112/13&lt;br /&gt;
inetnum:     201.120/14&lt;br /&gt;
inetnum:     201.124/14&lt;br /&gt;
inetnum:     201.128.0/17&lt;br /&gt;
inetnum:     201.128.128/17&lt;br /&gt;
inetnum:     201.129.0/17&lt;br /&gt;
inetnum:     201.129.128/17&lt;br /&gt;
inetnum:     201.131.52/22&lt;br /&gt;
inetnum:     201.133.0/17&lt;br /&gt;
inetnum:     201.133.128/17&lt;br /&gt;
inetnum:     201.134/16&lt;br /&gt;
inetnum:     201.135.0/17&lt;br /&gt;
inetnum:     201.135.128/17&lt;br /&gt;
inetnum:     201.136/15&lt;br /&gt;
inetnum:     201.138/16&lt;br /&gt;
inetnum:     201.139.160/21&lt;br /&gt;
inetnum:     201.144/14&lt;br /&gt;
inetnum:     201.152/14&lt;br /&gt;
inetnum:     207.248.128/19&lt;br /&gt;
inetnum:     2001:1208::/32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As sugera blocarea intregului set de IP-uri&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1917</id>
		<title>Talk:Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Tutorials&amp;diff=1917"/>
				<updated>2006-01-23T06:31:15Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre politica */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sa fim totusi oameni ==&lt;br /&gt;
* Hai sa nu mai postam anonim, okay? Multumesc ;-) [[User:Csdexter|@Dexter]] 01:45, 11 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
== Corecturi si adaugiri ==&lt;br /&gt;
* Multumesc pentru corectura, [[User:Raptor360|raptor360]] [[User:Csdexter|@Dexter]] 21:14, 11 November 2005 (EET)&lt;br /&gt;
* Am refacut pagina principala dupa ce [[User:Syl|Syl]] o ''remodelase'' din greseala si i-am pus articolul la locul lui. Urmare a acestei situatii, am facut o [[#Despre politica|extensie de politica]]. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [[User:Sin|Sin]], pe pagina principala textele sunt in romaneste -- asa ca fie il faci ''Quagga in Linux'', fie ii fac revert si ramane cum era (i.e. ''Quagga''); asta pana maine la 12:00EET. [[User:Csdexter|@Dexter]] 02:13, 26 November 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.153.211.220]]. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:86.124.16.82]] pentru sugestia de formatare facuta (traiasca Bacaul :P), mi-am luat libertatea de a o extinde pentru toate capetele de lista. [[User:Csdexter|@Dexter]] 14:06, 29 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:200.95.121.64]]. [[User:Csdexter|@Dexter]] 22:41, 30 December 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru refacerea acestei pagini dupa ce a fost vandalizata de [[User:201.129.129.126]]. [[User:Csdexter|@Dexter]] 17:31, 31 December 2005 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.128.253.17]]. [[User:Csdexter|@Dexter]] 16:31, 1 January 2006 (EET)&lt;br /&gt;
* Am refacut aceasta pagina dupa ce fusese vandalizata de [[User:201.129.146.158]]. [[User:Csdexter|@Dexter]] 11:54, 2 January 2006 (EET)&lt;br /&gt;
* Multumim inca o data lui [[User:Sorin25|Sorin25]] pentru efortul constant depus la intretinerea acestei pagini.&lt;br /&gt;
&lt;br /&gt;
== Despre politica ==&lt;br /&gt;
* Avem doua categorii principale dupa scopul, forma si destinatia documentului ([[:Category:Tutorial|tutorial]] si [[:Category:HowTo|ghid]]) si vom avea cateva (mai multe) categorii secundare dupa domeniul acoperit de acesta (e.g. [[:Category:VM|masini virtuale]], [[:Category:Drivers|drivere]], [[:Category:Programming|programare]]). Pe prima pagina vor fi afisate doar cele doua categorii principale ca si capete de lista urmand ca, in paranteza dupa numele articolului, sa fie trecute categoriile secundare din care acesta face parte. Din pacate, paginile de prezentare nu isi au locul in aceasta structura deoarece scopul acestui Wiki nu este reclama pentru terti. Ca atare, am sa editez pagina principala si il rog pe [[User:Radubolovan|Radu]] sa revina cu un [[:Category:HowTo|ghid de instalare]] sau [[:Category:Tutorial|tutorial]] pentru [[KDSFlash]] astfel ca articolul sau sa poata fi prins in tematica. [[User:Csdexter|@Dexter]] 11:52, 23 November 2005 (EET)&lt;br /&gt;
* Scuze pentru purtarea mea! Cu toate ca nu stiam care sunt regulile, totusi trebuia sa obtin o aprobare (ma gandesc eu) ca sa fac o alta categorie! Voi face un tutorial - curand! [[User:Radubolovan|Radu Bolovan]] 22:38, 23 November 2005 (EET)&lt;br /&gt;
* Nu e cazul de scuze, nu aveai de unde sa stii (poate doar sa deduci). Nu cazul de aprobari si chestii de genul -- ideea e sa se mentina ordinea si coerenta, atata tot. De asemenea, in cazul unei pagini de '''Talk''' (cum este aceasta), se face sectiune noua pentru un subiect de discutie nou -- pentru raspuns simplu, se adauga doar inca un ''punct'' la lista si iti scrii raspunsul si te semnezi pe acelasi rand, la sfarsitul lui folosind &amp;quot;&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&amp;quot;. [[User:Csdexter|@Dexter]] 23:14, 23 November 2005 (EET)&lt;br /&gt;
* La cererea publicului, am mai facut doua categorii principale: [[:Category:Presentation|prezentare]] si [[:Category:Collection|colectie]]; drept pentru care, acum intra si articolul lui [[User:Radubolovan|Radu]], si post-it-urile lui [[User:Syl|Syl]] in tematica si sunt afisate pe prima pagina. Sper ca cu asta am facut pace. [[User:Csdexter|@Dexter]] 00:10, 25 November 2005 (EET)&lt;br /&gt;
* [http://www.linux360.ro/ linux360] are, privitor la toate locurile sale publice incluzand forum-ul si acest wiki, o politica de toleranta nula fata de cei ce abuzeaza numitele spatii de nomenclatura prin folosirea lor in scopuri comerciale (reclame, anunturi) si, '''mai ales''', in cazul in care subiectul acestor reclame sunt medicamente pentru disfunctii sexuale. [[User:Csdexter|@Dexter]] 20:58, 27 December 2005 (EET)&lt;br /&gt;
* Politica de toleranta nula consta, incepand de astazi, in interzicerea irevocabila a acesului pe perioada nedeterminata. [[User:Csdexter|@Dexter]] 23:40, 19 January 2006 (EET)&lt;br /&gt;
* Propun ca sa nu se mai poata edita fara un cont creat in prealabil, cont care sa fie si validat prin mail. [[User:Raptor360|Raptor360]] 08:31, 23 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Despre interfaţă ==&lt;br /&gt;
* noua interfaţă nu funcţionează corect in IE 60, link-urile din view sunt ascunse parţial de logo. Cuprinsul are un dreptunghi albastru inchis inestetic (nu imi dau seama dacă asta era intenţia). hth --[[User:Sorin25|sorin25]] 11:19, 4 January 2006 (EET)&lt;br /&gt;
* Confirm ca se vede ca naiba si pe NS 7.2 si pe IE 6. Ca sa nu mai vorbesc de faptul ca atunci cand creezi un modul nou al unui program pornind de la un modul existent, faci o ''copie'' a respectivului modul si ''nu'', '''''niciodata''''', nu modifici modulul existent deja (care se poate afla in productie si pot depinde alte module si oameni (clienti) de el). Of of of, Ovidiu! Eu unul am trecut pe Skin-ul &amp;quot;Clasic&amp;quot; pentru ca MonoBook (care este preferatul meu) a devenit impracticabil. [[User:Csdexter|@Dexter]] 11:37, 4 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
== Sugestii diverse ==&lt;br /&gt;
* se pare ca nenea care tot se joaca cu paginile astea este unul si acelasi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(truncated for clarity)&lt;br /&gt;
&lt;br /&gt;
aut-num:     8151&lt;br /&gt;
aut-num:     28513&lt;br /&gt;
inetnum:     148.221/16&lt;br /&gt;
inetnum:     148.223/16&lt;br /&gt;
inetnum:     148.233/16&lt;br /&gt;
inetnum:     148.235/16&lt;br /&gt;
inetnum:     200.33.136/21&lt;br /&gt;
inetnum:     200.33.144/21&lt;br /&gt;
inetnum:     200.34.32/20&lt;br /&gt;
inetnum:     200.36.32/19&lt;br /&gt;
inetnum:     200.38.128/19&lt;br /&gt;
inetnum:     200.38.192/19&lt;br /&gt;
inetnum:     200.64/15&lt;br /&gt;
inetnum:     200.66.128/17&lt;br /&gt;
inetnum:     200.67/16&lt;br /&gt;
inetnum:     200.78.0/17&lt;br /&gt;
inetnum:     200.79.0/17&lt;br /&gt;
inetnum:     200.95.0/17&lt;br /&gt;
inetnum:     201.96/12&lt;br /&gt;
inetnum:     201.112/13&lt;br /&gt;
inetnum:     201.120/14&lt;br /&gt;
inetnum:     201.124/14&lt;br /&gt;
inetnum:     201.128.0/17&lt;br /&gt;
inetnum:     201.128.128/17&lt;br /&gt;
inetnum:     201.129.0/17&lt;br /&gt;
inetnum:     201.129.128/17&lt;br /&gt;
inetnum:     201.131.52/22&lt;br /&gt;
inetnum:     201.133.0/17&lt;br /&gt;
inetnum:     201.133.128/17&lt;br /&gt;
inetnum:     201.134/16&lt;br /&gt;
inetnum:     201.135.0/17&lt;br /&gt;
inetnum:     201.135.128/17&lt;br /&gt;
inetnum:     201.136/15&lt;br /&gt;
inetnum:     201.138/16&lt;br /&gt;
inetnum:     201.139.160/21&lt;br /&gt;
inetnum:     201.144/14&lt;br /&gt;
inetnum:     201.152/14&lt;br /&gt;
inetnum:     207.248.128/19&lt;br /&gt;
inetnum:     2001:1208::/32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As sugera blocarea intregului set de IP-uri&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=1895</id>
		<title>Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=1895"/>
				<updated>2006-01-20T01:08:46Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Programul de test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Acesta se vrea un mini ghid despre controlul unui motor pas cu pas unipolar cu ajutorul linux-ului si a portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Motoarele pas cu pas unipoloare==&lt;br /&gt;
Motoarele la care voi face referinta sunt motoare de curent continuu care se alimenteaza la 12-25V si au proprietatea de a putea&lt;br /&gt;
controla fiecare pas facut de aceste motoare. Un pas are de obicei 1,8 grade, ceea ce inseamna ca o rotatie completa inseamna 200&lt;br /&gt;
de pasi.&lt;br /&gt;
Motoarele pas cu pas unipolare au de obicei 5 sau 6 fire, exista si cu 8 fire dar exista posibilitatea ca acestea sa fie si bipolare.&lt;br /&gt;
&lt;br /&gt;
Schema unui motor cu 5 fire [[Image:5wire.jpg]] &lt;br /&gt;
Schema unui motor cu 6 fire [[Image:6wire.jpg]]&lt;br /&gt;
&lt;br /&gt;
Asa cum observam din cele doua scheme constructia este asemanatoare, singura diferenta fiind alimentarea. La motorul cu 5 fire numai un fir este de alimentare (firul marcat common) restul de control la cel  cu 6 fire sunt 2 fire de alimentare (firele marcate A si B). Daca la motorul cu 6 fire unim cele 2 fire de alimentare obtinem un motor pas cu pas cu 5. Concluzia daca invatam sa comandam unul din cele 2 il vom comanda si pe celalalt. &lt;br /&gt;
Pentru a afla care sunt firele noastre de alimentare vom masura rezistenta intre fire. Intre firul de alimentare si capete va fi o &lt;br /&gt;
rezistenta pe jumatate decat in cazul masurarii rezistentei intre 2 capete. La motorul cu 6 fire Orice combinatie A(+-)B(+-) nu va intoarce nici o rezistenta cele 2 fire nefiind legate.&lt;br /&gt;
Motoarele pas cu pas se controleaza aplicand o tensiune pe firele de control. Modul de control este prezentat in figura urmatoare:&lt;br /&gt;
&lt;br /&gt;
[[Image:Step.gif]]&lt;br /&gt;
&lt;br /&gt;
Pentru schimbarea sensului de rotatie pur si simplu se trimit comenzile in sens invers.&lt;br /&gt;
&lt;br /&gt;
==Schema portului lpt==&lt;br /&gt;
[[Image:Lpt.jpg]]&lt;br /&gt;
Asa cum se vede si din imagine pinii 18-25 sunt pentru masa, iar cei folositi de noi pentru transmiterea datelor vor fi pinii 2-8&lt;br /&gt;
&lt;br /&gt;
==Cum facem montajul==&lt;br /&gt;
Deoarece motorul lucreaza cu tensiuni cu mult peste posibilitatile portului nostru lpt. O sa avem nevoie de o alimentare externa,&lt;br /&gt;
dar si de o protectie a portului nostru. Pentru aceasta o sa folosim cipul uln2003 sau uln2803a si o dioda zenner de 12V&lt;br /&gt;
&lt;br /&gt;
Schema este urmatoarea [[Image:Lptmot.jpg]]&lt;br /&gt;
&lt;br /&gt;
Trebuie sa mai adaugam o legatura intre unul din pinii de gnd(18-25) de la portul lpt cu masa si una de la pin-ul gnd al chip-ului cu masa. Si sa avem grija, ca firele motorului sa fie legate A+B+A-B- la pinii 2-5 ai portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Programul de test==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define porta 0x378&lt;br /&gt;
&lt;br /&gt;
const char *filename;&lt;br /&gt;
&lt;br /&gt;
int main(int argc,char *argv[]) {&lt;br /&gt;
 &lt;br /&gt;
  int fd;&lt;br /&gt;
  filename = &amp;quot;/dev/lp0&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  ioperm(porta,3L,1);&lt;br /&gt;
  fd = open(filename, O_RDWR);&lt;br /&gt;
  if (fd &amp;lt; 0) {&lt;br /&gt;
     printf(&amp;quot;bla bla bla eroare %s\n&amp;quot;, filename);&lt;br /&gt;
     exit(1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (;;){&lt;br /&gt;
     outb(3,porta);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     outb(6,porta);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     outb(12,porta);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     outb(9,porta);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  close(fd);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Administrare,_configurare_%C3%85%C5%B8i_intre%C3%85%C2%A3inere_servere&amp;diff=1894</id>
		<title>Talk:Administrare, configurare ÅŸi intreÅ£inere servere</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Administrare,_configurare_%C3%85%C5%B8i_intre%C3%85%C2%A3inere_servere&amp;diff=1894"/>
				<updated>2006-01-20T00:59:52Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* csdexter, dă-mi voie să te felicit. Sunt plăcut surprins. O pagină în genul acesta căutam de multă vreme pentru a o putea arăta omuleţilor interesaţi de administrare Linux. Încă o dată felicitări şi mulţumim. [[User:Raptor360|Raptor360]] 02:59, 20 January 2006 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Salutare_lume!&amp;diff=1893</id>
		<title>Talk:Salutare lume!</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Salutare_lume!&amp;diff=1893"/>
				<updated>2006-01-20T00:54:26Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre corecturi şi adăugiri */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Despre corecturi şi adăugiri==&lt;br /&gt;
* Acel ; dupa blocul main(){} in C era inutil. [[User:Raptor360|Raptor360]] 23:31, 17 January 2006 (EET)&lt;br /&gt;
* Inutil dar nu ilegal. Standardul ce spune? Daca ANSI C nu specifica expres ca &amp;quot;;&amp;quot; dupa &amp;quot;}&amp;quot; a lui main() e ilegal, atunci il pun la loc. [[User:Csdexter|@Dexter]] 00:03, 18 January 2006 (EET)&lt;br /&gt;
* Ai spus chiar tu: ''&amp;quot;...să fie tratate în varianta standard a limbajului folosit...&amp;quot;''. In practica e echivalent cu a scrie ceva gen '''printf(&amp;quot;asd&amp;quot;);;;;;;''' pentru ca este tot legal, dar tot inutil. Varianta standard e fara ; dupa {}. [[User:Raptor360|Raptor360]] 02:54, 20 January 2006 (EET)&lt;br /&gt;
* Sectiunea [[Salutare lume!#Introducere|introductiva]] contine metafore. Multumesc frumos pentru adaugarea diacriticelor, dar metaforele am sa mi le refac. [[User:Csdexter|@Dexter]] 00:05, 18 January 2006 (EET)&lt;br /&gt;
&lt;br /&gt;
==Despre continut==&lt;br /&gt;
* Brainfuck se ruleaza cu ? [[User:Sorin25|sorin25]] 18:23, 18 January 2006 (EET)&lt;br /&gt;
* Exista compilatoare pentru el. Unul e dat pe forum si multe alte informatii se gasesc si [http://en.wikipedia.org/wiki/Brainfuck aici]. [[User:Csdexter|@Dexter]] 22:26, 18 January 2006 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Salutare_lume!&amp;diff=1845</id>
		<title>Salutare lume!</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Salutare_lume!&amp;diff=1845"/>
				<updated>2006-01-17T21:43:00Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Introducere */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
Am creeat acest articol din dorinţa de a arăta lumii diversitatea limbajelor existente în informatică.&lt;br /&gt;
&lt;br /&gt;
Ceea ce urmează sunt moduri de a afişa pe ecran ''Salutare, lume!'' (''Hello, world!'' în limba engleză) în diverse limbaje de programare. Puteţi adăuga exemple noi cu condiţia să fie corecte programatic, să fie tratate în varianta standard a limbajului folosit şi să rămână sortate în ordine alfabetică.&lt;br /&gt;
&lt;br /&gt;
Urmează exemplele:&lt;br /&gt;
&lt;br /&gt;
==Bash==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
exit 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BASIC==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;basic/&amp;gt;10 PRINT &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
20 STOP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ANSI C==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
  printf(&amp;quot;Hello, world!\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C++==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Hello, world!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pascal==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pascal/&amp;gt;program HelloWorld;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
 writeln('Hello, world!');&lt;br /&gt;
end.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;html/&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 echo &amp;quot;Hello, world!&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
 &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;java/&amp;gt;public class MainApplication {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.println(&amp;quot;Hello, world!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Salutare_lume!&amp;diff=1844</id>
		<title>Talk:Salutare lume!</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Salutare_lume!&amp;diff=1844"/>
				<updated>2006-01-17T21:31:40Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Acel ; dupa blocul main(){} in C era inutil. [[User:Raptor360|Raptor360]] 23:31, 17 January 2006 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Salutare_lume!&amp;diff=1843</id>
		<title>Talk:Salutare lume!</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Salutare_lume!&amp;diff=1843"/>
				<updated>2006-01-17T21:31:06Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Acel ; dupa blocul main(){} in C era inutil.&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Salutare_lume!&amp;diff=1842</id>
		<title>Salutare lume!</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Salutare_lume!&amp;diff=1842"/>
				<updated>2006-01-17T21:27:30Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
Am creeat acest articol din dorinta de a arata lumii diversitatea limbilor existente in informatica.&lt;br /&gt;
&lt;br /&gt;
Ceea ce urmeaza sunt moduri de a spune ''Salutare, lume!'' in diverse limbaje de programare. Puteti adauga exemple noi cu conditia sa fie corecte programatic, sa fie tratate in varianta standard a limbajului folosit si sa ramana sortate in ordine alfabetica.&lt;br /&gt;
&lt;br /&gt;
Urmeaza exemplele:&lt;br /&gt;
&lt;br /&gt;
==Bash==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;sh/&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
exit 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BASIC==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;basic/&amp;gt;10 PRINT &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
20 STOP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ANSI C==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
  printf(&amp;quot;Hello, world!\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C++==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Hello, world!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pascal==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pascal/&amp;gt;program HelloWorld;&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
 writeln('Hello, world!');&lt;br /&gt;
end.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;html/&amp;gt;&amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 echo &amp;quot;Hello, world!&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
 &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;java/&amp;gt;public class MainApplication {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    System.out.println(&amp;quot;Hello, world!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1717</id>
		<title>Iptables romana</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1717"/>
				<updated>2006-01-03T07:27:44Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Ce vezi atunci cand porneste calculatorul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cuvânt introductiv ==&lt;br /&gt;
Pentru început, vreau să spun că eu nu ştiu mai mult decât alţii şi spun asta pentru că am intrat în contact cu câţiva oameni care într-adevăr ştiu multe despre [http://ro.wikipedia.org/wiki/Linux Linux]. Eu nu am făcut decât să traduc acest ''HowTo'', iar dacă (mai mult ca sigur) voi găsiţi greşeli de traducere sau de adaptare, vă rog să îmi atrageţi atenţia scriindu-mi un mesaj de [mailto:razvan@upb.ro poştă electronică]. Dacă intraţi în posesia acestui fişier şi ştiţi pe cineva care îl vrea, vă rog să îl daţi pe gratis, adica aşa cum l-aţi primit şi voi pentru că nici măcar eu nu am cerut bani pe el. Sper sa vă ajute, cel puţin la fel de mult cât m-a ajutat şi pe mine, iar dacă aveţi neclarităţi scrieţi-mi un mesaj şi vă voi răspunde în măsura în care pot şi am timp.&lt;br /&gt;
&lt;br /&gt;
==Ce este filtrarea de pachete?==&lt;br /&gt;
&lt;br /&gt;
=== Bazele reţelisticii ===&lt;br /&gt;
Tot traficul dintr-o reţea este transmis sub formă de pachete. De exemplu, descărcând acest document (să zicem că are 50ko) s-ar putea ca tu să primeşti 36 de pachete a câte 1460 octeţi fiecare.&lt;br /&gt;
&lt;br /&gt;
Antetul (engl. [http://en.wikipedia.org/wiki/Header_%28information_technology%29 header]) fiecărui pachet spune unde se duce, de unde vine, tipul pachetului precum şi alte detalii administrative. Restul pachetului, conţinând datele care ne sunt transmise, se numeşte corpul (engl. [http://en.wikipedia.org/wiki/Packet body]) sau conţinutul pachetului.&lt;br /&gt;
&lt;br /&gt;
Câteva protocoale, de exemplu TCP care este folosit (spre exemplu) pentru traficul de web, poştă şi sesiuni de terminal de la distanţă, folosesc principiul de forma o conexiune inainte de a transmite pachete cu datele care ne interesează. Astfel, varii pachete de ''început'' (cu antete speciale) sunt schimbate care spun 'Vreau să mă conectez', 'Bine' şi 'Mulţumesc' (procedură cunoscută ca negociere bilaterală -- engl. [http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment_.283-way_handshake.29 3-way handshaking]). Abia apoi începe schimbul de pachete conţinând datele ce trebuie să tranziteze conexiunea  proaspăt creeată.&lt;br /&gt;
&lt;br /&gt;
===Deci ce este un ''filtru de pachete''?===&lt;br /&gt;
Un filtru de pachete este un program care se uită în header-ul pachetelor care trec şi le decide soarta. El poate să ''arunce'' pachetul (să îl neglijeze ca şi cum nu ar fi fost primit), să ''accepte'' pachetul (să îl lase să treacă), sau să ''rejecteze'' pachetul (îl aruncă dar şi spune sursei de la care a venit că l-a aruncat).&lt;br /&gt;
Sub Linux, filtrarea de pachete este construită în kernel (ca modul sau chiar în el) şi există câteva lucruri mai deosebite pe care le putem face cu pachetele (putem de exemplu să modificăm sursa sau destinaţia acestuia înainte de a-l trimite mai departe), dar principiul general de a ne uita în antetul pachetului şi să-i decidem soarta este înca acolo.&lt;br /&gt;
&lt;br /&gt;
===De ce aş vrea să filtrez pachete?===&lt;br /&gt;
*Control:&lt;br /&gt;
Cand foloseşti un ''linux-box'' ca să conectezi reţeaua ta internă la o altă reţea (să zicem Internetul) ai oportunitatea de a lăsa numai anumite feluri de trafic sa treacă şi să nu laşi să treacă pe altele. De exemplu, antetul pachetului conţine destinaţia sa şi poţi preveni ca pachetele să ajungă într-o anumită parte a reţelei externe. Ca un alt exemplu, eu folosesc Netscape ca sa accesez arhivele Dilbert. Pe acea pagină sunt reclame de la doubleclick.net, şi Netscape-ul îmi pierde timpul deschizându-le. Spunându-i ''filtrului de pachete'' să nu lase să treacă pachete spre doubleclick.net sau să vină de la el rezolvă aceasta problemă.&lt;br /&gt;
*Securitate:&lt;br /&gt;
Când Linux-box-ul tău este singurul lucru care stă între haosul din Internet şi reţeaua ta privată, este bine de ştiut că poţi restricţiona ceea ce face ''tărăboi la uşa ta''. De exemplu, poţi lăsa să treacă ceea ce pleacă din interiorul reţelei interne, dar ar trebui să te îngrijoreze vestitul 'Ping of Death' care vine de la străini, sau diverşi alţi viruşi ce se propagă prin Internet. Ca un alt exemplu, nu ai vrea ca cei din afară să se conecteze prin ssh (sau mult mai vechiul telnet) la serverul tău, chiar dacă toate conturile din el sunt protejate de o parolă; având un filtru de pachete care să ''arunce'' pachetele cu antete speciale care sunt folosite pentru a deschide conexiuni din exterior.&lt;br /&gt;
*Supraveghere:&lt;br /&gt;
Uneori o maşină din interior prost configurată (sau un virus de exemplu) poate decide să împraştie pachete lumii exterioare. Este frumos să-i spui ''filtrului de pachete'' să te înştiinţeze când se întâmplă ceva care nu face parte din normal,nu de alta dar poate faci ceva în legatură cu lucrul acesta sau poate eşti curios din fire să ştii ceea ce se intâmplă în reţeaua ta internă.&lt;br /&gt;
&lt;br /&gt;
===Cum filtrez pachete sub Linux?===&lt;br /&gt;
Kernel-ele Linux-ului au avut filtre de pachete chiar de la versiunea 1.1. Prima generaţie, bazată pe ''ipfw'' de la BSD, a fost introdusă de Alan Cox in 1994. Aceasta a fost modificată şi întărită de Jos Vos şi alţii pentru Linux 2.0. În 1998, pentru Linux 2.2, eu am modificat radical kernelul, cu ajutorul lui Michael Neuling şi am introdus programul 'ipchains'. În final, a patra generaţie a filtrului, 'iptables', şi o altă modificare a kernelului au apărut în 1999 pentru Linux 2.4. Pe iptables ne vom concentra în acest HOWTO.&lt;br /&gt;
Programul iptables vorbeşte cu kernel-ul şi îi spune ce pachete să filtreze. Dacă nu eşti programator sau prea curios, în acest fel vei controla ''filtrul de pachete''.&lt;br /&gt;
Programul iptables inserează sau şterge reguli din ''tabelul'' de reguli de filtrare al kernelului. Aceasta înseamnă că orice ai seta, se va pierde când vei reporni maşina; vezi [[#Cum să faci regulile permanente]] pentru a te asigura că data viitoare când porneşti maşina ele sunt încă acolo.&lt;br /&gt;
iptables înlocuieşte ipfwadm şi ipchains: vezi [[http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables-HOWTO-6.html|Cum să folosesti ipchains şi ipfwadm]] pentru a evita folosirea iptables dacă deja foloseşti ipchains sau ipfwadm.&lt;br /&gt;
&lt;br /&gt;
===Cum să faci regulile permanente===&lt;br /&gt;
Firewall-ul tău curent este stocat în kernel şi de aceea va fi pierdut când reporneşti maşina. Scriind&lt;br /&gt;
 # iptables-save&lt;br /&gt;
şi&lt;br /&gt;
 # iptables-restore&lt;br /&gt;
este ceea ce vă recomand.&lt;br /&gt;
Între timp, pune comanda necesară pentru a-ţi seta regulile într-un script de iniţializare. Asigură-te că faci ceva inteligent în caz că una din comenzi nu merge (de obicei 'exec /sbin/sulogin').&lt;br /&gt;
&lt;br /&gt;
==Cine oare eşti şi de ce te joci cu kernelul meu?==&lt;br /&gt;
Eu sunt Rusty; eu sunt cel care întreţine ''Linux IP Firewall'' şi sunt doar un programator decent care s-a întâmplat să fie la locul potrivit în timpul potrivit. Eu am scris ipchains (mecanismul firewall anterior, din kernelul 2.2) şi am învăţat destule ca să fac să meargă ''filtrul de pachete'' iptables cum trebuie. Cel puţin sper.&lt;br /&gt;
&lt;br /&gt;
==Cum traversează pachetele filtrul?==&lt;br /&gt;
Kernel-ul porneşte cu trei liste de reguli; aceste liste se numesc ''firewall chains'' sau doar ''chains''. Cele trei chain-uri se numesc INPUT, OUTPUT şi FORWARD.&lt;br /&gt;
Pentru fanii ASCII-art, chain-urile sunt aranjate cam aşa:&lt;br /&gt;
&lt;br /&gt;
                    _____&lt;br /&gt;
                   /     \&lt;br /&gt;
 --&amp;gt;[Routing ]---&amp;gt;|FORWARD|-------&amp;gt;&lt;br /&gt;
    [Decision]     \_____/        ^ &lt;br /&gt;
        |                         |&lt;br /&gt;
        v                       ____  &lt;br /&gt;
       ___                     /    \ &lt;br /&gt;
      /   \                   |OUTPUT|&lt;br /&gt;
     |INPUT|                   \____/ &lt;br /&gt;
      \___/                      ^    &lt;br /&gt;
        |                        |&lt;br /&gt;
         ----&amp;gt; Local Process ----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cele trei cicluri reprezentate sunt chain-urile menţionate mai sus. Când un pachet ajunge într-un ciclu din diagramă, acel chain este examinat pentru a decide soarta pachetului. Dacă chain-ul decide să arunce pachetul (DROP), va fi ''omorât'' acolo, dar dacă chain-ul spune că pachetul trebuie acceptat (ACCEPT), el continuă sa circule prin diagramă către următorul chain.&lt;br /&gt;
Un chain este un ''set ordonat de reguli''. Fiecare regulă spune 'dacă header-ul pachetului arata aşa, atunci ce vrei să faci cu pachetul'. Dacă regula nu este îndeplinită de pachet, apoi este consultată următoarea regulă din set. În final, dacă nu mai sunt reguli de consultat pentru acel chain, kernel-ul se uită la politica ''setului de reguli'' (adică politica chain-ului) pentru a decide ce se va întâmpla cu pachetul. Într-un sistem riguros din punct de vedere al securităţii politica ''setului de reguli'' îi spune kernel-ului să arunce pachetul (DROP).&lt;br /&gt;
Cand un pachet soseşte (să zicem, printr-o interfaţă Ethernet) kernelul se uită prima oară la destinaţia lui: acest lucru se numeşte 'routing' (sau rutare).&lt;br /&gt;
Dacă pachetul este chiar pentru calculatorul tău, el va merge în jos către chain-ul INPUT. Dacă trece de acesta (după verificarea pachetului împotriva fiecărei reguli din chain) orice proces care îl aşteaptă îl va primi.&lt;br /&gt;
Altfel, dacă pachetul nu este pentru calculatorul tau şi dacă kernelul nu are forwarding-ul activat, sau nu ştie cum să forward-eze pachetul, acesta va fi aruncat (DROP). Dacă forwarding-ul este activat şi pachetul este destinat către o altă interfaţă de reţea (dacă mai ai încă una), atunci pachetul merge înainte în diagrama noastră spre chain-ul FORWARD. Dacă este acceptat de către acesta el va fi trimis în afară.&lt;br /&gt;
Şi în sfârşit, un program care rulează chiar în calculatorul tău poate trimite pachete în reţea. Aceste pachete trec prin chain-ul OUTPUT: dacă acesta le acceptă (ACCEPT), atunci pachetul işi continua drumul către destinaţia sa, oricare ar fi aceasta şi prin orice interfaţa.&lt;br /&gt;
&lt;br /&gt;
==Folosirea iptables==&lt;br /&gt;
iptables are un manual foarte detaliat (man iptables), dacă ai nevoie de detalii.&lt;br /&gt;
Există câteva lucruri diferite pe care le poţi face cu iptables. În primul rând operaţii cu care poţi face management pe un întreg ''set de reguli''. La început există trei chain-uri INPUT, OUTPUT şi FORWARD pe care nu le poţi şterge. Operaţiile sunt:&lt;br /&gt;
*Crearea unui nou chain (-N).&lt;br /&gt;
*Ştergerea unui chain gol (-X).&lt;br /&gt;
*Schimbarea politicii unuia dintre chain-urile standard (INPUT, OUTPUT şi FORWARD). (-P).&lt;br /&gt;
*Listarea regulilor dintr-un chain (-L).&lt;br /&gt;
*Ştergerea tuturor regulilor dintr-un chain (-F).&lt;br /&gt;
*Readucerea la zero a contoarelor regulilor dintr-un chain (-Z).&lt;br /&gt;
Există şi moduri de manipulare a unei singure reguli dintr-un chain:&lt;br /&gt;
*Ataşarea unei noi reguli (-A).&lt;br /&gt;
*Inserarea unei noi reguli într-o anume poziţie într-un chain (-I).&lt;br /&gt;
*Înlocuirea unei reguli într-o anume poziţie a unui chain (-R).&lt;br /&gt;
*Ştergerea unei reguli (-D).&lt;br /&gt;
&lt;br /&gt;
===Ce vezi atunci cand porneste calculatorul===&lt;br /&gt;
Pentru moment (Linux 2.3.15), iptables se află într-un modul numit ('iptables.o'). Va trebui să-l inserezi în kernel înainte de a putea folosi comanda iptables. Pe viitor, va fi posibil ca el să fie deja construit în kernel.&lt;br /&gt;
Înainte de orice comandă iptables să fie rulată (ai grijă: unele distribuţii vor rula iptables în scripturile lor de iniţializare), nu va exista nici o regulă în cele trei chain-uri de bază ('INPUT', 'FORWARD' şi 'OUTPUT'), chain-urile INPUT şi OUTPUT vor avea politica setată pe ACCEPT, şi chain-ul FORWARD va fi setat pe DROP (poţi schimba acest lucru setând 'forward=1' în opţiunile modulului iptables).&lt;br /&gt;
&lt;br /&gt;
===Operatii cu o singura regula===&lt;br /&gt;
Acestea sunt ''painea si cutitul'' unui filtru de pachete; manipularea regulilor. Cel mai des probabil ca vei folosi comenzile de atasare (-A) si stergere (-D). Celelalte (-I pentru inserare si -R pentru inlocuire) sunt simple extensii ale acestor concepte.&lt;br /&gt;
Fiecare regula specifica un set de conditii pe care trebuie sa le indeplineasca un pachet, si ce sa faca in caz ca le indeplineste (o tinta 'target'). De exemplu, vrei sa arunci toate pachetele de tip ICMP care vin de la IP-ul 127.0.0.1. Deci in acest caz conditiile noastre sunt ca protocolul trebuie sa fie ICMP si sursa de la care vin pachetele este IP-ul 127.0.0.1. tinta noastra este aruncarea lor (DROP).&lt;br /&gt;
127.0.0.1 este interfata 'loopback', pe care o ai char daca nu ai vreo legatura fizica la vreo retea. Poti folosi programul 'ping' pentru a genera asemenea pachete si a testa o astfel de regula.&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 1 packets received, 0% packet loss&lt;br /&gt;
 round-trip min/avg/max = 0.2/0.2/0.2 ms&lt;br /&gt;
 # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 0 packets received, 100% packet loss&lt;br /&gt;
Poti vedea aici ca ping-ul a avut scces (prin '-c 1' i-am spus programului ping sa trimita un singur pachet).&lt;br /&gt;
Apoi atasam (-A) chain-ului 'INPUT', o regula in care specificam ca pachetele care vin de la IP-ul 127.0.0.1 ('-s 127.0.0.1') prin protocolul ICMP ('-p icmp') ar terbui sa le dam DROP ('-j DROP').&lt;br /&gt;
Apoi testam regula noastra, folosind un al doilea ping. Va fi o pauza pana cand programul renunta sa mai astepte raspunsul care nu va veni niciodata.&lt;br /&gt;
Putem sterge aceasta regula in mai multe feluri. In primul rand, pentru ca stim ca este singura regula in chain-ul input, putem folosi o stergere in care specificam pozitia reguluii:&lt;br /&gt;
 # iptables -D INPUT 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Al doilea mod prin care putem sterge regula este sa oglindim comanda –A, inlocuind –A cu -D. Acest lucru este folositor cand avem un set complex de reguli. In acest caz folosim:&lt;br /&gt;
 # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
&lt;br /&gt;
===Specificatii ale filtrarii===&lt;br /&gt;
Am vazut folosirea '-p' pentru a specifica protocolul, si '-s' pentru a specifica adresa sursa, dar sunt si alte optiuni cu care putem specifica caracteristici ale pachetelor&lt;br /&gt;
*Specificarea adresei Sursa si adresa Destinatie.&lt;br /&gt;
Sursa ('-s', '--source' or '--src') si destinatia ('-d', '--destination' or '--dst') IP-ului poate fi specificata in patru moduri. Cel mai des intalnit este folosirea numelui intreg, cum ar fi 'localhost' sau 'www.linuxhq.com'. Al doilea mod este folosirea de adrese IP cum ar fi '127.0.0.1'.&lt;br /&gt;
Al treilea si al patrulea mod este specificarea unui interval de IP-uri, cum sunt '199.95.207.0/24' sau '199.95.207.0/255.255.255.0'. Amandoua specifica orice IP cuprins intre 199.95.207.0 to 199.95.207.255 inclusiv; iar digitii dupa '/' ne spun care parti din IP-uri sunt relevante in cazul nostru. '/32' sau '/255.255.255.255' este modul standard (default). Pentru a specifica orice ip putem folosi '/0', dupa cum urmeaza:&lt;br /&gt;
 # ipchains -A input -s 0/0 -j DENY&lt;br /&gt;
Aceasta este rar folosit pentru ca efectul obtinut este la fel ca in cazul in care nu folosim de loc optiunea '-s'.&lt;br /&gt;
*Specificarea unei inversiuni&lt;br /&gt;
Multe flag-uri, incluzand optiunile '-s' and '-d' pot avea argumentele precedate de un '!' pentru a compara adrese care nu sunt echivalente cu cele date in linia de comanda. De exemplu '-s ! localhost' inseamna orice pachet care nu vine de la localhost.&lt;br /&gt;
*Specificarea Protocolului&lt;br /&gt;
Protocolul poate fi specificat cu flag-ul '-p'. Protocolul poate fi un numar (daca stii valorile numerice pentru IP) sau un nume pentru cazurile speciale de 'TCP', 'UDP' sau 'ICMP'. Cum este scris nu conteaza, asa ca 'tcp' merge la fel de bine ca si 'TCP'.&lt;br /&gt;
Numele protocolului poate fi precedat de un '!', pentru a fi inversat, such as '-p ! TCP' (expresia inseamna tot ce nu e TCP).&lt;br /&gt;
*Specificarea unei interfete&lt;br /&gt;
Optiunea '-i' (sau '--in-interface') si '-o' (sau '--out-interface') specifica numele interfetei. O interfata este un lucru fizic (modem, placa de retea etc…) prin care pachetul intra ('-i') sau prin care iese ('-o'). Poti folosi comanda&lt;br /&gt;
 # ifconfig&lt;br /&gt;
pentru a vedea interfetele care sunt active.&lt;br /&gt;
Pentru pachetele care traverseaza chain-ul INPUT nu se poate specifica o interfata de iesire, deci orice regula din acest chain care contine optiunea '-o' este inutila. Similar, pachetele care traverseaza chain-ul OUTPUT nu au interfata de intrare, deci orice regula din acest chain in care exista optiunea '-i' este inutila.&lt;br /&gt;
Doar pachetele care traverseaza chain-ul FORWARD au atat interfata de intrare cat si interfata de iesire.&lt;br /&gt;
Nu este gresit daca se specifica o interfata care pentru moment nu este activa; regula nu se va potrivi niciunui pachet pana cand interfata nu va fi activata. Acest lucru este foarte util pentru legaturi dial-up (PPP point to point) de obicei interfata ppp0.&lt;br /&gt;
Un caz special, un nume de interfata al carei string se termina cu '+' specifica toate interfetele de acelas fel (chiar daca sunt activate sau nu). De exemplu, pentru a specifica o regula care sa se potriveasca pentru toate interfetele de gen PPP, se va folosi expresia-i ppp+.&lt;br /&gt;
Numele interfetei poate fi precedat de '!', aceasta regula se va referi la pachetele care nu vin sau ies prin acea interfata.&lt;br /&gt;
*Specificarea fragmentelor&lt;br /&gt;
Uneori un pachet este prea mare ca sa incapa prin ''fir'' intreg. Cand acest lucru se intampla pachetul este divizat in fragmente, si trimis ca mai multe pachete mai mici. Calculatorul care primeste aceste fragmente le va reasambla si va forma pachetul initial.&lt;br /&gt;
Problema cu aceste pachete este ca doar primul fragment din acestea contine in header informatii despre protocol (cum ar fi TCP, UDP si ICMP) si extensiile lui, iar restul de fragmente nu contin aceste lucruri, iar daca am incerca sa ne uitam in ele ar fi imposibil.&lt;br /&gt;
Daca tu faci ''connection tracking'' sau ''NAT'', atunci toate aceste fragmente vor fi fuzionate inainte de a ajunge la ''filtrul de pachete'', deci nu trebuie sa ne facem griji despre aceste fragmente. Atltfel, poti insera in kernel modulul 'ip_defrag.o' care face acelas lucru (nota, acest lucru este permis doar daca linux-box-ul tau este singura conexiune intre cele doua retele).&lt;br /&gt;
Altfel, este foarte important sa intelegem cum sunt tratate fragmentele de catre regulile de filtrare. Orice regula care cere informatii de la pe care nu le avem nu se va potrivi, aceasta inseamna ca primul fragment (cel care are specificat in header tot ce este necesar) va fi tratat ca pe un pachet, iar cel de-al doilea si restul de fragmente nu vor fi tratate corespunzator (pentru ca header-ul lor nu contine informatiile necesare). De aceea o regula de genul ''-p TCP --sport www'' (care specifica portul sursa al unui server 'www') nu va filtra fragmente (in afara de primul). La fel se va comporta si regula opusa ''-p TCP --sport ! www''.&lt;br /&gt;
Oricum, poti face o regula special pentru cel de-al doilea si urmatoarele fragmente folosind optiunea '-f' (sau '--fragment'). Valabila este si regula care nu se aplica pentru cel de-al doilea si urmatoarele fragmente daca punem optiunea ''!'' inaintea lui '-f'.&lt;br /&gt;
De obicei se zice ca este sigur (din punct de vedere al securitatii) sa lasi al doilea si celelalte fragmente sa treaca treaca, pentru ca filtrarea afecteaza decat primul fragment, si deci pachetul nu va putea fi reasamblat in partea cealalta, dar, exista bug-uri care vor face masina sa se ''prabuseasca'' doar prin simplul fapt ca aceasta trimite fragmente. Este decizia ta.&lt;br /&gt;
Ca un exemplu, urmatoarea regula va arunca toate fragmentele care se duc la IP-ul 192.168.1.1:&lt;br /&gt;
 # iptables -A OUTPUT -f -d 192.168.1.1 -j DROP&lt;br /&gt;
*Extensii la iptables&lt;br /&gt;
Iptables este extensibil, asta insemnand ca atat kernel-ul cat si iptables se pot extinde pentru a ne asigura noi posibilitati.&lt;br /&gt;
Unele dintre aceste extensii sunt standard, si altele sunt mai mult exotice. Extensiile pot fi facute si de alti oameni si distibuite userilor.&lt;br /&gt;
Extensiile kernel-ului normal se gasesc in subdirectorul lui pentru module, cum este /lib/modules/2.3.15/net. Pe acestea trebuie sa le incarci in kernel automat pentru ca ele nu se autoincarca la cerere(Linux 2.3.15). Pe viitor ele se vor incarca automat.&lt;br /&gt;
Extensiile programului iptables sunt librarii ''sheruite'' care de obicei sunt gasite in directorul /usr/local/lib/iptables/, cu toate ca anumite distributii le pun in /lib/iptables sau /usr/lib/iptables.&lt;br /&gt;
Extensiile sunt de doua tipuri: tinte noi (new targets), si noi teste (new tests); mai jos vom vorbi despre ''noi tinte''. Anumite protocoale ofera ele noi teste: actual ele sunt TCP, UDP si ICMP cum sunt aratate mai jos.&lt;br /&gt;
Pe aceste noi teste le vei putea specifica in linia de comanda dupa optiunea '-p', care va incarca extensiile. Pentru teste noi explicite trebuie sa folosestei optiunea '-m' pentru a incarca extensia, doar dupa aceasta va fi aceasta accesibila.&lt;br /&gt;
Pentru a deschide manualul extensiei dupa ce o incarci ('-p' or '-m') foloseste optiunea '-h' sau '--help'.&lt;br /&gt;
**Extensii TCP&lt;br /&gt;
Extensiile TCP sunt incarcate automat daca este folosita comanda '--protocol tcp'. Aceastea vin cu urmatoarele optiuni (niciuna nu se refera si la fragmente, doar la pachete).&lt;br /&gt;
--tcp-flags&lt;br /&gt;
Daca dupa ele se pune (optional)'!', atunci doua stringuri te vor ajuta sa filtrezi flaguri specifice protocolului TCP. Primul string este un ''mask'': o lista de flaguri pe care vrei sao examinezi. Al doilea string iti spune pe care vrei sa le filtrezi. De exemplu:&lt;br /&gt;
 # iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY[/code]&lt;br /&gt;
Aceasta indica, ca toate flagurile trebuie examinate ('ALL' este sinonim cu 'SYN,ACK,FIN,RST,URG,PSH'), dar doar SYN si ACK vrei sa le setezi. Exista si un argument 'NONE' care inseamna nici un flag.&lt;br /&gt;
--syn&lt;br /&gt;
Urmat optional de '!', aceasta este o scurtare a comenzii'--tcp-flags SYN,RST,ACK SYN'.&lt;br /&gt;
--source-port&lt;br /&gt;
optional urmat de '!', si apoi de un singur port TCP, sau un interval de porturi. Porturile poti specificate prin numele lor, la fel ca in /etc/services, sau numerice. Intervalele sunt ori doua nume de porturi separate cu'-', sau (pentru a specifica un nr. mai mare sau egal cu portul dat) un port cu '-' inainte lui, sau (pentru a specifica un nr mai mic sau egal cu portul dat), un port precedat de'-'.&lt;br /&gt;
--sport&lt;br /&gt;
este sinonim cu '--source-port'.&lt;br /&gt;
--destination-port&lt;br /&gt;
and&lt;br /&gt;
--dport&lt;br /&gt;
sunt la fel ca si mai sus, numai ca ele specifica destinatia in loc de sursa portului care ne intereseaza sa-l filtram.&lt;br /&gt;
--tcp-option&lt;br /&gt;
urmat oprional de '!' siun numar, se refera la un pachet TCP care este egal cu acel numar. Un pachet care nu are un header TCP complet este aruncat (DROP) automat daca i se incearca examinarea optiunilor TCP.&lt;br /&gt;
O explicatie a flagurilor TCP&lt;br /&gt;
Este util sa permitem conexiuni TCP intr-o directie, dar nu si in cealalta. De exemplu, ai vrea sa se poata face conexiuni catre un server WWW exterior, dar sa nu existe conexiuni de la acel server la tine.&lt;br /&gt;
Te poti gandi sa blochezi pachetele care vin de la acel server. Dar din nefericire, ca o conexiune TCP sa mearga trebuie sa existe trafic in ambele directii.&lt;br /&gt;
Solutia este sa blochezi doar pachetele care cer ca o conexiune sa fi stabilita. Aceste pachete se numesc SYN (ok, tehnic ele sunt pachete cu flagul SYN setat, si flagurile FIN si ACK sunt sterse, dar noi le numim pe scurt pachete SYN). Blocand doar aceste pachete putem opri cererile de conexiuni si astfel niciuna nu poate fi facuta din exterior.&lt;br /&gt;
Flagul '--syn' este folosit pentru aceasta: este valid doar pentru regulile in care li se specifica ca protocol TCP-ul. Ca exemplu, pentru a specifica incercari de conexiuni de la IP-ul 192.168.1.1 se foloseste:&lt;br /&gt;
-p TCP -s 192.168.1.1 --syn&lt;br /&gt;
Acest flag poate fi inversat daca este precedat de un '!', aceasta inseamna orice pachet inafara de cele initiatoare de conexiuni TCP.&lt;br /&gt;
**Extensii UDP&lt;br /&gt;
Aceste extensii sunt incarcate automat daca este specificat protocolul UDP '--protocol udp'. Aici avem optiunile '--source-port', '--sport', '--destination-port' si '--dport' detaliate mai sus la protocolul TCP.&lt;br /&gt;
Extensii ICMP&lt;br /&gt;
Aceasta extensi este incarcata automat daca se specifica '--protocol icmp'. Aceasta ne da o singura optiune:&lt;br /&gt;
--icmp-type&lt;br /&gt;
urmat optional de '!', atunci un unme tip icmp (ex 'host-unreachable'), sau un tip numeric (ex. '3'), sau numeric si cod separat de'/' (ex. '3/3'). O lista de nume tip icmp se poate optine cu comanda '-p icmp --help'.&lt;br /&gt;
Alte extensii&lt;br /&gt;
Celelalte doua extensii sunt extensii demonstrative, care (daca sunt instalate) pot fi ''aduse la viata'' cu optiunea '-m'.&lt;br /&gt;
mac&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m mac' sau '--match mac'. Este folosit pentru a filtra pachetele dupa adresa Ethernet (MAC), si este folositoare doar la regulile din chain-urile INPUT si FORWARD. De aduce o singura optiune:&lt;br /&gt;
--mac-source&lt;br /&gt;
optional urmata de '!', apoi o adresa ethernet scrisa in hexazecimale separate de '':'', ex '--mac-source 00:60:08:91:CC:B7'.&lt;br /&gt;
limit&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m limit' sau '--match limit'. Este folosit pentru a limita rata de pachete acceptate. Unitatea de masura este numere de pachete pe secunda (default 3 pachete pe ora, cu o rafala de 5). Aceasta ne aduce doua argumente optionale:&lt;br /&gt;
--limit&lt;br /&gt;
urmat de un numar; specifica numarul medie maxim de pachete pe secunda care sunt lasate sa treaca. Numarul poate unitati explicite, folosind '/second', '/minute', '/hour' or '/day', sau parti din ele (deci '5/second' este la fel ca '5/s').&lt;br /&gt;
--limit-burst&lt;br /&gt;
urmata de un numar, defineste lungimea rafalei de pachete acceptate dupa care intra in actiune limita de mai sus.&lt;br /&gt;
Aceasta optiune poate fi folosita impreuna cu tinta ''LOG'' pentru a face ''rate-limited logging''. Prentru a intelege cum functioneaza, hai sa ne uitam la urmatoarea regula, care logheaza pachetele care au limita ''default'':&lt;br /&gt;
 # iptables -A FORWARD -m limit -j LOG&lt;br /&gt;
Prima oara cand regula este indeplinita de un pachet, acesta va fi logat; de fapt, pentru ca rafala este de 5, primele cinci pachete vor fi logate. Dupa aceea, vor mai trece ica douazeci de minute pana cand urmatorul pachet va fi logat de la regula aceasta, netinand cont de cate pachete ajung la ea. Deasemenea, fiecare douazeci de minute care trec fara ca un pachet sa indeplineasca regula , o unitate din rafala va fi recapatata, daca nici un pachet nu se loveste de regula timp de 100 de minute rafala va reveni la 5; la fel ca la inceput.&lt;br /&gt;
Nu poti creea o regula a carei interval de timp de umplere a rafalei sa depaseasca 59 de ore, deci daca faci o regula care sa se reincarce o data pe zi, rafala trebie sa fie mai mica de 3.&lt;br /&gt;
unclean&lt;br /&gt;
Acest modul trebuie explicit specificat cu '-m unclean sau '--match unclean'. Acesta face analize aleatorii asupra integritatii pachetelor. Acesta nu trebuie folosit ca o optiune pentru securitate (probabil ca va inrautatii lucrurile, pentru ca s-ar putea ca sa aiba bug-uri). Nu vine cu nici o optiune.&lt;br /&gt;
&lt;br /&gt;
===Specificarea tintelor===&lt;br /&gt;
Acum stim cum sa examinam un pachet, trebuie sa stim ce sa facem cu pachetele care se potrivesc regulilor noastre. Aceasta se numeste ''Tinta regulii'' (rule's target).&lt;br /&gt;
Exista doua tinte foarte simple: DROP (arunca) si ACCEPT(accepta). Deja le stim pe acestea. Daca pachetul indeplineste regula si tinta ei este una din cele doua, nu vor mai fi consultate alte reguli: soarta pachetului a fost decisa.&lt;br /&gt;
There are two types of targets other than the built-in ones: extensions and user-defined chains.&lt;br /&gt;
Chain-uri definite de utilizator (User-defined chains)&lt;br /&gt;
O puternica abilitate pe care iptables a mostenit-o de la ipchains este abilitatea de a creea chain-uri definite de utilizator (adica alte chain-uri inafara de cele trei de baza INPUT, FORWARD si OUTPUT).&lt;br /&gt;
Cand un pachet se potriveste unei reguli a carei tinta este un chain definit de utilizator, pachetul incepe sa confrunte reguluile sin chain-ul definit de utilizator. Daca acel chain nu decide soarta pachetului, adica a parcurs toate regulile din acel chain definit de utilizator, atunci pachetul incepe sa confrunte regula imegiat urmatoare regulei a carei tinta a fost chainul definit de utilizator.&lt;br /&gt;
Din nou este vremea pentru ASCII art. Sa zicem ca avem doua chain-uri Consider two (prostute): INPUT (chain-ul de baza) si test (un chain definit de utilizator cu optiunea ''-N''). CLIC&lt;br /&gt;
&lt;br /&gt;
Chain-urile definite de utilizator pot sari catre alte chain-uri definite de utilizator (dar nu au voie sa fac bucle inchise: pachetele care intra in bucle inchise vor fi aruncate).&lt;br /&gt;
Extensia: New Targets&lt;br /&gt;
Clealat tip de tinta este o extensie. Aceastea constau intr-un modul pentru kernel, care ne asigura noi optiuni in linia de comanda. Exista cateva extensii in distributia default a pachetului netfilter:&lt;br /&gt;
*LOG&lt;br /&gt;
Acest modul logheaza pachetele care indeplinesc o anumita regula a carei tinta este ''LOG''. Acesta vine cu urmatoarele optiuni:&lt;br /&gt;
--log-level&lt;br /&gt;
Urmata de un nume sau numar. Numele sunt (case-insensitive) 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' si 'emerg', care corespund numerelor de la 7 la 0. Uta-te la ''man page-ul'' pentru syslog.conf pentru o explicatie a acestor nivele.&lt;br /&gt;
--log-prefix&lt;br /&gt;
Urmat de un sting de maxim 14 caractere, acest mesaj este trimis la inceputul logului pentru a fi unic.&lt;br /&gt;
Acest modul este forte util dupa o tinta care limiteaza pentru a nu-ti inunda (food) logurile.&lt;br /&gt;
*REJECT&lt;br /&gt;
Acest modul are acelas efect ca modulul 'DROP', numai ca expeditorului ii este trimis un mesaj de eroare de tip ICMP 'port unreachable'. Nota: mesajul de eroare de tip ICMP nu este trimis daca (vezi RFC 1122):&lt;br /&gt;
Pachetul filtrat era chiar el un mesaj de eroare de tip ICMP, sau un tip necunoscut de ICMP.&lt;br /&gt;
Pachetul filtrat nu era primul fragment dintr-un lant de fragmente.&lt;br /&gt;
Am trimis prea multe mesaje de eroare de tip ICMP la acea destinatie intr-un anumit timp.&lt;br /&gt;
Tinte speciale&lt;br /&gt;
Exista doua tinte speciale care vin o dat cu distributia: RETURN si QUEUE.&lt;br /&gt;
*RETURN are acelas efect ca si cum ar sari de la sfarsitul unui chain: pentru unul dintre cele trei chain-uri de baza, soarta pachetului va fi decisa de politica acestuia. Pentru o regula dintr-un chain definit de utilizator, traversarea continua exact dupa regula de la care a fost aruncat pachetul in chain-ul definit de utilizator. Daca o regula (nu este neaparat sa fie ultima din chain) dintr-un chain definit de utilizator are tinta RETURN si aceasta se potriveste unui pachet, aceasta il va trimite inapoi la chainul de unde a venit, cu mentiunea ca este respectata traversearea regulilor, adica la regula exact urmatoare celei care a trimis pachetul in chain-ul definit de utilizator.&lt;br /&gt;
*QUEUE este o tinta speciala, care ''pastreaza'' pachetul pentru procesarea facuta de useri. Daca pachetul nu este asteptat de vreo aplicatie acesta va fi aruncat.&lt;br /&gt;
&lt;br /&gt;
===Operatii cu un Chain intreg===&lt;br /&gt;
O abilitate foarte utila a programului iptables este gruparea regurilor in chainuri (seturi de reguli). Poti denumi chainurile definite de utilizator cum vrei, dar este rcomandat sa le denumesti cu caractere mici pentru a nu le confunda cu cele trei chainuri de baza; numele acestora poate sa fie maxim din 16 litere.&lt;br /&gt;
*Crearea unui nou chain&lt;br /&gt;
Hai sa creem un nou chain. Pentru ca eu sunt un tip cu imaginatie am sa-l numesc test. Vom folosi optiunile '-N' sau '--new-chain':&lt;br /&gt;
 # iptables -N test&lt;br /&gt;
Este chiar atat de simplu. Acum poti pune reguli in el dupa cum a fost aratat mai sus.&lt;br /&gt;
*Stergerea unui Chain&lt;br /&gt;
Stergerea unui chain este la fel de simplu, folosind optiunea '-X' sau '--delete-chain'. De ce '-X'? Pai…, toate literele frumoase au fost luate deja.&lt;br /&gt;
 # iptables -X test&lt;br /&gt;
Exista cateva restrictii cand stergem un chain: acesta trebuie sa fie gol (vezi golirea unui chain mai jos) si nu trebuie sa fie tinta vreunei reguli. Chainurile de baza nu pot fi sterse.&lt;br /&gt;
Daca nu se specifica numele chainului de sters, atunci toate chain-urile definite de utilizator vor fi sterse, daca este posibil.&lt;br /&gt;
*Golirea unui Chain&lt;br /&gt;
Exista un mod simplu prin care se poate goli un cahin de toate regulile care exista in el, folosind comanda '-F' (sau '--flush').&lt;br /&gt;
 # ipchains -F forward&lt;br /&gt;
Daca nu se specifica chain-ul atunci toate chainurile vor fi golite.&lt;br /&gt;
*Listarea unui chain&lt;br /&gt;
Poti vedea toate regulile existente intr-un chain cu comanda '-L'.&lt;br /&gt;
Daca nu este specificat numele chain-ului atunci sunt listate toate regulile existente in ''filtrul de pachete''.&lt;br /&gt;
Exista trei optiuni care acompaniaza comanda '-L'. Optiunea '-n' (numeric) pentru ca ea previne ca iptables sa incerce sa caute adresa IP, care (daca folosesti DNS ca majoritatea oamenilor) va cauza delay-uri foarte mari in caz ca DNS-ul nu este setat cum trebuie, sau daca filtrezi cererile de DNS (Domain Name Server).&lt;br /&gt;
Optiunea '-v' va arata toate detaliile unei raguli, cum sunt pachetele si contuarele de biti, comparatiile TOS, si interfetele. Altfel aceste valori sunt omise.&lt;br /&gt;
Nota: pachetele si contoarele de biti sunt afisate folosin sufixele 'K', 'M' sau 'G' pentru 1000, 1,000,000 si respectiv 1,000,000,000. Folosind optiunea '-x' (expand numbers) vor fi aratate ca numere netinand cont de cat de mari sunt acestea.&lt;br /&gt;
*Resetarea (Zeroing) Contoarelor&lt;br /&gt;
Este util sa poti reseta contoarele. Acest lucru poate fi facut cu optiunea '-Z' (sau '--zero')&lt;br /&gt;
Problema cu acest lucru este ca, uneori, trebuie sa stii valorile contoarelor imediat inainte de a fi aduse la zero. In exemplul de mai sus, anumite pachete pot trece in dupa ce folosesti optiunea '-L' si pana folosesti optiunea '-Z'. Pentru acest motiv, poti folosi optiunile '-L' si '-Z' impreuna, pentru a reseta contuarele in timp ce le vizualizezi.&lt;br /&gt;
*Setarea politicii&lt;br /&gt;
Doar chain-urile de baza (INPUT, OUTPUT and FORWARD) au o politica, pentru ca daca un pachete este confruntat cu un regulile dintr-un chain definit de utilizator si inca nu i se decide soarta, acesta isi continua drumul intr-un chain de baza.&lt;br /&gt;
Politica poate fi ACCEPT(accepta) sau DROP (arunca).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Traducerea si adaptarea a fost facuta (initial) de Razvan Turtureanu (razvan@upb.ro)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Firewall]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1716</id>
		<title>Iptables romana</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1716"/>
				<updated>2006-01-03T07:26:41Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Ce vezi atunci cand porneste calculatorul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cuvânt introductiv ==&lt;br /&gt;
Pentru început, vreau să spun că eu nu ştiu mai mult decât alţii şi spun asta pentru că am intrat în contact cu câţiva oameni care într-adevăr ştiu multe despre [http://ro.wikipedia.org/wiki/Linux Linux]. Eu nu am făcut decât să traduc acest ''HowTo'', iar dacă (mai mult ca sigur) voi găsiţi greşeli de traducere sau de adaptare, vă rog să îmi atrageţi atenţia scriindu-mi un mesaj de [mailto:razvan@upb.ro poştă electronică]. Dacă intraţi în posesia acestui fişier şi ştiţi pe cineva care îl vrea, vă rog să îl daţi pe gratis, adica aşa cum l-aţi primit şi voi pentru că nici măcar eu nu am cerut bani pe el. Sper sa vă ajute, cel puţin la fel de mult cât m-a ajutat şi pe mine, iar dacă aveţi neclarităţi scrieţi-mi un mesaj şi vă voi răspunde în măsura în care pot şi am timp.&lt;br /&gt;
&lt;br /&gt;
==Ce este filtrarea de pachete?==&lt;br /&gt;
&lt;br /&gt;
=== Bazele reţelisticii ===&lt;br /&gt;
Tot traficul dintr-o reţea este transmis sub formă de pachete. De exemplu, descărcând acest document (să zicem că are 50ko) s-ar putea ca tu să primeşti 36 de pachete a câte 1460 octeţi fiecare.&lt;br /&gt;
&lt;br /&gt;
Antetul (engl. [http://en.wikipedia.org/wiki/Header_%28information_technology%29 header]) fiecărui pachet spune unde se duce, de unde vine, tipul pachetului precum şi alte detalii administrative. Restul pachetului, conţinând datele care ne sunt transmise, se numeşte corpul (engl. [http://en.wikipedia.org/wiki/Packet body]) sau conţinutul pachetului.&lt;br /&gt;
&lt;br /&gt;
Câteva protocoale, de exemplu TCP care este folosit (spre exemplu) pentru traficul de web, poştă şi sesiuni de terminal de la distanţă, folosesc principiul de forma o conexiune inainte de a transmite pachete cu datele care ne interesează. Astfel, varii pachete de ''început'' (cu antete speciale) sunt schimbate care spun 'Vreau să mă conectez', 'Bine' şi 'Mulţumesc' (procedură cunoscută ca negociere bilaterală -- engl. [http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment_.283-way_handshake.29 3-way handshaking]). Abia apoi începe schimbul de pachete conţinând datele ce trebuie să tranziteze conexiunea  proaspăt creeată.&lt;br /&gt;
&lt;br /&gt;
===Deci ce este un ''filtru de pachete''?===&lt;br /&gt;
Un filtru de pachete este un program care se uită în header-ul pachetelor care trec şi le decide soarta. El poate să ''arunce'' pachetul (să îl neglijeze ca şi cum nu ar fi fost primit), să ''accepte'' pachetul (să îl lase să treacă), sau să ''rejecteze'' pachetul (îl aruncă dar şi spune sursei de la care a venit că l-a aruncat).&lt;br /&gt;
Sub Linux, filtrarea de pachete este construită în kernel (ca modul sau chiar în el) şi există câteva lucruri mai deosebite pe care le putem face cu pachetele (putem de exemplu să modificăm sursa sau destinaţia acestuia înainte de a-l trimite mai departe), dar principiul general de a ne uita în antetul pachetului şi să-i decidem soarta este înca acolo.&lt;br /&gt;
&lt;br /&gt;
===De ce aş vrea să filtrez pachete?===&lt;br /&gt;
*Control:&lt;br /&gt;
Cand foloseşti un ''linux-box'' ca să conectezi reţeaua ta internă la o altă reţea (să zicem Internetul) ai oportunitatea de a lăsa numai anumite feluri de trafic sa treacă şi să nu laşi să treacă pe altele. De exemplu, antetul pachetului conţine destinaţia sa şi poţi preveni ca pachetele să ajungă într-o anumită parte a reţelei externe. Ca un alt exemplu, eu folosesc Netscape ca sa accesez arhivele Dilbert. Pe acea pagină sunt reclame de la doubleclick.net, şi Netscape-ul îmi pierde timpul deschizându-le. Spunându-i ''filtrului de pachete'' să nu lase să treacă pachete spre doubleclick.net sau să vină de la el rezolvă aceasta problemă.&lt;br /&gt;
*Securitate:&lt;br /&gt;
Când Linux-box-ul tău este singurul lucru care stă între haosul din Internet şi reţeaua ta privată, este bine de ştiut că poţi restricţiona ceea ce face ''tărăboi la uşa ta''. De exemplu, poţi lăsa să treacă ceea ce pleacă din interiorul reţelei interne, dar ar trebui să te îngrijoreze vestitul 'Ping of Death' care vine de la străini, sau diverşi alţi viruşi ce se propagă prin Internet. Ca un alt exemplu, nu ai vrea ca cei din afară să se conecteze prin ssh (sau mult mai vechiul telnet) la serverul tău, chiar dacă toate conturile din el sunt protejate de o parolă; având un filtru de pachete care să ''arunce'' pachetele cu antete speciale care sunt folosite pentru a deschide conexiuni din exterior.&lt;br /&gt;
*Supraveghere:&lt;br /&gt;
Uneori o maşină din interior prost configurată (sau un virus de exemplu) poate decide să împraştie pachete lumii exterioare. Este frumos să-i spui ''filtrului de pachete'' să te înştiinţeze când se întâmplă ceva care nu face parte din normal,nu de alta dar poate faci ceva în legatură cu lucrul acesta sau poate eşti curios din fire să ştii ceea ce se intâmplă în reţeaua ta internă.&lt;br /&gt;
&lt;br /&gt;
===Cum filtrez pachete sub Linux?===&lt;br /&gt;
Kernel-ele Linux-ului au avut filtre de pachete chiar de la versiunea 1.1. Prima generaţie, bazată pe ''ipfw'' de la BSD, a fost introdusă de Alan Cox in 1994. Aceasta a fost modificată şi întărită de Jos Vos şi alţii pentru Linux 2.0. În 1998, pentru Linux 2.2, eu am modificat radical kernelul, cu ajutorul lui Michael Neuling şi am introdus programul 'ipchains'. În final, a patra generaţie a filtrului, 'iptables', şi o altă modificare a kernelului au apărut în 1999 pentru Linux 2.4. Pe iptables ne vom concentra în acest HOWTO.&lt;br /&gt;
Programul iptables vorbeşte cu kernel-ul şi îi spune ce pachete să filtreze. Dacă nu eşti programator sau prea curios, în acest fel vei controla ''filtrul de pachete''.&lt;br /&gt;
Programul iptables inserează sau şterge reguli din ''tabelul'' de reguli de filtrare al kernelului. Aceasta înseamnă că orice ai seta, se va pierde când vei reporni maşina; vezi [[#Cum să faci regulile permanente]] pentru a te asigura că data viitoare când porneşti maşina ele sunt încă acolo.&lt;br /&gt;
iptables înlocuieşte ipfwadm şi ipchains: vezi [[http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables-HOWTO-6.html|Cum să folosesti ipchains şi ipfwadm]] pentru a evita folosirea iptables dacă deja foloseşti ipchains sau ipfwadm.&lt;br /&gt;
&lt;br /&gt;
===Cum să faci regulile permanente===&lt;br /&gt;
Firewall-ul tău curent este stocat în kernel şi de aceea va fi pierdut când reporneşti maşina. Scriind&lt;br /&gt;
 # iptables-save&lt;br /&gt;
şi&lt;br /&gt;
 # iptables-restore&lt;br /&gt;
este ceea ce vă recomand.&lt;br /&gt;
Între timp, pune comanda necesară pentru a-ţi seta regulile într-un script de iniţializare. Asigură-te că faci ceva inteligent în caz că una din comenzi nu merge (de obicei 'exec /sbin/sulogin').&lt;br /&gt;
&lt;br /&gt;
==Cine oare eşti şi de ce te joci cu kernelul meu?==&lt;br /&gt;
Eu sunt Rusty; eu sunt cel care întreţine ''Linux IP Firewall'' şi sunt doar un programator decent care s-a întâmplat să fie la locul potrivit în timpul potrivit. Eu am scris ipchains (mecanismul firewall anterior, din kernelul 2.2) şi am învăţat destule ca să fac să meargă ''filtrul de pachete'' iptables cum trebuie. Cel puţin sper.&lt;br /&gt;
&lt;br /&gt;
==Cum traversează pachetele filtrul?==&lt;br /&gt;
Kernel-ul porneşte cu trei liste de reguli; aceste liste se numesc ''firewall chains'' sau doar ''chains''. Cele trei chain-uri se numesc INPUT, OUTPUT şi FORWARD.&lt;br /&gt;
Pentru fanii ASCII-art, chain-urile sunt aranjate cam aşa:&lt;br /&gt;
&lt;br /&gt;
                    _____&lt;br /&gt;
                   /     \&lt;br /&gt;
 --&amp;gt;[Routing ]---&amp;gt;|FORWARD|-------&amp;gt;&lt;br /&gt;
    [Decision]     \_____/        ^ &lt;br /&gt;
        |                         |&lt;br /&gt;
        v                       ____  &lt;br /&gt;
       ___                     /    \ &lt;br /&gt;
      /   \                   |OUTPUT|&lt;br /&gt;
     |INPUT|                   \____/ &lt;br /&gt;
      \___/                      ^    &lt;br /&gt;
        |                        |&lt;br /&gt;
         ----&amp;gt; Local Process ----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cele trei cicluri reprezentate sunt chain-urile menţionate mai sus. Când un pachet ajunge într-un ciclu din diagramă, acel chain este examinat pentru a decide soarta pachetului. Dacă chain-ul decide să arunce pachetul (DROP), va fi ''omorât'' acolo, dar dacă chain-ul spune că pachetul trebuie acceptat (ACCEPT), el continuă sa circule prin diagramă către următorul chain.&lt;br /&gt;
Un chain este un ''set ordonat de reguli''. Fiecare regulă spune 'dacă header-ul pachetului arata aşa, atunci ce vrei să faci cu pachetul'. Dacă regula nu este îndeplinită de pachet, apoi este consultată următoarea regulă din set. În final, dacă nu mai sunt reguli de consultat pentru acel chain, kernel-ul se uită la politica ''setului de reguli'' (adică politica chain-ului) pentru a decide ce se va întâmpla cu pachetul. Într-un sistem riguros din punct de vedere al securităţii politica ''setului de reguli'' îi spune kernel-ului să arunce pachetul (DROP).&lt;br /&gt;
Cand un pachet soseşte (să zicem, printr-o interfaţă Ethernet) kernelul se uită prima oară la destinaţia lui: acest lucru se numeşte 'routing' (sau rutare).&lt;br /&gt;
Dacă pachetul este chiar pentru calculatorul tău, el va merge în jos către chain-ul INPUT. Dacă trece de acesta (după verificarea pachetului împotriva fiecărei reguli din chain) orice proces care îl aşteaptă îl va primi.&lt;br /&gt;
Altfel, dacă pachetul nu este pentru calculatorul tau şi dacă kernelul nu are forwarding-ul activat, sau nu ştie cum să forward-eze pachetul, acesta va fi aruncat (DROP). Dacă forwarding-ul este activat şi pachetul este destinat către o altă interfaţă de reţea (dacă mai ai încă una), atunci pachetul merge înainte în diagrama noastră spre chain-ul FORWARD. Dacă este acceptat de către acesta el va fi trimis în afară.&lt;br /&gt;
Şi în sfârşit, un program care rulează chiar în calculatorul tău poate trimite pachete în reţea. Aceste pachete trec prin chain-ul OUTPUT: dacă acesta le acceptă (ACCEPT), atunci pachetul işi continua drumul către destinaţia sa, oricare ar fi aceasta şi prin orice interfaţa.&lt;br /&gt;
&lt;br /&gt;
==Folosirea iptables==&lt;br /&gt;
iptables are un manual foarte detaliat (man iptables), dacă ai nevoie de detalii.&lt;br /&gt;
Există câteva lucruri diferite pe care le poţi face cu iptables. În primul rând operaţii cu care poţi face management pe un întreg ''set de reguli''. La început există trei chain-uri INPUT, OUTPUT şi FORWARD pe care nu le poţi şterge. Operaţiile sunt:&lt;br /&gt;
*Crearea unui nou chain (-N).&lt;br /&gt;
*Ştergerea unui chain gol (-X).&lt;br /&gt;
*Schimbarea politicii unuia dintre chain-urile standard (INPUT, OUTPUT şi FORWARD). (-P).&lt;br /&gt;
*Listarea regulilor dintr-un chain (-L).&lt;br /&gt;
*Ştergerea tuturor regulilor dintr-un chain (-F).&lt;br /&gt;
*Readucerea la zero a contoarelor regulilor dintr-un chain (-Z).&lt;br /&gt;
Există şi moduri de manipulare a unei singure reguli dintr-un chain:&lt;br /&gt;
*Ataşarea unei noi reguli (-A).&lt;br /&gt;
*Inserarea unei noi reguli într-o anume poziţie într-un chain (-I).&lt;br /&gt;
*Înlocuirea unei reguli într-o anume poziţie a unui chain (-R).&lt;br /&gt;
*Ştergerea unei reguli (-D).&lt;br /&gt;
&lt;br /&gt;
===Ce vezi atunci cand porneste calculatorul===&lt;br /&gt;
Pentru moment (Linux 2.3.15), iptables este un modul numit ('iptables.o'). Va trebui să-l inserezi în kernel înainte de a putea folosi comanda iptables. Pe viitor, va fi posibil ca el să fie deja construit în kernel.&lt;br /&gt;
Înainte de orice comandă iptables să fie rulată (ai grijă: unele distribuţii vor rula iptables în scripturile lor de iniţializare), nu va exista nici o regulă în cele trei chain-uri de bază ('INPUT', 'FORWARD' şi 'OUTPUT'), chain-urile INPUT şi OUTPUT vor avea politica setată pe ACCEPT, şi chain-ul FORWARD va fi setat pe DROP (poţi schimba acest lucru setând 'forward=1' in opţiunile modulului iptables).&lt;br /&gt;
&lt;br /&gt;
===Operatii cu o singura regula===&lt;br /&gt;
Acestea sunt ''painea si cutitul'' unui filtru de pachete; manipularea regulilor. Cel mai des probabil ca vei folosi comenzile de atasare (-A) si stergere (-D). Celelalte (-I pentru inserare si -R pentru inlocuire) sunt simple extensii ale acestor concepte.&lt;br /&gt;
Fiecare regula specifica un set de conditii pe care trebuie sa le indeplineasca un pachet, si ce sa faca in caz ca le indeplineste (o tinta 'target'). De exemplu, vrei sa arunci toate pachetele de tip ICMP care vin de la IP-ul 127.0.0.1. Deci in acest caz conditiile noastre sunt ca protocolul trebuie sa fie ICMP si sursa de la care vin pachetele este IP-ul 127.0.0.1. tinta noastra este aruncarea lor (DROP).&lt;br /&gt;
127.0.0.1 este interfata 'loopback', pe care o ai char daca nu ai vreo legatura fizica la vreo retea. Poti folosi programul 'ping' pentru a genera asemenea pachete si a testa o astfel de regula.&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 1 packets received, 0% packet loss&lt;br /&gt;
 round-trip min/avg/max = 0.2/0.2/0.2 ms&lt;br /&gt;
 # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 0 packets received, 100% packet loss&lt;br /&gt;
Poti vedea aici ca ping-ul a avut scces (prin '-c 1' i-am spus programului ping sa trimita un singur pachet).&lt;br /&gt;
Apoi atasam (-A) chain-ului 'INPUT', o regula in care specificam ca pachetele care vin de la IP-ul 127.0.0.1 ('-s 127.0.0.1') prin protocolul ICMP ('-p icmp') ar terbui sa le dam DROP ('-j DROP').&lt;br /&gt;
Apoi testam regula noastra, folosind un al doilea ping. Va fi o pauza pana cand programul renunta sa mai astepte raspunsul care nu va veni niciodata.&lt;br /&gt;
Putem sterge aceasta regula in mai multe feluri. In primul rand, pentru ca stim ca este singura regula in chain-ul input, putem folosi o stergere in care specificam pozitia reguluii:&lt;br /&gt;
 # iptables -D INPUT 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Al doilea mod prin care putem sterge regula este sa oglindim comanda –A, inlocuind –A cu -D. Acest lucru este folositor cand avem un set complex de reguli. In acest caz folosim:&lt;br /&gt;
 # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
&lt;br /&gt;
===Specificatii ale filtrarii===&lt;br /&gt;
Am vazut folosirea '-p' pentru a specifica protocolul, si '-s' pentru a specifica adresa sursa, dar sunt si alte optiuni cu care putem specifica caracteristici ale pachetelor&lt;br /&gt;
*Specificarea adresei Sursa si adresa Destinatie.&lt;br /&gt;
Sursa ('-s', '--source' or '--src') si destinatia ('-d', '--destination' or '--dst') IP-ului poate fi specificata in patru moduri. Cel mai des intalnit este folosirea numelui intreg, cum ar fi 'localhost' sau 'www.linuxhq.com'. Al doilea mod este folosirea de adrese IP cum ar fi '127.0.0.1'.&lt;br /&gt;
Al treilea si al patrulea mod este specificarea unui interval de IP-uri, cum sunt '199.95.207.0/24' sau '199.95.207.0/255.255.255.0'. Amandoua specifica orice IP cuprins intre 199.95.207.0 to 199.95.207.255 inclusiv; iar digitii dupa '/' ne spun care parti din IP-uri sunt relevante in cazul nostru. '/32' sau '/255.255.255.255' este modul standard (default). Pentru a specifica orice ip putem folosi '/0', dupa cum urmeaza:&lt;br /&gt;
 # ipchains -A input -s 0/0 -j DENY&lt;br /&gt;
Aceasta este rar folosit pentru ca efectul obtinut este la fel ca in cazul in care nu folosim de loc optiunea '-s'.&lt;br /&gt;
*Specificarea unei inversiuni&lt;br /&gt;
Multe flag-uri, incluzand optiunile '-s' and '-d' pot avea argumentele precedate de un '!' pentru a compara adrese care nu sunt echivalente cu cele date in linia de comanda. De exemplu '-s ! localhost' inseamna orice pachet care nu vine de la localhost.&lt;br /&gt;
*Specificarea Protocolului&lt;br /&gt;
Protocolul poate fi specificat cu flag-ul '-p'. Protocolul poate fi un numar (daca stii valorile numerice pentru IP) sau un nume pentru cazurile speciale de 'TCP', 'UDP' sau 'ICMP'. Cum este scris nu conteaza, asa ca 'tcp' merge la fel de bine ca si 'TCP'.&lt;br /&gt;
Numele protocolului poate fi precedat de un '!', pentru a fi inversat, such as '-p ! TCP' (expresia inseamna tot ce nu e TCP).&lt;br /&gt;
*Specificarea unei interfete&lt;br /&gt;
Optiunea '-i' (sau '--in-interface') si '-o' (sau '--out-interface') specifica numele interfetei. O interfata este un lucru fizic (modem, placa de retea etc…) prin care pachetul intra ('-i') sau prin care iese ('-o'). Poti folosi comanda&lt;br /&gt;
 # ifconfig&lt;br /&gt;
pentru a vedea interfetele care sunt active.&lt;br /&gt;
Pentru pachetele care traverseaza chain-ul INPUT nu se poate specifica o interfata de iesire, deci orice regula din acest chain care contine optiunea '-o' este inutila. Similar, pachetele care traverseaza chain-ul OUTPUT nu au interfata de intrare, deci orice regula din acest chain in care exista optiunea '-i' este inutila.&lt;br /&gt;
Doar pachetele care traverseaza chain-ul FORWARD au atat interfata de intrare cat si interfata de iesire.&lt;br /&gt;
Nu este gresit daca se specifica o interfata care pentru moment nu este activa; regula nu se va potrivi niciunui pachet pana cand interfata nu va fi activata. Acest lucru este foarte util pentru legaturi dial-up (PPP point to point) de obicei interfata ppp0.&lt;br /&gt;
Un caz special, un nume de interfata al carei string se termina cu '+' specifica toate interfetele de acelas fel (chiar daca sunt activate sau nu). De exemplu, pentru a specifica o regula care sa se potriveasca pentru toate interfetele de gen PPP, se va folosi expresia-i ppp+.&lt;br /&gt;
Numele interfetei poate fi precedat de '!', aceasta regula se va referi la pachetele care nu vin sau ies prin acea interfata.&lt;br /&gt;
*Specificarea fragmentelor&lt;br /&gt;
Uneori un pachet este prea mare ca sa incapa prin ''fir'' intreg. Cand acest lucru se intampla pachetul este divizat in fragmente, si trimis ca mai multe pachete mai mici. Calculatorul care primeste aceste fragmente le va reasambla si va forma pachetul initial.&lt;br /&gt;
Problema cu aceste pachete este ca doar primul fragment din acestea contine in header informatii despre protocol (cum ar fi TCP, UDP si ICMP) si extensiile lui, iar restul de fragmente nu contin aceste lucruri, iar daca am incerca sa ne uitam in ele ar fi imposibil.&lt;br /&gt;
Daca tu faci ''connection tracking'' sau ''NAT'', atunci toate aceste fragmente vor fi fuzionate inainte de a ajunge la ''filtrul de pachete'', deci nu trebuie sa ne facem griji despre aceste fragmente. Atltfel, poti insera in kernel modulul 'ip_defrag.o' care face acelas lucru (nota, acest lucru este permis doar daca linux-box-ul tau este singura conexiune intre cele doua retele).&lt;br /&gt;
Altfel, este foarte important sa intelegem cum sunt tratate fragmentele de catre regulile de filtrare. Orice regula care cere informatii de la pe care nu le avem nu se va potrivi, aceasta inseamna ca primul fragment (cel care are specificat in header tot ce este necesar) va fi tratat ca pe un pachet, iar cel de-al doilea si restul de fragmente nu vor fi tratate corespunzator (pentru ca header-ul lor nu contine informatiile necesare). De aceea o regula de genul ''-p TCP --sport www'' (care specifica portul sursa al unui server 'www') nu va filtra fragmente (in afara de primul). La fel se va comporta si regula opusa ''-p TCP --sport ! www''.&lt;br /&gt;
Oricum, poti face o regula special pentru cel de-al doilea si urmatoarele fragmente folosind optiunea '-f' (sau '--fragment'). Valabila este si regula care nu se aplica pentru cel de-al doilea si urmatoarele fragmente daca punem optiunea ''!'' inaintea lui '-f'.&lt;br /&gt;
De obicei se zice ca este sigur (din punct de vedere al securitatii) sa lasi al doilea si celelalte fragmente sa treaca treaca, pentru ca filtrarea afecteaza decat primul fragment, si deci pachetul nu va putea fi reasamblat in partea cealalta, dar, exista bug-uri care vor face masina sa se ''prabuseasca'' doar prin simplul fapt ca aceasta trimite fragmente. Este decizia ta.&lt;br /&gt;
Ca un exemplu, urmatoarea regula va arunca toate fragmentele care se duc la IP-ul 192.168.1.1:&lt;br /&gt;
 # iptables -A OUTPUT -f -d 192.168.1.1 -j DROP&lt;br /&gt;
*Extensii la iptables&lt;br /&gt;
Iptables este extensibil, asta insemnand ca atat kernel-ul cat si iptables se pot extinde pentru a ne asigura noi posibilitati.&lt;br /&gt;
Unele dintre aceste extensii sunt standard, si altele sunt mai mult exotice. Extensiile pot fi facute si de alti oameni si distibuite userilor.&lt;br /&gt;
Extensiile kernel-ului normal se gasesc in subdirectorul lui pentru module, cum este /lib/modules/2.3.15/net. Pe acestea trebuie sa le incarci in kernel automat pentru ca ele nu se autoincarca la cerere(Linux 2.3.15). Pe viitor ele se vor incarca automat.&lt;br /&gt;
Extensiile programului iptables sunt librarii ''sheruite'' care de obicei sunt gasite in directorul /usr/local/lib/iptables/, cu toate ca anumite distributii le pun in /lib/iptables sau /usr/lib/iptables.&lt;br /&gt;
Extensiile sunt de doua tipuri: tinte noi (new targets), si noi teste (new tests); mai jos vom vorbi despre ''noi tinte''. Anumite protocoale ofera ele noi teste: actual ele sunt TCP, UDP si ICMP cum sunt aratate mai jos.&lt;br /&gt;
Pe aceste noi teste le vei putea specifica in linia de comanda dupa optiunea '-p', care va incarca extensiile. Pentru teste noi explicite trebuie sa folosestei optiunea '-m' pentru a incarca extensia, doar dupa aceasta va fi aceasta accesibila.&lt;br /&gt;
Pentru a deschide manualul extensiei dupa ce o incarci ('-p' or '-m') foloseste optiunea '-h' sau '--help'.&lt;br /&gt;
**Extensii TCP&lt;br /&gt;
Extensiile TCP sunt incarcate automat daca este folosita comanda '--protocol tcp'. Aceastea vin cu urmatoarele optiuni (niciuna nu se refera si la fragmente, doar la pachete).&lt;br /&gt;
--tcp-flags&lt;br /&gt;
Daca dupa ele se pune (optional)'!', atunci doua stringuri te vor ajuta sa filtrezi flaguri specifice protocolului TCP. Primul string este un ''mask'': o lista de flaguri pe care vrei sao examinezi. Al doilea string iti spune pe care vrei sa le filtrezi. De exemplu:&lt;br /&gt;
 # iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY[/code]&lt;br /&gt;
Aceasta indica, ca toate flagurile trebuie examinate ('ALL' este sinonim cu 'SYN,ACK,FIN,RST,URG,PSH'), dar doar SYN si ACK vrei sa le setezi. Exista si un argument 'NONE' care inseamna nici un flag.&lt;br /&gt;
--syn&lt;br /&gt;
Urmat optional de '!', aceasta este o scurtare a comenzii'--tcp-flags SYN,RST,ACK SYN'.&lt;br /&gt;
--source-port&lt;br /&gt;
optional urmat de '!', si apoi de un singur port TCP, sau un interval de porturi. Porturile poti specificate prin numele lor, la fel ca in /etc/services, sau numerice. Intervalele sunt ori doua nume de porturi separate cu'-', sau (pentru a specifica un nr. mai mare sau egal cu portul dat) un port cu '-' inainte lui, sau (pentru a specifica un nr mai mic sau egal cu portul dat), un port precedat de'-'.&lt;br /&gt;
--sport&lt;br /&gt;
este sinonim cu '--source-port'.&lt;br /&gt;
--destination-port&lt;br /&gt;
and&lt;br /&gt;
--dport&lt;br /&gt;
sunt la fel ca si mai sus, numai ca ele specifica destinatia in loc de sursa portului care ne intereseaza sa-l filtram.&lt;br /&gt;
--tcp-option&lt;br /&gt;
urmat oprional de '!' siun numar, se refera la un pachet TCP care este egal cu acel numar. Un pachet care nu are un header TCP complet este aruncat (DROP) automat daca i se incearca examinarea optiunilor TCP.&lt;br /&gt;
O explicatie a flagurilor TCP&lt;br /&gt;
Este util sa permitem conexiuni TCP intr-o directie, dar nu si in cealalta. De exemplu, ai vrea sa se poata face conexiuni catre un server WWW exterior, dar sa nu existe conexiuni de la acel server la tine.&lt;br /&gt;
Te poti gandi sa blochezi pachetele care vin de la acel server. Dar din nefericire, ca o conexiune TCP sa mearga trebuie sa existe trafic in ambele directii.&lt;br /&gt;
Solutia este sa blochezi doar pachetele care cer ca o conexiune sa fi stabilita. Aceste pachete se numesc SYN (ok, tehnic ele sunt pachete cu flagul SYN setat, si flagurile FIN si ACK sunt sterse, dar noi le numim pe scurt pachete SYN). Blocand doar aceste pachete putem opri cererile de conexiuni si astfel niciuna nu poate fi facuta din exterior.&lt;br /&gt;
Flagul '--syn' este folosit pentru aceasta: este valid doar pentru regulile in care li se specifica ca protocol TCP-ul. Ca exemplu, pentru a specifica incercari de conexiuni de la IP-ul 192.168.1.1 se foloseste:&lt;br /&gt;
-p TCP -s 192.168.1.1 --syn&lt;br /&gt;
Acest flag poate fi inversat daca este precedat de un '!', aceasta inseamna orice pachet inafara de cele initiatoare de conexiuni TCP.&lt;br /&gt;
**Extensii UDP&lt;br /&gt;
Aceste extensii sunt incarcate automat daca este specificat protocolul UDP '--protocol udp'. Aici avem optiunile '--source-port', '--sport', '--destination-port' si '--dport' detaliate mai sus la protocolul TCP.&lt;br /&gt;
Extensii ICMP&lt;br /&gt;
Aceasta extensi este incarcata automat daca se specifica '--protocol icmp'. Aceasta ne da o singura optiune:&lt;br /&gt;
--icmp-type&lt;br /&gt;
urmat optional de '!', atunci un unme tip icmp (ex 'host-unreachable'), sau un tip numeric (ex. '3'), sau numeric si cod separat de'/' (ex. '3/3'). O lista de nume tip icmp se poate optine cu comanda '-p icmp --help'.&lt;br /&gt;
Alte extensii&lt;br /&gt;
Celelalte doua extensii sunt extensii demonstrative, care (daca sunt instalate) pot fi ''aduse la viata'' cu optiunea '-m'.&lt;br /&gt;
mac&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m mac' sau '--match mac'. Este folosit pentru a filtra pachetele dupa adresa Ethernet (MAC), si este folositoare doar la regulile din chain-urile INPUT si FORWARD. De aduce o singura optiune:&lt;br /&gt;
--mac-source&lt;br /&gt;
optional urmata de '!', apoi o adresa ethernet scrisa in hexazecimale separate de '':'', ex '--mac-source 00:60:08:91:CC:B7'.&lt;br /&gt;
limit&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m limit' sau '--match limit'. Este folosit pentru a limita rata de pachete acceptate. Unitatea de masura este numere de pachete pe secunda (default 3 pachete pe ora, cu o rafala de 5). Aceasta ne aduce doua argumente optionale:&lt;br /&gt;
--limit&lt;br /&gt;
urmat de un numar; specifica numarul medie maxim de pachete pe secunda care sunt lasate sa treaca. Numarul poate unitati explicite, folosind '/second', '/minute', '/hour' or '/day', sau parti din ele (deci '5/second' este la fel ca '5/s').&lt;br /&gt;
--limit-burst&lt;br /&gt;
urmata de un numar, defineste lungimea rafalei de pachete acceptate dupa care intra in actiune limita de mai sus.&lt;br /&gt;
Aceasta optiune poate fi folosita impreuna cu tinta ''LOG'' pentru a face ''rate-limited logging''. Prentru a intelege cum functioneaza, hai sa ne uitam la urmatoarea regula, care logheaza pachetele care au limita ''default'':&lt;br /&gt;
 # iptables -A FORWARD -m limit -j LOG&lt;br /&gt;
Prima oara cand regula este indeplinita de un pachet, acesta va fi logat; de fapt, pentru ca rafala este de 5, primele cinci pachete vor fi logate. Dupa aceea, vor mai trece ica douazeci de minute pana cand urmatorul pachet va fi logat de la regula aceasta, netinand cont de cate pachete ajung la ea. Deasemenea, fiecare douazeci de minute care trec fara ca un pachet sa indeplineasca regula , o unitate din rafala va fi recapatata, daca nici un pachet nu se loveste de regula timp de 100 de minute rafala va reveni la 5; la fel ca la inceput.&lt;br /&gt;
Nu poti creea o regula a carei interval de timp de umplere a rafalei sa depaseasca 59 de ore, deci daca faci o regula care sa se reincarce o data pe zi, rafala trebie sa fie mai mica de 3.&lt;br /&gt;
unclean&lt;br /&gt;
Acest modul trebuie explicit specificat cu '-m unclean sau '--match unclean'. Acesta face analize aleatorii asupra integritatii pachetelor. Acesta nu trebuie folosit ca o optiune pentru securitate (probabil ca va inrautatii lucrurile, pentru ca s-ar putea ca sa aiba bug-uri). Nu vine cu nici o optiune.&lt;br /&gt;
&lt;br /&gt;
===Specificarea tintelor===&lt;br /&gt;
Acum stim cum sa examinam un pachet, trebuie sa stim ce sa facem cu pachetele care se potrivesc regulilor noastre. Aceasta se numeste ''Tinta regulii'' (rule's target).&lt;br /&gt;
Exista doua tinte foarte simple: DROP (arunca) si ACCEPT(accepta). Deja le stim pe acestea. Daca pachetul indeplineste regula si tinta ei este una din cele doua, nu vor mai fi consultate alte reguli: soarta pachetului a fost decisa.&lt;br /&gt;
There are two types of targets other than the built-in ones: extensions and user-defined chains.&lt;br /&gt;
Chain-uri definite de utilizator (User-defined chains)&lt;br /&gt;
O puternica abilitate pe care iptables a mostenit-o de la ipchains este abilitatea de a creea chain-uri definite de utilizator (adica alte chain-uri inafara de cele trei de baza INPUT, FORWARD si OUTPUT).&lt;br /&gt;
Cand un pachet se potriveste unei reguli a carei tinta este un chain definit de utilizator, pachetul incepe sa confrunte reguluile sin chain-ul definit de utilizator. Daca acel chain nu decide soarta pachetului, adica a parcurs toate regulile din acel chain definit de utilizator, atunci pachetul incepe sa confrunte regula imegiat urmatoare regulei a carei tinta a fost chainul definit de utilizator.&lt;br /&gt;
Din nou este vremea pentru ASCII art. Sa zicem ca avem doua chain-uri Consider two (prostute): INPUT (chain-ul de baza) si test (un chain definit de utilizator cu optiunea ''-N''). CLIC&lt;br /&gt;
&lt;br /&gt;
Chain-urile definite de utilizator pot sari catre alte chain-uri definite de utilizator (dar nu au voie sa fac bucle inchise: pachetele care intra in bucle inchise vor fi aruncate).&lt;br /&gt;
Extensia: New Targets&lt;br /&gt;
Clealat tip de tinta este o extensie. Aceastea constau intr-un modul pentru kernel, care ne asigura noi optiuni in linia de comanda. Exista cateva extensii in distributia default a pachetului netfilter:&lt;br /&gt;
*LOG&lt;br /&gt;
Acest modul logheaza pachetele care indeplinesc o anumita regula a carei tinta este ''LOG''. Acesta vine cu urmatoarele optiuni:&lt;br /&gt;
--log-level&lt;br /&gt;
Urmata de un nume sau numar. Numele sunt (case-insensitive) 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' si 'emerg', care corespund numerelor de la 7 la 0. Uta-te la ''man page-ul'' pentru syslog.conf pentru o explicatie a acestor nivele.&lt;br /&gt;
--log-prefix&lt;br /&gt;
Urmat de un sting de maxim 14 caractere, acest mesaj este trimis la inceputul logului pentru a fi unic.&lt;br /&gt;
Acest modul este forte util dupa o tinta care limiteaza pentru a nu-ti inunda (food) logurile.&lt;br /&gt;
*REJECT&lt;br /&gt;
Acest modul are acelas efect ca modulul 'DROP', numai ca expeditorului ii este trimis un mesaj de eroare de tip ICMP 'port unreachable'. Nota: mesajul de eroare de tip ICMP nu este trimis daca (vezi RFC 1122):&lt;br /&gt;
Pachetul filtrat era chiar el un mesaj de eroare de tip ICMP, sau un tip necunoscut de ICMP.&lt;br /&gt;
Pachetul filtrat nu era primul fragment dintr-un lant de fragmente.&lt;br /&gt;
Am trimis prea multe mesaje de eroare de tip ICMP la acea destinatie intr-un anumit timp.&lt;br /&gt;
Tinte speciale&lt;br /&gt;
Exista doua tinte speciale care vin o dat cu distributia: RETURN si QUEUE.&lt;br /&gt;
*RETURN are acelas efect ca si cum ar sari de la sfarsitul unui chain: pentru unul dintre cele trei chain-uri de baza, soarta pachetului va fi decisa de politica acestuia. Pentru o regula dintr-un chain definit de utilizator, traversarea continua exact dupa regula de la care a fost aruncat pachetul in chain-ul definit de utilizator. Daca o regula (nu este neaparat sa fie ultima din chain) dintr-un chain definit de utilizator are tinta RETURN si aceasta se potriveste unui pachet, aceasta il va trimite inapoi la chainul de unde a venit, cu mentiunea ca este respectata traversearea regulilor, adica la regula exact urmatoare celei care a trimis pachetul in chain-ul definit de utilizator.&lt;br /&gt;
*QUEUE este o tinta speciala, care ''pastreaza'' pachetul pentru procesarea facuta de useri. Daca pachetul nu este asteptat de vreo aplicatie acesta va fi aruncat.&lt;br /&gt;
&lt;br /&gt;
===Operatii cu un Chain intreg===&lt;br /&gt;
O abilitate foarte utila a programului iptables este gruparea regurilor in chainuri (seturi de reguli). Poti denumi chainurile definite de utilizator cum vrei, dar este rcomandat sa le denumesti cu caractere mici pentru a nu le confunda cu cele trei chainuri de baza; numele acestora poate sa fie maxim din 16 litere.&lt;br /&gt;
*Crearea unui nou chain&lt;br /&gt;
Hai sa creem un nou chain. Pentru ca eu sunt un tip cu imaginatie am sa-l numesc test. Vom folosi optiunile '-N' sau '--new-chain':&lt;br /&gt;
 # iptables -N test&lt;br /&gt;
Este chiar atat de simplu. Acum poti pune reguli in el dupa cum a fost aratat mai sus.&lt;br /&gt;
*Stergerea unui Chain&lt;br /&gt;
Stergerea unui chain este la fel de simplu, folosind optiunea '-X' sau '--delete-chain'. De ce '-X'? Pai…, toate literele frumoase au fost luate deja.&lt;br /&gt;
 # iptables -X test&lt;br /&gt;
Exista cateva restrictii cand stergem un chain: acesta trebuie sa fie gol (vezi golirea unui chain mai jos) si nu trebuie sa fie tinta vreunei reguli. Chainurile de baza nu pot fi sterse.&lt;br /&gt;
Daca nu se specifica numele chainului de sters, atunci toate chain-urile definite de utilizator vor fi sterse, daca este posibil.&lt;br /&gt;
*Golirea unui Chain&lt;br /&gt;
Exista un mod simplu prin care se poate goli un cahin de toate regulile care exista in el, folosind comanda '-F' (sau '--flush').&lt;br /&gt;
 # ipchains -F forward&lt;br /&gt;
Daca nu se specifica chain-ul atunci toate chainurile vor fi golite.&lt;br /&gt;
*Listarea unui chain&lt;br /&gt;
Poti vedea toate regulile existente intr-un chain cu comanda '-L'.&lt;br /&gt;
Daca nu este specificat numele chain-ului atunci sunt listate toate regulile existente in ''filtrul de pachete''.&lt;br /&gt;
Exista trei optiuni care acompaniaza comanda '-L'. Optiunea '-n' (numeric) pentru ca ea previne ca iptables sa incerce sa caute adresa IP, care (daca folosesti DNS ca majoritatea oamenilor) va cauza delay-uri foarte mari in caz ca DNS-ul nu este setat cum trebuie, sau daca filtrezi cererile de DNS (Domain Name Server).&lt;br /&gt;
Optiunea '-v' va arata toate detaliile unei raguli, cum sunt pachetele si contuarele de biti, comparatiile TOS, si interfetele. Altfel aceste valori sunt omise.&lt;br /&gt;
Nota: pachetele si contoarele de biti sunt afisate folosin sufixele 'K', 'M' sau 'G' pentru 1000, 1,000,000 si respectiv 1,000,000,000. Folosind optiunea '-x' (expand numbers) vor fi aratate ca numere netinand cont de cat de mari sunt acestea.&lt;br /&gt;
*Resetarea (Zeroing) Contoarelor&lt;br /&gt;
Este util sa poti reseta contoarele. Acest lucru poate fi facut cu optiunea '-Z' (sau '--zero')&lt;br /&gt;
Problema cu acest lucru este ca, uneori, trebuie sa stii valorile contoarelor imediat inainte de a fi aduse la zero. In exemplul de mai sus, anumite pachete pot trece in dupa ce folosesti optiunea '-L' si pana folosesti optiunea '-Z'. Pentru acest motiv, poti folosi optiunile '-L' si '-Z' impreuna, pentru a reseta contuarele in timp ce le vizualizezi.&lt;br /&gt;
*Setarea politicii&lt;br /&gt;
Doar chain-urile de baza (INPUT, OUTPUT and FORWARD) au o politica, pentru ca daca un pachete este confruntat cu un regulile dintr-un chain definit de utilizator si inca nu i se decide soarta, acesta isi continua drumul intr-un chain de baza.&lt;br /&gt;
Politica poate fi ACCEPT(accepta) sau DROP (arunca).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Traducerea si adaptarea a fost facuta (initial) de Razvan Turtureanu (razvan@upb.ro)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Firewall]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1707</id>
		<title>Iptables romana</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1707"/>
				<updated>2006-01-02T11:57:48Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Folosirea iptables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cuvânt introductiv ==&lt;br /&gt;
Pentru început, vreau să spun că eu nu ştiu mai mult decât alţii şi spun asta pentru că am intrat în contact cu câţiva oameni care într-adevăr ştiu multe despre [http://ro.wikipedia.org/wiki/Linux Linux]. Eu nu am făcut decât să traduc acest ''HowTo'', iar dacă (mai mult ca sigur) voi găsiţi greşeli de traducere sau de adaptare, vă rog să îmi atrageţi atenţia scriindu-mi un mesaj de [mailto:razvan@upb.ro poştă electronică]. Dacă intraţi în posesia acestui fişier şi ştiţi pe cineva care îl vrea, vă rog să îl daţi pe gratis, adica aşa cum l-aţi primit şi voi pentru că nici măcar eu nu am cerut bani pe el. Sper sa vă ajute, cel puţin la fel de mult cât m-a ajutat şi pe mine, iar dacă aveţi neclarităţi scrieţi-mi un mesaj şi vă voi răspunde în măsura în care pot şi am timp.&lt;br /&gt;
&lt;br /&gt;
==Ce este filtrarea de pachete?==&lt;br /&gt;
&lt;br /&gt;
=== Bazele reţelisticii ===&lt;br /&gt;
Tot traficul dintr-o reţea este transmis sub formă de pachete. De exemplu, descărcând acest document (să zicem că are 50ko) s-ar putea ca tu să primeşti 36 de pachete a câte 1460 octeţi fiecare.&lt;br /&gt;
&lt;br /&gt;
Antetul (engl. [http://en.wikipedia.org/wiki/Header_%28information_technology%29 header]) fiecărui pachet spune unde se duce, de unde vine, tipul pachetului precum şi alte detalii administrative. Restul pachetului, conţinând datele care ne sunt transmise, se numeşte corpul (engl. [http://en.wikipedia.org/wiki/Packet body]) sau conţinutul pachetului.&lt;br /&gt;
&lt;br /&gt;
Câteva protocoale, de exemplu TCP care este folosit (spre exemplu) pentru traficul de web, poştă şi sesiuni de terminal de la distanţă, folosesc principiul de forma o conexiune inainte de a transmite pachete cu datele care ne interesează. Astfel, varii pachete de ''început'' (cu antete speciale) sunt schimbate care spun 'Vreau să mă conectez', 'Bine' şi 'Mulţumesc' (procedură cunoscută ca negociere bilaterală -- engl. [http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment_.283-way_handshake.29 3-way handshaking]). Abia apoi începe schimbul de pachete conţinând datele ce trebuie să tranziteze conexiunea  proaspăt creeată.&lt;br /&gt;
&lt;br /&gt;
===Deci ce este un ''filtru de pachete''?===&lt;br /&gt;
Un filtru de pachete este un program care se uită în header-ul pachetelor care trec şi le decide soarta. El poate să ''arunce'' pachetul (să îl neglijeze ca şi cum nu ar fi fost primit), să ''accepte'' pachetul (să îl lase să treacă), sau să ''rejecteze'' pachetul (îl aruncă dar şi spune sursei de la care a venit că l-a aruncat).&lt;br /&gt;
Sub Linux, filtrarea de pachete este construită în kernel (ca modul sau chiar în el) şi există câteva lucruri mai deosebite pe care le putem face cu pachetele (putem de exemplu să modificăm sursa sau destinaţia acestuia înainte de a-l trimite mai departe), dar principiul general de a ne uita în antetul pachetului şi să-i decidem soarta este înca acolo.&lt;br /&gt;
&lt;br /&gt;
===De ce aş vrea să filtrez pachete?===&lt;br /&gt;
*Control:&lt;br /&gt;
Cand foloseşti un ''linux-box'' ca să conectezi reţeaua ta internă la o altă reţea (să zicem Internetul) ai oportunitatea de a lăsa numai anumite feluri de trafic sa treacă şi să nu laşi să treacă pe altele. De exemplu, antetul pachetului conţine destinaţia sa şi poţi preveni ca pachetele să ajungă într-o anumită parte a reţelei externe. Ca un alt exemplu, eu folosesc Netscape ca sa accesez arhivele Dilbert. Pe acea pagină sunt reclame de la doubleclick.net, şi Netscape-ul îmi pierde timpul deschizându-le. Spunându-i ''filtrului de pachete'' să nu lase să treacă pachete spre doubleclick.net sau să vină de la el rezolvă aceasta problemă.&lt;br /&gt;
*Securitate:&lt;br /&gt;
Când Linux-box-ul tău este singurul lucru care stă între haosul din Internet şi reţeaua ta privată, este bine de ştiut că poţi restricţiona ceea ce face ''tărăboi la uşa ta''. De exemplu, poţi lăsa să treacă ceea ce pleacă din interiorul reţelei interne, dar ar trebui să te îngrijoreze vestitul 'Ping of Death' care vine de la străini, sau diverşi alţi viruşi ce se propagă prin Internet. Ca un alt exemplu, nu ai vrea ca cei din afară să se conecteze prin ssh (sau mult mai vechiul telnet) la serverul tău, chiar dacă toate conturile din el sunt protejate de o parolă; având un filtru de pachete care să ''arunce'' pachetele cu antete speciale care sunt folosite pentru a deschide conexiuni din exterior.&lt;br /&gt;
*Supraveghere:&lt;br /&gt;
Uneori o maşină din interior prost configurată (sau un virus de exemplu) poate decide să împraştie pachete lumii exterioare. Este frumos să-i spui ''filtrului de pachete'' să te înştiinţeze când se întâmplă ceva care nu face parte din normal,nu de alta dar poate faci ceva în legatură cu lucrul acesta sau poate eşti curios din fire să ştii ceea ce se intâmplă în reţeaua ta internă.&lt;br /&gt;
&lt;br /&gt;
===Cum filtrez pachete sub Linux?===&lt;br /&gt;
Kernel-ele Linux-ului au avut filtre de pachete chiar de la versiunea 1.1. Prima generaţie, bazată pe ''ipfw'' de la BSD, a fost introdusă de Alan Cox in 1994. Aceasta a fost modificată şi întărită de Jos Vos şi alţii pentru Linux 2.0. În 1998, pentru Linux 2.2, eu am modificat radical kernelul, cu ajutorul lui Michael Neuling şi am introdus programul 'ipchains'. În final, a patra generaţie a filtrului, 'iptables', şi o altă modificare a kernelului au apărut în 1999 pentru Linux 2.4. Pe iptables ne vom concentra în acest HOWTO.&lt;br /&gt;
Programul iptables vorbeşte cu kernel-ul şi îi spune ce pachete să filtreze. Dacă nu eşti programator sau prea curios, în acest fel vei controla ''filtrul de pachete''.&lt;br /&gt;
Programul iptables inserează sau şterge reguli din ''tabelul'' de reguli de filtrare al kernelului. Aceasta înseamnă că orice ai seta, se va pierde când vei reporni maşina; vezi [[#Cum să faci regulile permanente]] pentru a te asigura că data viitoare când porneşti maşina ele sunt încă acolo.&lt;br /&gt;
iptables înlocuieşte ipfwadm şi ipchains: vezi [[http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables-HOWTO-6.html|Cum să folosesti ipchains şi ipfwadm]] pentru a evita folosirea iptables dacă deja foloseşti ipchains sau ipfwadm.&lt;br /&gt;
&lt;br /&gt;
===Cum să faci regulile permanente===&lt;br /&gt;
Firewall-ul tău curent este stocat în kernel şi de aceea va fi pierdut când reporneşti maşina. Scriind&lt;br /&gt;
 # iptables-save&lt;br /&gt;
şi&lt;br /&gt;
 # iptables-restore&lt;br /&gt;
este ceea ce vă recomand.&lt;br /&gt;
Între timp, pune comanda necesară pentru a-ţi seta regulile într-un script de iniţializare. Asigură-te că faci ceva inteligent în caz că una din comenzi nu merge (de obicei 'exec /sbin/sulogin').&lt;br /&gt;
&lt;br /&gt;
==Cine oare eşti şi de ce te joci cu kernelul meu?==&lt;br /&gt;
Eu sunt Rusty; eu sunt cel care întreţine ''Linux IP Firewall'' şi sunt doar un programator decent care s-a întâmplat să fie la locul potrivit în timpul potrivit. Eu am scris ipchains (mecanismul firewall anterior, din kernelul 2.2) şi am învăţat destule ca să fac să meargă ''filtrul de pachete'' iptables cum trebuie. Cel puţin sper.&lt;br /&gt;
&lt;br /&gt;
==Cum traversează pachetele filtrul?==&lt;br /&gt;
Kernel-ul porneşte cu trei liste de reguli; aceste liste se numesc ''firewall chains'' sau doar ''chains''. Cele trei chain-uri se numesc INPUT, OUTPUT şi FORWARD.&lt;br /&gt;
Pentru fanii ASCII-art, chain-urile sunt aranjate cam aşa:&lt;br /&gt;
&lt;br /&gt;
                    _____&lt;br /&gt;
                   /     \&lt;br /&gt;
 --&amp;gt;[Routing ]---&amp;gt;|FORWARD|-------&amp;gt;&lt;br /&gt;
    [Decision]     \_____/        ^ &lt;br /&gt;
        |                         |&lt;br /&gt;
        v                       ____  &lt;br /&gt;
       ___                     /    \ &lt;br /&gt;
      /   \                   |OUTPUT|&lt;br /&gt;
     |INPUT|                   \____/ &lt;br /&gt;
      \___/                      ^    &lt;br /&gt;
        |                        |&lt;br /&gt;
         ----&amp;gt; Local Process ----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cele trei cicluri reprezentate sunt chain-urile menţionate mai sus. Când un pachet ajunge într-un ciclu din diagramă, acel chain este examinat pentru a decide soarta pachetului. Dacă chain-ul decide să arunce pachetul (DROP), va fi ''omorât'' acolo, dar dacă chain-ul spune că pachetul trebuie acceptat (ACCEPT), el continuă sa circule prin diagramă către următorul chain.&lt;br /&gt;
Un chain este un ''set ordonat de reguli''. Fiecare regulă spune 'dacă header-ul pachetului arata aşa, atunci ce vrei să faci cu pachetul'. Dacă regula nu este îndeplinită de pachet, apoi este consultată următoarea regulă din set. În final, dacă nu mai sunt reguli de consultat pentru acel chain, kernel-ul se uită la politica ''setului de reguli'' (adică politica chain-ului) pentru a decide ce se va întâmpla cu pachetul. Într-un sistem riguros din punct de vedere al securităţii politica ''setului de reguli'' îi spune kernel-ului să arunce pachetul (DROP).&lt;br /&gt;
Cand un pachet soseşte (să zicem, printr-o interfaţă Ethernet) kernelul se uită prima oară la destinaţia lui: acest lucru se numeşte 'routing' (sau rutare).&lt;br /&gt;
Dacă pachetul este chiar pentru calculatorul tău, el va merge în jos către chain-ul INPUT. Dacă trece de acesta (după verificarea pachetului împotriva fiecărei reguli din chain) orice proces care îl aşteaptă îl va primi.&lt;br /&gt;
Altfel, dacă pachetul nu este pentru calculatorul tau şi dacă kernelul nu are forwarding-ul activat, sau nu ştie cum să forward-eze pachetul, acesta va fi aruncat (DROP). Dacă forwarding-ul este activat şi pachetul este destinat către o altă interfaţă de reţea (dacă mai ai încă una), atunci pachetul merge înainte în diagrama noastră spre chain-ul FORWARD. Dacă este acceptat de către acesta el va fi trimis în afară.&lt;br /&gt;
Şi în sfârşit, un program care rulează chiar în calculatorul tău poate trimite pachete în reţea. Aceste pachete trec prin chain-ul OUTPUT: dacă acesta le acceptă (ACCEPT), atunci pachetul işi continua drumul către destinaţia sa, oricare ar fi aceasta şi prin orice interfaţa.&lt;br /&gt;
&lt;br /&gt;
==Folosirea iptables==&lt;br /&gt;
iptables are un manual foarte detaliat (man iptables), dacă ai nevoie de detalii.&lt;br /&gt;
Există câteva lucruri diferite pe care le poţi face cu iptables. În primul rând operaţii cu care poţi face management pe un întreg ''set de reguli''. La început există trei chain-uri INPUT, OUTPUT şi FORWARD pe care nu le poţi şterge. Operaţiile sunt:&lt;br /&gt;
*Crearea unui nou chain (-N).&lt;br /&gt;
*Ştergerea unui chain gol (-X).&lt;br /&gt;
*Schimbarea politicii unuia dintre chain-urile standard (INPUT, OUTPUT şi FORWARD). (-P).&lt;br /&gt;
*Listarea regulilor dintr-un chain (-L).&lt;br /&gt;
*Ştergerea tuturor regulilor dintr-un chain (-F).&lt;br /&gt;
*Readucerea la zero a contoarelor regulilor dintr-un chain (-Z).&lt;br /&gt;
Există şi moduri de manipulare a unei singure reguli dintr-un chain:&lt;br /&gt;
*Ataşarea unei noi reguli (-A).&lt;br /&gt;
*Inserarea unei noi reguli într-o anume poziţie într-un chain (-I).&lt;br /&gt;
*Înlocuirea unei reguli într-o anume poziţie a unui chain (-R).&lt;br /&gt;
*Ştergerea unei reguli (-D).&lt;br /&gt;
&lt;br /&gt;
===Ce vezi atunci cand porneste calculatorul===&lt;br /&gt;
Pentru moment (Linux 2.3.15), iptables este un modul numit ('iptables.o'). Va trebui sa-l inserezi in kernel inainte de a putea folosi comanda iptables. Pe viitor, va fi posibil ca el sa fie deja construit in kernel.&lt;br /&gt;
Inainte de ca orice comanda iptables sa fie rulata (ai grija: unele distributii vor rula iptables in scripturile lor de initializare), nu va exista nici o regula in cele trei chain-uri de baza ('INPUT', 'FORWARD' si 'OUTPUT'), chain-urile INPUT si OUTPUT vor avea politica setata pe ACCEPT, si chain-ul FORWARD va fi setat pe DROP (poti schimba acest lucru setand 'forward=1' in optiunile modulului iptables).&lt;br /&gt;
&lt;br /&gt;
===Operatii cu o singura regula===&lt;br /&gt;
Acestea sunt ''painea si cutitul'' unui filtru de pachete; manipularea regulilor. Cel mai des probabil ca vei folosi comenzile de atasare (-A) si stergere (-D). Celelalte (-I pentru inserare si -R pentru inlocuire) sunt simple extensii ale acestor concepte.&lt;br /&gt;
Fiecare regula specifica un set de conditii pe care trebuie sa le indeplineasca un pachet, si ce sa faca in caz ca le indeplineste (o tinta 'target'). De exemplu, vrei sa arunci toate pachetele de tip ICMP care vin de la IP-ul 127.0.0.1. Deci in acest caz conditiile noastre sunt ca protocolul trebuie sa fie ICMP si sursa de la care vin pachetele este IP-ul 127.0.0.1. tinta noastra este aruncarea lor (DROP).&lt;br /&gt;
127.0.0.1 este interfata 'loopback', pe care o ai char daca nu ai vreo legatura fizica la vreo retea. Poti folosi programul 'ping' pentru a genera asemenea pachete si a testa o astfel de regula.&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 1 packets received, 0% packet loss&lt;br /&gt;
 round-trip min/avg/max = 0.2/0.2/0.2 ms&lt;br /&gt;
 # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 0 packets received, 100% packet loss&lt;br /&gt;
Poti vedea aici ca ping-ul a avut scces (prin '-c 1' i-am spus programului ping sa trimita un singur pachet).&lt;br /&gt;
Apoi atasam (-A) chain-ului 'INPUT', o regula in care specificam ca pachetele care vin de la IP-ul 127.0.0.1 ('-s 127.0.0.1') prin protocolul ICMP ('-p icmp') ar terbui sa le dam DROP ('-j DROP').&lt;br /&gt;
Apoi testam regula noastra, folosind un al doilea ping. Va fi o pauza pana cand programul renunta sa mai astepte raspunsul care nu va veni niciodata.&lt;br /&gt;
Putem sterge aceasta regula in mai multe feluri. In primul rand, pentru ca stim ca este singura regula in chain-ul input, putem folosi o stergere in care specificam pozitia reguluii:&lt;br /&gt;
 # iptables -D INPUT 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Al doilea mod prin care putem sterge regula este sa oglindim comanda –A, inlocuind –A cu -D. Acest lucru este folositor cand avem un set complex de reguli. In acest caz folosim:&lt;br /&gt;
 # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
&lt;br /&gt;
===Specificatii ale filtrarii===&lt;br /&gt;
Am vazut folosirea '-p' pentru a specifica protocolul, si '-s' pentru a specifica adresa sursa, dar sunt si alte optiuni cu care putem specifica caracteristici ale pachetelor&lt;br /&gt;
*Specificarea adresei Sursa si adresa Destinatie.&lt;br /&gt;
Sursa ('-s', '--source' or '--src') si destinatia ('-d', '--destination' or '--dst') IP-ului poate fi specificata in patru moduri. Cel mai des intalnit este folosirea numelui intreg, cum ar fi 'localhost' sau 'www.linuxhq.com'. Al doilea mod este folosirea de adrese IP cum ar fi '127.0.0.1'.&lt;br /&gt;
Al treilea si al patrulea mod este specificarea unui interval de IP-uri, cum sunt '199.95.207.0/24' sau '199.95.207.0/255.255.255.0'. Amandoua specifica orice IP cuprins intre 199.95.207.0 to 199.95.207.255 inclusiv; iar digitii dupa '/' ne spun care parti din IP-uri sunt relevante in cazul nostru. '/32' sau '/255.255.255.255' este modul standard (default). Pentru a specifica orice ip putem folosi '/0', dupa cum urmeaza:&lt;br /&gt;
 # ipchains -A input -s 0/0 -j DENY&lt;br /&gt;
Aceasta este rar folosit pentru ca efectul obtinut este la fel ca in cazul in care nu folosim de loc optiunea '-s'.&lt;br /&gt;
*Specificarea unei inversiuni&lt;br /&gt;
Multe flag-uri, incluzand optiunile '-s' and '-d' pot avea argumentele precedate de un '!' pentru a compara adrese care nu sunt echivalente cu cele date in linia de comanda. De exemplu '-s ! localhost' inseamna orice pachet care nu vine de la localhost.&lt;br /&gt;
*Specificarea Protocolului&lt;br /&gt;
Protocolul poate fi specificat cu flag-ul '-p'. Protocolul poate fi un numar (daca stii valorile numerice pentru IP) sau un nume pentru cazurile speciale de 'TCP', 'UDP' sau 'ICMP'. Cum este scris nu conteaza, asa ca 'tcp' merge la fel de bine ca si 'TCP'.&lt;br /&gt;
Numele protocolului poate fi precedat de un '!', pentru a fi inversat, such as '-p ! TCP' (expresia inseamna tot ce nu e TCP).&lt;br /&gt;
*Specificarea unei interfete&lt;br /&gt;
Optiunea '-i' (sau '--in-interface') si '-o' (sau '--out-interface') specifica numele interfetei. O interfata este un lucru fizic (modem, placa de retea etc…) prin care pachetul intra ('-i') sau prin care iese ('-o'). Poti folosi comanda&lt;br /&gt;
 # ifconfig&lt;br /&gt;
pentru a vedea interfetele care sunt active.&lt;br /&gt;
Pentru pachetele care traverseaza chain-ul INPUT nu se poate specifica o interfata de iesire, deci orice regula din acest chain care contine optiunea '-o' este inutila. Similar, pachetele care traverseaza chain-ul OUTPUT nu au interfata de intrare, deci orice regula din acest chain in care exista optiunea '-i' este inutila.&lt;br /&gt;
Doar pachetele care traverseaza chain-ul FORWARD au atat interfata de intrare cat si interfata de iesire.&lt;br /&gt;
Nu este gresit daca se specifica o interfata care pentru moment nu este activa; regula nu se va potrivi niciunui pachet pana cand interfata nu va fi activata. Acest lucru este foarte util pentru legaturi dial-up (PPP point to point) de obicei interfata ppp0.&lt;br /&gt;
Un caz special, un nume de interfata al carei string se termina cu '+' specifica toate interfetele de acelas fel (chiar daca sunt activate sau nu). De exemplu, pentru a specifica o regula care sa se potriveasca pentru toate interfetele de gen PPP, se va folosi expresia-i ppp+.&lt;br /&gt;
Numele interfetei poate fi precedat de '!', aceasta regula se va referi la pachetele care nu vin sau ies prin acea interfata.&lt;br /&gt;
*Specificarea fragmentelor&lt;br /&gt;
Uneori un pachet este prea mare ca sa incapa prin ''fir'' intreg. Cand acest lucru se intampla pachetul este divizat in fragmente, si trimis ca mai multe pachete mai mici. Calculatorul care primeste aceste fragmente le va reasambla si va forma pachetul initial.&lt;br /&gt;
Problema cu aceste pachete este ca doar primul fragment din acestea contine in header informatii despre protocol (cum ar fi TCP, UDP si ICMP) si extensiile lui, iar restul de fragmente nu contin aceste lucruri, iar daca am incerca sa ne uitam in ele ar fi imposibil.&lt;br /&gt;
Daca tu faci ''connection tracking'' sau ''NAT'', atunci toate aceste fragmente vor fi fuzionate inainte de a ajunge la ''filtrul de pachete'', deci nu trebuie sa ne facem griji despre aceste fragmente. Atltfel, poti insera in kernel modulul 'ip_defrag.o' care face acelas lucru (nota, acest lucru este permis doar daca linux-box-ul tau este singura conexiune intre cele doua retele).&lt;br /&gt;
Altfel, este foarte important sa intelegem cum sunt tratate fragmentele de catre regulile de filtrare. Orice regula care cere informatii de la pe care nu le avem nu se va potrivi, aceasta inseamna ca primul fragment (cel care are specificat in header tot ce este necesar) va fi tratat ca pe un pachet, iar cel de-al doilea si restul de fragmente nu vor fi tratate corespunzator (pentru ca header-ul lor nu contine informatiile necesare). De aceea o regula de genul ''-p TCP --sport www'' (care specifica portul sursa al unui server 'www') nu va filtra fragmente (in afara de primul). La fel se va comporta si regula opusa ''-p TCP --sport ! www''.&lt;br /&gt;
Oricum, poti face o regula special pentru cel de-al doilea si urmatoarele fragmente folosind optiunea '-f' (sau '--fragment'). Valabila este si regula care nu se aplica pentru cel de-al doilea si urmatoarele fragmente daca punem optiunea ''!'' inaintea lui '-f'.&lt;br /&gt;
De obicei se zice ca este sigur (din punct de vedere al securitatii) sa lasi al doilea si celelalte fragmente sa treaca treaca, pentru ca filtrarea afecteaza decat primul fragment, si deci pachetul nu va putea fi reasamblat in partea cealalta, dar, exista bug-uri care vor face masina sa se ''prabuseasca'' doar prin simplul fapt ca aceasta trimite fragmente. Este decizia ta.&lt;br /&gt;
Ca un exemplu, urmatoarea regula va arunca toate fragmentele care se duc la IP-ul 192.168.1.1:&lt;br /&gt;
 # iptables -A OUTPUT -f -d 192.168.1.1 -j DROP&lt;br /&gt;
*Extensii la iptables&lt;br /&gt;
Iptables este extensibil, asta insemnand ca atat kernel-ul cat si iptables se pot extinde pentru a ne asigura noi posibilitati.&lt;br /&gt;
Unele dintre aceste extensii sunt standard, si altele sunt mai mult exotice. Extensiile pot fi facute si de alti oameni si distibuite userilor.&lt;br /&gt;
Extensiile kernel-ului normal se gasesc in subdirectorul lui pentru module, cum este /lib/modules/2.3.15/net. Pe acestea trebuie sa le incarci in kernel automat pentru ca ele nu se autoincarca la cerere(Linux 2.3.15). Pe viitor ele se vor incarca automat.&lt;br /&gt;
Extensiile programului iptables sunt librarii ''sheruite'' care de obicei sunt gasite in directorul /usr/local/lib/iptables/, cu toate ca anumite distributii le pun in /lib/iptables sau /usr/lib/iptables.&lt;br /&gt;
Extensiile sunt de doua tipuri: tinte noi (new targets), si noi teste (new tests); mai jos vom vorbi despre ''noi tinte''. Anumite protocoale ofera ele noi teste: actual ele sunt TCP, UDP si ICMP cum sunt aratate mai jos.&lt;br /&gt;
Pe aceste noi teste le vei putea specifica in linia de comanda dupa optiunea '-p', care va incarca extensiile. Pentru teste noi explicite trebuie sa folosestei optiunea '-m' pentru a incarca extensia, doar dupa aceasta va fi aceasta accesibila.&lt;br /&gt;
Pentru a deschide manualul extensiei dupa ce o incarci ('-p' or '-m') foloseste optiunea '-h' sau '--help'.&lt;br /&gt;
**Extensii TCP&lt;br /&gt;
Extensiile TCP sunt incarcate automat daca este folosita comanda '--protocol tcp'. Aceastea vin cu urmatoarele optiuni (niciuna nu se refera si la fragmente, doar la pachete).&lt;br /&gt;
--tcp-flags&lt;br /&gt;
Daca dupa ele se pune (optional)'!', atunci doua stringuri te vor ajuta sa filtrezi flaguri specifice protocolului TCP. Primul string este un ''mask'': o lista de flaguri pe care vrei sao examinezi. Al doilea string iti spune pe care vrei sa le filtrezi. De exemplu:&lt;br /&gt;
 # iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY[/code]&lt;br /&gt;
Aceasta indica, ca toate flagurile trebuie examinate ('ALL' este sinonim cu 'SYN,ACK,FIN,RST,URG,PSH'), dar doar SYN si ACK vrei sa le setezi. Exista si un argument 'NONE' care inseamna nici un flag.&lt;br /&gt;
--syn&lt;br /&gt;
Urmat optional de '!', aceasta este o scurtare a comenzii'--tcp-flags SYN,RST,ACK SYN'.&lt;br /&gt;
--source-port&lt;br /&gt;
optional urmat de '!', si apoi de un singur port TCP, sau un interval de porturi. Porturile poti specificate prin numele lor, la fel ca in /etc/services, sau numerice. Intervalele sunt ori doua nume de porturi separate cu'-', sau (pentru a specifica un nr. mai mare sau egal cu portul dat) un port cu '-' inainte lui, sau (pentru a specifica un nr mai mic sau egal cu portul dat), un port precedat de'-'.&lt;br /&gt;
--sport&lt;br /&gt;
este sinonim cu '--source-port'.&lt;br /&gt;
--destination-port&lt;br /&gt;
and&lt;br /&gt;
--dport&lt;br /&gt;
sunt la fel ca si mai sus, numai ca ele specifica destinatia in loc de sursa portului care ne intereseaza sa-l filtram.&lt;br /&gt;
--tcp-option&lt;br /&gt;
urmat oprional de '!' siun numar, se refera la un pachet TCP care este egal cu acel numar. Un pachet care nu are un header TCP complet este aruncat (DROP) automat daca i se incearca examinarea optiunilor TCP.&lt;br /&gt;
O explicatie a flagurilor TCP&lt;br /&gt;
Este util sa permitem conexiuni TCP intr-o directie, dar nu si in cealalta. De exemplu, ai vrea sa se poata face conexiuni catre un server WWW exterior, dar sa nu existe conexiuni de la acel server la tine.&lt;br /&gt;
Te poti gandi sa blochezi pachetele care vin de la acel server. Dar din nefericire, ca o conexiune TCP sa mearga trebuie sa existe trafic in ambele directii.&lt;br /&gt;
Solutia este sa blochezi doar pachetele care cer ca o conexiune sa fi stabilita. Aceste pachete se numesc SYN (ok, tehnic ele sunt pachete cu flagul SYN setat, si flagurile FIN si ACK sunt sterse, dar noi le numim pe scurt pachete SYN). Blocand doar aceste pachete putem opri cererile de conexiuni si astfel niciuna nu poate fi facuta din exterior.&lt;br /&gt;
Flagul '--syn' este folosit pentru aceasta: este valid doar pentru regulile in care li se specifica ca protocol TCP-ul. Ca exemplu, pentru a specifica incercari de conexiuni de la IP-ul 192.168.1.1 se foloseste:&lt;br /&gt;
-p TCP -s 192.168.1.1 --syn&lt;br /&gt;
Acest flag poate fi inversat daca este precedat de un '!', aceasta inseamna orice pachet inafara de cele initiatoare de conexiuni TCP.&lt;br /&gt;
**Extensii UDP&lt;br /&gt;
Aceste extensii sunt incarcate automat daca este specificat protocolul UDP '--protocol udp'. Aici avem optiunile '--source-port', '--sport', '--destination-port' si '--dport' detaliate mai sus la protocolul TCP.&lt;br /&gt;
Extensii ICMP&lt;br /&gt;
Aceasta extensi este incarcata automat daca se specifica '--protocol icmp'. Aceasta ne da o singura optiune:&lt;br /&gt;
--icmp-type&lt;br /&gt;
urmat optional de '!', atunci un unme tip icmp (ex 'host-unreachable'), sau un tip numeric (ex. '3'), sau numeric si cod separat de'/' (ex. '3/3'). O lista de nume tip icmp se poate optine cu comanda '-p icmp --help'.&lt;br /&gt;
Alte extensii&lt;br /&gt;
Celelalte doua extensii sunt extensii demonstrative, care (daca sunt instalate) pot fi ''aduse la viata'' cu optiunea '-m'.&lt;br /&gt;
mac&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m mac' sau '--match mac'. Este folosit pentru a filtra pachetele dupa adresa Ethernet (MAC), si este folositoare doar la regulile din chain-urile INPUT si FORWARD. De aduce o singura optiune:&lt;br /&gt;
--mac-source&lt;br /&gt;
optional urmata de '!', apoi o adresa ethernet scrisa in hexazecimale separate de '':'', ex '--mac-source 00:60:08:91:CC:B7'.&lt;br /&gt;
limit&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m limit' sau '--match limit'. Este folosit pentru a limita rata de pachete acceptate. Unitatea de masura este numere de pachete pe secunda (default 3 pachete pe ora, cu o rafala de 5). Aceasta ne aduce doua argumente optionale:&lt;br /&gt;
--limit&lt;br /&gt;
urmat de un numar; specifica numarul medie maxim de pachete pe secunda care sunt lasate sa treaca. Numarul poate unitati explicite, folosind '/second', '/minute', '/hour' or '/day', sau parti din ele (deci '5/second' este la fel ca '5/s').&lt;br /&gt;
--limit-burst&lt;br /&gt;
urmata de un numar, defineste lungimea rafalei de pachete acceptate dupa care intra in actiune limita de mai sus.&lt;br /&gt;
Aceasta optiune poate fi folosita impreuna cu tinta ''LOG'' pentru a face ''rate-limited logging''. Prentru a intelege cum functioneaza, hai sa ne uitam la urmatoarea regula, care logheaza pachetele care au limita ''default'':&lt;br /&gt;
 # iptables -A FORWARD -m limit -j LOG&lt;br /&gt;
Prima oara cand regula este indeplinita de un pachet, acesta va fi logat; de fapt, pentru ca rafala este de 5, primele cinci pachete vor fi logate. Dupa aceea, vor mai trece ica douazeci de minute pana cand urmatorul pachet va fi logat de la regula aceasta, netinand cont de cate pachete ajung la ea. Deasemenea, fiecare douazeci de minute care trec fara ca un pachet sa indeplineasca regula , o unitate din rafala va fi recapatata, daca nici un pachet nu se loveste de regula timp de 100 de minute rafala va reveni la 5; la fel ca la inceput.&lt;br /&gt;
Nu poti creea o regula a carei interval de timp de umplere a rafalei sa depaseasca 59 de ore, deci daca faci o regula care sa se reincarce o data pe zi, rafala trebie sa fie mai mica de 3.&lt;br /&gt;
unclean&lt;br /&gt;
Acest modul trebuie explicit specificat cu '-m unclean sau '--match unclean'. Acesta face analize aleatorii asupra integritatii pachetelor. Acesta nu trebuie folosit ca o optiune pentru securitate (probabil ca va inrautatii lucrurile, pentru ca s-ar putea ca sa aiba bug-uri). Nu vine cu nici o optiune.&lt;br /&gt;
&lt;br /&gt;
===Specificarea tintelor===&lt;br /&gt;
Acum stim cum sa examinam un pachet, trebuie sa stim ce sa facem cu pachetele care se potrivesc regulilor noastre. Aceasta se numeste ''Tinta regulii'' (rule's target).&lt;br /&gt;
Exista doua tinte foarte simple: DROP (arunca) si ACCEPT(accepta). Deja le stim pe acestea. Daca pachetul indeplineste regula si tinta ei este una din cele doua, nu vor mai fi consultate alte reguli: soarta pachetului a fost decisa.&lt;br /&gt;
There are two types of targets other than the built-in ones: extensions and user-defined chains.&lt;br /&gt;
Chain-uri definite de utilizator (User-defined chains)&lt;br /&gt;
O puternica abilitate pe care iptables a mostenit-o de la ipchains este abilitatea de a creea chain-uri definite de utilizator (adica alte chain-uri inafara de cele trei de baza INPUT, FORWARD si OUTPUT).&lt;br /&gt;
Cand un pachet se potriveste unei reguli a carei tinta este un chain definit de utilizator, pachetul incepe sa confrunte reguluile sin chain-ul definit de utilizator. Daca acel chain nu decide soarta pachetului, adica a parcurs toate regulile din acel chain definit de utilizator, atunci pachetul incepe sa confrunte regula imegiat urmatoare regulei a carei tinta a fost chainul definit de utilizator.&lt;br /&gt;
Din nou este vremea pentru ASCII art. Sa zicem ca avem doua chain-uri Consider two (prostute): INPUT (chain-ul de baza) si test (un chain definit de utilizator cu optiunea ''-N''). CLIC&lt;br /&gt;
&lt;br /&gt;
Chain-urile definite de utilizator pot sari catre alte chain-uri definite de utilizator (dar nu au voie sa fac bucle inchise: pachetele care intra in bucle inchise vor fi aruncate).&lt;br /&gt;
Extensia: New Targets&lt;br /&gt;
Clealat tip de tinta este o extensie. Aceastea constau intr-un modul pentru kernel, care ne asigura noi optiuni in linia de comanda. Exista cateva extensii in distributia default a pachetului netfilter:&lt;br /&gt;
*LOG&lt;br /&gt;
Acest modul logheaza pachetele care indeplinesc o anumita regula a carei tinta este ''LOG''. Acesta vine cu urmatoarele optiuni:&lt;br /&gt;
--log-level&lt;br /&gt;
Urmata de un nume sau numar. Numele sunt (case-insensitive) 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' si 'emerg', care corespund numerelor de la 7 la 0. Uta-te la ''man page-ul'' pentru syslog.conf pentru o explicatie a acestor nivele.&lt;br /&gt;
--log-prefix&lt;br /&gt;
Urmat de un sting de maxim 14 caractere, acest mesaj este trimis la inceputul logului pentru a fi unic.&lt;br /&gt;
Acest modul este forte util dupa o tinta care limiteaza pentru a nu-ti inunda (food) logurile.&lt;br /&gt;
*REJECT&lt;br /&gt;
Acest modul are acelas efect ca modulul 'DROP', numai ca expeditorului ii este trimis un mesaj de eroare de tip ICMP 'port unreachable'. Nota: mesajul de eroare de tip ICMP nu este trimis daca (vezi RFC 1122):&lt;br /&gt;
Pachetul filtrat era chiar el un mesaj de eroare de tip ICMP, sau un tip necunoscut de ICMP.&lt;br /&gt;
Pachetul filtrat nu era primul fragment dintr-un lant de fragmente.&lt;br /&gt;
Am trimis prea multe mesaje de eroare de tip ICMP la acea destinatie intr-un anumit timp.&lt;br /&gt;
Tinte speciale&lt;br /&gt;
Exista doua tinte speciale care vin o dat cu distributia: RETURN si QUEUE.&lt;br /&gt;
*RETURN are acelas efect ca si cum ar sari de la sfarsitul unui chain: pentru unul dintre cele trei chain-uri de baza, soarta pachetului va fi decisa de politica acestuia. Pentru o regula dintr-un chain definit de utilizator, traversarea continua exact dupa regula de la care a fost aruncat pachetul in chain-ul definit de utilizator. Daca o regula (nu este neaparat sa fie ultima din chain) dintr-un chain definit de utilizator are tinta RETURN si aceasta se potriveste unui pachet, aceasta il va trimite inapoi la chainul de unde a venit, cu mentiunea ca este respectata traversearea regulilor, adica la regula exact urmatoare celei care a trimis pachetul in chain-ul definit de utilizator.&lt;br /&gt;
*QUEUE este o tinta speciala, care ''pastreaza'' pachetul pentru procesarea facuta de useri. Daca pachetul nu este asteptat de vreo aplicatie acesta va fi aruncat.&lt;br /&gt;
&lt;br /&gt;
===Operatii cu un Chain intreg===&lt;br /&gt;
O abilitate foarte utila a programului iptables este gruparea regurilor in chainuri (seturi de reguli). Poti denumi chainurile definite de utilizator cum vrei, dar este rcomandat sa le denumesti cu caractere mici pentru a nu le confunda cu cele trei chainuri de baza; numele acestora poate sa fie maxim din 16 litere.&lt;br /&gt;
*Crearea unui nou chain&lt;br /&gt;
Hai sa creem un nou chain. Pentru ca eu sunt un tip cu imaginatie am sa-l numesc test. Vom folosi optiunile '-N' sau '--new-chain':&lt;br /&gt;
 # iptables -N test&lt;br /&gt;
Este chiar atat de simplu. Acum poti pune reguli in el dupa cum a fost aratat mai sus.&lt;br /&gt;
*Stergerea unui Chain&lt;br /&gt;
Stergerea unui chain este la fel de simplu, folosind optiunea '-X' sau '--delete-chain'. De ce '-X'? Pai…, toate literele frumoase au fost luate deja.&lt;br /&gt;
 # iptables -X test&lt;br /&gt;
Exista cateva restrictii cand stergem un chain: acesta trebuie sa fie gol (vezi golirea unui chain mai jos) si nu trebuie sa fie tinta vreunei reguli. Chainurile de baza nu pot fi sterse.&lt;br /&gt;
Daca nu se specifica numele chainului de sters, atunci toate chain-urile definite de utilizator vor fi sterse, daca este posibil.&lt;br /&gt;
*Golirea unui Chain&lt;br /&gt;
Exista un mod simplu prin care se poate goli un cahin de toate regulile care exista in el, folosind comanda '-F' (sau '--flush').&lt;br /&gt;
 # ipchains -F forward&lt;br /&gt;
Daca nu se specifica chain-ul atunci toate chainurile vor fi golite.&lt;br /&gt;
*Listarea unui chain&lt;br /&gt;
Poti vedea toate regulile existente intr-un chain cu comanda '-L'.&lt;br /&gt;
Daca nu este specificat numele chain-ului atunci sunt listate toate regulile existente in ''filtrul de pachete''.&lt;br /&gt;
Exista trei optiuni care acompaniaza comanda '-L'. Optiunea '-n' (numeric) pentru ca ea previne ca iptables sa incerce sa caute adresa IP, care (daca folosesti DNS ca majoritatea oamenilor) va cauza delay-uri foarte mari in caz ca DNS-ul nu este setat cum trebuie, sau daca filtrezi cererile de DNS (Domain Name Server).&lt;br /&gt;
Optiunea '-v' va arata toate detaliile unei raguli, cum sunt pachetele si contuarele de biti, comparatiile TOS, si interfetele. Altfel aceste valori sunt omise.&lt;br /&gt;
Nota: pachetele si contoarele de biti sunt afisate folosin sufixele 'K', 'M' sau 'G' pentru 1000, 1,000,000 si respectiv 1,000,000,000. Folosind optiunea '-x' (expand numbers) vor fi aratate ca numere netinand cont de cat de mari sunt acestea.&lt;br /&gt;
*Resetarea (Zeroing) Contoarelor&lt;br /&gt;
Este util sa poti reseta contoarele. Acest lucru poate fi facut cu optiunea '-Z' (sau '--zero')&lt;br /&gt;
Problema cu acest lucru este ca, uneori, trebuie sa stii valorile contoarelor imediat inainte de a fi aduse la zero. In exemplul de mai sus, anumite pachete pot trece in dupa ce folosesti optiunea '-L' si pana folosesti optiunea '-Z'. Pentru acest motiv, poti folosi optiunile '-L' si '-Z' impreuna, pentru a reseta contuarele in timp ce le vizualizezi.&lt;br /&gt;
*Setarea politicii&lt;br /&gt;
Doar chain-urile de baza (INPUT, OUTPUT and FORWARD) au o politica, pentru ca daca un pachete este confruntat cu un regulile dintr-un chain definit de utilizator si inca nu i se decide soarta, acesta isi continua drumul intr-un chain de baza.&lt;br /&gt;
Politica poate fi ACCEPT(accepta) sau DROP (arunca).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Traducerea si adaptarea a fost facuta (initial) de Razvan Turtureanu (razvan@upb.ro)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Firewall]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Scripturi_BASH&amp;diff=1661</id>
		<title>Talk:Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Scripturi_BASH&amp;diff=1661"/>
				<updated>2005-12-29T13:06:53Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre corecturi si adaugiri */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Despre corecturi si adaugiri ==&lt;br /&gt;
&lt;br /&gt;
* Am rezolvat cu 'bulibaseala' (doua 'revert'-uri si doua 'edit'-uri si gata) si acum articolul tau e la locul sau. Am aranjat nitel si formatarea. [[User:Csdexter|@Dexter]] 23:50, 24 November 2005 (EET)&lt;br /&gt;
* Il rugam pe [[User:194.150.217.197]] sa se abtina, pe viitor, de la adnotari gresite. &amp;lt;tt&amp;gt;df -h&amp;lt;/tt&amp;gt; scoate linii de forma ''&amp;amp;lt;cifra&amp;amp;gt;&amp;amp;lt;unitate-de-masura&amp;amp;gt; &amp;amp;lt;nume-director&amp;amp;gt;'' facand sortarea in ordinea (descrescatoare) a marimii imposibila. [[User:Csdexter|@Dexter]] 10:40, 29 November 2005 (EET)&lt;br /&gt;
* Multumim lui [[User:Sorin25|Sorin25]] pentru corectura de sintaxa Wiki facuta. [[User:Csdexter|@Dexter]] 02:32, 27 December 2005 (EET)&lt;br /&gt;
* În '''Cautarea unui fisier ce contine un anumit string''' asterixul este inutil pentru că ''grep -r'' tocmai aia face, search recursiv, şi nu are sens să se expandeze primul nivel al recursiei ca şi parametrii pentru grep. [[User:Raptor360|Raptor360]] 15:06, 29 December 2005 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=1660</id>
		<title>Scripturi BASH</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Scripturi_BASH&amp;diff=1660"/>
				<updated>2005-12-29T13:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Cautarea unui fisier ce contine un anumit string */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Exemple scripturi BASH ==&lt;br /&gt;
&lt;br /&gt;
=== Script ce elimina zona asociata unui domeniu dat ca parametru de intrare ===&lt;br /&gt;
&lt;br /&gt;
Puteţi elimina porţiunea din named.conf de la&lt;br /&gt;
&amp;lt;tt&amp;gt;zone &amp;quot;nume.domeniu.dat.ca.parametru.de.intrare&amp;quot; {&amp;lt;/tt&amp;gt;&lt;br /&gt;
până la acolada închisă asociată acoladei deschise de mai sus.&lt;br /&gt;
&lt;br /&gt;
Scriptul este:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 # Bind zone remove script&lt;br /&gt;
 #&lt;br /&gt;
 # Copyright (C) 2005 Silvian Cretu &amp;lt;silvian86@yahoo.com&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # This program is free software; you can redistribute it and/or&lt;br /&gt;
 # modify it under the terms of the GNU General Public License&lt;br /&gt;
 # as published by the Free Software Foundation; either version 2&lt;br /&gt;
 # of the License, or (at your option) any later version.&lt;br /&gt;
 #&lt;br /&gt;
 # This program is distributed in the hope that it will be useful,&lt;br /&gt;
 # but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 # GNU General Public License for more details.&lt;br /&gt;
 #&lt;br /&gt;
 # You should have received a copy of the GNU General Public License&lt;br /&gt;
 # along with this program; if not, write to the Free Software&lt;br /&gt;
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. &lt;br /&gt;
 &lt;br /&gt;
 if [ ! $# = 1 ]; then&lt;br /&gt;
     echo &amp;quot;Usage: $0 domain&amp;quot;;&lt;br /&gt;
     echo &amp;quot;The path to named.conf is defined inside the script&amp;quot;;&lt;br /&gt;
     		 else&lt;br /&gt;
 	pathToNamedDotConf=/etc/named.conf&lt;br /&gt;
 	&lt;br /&gt;
 	x=$(grep -n &amp;quot;zone \&amp;quot;$1\&amp;quot; {&amp;quot; $pathToNamedDotConf | cut -f1 -d:)&lt;br /&gt;
 	sed $x,/\}\;/d $pathToNamedDotConf &amp;gt; temp&lt;br /&gt;
 	c=$(sed -n $x'p' &amp;lt; temp)&lt;br /&gt;
 	if [ &amp;quot;x`echo $c | grep &amp;quot;zone&amp;quot;`&amp;quot; = &amp;quot;x&amp;quot; ]&lt;br /&gt;
 	then&lt;br /&gt;
 		sed $x' d' temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
 	else&lt;br /&gt;
 		cat temp &amp;gt; $pathToNamedDotConf&lt;br /&gt;
 	fi&lt;br /&gt;
 	rm -f temp&lt;br /&gt;
 	exit&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== Cautarea unui fisier ce contine un anumit string ===&lt;br /&gt;
&lt;br /&gt;
 find /path -name &amp;quot;*&amp;quot; -exec grep -H &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot;  '{}' \;&lt;br /&gt;
sau&lt;br /&gt;
 grep -Hr &amp;quot;&amp;amp;lt;string&amp;amp;gt;&amp;quot; /path/&lt;br /&gt;
&lt;br /&gt;
Fireste, &amp;lt;tt&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/tt&amp;gt; poate fi atat un sir de caractere cat si orice fel de expresie regulata suportata de versiunea particulara de &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; disponibila pe masina in cauza.&amp;lt;br /&amp;gt;&lt;br /&gt;
Deasemenea, pentru a cauta fara a face diferenta intre majuscule si minuscule, adaugati parametrul &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Stergerea fisierelor backup ===&lt;br /&gt;
&lt;br /&gt;
Asa cum stiti, prin traditie in *NIX, editoarele text fac o copie de siguranta fisierelor editate, copie de siguranta ce este denumita identic cu fisierul initial plus caracterul tilda ('''~'''). Ei bine... in cazul aplicatiilor web, acest backup mai mult dauneaza decat sa ajute.&lt;br /&gt;
Nu ar fi prea placut sa aveti un &amp;lt;tt&amp;gt;index.php~&amp;lt;/tt&amp;gt;  in &amp;lt;tt&amp;gt;DocumentRoot&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 find /path -name &amp;quot;*~&amp;quot; -exec rm -f '{}' \;&lt;br /&gt;
&lt;br /&gt;
=== Probleme cu spatiul pe disc? ===&lt;br /&gt;
&lt;br /&gt;
Nu stiti unde &amp;quot;vi s-a dus&amp;quot; spatiul de pe disc si e cam greu sa verificati fiecare director in parte?&amp;lt;br /&amp;gt;&lt;br /&gt;
Linia urmatoare va ajuta, facand totodata si o sortare.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;du --max-depth=1 /path | sort -rn&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Collection]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1659</id>
		<title>Iptables romana</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1659"/>
				<updated>2005-12-29T13:00:10Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Cum traverseaza pachetele filtrul? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cuvânt introductiv ==&lt;br /&gt;
Pentru început, vreau să spun că eu nu ştiu mai mult decât alţii şi spun asta pentru că am intrat în contact cu câţiva oameni care într-adevăr ştiu multe despre [http://ro.wikipedia.org/wiki/Linux Linux]. Eu nu am făcut decât să traduc acest ''HowTo'', iar dacă (mai mult ca sigur) voi găsiţi greşeli de traducere sau de adaptare, vă rog să îmi atrageţi atenţia scriindu-mi un mesaj de [mailto:razvan@upb.ro poştă electronică]. Dacă intraţi în posesia acestui fişier şi ştiţi pe cineva care îl vrea, vă rog să îl daţi pe gratis, adica aşa cum l-aţi primit şi voi pentru că nici măcar eu nu am cerut bani pe el. Sper sa vă ajute, cel puţin la fel de mult cât m-a ajutat şi pe mine, iar dacă aveţi neclarităţi scrieţi-mi un mesaj şi vă voi răspunde în măsura în care pot şi am timp.&lt;br /&gt;
&lt;br /&gt;
==Ce este filtrarea de pachete?==&lt;br /&gt;
&lt;br /&gt;
=== Bazele reţelisticii ===&lt;br /&gt;
Tot traficul dintr-o reţea este transmis sub formă de pachete. De exemplu, descărcând acest document (să zicem că are 50ko) s-ar putea ca tu să primeşti 36 de pachete a câte 1460 octeţi fiecare.&lt;br /&gt;
&lt;br /&gt;
Antetul (engl. [http://en.wikipedia.org/wiki/Header_%28information_technology%29 header]) fiecărui pachet spune unde se duce, de unde vine, tipul pachetului precum şi alte detalii administrative. Restul pachetului, conţinând datele care ne sunt transmise, se numeşte corpul (engl. [http://en.wikipedia.org/wiki/Packet body]) sau conţinutul pachetului.&lt;br /&gt;
&lt;br /&gt;
Câteva protocoale, de exemplu TCP care este folosit (spre exemplu) pentru traficul de web, poştă şi sesiuni de terminal de la distanţă, folosesc principiul de forma o conexiune inainte de a transmite pachete cu datele care ne interesează. Astfel, varii pachete de ''început'' (cu antete speciale) sunt schimbate care spun 'Vreau să mă conectez', 'Bine' şi 'Mulţumesc' (procedură cunoscută ca negociere bilaterală -- engl. [http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment_.283-way_handshake.29 3-way handshaking]). Abia apoi începe schimbul de pachete conţinând datele ce trebuie să tranziteze conexiunea  proaspăt creeată.&lt;br /&gt;
&lt;br /&gt;
===Deci ce este un ''filtru de pachete''?===&lt;br /&gt;
Un filtru de pachete este un program care se uită în header-ul pachetelor care trec şi le decide soarta. El poate să ''arunce'' pachetul (să îl neglijeze ca şi cum nu ar fi fost primit), să ''accepte'' pachetul (să îl lase să treacă), sau să ''rejecteze'' pachetul (îl aruncă dar şi spune sursei de la care a venit că l-a aruncat).&lt;br /&gt;
Sub Linux, filtrarea de pachete este construită în kernel (ca modul sau chiar în el) şi există câteva lucruri mai deosebite pe care le putem face cu pachetele (putem de exemplu să modificăm sursa sau destinaţia acestuia înainte de a-l trimite mai departe), dar principiul general de a ne uita în antetul pachetului şi să-i decidem soarta este înca acolo.&lt;br /&gt;
&lt;br /&gt;
===De ce aş vrea să filtrez pachete?===&lt;br /&gt;
*Control:&lt;br /&gt;
Cand foloseşti un ''linux-box'' ca să conectezi reţeaua ta internă la o altă reţea (să zicem Internetul) ai oportunitatea de a lăsa numai anumite feluri de trafic sa treacă şi să nu laşi să treacă pe altele. De exemplu, antetul pachetului conţine destinaţia sa şi poţi preveni ca pachetele să ajungă într-o anumită parte a reţelei externe. Ca un alt exemplu, eu folosesc Netscape ca sa accesez arhivele Dilbert. Pe acea pagină sunt reclame de la doubleclick.net, şi Netscape-ul îmi pierde timpul deschizându-le. Spunându-i ''filtrului de pachete'' să nu lase să treacă pachete spre doubleclick.net sau să vină de la el rezolvă aceasta problemă.&lt;br /&gt;
*Securitate:&lt;br /&gt;
Când Linux-box-ul tău este singurul lucru care stă între haosul din Internet şi reţeaua ta privată, este bine de ştiut că poţi restricţiona ceea ce face ''tărăboi la uşa ta''. De exemplu, poţi lăsa să treacă ceea ce pleacă din interiorul reţelei interne, dar ar trebui să te îngrijoreze vestitul 'Ping of Death' care vine de la străini, sau diverşi alţi viruşi ce se propagă prin Internet. Ca un alt exemplu, nu ai vrea ca cei din afară să se conecteze prin ssh (sau mult mai vechiul telnet) la serverul tău, chiar dacă toate conturile din el sunt protejate de o parolă; având un filtru de pachete care să ''arunce'' pachetele cu antete speciale care sunt folosite pentru a deschide conexiuni din exterior.&lt;br /&gt;
*Supraveghere:&lt;br /&gt;
Uneori o maşină din interior prost configurată (sau un virus de exemplu) poate decide să împraştie pachete lumii exterioare. Este frumos să-i spui ''filtrului de pachete'' să te înştiinţeze când se întâmplă ceva care nu face parte din normal,nu de alta dar poate faci ceva în legatură cu lucrul acesta sau poate eşti curios din fire să ştii ceea ce se intâmplă în reţeaua ta internă.&lt;br /&gt;
&lt;br /&gt;
===Cum filtrez pachete sub Linux?===&lt;br /&gt;
Kernel-ele Linux-ului au avut filtre de pachete chiar de la versiunea 1.1. Prima generaţie, bazată pe ''ipfw'' de la BSD, a fost introdusă de Alan Cox in 1994. Aceasta a fost modificată şi întărită de Jos Vos şi alţii pentru Linux 2.0. În 1998, pentru Linux 2.2, eu am modificat radical kernelul, cu ajutorul lui Michael Neuling şi am introdus programul 'ipchains'. În final, a patra generaţie a filtrului, 'iptables', şi o altă modificare a kernelului au apărut în 1999 pentru Linux 2.4. Pe iptables ne vom concentra în acest HOWTO.&lt;br /&gt;
Programul iptables vorbeşte cu kernel-ul şi îi spune ce pachete să filtreze. Dacă nu eşti programator sau prea curios, în acest fel vei controla ''filtrul de pachete''.&lt;br /&gt;
Programul iptables inserează sau şterge reguli din ''tabelul'' de reguli de filtrare al kernelului. Aceasta înseamnă că orice ai seta, se va pierde când vei reporni maşina; vezi [[#Cum să faci regulile permanente]] pentru a te asigura că data viitoare când porneşti maşina ele sunt încă acolo.&lt;br /&gt;
iptables înlocuieşte ipfwadm şi ipchains: vezi [[http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables-HOWTO-6.html|Cum să folosesti ipchains şi ipfwadm]] pentru a evita folosirea iptables dacă deja foloseşti ipchains sau ipfwadm.&lt;br /&gt;
&lt;br /&gt;
===Cum să faci regulile permanente===&lt;br /&gt;
Firewall-ul tău curent este stocat în kernel şi de aceea va fi pierdut când reporneşti maşina. Scriind&lt;br /&gt;
 # iptables-save&lt;br /&gt;
şi&lt;br /&gt;
 # iptables-restore&lt;br /&gt;
este ceea ce vă recomand.&lt;br /&gt;
Între timp, pune comanda necesară pentru a-ţi seta regulile într-un script de iniţializare. Asigură-te că faci ceva inteligent în caz că una din comenzi nu merge (de obicei 'exec /sbin/sulogin').&lt;br /&gt;
&lt;br /&gt;
==Cine oare eşti şi de ce te joci cu kernelul meu?==&lt;br /&gt;
Eu sunt Rusty; eu sunt cel care întreţine ''Linux IP Firewall'' şi sunt doar un programator decent care s-a întâmplat să fie la locul potrivit în timpul potrivit. Eu am scris ipchains (mecanismul firewall anterior, din kernelul 2.2) şi am învăţat destule ca să fac să meargă ''filtrul de pachete'' iptables cum trebuie. Cel puţin sper.&lt;br /&gt;
&lt;br /&gt;
==Cum traversează pachetele filtrul?==&lt;br /&gt;
Kernel-ul porneşte cu trei liste de reguli; aceste liste se numesc ''firewall chains'' sau doar ''chains''. Cele trei chain-uri se numesc INPUT, OUTPUT şi FORWARD.&lt;br /&gt;
Pentru fanii ASCII-art, chain-urile sunt aranjate cam aşa:&lt;br /&gt;
&lt;br /&gt;
                    _____&lt;br /&gt;
                   /     \&lt;br /&gt;
 --&amp;gt;[Routing ]---&amp;gt;|FORWARD|-------&amp;gt;&lt;br /&gt;
    [Decision]     \_____/        ^ &lt;br /&gt;
        |                         |&lt;br /&gt;
        v                       ____  &lt;br /&gt;
       ___                     /    \ &lt;br /&gt;
      /   \                   |OUTPUT|&lt;br /&gt;
     |INPUT|                   \____/ &lt;br /&gt;
      \___/                      ^    &lt;br /&gt;
        |                        |&lt;br /&gt;
         ----&amp;gt; Local Process ----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cele trei cicluri reprezentate sunt chain-urile menţionate mai sus. Când un pachet ajunge într-un ciclu din diagramă, acel chain este examinat pentru a decide soarta pachetului. Dacă chain-ul decide să arunce pachetul (DROP), va fi ''omorât'' acolo, dar dacă chain-ul spune că pachetul trebuie acceptat (ACCEPT), el continuă sa circule prin diagramă către următorul chain.&lt;br /&gt;
Un chain este un ''set ordonat de reguli''. Fiecare regulă spune 'dacă header-ul pachetului arata aşa, atunci ce vrei să faci cu pachetul'. Dacă regula nu este îndeplinită de pachet, apoi este consultată următoarea regulă din set. În final, dacă nu mai sunt reguli de consultat pentru acel chain, kernel-ul se uită la politica ''setului de reguli'' (adică politica chain-ului) pentru a decide ce se va întâmpla cu pachetul. Într-un sistem riguros din punct de vedere al securităţii politica ''setului de reguli'' îi spune kernel-ului să arunce pachetul (DROP).&lt;br /&gt;
Cand un pachet soseşte (să zicem, printr-o interfaţă Ethernet) kernelul se uită prima oară la destinaţia lui: acest lucru se numeşte 'routing' (sau rutare).&lt;br /&gt;
Dacă pachetul este chiar pentru calculatorul tău, el va merge în jos către chain-ul INPUT. Dacă trece de acesta (după verificarea pachetului împotriva fiecărei reguli din chain) orice proces care îl aşteaptă îl va primi.&lt;br /&gt;
Altfel, dacă pachetul nu este pentru calculatorul tau şi dacă kernelul nu are forwarding-ul activat, sau nu ştie cum să forward-eze pachetul, acesta va fi aruncat (DROP). Dacă forwarding-ul este activat şi pachetul este destinat către o altă interfaţă de reţea (dacă mai ai încă una), atunci pachetul merge înainte în diagrama noastră spre chain-ul FORWARD. Dacă este acceptat de către acesta el va fi trimis în afară.&lt;br /&gt;
Şi în sfârşit, un program care rulează chiar în calculatorul tău poate trimite pachete în reţea. Aceste pachete trec prin chain-ul OUTPUT: dacă acesta le acceptă (ACCEPT), atunci pachetul işi continua drumul către destinaţia sa, oricare ar fi aceasta şi prin orice interfaţa.&lt;br /&gt;
&lt;br /&gt;
==Folosirea iptables==&lt;br /&gt;
iptables are un manual foarte detaliat (man iptables), daca ai nevoie de detalii.&lt;br /&gt;
Exista cateva lucruri diferite pe care le poti face cu iptables. In primul rand operatii cu care poti face management pe un intreg ''set de reguli''. La inceput exista trei chain-uri input, output si forward pe care nu le poti sterge.&lt;br /&gt;
*Crearea unui nou chain (-N).&lt;br /&gt;
*Stergerea unui chain gol (-X).&lt;br /&gt;
*Schimbarea politicii unuia dintre chain-urile standard (input, output si forward). (-P).&lt;br /&gt;
*Listarea regulilor dintr-un chain (-L).&lt;br /&gt;
*Stergerea tuturor regulilor dintr-un chain (-F).&lt;br /&gt;
*Readucerea la zero a contoarelor regulilor dintr-un chain (-Z).&lt;br /&gt;
*Exista si moduri de manipulare a unei singure reguli dintr-un chain:&lt;br /&gt;
*Atasarea unei noi reguli (-A).&lt;br /&gt;
*Inserarea unei noi reguli intr-o anume pozitie intr-un chain (-I).&lt;br /&gt;
*Inlocuirea unei reguli intr-o anume pozitie a unui chain (-R).&lt;br /&gt;
*Stergerea unei reguli (-D).&lt;br /&gt;
&lt;br /&gt;
===Ce vezi atunci cand porneste calculatorul===&lt;br /&gt;
Pentru moment (Linux 2.3.15), iptables este un modul numit ('iptables.o'). Va trebui sa-l inserezi in kernel inainte de a putea folosi comanda iptables. Pe viitor, va fi posibil ca el sa fie deja construit in kernel.&lt;br /&gt;
Inainte de ca orice comanda iptables sa fie rulata (ai grija: unele distributii vor rula iptables in scripturile lor de initializare), nu va exista nici o regula in cele trei chain-uri de baza ('INPUT', 'FORWARD' si 'OUTPUT'), chain-urile INPUT si OUTPUT vor avea politica setata pe ACCEPT, si chain-ul FORWARD va fi setat pe DROP (poti schimba acest lucru setand 'forward=1' in optiunile modulului iptables).&lt;br /&gt;
&lt;br /&gt;
===Operatii cu o singura regula===&lt;br /&gt;
Acestea sunt ''painea si cutitul'' unui filtru de pachete; manipularea regulilor. Cel mai des probabil ca vei folosi comenzile de atasare (-A) si stergere (-D). Celelalte (-I pentru inserare si -R pentru inlocuire) sunt simple extensii ale acestor concepte.&lt;br /&gt;
Fiecare regula specifica un set de conditii pe care trebuie sa le indeplineasca un pachet, si ce sa faca in caz ca le indeplineste (o tinta 'target'). De exemplu, vrei sa arunci toate pachetele de tip ICMP care vin de la IP-ul 127.0.0.1. Deci in acest caz conditiile noastre sunt ca protocolul trebuie sa fie ICMP si sursa de la care vin pachetele este IP-ul 127.0.0.1. tinta noastra este aruncarea lor (DROP).&lt;br /&gt;
127.0.0.1 este interfata 'loopback', pe care o ai char daca nu ai vreo legatura fizica la vreo retea. Poti folosi programul 'ping' pentru a genera asemenea pachete si a testa o astfel de regula.&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 1 packets received, 0% packet loss&lt;br /&gt;
 round-trip min/avg/max = 0.2/0.2/0.2 ms&lt;br /&gt;
 # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 0 packets received, 100% packet loss&lt;br /&gt;
Poti vedea aici ca ping-ul a avut scces (prin '-c 1' i-am spus programului ping sa trimita un singur pachet).&lt;br /&gt;
Apoi atasam (-A) chain-ului 'INPUT', o regula in care specificam ca pachetele care vin de la IP-ul 127.0.0.1 ('-s 127.0.0.1') prin protocolul ICMP ('-p icmp') ar terbui sa le dam DROP ('-j DROP').&lt;br /&gt;
Apoi testam regula noastra, folosind un al doilea ping. Va fi o pauza pana cand programul renunta sa mai astepte raspunsul care nu va veni niciodata.&lt;br /&gt;
Putem sterge aceasta regula in mai multe feluri. In primul rand, pentru ca stim ca este singura regula in chain-ul input, putem folosi o stergere in care specificam pozitia reguluii:&lt;br /&gt;
 # iptables -D INPUT 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Al doilea mod prin care putem sterge regula este sa oglindim comanda –A, inlocuind –A cu -D. Acest lucru este folositor cand avem un set complex de reguli. In acest caz folosim:&lt;br /&gt;
 # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
&lt;br /&gt;
===Specificatii ale filtrarii===&lt;br /&gt;
Am vazut folosirea '-p' pentru a specifica protocolul, si '-s' pentru a specifica adresa sursa, dar sunt si alte optiuni cu care putem specifica caracteristici ale pachetelor&lt;br /&gt;
*Specificarea adresei Sursa si adresa Destinatie.&lt;br /&gt;
Sursa ('-s', '--source' or '--src') si destinatia ('-d', '--destination' or '--dst') IP-ului poate fi specificata in patru moduri. Cel mai des intalnit este folosirea numelui intreg, cum ar fi 'localhost' sau 'www.linuxhq.com'. Al doilea mod este folosirea de adrese IP cum ar fi '127.0.0.1'.&lt;br /&gt;
Al treilea si al patrulea mod este specificarea unui interval de IP-uri, cum sunt '199.95.207.0/24' sau '199.95.207.0/255.255.255.0'. Amandoua specifica orice IP cuprins intre 199.95.207.0 to 199.95.207.255 inclusiv; iar digitii dupa '/' ne spun care parti din IP-uri sunt relevante in cazul nostru. '/32' sau '/255.255.255.255' este modul standard (default). Pentru a specifica orice ip putem folosi '/0', dupa cum urmeaza:&lt;br /&gt;
 # ipchains -A input -s 0/0 -j DENY&lt;br /&gt;
Aceasta este rar folosit pentru ca efectul obtinut este la fel ca in cazul in care nu folosim de loc optiunea '-s'.&lt;br /&gt;
*Specificarea unei inversiuni&lt;br /&gt;
Multe flag-uri, incluzand optiunile '-s' and '-d' pot avea argumentele precedate de un '!' pentru a compara adrese care nu sunt echivalente cu cele date in linia de comanda. De exemplu '-s ! localhost' inseamna orice pachet care nu vine de la localhost.&lt;br /&gt;
*Specificarea Protocolului&lt;br /&gt;
Protocolul poate fi specificat cu flag-ul '-p'. Protocolul poate fi un numar (daca stii valorile numerice pentru IP) sau un nume pentru cazurile speciale de 'TCP', 'UDP' sau 'ICMP'. Cum este scris nu conteaza, asa ca 'tcp' merge la fel de bine ca si 'TCP'.&lt;br /&gt;
Numele protocolului poate fi precedat de un '!', pentru a fi inversat, such as '-p ! TCP' (expresia inseamna tot ce nu e TCP).&lt;br /&gt;
*Specificarea unei interfete&lt;br /&gt;
Optiunea '-i' (sau '--in-interface') si '-o' (sau '--out-interface') specifica numele interfetei. O interfata este un lucru fizic (modem, placa de retea etc…) prin care pachetul intra ('-i') sau prin care iese ('-o'). Poti folosi comanda&lt;br /&gt;
 # ifconfig&lt;br /&gt;
pentru a vedea interfetele care sunt active.&lt;br /&gt;
Pentru pachetele care traverseaza chain-ul INPUT nu se poate specifica o interfata de iesire, deci orice regula din acest chain care contine optiunea '-o' este inutila. Similar, pachetele care traverseaza chain-ul OUTPUT nu au interfata de intrare, deci orice regula din acest chain in care exista optiunea '-i' este inutila.&lt;br /&gt;
Doar pachetele care traverseaza chain-ul FORWARD au atat interfata de intrare cat si interfata de iesire.&lt;br /&gt;
Nu este gresit daca se specifica o interfata care pentru moment nu este activa; regula nu se va potrivi niciunui pachet pana cand interfata nu va fi activata. Acest lucru este foarte util pentru legaturi dial-up (PPP point to point) de obicei interfata ppp0.&lt;br /&gt;
Un caz special, un nume de interfata al carei string se termina cu '+' specifica toate interfetele de acelas fel (chiar daca sunt activate sau nu). De exemplu, pentru a specifica o regula care sa se potriveasca pentru toate interfetele de gen PPP, se va folosi expresia-i ppp+.&lt;br /&gt;
Numele interfetei poate fi precedat de '!', aceasta regula se va referi la pachetele care nu vin sau ies prin acea interfata.&lt;br /&gt;
*Specificarea fragmentelor&lt;br /&gt;
Uneori un pachet este prea mare ca sa incapa prin ''fir'' intreg. Cand acest lucru se intampla pachetul este divizat in fragmente, si trimis ca mai multe pachete mai mici. Calculatorul care primeste aceste fragmente le va reasambla si va forma pachetul initial.&lt;br /&gt;
Problema cu aceste pachete este ca doar primul fragment din acestea contine in header informatii despre protocol (cum ar fi TCP, UDP si ICMP) si extensiile lui, iar restul de fragmente nu contin aceste lucruri, iar daca am incerca sa ne uitam in ele ar fi imposibil.&lt;br /&gt;
Daca tu faci ''connection tracking'' sau ''NAT'', atunci toate aceste fragmente vor fi fuzionate inainte de a ajunge la ''filtrul de pachete'', deci nu trebuie sa ne facem griji despre aceste fragmente. Atltfel, poti insera in kernel modulul 'ip_defrag.o' care face acelas lucru (nota, acest lucru este permis doar daca linux-box-ul tau este singura conexiune intre cele doua retele).&lt;br /&gt;
Altfel, este foarte important sa intelegem cum sunt tratate fragmentele de catre regulile de filtrare. Orice regula care cere informatii de la pe care nu le avem nu se va potrivi, aceasta inseamna ca primul fragment (cel care are specificat in header tot ce este necesar) va fi tratat ca pe un pachet, iar cel de-al doilea si restul de fragmente nu vor fi tratate corespunzator (pentru ca header-ul lor nu contine informatiile necesare). De aceea o regula de genul ''-p TCP --sport www'' (care specifica portul sursa al unui server 'www') nu va filtra fragmente (in afara de primul). La fel se va comporta si regula opusa ''-p TCP --sport ! www''.&lt;br /&gt;
Oricum, poti face o regula special pentru cel de-al doilea si urmatoarele fragmente folosind optiunea '-f' (sau '--fragment'). Valabila este si regula care nu se aplica pentru cel de-al doilea si urmatoarele fragmente daca punem optiunea ''!'' inaintea lui '-f'.&lt;br /&gt;
De obicei se zice ca este sigur (din punct de vedere al securitatii) sa lasi al doilea si celelalte fragmente sa treaca treaca, pentru ca filtrarea afecteaza decat primul fragment, si deci pachetul nu va putea fi reasamblat in partea cealalta, dar, exista bug-uri care vor face masina sa se ''prabuseasca'' doar prin simplul fapt ca aceasta trimite fragmente. Este decizia ta.&lt;br /&gt;
Ca un exemplu, urmatoarea regula va arunca toate fragmentele care se duc la IP-ul 192.168.1.1:&lt;br /&gt;
 # iptables -A OUTPUT -f -d 192.168.1.1 -j DROP&lt;br /&gt;
*Extensii la iptables&lt;br /&gt;
Iptables este extensibil, asta insemnand ca atat kernel-ul cat si iptables se pot extinde pentru a ne asigura noi posibilitati.&lt;br /&gt;
Unele dintre aceste extensii sunt standard, si altele sunt mai mult exotice. Extensiile pot fi facute si de alti oameni si distibuite userilor.&lt;br /&gt;
Extensiile kernel-ului normal se gasesc in subdirectorul lui pentru module, cum este /lib/modules/2.3.15/net. Pe acestea trebuie sa le incarci in kernel automat pentru ca ele nu se autoincarca la cerere(Linux 2.3.15). Pe viitor ele se vor incarca automat.&lt;br /&gt;
Extensiile programului iptables sunt librarii ''sheruite'' care de obicei sunt gasite in directorul /usr/local/lib/iptables/, cu toate ca anumite distributii le pun in /lib/iptables sau /usr/lib/iptables.&lt;br /&gt;
Extensiile sunt de doua tipuri: tinte noi (new targets), si noi teste (new tests); mai jos vom vorbi despre ''noi tinte''. Anumite protocoale ofera ele noi teste: actual ele sunt TCP, UDP si ICMP cum sunt aratate mai jos.&lt;br /&gt;
Pe aceste noi teste le vei putea specifica in linia de comanda dupa optiunea '-p', care va incarca extensiile. Pentru teste noi explicite trebuie sa folosestei optiunea '-m' pentru a incarca extensia, doar dupa aceasta va fi aceasta accesibila.&lt;br /&gt;
Pentru a deschide manualul extensiei dupa ce o incarci ('-p' or '-m') foloseste optiunea '-h' sau '--help'.&lt;br /&gt;
**Extensii TCP&lt;br /&gt;
Extensiile TCP sunt incarcate automat daca este folosita comanda '--protocol tcp'. Aceastea vin cu urmatoarele optiuni (niciuna nu se refera si la fragmente, doar la pachete).&lt;br /&gt;
--tcp-flags&lt;br /&gt;
Daca dupa ele se pune (optional)'!', atunci doua stringuri te vor ajuta sa filtrezi flaguri specifice protocolului TCP. Primul string este un ''mask'': o lista de flaguri pe care vrei sao examinezi. Al doilea string iti spune pe care vrei sa le filtrezi. De exemplu:&lt;br /&gt;
 # iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY[/code]&lt;br /&gt;
Aceasta indica, ca toate flagurile trebuie examinate ('ALL' este sinonim cu 'SYN,ACK,FIN,RST,URG,PSH'), dar doar SYN si ACK vrei sa le setezi. Exista si un argument 'NONE' care inseamna nici un flag.&lt;br /&gt;
--syn&lt;br /&gt;
Urmat optional de '!', aceasta este o scurtare a comenzii'--tcp-flags SYN,RST,ACK SYN'.&lt;br /&gt;
--source-port&lt;br /&gt;
optional urmat de '!', si apoi de un singur port TCP, sau un interval de porturi. Porturile poti specificate prin numele lor, la fel ca in /etc/services, sau numerice. Intervalele sunt ori doua nume de porturi separate cu'-', sau (pentru a specifica un nr. mai mare sau egal cu portul dat) un port cu '-' inainte lui, sau (pentru a specifica un nr mai mic sau egal cu portul dat), un port precedat de'-'.&lt;br /&gt;
--sport&lt;br /&gt;
este sinonim cu '--source-port'.&lt;br /&gt;
--destination-port&lt;br /&gt;
and&lt;br /&gt;
--dport&lt;br /&gt;
sunt la fel ca si mai sus, numai ca ele specifica destinatia in loc de sursa portului care ne intereseaza sa-l filtram.&lt;br /&gt;
--tcp-option&lt;br /&gt;
urmat oprional de '!' siun numar, se refera la un pachet TCP care este egal cu acel numar. Un pachet care nu are un header TCP complet este aruncat (DROP) automat daca i se incearca examinarea optiunilor TCP.&lt;br /&gt;
O explicatie a flagurilor TCP&lt;br /&gt;
Este util sa permitem conexiuni TCP intr-o directie, dar nu si in cealalta. De exemplu, ai vrea sa se poata face conexiuni catre un server WWW exterior, dar sa nu existe conexiuni de la acel server la tine.&lt;br /&gt;
Te poti gandi sa blochezi pachetele care vin de la acel server. Dar din nefericire, ca o conexiune TCP sa mearga trebuie sa existe trafic in ambele directii.&lt;br /&gt;
Solutia este sa blochezi doar pachetele care cer ca o conexiune sa fi stabilita. Aceste pachete se numesc SYN (ok, tehnic ele sunt pachete cu flagul SYN setat, si flagurile FIN si ACK sunt sterse, dar noi le numim pe scurt pachete SYN). Blocand doar aceste pachete putem opri cererile de conexiuni si astfel niciuna nu poate fi facuta din exterior.&lt;br /&gt;
Flagul '--syn' este folosit pentru aceasta: este valid doar pentru regulile in care li se specifica ca protocol TCP-ul. Ca exemplu, pentru a specifica incercari de conexiuni de la IP-ul 192.168.1.1 se foloseste:&lt;br /&gt;
-p TCP -s 192.168.1.1 --syn&lt;br /&gt;
Acest flag poate fi inversat daca este precedat de un '!', aceasta inseamna orice pachet inafara de cele initiatoare de conexiuni TCP.&lt;br /&gt;
**Extensii UDP&lt;br /&gt;
Aceste extensii sunt incarcate automat daca este specificat protocolul UDP '--protocol udp'. Aici avem optiunile '--source-port', '--sport', '--destination-port' si '--dport' detaliate mai sus la protocolul TCP.&lt;br /&gt;
Extensii ICMP&lt;br /&gt;
Aceasta extensi este incarcata automat daca se specifica '--protocol icmp'. Aceasta ne da o singura optiune:&lt;br /&gt;
--icmp-type&lt;br /&gt;
urmat optional de '!', atunci un unme tip icmp (ex 'host-unreachable'), sau un tip numeric (ex. '3'), sau numeric si cod separat de'/' (ex. '3/3'). O lista de nume tip icmp se poate optine cu comanda '-p icmp --help'.&lt;br /&gt;
Alte extensii&lt;br /&gt;
Celelalte doua extensii sunt extensii demonstrative, care (daca sunt instalate) pot fi ''aduse la viata'' cu optiunea '-m'.&lt;br /&gt;
mac&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m mac' sau '--match mac'. Este folosit pentru a filtra pachetele dupa adresa Ethernet (MAC), si este folositoare doar la regulile din chain-urile INPUT si FORWARD. De aduce o singura optiune:&lt;br /&gt;
--mac-source&lt;br /&gt;
optional urmata de '!', apoi o adresa ethernet scrisa in hexazecimale separate de '':'', ex '--mac-source 00:60:08:91:CC:B7'.&lt;br /&gt;
limit&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m limit' sau '--match limit'. Este folosit pentru a limita rata de pachete acceptate. Unitatea de masura este numere de pachete pe secunda (default 3 pachete pe ora, cu o rafala de 5). Aceasta ne aduce doua argumente optionale:&lt;br /&gt;
--limit&lt;br /&gt;
urmat de un numar; specifica numarul medie maxim de pachete pe secunda care sunt lasate sa treaca. Numarul poate unitati explicite, folosind '/second', '/minute', '/hour' or '/day', sau parti din ele (deci '5/second' este la fel ca '5/s').&lt;br /&gt;
--limit-burst&lt;br /&gt;
urmata de un numar, defineste lungimea rafalei de pachete acceptate dupa care intra in actiune limita de mai sus.&lt;br /&gt;
Aceasta optiune poate fi folosita impreuna cu tinta ''LOG'' pentru a face ''rate-limited logging''. Prentru a intelege cum functioneaza, hai sa ne uitam la urmatoarea regula, care logheaza pachetele care au limita ''default'':&lt;br /&gt;
 # iptables -A FORWARD -m limit -j LOG&lt;br /&gt;
Prima oara cand regula este indeplinita de un pachet, acesta va fi logat; de fapt, pentru ca rafala este de 5, primele cinci pachete vor fi logate. Dupa aceea, vor mai trece ica douazeci de minute pana cand urmatorul pachet va fi logat de la regula aceasta, netinand cont de cate pachete ajung la ea. Deasemenea, fiecare douazeci de minute care trec fara ca un pachet sa indeplineasca regula , o unitate din rafala va fi recapatata, daca nici un pachet nu se loveste de regula timp de 100 de minute rafala va reveni la 5; la fel ca la inceput.&lt;br /&gt;
Nu poti creea o regula a carei interval de timp de umplere a rafalei sa depaseasca 59 de ore, deci daca faci o regula care sa se reincarce o data pe zi, rafala trebie sa fie mai mica de 3.&lt;br /&gt;
unclean&lt;br /&gt;
Acest modul trebuie explicit specificat cu '-m unclean sau '--match unclean'. Acesta face analize aleatorii asupra integritatii pachetelor. Acesta nu trebuie folosit ca o optiune pentru securitate (probabil ca va inrautatii lucrurile, pentru ca s-ar putea ca sa aiba bug-uri). Nu vine cu nici o optiune.&lt;br /&gt;
&lt;br /&gt;
===Specificarea tintelor===&lt;br /&gt;
Acum stim cum sa examinam un pachet, trebuie sa stim ce sa facem cu pachetele care se potrivesc regulilor noastre. Aceasta se numeste ''Tinta regulii'' (rule's target).&lt;br /&gt;
Exista doua tinte foarte simple: DROP (arunca) si ACCEPT(accepta). Deja le stim pe acestea. Daca pachetul indeplineste regula si tinta ei este una din cele doua, nu vor mai fi consultate alte reguli: soarta pachetului a fost decisa.&lt;br /&gt;
There are two types of targets other than the built-in ones: extensions and user-defined chains.&lt;br /&gt;
Chain-uri definite de utilizator (User-defined chains)&lt;br /&gt;
O puternica abilitate pe care iptables a mostenit-o de la ipchains este abilitatea de a creea chain-uri definite de utilizator (adica alte chain-uri inafara de cele trei de baza INPUT, FORWARD si OUTPUT).&lt;br /&gt;
Cand un pachet se potriveste unei reguli a carei tinta este un chain definit de utilizator, pachetul incepe sa confrunte reguluile sin chain-ul definit de utilizator. Daca acel chain nu decide soarta pachetului, adica a parcurs toate regulile din acel chain definit de utilizator, atunci pachetul incepe sa confrunte regula imegiat urmatoare regulei a carei tinta a fost chainul definit de utilizator.&lt;br /&gt;
Din nou este vremea pentru ASCII art. Sa zicem ca avem doua chain-uri Consider two (prostute): INPUT (chain-ul de baza) si test (un chain definit de utilizator cu optiunea ''-N''). CLIC&lt;br /&gt;
&lt;br /&gt;
Chain-urile definite de utilizator pot sari catre alte chain-uri definite de utilizator (dar nu au voie sa fac bucle inchise: pachetele care intra in bucle inchise vor fi aruncate).&lt;br /&gt;
Extensia: New Targets&lt;br /&gt;
Clealat tip de tinta este o extensie. Aceastea constau intr-un modul pentru kernel, care ne asigura noi optiuni in linia de comanda. Exista cateva extensii in distributia default a pachetului netfilter:&lt;br /&gt;
*LOG&lt;br /&gt;
Acest modul logheaza pachetele care indeplinesc o anumita regula a carei tinta este ''LOG''. Acesta vine cu urmatoarele optiuni:&lt;br /&gt;
--log-level&lt;br /&gt;
Urmata de un nume sau numar. Numele sunt (case-insensitive) 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' si 'emerg', care corespund numerelor de la 7 la 0. Uta-te la ''man page-ul'' pentru syslog.conf pentru o explicatie a acestor nivele.&lt;br /&gt;
--log-prefix&lt;br /&gt;
Urmat de un sting de maxim 14 caractere, acest mesaj este trimis la inceputul logului pentru a fi unic.&lt;br /&gt;
Acest modul este forte util dupa o tinta care limiteaza pentru a nu-ti inunda (food) logurile.&lt;br /&gt;
*REJECT&lt;br /&gt;
Acest modul are acelas efect ca modulul 'DROP', numai ca expeditorului ii este trimis un mesaj de eroare de tip ICMP 'port unreachable'. Nota: mesajul de eroare de tip ICMP nu este trimis daca (vezi RFC 1122):&lt;br /&gt;
Pachetul filtrat era chiar el un mesaj de eroare de tip ICMP, sau un tip necunoscut de ICMP.&lt;br /&gt;
Pachetul filtrat nu era primul fragment dintr-un lant de fragmente.&lt;br /&gt;
Am trimis prea multe mesaje de eroare de tip ICMP la acea destinatie intr-un anumit timp.&lt;br /&gt;
Tinte speciale&lt;br /&gt;
Exista doua tinte speciale care vin o dat cu distributia: RETURN si QUEUE.&lt;br /&gt;
*RETURN are acelas efect ca si cum ar sari de la sfarsitul unui chain: pentru unul dintre cele trei chain-uri de baza, soarta pachetului va fi decisa de politica acestuia. Pentru o regula dintr-un chain definit de utilizator, traversarea continua exact dupa regula de la care a fost aruncat pachetul in chain-ul definit de utilizator. Daca o regula (nu este neaparat sa fie ultima din chain) dintr-un chain definit de utilizator are tinta RETURN si aceasta se potriveste unui pachet, aceasta il va trimite inapoi la chainul de unde a venit, cu mentiunea ca este respectata traversearea regulilor, adica la regula exact urmatoare celei care a trimis pachetul in chain-ul definit de utilizator.&lt;br /&gt;
*QUEUE este o tinta speciala, care ''pastreaza'' pachetul pentru procesarea facuta de useri. Daca pachetul nu este asteptat de vreo aplicatie acesta va fi aruncat.&lt;br /&gt;
&lt;br /&gt;
===Operatii cu un Chain intreg===&lt;br /&gt;
O abilitate foarte utila a programului iptables este gruparea regurilor in chainuri (seturi de reguli). Poti denumi chainurile definite de utilizator cum vrei, dar este rcomandat sa le denumesti cu caractere mici pentru a nu le confunda cu cele trei chainuri de baza; numele acestora poate sa fie maxim din 16 litere.&lt;br /&gt;
*Crearea unui nou chain&lt;br /&gt;
Hai sa creem un nou chain. Pentru ca eu sunt un tip cu imaginatie am sa-l numesc test. Vom folosi optiunile '-N' sau '--new-chain':&lt;br /&gt;
 # iptables -N test&lt;br /&gt;
Este chiar atat de simplu. Acum poti pune reguli in el dupa cum a fost aratat mai sus.&lt;br /&gt;
*Stergerea unui Chain&lt;br /&gt;
Stergerea unui chain este la fel de simplu, folosind optiunea '-X' sau '--delete-chain'. De ce '-X'? Pai…, toate literele frumoase au fost luate deja.&lt;br /&gt;
 # iptables -X test&lt;br /&gt;
Exista cateva restrictii cand stergem un chain: acesta trebuie sa fie gol (vezi golirea unui chain mai jos) si nu trebuie sa fie tinta vreunei reguli. Chainurile de baza nu pot fi sterse.&lt;br /&gt;
Daca nu se specifica numele chainului de sters, atunci toate chain-urile definite de utilizator vor fi sterse, daca este posibil.&lt;br /&gt;
*Golirea unui Chain&lt;br /&gt;
Exista un mod simplu prin care se poate goli un cahin de toate regulile care exista in el, folosind comanda '-F' (sau '--flush').&lt;br /&gt;
 # ipchains -F forward&lt;br /&gt;
Daca nu se specifica chain-ul atunci toate chainurile vor fi golite.&lt;br /&gt;
*Listarea unui chain&lt;br /&gt;
Poti vedea toate regulile existente intr-un chain cu comanda '-L'.&lt;br /&gt;
Daca nu este specificat numele chain-ului atunci sunt listate toate regulile existente in ''filtrul de pachete''.&lt;br /&gt;
Exista trei optiuni care acompaniaza comanda '-L'. Optiunea '-n' (numeric) pentru ca ea previne ca iptables sa incerce sa caute adresa IP, care (daca folosesti DNS ca majoritatea oamenilor) va cauza delay-uri foarte mari in caz ca DNS-ul nu este setat cum trebuie, sau daca filtrezi cererile de DNS (Domain Name Server).&lt;br /&gt;
Optiunea '-v' va arata toate detaliile unei raguli, cum sunt pachetele si contuarele de biti, comparatiile TOS, si interfetele. Altfel aceste valori sunt omise.&lt;br /&gt;
Nota: pachetele si contoarele de biti sunt afisate folosin sufixele 'K', 'M' sau 'G' pentru 1000, 1,000,000 si respectiv 1,000,000,000. Folosind optiunea '-x' (expand numbers) vor fi aratate ca numere netinand cont de cat de mari sunt acestea.&lt;br /&gt;
*Resetarea (Zeroing) Contoarelor&lt;br /&gt;
Este util sa poti reseta contoarele. Acest lucru poate fi facut cu optiunea '-Z' (sau '--zero')&lt;br /&gt;
Problema cu acest lucru este ca, uneori, trebuie sa stii valorile contoarelor imediat inainte de a fi aduse la zero. In exemplul de mai sus, anumite pachete pot trece in dupa ce folosesti optiunea '-L' si pana folosesti optiunea '-Z'. Pentru acest motiv, poti folosi optiunile '-L' si '-Z' impreuna, pentru a reseta contuarele in timp ce le vizualizezi.&lt;br /&gt;
*Setarea politicii&lt;br /&gt;
Doar chain-urile de baza (INPUT, OUTPUT and FORWARD) au o politica, pentru ca daca un pachete este confruntat cu un regulile dintr-un chain definit de utilizator si inca nu i se decide soarta, acesta isi continua drumul intr-un chain de baza.&lt;br /&gt;
Politica poate fi ACCEPT(accepta) sau DROP (arunca).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Traducerea si adaptarea a fost facuta (initial) de Razvan Turtureanu (razvan@upb.ro)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Firewall]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Autentificare_ssh_folosind_chei_publice/private&amp;diff=1658</id>
		<title>Talk:Autentificare ssh folosind chei publice/private</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Autentificare_ssh_folosind_chei_publice/private&amp;diff=1658"/>
				<updated>2005-12-29T12:46:15Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Despre corecturi şi adăugiri */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Despre corecturi şi adăugiri ==&lt;br /&gt;
* Categoria &amp;quot;SSH&amp;quot; este improprie în momentul actual (vezi discuţia de [[Talk:Tutorials|aici]]) aşa că am scos-o. [[User:Csdexter|@Dexter]] 00:26, 10 December 2005 (EET)&lt;br /&gt;
* Privitor la &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; şi &amp;lt;tt&amp;gt;authorized_keys2&amp;lt;/tt&amp;gt;, puteai sa spui că SSH.com o foloseşte pe a doua pe când OpenSSH o preferă pe prima. [[User:Csdexter|@Dexter]] 00:28, 10 December 2005 (EET)&lt;br /&gt;
* Mulţumim lui [[User:86.120.180.204]] pentru corecturile făcute, precum şi pentru introducerea mecanismului pentru notele de subsol -- mecanism care, însă, suportă o mica corectura cosmetică pe care am să o şi fac. [[User:Csdexter|@Dexter]] 10:32, 12 December 2005 (EET)&lt;br /&gt;
* Privitor la observatia anterioara, am facut schimbarile cosmetice in ideea ca note de subsol '''numerotate''' sunt necesare doar in carti, adica acolo unde trebuie sa poti deosebi o legatura de alta -- aici, pe Internet, te duce sistemul (de hiperlegaturi, n. ed.) direct la informatia legata (si de acolo inapoi) si deci nu mai ai nevoie de sistemul cu auto-numarare. Daca, in viitor, WikiMedia va implementa vre-un sistem ''elegant'' de auto-numarare a referintelor interne, vom migra articolele la acest sistem -- pe moment insa, generarea de legaturi artificial-externe sistemului este innacceptabila asa ca am modificat functionalitatea sabloanelor [[:Template:ref|ref]] si [[:Template:note|note]] in mod corespunzator. [[User:Csdexter|@Dexter]] 11:03, 12 December 2005 (EET)&lt;br /&gt;
* Numerotarea este necesară datorită faptului că notele sunt poziţionate în general la sfârşitul unei pagini, şi în momentul în care se face poziţionarea pe notă este aproape imposibil să distingi despre care notă este vorba --[[User:Sorin25|sorin25]] 22:04, 27 December 2005 (EET)&lt;br /&gt;
* Mie la Netscape 7.2 (si banuiesc ca si Mozilla face la fel) imi apare un chenar de selectie pe legatura ''(inapoi)'' corespunzatoare notei pe care am accesat-o. Dreptunghiul este cel care apare cand te muti intre legaturi/controale cu TAB. Voua nu va apare? [[User:Csdexter|@Dexter]] 18:18, 28 December 2005 (EET)&lt;br /&gt;
* Şi mie pe firefox îmi apare acelaşi lucru (mă refer la chenar), dar tot cred ca ar fi mai bine să avem şi cifre (decât să ne uităm după chenarele care apar pe înapoi) şi hiperlegăturile mai sus pomenite. [[User:Raptor360|Raptor360]] 14:46, 29 December 2005 (EET)&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1526</id>
		<title>Iptables romana</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1526"/>
				<updated>2005-12-01T12:14:05Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Cum sa faci regulile permanente */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cuvânt introductiv ==&lt;br /&gt;
Pentru început, vreau să spun că eu nu ştiu mai mult decât alţii şi spun asta pentru că am intrat în contact cu câţiva oameni care într-adevăr ştiu multe despre [http://ro.wikipedia.org/wiki/Linux Linux]. Eu nu am făcut decât să traduc acest ''HowTo'', iar dacă (mai mult ca sigur) voi găsiţi greşeli de traducere sau de adaptare, vă rog să îmi atrageţi atenţia scriindu-mi un mesaj de [mailto:razvan@upb.ro poştă electronică]. Dacă intraţi în posesia acestui fişier şi ştiţi pe cineva care îl vrea, vă rog să îl daţi pe gratis, adica aşa cum l-aţi primit şi voi pentru că nici măcar eu nu am cerut bani pe el. Sper sa vă ajute, cel puţin la fel de mult cât m-a ajutat şi pe mine, iar dacă aveţi neclarităţi scrieţi-mi un mesaj şi vă voi răspunde în măsura în care pot şi am timp.&lt;br /&gt;
&lt;br /&gt;
==Ce este filtrarea de pachete?==&lt;br /&gt;
&lt;br /&gt;
=== Bazele reţelisticii ===&lt;br /&gt;
Tot traficul dintr-o reţea este transmis sub formă de pachete. De exemplu, descărcând acest document (să zicem că are 50ko) s-ar putea ca tu să primeşti 36 de pachete a câte 1460 octeţi fiecare.&lt;br /&gt;
&lt;br /&gt;
Antetul (engl. [http://en.wikipedia.org/wiki/Header_%28information_technology%29 header]) fiecărui pachet spune unde se duce, de unde vine, tipul pachetului precum şi alte detalii administrative. Restul pachetului, conţinând datele care ne sunt transmise, se numeşte corpul (engl. [http://en.wikipedia.org/wiki/Packet body]) sau conţinutul pachetului.&lt;br /&gt;
&lt;br /&gt;
Câteva protocoale, de exemplu TCP care este folosit (spre exemplu) pentru traficul de web, poştă şi sesiuni de terminal de la distanţă, folosesc principiul de forma o conexiune inainte de a transmite pachete cu datele care ne interesează. Astfel, varii pachete de ''început'' (cu antete speciale) sunt schimbate care spun 'Vreau să mă conectez', 'Bine' şi 'Mulţumesc' (procedură cunoscută ca negociere bilaterală -- engl. [http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment_.283-way_handshake.29 3-way handshaking]). Abia apoi începe schimbul de pachete conţinând datele ce trebuie să tranziteze conexiunea  proaspăt creeată.&lt;br /&gt;
&lt;br /&gt;
===Deci ce este un ''filtru de pachete''?===&lt;br /&gt;
Un filtru de pachete este un program care se uită în header-ul pachetelor care trec şi le decide soarta. El poate să ''arunce'' pachetul (să îl neglijeze ca şi cum nu ar fi fost primit), să ''accepte'' pachetul (să îl lase să treacă), sau să ''rejecteze'' pachetul (îl aruncă dar şi spune sursei de la care a venit că l-a aruncat).&lt;br /&gt;
Sub Linux, filtrarea de pachete este construită în kernel (ca modul sau chiar în el) şi există câteva lucruri mai deosebite pe care le putem face cu pachetele (putem de exemplu să modificăm sursa sau destinaţia acestuia înainte de a-l trimite mai departe), dar principiul general de a ne uita în antetul pachetului şi să-i decidem soarta este înca acolo.&lt;br /&gt;
&lt;br /&gt;
===De ce aş vrea să filtrez pachete?===&lt;br /&gt;
*Control:&lt;br /&gt;
Cand foloseşti un ''linux-box'' ca să conectezi reţeaua ta internă la o altă reţea (să zicem Internetul) ai oportunitatea de a lăsa numai anumite feluri de trafic sa treacă şi să nu laşi să treacă pe altele. De exemplu, antetul pachetului conţine destinaţia sa şi poţi preveni ca pachetele să ajungă într-o anumită parte a reţelei externe. Ca un alt exemplu, eu folosesc Netscape ca sa accesez arhivele Dilbert. Pe acea pagină sunt reclame de la doubleclick.net, şi Netscape-ul îmi pierde timpul deschizându-le. Spunându-i ''filtrului de pachete'' să nu lase să treacă pachete spre doubleclick.net sau să vină de la el rezolvă aceasta problemă.&lt;br /&gt;
*Securitate:&lt;br /&gt;
Când Linux-box-ul tău este singurul lucru care stă între haosul din Internet şi reţeaua ta privată, este bine de ştiut că poţi restricţiona ceea ce face ''tărăboi la uşa ta''. De exemplu, poţi lăsa să treacă ceea ce pleacă din interiorul reţelei interne, dar ar trebui să te îngrijoreze vestitul 'Ping of Death' care vine de la străini, sau diverşi alţi viruşi ce se propagă prin Internet. Ca un alt exemplu, nu ai vrea ca cei din afară să se conecteze prin ssh (sau mult mai vechiul telnet) la serverul tău, chiar dacă toate conturile din el sunt protejate de o parolă; având un filtru de pachete care să ''arunce'' pachetele cu antete speciale care sunt folosite pentru a deschide conexiuni din exterior.&lt;br /&gt;
*Supraveghere:&lt;br /&gt;
Uneori o maşină din interior prost configurată (sau un virus de exemplu) poate decide să împraştie pachete lumii exterioare. Este frumos să-i spui ''filtrului de pachete'' să te înştiinţeze când se întâmplă ceva care nu face parte din normal,nu de alta dar poate faci ceva în legatură cu lucrul acesta sau poate eşti curios din fire să ştii ceea ce se intâmplă în reţeaua ta internă.&lt;br /&gt;
&lt;br /&gt;
===Cum filtrez pachete sub Linux?===&lt;br /&gt;
Kernel-ele Linux-ului au avut filtre de pachete chiar de la versiunea 1.1. Prima generaţie, bazată pe ''ipfw'' de la BSD, a fost introdusă de Alan Cox in 1994. Aceasta a fost modificată şi întărită de Jos Vos şi alţii pentru Linux 2.0. În 1998, pentru Linux 2.2, eu am modificat radical kernelul, cu ajutorul lui Michael Neuling şi am introdus programul 'ipchains'. În final, a patra generaţie a filtrului, 'iptables', şi o altă modificare a kernelului au apărut în 1999 pentru Linux 2.4. Pe iptables ne vom concentra în acest HOWTO.&lt;br /&gt;
Programul iptables vorbeşte cu kernel-ul şi îi spune ce pachete să filtreze. Dacă nu eşti programator sau prea curios, în acest fel vei controla ''filtrul de pachete''.&lt;br /&gt;
Programul iptables inserează sau şterge reguli din ''tabelul'' de reguli de filtrare al kernelului. Aceasta înseamnă că orice ai seta, se va pierde când vei reporni maşina; vezi [[#Cum să faci regulile permanente]] pentru a te asigura că data viitoare când porneşti maşina ele sunt încă acolo.&lt;br /&gt;
iptables înlocuieşte ipfwadm şi ipchains: vezi [[http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables-HOWTO-6.html|Cum să folosesti ipchains şi ipfwadm]] pentru a evita folosirea iptables dacă deja foloseşti ipchains sau ipfwadm.&lt;br /&gt;
&lt;br /&gt;
===Cum să faci regulile permanente===&lt;br /&gt;
Firewall-ul tău curent este stocat în kernel şi de aceea va fi pierdut când reporneşti maşina. Scriind&lt;br /&gt;
 # iptables-save&lt;br /&gt;
şi&lt;br /&gt;
 # iptables-restore&lt;br /&gt;
este ceea ce vă recomand.&lt;br /&gt;
Între timp, pune comanda necesară pentru a-ţi seta regulile într-un script de iniţializare. Asigură-te că faci ceva inteligent în caz că una din comenzi nu merge (de obicei 'exec /sbin/sulogin').&lt;br /&gt;
&lt;br /&gt;
==Cine oare eşti şi de ce te joci cu kernelul meu?==&lt;br /&gt;
Eu sunt Rusty; eu sunt cel care întreţine ''Linux IP Firewall'' şi sunt doar un programator decent care s-a întâmplat să fie la locul potrivit în timpul potrivit. Eu am scris ipchains (mecanismul firewall anterior, din kernelul 2.2) şi am învăţat destule ca să fac să meargă ''filtrul de pachete'' iptables cum trebuie. Cel puţin sper.&lt;br /&gt;
&lt;br /&gt;
==Cum traverseaza pachetele filtrul?==&lt;br /&gt;
Kernel-ul porneste cu trei liste de reguli; aceste liste se numesc ''firewall chains'' sau doar ''chains''. Cele trei chain-uri se numesc INPUT, OUTPUT si FORWARD.&lt;br /&gt;
Pentru fanii ASCII-art, chain-urile sunt aranjate cam asa:&lt;br /&gt;
&lt;br /&gt;
                    _____&lt;br /&gt;
                   /     \&lt;br /&gt;
 --&amp;gt;[Routing ]---&amp;gt;|FORWARD|-------&amp;gt;&lt;br /&gt;
    [Decision]     \_____/        ^ &lt;br /&gt;
        |                         |&lt;br /&gt;
        v                       ____  &lt;br /&gt;
       ___                     /    \ &lt;br /&gt;
      /   \                   |OUTPUT|&lt;br /&gt;
     |INPUT|                   \____/ &lt;br /&gt;
      \___/                      ^    &lt;br /&gt;
        |                        |&lt;br /&gt;
         ----&amp;gt; Local Process ----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cele trei cicluri reprezentate sunt chain-urile mentionate mai sus. Cand un pachet ajunge intr-un ciclu din diagrama, acel chain este examinat pentru a decide soarta pachetului. Daca chain-ul decide sa arunce pachetul (DROP), va fi ''omorat'' acolo, dar daca chain-ul spune ca pachetul trebuie acceptat (ACCEPT), el continua sa circule prin diagrama.&lt;br /&gt;
Un chain este un ''set de reguli''. Fiecare regula spune 'daca header-ul pachetului arata asa, atunci ce vrei sa faci cu pachetul'. Daca regula nu este indeplinita de pachet, apoi este consultata urmatoarea regula din set. In final, daca nu mai sunt reguli de consultat, kernel-ul se uita la politica ''setului de reguli'' pentru a decide ce se va intampla cu pachetul. Intr-un sistem riguros din punct de vedere al securitatii politica ''setului de reguli'' ii spune kernel-ului sa arunce pachetul (DROP).&lt;br /&gt;
Cand un pachet soseste (sa zicem, printr-o interfata Ethernet) kernelul se uita prima oara la destinatia lui: acest lucru se numeste 'routing'.&lt;br /&gt;
Daca pachetul este chiar pentru box-ul tau, el va merge in jos catre chain-ul INPUT. Daca trece de acesta orice proces cara il asteapta il va primi.&lt;br /&gt;
Altfel, daca kernelul in are forwarding-ul activat, sau nu stie cum sa forward-eze pachetul, acesta va fi aruncat (DROP). Daca forwarding-ul este activat si pachetul este destinat catre o alta interfata de retea (daca mai ai inca una), atunci pachetul merge inainte in diagrama noastra spre chain-ul FORWARD. Daca este acceptat de catre acesta el va fi trimis in afara.&lt;br /&gt;
Si in sfarsit, un program care ruleaza chiar in box-ul tau poate trimite pachete in retea. Aceste pachete trec prin chain-ul OUTPUT: daca acesta le accepta (ACCEPT), atunci pachetul isi continua drumul catre destinatia sa, oricare ar fi aceasta si prin orice interfata.&lt;br /&gt;
&lt;br /&gt;
==Folosirea iptables==&lt;br /&gt;
iptables are un manual foarte detaliat (man iptables), daca ai nevoie de detalii.&lt;br /&gt;
Exista cateva lucruri diferite pe care le poti face cu iptables. In primul rand operatii cu care poti face management pe un intreg ''set de reguli''. La inceput exista trei chain-uri input, output si forward pe care nu le poti sterge.&lt;br /&gt;
*Crearea unui nou chain (-N).&lt;br /&gt;
*Stergerea unui chain gol (-X).&lt;br /&gt;
*Schimbarea politicii unuia dintre chain-urile standard (input, output si forward). (-P).&lt;br /&gt;
*Listarea regulilor dintr-un chain (-L).&lt;br /&gt;
*Stergerea tuturor regulilor dintr-un chain (-F).&lt;br /&gt;
*Readucerea la zero a contoarelor regulilor dintr-un chain (-Z).&lt;br /&gt;
*Exista si moduri de manipulare a unei singure reguli dintr-un chain:&lt;br /&gt;
*Atasarea unei noi reguli (-A).&lt;br /&gt;
*Inserarea unei noi reguli intr-o anume pozitie intr-un chain (-I).&lt;br /&gt;
*Inlocuirea unei reguli intr-o anume pozitie a unui chain (-R).&lt;br /&gt;
*Stergerea unei reguli (-D).&lt;br /&gt;
&lt;br /&gt;
===Ce vezi atunci cand porneste calculatorul===&lt;br /&gt;
Pentru moment (Linux 2.3.15), iptables este un modul numit ('iptables.o'). Va trebui sa-l inserezi in kernel inainte de a putea folosi comanda iptables. Pe viitor, va fi posibil ca el sa fie deja construit in kernel.&lt;br /&gt;
Inainte de ca orice comanda iptables sa fie rulata (ai grija: unele distributii vor rula iptables in scripturile lor de initializare), nu va exista nici o regula in cele trei chain-uri de baza ('INPUT', 'FORWARD' si 'OUTPUT'), chain-urile INPUT si OUTPUT vor avea politica setata pe ACCEPT, si chain-ul FORWARD va fi setat pe DROP (poti schimba acest lucru setand 'forward=1' in optiunile modulului iptables).&lt;br /&gt;
&lt;br /&gt;
===Operatii cu o singura regula===&lt;br /&gt;
Acestea sunt ''painea si cutitul'' unui filtru de pachete; manipularea regulilor. Cel mai des probabil ca vei folosi comenzile de atasare (-A) si stergere (-D). Celelalte (-I pentru inserare si -R pentru inlocuire) sunt simple extensii ale acestor concepte.&lt;br /&gt;
Fiecare regula specifica un set de conditii pe care trebuie sa le indeplineasca un pachet, si ce sa faca in caz ca le indeplineste (o tinta 'target'). De exemplu, vrei sa arunci toate pachetele de tip ICMP care vin de la IP-ul 127.0.0.1. Deci in acest caz conditiile noastre sunt ca protocolul trebuie sa fie ICMP si sursa de la care vin pachetele este IP-ul 127.0.0.1. tinta noastra este aruncarea lor (DROP).&lt;br /&gt;
127.0.0.1 este interfata 'loopback', pe care o ai char daca nu ai vreo legatura fizica la vreo retea. Poti folosi programul 'ping' pentru a genera asemenea pachete si a testa o astfel de regula.&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 1 packets received, 0% packet loss&lt;br /&gt;
 round-trip min/avg/max = 0.2/0.2/0.2 ms&lt;br /&gt;
 # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 0 packets received, 100% packet loss&lt;br /&gt;
Poti vedea aici ca ping-ul a avut scces (prin '-c 1' i-am spus programului ping sa trimita un singur pachet).&lt;br /&gt;
Apoi atasam (-A) chain-ului 'INPUT', o regula in care specificam ca pachetele care vin de la IP-ul 127.0.0.1 ('-s 127.0.0.1') prin protocolul ICMP ('-p icmp') ar terbui sa le dam DROP ('-j DROP').&lt;br /&gt;
Apoi testam regula noastra, folosind un al doilea ping. Va fi o pauza pana cand programul renunta sa mai astepte raspunsul care nu va veni niciodata.&lt;br /&gt;
Putem sterge aceasta regula in mai multe feluri. In primul rand, pentru ca stim ca este singura regula in chain-ul input, putem folosi o stergere in care specificam pozitia reguluii:&lt;br /&gt;
 # iptables -D INPUT 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Al doilea mod prin care putem sterge regula este sa oglindim comanda –A, inlocuind –A cu -D. Acest lucru este folositor cand avem un set complex de reguli. In acest caz folosim:&lt;br /&gt;
 # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
&lt;br /&gt;
===Specificatii ale filtrarii===&lt;br /&gt;
Am vazut folosirea '-p' pentru a specifica protocolul, si '-s' pentru a specifica adresa sursa, dar sunt si alte optiuni cu care putem specifica caracteristici ale pachetelor&lt;br /&gt;
*Specificarea adresei Sursa si adresa Destinatie.&lt;br /&gt;
Sursa ('-s', '--source' or '--src') si destinatia ('-d', '--destination' or '--dst') IP-ului poate fi specificata in patru moduri. Cel mai des intalnit este folosirea numelui intreg, cum ar fi 'localhost' sau 'www.linuxhq.com'. Al doilea mod este folosirea de adrese IP cum ar fi '127.0.0.1'.&lt;br /&gt;
Al treilea si al patrulea mod este specificarea unui interval de IP-uri, cum sunt '199.95.207.0/24' sau '199.95.207.0/255.255.255.0'. Amandoua specifica orice IP cuprins intre 199.95.207.0 to 199.95.207.255 inclusiv; iar digitii dupa '/' ne spun care parti din IP-uri sunt relevante in cazul nostru. '/32' sau '/255.255.255.255' este modul standard (default). Pentru a specifica orice ip putem folosi '/0', dupa cum urmeaza:&lt;br /&gt;
 # ipchains -A input -s 0/0 -j DENY&lt;br /&gt;
Aceasta este rar folosit pentru ca efectul obtinut este la fel ca in cazul in care nu folosim de loc optiunea '-s'.&lt;br /&gt;
*Specificarea unei inversiuni&lt;br /&gt;
Multe flag-uri, incluzand optiunile '-s' and '-d' pot avea argumentele precedate de un '!' pentru a compara adrese care nu sunt echivalente cu cele date in linia de comanda. De exemplu '-s ! localhost' inseamna orice pachet care nu vine de la localhost.&lt;br /&gt;
*Specificarea Protocolului&lt;br /&gt;
Protocolul poate fi specificat cu flag-ul '-p'. Protocolul poate fi un numar (daca stii valorile numerice pentru IP) sau un nume pentru cazurile speciale de 'TCP', 'UDP' sau 'ICMP'. Cum este scris nu conteaza, asa ca 'tcp' merge la fel de bine ca si 'TCP'.&lt;br /&gt;
Numele protocolului poate fi precedat de un '!', pentru a fi inversat, such as '-p ! TCP' (expresia inseamna tot ce nu e TCP).&lt;br /&gt;
*Specificarea unei interfete&lt;br /&gt;
Optiunea '-i' (sau '--in-interface') si '-o' (sau '--out-interface') specifica numele interfetei. O interfata este un lucru fizic (modem, placa de retea etc…) prin care pachetul intra ('-i') sau prin care iese ('-o'). Poti folosi comanda&lt;br /&gt;
 # ifconfig&lt;br /&gt;
pentru a vedea interfetele care sunt active.&lt;br /&gt;
Pentru pachetele care traverseaza chain-ul INPUT nu se poate specifica o interfata de iesire, deci orice regula din acest chain care contine optiunea '-o' este inutila. Similar, pachetele care traverseaza chain-ul OUTPUT nu au interfata de intrare, deci orice regula din acest chain in care exista optiunea '-i' este inutila.&lt;br /&gt;
Doar pachetele care traverseaza chain-ul FORWARD au atat interfata de intrare cat si interfata de iesire.&lt;br /&gt;
Nu este gresit daca se specifica o interfata care pentru moment nu este activa; regula nu se va potrivi niciunui pachet pana cand interfata nu va fi activata. Acest lucru este foarte util pentru legaturi dial-up (PPP point to point) de obicei interfata ppp0.&lt;br /&gt;
Un caz special, un nume de interfata al carei string se termina cu '+' specifica toate interfetele de acelas fel (chiar daca sunt activate sau nu). De exemplu, pentru a specifica o regula care sa se potriveasca pentru toate interfetele de gen PPP, se va folosi expresia-i ppp+.&lt;br /&gt;
Numele interfetei poate fi precedat de '!', aceasta regula se va referi la pachetele care nu vin sau ies prin acea interfata.&lt;br /&gt;
*Specificarea fragmentelor&lt;br /&gt;
Uneori un pachet este prea mare ca sa incapa prin ''fir'' intreg. Cand acest lucru se intampla pachetul este divizat in fragmente, si trimis ca mai multe pachete mai mici. Calculatorul care primeste aceste fragmente le va reasambla si va forma pachetul initial.&lt;br /&gt;
Problema cu aceste pachete este ca doar primul fragment din acestea contine in header informatii despre protocol (cum ar fi TCP, UDP si ICMP) si extensiile lui, iar restul de fragmente nu contin aceste lucruri, iar daca am incerca sa ne uitam in ele ar fi imposibil.&lt;br /&gt;
Daca tu faci ''connection tracking'' sau ''NAT'', atunci toate aceste fragmente vor fi fuzionate inainte de a ajunge la ''filtrul de pachete'', deci nu trebuie sa ne facem griji despre aceste fragmente. Atltfel, poti insera in kernel modulul 'ip_defrag.o' care face acelas lucru (nota, acest lucru este permis doar daca linux-box-ul tau este singura conexiune intre cele doua retele).&lt;br /&gt;
Altfel, este foarte important sa intelegem cum sunt tratate fragmentele de catre regulile de filtrare. Orice regula care cere informatii de la pe care nu le avem nu se va potrivi, aceasta inseamna ca primul fragment (cel care are specificat in header tot ce este necesar) va fi tratat ca pe un pachet, iar cel de-al doilea si restul de fragmente nu vor fi tratate corespunzator (pentru ca header-ul lor nu contine informatiile necesare). De aceea o regula de genul ''-p TCP --sport www'' (care specifica portul sursa al unui server 'www') nu va filtra fragmente (in afara de primul). La fel se va comporta si regula opusa ''-p TCP --sport ! www''.&lt;br /&gt;
Oricum, poti face o regula special pentru cel de-al doilea si urmatoarele fragmente folosind optiunea '-f' (sau '--fragment'). Valabila este si regula care nu se aplica pentru cel de-al doilea si urmatoarele fragmente daca punem optiunea ''!'' inaintea lui '-f'.&lt;br /&gt;
De obicei se zice ca este sigur (din punct de vedere al securitatii) sa lasi al doilea si celelalte fragmente sa treaca treaca, pentru ca filtrarea afecteaza decat primul fragment, si deci pachetul nu va putea fi reasamblat in partea cealalta, dar, exista bug-uri care vor face masina sa se ''prabuseasca'' doar prin simplul fapt ca aceasta trimite fragmente. Este decizia ta.&lt;br /&gt;
Ca un exemplu, urmatoarea regula va arunca toate fragmentele care se duc la IP-ul 192.168.1.1:&lt;br /&gt;
 # iptables -A OUTPUT -f -d 192.168.1.1 -j DROP&lt;br /&gt;
*Extensii la iptables&lt;br /&gt;
Iptables este extensibil, asta insemnand ca atat kernel-ul cat si iptables se pot extinde pentru a ne asigura noi posibilitati.&lt;br /&gt;
Unele dintre aceste extensii sunt standard, si altele sunt mai mult exotice. Extensiile pot fi facute si de alti oameni si distibuite userilor.&lt;br /&gt;
Extensiile kernel-ului normal se gasesc in subdirectorul lui pentru module, cum este /lib/modules/2.3.15/net. Pe acestea trebuie sa le incarci in kernel automat pentru ca ele nu se autoincarca la cerere(Linux 2.3.15). Pe viitor ele se vor incarca automat.&lt;br /&gt;
Extensiile programului iptables sunt librarii ''sheruite'' care de obicei sunt gasite in directorul /usr/local/lib/iptables/, cu toate ca anumite distributii le pun in /lib/iptables sau /usr/lib/iptables.&lt;br /&gt;
Extensiile sunt de doua tipuri: tinte noi (new targets), si noi teste (new tests); mai jos vom vorbi despre ''noi tinte''. Anumite protocoale ofera ele noi teste: actual ele sunt TCP, UDP si ICMP cum sunt aratate mai jos.&lt;br /&gt;
Pe aceste noi teste le vei putea specifica in linia de comanda dupa optiunea '-p', care va incarca extensiile. Pentru teste noi explicite trebuie sa folosestei optiunea '-m' pentru a incarca extensia, doar dupa aceasta va fi aceasta accesibila.&lt;br /&gt;
Pentru a deschide manualul extensiei dupa ce o incarci ('-p' or '-m') foloseste optiunea '-h' sau '--help'.&lt;br /&gt;
**Extensii TCP&lt;br /&gt;
Extensiile TCP sunt incarcate automat daca este folosita comanda '--protocol tcp'. Aceastea vin cu urmatoarele optiuni (niciuna nu se refera si la fragmente, doar la pachete).&lt;br /&gt;
--tcp-flags&lt;br /&gt;
Daca dupa ele se pune (optional)'!', atunci doua stringuri te vor ajuta sa filtrezi flaguri specifice protocolului TCP. Primul string este un ''mask'': o lista de flaguri pe care vrei sao examinezi. Al doilea string iti spune pe care vrei sa le filtrezi. De exemplu:&lt;br /&gt;
 # iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY[/code]&lt;br /&gt;
Aceasta indica, ca toate flagurile trebuie examinate ('ALL' este sinonim cu 'SYN,ACK,FIN,RST,URG,PSH'), dar doar SYN si ACK vrei sa le setezi. Exista si un argument 'NONE' care inseamna nici un flag.&lt;br /&gt;
--syn&lt;br /&gt;
Urmat optional de '!', aceasta este o scurtare a comenzii'--tcp-flags SYN,RST,ACK SYN'.&lt;br /&gt;
--source-port&lt;br /&gt;
optional urmat de '!', si apoi de un singur port TCP, sau un interval de porturi. Porturile poti specificate prin numele lor, la fel ca in /etc/services, sau numerice. Intervalele sunt ori doua nume de porturi separate cu'-', sau (pentru a specifica un nr. mai mare sau egal cu portul dat) un port cu '-' inainte lui, sau (pentru a specifica un nr mai mic sau egal cu portul dat), un port precedat de'-'.&lt;br /&gt;
--sport&lt;br /&gt;
este sinonim cu '--source-port'.&lt;br /&gt;
--destination-port&lt;br /&gt;
and&lt;br /&gt;
--dport&lt;br /&gt;
sunt la fel ca si mai sus, numai ca ele specifica destinatia in loc de sursa portului care ne intereseaza sa-l filtram.&lt;br /&gt;
--tcp-option&lt;br /&gt;
urmat oprional de '!' siun numar, se refera la un pachet TCP care este egal cu acel numar. Un pachet care nu are un header TCP complet este aruncat (DROP) automat daca i se incearca examinarea optiunilor TCP.&lt;br /&gt;
O explicatie a flagurilor TCP&lt;br /&gt;
Este util sa permitem conexiuni TCP intr-o directie, dar nu si in cealalta. De exemplu, ai vrea sa se poata face conexiuni catre un server WWW exterior, dar sa nu existe conexiuni de la acel server la tine.&lt;br /&gt;
Te poti gandi sa blochezi pachetele care vin de la acel server. Dar din nefericire, ca o conexiune TCP sa mearga trebuie sa existe trafic in ambele directii.&lt;br /&gt;
Solutia este sa blochezi doar pachetele care cer ca o conexiune sa fi stabilita. Aceste pachete se numesc SYN (ok, tehnic ele sunt pachete cu flagul SYN setat, si flagurile FIN si ACK sunt sterse, dar noi le numim pe scurt pachete SYN). Blocand doar aceste pachete putem opri cererile de conexiuni si astfel niciuna nu poate fi facuta din exterior.&lt;br /&gt;
Flagul '--syn' este folosit pentru aceasta: este valid doar pentru regulile in care li se specifica ca protocol TCP-ul. Ca exemplu, pentru a specifica incercari de conexiuni de la IP-ul 192.168.1.1 se foloseste:&lt;br /&gt;
-p TCP -s 192.168.1.1 --syn&lt;br /&gt;
Acest flag poate fi inversat daca este precedat de un '!', aceasta inseamna orice pachet inafara de cele initiatoare de conexiuni TCP.&lt;br /&gt;
**Extensii UDP&lt;br /&gt;
Aceste extensii sunt incarcate automat daca este specificat protocolul UDP '--protocol udp'. Aici avem optiunile '--source-port', '--sport', '--destination-port' si '--dport' detaliate mai sus la protocolul TCP.&lt;br /&gt;
Extensii ICMP&lt;br /&gt;
Aceasta extensi este incarcata automat daca se specifica '--protocol icmp'. Aceasta ne da o singura optiune:&lt;br /&gt;
--icmp-type&lt;br /&gt;
urmat optional de '!', atunci un unme tip icmp (ex 'host-unreachable'), sau un tip numeric (ex. '3'), sau numeric si cod separat de'/' (ex. '3/3'). O lista de nume tip icmp se poate optine cu comanda '-p icmp --help'.&lt;br /&gt;
Alte extensii&lt;br /&gt;
Celelalte doua extensii sunt extensii demonstrative, care (daca sunt instalate) pot fi ''aduse la viata'' cu optiunea '-m'.&lt;br /&gt;
mac&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m mac' sau '--match mac'. Este folosit pentru a filtra pachetele dupa adresa Ethernet (MAC), si este folositoare doar la regulile din chain-urile INPUT si FORWARD. De aduce o singura optiune:&lt;br /&gt;
--mac-source&lt;br /&gt;
optional urmata de '!', apoi o adresa ethernet scrisa in hexazecimale separate de '':'', ex '--mac-source 00:60:08:91:CC:B7'.&lt;br /&gt;
limit&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m limit' sau '--match limit'. Este folosit pentru a limita rata de pachete acceptate. Unitatea de masura este numere de pachete pe secunda (default 3 pachete pe ora, cu o rafala de 5). Aceasta ne aduce doua argumente optionale:&lt;br /&gt;
--limit&lt;br /&gt;
urmat de un numar; specifica numarul medie maxim de pachete pe secunda care sunt lasate sa treaca. Numarul poate unitati explicite, folosind '/second', '/minute', '/hour' or '/day', sau parti din ele (deci '5/second' este la fel ca '5/s').&lt;br /&gt;
--limit-burst&lt;br /&gt;
urmata de un numar, defineste lungimea rafalei de pachete acceptate dupa care intra in actiune limita de mai sus.&lt;br /&gt;
Aceasta optiune poate fi folosita impreuna cu tinta ''LOG'' pentru a face ''rate-limited logging''. Prentru a intelege cum functioneaza, hai sa ne uitam la urmatoarea regula, care logheaza pachetele care au limita ''default'':&lt;br /&gt;
 # iptables -A FORWARD -m limit -j LOG&lt;br /&gt;
Prima oara cand regula este indeplinita de un pachet, acesta va fi logat; de fapt, pentru ca rafala este de 5, primele cinci pachete vor fi logate. Dupa aceea, vor mai trece ica douazeci de minute pana cand urmatorul pachet va fi logat de la regula aceasta, netinand cont de cate pachete ajung la ea. Deasemenea, fiecare douazeci de minute care trec fara ca un pachet sa indeplineasca regula , o unitate din rafala va fi recapatata, daca nici un pachet nu se loveste de regula timp de 100 de minute rafala va reveni la 5; la fel ca la inceput.&lt;br /&gt;
Nu poti creea o regula a carei interval de timp de umplere a rafalei sa depaseasca 59 de ore, deci daca faci o regula care sa se reincarce o data pe zi, rafala trebie sa fie mai mica de 3.&lt;br /&gt;
unclean&lt;br /&gt;
Acest modul trebuie explicit specificat cu '-m unclean sau '--match unclean'. Acesta face analize aleatorii asupra integritatii pachetelor. Acesta nu trebuie folosit ca o optiune pentru securitate (probabil ca va inrautatii lucrurile, pentru ca s-ar putea ca sa aiba bug-uri). Nu vine cu nici o optiune.&lt;br /&gt;
&lt;br /&gt;
===Specificarea tintelor===&lt;br /&gt;
Acum stim cum sa examinam un pachet, trebuie sa stim ce sa facem cu pachetele care se potrivesc regulilor noastre. Aceasta se numeste ''Tinta regulii'' (rule's target).&lt;br /&gt;
Exista doua tinte foarte simple: DROP (arunca) si ACCEPT(accepta). Deja le stim pe acestea. Daca pachetul indeplineste regula si tinta ei este una din cele doua, nu vor mai fi consultate alte reguli: soarta pachetului a fost decisa.&lt;br /&gt;
There are two types of targets other than the built-in ones: extensions and user-defined chains.&lt;br /&gt;
Chain-uri definite de utilizator (User-defined chains)&lt;br /&gt;
O puternica abilitate pe care iptables a mostenit-o de la ipchains este abilitatea de a creea chain-uri definite de utilizator (adica alte chain-uri inafara de cele trei de baza INPUT, FORWARD si OUTPUT).&lt;br /&gt;
Cand un pachet se potriveste unei reguli a carei tinta este un chain definit de utilizator, pachetul incepe sa confrunte reguluile sin chain-ul definit de utilizator. Daca acel chain nu decide soarta pachetului, adica a parcurs toate regulile din acel chain definit de utilizator, atunci pachetul incepe sa confrunte regula imegiat urmatoare regulei a carei tinta a fost chainul definit de utilizator.&lt;br /&gt;
Din nou este vremea pentru ASCII art. Sa zicem ca avem doua chain-uri Consider two (prostute): INPUT (chain-ul de baza) si test (un chain definit de utilizator cu optiunea ''-N''). CLIC&lt;br /&gt;
&lt;br /&gt;
Chain-urile definite de utilizator pot sari catre alte chain-uri definite de utilizator (dar nu au voie sa fac bucle inchise: pachetele care intra in bucle inchise vor fi aruncate).&lt;br /&gt;
Extensia: New Targets&lt;br /&gt;
Clealat tip de tinta este o extensie. Aceastea constau intr-un modul pentru kernel, care ne asigura noi optiuni in linia de comanda. Exista cateva extensii in distributia default a pachetului netfilter:&lt;br /&gt;
*LOG&lt;br /&gt;
Acest modul logheaza pachetele care indeplinesc o anumita regula a carei tinta este ''LOG''. Acesta vine cu urmatoarele optiuni:&lt;br /&gt;
--log-level&lt;br /&gt;
Urmata de un nume sau numar. Numele sunt (case-insensitive) 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' si 'emerg', care corespund numerelor de la 7 la 0. Uta-te la ''man page-ul'' pentru syslog.conf pentru o explicatie a acestor nivele.&lt;br /&gt;
--log-prefix&lt;br /&gt;
Urmat de un sting de maxim 14 caractere, acest mesaj este trimis la inceputul logului pentru a fi unic.&lt;br /&gt;
Acest modul este forte util dupa o tinta care limiteaza pentru a nu-ti inunda (food) logurile.&lt;br /&gt;
*REJECT&lt;br /&gt;
Acest modul are acelas efect ca modulul 'DROP', numai ca expeditorului ii este trimis un mesaj de eroare de tip ICMP 'port unreachable'. Nota: mesajul de eroare de tip ICMP nu este trimis daca (vezi RFC 1122):&lt;br /&gt;
Pachetul filtrat era chiar el un mesaj de eroare de tip ICMP, sau un tip necunoscut de ICMP.&lt;br /&gt;
Pachetul filtrat nu era primul fragment dintr-un lant de fragmente.&lt;br /&gt;
Am trimis prea multe mesaje de eroare de tip ICMP la acea destinatie intr-un anumit timp.&lt;br /&gt;
Tinte speciale&lt;br /&gt;
Exista doua tinte speciale care vin o dat cu distributia: RETURN si QUEUE.&lt;br /&gt;
*RETURN are acelas efect ca si cum ar sari de la sfarsitul unui chain: pentru unul dintre cele trei chain-uri de baza, soarta pachetului va fi decisa de politica acestuia. Pentru o regula dintr-un chain definit de utilizator, traversarea continua exact dupa regula de la care a fost aruncat pachetul in chain-ul definit de utilizator. Daca o regula (nu este neaparat sa fie ultima din chain) dintr-un chain definit de utilizator are tinta RETURN si aceasta se potriveste unui pachet, aceasta il va trimite inapoi la chainul de unde a venit, cu mentiunea ca este respectata traversearea regulilor, adica la regula exact urmatoare celei care a trimis pachetul in chain-ul definit de utilizator.&lt;br /&gt;
*QUEUE este o tinta speciala, care ''pastreaza'' pachetul pentru procesarea facuta de useri. Daca pachetul nu este asteptat de vreo aplicatie acesta va fi aruncat.&lt;br /&gt;
&lt;br /&gt;
===Operatii cu un Chain intreg===&lt;br /&gt;
O abilitate foarte utila a programului iptables este gruparea regurilor in chainuri (seturi de reguli). Poti denumi chainurile definite de utilizator cum vrei, dar este rcomandat sa le denumesti cu caractere mici pentru a nu le confunda cu cele trei chainuri de baza; numele acestora poate sa fie maxim din 16 litere.&lt;br /&gt;
*Crearea unui nou chain&lt;br /&gt;
Hai sa creem un nou chain. Pentru ca eu sunt un tip cu imaginatie am sa-l numesc test. Vom folosi optiunile '-N' sau '--new-chain':&lt;br /&gt;
 # iptables -N test&lt;br /&gt;
Este chiar atat de simplu. Acum poti pune reguli in el dupa cum a fost aratat mai sus.&lt;br /&gt;
*Stergerea unui Chain&lt;br /&gt;
Stergerea unui chain este la fel de simplu, folosind optiunea '-X' sau '--delete-chain'. De ce '-X'? Pai…, toate literele frumoase au fost luate deja.&lt;br /&gt;
 # iptables -X test&lt;br /&gt;
Exista cateva restrictii cand stergem un chain: acesta trebuie sa fie gol (vezi golirea unui chain mai jos) si nu trebuie sa fie tinta vreunei reguli. Chainurile de baza nu pot fi sterse.&lt;br /&gt;
Daca nu se specifica numele chainului de sters, atunci toate chain-urile definite de utilizator vor fi sterse, daca este posibil.&lt;br /&gt;
*Golirea unui Chain&lt;br /&gt;
Exista un mod simplu prin care se poate goli un cahin de toate regulile care exista in el, folosind comanda '-F' (sau '--flush').&lt;br /&gt;
 # ipchains -F forward&lt;br /&gt;
Daca nu se specifica chain-ul atunci toate chainurile vor fi golite.&lt;br /&gt;
*Listarea unui chain&lt;br /&gt;
Poti vedea toate regulile existente intr-un chain cu comanda '-L'.&lt;br /&gt;
Daca nu este specificat numele chain-ului atunci sunt listate toate regulile existente in ''filtrul de pachete''.&lt;br /&gt;
Exista trei optiuni care acompaniaza comanda '-L'. Optiunea '-n' (numeric) pentru ca ea previne ca iptables sa incerce sa caute adresa IP, care (daca folosesti DNS ca majoritatea oamenilor) va cauza delay-uri foarte mari in caz ca DNS-ul nu este setat cum trebuie, sau daca filtrezi cererile de DNS (Domain Name Server).&lt;br /&gt;
Optiunea '-v' va arata toate detaliile unei raguli, cum sunt pachetele si contuarele de biti, comparatiile TOS, si interfetele. Altfel aceste valori sunt omise.&lt;br /&gt;
Nota: pachetele si contoarele de biti sunt afisate folosin sufixele 'K', 'M' sau 'G' pentru 1000, 1,000,000 si respectiv 1,000,000,000. Folosind optiunea '-x' (expand numbers) vor fi aratate ca numere netinand cont de cat de mari sunt acestea.&lt;br /&gt;
*Resetarea (Zeroing) Contoarelor&lt;br /&gt;
Este util sa poti reseta contoarele. Acest lucru poate fi facut cu optiunea '-Z' (sau '--zero')&lt;br /&gt;
Problema cu acest lucru este ca, uneori, trebuie sa stii valorile contoarelor imediat inainte de a fi aduse la zero. In exemplul de mai sus, anumite pachete pot trece in dupa ce folosesti optiunea '-L' si pana folosesti optiunea '-Z'. Pentru acest motiv, poti folosi optiunile '-L' si '-Z' impreuna, pentru a reseta contuarele in timp ce le vizualizezi.&lt;br /&gt;
*Setarea politicii&lt;br /&gt;
Doar chain-urile de baza (INPUT, OUTPUT and FORWARD) au o politica, pentru ca daca un pachete este confruntat cu un regulile dintr-un chain definit de utilizator si inca nu i se decide soarta, acesta isi continua drumul intr-un chain de baza.&lt;br /&gt;
Politica poate fi ACCEPT(accepta) sau DROP (arunca).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Traducerea si adaptarea a fost facuta (initial) de Razvan Turtureanu (razvan@upb.ro)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Firewall]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1525</id>
		<title>Iptables romana</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Iptables_romana&amp;diff=1525"/>
				<updated>2005-12-01T12:05:41Z</updated>
		
		<summary type="html">&lt;p&gt;Raptor: /* Cum filtrez pachete sub Linux? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cuvânt introductiv ==&lt;br /&gt;
Pentru început, vreau să spun că eu nu ştiu mai mult decât alţii şi spun asta pentru că am intrat în contact cu câţiva oameni care într-adevăr ştiu multe despre [http://ro.wikipedia.org/wiki/Linux Linux]. Eu nu am făcut decât să traduc acest ''HowTo'', iar dacă (mai mult ca sigur) voi găsiţi greşeli de traducere sau de adaptare, vă rog să îmi atrageţi atenţia scriindu-mi un mesaj de [mailto:razvan@upb.ro poştă electronică]. Dacă intraţi în posesia acestui fişier şi ştiţi pe cineva care îl vrea, vă rog să îl daţi pe gratis, adica aşa cum l-aţi primit şi voi pentru că nici măcar eu nu am cerut bani pe el. Sper sa vă ajute, cel puţin la fel de mult cât m-a ajutat şi pe mine, iar dacă aveţi neclarităţi scrieţi-mi un mesaj şi vă voi răspunde în măsura în care pot şi am timp.&lt;br /&gt;
&lt;br /&gt;
==Ce este filtrarea de pachete?==&lt;br /&gt;
&lt;br /&gt;
=== Bazele reţelisticii ===&lt;br /&gt;
Tot traficul dintr-o reţea este transmis sub formă de pachete. De exemplu, descărcând acest document (să zicem că are 50ko) s-ar putea ca tu să primeşti 36 de pachete a câte 1460 octeţi fiecare.&lt;br /&gt;
&lt;br /&gt;
Antetul (engl. [http://en.wikipedia.org/wiki/Header_%28information_technology%29 header]) fiecărui pachet spune unde se duce, de unde vine, tipul pachetului precum şi alte detalii administrative. Restul pachetului, conţinând datele care ne sunt transmise, se numeşte corpul (engl. [http://en.wikipedia.org/wiki/Packet body]) sau conţinutul pachetului.&lt;br /&gt;
&lt;br /&gt;
Câteva protocoale, de exemplu TCP care este folosit (spre exemplu) pentru traficul de web, poştă şi sesiuni de terminal de la distanţă, folosesc principiul de forma o conexiune inainte de a transmite pachete cu datele care ne interesează. Astfel, varii pachete de ''început'' (cu antete speciale) sunt schimbate care spun 'Vreau să mă conectez', 'Bine' şi 'Mulţumesc' (procedură cunoscută ca negociere bilaterală -- engl. [http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment_.283-way_handshake.29 3-way handshaking]). Abia apoi începe schimbul de pachete conţinând datele ce trebuie să tranziteze conexiunea  proaspăt creeată.&lt;br /&gt;
&lt;br /&gt;
===Deci ce este un ''filtru de pachete''?===&lt;br /&gt;
Un filtru de pachete este un program care se uită în header-ul pachetelor care trec şi le decide soarta. El poate să ''arunce'' pachetul (să îl neglijeze ca şi cum nu ar fi fost primit), să ''accepte'' pachetul (să îl lase să treacă), sau să ''rejecteze'' pachetul (îl aruncă dar şi spune sursei de la care a venit că l-a aruncat).&lt;br /&gt;
Sub Linux, filtrarea de pachete este construită în kernel (ca modul sau chiar în el) şi există câteva lucruri mai deosebite pe care le putem face cu pachetele (putem de exemplu să modificăm sursa sau destinaţia acestuia înainte de a-l trimite mai departe), dar principiul general de a ne uita în antetul pachetului şi să-i decidem soarta este înca acolo.&lt;br /&gt;
&lt;br /&gt;
===De ce aş vrea să filtrez pachete?===&lt;br /&gt;
*Control:&lt;br /&gt;
Cand foloseşti un ''linux-box'' ca să conectezi reţeaua ta internă la o altă reţea (să zicem Internetul) ai oportunitatea de a lăsa numai anumite feluri de trafic sa treacă şi să nu laşi să treacă pe altele. De exemplu, antetul pachetului conţine destinaţia sa şi poţi preveni ca pachetele să ajungă într-o anumită parte a reţelei externe. Ca un alt exemplu, eu folosesc Netscape ca sa accesez arhivele Dilbert. Pe acea pagină sunt reclame de la doubleclick.net, şi Netscape-ul îmi pierde timpul deschizându-le. Spunându-i ''filtrului de pachete'' să nu lase să treacă pachete spre doubleclick.net sau să vină de la el rezolvă aceasta problemă.&lt;br /&gt;
*Securitate:&lt;br /&gt;
Când Linux-box-ul tău este singurul lucru care stă între haosul din Internet şi reţeaua ta privată, este bine de ştiut că poţi restricţiona ceea ce face ''tărăboi la uşa ta''. De exemplu, poţi lăsa să treacă ceea ce pleacă din interiorul reţelei interne, dar ar trebui să te îngrijoreze vestitul 'Ping of Death' care vine de la străini, sau diverşi alţi viruşi ce se propagă prin Internet. Ca un alt exemplu, nu ai vrea ca cei din afară să se conecteze prin ssh (sau mult mai vechiul telnet) la serverul tău, chiar dacă toate conturile din el sunt protejate de o parolă; având un filtru de pachete care să ''arunce'' pachetele cu antete speciale care sunt folosite pentru a deschide conexiuni din exterior.&lt;br /&gt;
*Supraveghere:&lt;br /&gt;
Uneori o maşină din interior prost configurată (sau un virus de exemplu) poate decide să împraştie pachete lumii exterioare. Este frumos să-i spui ''filtrului de pachete'' să te înştiinţeze când se întâmplă ceva care nu face parte din normal,nu de alta dar poate faci ceva în legatură cu lucrul acesta sau poate eşti curios din fire să ştii ceea ce se intâmplă în reţeaua ta internă.&lt;br /&gt;
&lt;br /&gt;
===Cum filtrez pachete sub Linux?===&lt;br /&gt;
Kernel-ele Linux-ului au avut filtre de pachete chiar de la versiunea 1.1. Prima generaţie, bazată pe ''ipfw'' de la BSD, a fost introdusă de Alan Cox in 1994. Aceasta a fost modificată şi întărită de Jos Vos şi alţii pentru Linux 2.0. În 1998, pentru Linux 2.2, eu am modificat radical kernelul, cu ajutorul lui Michael Neuling şi am introdus programul 'ipchains'. În final, a patra generaţie a filtrului, 'iptables', şi o altă modificare a kernelului au apărut în 1999 pentru Linux 2.4. Pe iptables ne vom concentra în acest HOWTO.&lt;br /&gt;
Programul iptables vorbeşte cu kernel-ul şi îi spune ce pachete să filtreze. Dacă nu eşti programator sau prea curios, în acest fel vei controla ''filtrul de pachete''.&lt;br /&gt;
Programul iptables inserează sau şterge reguli din ''tabelul'' de reguli de filtrare al kernelului. Aceasta înseamnă că orice ai seta, se va pierde când vei reporni maşina; vezi [[#Cum să faci regulile permanente]] pentru a te asigura că data viitoare când porneşti maşina ele sunt încă acolo.&lt;br /&gt;
iptables înlocuieşte ipfwadm şi ipchains: vezi [[http://www.telematik.informatik.uni-karlsruhe.de/lehre/seminare/LinuxSem/downloads/netfilter/iptables-HOWTO-6.html|Cum să folosesti ipchains şi ipfwadm]] pentru a evita folosirea iptables dacă deja foloseşti ipchains sau ipfwadm.&lt;br /&gt;
&lt;br /&gt;
===Cum sa faci regulile permanente===&lt;br /&gt;
Firewall-ul tau curent este stocat in kernel si de aceea va fi pierdut cand reboot-ezi. Scriind&lt;br /&gt;
 # iptables-save&lt;br /&gt;
si&lt;br /&gt;
 # iptables-restore&lt;br /&gt;
este ceea ce va recomand.&lt;br /&gt;
Intre timp, pune comanda necesara pentru a-ti seta regulile intr-un script de initializare. Asigurate ca faci ceva inteligent in caz ca una din comenzi nu merge (de obicei 'exec /sbin/sulogin').&lt;br /&gt;
&lt;br /&gt;
==Cine oare eşti şi de ce te joci cu kernelul meu?==&lt;br /&gt;
Eu sunt Rusty; eu sunt cel care întreţine ''Linux IP Firewall'' şi sunt doar un programator decent care s-a întâmplat să fie la locul potrivit în timpul potrivit. Eu am scris ipchains (mecanismul firewall anterior, din kernelul 2.2) şi am învăţat destule ca să fac să meargă ''filtrul de pachete'' iptables cum trebuie. Cel puţin sper.&lt;br /&gt;
&lt;br /&gt;
==Cum traverseaza pachetele filtrul?==&lt;br /&gt;
Kernel-ul porneste cu trei liste de reguli; aceste liste se numesc ''firewall chains'' sau doar ''chains''. Cele trei chain-uri se numesc INPUT, OUTPUT si FORWARD.&lt;br /&gt;
Pentru fanii ASCII-art, chain-urile sunt aranjate cam asa:&lt;br /&gt;
&lt;br /&gt;
                    _____&lt;br /&gt;
                   /     \&lt;br /&gt;
 --&amp;gt;[Routing ]---&amp;gt;|FORWARD|-------&amp;gt;&lt;br /&gt;
    [Decision]     \_____/        ^ &lt;br /&gt;
        |                         |&lt;br /&gt;
        v                       ____  &lt;br /&gt;
       ___                     /    \ &lt;br /&gt;
      /   \                   |OUTPUT|&lt;br /&gt;
     |INPUT|                   \____/ &lt;br /&gt;
      \___/                      ^    &lt;br /&gt;
        |                        |&lt;br /&gt;
         ----&amp;gt; Local Process ----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cele trei cicluri reprezentate sunt chain-urile mentionate mai sus. Cand un pachet ajunge intr-un ciclu din diagrama, acel chain este examinat pentru a decide soarta pachetului. Daca chain-ul decide sa arunce pachetul (DROP), va fi ''omorat'' acolo, dar daca chain-ul spune ca pachetul trebuie acceptat (ACCEPT), el continua sa circule prin diagrama.&lt;br /&gt;
Un chain este un ''set de reguli''. Fiecare regula spune 'daca header-ul pachetului arata asa, atunci ce vrei sa faci cu pachetul'. Daca regula nu este indeplinita de pachet, apoi este consultata urmatoarea regula din set. In final, daca nu mai sunt reguli de consultat, kernel-ul se uita la politica ''setului de reguli'' pentru a decide ce se va intampla cu pachetul. Intr-un sistem riguros din punct de vedere al securitatii politica ''setului de reguli'' ii spune kernel-ului sa arunce pachetul (DROP).&lt;br /&gt;
Cand un pachet soseste (sa zicem, printr-o interfata Ethernet) kernelul se uita prima oara la destinatia lui: acest lucru se numeste 'routing'.&lt;br /&gt;
Daca pachetul este chiar pentru box-ul tau, el va merge in jos catre chain-ul INPUT. Daca trece de acesta orice proces cara il asteapta il va primi.&lt;br /&gt;
Altfel, daca kernelul in are forwarding-ul activat, sau nu stie cum sa forward-eze pachetul, acesta va fi aruncat (DROP). Daca forwarding-ul este activat si pachetul este destinat catre o alta interfata de retea (daca mai ai inca una), atunci pachetul merge inainte in diagrama noastra spre chain-ul FORWARD. Daca este acceptat de catre acesta el va fi trimis in afara.&lt;br /&gt;
Si in sfarsit, un program care ruleaza chiar in box-ul tau poate trimite pachete in retea. Aceste pachete trec prin chain-ul OUTPUT: daca acesta le accepta (ACCEPT), atunci pachetul isi continua drumul catre destinatia sa, oricare ar fi aceasta si prin orice interfata.&lt;br /&gt;
&lt;br /&gt;
==Folosirea iptables==&lt;br /&gt;
iptables are un manual foarte detaliat (man iptables), daca ai nevoie de detalii.&lt;br /&gt;
Exista cateva lucruri diferite pe care le poti face cu iptables. In primul rand operatii cu care poti face management pe un intreg ''set de reguli''. La inceput exista trei chain-uri input, output si forward pe care nu le poti sterge.&lt;br /&gt;
*Crearea unui nou chain (-N).&lt;br /&gt;
*Stergerea unui chain gol (-X).&lt;br /&gt;
*Schimbarea politicii unuia dintre chain-urile standard (input, output si forward). (-P).&lt;br /&gt;
*Listarea regulilor dintr-un chain (-L).&lt;br /&gt;
*Stergerea tuturor regulilor dintr-un chain (-F).&lt;br /&gt;
*Readucerea la zero a contoarelor regulilor dintr-un chain (-Z).&lt;br /&gt;
*Exista si moduri de manipulare a unei singure reguli dintr-un chain:&lt;br /&gt;
*Atasarea unei noi reguli (-A).&lt;br /&gt;
*Inserarea unei noi reguli intr-o anume pozitie intr-un chain (-I).&lt;br /&gt;
*Inlocuirea unei reguli intr-o anume pozitie a unui chain (-R).&lt;br /&gt;
*Stergerea unei reguli (-D).&lt;br /&gt;
&lt;br /&gt;
===Ce vezi atunci cand porneste calculatorul===&lt;br /&gt;
Pentru moment (Linux 2.3.15), iptables este un modul numit ('iptables.o'). Va trebui sa-l inserezi in kernel inainte de a putea folosi comanda iptables. Pe viitor, va fi posibil ca el sa fie deja construit in kernel.&lt;br /&gt;
Inainte de ca orice comanda iptables sa fie rulata (ai grija: unele distributii vor rula iptables in scripturile lor de initializare), nu va exista nici o regula in cele trei chain-uri de baza ('INPUT', 'FORWARD' si 'OUTPUT'), chain-urile INPUT si OUTPUT vor avea politica setata pe ACCEPT, si chain-ul FORWARD va fi setat pe DROP (poti schimba acest lucru setand 'forward=1' in optiunile modulului iptables).&lt;br /&gt;
&lt;br /&gt;
===Operatii cu o singura regula===&lt;br /&gt;
Acestea sunt ''painea si cutitul'' unui filtru de pachete; manipularea regulilor. Cel mai des probabil ca vei folosi comenzile de atasare (-A) si stergere (-D). Celelalte (-I pentru inserare si -R pentru inlocuire) sunt simple extensii ale acestor concepte.&lt;br /&gt;
Fiecare regula specifica un set de conditii pe care trebuie sa le indeplineasca un pachet, si ce sa faca in caz ca le indeplineste (o tinta 'target'). De exemplu, vrei sa arunci toate pachetele de tip ICMP care vin de la IP-ul 127.0.0.1. Deci in acest caz conditiile noastre sunt ca protocolul trebuie sa fie ICMP si sursa de la care vin pachetele este IP-ul 127.0.0.1. tinta noastra este aruncarea lor (DROP).&lt;br /&gt;
127.0.0.1 este interfata 'loopback', pe care o ai char daca nu ai vreo legatura fizica la vreo retea. Poti folosi programul 'ping' pentru a genera asemenea pachete si a testa o astfel de regula.&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 1 packets received, 0% packet loss&lt;br /&gt;
 round-trip min/avg/max = 0.2/0.2/0.2 ms&lt;br /&gt;
 # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
 # ping -c 1 127.0.0.1&lt;br /&gt;
 PING 127.0.0.1 (127.0.0.1): 56 data bytes&lt;br /&gt;
 &lt;br /&gt;
 --- 127.0.0.1 ping statistics ---&lt;br /&gt;
 1 packets transmitted, 0 packets received, 100% packet loss&lt;br /&gt;
Poti vedea aici ca ping-ul a avut scces (prin '-c 1' i-am spus programului ping sa trimita un singur pachet).&lt;br /&gt;
Apoi atasam (-A) chain-ului 'INPUT', o regula in care specificam ca pachetele care vin de la IP-ul 127.0.0.1 ('-s 127.0.0.1') prin protocolul ICMP ('-p icmp') ar terbui sa le dam DROP ('-j DROP').&lt;br /&gt;
Apoi testam regula noastra, folosind un al doilea ping. Va fi o pauza pana cand programul renunta sa mai astepte raspunsul care nu va veni niciodata.&lt;br /&gt;
Putem sterge aceasta regula in mai multe feluri. In primul rand, pentru ca stim ca este singura regula in chain-ul input, putem folosi o stergere in care specificam pozitia reguluii:&lt;br /&gt;
 # iptables -D INPUT 1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Al doilea mod prin care putem sterge regula este sa oglindim comanda –A, inlocuind –A cu -D. Acest lucru este folositor cand avem un set complex de reguli. In acest caz folosim:&lt;br /&gt;
 # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP&lt;br /&gt;
&lt;br /&gt;
===Specificatii ale filtrarii===&lt;br /&gt;
Am vazut folosirea '-p' pentru a specifica protocolul, si '-s' pentru a specifica adresa sursa, dar sunt si alte optiuni cu care putem specifica caracteristici ale pachetelor&lt;br /&gt;
*Specificarea adresei Sursa si adresa Destinatie.&lt;br /&gt;
Sursa ('-s', '--source' or '--src') si destinatia ('-d', '--destination' or '--dst') IP-ului poate fi specificata in patru moduri. Cel mai des intalnit este folosirea numelui intreg, cum ar fi 'localhost' sau 'www.linuxhq.com'. Al doilea mod este folosirea de adrese IP cum ar fi '127.0.0.1'.&lt;br /&gt;
Al treilea si al patrulea mod este specificarea unui interval de IP-uri, cum sunt '199.95.207.0/24' sau '199.95.207.0/255.255.255.0'. Amandoua specifica orice IP cuprins intre 199.95.207.0 to 199.95.207.255 inclusiv; iar digitii dupa '/' ne spun care parti din IP-uri sunt relevante in cazul nostru. '/32' sau '/255.255.255.255' este modul standard (default). Pentru a specifica orice ip putem folosi '/0', dupa cum urmeaza:&lt;br /&gt;
 # ipchains -A input -s 0/0 -j DENY&lt;br /&gt;
Aceasta este rar folosit pentru ca efectul obtinut este la fel ca in cazul in care nu folosim de loc optiunea '-s'.&lt;br /&gt;
*Specificarea unei inversiuni&lt;br /&gt;
Multe flag-uri, incluzand optiunile '-s' and '-d' pot avea argumentele precedate de un '!' pentru a compara adrese care nu sunt echivalente cu cele date in linia de comanda. De exemplu '-s ! localhost' inseamna orice pachet care nu vine de la localhost.&lt;br /&gt;
*Specificarea Protocolului&lt;br /&gt;
Protocolul poate fi specificat cu flag-ul '-p'. Protocolul poate fi un numar (daca stii valorile numerice pentru IP) sau un nume pentru cazurile speciale de 'TCP', 'UDP' sau 'ICMP'. Cum este scris nu conteaza, asa ca 'tcp' merge la fel de bine ca si 'TCP'.&lt;br /&gt;
Numele protocolului poate fi precedat de un '!', pentru a fi inversat, such as '-p ! TCP' (expresia inseamna tot ce nu e TCP).&lt;br /&gt;
*Specificarea unei interfete&lt;br /&gt;
Optiunea '-i' (sau '--in-interface') si '-o' (sau '--out-interface') specifica numele interfetei. O interfata este un lucru fizic (modem, placa de retea etc…) prin care pachetul intra ('-i') sau prin care iese ('-o'). Poti folosi comanda&lt;br /&gt;
 # ifconfig&lt;br /&gt;
pentru a vedea interfetele care sunt active.&lt;br /&gt;
Pentru pachetele care traverseaza chain-ul INPUT nu se poate specifica o interfata de iesire, deci orice regula din acest chain care contine optiunea '-o' este inutila. Similar, pachetele care traverseaza chain-ul OUTPUT nu au interfata de intrare, deci orice regula din acest chain in care exista optiunea '-i' este inutila.&lt;br /&gt;
Doar pachetele care traverseaza chain-ul FORWARD au atat interfata de intrare cat si interfata de iesire.&lt;br /&gt;
Nu este gresit daca se specifica o interfata care pentru moment nu este activa; regula nu se va potrivi niciunui pachet pana cand interfata nu va fi activata. Acest lucru este foarte util pentru legaturi dial-up (PPP point to point) de obicei interfata ppp0.&lt;br /&gt;
Un caz special, un nume de interfata al carei string se termina cu '+' specifica toate interfetele de acelas fel (chiar daca sunt activate sau nu). De exemplu, pentru a specifica o regula care sa se potriveasca pentru toate interfetele de gen PPP, se va folosi expresia-i ppp+.&lt;br /&gt;
Numele interfetei poate fi precedat de '!', aceasta regula se va referi la pachetele care nu vin sau ies prin acea interfata.&lt;br /&gt;
*Specificarea fragmentelor&lt;br /&gt;
Uneori un pachet este prea mare ca sa incapa prin ''fir'' intreg. Cand acest lucru se intampla pachetul este divizat in fragmente, si trimis ca mai multe pachete mai mici. Calculatorul care primeste aceste fragmente le va reasambla si va forma pachetul initial.&lt;br /&gt;
Problema cu aceste pachete este ca doar primul fragment din acestea contine in header informatii despre protocol (cum ar fi TCP, UDP si ICMP) si extensiile lui, iar restul de fragmente nu contin aceste lucruri, iar daca am incerca sa ne uitam in ele ar fi imposibil.&lt;br /&gt;
Daca tu faci ''connection tracking'' sau ''NAT'', atunci toate aceste fragmente vor fi fuzionate inainte de a ajunge la ''filtrul de pachete'', deci nu trebuie sa ne facem griji despre aceste fragmente. Atltfel, poti insera in kernel modulul 'ip_defrag.o' care face acelas lucru (nota, acest lucru este permis doar daca linux-box-ul tau este singura conexiune intre cele doua retele).&lt;br /&gt;
Altfel, este foarte important sa intelegem cum sunt tratate fragmentele de catre regulile de filtrare. Orice regula care cere informatii de la pe care nu le avem nu se va potrivi, aceasta inseamna ca primul fragment (cel care are specificat in header tot ce este necesar) va fi tratat ca pe un pachet, iar cel de-al doilea si restul de fragmente nu vor fi tratate corespunzator (pentru ca header-ul lor nu contine informatiile necesare). De aceea o regula de genul ''-p TCP --sport www'' (care specifica portul sursa al unui server 'www') nu va filtra fragmente (in afara de primul). La fel se va comporta si regula opusa ''-p TCP --sport ! www''.&lt;br /&gt;
Oricum, poti face o regula special pentru cel de-al doilea si urmatoarele fragmente folosind optiunea '-f' (sau '--fragment'). Valabila este si regula care nu se aplica pentru cel de-al doilea si urmatoarele fragmente daca punem optiunea ''!'' inaintea lui '-f'.&lt;br /&gt;
De obicei se zice ca este sigur (din punct de vedere al securitatii) sa lasi al doilea si celelalte fragmente sa treaca treaca, pentru ca filtrarea afecteaza decat primul fragment, si deci pachetul nu va putea fi reasamblat in partea cealalta, dar, exista bug-uri care vor face masina sa se ''prabuseasca'' doar prin simplul fapt ca aceasta trimite fragmente. Este decizia ta.&lt;br /&gt;
Ca un exemplu, urmatoarea regula va arunca toate fragmentele care se duc la IP-ul 192.168.1.1:&lt;br /&gt;
 # iptables -A OUTPUT -f -d 192.168.1.1 -j DROP&lt;br /&gt;
*Extensii la iptables&lt;br /&gt;
Iptables este extensibil, asta insemnand ca atat kernel-ul cat si iptables se pot extinde pentru a ne asigura noi posibilitati.&lt;br /&gt;
Unele dintre aceste extensii sunt standard, si altele sunt mai mult exotice. Extensiile pot fi facute si de alti oameni si distibuite userilor.&lt;br /&gt;
Extensiile kernel-ului normal se gasesc in subdirectorul lui pentru module, cum este /lib/modules/2.3.15/net. Pe acestea trebuie sa le incarci in kernel automat pentru ca ele nu se autoincarca la cerere(Linux 2.3.15). Pe viitor ele se vor incarca automat.&lt;br /&gt;
Extensiile programului iptables sunt librarii ''sheruite'' care de obicei sunt gasite in directorul /usr/local/lib/iptables/, cu toate ca anumite distributii le pun in /lib/iptables sau /usr/lib/iptables.&lt;br /&gt;
Extensiile sunt de doua tipuri: tinte noi (new targets), si noi teste (new tests); mai jos vom vorbi despre ''noi tinte''. Anumite protocoale ofera ele noi teste: actual ele sunt TCP, UDP si ICMP cum sunt aratate mai jos.&lt;br /&gt;
Pe aceste noi teste le vei putea specifica in linia de comanda dupa optiunea '-p', care va incarca extensiile. Pentru teste noi explicite trebuie sa folosestei optiunea '-m' pentru a incarca extensia, doar dupa aceasta va fi aceasta accesibila.&lt;br /&gt;
Pentru a deschide manualul extensiei dupa ce o incarci ('-p' or '-m') foloseste optiunea '-h' sau '--help'.&lt;br /&gt;
**Extensii TCP&lt;br /&gt;
Extensiile TCP sunt incarcate automat daca este folosita comanda '--protocol tcp'. Aceastea vin cu urmatoarele optiuni (niciuna nu se refera si la fragmente, doar la pachete).&lt;br /&gt;
--tcp-flags&lt;br /&gt;
Daca dupa ele se pune (optional)'!', atunci doua stringuri te vor ajuta sa filtrezi flaguri specifice protocolului TCP. Primul string este un ''mask'': o lista de flaguri pe care vrei sao examinezi. Al doilea string iti spune pe care vrei sa le filtrezi. De exemplu:&lt;br /&gt;
 # iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY[/code]&lt;br /&gt;
Aceasta indica, ca toate flagurile trebuie examinate ('ALL' este sinonim cu 'SYN,ACK,FIN,RST,URG,PSH'), dar doar SYN si ACK vrei sa le setezi. Exista si un argument 'NONE' care inseamna nici un flag.&lt;br /&gt;
--syn&lt;br /&gt;
Urmat optional de '!', aceasta este o scurtare a comenzii'--tcp-flags SYN,RST,ACK SYN'.&lt;br /&gt;
--source-port&lt;br /&gt;
optional urmat de '!', si apoi de un singur port TCP, sau un interval de porturi. Porturile poti specificate prin numele lor, la fel ca in /etc/services, sau numerice. Intervalele sunt ori doua nume de porturi separate cu'-', sau (pentru a specifica un nr. mai mare sau egal cu portul dat) un port cu '-' inainte lui, sau (pentru a specifica un nr mai mic sau egal cu portul dat), un port precedat de'-'.&lt;br /&gt;
--sport&lt;br /&gt;
este sinonim cu '--source-port'.&lt;br /&gt;
--destination-port&lt;br /&gt;
and&lt;br /&gt;
--dport&lt;br /&gt;
sunt la fel ca si mai sus, numai ca ele specifica destinatia in loc de sursa portului care ne intereseaza sa-l filtram.&lt;br /&gt;
--tcp-option&lt;br /&gt;
urmat oprional de '!' siun numar, se refera la un pachet TCP care este egal cu acel numar. Un pachet care nu are un header TCP complet este aruncat (DROP) automat daca i se incearca examinarea optiunilor TCP.&lt;br /&gt;
O explicatie a flagurilor TCP&lt;br /&gt;
Este util sa permitem conexiuni TCP intr-o directie, dar nu si in cealalta. De exemplu, ai vrea sa se poata face conexiuni catre un server WWW exterior, dar sa nu existe conexiuni de la acel server la tine.&lt;br /&gt;
Te poti gandi sa blochezi pachetele care vin de la acel server. Dar din nefericire, ca o conexiune TCP sa mearga trebuie sa existe trafic in ambele directii.&lt;br /&gt;
Solutia este sa blochezi doar pachetele care cer ca o conexiune sa fi stabilita. Aceste pachete se numesc SYN (ok, tehnic ele sunt pachete cu flagul SYN setat, si flagurile FIN si ACK sunt sterse, dar noi le numim pe scurt pachete SYN). Blocand doar aceste pachete putem opri cererile de conexiuni si astfel niciuna nu poate fi facuta din exterior.&lt;br /&gt;
Flagul '--syn' este folosit pentru aceasta: este valid doar pentru regulile in care li se specifica ca protocol TCP-ul. Ca exemplu, pentru a specifica incercari de conexiuni de la IP-ul 192.168.1.1 se foloseste:&lt;br /&gt;
-p TCP -s 192.168.1.1 --syn&lt;br /&gt;
Acest flag poate fi inversat daca este precedat de un '!', aceasta inseamna orice pachet inafara de cele initiatoare de conexiuni TCP.&lt;br /&gt;
**Extensii UDP&lt;br /&gt;
Aceste extensii sunt incarcate automat daca este specificat protocolul UDP '--protocol udp'. Aici avem optiunile '--source-port', '--sport', '--destination-port' si '--dport' detaliate mai sus la protocolul TCP.&lt;br /&gt;
Extensii ICMP&lt;br /&gt;
Aceasta extensi este incarcata automat daca se specifica '--protocol icmp'. Aceasta ne da o singura optiune:&lt;br /&gt;
--icmp-type&lt;br /&gt;
urmat optional de '!', atunci un unme tip icmp (ex 'host-unreachable'), sau un tip numeric (ex. '3'), sau numeric si cod separat de'/' (ex. '3/3'). O lista de nume tip icmp se poate optine cu comanda '-p icmp --help'.&lt;br /&gt;
Alte extensii&lt;br /&gt;
Celelalte doua extensii sunt extensii demonstrative, care (daca sunt instalate) pot fi ''aduse la viata'' cu optiunea '-m'.&lt;br /&gt;
mac&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m mac' sau '--match mac'. Este folosit pentru a filtra pachetele dupa adresa Ethernet (MAC), si este folositoare doar la regulile din chain-urile INPUT si FORWARD. De aduce o singura optiune:&lt;br /&gt;
--mac-source&lt;br /&gt;
optional urmata de '!', apoi o adresa ethernet scrisa in hexazecimale separate de '':'', ex '--mac-source 00:60:08:91:CC:B7'.&lt;br /&gt;
limit&lt;br /&gt;
acest modul trebuie explicit specificat cu '-m limit' sau '--match limit'. Este folosit pentru a limita rata de pachete acceptate. Unitatea de masura este numere de pachete pe secunda (default 3 pachete pe ora, cu o rafala de 5). Aceasta ne aduce doua argumente optionale:&lt;br /&gt;
--limit&lt;br /&gt;
urmat de un numar; specifica numarul medie maxim de pachete pe secunda care sunt lasate sa treaca. Numarul poate unitati explicite, folosind '/second', '/minute', '/hour' or '/day', sau parti din ele (deci '5/second' este la fel ca '5/s').&lt;br /&gt;
--limit-burst&lt;br /&gt;
urmata de un numar, defineste lungimea rafalei de pachete acceptate dupa care intra in actiune limita de mai sus.&lt;br /&gt;
Aceasta optiune poate fi folosita impreuna cu tinta ''LOG'' pentru a face ''rate-limited logging''. Prentru a intelege cum functioneaza, hai sa ne uitam la urmatoarea regula, care logheaza pachetele care au limita ''default'':&lt;br /&gt;
 # iptables -A FORWARD -m limit -j LOG&lt;br /&gt;
Prima oara cand regula este indeplinita de un pachet, acesta va fi logat; de fapt, pentru ca rafala este de 5, primele cinci pachete vor fi logate. Dupa aceea, vor mai trece ica douazeci de minute pana cand urmatorul pachet va fi logat de la regula aceasta, netinand cont de cate pachete ajung la ea. Deasemenea, fiecare douazeci de minute care trec fara ca un pachet sa indeplineasca regula , o unitate din rafala va fi recapatata, daca nici un pachet nu se loveste de regula timp de 100 de minute rafala va reveni la 5; la fel ca la inceput.&lt;br /&gt;
Nu poti creea o regula a carei interval de timp de umplere a rafalei sa depaseasca 59 de ore, deci daca faci o regula care sa se reincarce o data pe zi, rafala trebie sa fie mai mica de 3.&lt;br /&gt;
unclean&lt;br /&gt;
Acest modul trebuie explicit specificat cu '-m unclean sau '--match unclean'. Acesta face analize aleatorii asupra integritatii pachetelor. Acesta nu trebuie folosit ca o optiune pentru securitate (probabil ca va inrautatii lucrurile, pentru ca s-ar putea ca sa aiba bug-uri). Nu vine cu nici o optiune.&lt;br /&gt;
&lt;br /&gt;
===Specificarea tintelor===&lt;br /&gt;
Acum stim cum sa examinam un pachet, trebuie sa stim ce sa facem cu pachetele care se potrivesc regulilor noastre. Aceasta se numeste ''Tinta regulii'' (rule's target).&lt;br /&gt;
Exista doua tinte foarte simple: DROP (arunca) si ACCEPT(accepta). Deja le stim pe acestea. Daca pachetul indeplineste regula si tinta ei este una din cele doua, nu vor mai fi consultate alte reguli: soarta pachetului a fost decisa.&lt;br /&gt;
There are two types of targets other than the built-in ones: extensions and user-defined chains.&lt;br /&gt;
Chain-uri definite de utilizator (User-defined chains)&lt;br /&gt;
O puternica abilitate pe care iptables a mostenit-o de la ipchains este abilitatea de a creea chain-uri definite de utilizator (adica alte chain-uri inafara de cele trei de baza INPUT, FORWARD si OUTPUT).&lt;br /&gt;
Cand un pachet se potriveste unei reguli a carei tinta este un chain definit de utilizator, pachetul incepe sa confrunte reguluile sin chain-ul definit de utilizator. Daca acel chain nu decide soarta pachetului, adica a parcurs toate regulile din acel chain definit de utilizator, atunci pachetul incepe sa confrunte regula imegiat urmatoare regulei a carei tinta a fost chainul definit de utilizator.&lt;br /&gt;
Din nou este vremea pentru ASCII art. Sa zicem ca avem doua chain-uri Consider two (prostute): INPUT (chain-ul de baza) si test (un chain definit de utilizator cu optiunea ''-N''). CLIC&lt;br /&gt;
&lt;br /&gt;
Chain-urile definite de utilizator pot sari catre alte chain-uri definite de utilizator (dar nu au voie sa fac bucle inchise: pachetele care intra in bucle inchise vor fi aruncate).&lt;br /&gt;
Extensia: New Targets&lt;br /&gt;
Clealat tip de tinta este o extensie. Aceastea constau intr-un modul pentru kernel, care ne asigura noi optiuni in linia de comanda. Exista cateva extensii in distributia default a pachetului netfilter:&lt;br /&gt;
*LOG&lt;br /&gt;
Acest modul logheaza pachetele care indeplinesc o anumita regula a carei tinta este ''LOG''. Acesta vine cu urmatoarele optiuni:&lt;br /&gt;
--log-level&lt;br /&gt;
Urmata de un nume sau numar. Numele sunt (case-insensitive) 'debug', 'info', 'notice', 'warning', 'err', 'crit', 'alert' si 'emerg', care corespund numerelor de la 7 la 0. Uta-te la ''man page-ul'' pentru syslog.conf pentru o explicatie a acestor nivele.&lt;br /&gt;
--log-prefix&lt;br /&gt;
Urmat de un sting de maxim 14 caractere, acest mesaj este trimis la inceputul logului pentru a fi unic.&lt;br /&gt;
Acest modul este forte util dupa o tinta care limiteaza pentru a nu-ti inunda (food) logurile.&lt;br /&gt;
*REJECT&lt;br /&gt;
Acest modul are acelas efect ca modulul 'DROP', numai ca expeditorului ii este trimis un mesaj de eroare de tip ICMP 'port unreachable'. Nota: mesajul de eroare de tip ICMP nu este trimis daca (vezi RFC 1122):&lt;br /&gt;
Pachetul filtrat era chiar el un mesaj de eroare de tip ICMP, sau un tip necunoscut de ICMP.&lt;br /&gt;
Pachetul filtrat nu era primul fragment dintr-un lant de fragmente.&lt;br /&gt;
Am trimis prea multe mesaje de eroare de tip ICMP la acea destinatie intr-un anumit timp.&lt;br /&gt;
Tinte speciale&lt;br /&gt;
Exista doua tinte speciale care vin o dat cu distributia: RETURN si QUEUE.&lt;br /&gt;
*RETURN are acelas efect ca si cum ar sari de la sfarsitul unui chain: pentru unul dintre cele trei chain-uri de baza, soarta pachetului va fi decisa de politica acestuia. Pentru o regula dintr-un chain definit de utilizator, traversarea continua exact dupa regula de la care a fost aruncat pachetul in chain-ul definit de utilizator. Daca o regula (nu este neaparat sa fie ultima din chain) dintr-un chain definit de utilizator are tinta RETURN si aceasta se potriveste unui pachet, aceasta il va trimite inapoi la chainul de unde a venit, cu mentiunea ca este respectata traversearea regulilor, adica la regula exact urmatoare celei care a trimis pachetul in chain-ul definit de utilizator.&lt;br /&gt;
*QUEUE este o tinta speciala, care ''pastreaza'' pachetul pentru procesarea facuta de useri. Daca pachetul nu este asteptat de vreo aplicatie acesta va fi aruncat.&lt;br /&gt;
&lt;br /&gt;
===Operatii cu un Chain intreg===&lt;br /&gt;
O abilitate foarte utila a programului iptables este gruparea regurilor in chainuri (seturi de reguli). Poti denumi chainurile definite de utilizator cum vrei, dar este rcomandat sa le denumesti cu caractere mici pentru a nu le confunda cu cele trei chainuri de baza; numele acestora poate sa fie maxim din 16 litere.&lt;br /&gt;
*Crearea unui nou chain&lt;br /&gt;
Hai sa creem un nou chain. Pentru ca eu sunt un tip cu imaginatie am sa-l numesc test. Vom folosi optiunile '-N' sau '--new-chain':&lt;br /&gt;
 # iptables -N test&lt;br /&gt;
Este chiar atat de simplu. Acum poti pune reguli in el dupa cum a fost aratat mai sus.&lt;br /&gt;
*Stergerea unui Chain&lt;br /&gt;
Stergerea unui chain este la fel de simplu, folosind optiunea '-X' sau '--delete-chain'. De ce '-X'? Pai…, toate literele frumoase au fost luate deja.&lt;br /&gt;
 # iptables -X test&lt;br /&gt;
Exista cateva restrictii cand stergem un chain: acesta trebuie sa fie gol (vezi golirea unui chain mai jos) si nu trebuie sa fie tinta vreunei reguli. Chainurile de baza nu pot fi sterse.&lt;br /&gt;
Daca nu se specifica numele chainului de sters, atunci toate chain-urile definite de utilizator vor fi sterse, daca este posibil.&lt;br /&gt;
*Golirea unui Chain&lt;br /&gt;
Exista un mod simplu prin care se poate goli un cahin de toate regulile care exista in el, folosind comanda '-F' (sau '--flush').&lt;br /&gt;
 # ipchains -F forward&lt;br /&gt;
Daca nu se specifica chain-ul atunci toate chainurile vor fi golite.&lt;br /&gt;
*Listarea unui chain&lt;br /&gt;
Poti vedea toate regulile existente intr-un chain cu comanda '-L'.&lt;br /&gt;
Daca nu este specificat numele chain-ului atunci sunt listate toate regulile existente in ''filtrul de pachete''.&lt;br /&gt;
Exista trei optiuni care acompaniaza comanda '-L'. Optiunea '-n' (numeric) pentru ca ea previne ca iptables sa incerce sa caute adresa IP, care (daca folosesti DNS ca majoritatea oamenilor) va cauza delay-uri foarte mari in caz ca DNS-ul nu este setat cum trebuie, sau daca filtrezi cererile de DNS (Domain Name Server).&lt;br /&gt;
Optiunea '-v' va arata toate detaliile unei raguli, cum sunt pachetele si contuarele de biti, comparatiile TOS, si interfetele. Altfel aceste valori sunt omise.&lt;br /&gt;
Nota: pachetele si contoarele de biti sunt afisate folosin sufixele 'K', 'M' sau 'G' pentru 1000, 1,000,000 si respectiv 1,000,000,000. Folosind optiunea '-x' (expand numbers) vor fi aratate ca numere netinand cont de cat de mari sunt acestea.&lt;br /&gt;
*Resetarea (Zeroing) Contoarelor&lt;br /&gt;
Este util sa poti reseta contoarele. Acest lucru poate fi facut cu optiunea '-Z' (sau '--zero')&lt;br /&gt;
Problema cu acest lucru este ca, uneori, trebuie sa stii valorile contoarelor imediat inainte de a fi aduse la zero. In exemplul de mai sus, anumite pachete pot trece in dupa ce folosesti optiunea '-L' si pana folosesti optiunea '-Z'. Pentru acest motiv, poti folosi optiunile '-L' si '-Z' impreuna, pentru a reseta contuarele in timp ce le vizualizezi.&lt;br /&gt;
*Setarea politicii&lt;br /&gt;
Doar chain-urile de baza (INPUT, OUTPUT and FORWARD) au o politica, pentru ca daca un pachete este confruntat cu un regulile dintr-un chain definit de utilizator si inca nu i se decide soarta, acesta isi continua drumul intr-un chain de baza.&lt;br /&gt;
Politica poate fi ACCEPT(accepta) sau DROP (arunca).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Traducerea si adaptarea a fost facuta (initial) de Razvan Turtureanu (razvan@upb.ro)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Firewall]]&lt;/div&gt;</summary>
		<author><name>Raptor</name></author>	</entry>

	</feed>