by dahn 2005
Slackware Linux Essentials
Alan Hicks • Chris Lumens • David Cantrell Logan Johnson
by Dahn 2005
Contributii la traducere Prefata de Andrei Florian Staicu Capitolul 1 de skills Capitolul 2 de Andrei Florian Staicu Capitolul 3 de Andrei Florian Staicu Capitolul 4 de skills Capitolul 5 de bogdan Capitolul 6 de Andrei Florian Staicu Capitolul 7 de Andrei Florian Staicu Capitolul 8 de Claudiu Tanaselia Capitolul 9 de Claudiu Tanaselia Capitolul 10 de Andrei Florian Staicu Capitolul 11 de Claudiu Tanaselia Capitolul 12 de Andrei Florian Staicu Capitolul 13 de Catalin Nicolescu si skills Capitolul 14 de Paul Irofti Capitolul 15 de Stefan-Codrut Marinescu Capitolul 16 de Paul Irofti Capitolul 17 de Stefan-Codrut Marinescu Capitolul 18 de Claudiu Tanaselia Capitolul 19 de Claudiu Tanaselia Glosar de arny Corectura lupalb, arny
Documentul nu este pentru comercializare. Acest document este sub licenta GPL(General Public License). O copie a acestei licente poate fi gasita la Anexa A. Linux® este o marca inregistrata Linus Torvalds. Slackware® este o marca inregistrata BSDi si Patrick Volkerding. Materialul prezent a fost preluat de pe www.slackware.com.ro/carte/. Contributia la traducerea cartii este prezentata mai sus. Tehnoredactare: Dahn Coperta: Pansy Copyright © 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Slackware Linux, Inc.
Cuprins Prefata / 11 1 O Introducere in Slackware Linux / 19 1.1 Ce este Linux? / 20 1.1.1 Un cuvant despre GNU / 20 1.2 Ce este Slackware? / 21 1.3 Open Source si Free Software / 22 2 Ajutor / 25 2.1 Ajutor de la sistem / 26 2.1.1 man / 26 2.1.2 Directorul /usr/doc / 27 2.1.3 HOWTOs si mini-HOWTOs / 28 2.2 Ajutor online / 28 2.2.1 Forumul si pagina oficiala / 29 2.2.2 Suport e-mail / 29 2.2.3 Forumul si pagina neoficiala / 30 3 Instalare / 33 3.1 Obtinerea Slackware / 34 3.1.1 Setul oficial de cd-uri si cutii / 34 3.1.2 Via in internet / 34 3.2 Cerinte sistem / 35 3.2.1 Seriile software / 36 3.2.2 Metode de instalare / 37 3.2.3 Discul de boot / 38 3.2.4 Discul de root / 38 3.2.5 Disc suplementar / 38 3.2.6 Crearea discurilor / 39 3.3 Partitionarea / 39 3.4 Programul setup / 42 3.4.1 Help / 43 3.4.2 Keymap / 43 3.4.3 Addswap / 44 3.4.4 Target / 44 3.4.5 Source / 45 3.4.6 Select / 46
3
3.4.7 Install / 46 3.4.8 Configure / 48 4 Configurarea sistemului / 53 4.1 O privire de ansamblu asupra sistemului / 54 4.1.1 Organizarea fisierelor / 54 4.1.2 Localizarea fisierelor / 56 4.1.3 Directorul /etc/rc.d / 58 4.2 Alegerea kernel-ului / 61 4.2.1 Directorul /kernels de pe CD-ROM-ul Slackware / 61 4.2.2 Copilarea unui kernel din surse / 62 4.2.3 Folosirea modulelor kernel-ului / 65 5 Configurarea retelei / 67 5.1 Introdurece in netconfig / 68 5.2 Configurarea retelei(hardware) / 68 5.2.1 Incarcarea modulelor de retea / 69 5.2.2 Placi de retea (10/100/1000Base-T si Base-2) / 69 5.2.3 Modem-uri / 70 5.2.4 PCMCIA / 71 5.3 Configurarea TCP/IP / 71 5.3.1 DHCP / 72 5.3.2 IP static / 73 5.3.3 /etc/rc.d/rc.inet1.conf / 73 5.3.4 /etc/resolv.conf / 74 5.3.5 /etc/hosts / 75 5.4 PPP / 75 5.4.1 pppsetup / 75 5.4.2 /etc/ppp / 76 5.5 Wireless / 76 5.5.1 Suport hardware / 77 5.5.2 Configurarea setarilor Wireless / 77 5.5.3 Configurarea retelei / 78 5.6 Network File Systems / 79 5.6.1 SMB/Samba/CIFS / 79 5.6.2 Network File System (NFS) / 81 6 Configurarea X / 83 6.1 xorgconfig / 84 6.2 xorgsetup / 87 6.3 xinitrc / 87
4
6.4 xwmconfig / 89 6.5 xdm / 91 7 Initializare (booting) / 93 7.1 LILO / 94 7.2 LOADLIN / 96 7.3 Dual booting / 97 7.3.1 Windows / 98 7.3.2 Linux / 101 8 Shell-ul / 103 8.1 Utilizatorii / 104 8.1.1 Logarea / 104 8.1.2 Root: super utilizatorul / 104 8.2 Linia de comanda / 105 8.2.1 Rularea programelor / 105 8.2.2 Potrivirea caracterelor / 106 8.2.3 Redirectionarea Intrarii/Iesirii si Intubarea / 107 8.3 Shell-ul Bourne Again (bash) / 108 8.3.1 Variabile de mediu / 108 8.3.2 Completarea tab / 110 8.4 Terminale virtuale / 110 8.4.1 Screen / 111 9 Structura sistemului de fisiere / 113 9.1 Apartenenta / 114 9.2 Permisiuni / 115 9.3 Link-uri / 118 9.4 Montarea dispozitivelor / 119 9.4.1 fstab / 119 9.4.2 mount si umount / 120 9.5 NFS Mounts / 121 10 Manipularea fisierelor si a directoarelor / 123 10.1 Navigarea : ls, cd, si pwd / 124 10.1.1 ls / 124 10.1.2 cd / 125 10.1.3 pwd / 126 10.2 Pagere: more, less, si most / 126 10.2.1 more / 126 10.2.2 less / 126 10.2.3 most / 127
5
10.3 Iesire simpla: cat si echo / 127 10.3.1 cat / 127 10.3.2 echo / 128 10.4 Creare: touch si mkdir / 128 10.4.1 touch / 128 10.4.2 mkdir / 129 10.5 Copiere si mutare / 129 10.5.1 cp / 129 10.5.2 mv / 130 10.6 Stergere: rm si rmdir / 130 10.6.1 rm / 130 10.6.2 rmdir / 131 10.7 Legaturi intre fisiere cu ln / 131 11 Controlul proceselor / 133 11.1 Backgrounding / 134 11.2 Foregrounding / 134 11.3 ps / 135 11.4 kill / 139 11.5 top / 141 12 Administrarea necesara a sistemului / 145 12.1 Utilizatori si grupuri / 146 12.1.1 Scripturi furnizate / 146 12.1.2 Schimbarea parolelor / 150 12.1.3 Schimbarea informatiei utilizatorului / 151 12.2 Utilizatori si grupuri, varianta grea / 151 12.3 Oprirea corespunzatoare a calculatorului / 154 13 Comenzi primare de retea / 157 13.1 ping / 158 13.2 traceroute / 158 13.3 DNS Tools / 159 13.3.1 host / 159 13.3.2 nslookup / 160 13.3.3 dig / 160 13.4 finger / 161 13.5 telnet / 162 13.5.1 Alte moduri de a utiliza telnet / 163 13.6 Shell-ul sigur / 163 13.7 email / 164
6
13.7.1 pine / 164 13.7.2 elm / 165 13.7.3 mutt / 166 13.7.4 nail / 167 13.8 Navigatoare / 168 13.8.1 lynx / 168 13.8.2 links / 169 13.8.3 wget / 169 13.9 Clienti FTP / 170 13.9.1 ftp / 171 13.9.2 ncftp / 172 13.10 Comunicarea cu alti oameni / 173 13.10.1 wall / 173 13.10.2 talk / 174 13.10.3 ytalk / 175 14 Securitatea / 177 14.1 Dezactivarea servicilor / 178 14.1.1 Servicii pornite de inetd / 178 14.1.2 Servicii pornite de scripturi / 178 14.2 Controlarea accesului bazat pe host-uri / 179 14.2.1 iptables / 179 14.2.2 tcpwrappers / 181 14.3 Mentinerea la curent / 182 14.3.1 Lista de mail-uri slackware-security / 182 14.3.2 Directorul /patches / 182 15 Fisiere Arhiva / 185 15.1 gzip / 186 15.2 bzip2 / 187 15.3 tar / 187 15.4 zip / 190 16 Vi / 191 16.1 Pornirea programului vi / 192 16.2 Moduri / 193 16.2.1 Modul de comanda / 194 16.2.2 Modul de inserare / 195 16.3 Deschiderea fisierelor / 196 16.4 Salvarea fisierelor / 196 16.5 Iesirea din programul vi / 197
7
16.6 Configurarea vi / 197 16.7 Tastele Vi / 198 17 Emacs / 201 17.1 Pornirea programului emacs / 203 17.1.1 Taste / 203 17.2 Buffere / 204 17.3 Moduri / 205 17.3.1 Deschiderea fisierelor / 205 17.4 Editare de baza / 206 17.5 Salvarea fisierelor / 208 17.5.1 Iesirea din Emacs / 208 18 Administrarea pachetelor Slackware / 209 18.1 Formatul pachetelor Slackware / 210 18.2 Utilitare pentru pachete / 210 18.2.1 pkgtool / 210 18.2.2 installpkg / 212 18.2.3 removepkg / 213 18.2.4 upgradepkg / 213 18.2.5 rpm2tgz/rpm2targz / 214 18.3 Crearea pachetelor / 214 18.3.1 explodepkg / 215 18.3.2 makepkg / 215 18.3.3 Scrip-uri SlackBuild / 215 18.4 Crearea Etichetelor si a Fisierelor Eticheta (pentru setup) / 216 19 ZipSlack / 217 19.1 Ce este ZipSlack? / 218 19.1.1 Avantaje / 218 19.1.2 Dezavantaje / 218 19.2 Obtinere ZipSlack / 218 19.2.1 Instalare / 219 19.3 Initializarea ZipSlack / 219 Glosar / 221 A. The GNU General Public License / 229 A.1. Preamble / 229 A.2. TERMS AND CONDITIONS / 230 A.3. How to Apply These Terms to Your New Programs / 234
8
Lista tabelelor 2-1. Sectiunea paginilor de manual / 26 3-1. Informatii de contact Slackware Linux Inc. / 34 3-2. Cerinte sistem / 35 3-3. Serii de soft / 36 9-1. Octal Permission Values / 115 13-1. Comenzi ftp / 171 16-1. Mutari / 198 16-2. Editare / 199 16-3. Cautare / 199 16-4. Salvare si iesire / 199 17-1. Comenzi de baza Emacs / 206 18-1. Optiuni installpkg / 212 18-2. Optiuni removepkg / 213 18-3. Optiuni Tagfile / 216 Capturi 4-1. Meniul de configurare al kernel-ului / 63 6-1. Configurarea mouse-ului xorgconfig / 84 6-2. Sincronizarea orizontala xorgconfig / 85 6-3. Sincronizarea verticala xorgconfig / 86 6-4. Placa video xorgconfig / 86 6-5. Configurarea desktop-ului cu xorgconfig / 90 7-1. liloconfig / 94 7-2. Meniul expert liloconfig / 96 11-1. Iesirea standard ps / 136 13-1. Telnet la un webserver / 163 13-2. Meniul principal Pine / 165 13-3. Fereastra principala Elm / 166 13-4. Fereastra principala Mutt / 167 13-5. Pagina de start Lynx / 168 13-6. Links cu meniul File deschis / 169 13-7. Doi utilizatori intr-o sesiune talk / 174 13-8. Doi utilizatori intr-o sesiune ytalk / 175 16-1. O sesiune vi / 192 18-1. Meniul principal Pkgtool / 211 18-2. Modul de vizualizare Pkgtool / 211 Lista de exemple 8-1. Afisarea variabilelor cu set / 109
9
Prefata Audienta Tinta Sistemul de operare Slackware Linux este o platforma puternica pentru calculatoarele bazate pe tehnologia Intel. Este proiectat pentru a fi stabil, sigur si functional, atat ca server de varf cat si ca statie de lucru puternica. Aceasta carte a fost conceputa sa te ajute sa incepi sa utilizezi sistemul de operare Slackware Linux. Nu vrem sa acoperim absolut toate subiectele, in schimb vrem sa aratam posibilitatile lui, sa sa iti oferim cateva cunostinte de baza despre sistem. Pe masura ce vei castiga experienta cu Slackware Linux, speram ca vei gasi in acesta carte un ajutor la indemana. De asemenea speram ca o vei imprumuta prietenilor tai cand vor veni sa intrebe despre acel sistem de operare “marfa” Slackware Linux pe care il folosesti. Desi aceasta carte nu este un roman care sa te faca sa fii cu sufletul la gura, am incercat sa o facem cat mai distractiva posibil. Cu putin noroc o sa obtinem un contract de scenarizare. Desigur, speram ca vei reusi sa inveti ceva de aici si ca o vei gasi folositoare. Si acum, sa ridicam cortina.
11
Modificari fata de Prima Editie Aceasta a doua editie reprezinta punctul culminant al multor ani de munca a membrilor dedicati ai Proiectului Slackware Linux. Urmatoarele sunt shimbari majore in aceasta noua editie: • Capitolul 3, Instalare, a fost modificat cu noi capturi de ecran ale
programului de instalare si reflecta schimbarile in setul de discuri si instalarea de pe CD. • Capitolul 4, Configurarea Sistemului, a fost adus la zi cu noi informatii
despre kernelul Linux 2.6.x. • Capitolul 5, Configurarea Retelei, a fost extins cu noi explicatii despre
Samba, NFS si DHCP. O sectiune despre configurarea retelelor fara fir a fost adaugata de asemenea. Acest capitol reflecta acum shimbarile majore in modul in care Slackware trateaza configurarea retelei. • Capitolul 6, Sistemul X Window a fost rescris substantial pentru
sistemele bazate pe Xorg. Capitolul acopera acum si managerul grafic de login xdm. • Capitolul 13, Comenzi Primare de Retea, a fost imbunatatit cu informatii
aditionale despre utilitarele de retea. • Capitolul 14, Securitatea, este un capitol nou in aceasta editie. Explica
modul in care sa mentii Slackware Linux un sistem sigur. • Capitolul 17, Emacs, este un nou capitol in acesta editie. Explica modul
de folosire al Emacs, un puternic editor pentru Unix. • Capitolul 18, Administrarea Pachetelor, a fost adus la zi cu informatii
despre scripturile SlackBuild. • Mai sunt multe alte schimbari, atat majore cat si minore, care reflecta
schimbarile in Slackware pe masura ce acesta s-a maturizat.
12
Organizarea Acestei Carti Capitolul 1, Introducere Ofera material introductiv despre Linux, Slackware si Open Source si Miscarea Free Software Capitolul 2, Ajutor Descrie resursele disponibile pentru ajutor pe un sistem Slackware Linux si online. Capitolul 3, Instalare Descrie pas cu pas procesul de instalare, folosind capturi de ecran pentru a oferi un ghid ilustrativ. Capitolul 4, Configurarea Sistemului Descrie fisierele de configurare importante si recompilarea kernel-ului. Capitolul 5, Configurarea Retelei Descrie modul de conectare a unei masini Slackware Linux la o retea. Acopera TCP/IP, PPP/dialup, retele fara fir si multe altele. Capitolul 6, Configurarea X Descrie modul de configurare si folosire a sistemului grafic X Window in Slackware. Capitolul 7, Initializare Descrie procesul prin care un calculator porneste Slackware Linux. De asemenea, acopera modul de initializare dubla cu sistemele de operare Microsoft Windows. Capitolul 8, Shell-ul Descrie puternica interfata a liniei de comanda din Linux. Capitolul 9, Structura Sistemului de Fisiere Descrie structura sistemului de fisiere, incluzand apartenente, permisiuni si legaturi. Capitolul 10, Manipularea Fisierelor si a Directoarelor Descrie comenzile folosite pentru manipularea fisierelor si directoarelor din interfata liniei de comanda. Capitolul 11, Controlul Proceselor Descrie puternicul sistem Linux pentru controlul proceselor, folosit pentru administrarea rularii concomitente a mai multor aplicatii..
13
Capitolul 12, Administrarea Necesara a Sistemului Descrie administrarea de baza a sistemului, cum ar fi adaugarea si stergerea utilizatorilor, oprirea sistemului in mod corect si multe altele. Capitolul 13, Comenzi Primare de Retea Descrie colectia de clienti de retea inclusi in Slackware. Capitolul 14, Securitate Descrie multe utilitare disponibile pentru mentinerea securitatii sistemului, incluzand iptables si tcpwrappers. Capitolul 15, Fisiere Arhiva Descrie diversele utilitare disponibile pentru compresie si arhivare in Linux. Capitolul 16, vi Descrie puternicul editor text vi . Capitolul 17, Emacs Descrie puternicul editor text Emacs. Capitolul 18, Administrarea Pachetelor Slackware Descrie utilitarele pentru pachete Slackware, precum si procesul folosit pentru crearea de pachete si fisiere eticheta personale. Capitolul 19, ZipSlack Descrie versiunea de Linux ZipSlack, ce poate fi folosita din Windows fara a necesita o instalare prealabila. Appendix A, Licenta Generala de Uz Public GNU Descrie termenii licentei sub care Slackware Linux si aceasta carte pot fi copiate si distribuite.
14
Conventii utilizate in aceasta carte. Pentru a oferi un text consistent si usor de citit, un numar de conventii sunt folosite in intreaga carte. Conventii de Scriere Italic Fontul italic este folosit pentru comenzi, pentru evidentierea textului si pentru prima utilizare a termenilor tehnici. Monospace Fontul monospaced este folosit pentru mesaje de eroare, comenzi, variabile de mediu, nume de porturi, nume de gazde, nume de utilizatori, nume de grupuri, nume de device-uri, variabile si fragmente de cod. Bold Fontul bold este folosit pentru datele introduse de utilizator in exemple. Date Utilizator Tastele sunt scrise cu bold pentru a fi evidentiate fata de restul textului. Combinatiile de taste care trebuie apasate simultan sunt scrise cu `+' intre taste, cum ar fi: Ctrl+Alt+Del
Inseamna ca utilizatorul trebuie sa apese Ctrl, Alt, si Del in acelasi timp. Tastele care trebuie apasate secvential sunt separate cu virgula, de exemplu: Ctrl+X, Ctrl+S
Inseamna ca utilizatorul trebuie sa apese tasteleCtrl si X iar apoi tastele Ctrl si S simultan.
15
Exemple Exemplele care incep cu E:\> indica o comanda MS-DOS®. Daca nu se specifica altceva, aceste comenzi le vei rula de la o fereastra “Command Prompt” intr-un mediu modern Microsoft® Windows®. D:\> rawrite a: bare.i
Exemplele care incep cu # indica o comanda care trebuie introdusa in Slackware ca superutilizator. Te poti loga ca root pentru a scrie comanda, sau te poti loga cu contul tau normal si sa folosesti su(1) pentru a castiga drepturi de superutilizator. # dd if=bare.i of=/dev/fd0
Exemplele care incep cu % indica o comanda care trebuie invocata dintr-un cont normal de utilizator. Daca nu se specifica altceva, sintaxa shell C este folosita pentru variabile de mediu si alte comenzi shell. % top
16
Multumiri Acest proiect reprezina acumularea lunilor de munca a mai multor persoane dedicate. Eu nu as fi putut de unul singur sa produc acesta munca din nimic. Multi oameni merita multimirile noastra pentru actele lor altruiste: Keith Keller pentru munca lui despre retelele fara fir, Joost Kremers pentru faptul ca a scris de unul singur sectiunea emacs, Simon Williams pentru capitolul de securitate, Jurgen Phillippaerts pentru comenzile de baza de retea, Cibao Cu Ali G Colibri pentru inspiratia oferita si pentru un un sut in fund. Nenumarate alte sugestii si corectii. O lista completa ii include pe: Jacob Anhoej, John Yast, Sally Welch, Morgan Landry si Charlie Law. As dori de asemean sa-i multumesc atat lui Keith Keller pentru gazduirea listei de mail pentru acest proiect, cat si lui Carl Inglis pentru gazduirea initiala a paginii web. In cele din urma, dar nu la sfarsit, as dori sa-i multumesc lui Patrick J. Volkerding pentru Slackware Linux si lui David Cantrell, Logan Johnson si Chris Lumens pentru Slackware Linux Essentials Editia Intai. Fara structura lor initiala, nimic dintre acestea nu s-ar fi intamplat. Multi altii au contribuit in moduri mai mici sau mai mari la acest proiect si nu vor fi trecuti aici. Sper sa ma ierte pentru memoria mea slaba. Alan Hicks, May 2005
17
Capitolul 1
O introducere in Slackware Linux 1.1 Ce este Linux? 1.2 Ce este Slackware? 1.3 Open Source si Free Software
19
Slackware Linux Essentials
1.1 Ce este Linux? Linus Torvalds a inceput lucrul la Linux, un kernel sistem de operare, ca si un proiect personal in anul 1991. A inceput proiectul pentru ca vroia sa ruleze un sistem de operare bazat pe Unix fara a cheltui o suma mare de bani. In plus, el vroia sa invete pe de rost functiile procesorului 386. Linux a fost facut public gratuit astfel incat oricine putea sa il studieze si sa ii aduca imbunatatiri sub Licenta Generala Publica. (Vezi Sectiunea 1.3 si Anexa A). Azi, Linux a ajuns sa ocupe un rol important pe piata sistemelor de operare. A fost portat sa ruleze pe o varietate de sisteme cu diferite arhitecturi, printre care Alpha de la HP/Compaq, SPARC si UltraSPARC de la Sun si chipurile PowerPC de la Motorola (prin calculatoarele Apple Macintosh si IBM RS/6000.) Sute, daca nu mii, de programatori de pe tot mapamondul ajuta acum la dezvoltarea Linux. Ruleaza programe ca Sendmail, Apache si BIND, care sunt programe foarte populare folosite pentru rularea serverelor Internet. Este important de tinut minte ca termenul Linux se refera de fapt doar la kernel - miezul sistemului de operare. Acest miez este responsabil cu controlarea diverselor componente ale calculatorului cum ar fi procesorul, memoria, unitatile hard si perifericele. Asta este tot ceea ce face Linux de fapt: controleaza operatiunile calculatorului tau si se asigura ca toate programele ruleaza corespunzator. Diferite companii si indivizi impacheteaza kernel-ul Linux impreuna cu diferite programe pentru crearea unui sistem de operare. Numim fiecare pachet o distributie Linux. 1.1.1. Un cuvant despre GNU Proiectul kernel-ului Linux a inceput ca un efort pe cont propriu al lui Linus Torvalds in 1991, dar cum a spus odata Isaac Newton, "Daca am vazut mai departe, este pentru ca am stat pe umerii uriasilor". Cand Linus Torvalds a inceput lucrul la kernel, Fundatia Free Software incorporase deja ideea de software colaborativ. Si-au intitulat efortul GNU, un acronim recursiv carea inseamna pur si simplu “GNU's Not Unix”. Software-ul GNU a rulat pe kernel-ul Linux din ziua 1. Compilatorul lor gcc a fost folosit pentru compilarea kernel-ului. Azi multe unelte GNU de la gcc pana la gnutar sunt tot la baza fiecarei distributii Linux majore. Pentru
20
O introducere in Slackware Linux acest motiv multi dintre sustinatorii Fundatiei Free Software pretind cu pasiune ca munca lor ar trebui sa primeasca aceeasi cinste ca si kernel-ul Linux. Ei sugereaza cu putere ca toate distributiile Linux ar trebui sa isi faca referire ca distributii GNU/Linux. Aceasta este subiectul multor razboaie de discutii (flamewars), depasite doar de anticul razboi sfant vi versus emacs. Scopul acestei carti nu este sa inteteasca flacarile acestei discutii fierbinti, ci cel al clarificarii terminologiei pentru novice. Cand cineva vede GNU/Linux asta inseamna o distributie Linux. Cand unul vede Linux acesta poate face referire fie la kernel, sau fie la o distributie. Poate fi destul de neclar. De obicei termenul GNU/Linux nu este folosit pentru ca e prea lung.
1.2 Ce este Slackware? Slackware, a fost inceput de catre Patrick Volkerding spre sfarsitului anului 1992 si a fost lansat publicului prima data pe 17 Iulie 1993. Este prima distributie Linux care a dobandit o intinsa utilizare. Volkerding a invatat prima data despre Linux cand a avut nevoie de un interpretor LISP necostisitor pentru un proiect. Una dintre putinele distributii disponibile in perioada respectiva, era SLS Linux de la Soft Landing Systems. Volkerding a folosit SLS Linux, reparand bug-uri de cum le gasea. In cele din urma a decis sa imbine toate acele mici reparatii in propria sa distributie privata pe care el si prietenii lui sa o poata folosi. Aceasta distributie privata a castigat repede popularitate, asa ca Volkerding s-a decis sa o numeasca Slackware si sa o faca disponibila public. De-a lungul drumului, Patrick a adaugat lucruri noi in Slackware; un program de instalare prietenos bazat pe un sistem de meniuri, la fel si conceptul administrarii pachetelor, care le permite utilizatorilor sa adauge, inlature sau sa tina la curent pachetele software de pe sistemele lor intr-un mod usor. Sunt multe motive pentru care Slackware este cea mai batrana distributie inca in viata a Linux-ului. Nu incearca sa rivalizeze cu Windows, incearca sa fie cat mai Unix posibil. Nu incearca sa acopere procesele cu GUI-uri fanteziste (Graphical User Interfaces). In schimb, pune utilizatorii in control lasandu-i sa vada exact ceea ce se intampla. Dezvoltarea ei nu este grabita pentru a satisface termenele limita, fiecare versiune este lansata cand este pregatita. Slackware este pentru oamenii carora le place sa invete si sa isi configureze sistemul, sa faca exact ceea ce vor. Stabilitatea si simplitatea
21
Slackware Linux Essentials lui Slackware este motivul pentru care oamenii il vor folosi multi ani de acum incolo. Slackware se bucura in mod curent de o reputatie solida ca server si un workstation bun. Poti gasi desktop-uri Slackware care ruleaza aproape orice administrator de ferestre sau mediu desktop, sau nici una din ele. Serverele Slackware alimenteaza afaceri, jucand orice rol in care poate fi folosit un server. Utilizatorii Slackware sunt printre cei mai satisfacuti utilizatori Linux. Desigur ca am spune asta. :^)
1.3 Open Source si Free Software In comunitatea Linux, sunt doua miscari ideologice majore in lucru. Miscarea Free Software (despre care vom discuta intr-un moment) are ca scop eliberarea tuturor programelor de sub restrictiile proprietatii intelectuale. Sustinatorii acestei miscari cred ca aceste restrictii impiedica imbunatatirile tehnologice si lucreaza impotriva bunei stari a comunitatii. Miscarea Open Source are cam aceleasi scopuri, dar are o abordare mai pragmatica. Sustinatorii acestei miscari prefera sa-si bazeze argumentele pe meritele economice si tehnice a facerii codului sursa disponibil gratuit, in schimbul principiilor morale si etice care conduc miscarea Free Software. La celalalt capat al spectrului sunt grupuri care doresc sa mentina controale mai stranse asupra software-ului lor. Miscarea Free Software este condusa de Fundatia Free Software, o organizatie strangatoare de fonduri pentru proiectul GNU. Software-ul Free este mai mult o ideologie. Expresia deseori folosita “gratuit ca vorba, nu ca si berea.”. In esenta, software-ul Free este o incercare de a garanta anumite drepturi pentru utilizatori si dezvoltatori. Aceste libertati includ libertatea de a rula programul pentru orice motiv, de a studia si a modifica codul sursa, de a redistribui sursa si sa imparti orice modificari s-ar face. Pentru a garantarea acestor drepturi, a fost creata Licenta GNU Generala Publica (GPL). GPL, pe scurt, prevede ca oricine distribuie un program compilat care este licentiat sub GPL este obligat sa furnizeze si codul sursa si este liber sa faca modificari programului atat timp cat aceste modificari sunt prezente si in codul sursa. Aceasta garanteaza ca odata ce un program este “deschis” comunitatii, el nu poate fi “inchis” decat cu acordul fiecarui autor al fiecarei bucati de cod (chiar si modificarile) din el. Majoritatea programelor Linux sunt licentiate sub GPL. Este important de tinut minte ca GPL nu spune nimic despre pret. Oricat de ciudat ar suna poti cere bani pe software-ul free. Partea “free” este in libertatile pe care le ai cu codul sursa, nu in pretul pe care il platesti
22
O introducere in Slackware Linux pentru software. (Desi, odata ce cineva ti-a vandut sau ti-a dat, un program compilat licentiat sub GPL sunt obligati sa furnizeze si codul sursa.) Alta licenta populara este cea BSD. In contrast cu cea GPL, licenta BSD nu prezinta nici o cerinta pentru eliberarea codului sursa. Software-ul eliberat sub licenta BSD permite redistribuirea in binar sau in sursa trebuind indeplinite doar cateva conditii. Scrisorile de acreditare ale autorului nu pot fi folosite ca o metoda de publicitate pentru program. De asemenea fereste autorul de responsabilitatea pentru stricaciunile care pot aparea din folosirea software-ului. Majoritatea software-ului inclus in Slackware este sub licenta BSD. Pe linia intai a mai tinerei miscari Open Source, este o organizatie numita Initiativa Open Source care exista doar doar pentru a obtine sprijin pentru software-ul open source, software care are codul sursa disponibil la fel ca si programul pregatit de rulat. Nu ofera o licenta specifica, dar in schimb ei suporta diferitele tipuri de licente open source disponibile. Ideea din spatele OSI este sa aduca cat mai multe companii in spatele open source permitandu-le sa isi scrie propriile licente open source si sa aiba acele licente asigurate de catre Initiativa Open Source. Multe companii vor sa distribuie cod sursa, dar nu vor sa foloseasca licenta GPL. Din moment ce nu pot schimba in mod radical GPL-ul, li se ofera oportunitatea de a furniza propria lor licenta si sa fie acceptata de catre aceasta organizatie. In timp ce Fundatia Free Software si Initiativa Open Source lucreaza pentru a se ajuta una pe cealalta, nu sunt acelasi lucru. Fundatia Free Software foloseste o licenta specifica si ofera software sub acea licenta. Initiativa Open Source cauta sprijin pentru toate licentele open source, inclusiv cele de la Fundatia Free Software. Motivul pentru care ambele sustin facerea codului sursa disponibil gratuit se imparte cateodata in doua miscari, dar faptul ca doua grupuri ideologice diverse au un scop comun acorda crezare eforturilor fiecaruia.
23
Capitolul 2
Ajutor 2.1 Ajutorul de la sistem 2.2 Ajutor Online Se intampla des sa ai nevoie de ajutor despre o comanda anume, cum sa configurezi un program sau cum poti sa faci o componenta hardware sa mearga. Poate ca nu vrei decat sa intelegi o comanda mai bine, sau vrei sa vezi ce optiuni sunt disponibile pentru acea comanda. Din fericire, sunt multe moduri in care poti sa obtii ajutorul pe care il cauti. Cand instalezi Slackware, ai optiunea de a instala pachetele din seria “F”, care include FAQ-urile si HOWTO-urile. De asemenea, progamele vin cu propriul lor ajutor despre optiuni, fisiere de configurare si mod de folosire.
25
Slackware Linux Essentials
2.1 Ajutorul de la sistem 2.1.1 man Comanda man (prescurtarea de la “manual”) este modalitatea traditionala de documentatie in sistemele de operare Linux si Unix. Compuse din fisiere cu format special, “paginile man” sunt scrise pentru marea majoritate a comenzilor si sunt distribuite chiar cu software-ul. Executand man comandaoarecare vei obtine pagina de man pentru (normal) comanda specificata, cum ar fi in exemplul nostru programul imaginar comandaoarecare. Dupa cum iti poti imagina, numarul paginilor man poate creste foarte repede, devenind extrem de confuz si foarte complicat, chiar si pentru utilizatorii avansati. De aceea, paginile man sunt grupate in sectiuni numerotate. Acest sistem este utilizat de foarte mult timp; indeajuns incat sa vezi deseori comenzi, programe si chiar librarii de programare la care se face referinta cu numarul sectiunii man. De exemplu: S-ar putea sa vezi o referinta la man(1). Acest numar iti spune ca “man” documentat in sectiunea 1 (comenzi utilizator); poti chiar sa specifici ca vrei pagina de man pentru “man” din sectiunea 1, cu comanda man 1 man. Specificarea sectiunii in care man trebuie sa caute este utila in cazul in care sunt mai multe lucruri cu acelasi nume. Table 2-1. Sectiuniea paginilor man Sectiunea Continutul Sectiunea 1 comenzi utilizator (doar introductiv) Sectiunea 2 apeluri sistem Sectiunea 3 apeluri catre librariile C Sectiunea 4 device-uri (exemplu: hd, sd) formatele de fisier si protocoale (exemplu, wtmp, Sectiunea 5 /etc/passwd, nfs) Sectiunea 6 jocuri (doar introductiv) Sectiunea 7 conventii, pachete macro, etc. (exemplunroff, ascii) Sectiunea 8 administrarea sistemului (doar introductiv) In plus fata de man(1), mai sunt disponibile whatis(1) si apropos(1) al caror scop este sa te ajute sa gasesti informatii in sistemul man.
26
Ajutor Comanda whatis iti ofera o scurta descriere a comenzilor de sistem, ceva in genul unui indrumar de buzunar pentru comenzi. Exemplu: % whatis whatis whatis (1) - search the whatis database for complete words
Comanda apropos este folosita pentru cautarea in paginile man a unui anumit cuvant cheie. Exemple: % apropos wav cdda2wav (1) - a sampling utility that dumps CD audio data into wav sound files netwave_cs 4) - Xircom Creditcard Netwave device driver oggdec (1) - simple decoder, Ogg Vorbis file to PCM audio file (WAV or RAW) wavelan (4) - AT&T GIS WaveLAN ISA device driver wavelan_cs 4) - AT&T GIS WaveLAN PCMCIA device driver wvlan_cs (4) - Lucent WaveLAN/IEEE 802.11 device driver
Daca vrei mai multe detalii despre aceste comenzi, citeste pagina man a comenzii respective pentru detalii. ;)
2.1.2 Directorul /usr/doc Sursele celor mai multe pachete pe care le construim vin cu tot felul de documentatie: fisiere README, instructiuni de folosire, fisire cu licente, etc. Orice documentatie care vine cu sursele este inclusa si instalata pe sistemul tau in directorul /usr/doc. Fiecare program va instala (de obicei) propria documentatie in: /usr/doc/$program-$versiune
unde $program este numele programului despre care vrei sa citesti, iar$versiune este (evident) versiunea corecta a pachetului instalat pe sistem. De exemplu, pentru a citi documentatia pentru comanda man(1) trebuie sa faci cd in: % cd /usr/doc/man-$version
27
Slackware Linux Essentials Daca citirea paginilor man nu iti ofera destule informatii, sau daca nu exista referinte despre ceea ce cauti in mod special, directorul /usr/doc ar trebui sa fie urmatoarea ta oprire.
2.1.3 HOWTO-uri si mini-HOWTO-uri Colectia de HOWTO-uri/mini-HOWTO-uri iti este adusa in cel mai pur spirit al comunitatii Open Source. Aceste fisiere sunt exact ceea ce spune titulatura – documente si ghiduri care descriu cum merg lucrurile. Daca ai instalat colectia de HOWTO-uri, HOWTO-urile vor fi instalate in /usr/doc/Linux-HOWTOs iar mini-HOWTO-urile in /usr/doc/Linuxmini-HOWTOs. In aceasta serie de pachete este inclusa, de asemenea, o colectie de FAQ-uri, un acronim care inseamna
Frequently Asked Questions Aceste documente sunt scrise in stilul “Intrebari si raspunsuri” pentru (surpriza) Intrebari Adresate Frecvent. FAQ-urile sunt deseori un loc foarte util, in care poti sa te uiti cand cauti o “Metoda Rapida de Reparare” pentru ceva. Daca decizi sa instalezi FAQ-urile la instalarea sistemului, acestea vor fi instalate in directorul /usr/doc/Linux-FAQs . Aceste fisiere merita citite oricand nu esti sigur de modul in care trebuie sa continui cu ceva. Acestea acopera o gama uimitor de larga de subiecte, deseori intr-o maniera surprinzator de detaliata. Foarte folositor!
2.2 Ajutor Online In plus fata de documentatia oferita si instalabila cu Sistemul de Operare Slackware Linux, exista o multitudine de resurse online disponibile din care poti invata. .
28
Ajutor 2.2.1 Pagina si Forumul Oficial Pagina Oficiala Slackware Pagina Oficiala Slackware Linux este deseori invechita, dar inca mai contine informatii relevante despre ultimele versiuni Slackware. Odinioara a existat un forum, inainte ca o hoarda de capcauni, vandali si plangaciosi sa il atace. Mentinerea forumului incepuse sa ceara prea multe munca, asa ca Pat l-a inchis. Inca mai poti gasi copia de siguranta a vechiului forum la http://www.userlocal.com/phorum/. Pe masura ce forumurile au fost inchise pe http://slackware.com, au aparut alte pagini care ofereau suport pentru Slackware. Dupa multa considerare, Pat a ales sa investeasca www.linuxquestions.org drept forumul oficial pentru Slackware Linux.
2.2.2 Suportul prin E-mail Toti cei care cumpara CD-ul oficial sunt indreptatiti sa primeasca suport prin e-mail de la dezvoltator. Aceasta fiind zisa, va rugam sa tineti cont ca noi, dezvoltatorii (si marea majoritate a utilizatorilor) de Slackware suntem de “Scoala Veche”. Asta inseamna ca preferam sa-i ajutam pe cei care au un interes sincer si doresc sa se ajute singuri. Vom incerca intotdeauna sa-i ajutam pe toti cei care ne trimit e-mail-uri cu intrebari. Totusi, va rugam sa cautati in documentatii si pe paginile web (in special in FAQ-uri si poate pe cateva din forumurile de mai jos) inainte de a ne trimite e-mail-uri. S-ar putea sa obtineti mai repede raspunsuri in acest mod si, cu cat avem de raspuns la mai putine e-mail-uri, cu atat mai repede vom putea sa oferim asisenta celor care au nevoie. Adresa de e-mail pentru suport este:
[email protected]. Alte adrese de e-mail si detalii de contact se gasesc pe pagina web. 2.2.2.1 Liste de mail pentru Proiectul Slackware Linux
Avem un numar de liste de mail, disponibile in modurile rezumat si normal. Citeste instructiunile pentru modalitatea de inscriere. Pentru a te inscrie la o lista de mail, trimite e-mail la:
[email protected]
29
Slackware Linux Essentials continand fraza “subscribe [numele listei]” in corpul mesajului. Optiunile de liste sunt diponibile mai jos (foloseste unul din numele de mai jos pentru liste). Arhivele cu liste de mail pot fi gasite pe pagina de web a Slackwareului, la: http://slackware.com/lists/archive/ slackware-announce Lista de mail slackware-announce este pentru anunturi cu privire la versiuni noi, aduceri la zi majore si alte informatii generale. Slackware-security Lista de mail slackware-security este pentru anunturi cu privire la problemele de securitate. Toate exploit-urile sau alte vulnerabilitati care privesc in mod direct Slackware vor fi anuntate imediat pe aceasta lista. Aceste liste sunt disponibile si in formatul rezumat (digest). Asta inseamna ca vei primi un mesaj mare o data pe zi, in locul mai multor message de-a lungul zilei. Din moment ce listele de mail Slackware nu le permit utilizatorilor sa trimita e-mail-uri iar traficul pe aceste liste este foarte redus, majoritatea utilizatorilor va descopri ca listele rezumat nu oferta un avantaj insemnat. Totusi, iti sunt disponibile pentru inscriere la slackware-announce-digest sau slackware-security-digest.
2.2.3 Paginile si Forumurile Neoficiale 2.2.3.1 Pagini
Google Maestrul Kung-Fu al Motoarelor de Cautare. Cand e neaparat nevoie sa gasesti pana si cea mai mica urma de informatie despre un subiect: Nu accepta inlocuitori. Google:Linux Cautari cu specific Linux Google:BSD Cautari cu specific BSD. Slackware este realizat atat de general ca un sistem de operare Unix, incat deseori aici pot fi gasite informatii 100% relevante cu privire la Slackware. De multe ori o cautare despre BSD intoarce informatii mult mai tehnice decat cautarile mult mai dese cu privire la relatiile cu publicul despre Linux.
30
Ajutor Google:Groups Cauta prin ani intregi de mesaje Usenet dupa perle de inteligenta. http://userlocal.com Un cufar virtual al comoarei cunoasterii, sfaturi bune, experiente la prima mana si articole interesante. De multe ori primul loc in care o sa auzi de noi realizari in lumea Slackware. . 2.2.3.2 Resurse web
linuxquestions.org Forumul oficial pentru utilizatorii Slackware. LinuxISO.org Slackware Forum “Un loc din care sa descarci programe si in care sa obtii ajutor despre Linux” alt.os.linux.slackware FAQ Un alt FAQ 2.2.3.3 Grupurile Usenet (NNTP)
Usenet este de mult timp un loc in care impatimitii se aduna si se ajuta unul pe altul. Sunt cateva grupuri de stiri dedicate Slackware Linux, dar ele tind sa fie pline de oamenii cu multe cunostinte tehnice. alt.os.linux.slackware alt.os.linux.slackware, mai cunoscut ca aols (a nu fi confundat cu AOL®!) este unul din cele mai active locuri in care poti gasi sfaturi tehnice cu privire la problemele Slackware. Ca orice grup Usenet, cativa participanti care baga bete in roate (“trolls”) pot pata experienta cu certurile lor constante. Pentru a beneficia la maxim de aceasta resursa, trebuie sa inveti sa faci diferenta intre vandali si oamenii care sunt intr-adevar de ajutor
31
Capitolul 3
Instalare 3.1 Obtinerea Slackware 3.2 Cerinte de Sistem 3.3 Partitionarea 3.4 Programul setup
Inainte de a folosi Slackware Linux trebuie sa-l obtii si sa-l instalezi. Pentru a obtine Slackware, nu trebuie decat sa-l cumperi sau sa-l descarci gratuit de pe Internet. Instalarea este de asemenea foarte simpla, atata timp cat ai cateva cunostinte de baza despre calculatoare si vrei sa inveti si cateva alte lucruri. Programul de instalare nu este decat un procedeu pas cu pas. Din cauza acestui lucru, calculatorul tau va fi gata de lucru foarte repede. De fapt, Slackware se mandreste cu unul dintre cei mai scurti timpi de instalare dintre toate distributiile Linux complete.
33
Slackware Linux Essentials
3.1 Obtinerea Slackware 3.1.1 Setul Oficial de CD-uri si Cutii Setul oficial de CD-uri Slackware Linux este disponibil de la Slackware Linux, Inc. Setul este compus din 4 CD-uri. Primul disc contine tot ce este nevoie pentru instalarea unui server de baza si a sistemului X window. Al doilea CD este un CD “live”; asta inseamna ca este un CD boot-abil, care se instaleaza in RAM si iti ofera o instalare temporara cu care poti experimenta sau cu care poti face o recuperare de date pe masina ta. Acest CD contine si alte cateva pachete, cum ar fi mediile grafice KDE si GNOME. Cateva alte bonusuri sunt incluse pe acest CD, incluzand multe pachete non-vitale in directorul “extra”. Al treilea si al patrulea CD contin codul sursa pentru tot Slackware, impreuna cu editia originala a acestei carti. Poti cumpara si un set de CD-uri cu cutie, impreuna cu o gramada de echipamente Slackware interesante, cu care te poti mandri. Poti cumpara chiar si abonamente la CD-uri, la preturi scazute. Metoda preferata pentru cumpararea marfurilor Slackware este la magazinul online Slackware. http://store.slackware.com - USA http://store.slackware.com.ro - Romania De asemenea, poti comanda prin telefon sau e-mail. Table 3-1. Informatii de Contact Slackware Linux, Inc. Method Contact Details Telephone 1-(925) 674-0783 Website http://store.slackware.com Email
[email protected] Postal 1164 Claremont Drive, Brentwood, CA 94513
3.1.2 Pe Internet Slackware Linux este disponibil gratuit pe Internet. Poti sa trimiti intrebarile tale prin e-mail, dar acordam o prioritate mai mare celor care au cumparat setul oficial de CD-uri. Dupa cum spuneam, primim foarte multe
34
Instalare e-mail-uri si timpul nostru este destul de limitat. Inainte de a ne trimite email, incearca sa citesti Capitolul 2. Pagina oficiala a Proiectului Slackware Linux este la: http://www.slackware.com/ Locatia primara de FTP pentru Slackware Linux este: ftp://ftp.slackware.com/pub/slackware/ Tine minte ca, desi deschis publicului larg, site-ul nostru ftp nu are o latime de banda nelimitata. Incearca sa folosesti un mirror mai apropiata de tine pentru a descarca Slackware. O lista incompleta de mirror-uri poate fi gasita la http://www.slackware.com/getslack.
3.2 Cerinte de Sistem O instalare usoara de Slackware are nevoie cel putin de urmatoarele: Tabelul 3-2. Cerinte de sistem Hardware Cerinte Procesor 586 Memorie 32 MB Spatiu pe disc 1GB Unitate optica 4x CD-ROM Daca ai un CD boot-abil, probabil ca nu vei avea nevoie de o unitate de discheta. Desigur, daca nu ai o unitate de CD-ROM, vei avea nevoie de o unitate de discheta pentru a realiza o instalare de pe retea. Este necesara o placa de retea pentru instalarea de pe NFS. Uita-te in sectiunea numita NFS pentru mai multe detalii. Cerintele de spatiu pe disc sunt discutabile. Recomandarea de 1GB este necesara pentru o instalare minima dar pentru o instalare completa, vei avea nevoie de aproximativ doi gigaocteti, plus spatiul aditional pentru fisierele personale. Multi utilizatori nu fac o instalare completa. De fapt, multi ruleaza Slackware pe 100MB de spatiu pe disc. Slackware poate fi instalat si pe sisteme cu mai putin RAM si procesoare mai slabe, dar pentru asta va trebui sa dai putin din coate. Daca te simti in stare sa faci putina munca, uita-te in fisierul LOWMEM.TXT in arborele distributiei pentru cateva ponturi utile.
35
Slackware Linux Essentials
3.2.1 Seriile de Pachete Din motive de simplitate, Slackware a fost impartit initial in doua serii. Odinioara numite “seturi de discuri” din cauza ca erau facute pentru instalarea de pe dischete, seriile de pachete sunt folosite acum pentru categorizarea pachetelor incluse in Slackware. Astazi, instalarea de pe dischete nu mai este posibila. Iata o scurta descriere a fiecarei serii de pachete. Tabelul 3-3. Seriile de pachete Continutul Sistemul de baza. Contine destule programe pentru a putea A incepe sa lucrezi si contine un editor de text si programele de baza de comunicatii. AP Diverse aplicatii care nu au nevoie de Sistemul X Window. Unelte pentru dezvoltarea programelor. Compilatoare, D interpretoare si pagini man, aici sunt toate. E GNU Emacs. F FAQ-uri, HOWTO-uri si diverse alte documentatii. GNOME Mediul desktop GNOME. K Codul sursa pentru kernelul Linux. Mediul Desktop KDE. Un mediu X care are multe din KDE caracteristicile MacOS-ului sau Windows-ului. Libraria Qt, ceruta de KDE, este tot in aceasta serie. KDEI Pachetele de internationalizare pentru desktop-ul KDE. L Librarii. Librarii legate dinamic, cerute de multe alte programe. Utilitare de retea. Daemoni, programe de mail, telnet, lectori de N stiri si altele. T Sistemul de formatare a textului teTeX TCL Limbaj de Comanda a Uneltelor. Tk, TclX si TkDesk. X Sistemul X Window de baza. Aplicatii X care nu sunt parte dintr-un mediu desktop major (de XAP exemplu, Ghostscript si Netscape). Y Jocuri BSD pentru consola. Seria
36
Instalare
3.2.2 Metode de Instalare 3.2.2.1 Floppy
Desi era posibil odinioara sa instalezi Slackware Linux de pe dischete, marimea in crestere a pachetelor (a unor programe individuale chiar) ne-a fortat sa abandonam instalarea de pe dischete. Pana la versiunea Slackware 7.1, puteai sa faci o instalare partiala de pe dischete. Seriile de la A la N puateau fi instalate aproape in totalitate, oferind un sistem de baza de pe care se putea instala restul distributiei. Daca vrei sa iei in considerare o instalare de pe dischete (in general pe un sistem vechi), este recomandat ori sa gasesti o alta modalitate ori sa folosesti o versiune mai veche. Slackware 4.0 este inca popular tocmai din acest motiv, asa cum este si 7.0. Te rugam sa tii cont ca dischetele sunt inca necesare daca nu dispui de un CD boot-abil sau pentru o instalare NFS. 3.2.2.2 CD-ROM
Daca ai CD-ul de boot, disponibil in setul de discuri oficial publicat de Slackware Linux, Inc. (uita-te in sectiunea intitulata Obtinerea Slackware), o instalare bazata pe CD va fi putin mai simpla pentru tine. Daca nu, va trebui sa creezi dischetele de boot. De asemenea, daca ai periferice speciale care fac problematica utilizarea kernel-ului de pe CD-ul de boot, s-ar putea sa trebuiasca sa utilizezi dischete specializate. Incepand cu versiunea Slackware 8.1 este utilizata o metoda noua de creare a CD-ului de boot, care nu functioneaza bine cu anumite BIOS-uri cu probleme (trebuie notat faptul ca majoritatea CD-urilor de Linux au aceasta problema). Daca acesta este cazul, iti recomandam sa folosesti dischetele de boot. Sectiunea 3.2.3 si Sectiunea 3.2.5 iti ofera informatiile necesare pentru a alege si a crea dischetele de boot care iti sunt necesare. 3.2.2.3 NFS
NFS (Sistemul de Fisiere de Retea) este modalitatea de a face sistemele de fisiere disponibile pentru masini la distanta. O instalare NFS iti permite sa instalezi Slackware pe alt calculator din retea. Masina de pe care instalezi trebuie sa fie configurata pentru a exporta arborele distributiei Slackware spre masina pe care instalezi. Acesta, desigur, necesita cateva cunostinte despre NFS, care sunt acoperite in Sectiunea 5.6. Este posibil sa faci o instalare NFS prin metode cum ar fi PLIP (printr-un port paralel), SLIP si PPP (desi nu printr-o conexiune prin
37
Slackware Linux Essentials modem). Totusi, iti recomandam sa folosesti o placa de retea, daca este disponibila. Pana la urma, instalarea unui sistem de operare prin portul de imprimana este un proces foarte, foarte lent.
3.2.3 Discul de Boot Discul de boot este discheta de pe care pornesti sistemul pentru a incepe instalarea. Contine o imagine de kernel comprimata cu care se poate controla hardware-ul in timpul instalarii. De aceea este foarte necesar (daca nu bootezi de pe CD, asa cum este in sectiunea numita CD-ROM). Discurile de boot sunt localizate in directorul bootdisks/ in arborele distributiei. Sunt mai multe discuri de boot de Slackware decat poti numara pe degete (ceea ce inseamna aproximativ 16). O lista completa de discuri de boot, cu descrierea fiecaruia, este disponibila in arborele distributiei Slackware in fisierul bootdisks/README.TXT. Totusi, majoritatea oamenilor pot folosi imaginile bare.i (pentru dispozitive IDE) sau scsi.s (pentru dispozitive SCSI). Vezi Sectiunea 3.2.6 pentru instructiuni despre realizarea unui disc dintr-o imagine. Dupa boot, ti se va cere sa introduci discul radacina. Iti recomandam sa joci asa cum iti cere discul de boot si sa i-l dai.
3.2.4 Discul Root Discul radacina contine programul setup si un sistem de fisiere care este folosit in timpul instalarii. Imaginea discului radacina este in directoul rootdisks din arborele distributiei. Va trebui sa faci doua discuri radacina, din imaginile install.1 si install.2. Tot aici poti gasi discurile network.dsk, pcmcia.dsk, rescue.dsk, si sbootmgr.dsk
3.2.5 Discul Suplimentar Un disc suplimentar este necesar daca faci o instalare NFS sau instalezi un sistem cu periferice PCMCIA. Discurile suplimentare sunt in directorul rootdisks din arborele distributiei, cu fisierele network.dsk si pcmcia.dsk. Recent, au fost adaugate si alte discuri suplimenare, cum ar fi
38
Instalare si sbootmgr.dsk. Discul de salvare este o mica imagine de discheta care ruleaza intr-un disc virtual de 4 MB. Pe el sunt incluse cateva utilitare de retea si editorul vi pentru reparatii rapide pe masinile stricate. Discul sbootmgr.dsk il poti folosi pentru a porni alte periferice. Porneste de pe acest disc daca unitatea de CD-ROM nu vrea sa porneasca de pe CDul Slackware. Te va intreba despre diverse lucruri la pornire si reprezinta o modalitate convenabila de a trece peste un BIOS cu probleme. Discul radacina te va informa despre utlilizarea discurilor suplimentare la incarcare. rescue.dsk
3.2.6 Crearea Discurilor O data ce ai selectat o imagine de boot, trebuie sa o scrii pe o discheta. Procesul difera putin de la caz la caz, in functie de sistemul de operare sub care creezi dischetele. Daca folosesti Linux (sau cam orice sistem de operare asemanator cu Unix), va trebui sa folosesti comanda dd(1). Presupunand ca fisierul cu imaginea discului este bare.i si ca unitatea de discheta este /dev/fd0, comanda pentru a crea o discheta cu bare.i este: % dd if=bare.i of=/dev/fd0
Daca folosesti un sistem de operare Microsoft, ca trebui sa folosesti programul RAWRITE.EXE care este inclus in arborele distributiei in acelasi director cu imaginile de dischete. Din nou, presupunand ca fisierul cu imaginea discului este bare.i si ca unitatea de discheta este A:, deschide un cursor de DOS si scrie urmatoarele: C:\ rawrite a: bare.i
3.3 Partitionarea Dupa de ai boot-at de pe mediul tau preferat, va trebui sa partitionezi hard disc-ul. Partitionarea este pasul in care va fi creat sistemul de fisiere Linux in care va fi instalat Slackware. Iti recomandam sa creezi minimum doua partitii; una pentru sistemul de fisiere radacina (/) si una pentru swap. Dupa ce se termina incarcarea discului radacina, iti va fi prezentat un cursor de login. Intra cu root (fara nici o parola). La cursorul shell-ului,
39
Slackware Linux Essentials ruleaza cfdisk(8) sau fdisk(8). Programul cfdisk ofera o interfata mai prietenoasa cu utilizatorul decat programul fdisk dar ii lipsesc cateva functii. Iti vom explica pe scurt programul fdisk. Vei incepe prin a rula fdisk pentru hard disc-ul tau. In Linux hard disc-urile nu au litere, ci sunt reprezentate prin fisiere. Primul disc IDE (primary master) este /dev/hda, primary slave este /dev/hdb, si asa mai departe. Discurile SCSI urmeaza acelasi sistem, dar sunt in format /dev/sdX. Va trebui sa pornesti fdisk specificand hard disc-ul tau: # fdisk /dev/hda
Ca toate programele Unix bune, fdisk iti ofera un cursor (ai crezut ca primesti un meniu, nu-i asa?). Primul lucru pe care ar trebui sa-l faci este sa examinezi partitiile curente. Vei face asta scriind p la cursorul fdisk: Command (m for help): p
Asta iti va afisa tot felul de informatii despre partitiile curente. Majoritatea aleg un disc pentru instalare si sterg partitiile existante pentru a crea spatiu pentru partitiile Linux. ESTE FOARTE IMPORTANT SA FACI O COPIE DE SIGURANTA PENTRU DATELE PE CARE VREI SA LE SALVEZI INAINTE SA DISTRUGI PARTITIILE PE CARE SUNT ELE.
Nu exista nici o modalitate usoara de a recupera datele de pe o partitie stearsa, asa ca ar trebui intotdeauna sa le faci o copie de siguranta inainte sa te joci cu ele. Uitandu-te la tabela de partitii ar trebui sa vezi un numar de partitie, marimea partitiei si tipul ei. Sunt mai multe informatii, dar nu le baga in seama acum. Vei sterge partitiile de pe acest disc pentru a crea partitii Linux. Foloseste comanda d pentru a le sterge: Command (m for help): d Partition number (1-4): 1
Reia acest proces pentru fiecare partitie. Dupa ce ai sters partitiile esti gata sa creezi partitii Linux. Ne-am decis mai sus sa cream o partitie pentru sistemul de fisiere radacina si una pentru swap. Trebuie mentionat faptul ca schemele de partitionare pentru Unix sunt subiectul multor razboaie si ca multi utilizatori iti vor spune cum e mai bine sa faci. Ar trebui sa creezi cel putin o partitie pentru / si una pentru swap. O data cu
40
Instalare trecerea timpului, vei gasi metoda care functioneaza cel mai bine pentru tine. Eu folosesc doua scheme de partitionare. Prima este pentru desktop. Fac 4 partitii, /, /home, /usr/local, si swap. Aceasta ma ajuta sa reinstalez sau sa aduc la zi sistemul din / fara sa-mi sterg fisierele de date din /home sau programele compilate personalizat din /usr/local. Pentru servere, deseori inlocuiesc partitia pentru /usr/local cu o partitie pentru /var. Multre servere stocheaza informatii in acesta partitie si exista anumite avantaje in a o tine separata de /. Pentru moment, opreste-te la doua partitii:/ si swap. Acum creaza partitiile cu comanda n: Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4):1 First cylinder (0-1060, default 0):0 Last cylinder or +size or +sizeM or +sizeK (0-1060, default 1060):+64M
Trebuie sa te asiguri ca ai creat partitii primare. Prima partitie o sa fie partitie de swap. Spune-i lui fdisk sa creeze partitia numarul 1 ca partitie primara. Incepe de la cilindrul 0 si pentru cilindrul de terminare, scrie +64M. Acesta iti va da o partitie de swap de 64 megaocteti. (Marimea partitiei swap ca depinde de marimea RAM-ului pe care il ai. Exista conventia ca partitia swap sa fie dublul memoriei RAM.) apoi defineste partitia primara 2, incepand de la primul cilindru disponibil si tinand pana la sfarsitul discului. Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4):2 First cylinder (124-1060, default 124):124 Last cylinder or +size or +sizeM or +sizeK (124-1060, default 1060):1060
Aproape ai terminat. Mai trebuie sa schimbi tipul primei partitii in 82 (Linux swap). Tasteaza t pentru a schimba tipul, selecteaza prima partitie si scrie 82. Inainte de a scrie modificarile pe disc, ar trebui sa te uiti pentru ultima data la tabela de partitii. Foloseste p in fdisk pentru a afisa
41
Slackware Linux Essentials tabela de partitii. Daca totul arata bine, scrie w pentru a scrie modificarile pe disc, apoi iesi din fdisk.
3.4 Programul setup O data ce ai creat partitiile, esti gata pentru instalarea Slackware. Urmatorul pas in procesul de instalare este rularea programului setup(8). Pentru aceasta, scrie setup in linia de comanda shell. setup este un sistem bazat pe meniuri pentru instalarea pachetelor Slackware si configurarea sistemului.
Procesul de configurare functioneaza cam asa: Treci prin fiecare optiune din programul setup in ordinea in care sunt afisate. (Desigur, poti face lucrurile in aproape orice ordine doresti, dar s-ar putea sa nu mearga prea bine.) Elementele de meniu pot fi selectate cu sagetile sus/jos, iar butoanele “OK” si “Cancel” pot fi selectate utilizand sagetile stanga/dreapta. Ca alternativa, fiecare optiune are o tasta care ii corespunde si care este accentuata. Optiunile care pot fi bifate (cele insemnate cu [X]) pot fi schimbate cu tasta spatiu. Desigur, toate acestea sunt descrise in sectiunea “help” din setup, dar ca ar trebui sa le oferim cititorilor ceva de valoarea banilor platiti.
42
Instalare
3.4.1 HELP Daca este prima data cand instalezi Slackware, ar trebui sa arunci o privire la ecranul de ajutor. Iti va oferi o descriere a fiecarei parti din setup (destul de asemanatoare cu ceea ce scriem noi acum, dar mai impersonala) si instructiunile pentru navigarea prin restul instalarii.
3.4.2 KEYMAP Daca ai nevoie de o pozitionare a tastelor alta decat pozitionarea “qwerty” din Statele Unite, te poti uita in aceasta sectiune. Iti ofera un numar de pozitionari alternative ale tastelor pentru placerea tastarii.
43
Slackware Linux Essentials
3.4.3 ADDSWAP
Daca ai creat o partitie de swap (in Sectiunea 3.3), aceasta sectiune iti va permite sa o activezi. Va autodetecta si va afisa partiile swap de pe discul tau, permitandu-ti sa selectezi una pe care sa o activezi si sa o formatezi.
3.4.4 TARGET
Sectiunea target este unde alte partitii (non-swap) sunt formatate si sunt alocate catre punctele de montare din sistemul de fisiere. Va fi afisata o lista cu partitiile de pe disc. Pentru fiecare partitie, vei avea optiune de a o formata sau nu. In functie de kernelul pe care l-ai folosit, poti alege
44
Instalare dintre sistemele de fisiere reiserfs (implicit), ext3, ext2, jfs si xfs. Majoritatea utlilizatorilor folosesc reiserfs sau ext3. In viitorul apropiat sar putea sa vedem si suport pentru reiserfs4. Prima optiune in sectiunea target este selectia partitiei in care sa-ti instalezi sistemul de fisiere root (/). Dupa aceea, vei putea sa aloci alte partitii sistemelor de fisiere pe care le doresti. (De exemplu, s-ar putea sa vrei ca a treia ta partitie, sa zicem /dev/hda3, sa fie sistemul de fisiere personale. Acesta este doar un exemplu; aloca partitiile asa cum crezi de cuvinta.)
3.4.5 SOURCE Sectiunea source este locul in care selectezi mediul de pe care instalezi Slackware. Momentan exista patru surse din care poti alege. Acestea sunt CD-ROM, hard disc, NFS sau un director pre-montat.
Selectand CD-ROM, vei putea realiza o instalare de pe CD. Iti va fi oferita optiunea de a scana dupa o unitate de CD-ROM sau de a-ti fi oferita o lista din care sa-ti poti alege tipul unitatii. Asigura-te ca ai un CD Slackware in unitate inainte de a incepe scanarea. Selectia NFS te va intreba de informatii despre retea si informatii despre serverul tau NFS. Serverul NFS trebuie sa fie configurat in prealabil. De asemenea, nu poti folosi numele gazdelor, ci trebuie sa folosesti adresele IP atat pentru masina ta, cat si pentru serverul NFS (nu exista nici un rezolvator de nume pe discul de instalare). Evident, trebuie sa fi folosit discheta network.dsk pentru a adauga suportul pentru placa ta de retea.
45
Slackware Linux Essentials Directoul pre-montat iti ofera cea mai mare flexibilitate. Poti folosi aceasta metoda pentru a instala de pe lucruri cum ar fi discuri Jaz, monturi NFS peste PLIP si sisteme de fisiere FAT. Monteaza directorul ales inainte de a rula setup, apoi specifica locatia aici.
3.4.6 SELECT Aceasta optiune iti ofera posibilitatea de a alege ce serii de pachete vrei sa instalezi. Seriile sunt descrise in Sectiunea Sectiunea 3.2.1. Fii atent la faptul ca trebuie sa instalezi seria A pentru a avea un sistem functional de baza. Toate celelalte serii sunt optionale.
3.4.7 INSTALL Presupunand ca ai trecut prin optiunile “target”, “source” si “select”, optiunea install iti va permite sa instalezi pachetele din seriile alese. Daca nu, vei fi rugat sa sa mergi inapoi si sa completezi celelate sectiuni ale programului setup. Aceasta optiune iti permite sa alegi din 6 metode diferite de instalare: full, newbie, menu, expert, custom, si tag path. Optiunea full va instala fiecare pachet din toate seriile pe care le-ai ales in sectiunea “select”. Nu vei mai fi intrebat de nimic altceva. Asta este cea mai usoara metoda de instalare, din moment ce nu mai trebuie sa iei nici o decizie cu privire la pachetele care trebuie instalate. Desigur, aceasta optiune ocupa cel mai mult loc pe hard disc.
46
Instalare
Urmatoarea optiune este newbie.Aceasta optiune instaleaza toate pachetele necesare din seriile selectate. Pentru celelalte pachete, iti vor fi oferite optiunile “Yes”, “No” sau “Skip”. Yes si No fac operatiunile evidente, in timp ce Skip va trece la urmatorul pachet. In plus, vei vedea o descriere si cerintele de spatiu pentru fiecare pachet, pentru a te ajuta sa decizi daca ai nevoie de el. Recomandam aceasta optiune pentru noii utilizatori. Totusi este destul de lenta, din cauza intrebarilor. Menu este o versiune mai rapida si mai avansata a optiunii newbie. Pentru fiecare serie este afisat un meniu, din care poti selecta pachetele nenecesare pe care vrei sa le instalezi. Pachetele necesare nu sunt afisate in acest meniu. Pentru utilizatorii mai avansati, instalarea ofera optiunea expert. Aceasta iti permite un control complet asupra pachetelor care vor fi instalate. Poti deselecta pachetele necesare, rezultand un sistem complet defect. Pe de alta parte, poti controla cu exactitate ce se va afla pe sistemul tau. Optiunea nu este recomandata daca esti un nou utilizator, intrucat te poti impusca singur in picior. Optiunea custom si tag path sunt tot pentru utilizatorii avansati. Aceste optiuni iti permit o instalare bazata pe fisiere de etichete personalizate pe care le poti crea in arborele distributiei. Aceasta este util pentru instalrea rapida a unui numar mare de masini. Pentru mai multe detalii despre utilizarea fisierelor de etichete, vezi Sectiunea 18.4. Dupa ce ai selectat metoda de instalare, nu se vor intampla decat cateva lucruri. Daca ai selectat full sau menu, va aparea un ecran de meniu, care iti va permite sa alegi pachetele care vor fi instalate. Daca ai selectat full, pachetele vor fi instalate imediat in tinta aleasa. Daca ai selectat newbie, pachetele vor fi instalate pana la intalnirea unui pachet optional.
47
Slackware Linux Essentials Fii atent ca este posibil sa ramai fara spatiu liber in timpul instalarii. Daca ai selectat prea multe pachete fata de spatiul liber disponibil, vei avea probleme. Optiunea cea mai sigura este sa alegi doar cateva pachete si sa adaugi altele mai tarziu, daca ai nevoie. Aceasta poate fi realizata usor, folosind managerul de pachete din Slackware. Pentru mai multe informatii, uita-te in Capitolul 18.
3.4.8 CONFIGURE Sectiunea configure iti permite sa faci cateva configuratii de baza, acum ca pachetele au fost instalate. Ce vei vedea aici depinde in mare masura de pachetele pe care le-ai instalat. Totusi, vei vedea intotdeauna urmatoarele: 3.4.8.1 Alegerea kernel-ului
Aici vei fi rugat sa alegi un kernel care va fi instalat. Poti folosi kernelul de pe discul de boot pe care l-ai utililzat la instalare, CD-ul Slackware sau o alta discheta pe care (gadind in perspectiva) ai pregatit-o. Sau poti alege sa treci peste, caz in care va fi instalat kernelul implicit iar jocul va continua cu mana stanga a celui care a facut cartile.
3.4.8.2 Realizarea unui disc de boot
Este o idee buna sa faci un disc de boot. Vei avea optiunea de a formata o discheta, apoi vei putea sa creezi unul din doua tipuri de discuri de boot. Primul tip, simple, va scrie doar un kernel pe discheta. O optiune mai flexibila (si foarte recomandata) este lilo, care va crea, desigur, un disc de boot lilo. Uita-te in Sectiunea 7.1 pentru mai multe informatii despre
48
Instalare LILO. Desigur, poti alege continue caz in care nu va fi facut nici un disc de boot.
3.4.8.3 Modem
Iti vor fi cerute informatiile despre modem. Mai la obiect, vei fi intrebat daca ai un modem si daca da, pe ce port serial este.
Aceste subsectiuni de configurare pot sa apara sau nu, in functie de pachetele instalate. 3.4.8.4 Timezone
Aceasta este destul de evidenta: vei fi intrebat de fusul orar in care esti. Daca lucrezi dupa ora Zulu, ne pare foarte rau; lista (extrem de lunga) este sortata alfabetic si tu esti ultimul.
49
Slackware Linux Essentials
3.4.8.5 Mouse
Aceasta subsectiune te intreaba ce tip de mouse ai si daca vrei sa activezi la pornire suportul pentru mouse gpm(8) in consola.
3.4.8.6 Hardware clock
Aceasta subsectiune te intreaba daca ceasul hardware al calculatorului tau este potrivit dupa Timpul Universal (UTC sau GMT). Cele mai multe PC-uri nu sunt, asa ca ar trebui sa alegi no.
50
Instalare
3.4.8.7 Font
Subsectiunea de fonturi iti ofera posibilitatea de a alege dintr-o lista de fonturi particularizate pentru consola.
3.4.8.8 LILO
Aici vei fi intrebat despre instalarea LILO (LInux LOader; uita-te in Sectiunea7.1 pentru mai multe informatii). Daca Slackware va fi unicul tau sistem de operare, simple ar trebui sa fie de ajuns pentru tine. Daca folosesti boot dublu, optiunea expert este o alegere mai buna. Uita-te in Sectiunea 7.3 pentru mai multe informatii despre boot dublu. A treia optiune, do not install, nu este recomandata decat daca stii ce faci si ai un motiv bun pentru a nu instala LILO. Daca faci o instalare expert, vei putea alege unde va fi pus LILO. Poti pune
51
Slackware Linux Essentials LILO in MBR-ul (Master Boot Record) hard disc-ului tau, in superblocul partitei root sau pe o discheta.
3.4.8.9 Network
Configurarea retelei este, de fapt, netconfig. Uita-te in Sectiunea 5.1 pentru mai multe informatii. 3.4.8.10 X Window Manager
Aceasta optiune iti permite sa alegi managerul implicit de ferestre pentru sistemul X. Uita-te in Capitolul 6 pentru mai multe detalii despre X si managerele de ferestre.
Indiferent de pachetele instalate, ultimul lucru pe care configure il va face va fi sa te intrebe daca vrei sa alegi o parola pentru root. Din motive de securitate, este o idee buna; totusi, ca aproape orice lucru in Slackware, ramane la latitudinea ta.
52
Capitolul 4
Configurarea sistemului 4.1 O privire de ansamblu asupra sistemului 4.2 Alegerea unui kernel
Inainte de a putea configura partile mai avansate ale sistemului tau, este o idee buna sa inveti organizarea sistemului si ce comenzi pot fi folosite pentru a cauta fisiere sau programe. De asemenea e bine de stiut daca ai nevoie sa compilezi un kernel personalizat si care sunt pasii pentru realizarea acestui lucru. Acest capitol te va familiariza cu organizarea sistemului si fisierele de configurare. Pe urma, poti sa te apuci de configurarea partilor mai avansate ale sistemului.
53
Slackware Linux Essentials
4.1 O privire de ansamblu asupra sistemului Este important de inteles cum este asamblat un sistem Linux inainte de a plonja in diferitele aspecte ale configurarii. Un sistem Linux este semnificativ diferit de un sistem DOS, Windows, sau Macintosh (cu exceptia Mac OS X-ului bazat pe Unix), dar aceste sectiuni te vor ajuta sa te familiarizezi cu schema astfel incat sa iti poti configura usor sistemul pentru a-ti satisface nevoile.
4.1.1 Sistemul de fisiere Prima diferenta vizibila dintre un sistem Slackware Linux si DOS sau Windows o reprezinta sistemul de fisiere. In primul rand, nu folosim litere de unitati pentru a desemna diferite partitii. Sub Linux, este un director principal. Poti relata asta cu unitatea C: de sub DOS. Fiecare partitie de pe sistemul tau este montata pe un director aflat sub directorul principal. Este un fel de hard disk care se dilata mereu. Numim directorul principal directorul root (radacina), si este indicat cu un singur slash (/). Acest concept ar putea parea ciudat, dar de fapt iti face viata usoara cand vrei sa adaugi mai mult spatiu. De exemplu, sa spunem ca ramai fara spatiu pe unitatea pe care ai partitia /home. Majoritatea oamenilor instaleaza Slackware si fac o mare partitie root. Din moment ce o partitie poate fi montata pe orice director, poti sa mergi la magazin sa cumperi un hard nou si sa il montezi pe /home. Ti-ai adaugat dintr-o data mai mult spatiu pe sistem. Si asta fara a fi nevoit sa muti multe lucruri. Mai jos, vei gasi descrieri despre principalele directoare sub Slackware. bin
Aici sunt stocate programe esentiale utilizatorilor. Acestea reprezinta minimumul absolut necesar de programe de care are nevoie un utilizator pentru a folosi sistemul. Lucruri ca shell-ul si comenzile pentru sistemul de fisiere (ls, cp, s.a.m.d.) sunt stocate aici. Directorul /bin nu sufera de obicei modificari dupa instalare. Daca se intampla asta, de obicei e din cauza pachetelor actuale pe care le furnizam.
54
Configurarea sistemuluie boot
Fisiere care sunt folosite de catre "Linux Loader" (LILO). Acest director la fel ca si bin nu prea sufera modificari dupa instalare. Kernel-ul este stocat aici incepand cu Slackware 8.1. In primele versiuni Slackware, kernel-ul era stocat pur si simplu sub /, dar se obisnuieste ca kernel-ul si fisierele inrudite acestuia sa faciliteze initializarea dubla. dev
In Linux totul este tratat ca un fisier, chiar si dispozitivele hardware ca si porturile seriale, hard disk-urile si scanerele. Pentru a putea accesa aceste dispozitive, un fisier special numit nod dispozitiv trebuie sa fie prezent. Toate nodurile dispozitiv sunt stocate in directorul /dev. Vei vedea ca acest lucru este valabil pe multe sisteme de operare tip Unix. etc
Acest director contine fisierele de configurare ale sistemului. Totul incepand de la fisierul de configurare X Window, baza de date a utilizatorilor, la scripturile de pornire ale sistemului. In timp, administratorului de sistem acest director ii va fi foarte familiar. home
Linux este un sistem de operare multiutilizator. Fiecare utilizator de pe sistem primeste un cont si un director unic pentru fisierele personale. Acest director este numit directorul camin al utilizatorului. Directorul /home este furnizat ca locatia standard pentru directoarele camin ale utilizatorilor. lib
Librariile necesare functionarii sistemului sunt stocate aici. Libraria C , incarcatorul dinamic, libraria ncurses si modulele de kernel se afla printre lucrurile stocate aici. mnt
Acest director contine puncte de montare temporare pentru lucrul cu hard disk-uri sau unitati amovibile. Aici vei gasi puncte de montare pentru unitatile CD-ROM si floppy. opt
Pachete software optionale. Ideea din spatele /opt este ca fiecare pachet software se instaleaza in /opt/software-package, ceea ce ii face usoara inlaturarea. Slackware distribuie cateva lucruri in /opt (ca si KDE in /opt/kde), dar poti sa adaugi orice vrei in /opt. proc
Acesta este un director unic. Nu face parte de fapt din sistemul de fisiere, ci este un sistem de fisiere virtual care ofera acces
55
Slackware Linux Essentials informatiei legate de kernel. Diferite piese de informatie pe care kernel-ul vrea sa le stii sunt transportate prin fisiere in directorul /proc. Poti de asemenea sa trimiti informatii kernel-ului prin cateva din acest fisiere. Incearca sa tastezi cat /proc/cpuinfo. root
Administratorul de sistem este cunoscut ca root pe sistem. Directorul camin al lui root este /root in loc de /home/root. Motivul este simplu. Ce ar fi daca /home ar fi pe o partitie diferita de / si nu ar putea fi montata? root normal ca ar vrea sa se logheze si sa rezolve problema. Daca directorul lui camin s-ar afla pe sistemul de fisiere stricat i-ar fi mai greu sa faca acest lucru. sbin
Programe esentiale care sunt rulate de catre root si in timpul initializarii sistemului sunt tinute aici. Utilizatorii normali nu vor rula programele aflate in acest director. tmp
Locatia temporara de depozitare. Toti utilizatorii au drept de citire si scriere pe acest director. usr
Acesta este directorul mare pe un sistem Linux. Aproape tot ce a mai ramas isi are locul aici, programe, documentatie, codul sursa al kernel-ului si sistemul de ferestre X. Acesta este directorul cel mai probabil in care vei instala programele. var
Fisierele jurnal ale sistemului, date cache si fisierele lock ale programelor sunt stocate aici. Acesta este directorul pentru datele care se schimba frecvent. Acum ar trebui sa ai un bun simt pentru ce directoare contin ce pe sistemul de fisiere. Informatii mai detaliate despre schema sistemului de fisiere este disponibila in pagina de manual hier(7). Urmatoare sectiune te va ajuta sa gasesti mai usor fisiere specifice, astfel incat sa nu trebuiasca sa le cauti manual.
4.1.2 Gasirea fisierelor Stii ce contine fiecare director major, dar totusi nu te prea ajuta sa gasesti lucruri. Adica, ai putea sa mergi sa cauti prin directoare, dar sunt metode mai rapide. In Slackware sunt patru comenzi principale de cautare a fisierelor.
56
Configurarea sistemuluie 4.1.2.1 which
Prima este comanda which(1). which este folosit de obicei pentru localizarea rapida a unui program. Cauta doar prin PATH-ul tau si se intoarce cu primul lucru pe care il gaseste si calea directorului care duce spre el. Exemplu: % which bash /bin/bash
Din asta reiese ca bash este in directorul /bin. Aceasta este o comanda foarte limitata de cautare, din moment ce cauta doar in PATH. 4.1.2.2 whereis
Comanda whereis(1) functioneaza intr-un mod similar cu which, dar poate cauta si pagini de manual si fisiere sursa. O cautare cu whereis pentru bash s-ar intoarce cu aceasta: % whereis bash bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz
Aceasta comanda nu ne-a spus numai unde este localizat programul, dar si unde este stocata documentatia online. Totusi aceasta comanda este limitata. Ce ar fi daca ai vrea sa cauti un fisier de configurare specific? Nu poti folosi which sau whereis pentru asta. 4.1.2.3 find
Comanda find(1) ii permite unui utilizator sa caute prin sistemul de fisiere cu o bogata colectie de predicate de cautare. Utilizatorii pot specifica o cautare cu caractere de inlocuire a fisierelor (wildcards), raze a timpiilor de modificare sau creare, sau alte caracteristici avansate. De exemplu, pentru a cauta fisierul standard xinitrc pe sistem, ar fi folosita urmatoarea comanda. % find / -name xinitrc /var/X11R6/lib/xinit/xinitrc
va dura putin pana va rula, din moment ce trebuie sa traverseze intregul director radacina. Daca aceasta comanda este data de catre un utilizator normal, vor fi erori de permisiune refuzata pentru directoare pe care doar root le poate vedea. Dar find ne-a gasit fisierul ceea ce e bine. Doar daca ar fi putin mai rapida... find
57
Slackware Linux Essentials 4.1.2.4 slocate
Comanda slocate(1) cauta in intregul sistem de fisiere, la fel cum face si comanda find, dar el cauta intr-o baza de date in loc de sistemul de fisiere. Baza de date este setata astfel incat sa se refaca automat in fiecare dimineata, pentru a avea o oarecum baza de date proaspata a fisierelor de pe sistemul tau. Poti sa rulezi manual updatedb(1) pentru a reinnoi baza de date slocate (inainte de a rula updatedb manual, trebuie sa faci su pe utilizatorul root). Aici este un exemplu a lui slocate in actiune. % slocate xinitrc # nu trebuie sa ne facem root /var/X11R6/lib/xinit/xinitrc /var/X11R6/lib/xinit/xinitrc.fvwm2 /var/X11R6/lib/xinit/xinitrc.openwin /var/X11R6/lib/xinit/xinitrc.twm
Am gasit mai mult decat cautam si chiar rapid. Cu aceste comenzi, ar trebui sa poti gasi tot ce cauti pe sistemul tau Linux.
4.1.3 Directorul /etc/rc.d Fisierele de initializare a sistemului sunt stocate in directorul Slackware foloseste stilul schemei BSD pentru fisierele sale de initializare contrar scripturilor de initializare System V, care au tendinta de a face schimbarile configurarii ceva mai dificile, fara folosirea unui program special creat pentru asa ceva. In scripturile de initializare BSD, fiecare nivel de rulare primeste un singur fisier rc. In System V, fiecare nivel de rulare primeste directorul sau, fiecare continand numeroase scripturi de initializare. Aceasta ofera o structura organizata care este usor de intretinut. Sunt diferite categorii de fisiere de initializare. Aceasta sunt pornirea sistemului, nivele de rulare, initializarea retelei si compatibilitatea cu System V. Cum e traditional vom pune tot ce a mai ramas laolalta in alta categorie. /etc/rc.d.
4.1.3.1 Pornirea sistemului
Primul program care este rulat sub Slackware, in afara de kernel-ul Linux, este init(8). Acest program citeste fisierul /etc/inittab(5) pentru a vedea cum sa ruleze sistemul. Ruleaza scriptul /etc/rc.d/rc.S pentru a pregati sistemul inainte de a intra in nivelul de rulare dorit. Fisierul rc.S abiliteaza memorita ta virtuala, iti monteaza sistemele de
58
Configurarea sistemuluie fisiere, curata anumite directoare de jurnale, initializeaza dispozitivele Plug and Play, incarca modulele de kernel, configureaza dispozitivele PCMCIA, initializeaza porturile seriale si ruleaza scripturile de initializare System V (daca exista). In mod evident rc.S are multe pe farfurie, dar iata cateva scripturi din /etc/rc.d pe care rc.S le va apela pentru a-si termina munca: rc.S
Acesta este fisierul de initializare a sistemului. rc.modules
Incarca modulele de kernel. Lucruri ca placa ta de retea, sprijinul PPP si alte lucruri sunt incarcate aici. Daca acest script gaseste rc.netdevice, il va rula si pe acela. rc.pcmcia
cauta si configureaza dispozitive PCMCIA pe care s-ar putea sa le ai pe sistem. Acesta este folositor in mod special utilizatorilor laptop, care probabil ca au un modem sau o placa de retea PCMCIA. rc.serial
iti configureaza porturile seriale prin rularea comenzilor potrivite.
setserial rc.sysvinit
Se uita dupa scripturi de initializare System V pentru nivelul de rulare dorit si le ruleaza. Acest lucru e discutat in detaliu mai jos. 4.1.3.2 Scripturile de initializare a nivelelor de rulare
Dupa ce initializarea sistemului e completa, init se duce mai departe la initializarea nivelului de rulare. Un nivel de rulare descrie starea in care va rula calculatorul tau. Pare de prisos? Nivelul de rulare ii spune lui init daca vei accepta logari multiutilizator sau doar un singur utilizator, daca vrei sau nu servicii de retea si daca ii vei da sistemului de ferestre X sau lui agetty(8) responsabilitatea de a manipula logarile. Aceste fisiere definesc nivelele de rulare diferite in Slackware Linux. rc.0
Opreste sistemul (nivel de rulare 0). Implicit, acesta indica spre rc.6. rc.4
Pornire multiutilizator (nivel de rulare 4), dar in X11 cu KDM, GDM, sau XDM ca administratorul de logare. rc.6
Reporneste sistemul (nivel de rulare 6). rc.K
Pornire in mod utilizator unic (nivel de rulare 1).
59
Slackware Linux Essentials rc.M
Mod multiutilizator (nivelele de rulare 2 si 3), dar cu logarea text standard. Acesta este nivelul de rulare standard in Slackware. 4.1.3.3 Initializarea retelei
Nivelele de rulare 2, 3 si 4 vor porni serviciile de retea. Urmatoarele fisiere sunt responsabile cu initializarea retelei: rc.inet1
Creat de netconfig, acest fisier e responsabil cu configurarea interfetelor de retea. rc.inet2
Ruleaza dupa rc.inet1 si porneste serviciile de retea primare. rc.atalk
Porneste serviciile AppleTalk. rc.httpd
Porneste serverul web Apache. Ca si alte scripturi rc, acesta poate fi folosit si pentru a opri sau reporni un serviciu. rc.httpd ia argumente de stop, start sau restart. rc.news
Porneste serverul de stiri. 4.1.3.4 Compatibilitatea cu System V
Compatibilitatea cu initializarea System V a fost introdusa in Slackware 7.0. Multe alte distributii Linux se folosesc de acest stil de initializare in locul celui BSD. In principiu fiecare nivel de rulare primeste un subdirector pentru scripturile de initializare, pe cand la stilul BSD fiecare nivel de rulare primeste un script de initializare. Scriptul rc.sysvinit va cauta scripturile de initializare System V pe care le ai in /etc/rc.d si le va rula, daca nivelul de rulare este potrivit. Acesta este util pentru cateva pachete software comerciale care instaleaza scripturi de initializare System V. 4.1.3.5 Alte fisiere
Scripturile descrise mai jos sunt celelalte scripturi de initializare ale sistemului. Sunt de obicei rulate din unul dintre scripturile majore descrise sus, deci tot ce trebuie sa faci este sa le editezi continutul. rc.gpm
Porneste serviciile mouse. Iti permite sa copiezi si sa lipesti la consola Linux. Ocazional, gpm va cauza probleme cu mouse-ul cand acesta este folosit sub ferestrele X. Daca ai probleme cu
60
Configurarea sistemuluie mouse-ul sub X, incearca sa inlaturi permisiunea de executie de pe acest fisier si sa opresti serverul gpm. rc.font
Incarca font-ul personalizat pentru consola. rc.local
Contine comenzi specifice de pornite ale sistemului. Acest fisier este gol dupa o instalare proaspata, deoarece este rezervat pentru administratorii locali. Acest script este rulat dupa ce restul initializarii a avut loc. Pentru a activa un script, tot ce trebuie sa faci este sa ii adaugi permisiunea de executie cu comanda chmod. Pentru a incapacita un script, inlatura-i permisiunea de executare. Pentru mai multe detalii despre chmod, vezi Sectiunea 9.2.
4.2 Alegerea unui kernel Kernel-ul este partea sistemului de operare care ofera acces la hardware, controlul proceselor si control peste sistem. Kernel-ul contine suport pentru dispozitivele tale hardware deci alegerea unui kernel pentru sistemul tau este un pas foarte important in instalare. Slackware ofera mai mult de o duzina de kernel-e precompilate din care sa poti alege, fiecare cu un set standard de drivere si drivere aditionale specifice. Poti rula unul din kernel-ele precompilate sau poti sa iti construiesti propriul tau kernel din sursa. Oricum, trebuie sa te asiguri ca kernel-ul tau are suport pentru hardware-ul tau.
4.2.1 Directorul /kernels de pe CD-ROM-ul Slackware Kernel-ele Slackware precompilate sunt disponibile in directorul /kernels pe CD-ROM-ul Slackware sau pe site-ul FTP in directorul principal Slackware. Kernel-ele disponibile se schimba la noi versiuni ale kernel-ului, astfel ca documentatia in acel director este intotdeauna sursa autoritara. Directorul /kernels are subdirectoare pentru fiecare kernel disponibil. Subdirectoarele au acelasi nume ca si discul de boot insotitor. In fiecare subdirector vei gasi urmatoarele fisiere:
61
Slackware Linux Essentials Fisier System.map bzImage config
Scop Harta sistemului pentru acest kernel Imaginea propriu zisa a kernel-ului Fisierul de configuratie pentru acest kernel
Pentru a folosi un kernel, copiaza fisierele System.map si config in directorul tau /boot si copiaza imaginea kernel-ului ca /boot/vmlinuz. Ruleaza /sbin/lilo(8) pentru a instala LILO pentru noul kernel si pe urma reporneste-ti sistemul. Asta e tot ce trebuie sa faci pentru a instala un nou kernel. Kernel-ele care se termina in .i sunt kernel-e IDE. Adica, nu includ suport pentru componentele SCSI in kernel-ul de baza. Kernel-ele care se termina in .s sunt kernel-e SCSI. Ele includ tot suportul IDE din kernel-ele .i plus suport SCSI.
4.2.2 Compilarea unui kernel din surse Intrebarea “Ar trebui sa compilez un kernel pentru sistemul meu?” este deseori pusa de utilizatorii noi. Raspunsul este un poate ferm. Sunt cateva cazuri in care va trebui sa compilezi un kernel specific sistemului tau. Majoritatea utilizatorilor pot folosi un kernel precompilat si modulele kernel-ului pentru a obtine un sistem complet functional. Vei vrea sa compilezi un kernel pentru sistemul tau daca vei progresa spre o versiune de kernel care momentan nu este oferit de Slackware, sau daca ai peticit sursa kernel-ului pentru a obtine suport special pentru dispozitive, suport care nu este in sursa nativa a kernel-ului. Oricine cu un sistem SMP precis va vrea sa compileze un kernel cu suport SMP. De asemenea, multi utilizatori constata ca un kernel personalizat pentru sistem ruleaza mai repede. Vei gasi utila compilarea unui kernel cu optimizarile pentru procesorul specific din calculatorul tau. Construirea propriului tau kernel nu este asa de dificila. Primul pas este sa te asiguri ca ai sursa kernel-ului instalata pe sistem. Asigura-te ca ai instalat pachetele din seria K in timpul instalarii. Vei vrea de asemenea sa te asiguri ca ai seriile D instalate, mai precis compilatorul C, GNU make si GNU binutils. In general, este o idee buna sa ai toata seria D instalata daca ai de gand sa faci o dezvoltare de orice gen. Poti de asemenea sa iei sursa pentru ultimul kernel de la http://www.kernel.org/mirrors.
62
Configurarea sistemuluie 4.2.2.1 Compilarea versiunii 2.4.x a Kernel-ului Linux % su Password: # cd /usr/src/linux
Primul pas este sa readuci sursa kernel-ului la starea sa de baza. Emitem aceasta comanda pentru a face asta (ia in seama, ca e o idee buna sa salvezi fisierul .config deoarece aceasta comanda il va sterge fara avertizare): # make mrproper
Prima este metoda originala bazata pe sistemul de intrebari text si raspunsuri. Pune un grup de intrebari si pe urma construieste un fisier de configurare. Problema cu aceasta metoda este ca daca gresesti, trebuie sa o iei de la inceput. Metoda pe care majoritatea oamenilor o prefera este cea cu meniuri. In cele din urma, este o unealta de configurare X a kernel-ului. Alege-o pe cea pe care o vrei si emite comanda corespunzatoare: # make config (versiunea metodei bazate pe text cu I&Rn) # make menuconfig (versiunea cu meniuri) # make xconfig (versiunea bazata pe X, asigura-te mai intai ca esti in X)
Figure 4-1. Meniul de configurare a Kernel-ului
Utilizatorii noi, vor constata ca menuconfig este cel mai usor de folosit. Sunt furnizate ecrane de ajutor care explica diferitele parti ale kernel-ului. Dupa ce ti-ai configurat kernel-ul, paraseste programul de
63
Slackware Linux Essentials configurare. Va scrie fisierele de configurare necesare. Acum putem pregati arborele sursa pentru o constructie: # make dep # make clean
Pasul urmator este sa compilezi kernel-ul. Incearca sa emiti mai intai comanda bzImage de mai jos. # make bzImage
Aceasta ar putea dura putin, depinde de viteza CPU-ului tau. In timpul procesului de constructie, vei vedea mesajele de compilare. Dupa construirea imaginii kernel-ului, vei vrea sa construiesti partile kernel-ului pe care le-ai marcat ca module. # make modules
Putem acuma instalat kernel-ul si modulele pe care le-ai instalat. Pentru a instala kernel-ul pe un sistem Slackware, trebuie emise aceste comenzi: # # # # #
mv /boot/vmlinuz /boot/vmlinuz.old cat arch/i386/boot/bzImage > /vmlinuz mv /boot/System.map /boot/System.map.old cp System.map /boot/System.map make modules_install
Vei vrea sa editezi /etc/lilo.conf si sa adaugi o sectiune de boot pentru a boota vechiul tau kernel in caz ca cel nou nu functioneaza. Dupa ce ai facut asta, ruleaza /sbin/lilo pentru a instala noul bloc de bootare. Acum poti sa repornesti calculatorul cu noul tau kernel. 4.2.2.2 Versiunea 2.6.x a Kernel-ului Linux
Compilarea unui kernel 2.6 este doar putin diferita de un kernel 2.4 sau 2.2, dar este important sa intelegi diferentele inainte de a te ingropa in documente. Nu mai este necesar sa rulezi make dep si make clean. De asemenea, procesul de compilare al kernel-ului nu este la fel de prolix (verbose) in seriile kernel 2.6.x. Aceasta rezulta intr-un proces de constructie care e mai usor de inteles, dar are de asemenea si cateva lipsuri. Daca ai probleme in construirea kernel-ului tau, este recomandat sa reactivezi prolixitatea. Faci asta prin adaugarea lui V=1 constructiei. Aceasta iti permite sa jurnalizezi mai multa informatie care ar putea ajuta un dezvoltator de kernel sau un alt prieten inteligent in rezvolvarea problemei tale.
64
Configurarea sistemuluie # make bzImage V=1
4.2.3 Folosirea modulelor de Kernel Modulele de kernel sunt un al doilea nume pentru driver-ele dispozitivelor care pot fi inserate intr-un kernel in rulare. Ele iti permiti sa extinzi hardware-ul suportat de kernel-ul tau fara nevoia de a alege un alt kernel sau de a compila unul. Modulele pot de asemenea sa fie incarcate si scoase in orie moment, chiar in timpul rularii sistemului. Aceasta face imbunatatirea driver-elor specifice usoara pentru administratorii de sistem. Un nou modul poate fi compilat, vechiul inlaturat si cel nou incarcat, toate astea fara a necesita repornirea calculatorului. Modulele sunt stocate in directorul /lib/modules/versiune kernel pe sistemul tau. Ele pot fi incarcate in timpul initializarii prin fisierul rc.modules. Acest fisier este foarte bine comentat si ofera exemple pentru componentele hardware majore. Pentru a vedea o lista de module care sunt active in mod curent foloseste comanda lsmod(1): # lsmod Module parport_pc parport
Size 7220 7844
Used by 0 0 [parport_pc]
Poti vedea aici ca am incarcat doar modulul pentru portul paralel. Pentru a inlatura un modul, folosesti comanda rmmod(1). Modulele pot fi incarcate de comanda modprobe(1) sau insmod(1). modprobe este de obicei mai sigur pentru ca va incarca orice modul de care depinde cel pe care vrei sa il incarci. Multi utilizatori nu trebuie sa incarce sau sa scoata modulele manual. Ei folosesc "kernel autoloader" pentru administrarea modulelor. Ca standard, Slackware include kmod in kernel-ele sale. kmod este o optiune de kernel care da kernel-ului posibilitatea de a incarca automat modulele pe masura ce sunt cerute. Pentru mai multe informatii despre kmod si cum este configurat vezi /usr/src/linux/Documentation/kmod.txt. Ar fi trebuie sa instalezi pachetul sursa al kernel-ului sau sa fi luat sursa de la http://kernel.org. Mai multe informatii pot fi gasite in paginile de manual pentru fiecare dintre aceste comenzi, plus fisierul rc.modules file.
65
Capitolul 5
Configurarea retelei 5.1 Introducere: netconfig este prietenul tau . 5.2 Configurarea hardware pentru retea 5.3 Configurarea TCP/IP 5.4 PPP 5.5 Wireless 5.6 Network File Systems
67
Slackware Linux Essentials
5.1 Introducere: netconfig este prietenul tau. Atunci cand initial ai instalat Slackware, programul de setup a invocat acest program. netconfig a incercat sa indeplineasca urmatoarele functiuni pentru tine: • te-a intrebat care este numele computerului, si domain name. • ti-a oferit o scurta explicatie legata de diferite tipuri de scheme de adresare (legate de adresa IP), ti-a spus cand o sa fie folosite, si tea intrebat care schema doresti sa o utilizezi pentru configurarea placii de retea: o Static-IP o DHCP o Loopback • Apoi s-a oferit sa caute o placa de retea pe care sa o configureze. in general se va ingriji de aproximativ 80% din munca configurarii conexiunii LAN daca vei permite acest lucru. Noteaza faptul ca ti-as recomanda cu tarie sa revizuiesti fisierul de configurare pentru cateva motive: 1. Nu ar trebui niciodata sa te increzi intr-un program de setare ca sati configureze in mod corect reteaua. Daca folosesti un asemenea program ar trebui ca tu insuti sa revizuiesti configuratia 2. Daca inca inveti Slackware si despre managementul sistemului Linux, atunci faptul ca vezi o configuratie poate fi util. Cel putin vei sti cum ar trebui sa arate aceasta. Acest fapt iti va permite sa corectezi problemele datorate configurarii ulterioare eronate a sistemului.
netconfig
5.2 Configurarea hardware pentru retea Odata ce ai decis ca vrei sa legi intr-o oarecare forma de retea calculatorul tau care ruleaza Slackware primul lucru de care vei avea nevoie va fi o placa de retea compatibila cu Linux. Va trebui sa ai putina grija pentru a te asigura de faptul ca acea placa de retea este intr-adevar compatibila cu Linux (te rog sa iei drept puncte de referinta Linux Documentation Project si/sau documentatia pentru kernel pentru a te
68
Configurarea retelei informa in legatura cu placa pe care ti-ai propus sa o utilizezi). Ca si o regula generala, cel mai probabil vei fi placut surprins de numarul placilor de retea suportate de kernel-urile moderne. Acestea fiind spuse, totusi iti sugerez sa consulti oricare dintre listele de compatibilitate hardware (cum ar fi The GNU/Linux Beginners Group Hardware Compatibility Links si The Linux Documentation Project Hardware HOWTO) care sunt disponibile pe internet inainte de a cumpara acea placa. Putin timp in plus dedicat cautarii poate salva zile sau chiar saptmani de incercari de rezolvare a problemelor legate de o placa de retea care in final nici nu este compatibila cu Linux. Cand vizitezi listele Linux Hardware Compatibility disponibile pe internet, sau atunci cand studiezi documentatia kernel-ului instalat pe computerul tau, ar fi intelept sa notezi care modul al kernelului va fi necesar pentru suportul placii tale de retea.
5.2.1 Incarcarea modulelor de retea Modulele kenel-ului care urmeaza sa fie incarcate la bootare sunt incarcate din fisierul rc.modules in /etc/rc.d sau de modulul de autoincarcare a kernelului pornit de /etc/rc.d/rc.hotplug. Fisierele implicite rc.modules contin o sectiune dedicata suportului placilor de retea. Daca deschizi rc.modules si cauti aceasta sectiune vei observa ca in primul rand programul cauta un fisier executabil rc.netdevice in /etc/rc.d/. Acest script este creat daca setup autoprobeaza cu succes placa ta de retea in timpul instalarii. Sub blocul “if” se afla o lista a placilor de retea si linii de modprobe, fiecare dintre ele comentata. Gaseste placa ta si decomenteaza linia modprobe corespunzatoare ei, apoi salveaza fisierul. Rularea rc.modules ca si root ar trebui sa iti incarce driverul pentru retea ( de asemenea si oricare alte module care sunt listate si necomentate). Noteaza faptul ca anumite module (cum ar fi driverul ne2000) cer anumiti parametri; asigura-te ca selectezi linia corecta.
5.2.2 Placi de retea LAN (10/100/1000Base-T and Base-2) cards Acest heading cuprinde toate placile de retea interne pe PCI si ISA. Drivere pentru aceste placi sunt furnizate prin modulele incarcabile ale kernelului despre care am vorbit in paragraful anterior. /sbin/netconfig trebuie sa fi probat placa ta si sa fi setat cu succes fisierul rc.netdevice. Daca aceasta nu s-a intamplat, cea mai posibila problema este faptul ca modulul pe care incerci sa-l incarci pentru o anume placa de retea este
69
Slackware Linux Essentials incorect (nu este un lucru neauzit ca pentru generatii diferite ale aceleiasi marci de placa de retea de la acelasi producator sa fie necesare module diferite). Daca esti sigur ca modulul pe care incerci sa-l incarci este cel corect, urmatorul pas care trebuie sa il faci este sa consulti documentatia pentru modulul in cauza in incercarea de a descoperi daca sunt necesari parametri specifici in timpul initializarii modulului.
5.2.3 Modemuri Asemenea placilor LAN, modemurile vin cu variate optiuni de suport bus. Pana mai recent, majoritatea modemurilor erau carduri ISA pe 8 sau 16 biti. Cu eforturile Intel si ale producatorilor placilor de baza din toata lumea de a elimina complet ISA bus, este un lucru comun acum faptul ca majoritatea modemurilor sunt ori externe, care se conecteaza pe un port serial sau USB, ori interne, care se monteaza pe PCI. Daca doresti ca modemul tau sa functioneze sub Linux, este VITAL sa cauti prospectul acestuia, in mod special daca ai un modem pe PCI. Multe, daca nu cele mai multe, modemuri pe PCI disponibile in magazine in ziua de azi sunt WinModems. Acestea duc lipsa de anumite parti hardware de baza pe placa insasi: functiile realizate de acest tip de hardware sunt tipic descarcate (offloaded) in CPU de catre driverul modemului si sistemul de operare Windows. Aceasta inseamna ca nu au o interfata seriala standard pe care PPPD se asteapta sa o geseasca atunci cand incerci sa formezi numarul pentru ISP. Daca doresti sa fi absolut sigur ca modemul pe care vrei sa-l cumperi va functiona sub Linux, atunci cumpara un hardware de tip extern care se conecteaza la calculatorul tau printr-un port serial. Pentru acest tip de hardware este garantat faptul ca va functiona mai bine si vor exista mai putine probleme legate de instalare si intretinere, desi cere conectare la o sursa externa de energie si tinde sa coste mai mult. Exista mai multe website-uri care ofera derivere si asistenta pentru configurarea hardware-ului bazat pe WinModem. Unii utilizatori au raportat succes in configurarea si instalarea driverelor pentru winmodems, incluzand aici chipseturi Lucent, Conexant si Rockwell. Asa cum softul necesar pentru acestea nu este integrat in Slackware, si variaza de la driver la driver, nu vom mai intra in detalii legate de ele.
5.2.4 PCMCIA Ca si parte a instalarii Slackware, ti se ofera oportunitatea de a instala pachetul pcmcia (in seria de pachete “A”). Acest pachet contine
70
Configurarea retelei aplicatii si fisiere de configurare necesare pentru a lucra cu placi PCMCIA sub Slackware. Este important de retinut ca pachetul pcmcia instaleaza numai softul generic necesar utilizarii PCMCIA sub Slackware. Nu instaleaza nici un driver sau modul. Modulele si driverele disponibile se vor gasi in directorul /lib/modules/`uname -r`/pcmcia. Va trebui sa experimentezi putin pentru a gasi un modul care va functiona pentru placa ta de retea. Va fi necesar sa editezi fisierul /etc/pcmcia/network.opts (pentru o placa Ethernet) sau /etc/pcmcia/wireless.opts (pentru o placa wireless). Asemenea multor fisiere de configurare ale Slackware, aceste doua fisiere sunt bine comentate si va fi usor sa se determine ce modificari anume sunt necesare.
5.3 Configurarea TCP/IP In acest punct, placa ta de retea ar trebui sa fie instalata din punct de vedere fizic in calculatorul tau, iar modulele kernelului relevante ar trebui sa fie incarcate. Inca nu vei putea comunica prin intermediul placii de retea, dar informatii legate de aceasta pot fi obtinute prin comanda ifconfig ifconfig -a. # ifconfig -a eth0 Link encap:Ethernet HWaddr 00:A0:CC:3C:60:A4 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:110081 errors:1 dropped:0 overruns:0 frame:0 TX packets:84931 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:114824506 (109.5 Mb) TX bytes:9337924 (8.9 Mb) Interrupt:5 Base address:0x8400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2234 errors:0 dropped:0 overruns:0 frame:0 TX packets:2234 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:168758 (164.8 Kb) TX bytes:168758 (164.8 Kb)
Daca nu ai fi tastat /sbin/ifconfig fara sufixul -a, nu ai fi vazut interfata eth0 pentru ca placa ta de retea nu are inca o adresa IP valida sau un route. In timp ce exista multe si diferite cai de a seta o retea, toate acestea pot fi impartite in doua categorii: Static si Dynamic. Retelele statice sunt
71
Slackware Linux Essentials setate astfel incat orice nod de retea (limbaj codificat al tocilarilor pentru o adresa IP) intotdeauna sa aiba aceeasi adresa IP. Retelele dinamice sunt setate intr-un asemenea fel incat adresele IP pentru noduri sunt controlate de un singur server numit server DHCP.
5.3.1 DHCP DHCP (sau Protocolul Dinamic de Configurare a Host-ului) este o modalitate prin care o adresa IP poate fi repartizata unui computer la bootare. Cand booteaza client-ul DHCP, acesta transmite o cerere in LAN pentru ca un server DHCP sa ii repartizeze o adresa IP. Serverul DHCP are o lista larga de adrese disponibile. El va raspunde la cerere cu o adresa IP din lista, odata cu un timp de alocare. Odata ce timpul pentru alocare a adresei IP a expirat, clientul va trebui sa contacteze serverul din nou si sa repete negocierea. Clientul va accepta adresa IP de la server si va configura interfata in cauza cu aceasta adresa. Mai este inca un mic truc pe care clientii DHCP il folosesc pentru negocierea IP-ului care le va fi repartizat. Clientul isi va aminti ultima adresa repartizata si va cere serverului sa ii repartizeze iar acea adresa la urmatoarea negociere. Daca este posibil, atunci serverul va proceda in acest fel, dar daca nu, atunci o noua adresa va fi repartizata. Asa ca negocierea semana cu urmatoarea discutie: Client: Este un server DHCP disponibil pe LAN? Server: Da, este. Aici sunt. Client: Am nevoie de o adresa IP . Server: Poti lua 192.168.10.10 pentru 19200 secunde. Client: Multumesc. Client: Este un server DHCP disponibil pe LAN? Server: Da, este. Aici sunt. Client: Am nevoie de o adresa IP . Ultima data cand am vorbit am avut 192.168.10.10; Pot sa am din nou? Server: Da, poti (sau :Nu, nu poti lua 192.168.10.12 ). Client: Multumesc Clientul DHCP in Linux este /sbin/dhcpcd. Daca incarci in editorul tau favorit, vei observa ca /sbin/dhcpcd este apelat prin intermediul scriptului. Acest fapt va determina conversatia prezentata mai sus. dhcpcd a detectat de asemenea timpul ramas pentru alocare pentru adresa IP curenta si va contacta in mod automat serverul DHCP printr-o cerere de a reinnoi timpul de alocare atunci cand este /etc/rc.d/rc.inet1
72
Configurarea retelei necesar. Serverul DHCP poate controla de asemenea informatii aditionale legate de adresa IP, cum ar fi serverul ntp ce va fi utilizat, routa pe care o va lua, etc. Setarea DHCP in Slackware este simpla. Ruleaza netconfig si selecteaza DHCP cand ti se ofera ca si alternativa. Cand ai mai multe NICuri si nu vrei ca DHCP sa configureze eth0 editeaza fisieru /etc/rc.d/rc.inet1.conf si modifica variabila pentru NIC-ul tau punand “YES”.
5.3.2 IP Static Adresele IP statice sunt adrese fixe care se schimba numai prin comanda manuala. Ele sunt folosite in cazurile in care un administrator nu vrea ca informatiile legate de IP sa se schimbe, cum ar fi pentru servere interne intr-un LAN, orice fel de server ce se conecteaza la Internet si routere legate in retea. Cu modul de repartizare a adreselor IP statice poti sa pui o adresa IP care va ramane permanent. Celelalte calculatoare vor sti ca esti tot timpul la aceeasi adresa IP si te pot contacta la acea adresa intotdeauna.
5.3.3 /etc/rc.d/rc.inet1.conf Daca planuiesti sa atribui o adresa IP noii tale instalari Slackware, poti sa faci acest lucru fie prin scriptul netconfig sau poti edita /etc/rc.d/rc.inet1.conf. In /etc/rc.d/rc.inet1.conf vei observa: # Primary network interface card (eth0) IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="" DHCP_HOSTNAME[0]=""
Apoi mai departe spre final: GATEWAY=""
In acest caz sarcina ta este de a plasa informatia corecta intre ghilimele. Aceste variabile sunt apelate de /etc/rc.d/rc.inet1 la bootare pentru a seta interfetele de retea. Pentru fiecare dintre ele introdu adrea IP corecta sau pune “YES” pentru USE_DHCP. Slackware va porni interfetele cu informatia introdusa aici, in ordinea in care se afla. Variabila DEFAULT_GW seteaza route-ul implicit pentru Slackware. Toate comunicarile dintre computerul tau si alte computere de
73
Slackware Linux Essentials pe internet vor trece prin acest gateway daca nu este specificat nici un route. Daca folosesti DHCP de obicei nu va trebui sa introduci nimic aici, deoarece serverul DHCP va specifica gateway-ul ce va fi utilizat.
5.3.4 /etc/resolv.conf Ok, asadar ai o adresa IP, un gateway implicit, s-ar putea chiar sa ai 10 milioane de dolari (da-ne si noua), dar ce folos daca nu poti sa denumesti adresele IP? Nimeni nu vrea sa tasteze 72.9.234.112 in browserul de web pentru a vizualiza www.slackbook.org. In fond si la urma urmei cine altcineva, in afara de autori, ar memora acea adresa IP? Avem nevoie de configurarea DNS, dar cum? Aici intra in joc /etc/resolv.conf. Exista sanse ca deja sa ai optiunile corecte in /etc/resolv.conf. Daca setezi conexiunile de retea folosind DHCP, atunci acest server ar trebui sa gestioneze updatarea fisierului pentru tine. (Tehnic vorbind, serverul DHCP dicteaza catre dhcpcd ce sa puna acolo, iar acesta se supune.) Daca ai nevoie de updatarea manuala a listei de servere DNS, atunci va trebui sa editezi manual /etc/resolv.conf. Mai jos este un exemplu: # cat /etc/resolv.conf nameserver 192.168.1.254 search lizella.net
Prima linie este simpla. Directiva nameserver ne spune ce servere DNS sa contactam. Din necesitate acestea sunt intotdeauna adrese IP. Poti sa ai cate doresti dintre cele listate. Slackware va verifica unul dupa altul pana returneaza un rezultat potrivit. Cea de-a doua linie este ceva mai interesanta. Directiva search ne ofera o lista de nume de domenii ce pot fi asumate oricand este facuta o cerere DNS. Acest fapt permite contactarea unui calculator dar prin prima parte a FQDN (Fully Qualified Domain Name). De exemplu, daca "slackware.com" s-ar afla in calea ta de cautare ai putea sa ajungi la http://store.slackware.com dar prin tastarea in browser http://store. # ping -c 1 store PING store.slackware.com (69.50.233.153): 56 data bytes 64 bytes from 69.50.233.153 : icmp_seq=0 ttl=64 time=0.251 ms 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.251/0.251/0.251 ms
74
Configurarea retelei
5.3.5 /etc/hosts Acum ca am facut sa mearga DNS-ul, daca vrem sa trecem peste serverul DNS sau sa adugam inca unul pentru un calculator care nu este in DNS. Slackware include fisierul /etc/hosts, fisier care contine o lista locala a numelor DNS si a adreselor IP la care ar trebui sa se conecteze. # cat /etc/hosts 127.0.0.1 192.168.1.101 172.14.66.32
localhost locahost.localdomain redtail foobar.slackware.com
Aici poti sa vezi ca localhost are adresa 127.0.0.1 (intotdeauna rezervata pentru localhost), redtail poate fi contactat la 192.168.1.101, si foobar.slackware.com este 172.14.66.32.
5.4 PPP Multa lume inca se conecteaza la Internet printr-o conexiune dial-up. Cea mai comuna metoda este PPP, dar ocazional este folosita si SLIP. Setarea sistemului tau pentru a vorbi PPP cu un server la distanta este destul de usoara. Am inclus cateva instrumente care sa te ajute in setare.
5.4.1 pppsetup Slackware include un program numit pppsetup pentru a configura sistemul tau in vederea folosirii contului de dialup. Impartaseste aspectul si functii similare cu programul netconfig. Pentru a rula programul asigurate ca esti logat ca si root. Apoi tasteaza pppsetup. Va trebui sa vezi un ecran ca si acesta: Programul va prezenta o serie de intrebari la care vei oferi raspunsurile potrivite; se trateaza despre lucruri ca modem device, stringul de initializare a modemului si numarul de telefon al ISP-ului(furnizorul de internet). Unii itemi vor avea o optiune implicita pe care o poti accepta in cele mai multe cazuri. Dupa ce programul ruleaza va crea un program ppp-go si unul pppoff program. Acestea doua sunt folosite pentru pornirea si oprirea conexiunii PPP. Cele doua programe sunt localizate in /usr/sbin si au nevoie de drepturi de root pentru a rula.
75
Slackware Linux Essentials
5.4.2 /etc/ppp Pentru cei mai multi utilizatori rularea pppsetup va fi suficienta. Totusi este posibil sa existe un stadiu in care vrei sa imbunatatesti unele dintre valorile utilizate de daemonul PPP. Toate informatiile legate de configurare sunt pastrate in /etc/ppp. Aici este o lista ce arata pentru ce sunt fiecare dintre diferitele fisiere: Acest script este rulat de catre pppd dupa ce conexiunea PPP este terminata. Acest script este rulat de catre pppd atunci cand exista o conexiune ppp reusita. Pune in acest fisier oricare dintre ip-up comenzile pe care vrei sa le rulezi dupa o conexiune reusita . options Optiuni generale de configurare pentru pppd. Optiuni generale de configurare pentru pppd atunci cand options.demand ruleaza in demand dialing mode. pppscript Comenzile trimise modemului. pppsetup.txt Un fisier log a ceea ce ai introdus cand rulai pppsetup. Multe dintre fisiere nu se vor afla aici pana cand nu vei rula pppsetup. ip-down
5.5 Wireless Retelele wireless sunt un lucru relativ nou in lumea calculatoarelor, dar totusi castiga repede teren in timp ce din ce in ce mai multa lume cumpara laptopuri si vor retele mobile fara a mai fi incurcati de cabluri. Acest fenomen nu da semne de incetinire. Din pacate retelele wireless nu sunt la fel de bine suportate in Linux ca si celelalte clasice. Sunt trei pasi de baza pentru configurarea unei placi de retea wireless 802.11: 1. Suport hardware pentru placa de retea 2. Configurarea placii in vederea conectarii la un punct de acces wireless 3. Configurarea retelei
76
Configurarea retelei
5.5.1 Suport Hardware Suportul hardware pentru o placa wireless este realizat in kernel fie printr-un modul, fie este construit in el. In general cele mai noi placi au module in kernel, asa ca vei vrea sa determini modulul potrivit si sa-l incarci prin /etc/rc.d/rc.modules. netconfig e posibil sa nu detecteze placa de retea wireless, asa ca probabil va trebui sa determini ce model de placa ai. Consulta http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ pentru mai multe informatii legate de driverele din kernel pentru placi de retea wireless.
5.5.2 Configureaza wireless Cele mai multe operatiuni in acest sens sunt executate de iwconfig, asa ca trebuie sa citesti intotdeauna documentatia aferenta daca ai nevoie de mai multa informatie. In primul rand vei dori sa configurezi acces point-ul wireless. Aceste puncte de acces variaza in terminologia proprie si in configurare, asa ca va trebui sa te acomodezi cu acel hardware pe care l-ai cumparat. In general vei avea nevoie cel putin de urmatoarele informatii. • Domain ID, sau numele retelei (numita ESSID de catre iwconfig) • Canalul pe care WAP il utilizeaza • Setarile de encriptie, aici fiind incluse cheile folosite( preferabil in hexadecimal) O NOTA LEGATA DE WEP. WEP este destul de diversificat, dar este mult mai bun decat nimic. Daca doresti un grad de securitate sporit in reteaua ta wireless, ar trebui sa te interesezi in legatura cu VPN si IPSec, dar ambele ies din sfera de interes al acestei carti. Ar trebui de asemenea sa configurezi WAP sa nu isi expuna domain ID-ul sau ESSID. O discutie mai amanuntita legata de securitatea wireless depaseste scopul acestui capitol, dar o simpla cautare pe Google va scoate la iveala mai multa informatie decat vei fi avut nevoie. Odata ce ai adunat informatiile de mai sus, si presupunand ca ai folosit modprobe pentru a incarca driverul din kernel necesar, poti sa editezi rc.wireless.conf si sa adaugi setarile personale. Acest fisier este putin cam dezordonat. Efortul minim este la modificarea sectiunii generice cu ESSID si KEY personale, de asemenea si canalul daca este cerut acest lucru de catre placa ta. (Incearca sa nu setezi canalul, si daca merge, atunci este excelent; daca nu, seteaza canalul conform necesitatilor.) Daca
77
Slackware Linux Essentials indraznesti, poti modifica fisierul astfel incat doar variabilele necesare sunt setate. Numele variabilelor din rc.wireless.conf corespund parametrilor iwconfig, sunt citite de catre rc.wireless si utilizate in comenzile iwconfig. Daca cheia ta este in hexadecimal, acest lucru este ideal, deoarece poti avea incredere in faptul ca WAP si iwconfig vor cadea de acord in privinta ei. Daca ai dar un string nu poti fi sigur de cum il va traduce WAP in hexadecimal, asa ca este necesara putina intuitie (sau fa rost de cheia WAP-ului in hexadecimal). Odata ce ai modificat rc.wireless.conf, ruleaza rc.wireless ca si root, apoi rc.inet1, tot ca si root. Poti testa conexiunea wireless cu utilitare standard cum ar fi ping, alaturat iwconfig-ului. Daca ai o conexiune cu fir poate vei dori sa folosesti ifconfig pentru a opri acest tip de interfata in timp ce testezi interfata wireless pentru a te asigura ca nu este nici o interferenta. Vei dori de asemenea sa testezi schimbarile facute printr-un restart. Acum, dupa ce ai vazut cum sa editezi /etc/rc.d/rc.wireless pentru reteaua ta implicita, sa aruncam o privire mai atenta la iwconfig pentru a vedea cum functioneaza. Acest fapt te va invata modul rapid si murdar de a seta wifi pentru acele situatii cand te afli intr-un Internet cafe, cofee shop sau alte locuri si doresti sa intri online. Primul lucru pe care trebuie sa il faci e sa ii spui NIC-ului tau wireless carei retele sa i se alature. Asigura-te si inlocuieste “eth0” cu interfata pe care placa ta wireless o foloseste si schimba de asemenea “mynetwork” cu ESSID-ul pe care vrei sa il folosesti. Da, stim ca esti mai destept de cat atat. Urmatorul pas va fi sa specifici cheia de encriptie folosita in retea (daca exista o asemena cheie). La final specifica canalul pe care sa-l foloseasca (daca este nevoie). # iwconfig eth0 essid "mynetwork" # iwconfig eth0 key XXXXXXXXXXXXXXXXXXXXXXXXXXX # iwconfig eth0 channel n
Acestea ar trebui sa fie sfarsitul setarilor retelei fara fir.
5.5.3 Configurarea retelei Acest lucru se realizeaza exact in acelasi fel ca si in cazul retelelor cu fir. Pur si simplu cauta prin sectiunile anterioare ale acestui capitol.
78
Configurarea retelei
5.6 Network File Systems La acest nivel ar trebui sa ai o conexiune TCP/IP functionala. Ar trebui sa fii capabil sa trimiti ping la alte calculatoare din reteaua ta interna, iar daca ai configurat cum trebuie un gateway ar trebui de asemenea sa poti trimite pingul calculatoarelor de pe Internet. Dupa cum stim ideea conectarii unui calculator la o retea este de a accesa informatia. In timp ce unii oameni ar putea conecta calculatorul la o retea dar pentru distractie, cei mai multi doresc sa poata partaja fisiere si imprimante. Ei doresc sa acceseze fisiere pe internet si sa se joace online diferite jocuri. Faptul ca ai o conexiune TCP/IP functionala pe noua ta distributie Slackware reprezinta un mod in care poti ajunge la acest scop, dar numai cu TCP/IP instalat functionalitatea va fi una rudimetara. Pentru a partaja fisiere va trebui sa le mutam inainte si inapoi folosind oricare dintre protocoalele FTP sau SCP. Nu putem accesa fisiere in Slackware-ul nou instalat folosind Network Neighborhood sau icoanele My Network Places pe computerele care ruleaza Windows. Am dori sa putem accesa fara probleme fisiere din alte calculatoare ce ruleaza Unix. In mod ideal am dori sa folosim un network file system ce ne permite accesul transparent la fisierele noastre pe alte calculatoare. Programele pe care le folosim pentru a interactiona cu informatia stocata in calculatoarele noastre nu au nevoie sa stie pe ce calculator sunt stocate anumite fisiere; ele trebuie sa stie daca exista si cum sa il ia. Apoi este responsabilitatea sistemului de operare sa gestioneze accesul la acel fisier prin intermediul sistemelor de fisiere si network file systems. Doua dintre cele mai folosite sisteme de fisiere sunt SMB (implementat de Samba) si NFS.
5.6.1 SMB/Samba/CIFS SMB (de la Server Message Block) este un descendent al mai vechiului protocol NetBIOS care a fost utilizat de IBM in produsul lor LAN Manager. Microsoft a fost intotdeauna interesata de NetBIOS si succesorii sai (NetBEUI, SMB si CIFS). Proiectul Samba a existat inca din 1991 cand a fost scris pentru a lega un PC IBM ce rula sub protocolul NetBIOS cu un server Unix. In zilele noastre SMB este metoda preferata pentru a partaja fisiere si imprimante de-a lungul unei retele, virtual vorbind chiar pentru intreaga lume civilizata, pentru ca Windows o suporta. Fisierul de configurare al Samba este /etc/samba/smb.conf; unul dintre cele mai bine comentate si documentate fisiere din cate vei gasi. Partajari mostra au fost pregatite pentru tine ca se le vezi si sa le modifici
79
Slackware Linux Essentials dupa nevoile tale. Daca ai nevoie de un control mult mai amanuntit pagina man pentru smb.conf este indispensabila. Din moment ce Samba este atat de bine documentat in ceea ce am spus mai devreme nu vom rescrie documentatia aici. Totusi vom acoperi repede etapele de baza. smb.conf este impartit in mai multe sectiuni: una pentru partajare si una globala, pentru setarile care vor fi folosite pretutindeni. Unele optiuni sunt valabile doar in sectiunea globala, iar unele doar in afara acesteia. Aminteste-ti ca sectiunea globala poate fi suprimata de oricare alta sectiune. Pentru mai multe informatii cauta in man pages. Cel mai probabil vei dori sa editezi fisierul smb.conf pentru a reflecta setarile de reteau in LAN. Ti-as sugera sa modifici itemii listati dedesubt: [global] # workgroup = NT-Domain-Name or Workgroup-Name, eg: LINUX2 workgroup = MYGROUP
Schimba numele workgroup-ului pentru a reflecta un workgroup sau un domain pe care il folosesti local. # server string is the equivalent of the NT Description field server string = Samba Server
Acesta va fi numele calculatorului tau cu Slackware instalat, nume care va fi afisat in folderul Network Neighborhood (sau My Network Places). # Security mode. Most people will want user level security. See # security_level.txt for details. NOTE: To get the behaviour of # Samba-1.9.18, you'll need to use "security = share". security = user
Mai mult ca sigur ca vei dori sa implementezi nivelul de securitate pentru user in sistemul tau Slackware. # You may wish to use password encryption. Please read # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba # documentation. # Do not enable this option unless you have read those documents encrypt passwords = yes
Daca encriptarea parolei nu este activata atunci nu vei putea sa folosesti Samba cu NT4.0, Win2k, WinXP si Win20003. Sistemele Windows precedente acestora nu necesita encriptie pentru partajarea fisierelor.
80
Configurarea retelei SMB este un protocol autentificat, acest lucru insemnand ca trebui sa introduci un username si o parola corecte pentru a putea folosi acest serviciu. Comunicam serverului samba ce usere si parole sunt valide prin comanda smbpasswd. Aceasta comanda urmeaza cativa pasi pentru a-i spune sa adauge fie un utilizator traditional, fie un utilizator-calculator (SMB necesita adaugarea numelor NETBIOS ale computerelor ca si utilizatori-calculatoare, astfel restrangand numarul de calculatoare de la care cineva se poate autentifica). Adding a user to the /etc/samba/private/smbpasswd file. # smbpasswd -a user Adding a machine name to the /etc/samba/private/smbpasswd file. # smbpasswd -a -m machine
Este important de remarcat faptul ca un nume de user sau de calculator trebuie sa existe deja in fisierul /etc/passwd. Poti realiza acest lucru prin comanda adduser. Nu uita ca atunci cand folosesti comanda adduser pentru a adauga un nume de calculator trebuie sa-i atasezi acestuia semnul dolarului (“$”). Acest lucru nu ar trebui facut cu smbpasswd. smbpasswd ataseaza singur acest semn. Nereusita alocarii calculatorului in acest fel cu adduser va genera o eroare in momentul in care se va incerca adaugarea numelui calculatorului in samba. # adduser machine$
5.6.2 Network File System (NFS) NFS (sau Network File System) a fost scris initial de catre Sun pentru implemetarea Solaris a Unix. In timp ce sunt semnificant mai usoare instalarea si rularea, in comparatie cu SMB, este semnificant mai putin sigur. In primul rand insecuritatea consta in faptul ca este usor sa schimbi ID-ul grupului si utilizatorului de la un calculator la altul. NFS este un protocol neautentificat. Viitoarele versiuni ale protocolului NFS vor avea securitate sporita, dar facilitatile acestor versiuni nu sunt cunoscute la momentul scrierii acestei carti. Configurarea NFS este guvernata de fisierul /etc/exports. Cand incarci acest fisier in forma lui implicita intr-un editor vei vedea un document alb cu 2 linii deasupra. Va fi necesara adaugarea unei linii fisierului exports pentru fiecare director pe care dorim sa-l exportam, impreuna cu o lista de statii client care vor avea permisiunea de a accesa acest fisier. De exemplu, daca am vrea sa exportam directorul /home/foo catre statia Bar, ar trebui sa adaugam linia /home/foo Bar(rw)
81
Slackware Linux Essentials /home/foo Bar(rw)
ls /etc/exports. Mai jos vei gasi exemplul din paginile man pentru fisierul exports: # sample /etc/exports file / master(rw) trusty(rw,no_root_squash) /projects proj*.local.domain(rw) /usr *.local.domain(ro) @trusted(rw) /home/joe pc001(rw,all_squash,anonuid=150,anongid=100) /pub (ro,insecure,all_squash)
Dupa cum poti sa vezi exista optiuni variate, dar cele mai multe ar trebui sterse din acest exemplu. NFS functioneaza sub presumptia ca un anume user pe un calculator intr-o retea are acelasi user ID pe toate calculatoarele din acea retea. Cand se incearca sa se citeasca sau sa se scrie de la un client NFS la un server NFS, un UID este transmis ca parte a cererii citire/scriere. Acest UID este tratat la fel ca si cum cererea citire/scriere ar avea originea in acelasi calculator. Dupa cum poti sa vezi, daca cineva ar putea in mod arbitrar sa specifice un oarecare UID cand acceseaza resurse pe un sistem de la distanta, atunci s-ar putea intampla, si chiar s-e intampla, lucruri nedorite. Ca si o protectie partiala, fiecare director este montat cu optiunea root_squash. Acest lucru stabileste UID pentru oricare user ce pretinde a fi root pentru un UID diferit si se previne accesul ca si root la fisierele sau folderele din directorul exportat. root_squash este activata implicit ca si masura de securitate, dar autorii recomanda spcificarea ei oricum in fisierul /etc/exports. Poti de asemenea sa exporti un director direct din linia de comanda la server prin utilizarea comenzii exportfs dupa cum urmeaza: # exportfs -o rw,no_root_squash Bar:/home/foo
Acesta linie exporta directorul /home/foo catre calculatorul “Bar” si acorda nivel de acces citire/scriere. Aditional, serverul NFS nu va invoca root_squash, ceea ce inseamna ca orice utilizator de pe Bar cu un UID "0" (UID de root) va avea aceleasi privilegii ca si root pe server. Aceasta sintaxa nu arata straniu (in mod uzual cand un director este specificat in computer: sintaxa /director/fisier, te referi la un fisier situat intr-un director pe un anume calculator). Vei gasi mai multe informatii in paginile man in legatura cu fisierul exports.
82
Capitolul 6
Configurarea X 6.1 xorgconfig 6.2 xorgsetup 6.3 xinitrc 6.4 xwmconfig 6.5 xdm Incepand cu Slackware-10.0, mediul X Window in Slackware este furnizat de X.org. X este responsabil pentru oferirea unei interfete grafice catre utilizator. Este independent de sistemul de operare, spre deosebire de Windows sau MacOS. Sistemul X Window este implementat prin mai multe programe care ruleaza in spatiul utilizator. Cele doua componente principale sunt serverul si managerul de ferestre. Serverul ofera functile de cel mai jos nivel pentru interactiunea cu placa video, deci este specific sistemului. Managerul de ferestre sta deasupra serverului si furnizeaza interfata cu utilizatorul. Avantajul este ca poti avea mai multe interfete grafice, doar schimband managerul de ferestre pe care-l folosesti. Configurarea X poate fi o activitate complexa. Motivul pentru aceasta este numarul mare de placi video disponibile pentru arhitectura PC, majoritatea folosind interfete de programare diferite. Din fericire, majoritatea placilor video actuale suporta standardele de baza video, cunoscute ca VESA si daca placa ta este printre ele, vei putea sa pornesti X folosind comanda startx imediat dupa instalare. Daca nu functioneaza cu placa ta video sau daca vrei sa te folosesti de functiile de inalta performanta ale placii video, cum ar fi accelerarea hardware sau randarea hardware 3-D, atunci trebuie sa configurezi X. Pentru a configura X, trebuie sa creezi un fisier /etc/X11/xorg.conf. Acest fisier contine multe detalii despre placa ta video, mouse si monitor. Este un fisier de configurare foarte complex dar, din fericire, exista mai multe programe care pot crea fisierul pentru tine. Vom mentiona cateva dintre ele aici.
83
Slackware Linux Essentials
6.1 xorgconfig Acesta este o interfata bazata pe un meniu simplu, asemanatoare cu programul de instalare Slackware. Programul ii spune lui X sa se uite la placa video, iar apoi sa creeze cea mai buna configuratie initiala bazata pe informatiile pe care le poate aduna. Fisierul /etc/X11/xorg.conf generat ar trebui sa fie un punct de start bun pentru majoritatea sistemelor (si sa mearga fara modificari). Acesta este un program de configurare X bazat pe text, facut pentru un administrator de sistem avansat. Iata un scurt ghid pentru folosirea xorgconfig. In primul rand, porneste programul: # xorgconfig
Asta iti va prezenta un ecran plin cu informatii despre xorgconfig. Pentru a continua, apasa ENTER. xorgconfig te va ruga sa verifici ca ai PATH corect configurat. Ar trebuie sa fie in regula, asa ca da-i drumul si apasa ENTER. Figura 6-1. xorgconfig Configurarea Mouse-ului
Selecteaza mouse-ul din meniul prezentat. Daca mouse-l tau serial nu este afisat acolo, alege protocolul Microsoft - este cel mai comun protocol si probabil ca va merge. Apoi, xorgconfig te va intreba despre ChordMiddle si Emulate3Buttons. Vei vedea aceste optiuni descrise in
84
Configurarea X detaliu pe ecran. Foloseste-le daca butonul din mijloc al mouse-ului nu functioneaza sub X sau daca mouse-ul tau are numai doua butoane (Emulate3Buttons iti ofera posibilitatea de a emula butonul din mijloc prin apasarea simultana a ambelor butoane). Apoi introdu numele mouse-ului tau. Optiunea implicita, /dev/mouse, ar trebui sa mearga, din moment ce legatura a fost configurata in timpul instalarii Slackware. Daca rulezi GPM (serverul Linux pentru mouse) in modul repetor, poti configura tipul mouseului tau ca /dev/gpmdata pentru ca X sa obtina informatiile despre mouse prin gpm. In unele cazuri (in special cu mouse-uri pe bus) asta s-ar putea sa mearga mai bine, dar majoritatea utilizatorilor nu ar trebui sa faca asta. xorgconfig te va intreba daca vrei sa activezi legaturile pentru tastele speciale. Daca ai nevoie de asta scrie "y". Majoritatea utilizatorilor pot scrie "n" - scrie asta daca nu esti sigur. Figura 6-2. xorgconfig Sincronizarea pe Orizontala
In urmatoarea sectiune introdu domeniul de sincronizare pentru monitorul tau. Apasa ENTER. ca sa incepi configurarea monitoului. Vei vedea o lista de tipuri de monitoare - alege unul din ele. Fii atent sa nu depasesti specificatiile pentru monitorul tau. Asta ar putea sa iti strice componentele.
85
Slackware Linux Essentials Figura 6-3. xorgconfig Sincronizarea pe Verticalac
Specifica domeniul de sincronizare pe verticala pentru monitorul tau (probabil ca vei gasi datele in manualul monitorului). xorgconfig te va ruga sa introduci un sir de identificare a monitorului in fisierul xorg.conf. Introdu orice vrei pe aceste 3 linii (inclusiv nimic). Figura 6-4. xorgconfig Placa video
Acum ai posibilitatea sa te uiti in baza de date pentru tipuri de placi video. O sa vrei sa faci asta, deci scrie "y" si alege o placa din lista afisata. Daca nu vezi exact placa ta, incearca sa alegi una care foloseste acelasi chipset si probabil va merge.
86
Configurarea X Apoi, spune-i lui xorgconfig cat RAM ai pe placa ta video. iti va cere sa introduci niste text pentru descrierea placii video. Daca vrei, poti sa introduci descrierea pe aceste trei linii. Apoi ti se va cere sa introduci rezolutia pe care vrei sa o folosesti. Din nou, daca folosesti setarile implicite, ar trebui sa fie un bun punct de pornire. Mai tarziu vei putea modifica fisierul /etc/X11/xorg.conf si vei putea rearanja modurile astfel incat 1024x768 (sau orice altceva vrei) sa fie setarea implicita. In acest moment programul xorgconfig te va intreba daca vrei sa salvezi fisierul de configurare curent. Spune-i da si fisierul de configurare X va fi salvat, completand procesul. Acum poti porni X cu comanda startx. xorgconfig
6.2 xorgsetup A doua modalitate de a configura X este de a folosi xorgsetup, un program de configurare automat ce vine cu Slackware. Pentru a rula xorgsetup, intra ca root si scrie: # xorgsetup
Daca ai deja un fisier /etc/X11/xorg.conf (pentru ca ai configurat deja X), vei fi intrebat daca vrei sa faci o copie de siguranta inainte de a continua. Fisierul original va fi redenumit ca /etc/X11/xorg.conf.backup.
6.3 xinitrc xinit(1) startx(1), asa
este programul care porneste de fapt X; este apelat de ca s-ar putea sa-l fi observat deja (desi nu era nevoie). Fisierul sau de configurare determina ce programe (inclusiv manager de ferestre) sunt rulate la pornirea X. xinit cauta intai in directorul tau personal un fisier .xinitrc. Daca fisierul este gasit, este rulat; daca nu, este folosit /var/X11R6/lib/xinit/xinitrc (fisierul implicit pentru tot sistemul). Iata un exemplu de fisier xinitrc. #!/bin/sh # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
87
Slackware Linux Essentials userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # start some nice programs twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login
Toate acele blocuri "if" sunt acolo pentru a folosi diverse alte configurari din alte fisiere. Partea interesanta este spre sfarsit, unde sunt rulate diverse programe. Aceasta sesiune X va porni cu managerul de ferestre twm(1) un ceas si trei terminale. Inainte de ultima comanda exec exista un xterm. El va inlocui shell-ul curent (cel din care se executa scriptul xinitrc) cu comanda xterm(1). Cand iesi din acel xterm, sesiunea curenta de X va fi incheiata. Pentru a-ti particulariza initializarea X, copiaza fisierul implicit, /var/X11R6/lib/xinit/xinitrc in ~/.xinitrc si modifica-l, inlocuind liniile de program cu ceea ce doresti tu. Sfarsitul fisierului meu este: # Start the window manager: exec startkde
88
Configurarea X In xinitrc.* sunt mai multe fisiere /var/X11R6/lib/xinit care corespund diverselor managere de ferestre si GUI-uri. Le poti folosi pe acelea daca doresti.
6.4 xwmconfig De ani de zile, Unix a fost aproape exclusiv sistemul de operare al serverelor, cu exceptia statiilor de lucru profesionale de mare putere. Numai cei cu inclinatii tehnice foloseau un sistem de operare asemanator cu Unix si asta s-a reflectat in interfata cu utilizatorul. GUI-urile au tendinta sa fie cat mai simple, proiectate pentru a rula doar cateva aplicatii grafice necesare, cum ar fi programe CAD sau generatoare de imagini. Majoritatea administrarii sistemului si fisierelor era facuta din linia de comanda. Diversi vanzatori (Sun Microsystems, Silicon Graphics, etc.) vindeau statii de lucru cu intentia de a oferi o experienta cat mai omogena, dar multitudinea de unelte GUI folosite de dezvoltatori a dus, inevitabil, la distrugerea uniformitatii desktop-ului. O bara de defilare s-ar putea sa nu arate la fel in doua aplicatii. Meniurile s-ar putea sa apara in locuri diferite. Programele ar avea butoane si cutii de selectie diferite. Atata timp cat utilizatorii erau cu precadere profesionisti tehnici, nimic din acestea nu conta.. Odata cu aparitia sistemelor de operare gratuite asemananatoare cu Unix si cu cresterea numarului si varietatii aplicatiilor grafice, X a castigat un mare numar de utilizatori de desktop. Majoritatea utilizatorilor, desigur, sunt obisnuiti cu experienta consistenta oferita de Microsoft Windows si Apple MacOS; lipsa acestei consistente in aplicatiile bazate pe X devenise o bariera spre acceptarea sa pe scara larga. Drept raspuns, doua proiecte open-source au fost initiate: Mediul Desktop K, sau KDE si Mediul de Modelare a Obiectelor Retea GNU, cunoscut drept GNOME. Fiecare are o mare varietate de aplicatii, de la bare de aplicatii si managere de fisiere pana la jocuri si suite de birou, scrise cu acelasi set de unelte GUI si strans integrate, pentru a oferi un dekstop consistent. Diferentele intre KDE si GNOME sunt in general destul de subtile. Arata diferit unul de altul pentru ca fiecare foloseste alt set de unelte. KDE este bazat pe libraria Qt de la Troll Tech AS, in timp de GNOME foloseste GTK, un set de unelte dezvoltat initial pentru Programul de Manipulare a Imaginilor GNU (sau The GIMP, pe scurt). Ca proiecte separate, KDE si GNOME au fiecare proprii designeri si programatori, fiecare cu stiluri si
89
Slackware Linux Essentials filozofii diferite. In orice caz, rezultatul a fost in esenta acelasi: un mediu desktop consistent, strans integrat cu o colectie de aplicatii. Functionalitatea, utilizabilitatea si pura frumusete a atat KDE cat si GNOME rivalizeaza cu orice altceva disponibil pentru alte sisteme de operare. Partea cea mai buna este, totusi, ca aceste desktop-uri sunt gratuite. Asta inseamna ca poti avea ori unul din ele ori amandoua (da, in acealasi timp). Alegerea este a ta. In plus fata de desktop-urile GNOME si KDE, Slackware include o larga colectie de managere de ferestre. Unele sunt proiectate sa emuleze alte sisteme de operare, unele pentru personalizare, altele pentru viteza. Ai o varietate destul de mare. Desigur, poti sa instalezi cat de multe vrei, sa te joci cu ele si sa decizi care iti place cel mai mult. Pentru a face usoara alegerea desktop-ului, Slackware include un program numit xwmconfig care poate fi folosit la alegerea unui desktop sau manager de ferestre. Este rulat in modul urmator: % xwmconfig
Figura 6-5. Configurarea Desktop-ului cu xorgconfig
Ti se va oferi o lista cu desktop-urile si managerii de ferestre. Alegel pe cel pe care il vrei din lista. Fiecare utilizator din sistemul tau va trebui sa ruleze acest program, din moment ce utilizatori diferiti pot folosi desktop-uri diferite si nu toti vor dori sa foloseasca managerul implicit pe care l-ai ales la instalare. Apoi porneste X si esti gata de lucru.
90
Configurarea X
6.5 xdm Pe masura ce Linux devine din ce in ce mai folositor ca sistem de operare desktop, multi utilizatori doresc ca sistemul lor sa porneasca direct intr-un mediu grafic. Pentru asta, trebuie sa-i spui lui Slackware sa porneasca direct in X si sa-i aloci un manager de login. Slackware vine cu trei unelte grafice de login, xdm(1), kdm, si gdm(1). xdm este managerul grafic de login livrat cu sistemul X.org. Este omniprezent, dar nu are atatea caracteristici ca alternativele. kdm este managerul grafic de login livrat cu KDE, Mediul Desktop K. In sfarsit, gdm este managerul de login livrat cu GNOME. Oricare dintre acestea iti vor permite login-ul cu userul dorit si alegerea desktop-ului pe care vrei sa-l folosesti. Din nefericire, Slackware nu include un program dragut, ca xwmconfig pentru alegerea managerului de login pe care vrei sa-l folosesti asa ca, daca toate sunt instalate, va trebui sa faci niste modificari pentru a-l alege pe cel pe care-l doresti. Pentru a porni X la boot, trebuie sa pornesti in nivelul de rulare 4. Nivelele de rulare sunt doar o modalitate de a-i spune lui init(8) sa faca ceva diferit cand porneste sistemul de operare. Vei face asta modificand fisierul de configurare pentru init, /etc/inittab. # These are the default runlevels in Slackware: # 0 = halt # 1 = single user mode # 2 = unused (but configured the same as runlevel 3) # 3 = multiuser mode (default Slackware runlevel) # 4 = X11 with KDM/GDM/XDM (session managers) # 5 = unused (but configured the same as runlevel 3) # 6 = reboot # Default runlevel. (Do not set to 0 or 6) id:3:initdefault:
Pentru a face ca Slackware sa porneasca in mediul grafic, vei schimba 3 in 4. # Default runlevel. (Do not set to 0 or 6) id:4:initdefault:
Acum Slackware va porni in nivelul de rulare 4 si va executa Acest fisier porneste X si apeleaza managerul de login pe care l-ai ales. Deci, cum alegi un manager de login? Sunt cateva moduri de a face asta si le voi explica dupa ce aruncam o privire in fisierul rc.4.
/etc/rc.d/rc.4.
91
Slackware Linux Essentials # Try to use GNOME's gdm session manager: if [ -x /usr/bin/gdm ]; then exec /usr/bin/gdm -nodaemon fi # Not there? OK, try to use KDE's kdm session manager: if [ -x /opt/kde/bin/kdm ]; then exec /opt/kde/bin/kdm -nodaemon fi # If all you have is XDM, I guess it will have to do: if [ -x /usr/X11R6/bin/xdm ]; then exec /usr/X11R6/bin/xdm -nodaemon fi
Dupa cum vezi aici, rc.4 verifica intai daca gdm este executabil si daca da, il executa. Al doilea in lista este kdm, si in final, xdm. O modalitate de a alege un manager de login este de a le dezinstala pe cele pe care nu le vei folosi, utilizand removepkg. Poti gasi mai multe despre removepkg in Capitolul 18. Optional, poti sterge permisiunile de executie ale acelor fisiere pe care nu vrei sa le folosesti. Vom discuta chmod in Capitolul 9. # chmod -x /usr/bin/gdm
In sfarsit, poti comenta liniile care nu vrei sa fie folosite de managerul de login. # Try to use GNOME's gdm session manager: # if [ -x /usr/bin/gdm ]; then # exec /usr/bin/gdm -nodaemon # fi # Not there? OK, try to use KDE's kdm session manager: if [ -x /opt/kde/bin/kdm ]; then exec /opt/kde/bin/kdm -nodaemon fi # If all you have is XDM, I guess it will have to do: if [ -x /usr/X11R6/bin/xdm ]; then exec /usr/X11R6/bin/xdm -nodaemon fi
Toate liniile care incep cu diez (#) sunt considerate comentarii si shell-ul trece peste ele. Asadar, chiar daca gdm este instalat si executabil, shell-ul (in acest caz bash) nu se va mai chinui sa verifice daca exista.
92
Capitolul 7
Initializarea (booting) 7.1 LILO 7.2 LOADLIN 7.3 Dual Boot
Procesul de boot pe sistemul tau Linux poate fi cateodata simplu si cateodata complicat. Multi utilizatori instaleaza Slackware pe calculatoarele lor si gata. Il deschid si e gata de folosire. Alteori, doar pornirea unei masini poate fi o cazna. Pentru majoritatea utilizatorilor, LILO functioneaza cel mai bine. Slackware include LILO si Loadlin pentru pornirea Slackware Linux. LILO functioneaza de pe o partitie de pe harddisc, MBR-ul de pe un hard-disc sau o discheta, facandu-l o unealta foarte versatila. Loadlin functioneaza din linia de comanda DOS, omorand DOSul si invocand Linux. O alta unealta foarte populara pentru pornirea Linux-ului este GRUB. GRUB nu este inclus sau suportat oficial de Slackware. Slackware detine standardul “asta-i incercata si merge” pentru ceea ce ajunge sa fie inclus in distributie. Desi GRUB merge bine si include unele caracteristici pe care LILO nu le are, LILO se descurca foarte bine cu toate misiunile esentiale ale unui boot-loader si are un record dovedit si incercat in timp. Fiind mai tanar, GRUB nu a ajuns inca sa aiba aceasta mostenire. Deoarece nu este inclus in Slackware, nu vom discuta despre el aici. Daca doresti sa folosesti GRUB (poate ca a venit cu alt sistem de operare si vrei sa-l folosesti pentru dual-boot), citeste documentatia GRUB. Aceasta sectiune discuta utilizarea LILO si Loadlin, cele doua managere de boot incluse in Slackware. De asemenea, explica scenariile tipice de dualboot si cum poti sa le configurezi.
93
Slackware Linux Essentials
7.1 LILO Linux Loader, sau LILO, este cel mai popular manager de boot in folosinta pe sistemele Linux. Este foarte configurabil si poate fi folosit cu usurinta pentru a porni alte sisteme de operare. Slackware Linux vine cu un utilitar de configurare bazat pe meniu, numit liloconfig. Acest program este rulat prima data in timpul procesului de instalare, dar il poti invoca mai tarziu scriind liloconfig in linia de comanda. LILO citeste configuratia din fisierul /etc/lilo.conf(5). Nu este citita la fiecare boot, ci de fiecare data cand instalezi LILO. LILO trebuie instalat in sectorul de boot de fiecare data cand aduci schimbari configuratiei. Multe erori ale LILO apar datorita schimbarilor aduse in fisierul lilo.conf dar neimplementarii acestor schimbari prin re-rularea LILO. liloconfig te va ajuta sa construiesti fisierul de configurare astfel incat sa poti instala LILO pe sistemul tau. Daca preferi sa modifici fisierul /etc/lilo.conf de mana, atunci reinstaleaza LILO scriind /sbin/lilo (ca root) la linia de comanda. Prima data cand vei invoca liloconfig, va arata astfel: Figura 7-1. liloconfig
94
Initializarea (booting) Daca este prima data cand configurezi LILO, ar trebui sa alegi optiunea simple. Altfel, s-ar putea sa descoperi ca optiunea expert este mai rapida daca esti familiarizat cu LILO si Linux. Selecteaza simple pentru a incepe sa configurezi LILO. Daca optiunea kernel frame buffer support este compilata in kernelul tau, liloconfig te va intreba ce rezolutie vrei sa folosesti. Acesta rezolutie este folosita si de serverul frame buffer XFree86. Daca nu vrei sa rulezi consola in mod video, alege normal pentru a pastra modul text standard de 80x25 caractere. Urmatoarea parte din configurarea LILO este sa alegi unde il vrei instalat. Acesta este probabil cel mai important pas. Lista de mai jos explica locurile de instalare: Root Aceasta optiune instaleaza LILO la inceputul partitiei radacina din Linux. Aceasta este cea mai sigura optiune daca ai si alte sisteme de operare instalate pe calculator. Ea te asigura ca alte managere de boot nu sunt suprascrise. Dezavantajul este ca LILO nu se va incarca de acolo decat daca discul cu Linux este primul din sistem. De accea, multi utilizatori prefera sa creeze o mica partitie /boot unde LILO le poate gasi. Versiunile anterioare de LILO contineau o eroare celebra, cunoscuta drept “limita cilindrului 1024”. LILO nu putea sa incarce kernel-uri de pe partitii care incepeau dupa al 1024lea cilindru. Editiile recente de LILO au eliminat aceasta problema. Floppy Aceasta metoda este si mai sigura decat cea precedenta. Ea creaza o discheta de boot pe care o poti folosi pentru a porni sistemul tau Linux. Aceasta tine managerul de boot departe de hard-disc, astfel ca poti utiliza aceasta discheta doar cand vrei sa pornesti Slackware. Neajunsurile sunt evidente. Dischetele sunt de notorietate pentru un comportament anarhic, predispuse la erori. In al doilea rand, managerul de boot nu mai este inchis in calculator. Daca pierzi discheta, trebuie sa creezi alta pentru a-ti putea porni sistemul. MBR Vei folosi aceasta metoda daca Slackware va fi unicul tau sistem de operare sau daca vei folosi LILO pentru a alege din sisteme de operare multiple. Aceasta este metoda preferata pentru instalarea LILO si va functiona cu aproape orice sistem. Aceasta optiune va suprascrie orice alt manager de boot ai instalat in MBR. .
95
Slackware Linux Essentials Dupa ce ai ales locul de instalare, liloconfig va scrie fisierul de configurare si va instala LILO. Asta-i tot. Daca alegi modul expert, vei obtine un meniu special. El iti permite sa ajustezi fisierul /etc/lilo.conf sa adaugi alte sisteme de operare la meniul de boot si sa faci ca LILO sa trimita parametri speciali catre kernel la pornire. Meniul expert arata in felul urmator: Figura 7-2. liloconfig Meniul expert
Oricare ar fi configuratia sistemului tau, este foarte usor sa configurezi un manager de boot. liloconfig o face sa para o joaca de copii.
7.2 LOADLIN Cealalta optiune de boot care vine cu Slackware Linux este LOADLIN. LOADLIN este un executabil DOS, care poate fi folosit pentru a porrni Linux dintr-un sistem DOS. El necesita ca kernelul Linux sa fie pe o partitie DOS, astfel incat LOADLIN sa-l poata incarca si sa porneasca sistemul in mod corect. In timpul procesului de instalare, LOADLIN va fi copiat in directorul personal al utilizatorului root ca fisier .ZIP. Nu exista un proces automat de configurare pentru LOADLIN. Va trebui sa copiezi kernelul Linux (de obicei /boot/vmlinuz) si fisierul LOADLIN din directorul personal al utilizatorului root pe partitia de DOS.
96
Initializarea (booting) LOADLIN este util cand vrei sa creezi un meniu de boot pe partitia ta DOS. Un meniu poate fi adaugat in fisierul AUTOEXEC.BAT care sa iti poata oferi optiunea intre Linux si DOS. Alegerea optiunii Linux va rula LOADLIN, pornind astfel sistemul Slackware. Urmatorul fisier AUTOEXEC.BAT sub Windows 95, va oferi un meniu de boot suficient: @ECHO OFF SET PROMPT=$P$G SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\ CLS ECHO Please Select Your Operating System: ECHO. ECHO [1] Slackware Linux ECHO [2] Windows 95 ECHO. CHOICE /C:12 "Selection? -> " IF ERRORLEVEL 2 GOTO WIN IF ERRORLEVEL 1 GOTO LINUX :WIN CLS ECHO Starting Windows 95... WIN GOTO END :LINUX ECHO Starting Slackware Linux... CD \LINUX LOADLIN C:\LINUX\VMLINUZ ROOT=
RO GOTO END :END
Va trebui sa specifici partitia radacina ca un periferic Linux, cum ar fi /dev/hda2 sau altceva. Poti folosi LOADLIN si din linia de comanda. Il folosesti exact ca in exemplul de mai sus. Documentatia LOADLIN vine cu multe exemple despre modul de folosire.
7.3 Dual Boot Multi utilizatori isi configureaza sistemul sa porneasca Slackware Linux si un alt sistem de operare. O sa descriem scenariile tipice de dualboot, in cazul in care intampini dificultati in configurarea sistemului tau.
97
Slackware Linux Essentials
7.3.1 Windows Configurarea calculatorului cu MS Windows si Linux este, probabil, cel mai comun scenariu de dual-boot. Sunt numeroase posibilitati de a realiza configurarea de boot, dar aceasta sectiune va acoperi numai doua. Deseori, cand cineva vrea sa configureze un sistem cu dual-boot, va concepe un plan perfect in ceea ce priveste locatiile, dar va distruge tot cu ordinea instalarilor. Este foarte important sa intelegi ca sistemele de operare trebuiesc instalate intr-o anumita ordine pentru a avea un dual-boot functional. Linux ofera intotdeauna controlul asupra a ceea ce va fi scris in MBR. De aceea, sfatul nostru este ca Linux sa fie instalat ultimul. Windows ar trebui instalat primul, deoarece intotdeauna va suprascrie MBR-ul cu propriul utilitar de boot, distrugand orice a fost scris inainte de catre Linux. 7.3.1.1 Using LILO
Majoritatea vor dori sa foloseasca LILO pentru a alege intre Linux si Windows. Dupa cum am spus mai sus, ar trebui sa instalezi intai Windows, apoi Linux. Sa zicem ca ai un unic hard-disc IDE de 40GB in sistemul tau. De asemenea, sa zicem ca vrei sa aloci jumatate din spatiu pentru Windows si cealalata jumatate pentru Linux. Aceasta va fi o problema cand vei vrea sa pornesti in Linux. 20GB 1GB 19GB
Windows boot (C:) Linux root (/) Linux /usr (/usr)
De asemenea, va trebui sa pui de-o parte niste spatiu pentru partitia swap Linux. Regula nescrisa este sa folosesti de doua ori cantitatea de RAM pe care o ai in sistem. Un sistem cu 64MB de RAM ar avea 128MB de swap si asa mai departe. Necesarul adecvat de spatiu este tinta multor discutii aprinse pe IRC si Usenet. Nu exista un mod “corect” de a o face, dar urmand regula de mai sus, ar trebui sa fie suficient. Dupa ce ai creat partitiile, ar trebui sa instalezi Windows. Dupa ce acesta este functional, ar trebui sa instalezi Linux. Instalarea LILO va avea nevoie de atentie speciala. Va trebui sa folosesti modul expert la instalarea sa. Incepe o noua configurare de LILO. Va trebui sa-l instalezi in MBR, astfel incat sa poata fi folosit la alegerea intre cele doua sisteme. Din meniu, adauga partitia Linux si partitia Windows (sau DOS). Odata ce ai terminat, poti instala LILO.
98
Initializarea (booting) Reporneste calculatorul. LILO ar trebui sa se incarce sa sa afiseze un meniu, lasandu-te sa alegi dintre cele doua sisteme de operare pe care le ai instalate. Alege numele sistemului de operare pe care vrei sa-l incarci (aceste nume au fost alese cand ai configurat LILO). LILO este un manager de boot destul de configurabil. Nu este limitat numai la Linux si DOS. Poate porni cam orice. Paginile man pentru lilo(8) si lilo.conf(5) iti vor oferi informatii mai detaliate. Dar daca LILO nu merge? Sunt cazuri in care LILO pur si simplu nu va merge pe o anumita masina. Din fericire, exista o alta modalitate de a realiza un dual-boot cu Linux si Windows. 7.3.1.2 Using LOADLIN
Aceasta metoda poate fi folosita daca LILO nu merge pe sistemul tau, sau daca nu vrei sa instalezi LILO. Acesta metoda este ideala pentru utilizatorii care reainstaleaza des Windows. De fiecare daca cand reinstalezi Windows, MBR-ul va fi suprascris, distrugand instalarea de LILO. Cu LOADLIN, aceata nu mai e o problema. Marele dezavantaj este ca nu poti folosi LOADLIN decat pentru a porni Linux. Cu LOADLIN, poti instala sistemele de operare in ce ordine vrei tu. Fii atent la lucrurile care se vor instala in MBR. LOADLIN se bazeaza pe faptul ca partitia de Windows este o partitie de boot. Astfel, in timpul instalarii Slackware, asigura-te ca sari peste pasul instalarii LILO. Dupa ce ai instalat sistemele de operare, copiaza fisierul loadlinX.zip (unde X este un numar de versiune, cum ar fi 16a) din directorul personal al utilizatorului root pe partitia Windows. Va trebui sa fii in Linux pentru ca asta sa mearga. Iata un exemplu despre cum se face asta: # # # # # # # #
mkdir /win mount -t vfat /dev/hda1 /win mkdir /win/linux cd /root cp loadlin* /win/linux cp /boot/vmlinuz /win/linux cd /win/linuz unzip loadlin16a.zip
Aceasta va crea un director numit C:\LINUX pe partitia ta Windows (presupunand ca este /dev/hda1) si va copia lucrurile necesare pentru LOADLIN. Dupa ce ai facut asta, trebuie sa repornesti in Windows si sa configurezi un meniu de boot. Odata ajuns in Windows, intra in linia de comanda DOS. In primul rand, trebuie sa te asiguri ca sistemul este configurat sa nu porneasca o interfata grafica la boot.
99
Slackware Linux Essentials C:\> cd \ C:\> attrib -r -a -s -h MSDOS.SYS C:\> edit MSDOS.SYS
Adauga aceasta linie in fisier: BootGUI=0
Acum salveaza fisierul si iesi din editor. Acum modifica fisierul astfel incat sa poti adauga un meniu de boot. Urmatorul este un exemplu de configurare a unui bloc de meniu de boot in
C:\AUTOEXEC.BAT AUTOEXEC.BAT
cls echo System Boot Menu echo. echo 1 - Linux echo 2 - Windows echo. choice /c:12 "Selection? -> " if errorlevel 2 goto WIN if errorlevel 1 goto LINUX :LINUX cls echo "Starting Linux..." cd \linux loadlin c:\linux\vmlinuz root=/dev/hda2 ro goto END :WIN cls echo "Starting Windows..." win goto END :END
Linia cheie este cea care ruleaza LOADLIN. Ii spunem ce kernel sa incarce, care este partitia radacina Linux si ca o vrem montata initial numai in modul citire. Aceste unelte sunt oferite de Slackware Linux. Exista numeroase alte managere de boot pe piata, dar acestea ar trebui sa functioneze in majoritatea cazurilor de dual-boot. 7.3.1.3 “manarie” Windows NT Invechita
Acesta este cea mai putin comuna situatie de dual-boot. Mai demult, LILO nu putea sa porneasca un sistem Windows NT, facandu-i pe utilizatorii de Linux sa fie nevoiti sa modifice NTLDR, ceea ce punea mai multe probleme decat un dual-boot intre Windows 9x si Linux. Ia aminte
100
Initializarea (booting) ca urmatoarele instructiuni sunt invechite. De mai multi ani, LILO poate porni un sistem Windows NT/2000/XP/2003. Totusi, daca folosesti o masina antica, vei avea nevoie tocmai de o astfel de schema. 1. Instaleaza Windows NT 2. Instaleaza Linux si asigura-te ca LILO este instalat in superblocul partitiei Linux 3. Ia primii 512 octeti ai partitiei Linux si stocheaza-i pe partitia Windows NT 4. Modifica fisierul C:\BOOT.INI sub Windows NT si adauga o optiune Linux Instalarea Windows NT nu ar trebui sa puna probleme, la fel instalarea Linux. De aici incolo, lucrurile sunt putin mai grele. Sa iei primii 512 octeti ai partitiei Linux, este mai usor decat suna. Nu trebuie decat sa fii in Linux ca sa faci asta. Presupunand ca partitia Linux este /dev/hda2, da comanda: # dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512
Asta-i tot. Acum, trebuie sa copiezi pe partitia Windows NT. Aici vei intampina alta problema. Linux nu are un suport stabil pentru scrierea pe partitii Window NT. Daca ai instalat Windows NT si ai formatat discul ca NTFS, va trebui sa copiezi fisierul pe o discheta FAT si apoi sa o citesti in Windows NT. Oricum ai face-o, trebuie sa duci fisierul /tmp/bootsect.lnx de pe discul Linux in C:\BOOTSECT.LNX pe discul Windows NT. Ultimul pas este sa adaugi o optiune in meniul de boot Windows NT. Sub Windows NT deschide o linie de comanda. C:\WINNT> cd \ C:\> attrib -r -a -s -h boot.ini C:\> edit boot.ini
Adauga acesta linie la sfarsitul fisierului: C:\bootsect.lnx="Slackware Linux"
Salveaza schimbarile si iesi din editor. Cand vei reporni Windows NT, vei avea o optiune Linux in meniu. Alegand-o, vei putea porni in Linux.
7.3.2 Linux Da, acest lucru chiar se intampla. Acesta este cu siguranta cel mai usor scenariu de dual-boot. Poti folosi LILO si sa adaugi mai multe intrari in fisierul /etc/lilo.conf Asta-i tot.
101
Capitolul 8
Shell-ul 8.1 Utilizatorii 8.2 Linia de comanda 8.3 Shell-ul Bourne Again (bash) 8.4 Terminale virtuale
Intr-un mediu grafic, interfata este oferita de un program care creeaza ferestre, bare de scroll, meniuri, etc. Intr-un mediu al liniei de comanda, interfata utilizator este oferita de un “shell”, care interpreteaza comenzi si in general face lucrurile folosibile. Imediat dupa logare (ceea ce se discuta in acest capitol), utilizatorii sunt pusi intr-un shell si li se permite sa isi vada de treaba. Acest capitol are rol de introducere in shell si la cel mai obisnuit shell intre utilizatorii Linux -- Shell-ul Bourne Again (bash). Pentru informatii mai detaliate despre orice in acest capitol, verifica pagina de manual bash(1).
103
Slackware Linux Essentials
8.1 Utilizatorii 8.1.1 Logarea Deci, ai boot-at si te uiti la ceva care arata cam asa: Welcome to Linux 2.4.18 Last login: Wed Jan 1 15:59:14 -0500 2005 on tty6. darkstar login:
Hmm.. nu a spus nimeni nimic despre un login. Si ce este un darkstar? Nu iti face griji; probabil ca nu ai lansat accidental un comm-link hiper spatial catre luna artificiala a Imperiului. (Ma tem ca protocolul comm-link hiper spatiu nu este suportat in mod actual de catre nucleul Linux. Poate o ramura a kernelului 2.6 sa ofere acest mult asteptat protocol). Nu, darkstar este doar numele unuia dintre calculatoarele noastre si numele lui este marcat ca si default. Daca ai specificat un nume pentru calculatorul tau in timpul instalarii, ar trebui sa il vezi in loc de darkstar. Cat pentru login... Daca asta este prima data pentru tine, vei vrea sa te loghezi ca root. Ti se va cere o parola; daca ai pus una in timpul procesului de instalare asta e ceea ce cere. Daca nu, apasa doar pe enter. Asta e -- esti inauntru!
8.1.2 Root: Super Utilizatorul Bine, cine sau ce este root? Si ce face cu un cont pe sistemul tau? Pai, in lumea Unix si sisteme de operare similare (ca Linux), sunt tot felul de utilizatori. Vom intra in mai multe detalii despre asta mai tarziu, dar lucrul important de stiut este ca root este utilizatorul deasupra tuturor utilizatorilor; root este atotputernic si atotstiutor si nimeni nu trece peste root. Pur si simplu nu e permis. root este ceea ce noi numim un “superutilizator”, si pe buna dreptate. Si cel mai bun lucru este ca root esti tu. Misto, nu? Daca nu esti sigur: da, e foarte misto. Poanta este ca root are permisiunea de a strica orice daca asta ii este dorinta. Poate ca vrei sa sari inainte la Sectiunea 12.1.1 si sa vezi despre adaugarea unui utilizator; pe urma logheaza-te ca acel utilizator si opereaza de acolo. Un sfat din batrani spune ca este bine sa devii super utilizator doar cand este absolut necesar, pentru a minimaliza posibilitatea de a strica ceva accidental.
104
Shell-ul Apropo, daca decizi ca vrei sa fii root cat timp esti logat ca si altcineva, nici o problema. Foloseste comanda su(1). Ti se va cere parola root si pe urma te va face root pana cand tastezi exit sau logout. Poti de asemenea deveni orice alt utilizator folosind su, dat fiind ca stii parola acelui utilizator: su logan, de exemplu, te va face eu. root este disponibil pentru orice utilizator, fara a se cere parola utilizatorului respectiv.
8.2 Linia de comanda 8.2.1 Rularea programelor E greu sa rezolvi ceva fara a rula un program; ai putea probabil sa sprijini ceva cu calculatorul sau sa tii o usa deschisa si cateva vor face cel mai frumos zumzait cand sunt pornite, dar cam asta e tot. Si cred ca putem fi cu totii de acord ca folosirea lui ca stop de usa zumzaitor nu este ceea ce l-a facut popular. Deci, tii minte cum aproape totul in Linux este un fisier? Pai, asta se aplica si programelor. Fiecare comanda pe care o tastezi (care nu este incorporata in shell) se afla intr-un fisier undeva. Rulezi un program prin simpla specificare a intregii cai spre acesta. De exemplu, tii minte comanda su din ultima sectiune? Pai, fisierul respectiv este de fapt in directorul /bin. /bin/su ar fi un mod de a-l rula. Si de ce atunci doar tastand su functioneaza? Doar nu ai spus ca se afla in /bin. Ar putea la fel de usor sa fie in /usr/local/share, nu? De unde a stiut? Raspunsul pentru asta se afla in variabila de mediu PATH. Majoritatea shell-urilor au fie PATH sau ceva foarte asemanator cu PATH. Ea contine de fapt o lista de directoare in care sa se uite dupa programe pe care incerci sa le rulezi. Deci cand ai tastat su, shell-ul tau a parcurs lista de directoare, verificand fiecare director pentru un fisier executabil numit su pe care poate sa il ruleze; primul de care da, il ruleaza. Aceasta se intampla de fiecare data cand rulezi un program fara a specifica intreaga cale catre el; daca primesti o eroare “Command not found” asta inseamna doar ca programul pe care ai incercat sa il rulezi nu se afla in PATH. -ul tau. (Desigur, acesta ar fi adevarat daca programul nu exista deloc...). Vom discuta despre variabile de mediu in mai mult detaliu in sectiunea intitulata Shell-ul Bourne Again (bash).
105
Slackware Linux Essentials De asemenea tine minte ca “.” este prescurtarea pentru “directorul in care ma aflu”, deci daca se intampla sa fii in /bin, ./su ar functiona ca si cum i-ai fi dat intreaga cale.
8.2.2 Wildcards Aproape orice shell recunoaste cateva caractere ca inlocuitoare ceea ce inseamna ca acele caractere speciale pot tine locul oricaror alte caractere. Asemenea caractere sunt numite “wildcards”; cele mai obisnuite sunt * si ?. Prin conventie, ? de obicei tine locul unui singur caracter, oricare ar fi acela. De exemplu, sa presupunem ca esti intr-un director cu trei fisiere: ex1.txt, ex2.txt, si ex3.txt.Vrei sa copiezi toate acele fisiere (folosind comanda cp despre care discutam in sectiunea intitulata cp in Capitolul 10) intr-un alt director, sa spunem /tmp. Pai, tastand cp ex1.txt ex2.txt ex3.txt /tmp este prea mult lucru. Este mult mai usor sa scrii cp ex?.txt /tmp; caracterul ? se va potrivi cu fiecare dintre caracterele “1”, “2”, si “3”, si fiecare la randul lui va fi inlocuit. Ce anume spui? Tot prea de lucru? Ai dreptate. Este infricosator; avem legi impotriva muncii care sa ne protejeze de astfel de lucruri. Din fericire de asemenea avem si * Dupa cum s-a spus deja, * se potriveste “cu orice numar de caractere”, incluzand 0 cat si caracterul vid (''). Deci daca acele trei fisiere sunt singurele din director, am putea sa spunem la fel de simplu cp cp * /tmp si sa le luam pe toate dintr-o lovitura. Sa presupunem, desi, ca mai este si un fisier ex.txt si unul hejaz.txt. Vrem sa copiem ex.txt dar nu hejaz.txt; cp ex* /tmp va face asta pentru noi. cp ex?.txt /tmp, desigur va copia doar cele trei fisiere originale; nu este nici un caracter in ex.txt care sa se potriveasca cu acel ?, asa ca ar fi exclus. Un alt wildcard folosit frecvent este perechea de paranteze drepte [ ]. Orice caractere din interiorul parantezelor [] vor fi inlocuite in acelasi loc cu ceea ce se potirveste. Suna confuz? Nu e chiar asa de rau. Sa presupunem, spre exemplu, ca avem intr-un director urmatoarele opt fisiere: a1, a2, a3, a4, aA, aB, aC, si aD . Dorim sa listam doar fisierele care se termina in cifre. [ ] va face asta pentru noi. % ls a[1-4] a1 a2 a3 a4
Dar daca de fapt dorim doar a1, a2, si a4? In exemplul precedent am folosit caracterul - pentru a specifica toate valorile intre 1 si 4. Putem separa valorile intermediare folosind virgula:
106
Shell-ul % ls a[1,2,4] a1 a2 a4
Stiu la ce va ganditi: “Cum ramane cu literele?” Linux este casesensitive adica a si A sunt caractere diferite si legatura dintre ele este doar in mintea noastra. Literele mari sunt inaintea literelor mici, asa ca A si B sunt inaintea lui a si b. Continuand exemplul nostru, daca dorim a1, si A1, le putem gasi repede folosind [ ]. % ls [A,a]1 A1 a1
De retinut ca daca am fi folosit minus in loc de virgula, rezultatul era unul gresit: % ls [A-a]1 A1 B1 C1 D1 a1
Putem, de asemenea, combina semnul minus cu virgula. % ls [A,a-d] A1 a1 b1 c1 d1
8.2.3 Redirectionarea Intrarii/Iesirii si Intubarea (Urmeaza ceva misto.) % ps > blargh
Stii ce inseamna asta? Sunt eu ruland ps pentru a vedea ce procese ruleaza; ps este discutat in Capitolul 11.3. Nu aceasta este partea misto. Partea misto e > blargh, care inseamna in mare ”ia iesirea de la ps si scrie asta intr-un fisier numit blargh”. blargh. Dar stai, devine si mai misto. % ps | less
Aceasta ia iesirea de la ps si o “intubeaza” prin less, asa pot sa trec peste ea dupa bunul plac. % ps >> blargh
Acesta este al treilea cel mai folosit caracter de redirectionare; face acelasi lucru ca si “>”, doar ca “>>” va adauga iesirea de la ps fisierului blargh, daca fisierul exista. Daca nu, la fel ca si cu “>”, va fi creat. (“>” va sterge continutul actual al lui blargh.)
107
Slackware Linux Essentials Mai este si un operator “<” care inseamna “ ia intrarea de la urmatoarele”, dar nu este folosit la fel de des. % fromdos < dosfile.txt > unixfile.txt
Redirectionarea devine cu adevarat amuzanta cand incepi sa o stivuiesti: % ps | tac >> blargh
Aceasta va rula ps, va inversa linile iesirii sale si va adauga acestea fisierului blargh. Poti stivui cati operatori vrei; dar fi atent sa tii minte ca ele sunt interpretate de la stanga la dreapta. Vezi pagina de manual bash(1) pentru informatii mai detaliate despre redirectionare.
8.3 Shell-ul Bourne Again (bash) 8.3.1 Variabile de Mediu Un sistem Linux este o bestie complexa si sunt multe de care trebuie sa tii cont, multe detalii mici care apar in interactiunile tale normale cu diferite programe (cateva de care probabil ca nici nu trebuie sa fi constient). Nimeni nu vrea sa transmita o sumedenie de optiuni fiecarui program care este rulat, spunandu-i ce fel de terminal este folosit, hostname-ul calculatorului, cum ar trebui sa arate prompt-ul lor... . Deci ca si un mecanism de asigurare, utilizatorii au ceea ce se numeste un mediu. Mediul defineste conditiile in care vor fi rulate programele si putin din aceasta definitie este variabila; utilizatorul o poate altera si sa se joace cu ea, cum este si normal intr-un sistem Linux. Aproape orice shell va avea variabile de mediu (daca nu, probabil ca nu este un shell foarte utilizabil). Aici vom face o prezentare a comenzilor pe care bash le ofera pentru manipularea variabilelor de mediu. set de sine statator iti va arata toate variabilele de mediu care sunt precizate in mod curent, la fel si valorile lor. Ca majoritatea comenzilor bash incorporate, poate sa faca si multe alte lucruri (cu parametrii); desi vom lasa pagina manualului bash(1)sa vorbeasca despre aceasta. Exemplul 8-1 este un extras dintr-o comanda set pe computerul unui autor. Remarcati aici variabila PATH discutata anterior. Programele din oricare director specificat in PATH poate fi rulat prin simpla tastare a numelui fisierului.
108
Shell-ul Exemplul 8-1. Afisarea varibilelor cu set % set PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/ X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/logan QTDIR=/usr/local/lib/qt REMOTEHOST=ninja.tdn SHELL=/bin/bash % unset VARIABLE va inlatura orice variabile pe care i le dai, nimicind si variabila si valoarea ei; bash va uita ca acea variabila a existat vreodata. (Nu iti face griji. Doar daca nu e ceva ce ai definit explicit in acea sesiune, probabil ca va fi redefinit in orice alta sesiune.)
unset
% export VARIABLE=some_value
Acum, comanda export este foarte folositoare. Folosind-o ii dai variabilei de mediu VARIABLE valoarea “o_valoare_oarecare”; daca VARIABLE nu a existat, acum exista. Daca VARIABLE avea deja o valoare, pai, s-a dus. Asta nu e prea bine, daca incerci doar sa adaugi un director variabile tale PATH. In acest caz, probabil ca vrei sa faci ceva de genul: % export PATH=$PATH:/some/new/directory
Ia in seama folosirea $PATH acolo: cand vrei ca bash a interpreteze o variabila (sa o inlocuiasca cu valoarea ei), pune un $ in fata numelui variabilei. De exemplu , echo $PATH va afisa valoarea lui PATH, in cazul meu: % echo $PATH /usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6 /bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
109
Slackware Linux Essentials
8.3.2 Completarea Tab (Urmeaza ceva interesant..) 1. O interfata de linie de comanda inseamna ca vei tasta mult. 2. Tastatul este munca. 3. Nimanui nu-i place munca. Din 3 si 2, putem determina ca 4) nimanui nu-i place sa tasteze. Din fericire, bash ne salveaza de 5 (nimanui nu-i place o interfata de linie de comanda). Te intrebi cum realizeaza bash aceasta fapta minunata, intrebi? In plus fata de expansiunea caracterelor despre care am discutat inainte, bash are caracteristica “completarea tab”. Completarea tab functioneaza in felul urmator: Scrii numele unui fisier. Poate ca e in PATH,tau, poate ca il scrii explicit. Tot ce trebuie sa faci este sa scrii suficient din numele fisierului pentru a il putea identifica in mod unic. Pe urma apasa pe tasta tab. bash va intelege ce vrei si va termina de scris pentru tine! E timpul unui exemplu. /usr/src contine doua subdirectoare: /usr/src/linux si /usr/src/sendmail. Vreau sa vad ce e in /usr/src/linux. Asa ca tastez doar ls /usr/src/l, apas pe tasta TAB, si bash imi da ls /usr/src/linux. Acum, sa presupunem ca sunt doua directoare /usr/src/linux si /usr/src/linux-old; Daca scriu /usr/src/l si apas pe TAB, bash va completa cat de mult poate, si voi obtine /usr/src/linux. Ma pot opri acolo sau pot apasa pe TAB din nou si bash va arata o lista de directoare care se potrivesc cu ce am scris pana acum. Deci, mai putin de scris (astfel oamenii pot place interfetele linie de comanda). Ti-am spus ca e misto.
8.4 Terminale virtuale Deci, tocmai lucrezi la ceva si decizi ca trebuie sa faci altceva. Ai putea pur si simplu sa lasi ceea ce faci si sa comuti sarcinile, dar acesta este un sistem multi utilizator, nu? Si poti sa te loghezi simultan de cate ori vrei, nu? De ce ar trebui sa faci doar un singur lucru la un moment dat? Nu trebuie. Nu putem sa avem cu totii tastaturi multiple, mouse-uri si monitoare pentru un singur calculator; sansele sunt ca majoritatea nici nu le vrem. In mod clar, hardware-ul nu este solutia. Mai ramane software-ul si Linux ia atitudine aici, oferind “terminale virtuale”, sau “VT-uri”.
110
Shell-ul Apasand Alt si o tasta de functie, poti comuta intre terminalele virtuale; fiecare tasta de functie ii corespunde unuia. Slackware implicit are login-uri pe 6 VT-uri. Alt+F2 te va duce la cel de al doilea, Alt+F3 la al treilea, etc. Restul tastelor functie sunt rezervate pentru sesiuni X. Fiecare sesiune X foloseste propriul VT, incepand cu al saptelea (Alt+F7) si urcand. Cand te aflii in X, combinatia de taste Alt+tasta functie este inlocuita cu Ctrl+Alt+Functie; deci daca esti in X si vrei sa te intorci la un login text (fara sa iesi din sesiunea X) Ctrl+Alt+F3 te va duce la cea de a treia. (Alt+F7 te va duce inapoi, presupunand ca folosesti prima sesiune X.)
8.4.1 Screen Dar ce spuneti de situatia in care nu exista terminale virtuale? Ce facem in aceasta situatie? Din fericire, Slackware contine un minunat manager de ecrane, numit in mod inspirat screen. screen este un emulator de terminal, care are facilitati specifice unui terminal. Cand executi screen apare o scurta descriere, apoi te lasa intr-un terminal. Spre deosebire de terminalele virtuale standard, screen are propriile sale comenzi. Toate comenzile sunt prefixate cu Crtl+A. De exemplu, apasarea tastelor Ctrl+A+C va creea o noua sesiune pentru un terminal. Ctrl+A+N va muta in terminalul urmator. Ctrl+A+P va schimba intr ultimele doua terminale. screen ofera si optiunea decuplarii si re-cuplarii la sesiunile terminalelor, lucru util pentru conexiuni de la distanta, de tipul ssh si telnet, (mai multe despre aceste subiecte, in capitolele urmatoare). Ctrl+A+D te va decupla de la sesiunea de screen curenta. Ruland screen screen -r va afisa toate ecranele care ruleaza in prezent si la care te poti re-cupla. % screen -r There are several suitable screens on: 1212.pts-1.redtail (Detached) 1195.pts-1.redtail (Detached) 1225.pts-1.redtail (Detached) 17146.pts-1.sanctuary (Dead ???) Remove dead screens with 'screen -wipe'. Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Ruland screen -r 1212 te va re-cupla la primul ecran afisat. Am mentionat anterior cat de util este aceasta pentru o conexiune la distanta. Daca vreau sa ma loghez de la distanta la un server ruland Slackware prin ssh, fiecare conxiune ar putea fi afecatat de accidente de genul unei pene de curent si toata munca ar disparea daca acea conexiune ar disparea brusc. Insa folosind screen o data restaurata conexiunea, voi putea re-cupla la ultimul ecran folosit si imi voi putea continua munca.
111
Capitolul 9
Structura sistemului de fisiere 9.1 Apartenenta 9.2 Permisiuni 9.3 Link-uri 9.4 Montarea dispozitivelor 9.5 Monturi NFS
Am discutat despre structura directoarelor in Slackware Linux. Esti capabil sa gasesti fisierele si directoarele de care ai nevoie. Dar sistemul de fisiere inseamna mai mult decat structura directoarelor. Linux este un sistem de operare multiutilizator. Fiecare aspect al sistemului este multiutilizator, chiar si sistemul de fisiere. Sistemul stocheaza informatii ca si cine este proprietarul unui fisier si cine il poate citi. Sunt alte parti unice in legatura cu sistemul de fisiere, cum ar fi linkuri si monturile NFS. Aceasta sectiune le explica pe acestea, dar si aspectele multiutilizator ale sistemului de fisiere.
113
Slackware Linux Essentials
9.1 Apartenenta Sistemul de fisiere stocheaza informatiile de apartenenta pentru fiecare fisier si director de pe sistem. Aceasta include ce proprietar si grup detin un fisier particular. Cea mai usoara metoda de a vedea aceasta informatie este cu comanda ls. % ls -l /usr/bin/wc -rwxr-xr-x 1 root
bin
7368 Jul 30
1999 /usr/bin/wc
Suntem interesati de coloanele trei si patru. Acestea contin numele utilizatorului si al grupului care detin acest fisier. Vedem ca utilizatorul “root” si grupul “bin” sunt proprietarii acestui fisier. Putem schimba usor proprietarii fisierului cu comenzile chown(1) (care inseamna “schimba proprietar”) si chgrp(1) (care inseamna “schimba grup”). Pentru a schimba utilizatorul proprietar al fisierului in daemon, am folosi chown: # chown daemon /usr/bin/wc
Pentru a schimba grupul proprietar in “root”, am folosi chgrp: # chgrp root /usr/bin/wc
Putem sa folosim de asemenea si chown pentru a specifica proprietarii utilizator si grup pentru un fisier: # chown daemon:root /usr/bin/wc
In exemplul de mai sus, utilizatorul ar fi putut folosi si punct (.) in loc de doua puncte (:). Rezultatul ar fi fost acelasi; insa doua puncte reprezinta o forma mai potrivita. Folosirea punctului este invechita si va fi probabil scoasa din uz in versiunile urmatoare ale chown. Aceste nume de utilizator tind sa devina foarte populare cu Windows Exchange Servers si sunt intalnite in adrese de mail de tipul: [email protected]. In Slackware, administratorii sunt sfatuiti sa nu foloseasca asa ceva deoarece unele scripturi folosesc inca punctul pentru a indica utilizatorul si grupul unui fisier sau director. In exemplul nostru, chmod ar interpreta mr.jones ca utilizatorul “mr” si grupul “jones”.
114
Structura sistemului de fisiere Apartenenta fisierelor este un aspect foarte important din folosirea unui sistem Linux, chiar daca esti singurul utilizator. Trebuie sa repari cateodata apartanenta fisierelor si a nodurilor dispozitiv.
9.2 Permisiuni Permisiunile sunt cealalta parte importanta a aspectelor multiutilizator a sistemului de fisiere. Cu acestea poti schimba, cine poate sa citeasca, scrie si sa execute fisierele. Informatiile legate de permisiuni sunt stocate ca patru cifre octale, fiecare specificand un set diferit de permisiuni. Sunt permisiuni proprietar, permisiuni grupa si permisiuni lume. A patra cifra octala este folosita pentru a stoca informatii speciale ca si setarea identificatorului pentru utilizator sau grup si bit-ul “sticky”. Valorile octale atribuite modurilor permisiunilor sunt (de asemenea au si litere asociate cu el care sunt afisate de programe ca ls si pot fi folosite de catre chmod): Tabelul 9-1. Valorile Octale ale Permisiunilor Tipul Permisunii Valoarea octala Valoarea literei bit-ul “sticky” (lipicios) 1 t seteaza ID pentru utilizator (set user ID) 4 s seteaza ID pentru grup (set grup ID) 2 s citire(read) 4 r scriere(write) 2 w executie(execute) 1 x Adaugi valorile octale pentru fiecare grup de permisiuni. De exemplu, daca vrei ca permisiunile pentru grup sa fie “citire” si “scriere”, ai folosi “6” in partea de grup a informatiei despre permisiuni. Permisiunile default ale lui bash sunt: % ls -l /bin/bash -rwxr-xr-x 1 root
bin
477692 Mar 21 19:57 /bin/bash
Prima linie ar fi inlocuita cu “d” daca acesta ar fi un director. Cele trei grupuri de permisiuni (proprietar, grup si lume) sunt afisate pe urma. Vedem ca proprietarul are permisiuni de citire, scriere si executare (rwx). Grupul are doar citire si executare (r-x). Si restul lumii are doar citire si executare (r-x).
115
Slackware Linux Essentials Cum am seta permisiunile pe un alt fisier pentru a semana cu cele ale lui bash? Intai, sa facem un fisier exemplu: % touch /tmp/example % ls -l /tmp/example -rw-rw-r--- 1 david
users
0 Apr 19 11:21 /tmp/example
Vom folosi chmod(1) (care inseamna “schimba mod”) pentru a seta permisiunile pe fisierul exemplu. Adauga numerele octale pentru permisiunile pe care le vrei. Pentru ca proprietarul sa aiba citire, scriere si executare am avea valoarea 7. Citire si executare ar fi 5. Pune-le una langa cealalta si paseaza-le lui chmod in felul asta: % chmod 755 /tmp/example % ls -l /tmp/example -rwxr-xr-x 1 david users
0 Apr 19 11:21 /tmp/example
Ai putea spune: “"De ce nu ai creat un fisier cu acele permisiuni de la inceput?” Raspunsul este simplu. bash include un minunat utilitar incorporat, numit umask. Acesta este inclus in majoritatea shell-urilor Unix si controleaza ce permisiuni sunt asignate noilor fisiere nou-create. Am mai discutat anterior despre programele incorporate in bash Sectiunea 8.3.1. Dureaza putin pentru a te obisnui cu umask. Este asemanator cu chmod, doar ca functioneaza invers. Trebuie specificat valoarea pe care nu o doresti prezenta in fisierele nou create. Valoarea din oficiu a umask este 0022. % umask 0022 % umask 0077 % touch tempfile % ls -l tempfile -rw-------- 1 david
users
0 Apr 19 11:21 tempfile
Vezi pagina de manual bash pentru mai multe detalii. Pentru a seta permisiuni speciale cu chmod, adauga numerele si aseaza-le in prima coloana. De exemplu, pentru a-l face sa seteze identificatorul utilizatorului si al grupului, folosim 6 ca prima coloana: % chmod 6755 /tmp/example % ls -l /tmp/example -rwsr-sr-x 1 david users
0 Apr 19 11:21 /tmp/example
Daca valorile octale te incurca, poti folosi litere cu chmod. Grupurile de permisiuni sunt reprezentate ca:
116
Structura sistemului de fisiere proprietar u grup g lume o toate cele spuse mai sus a Pentru a seta permisiunile ca si mai inainte, ar trebui sa folosim mai multe linii de comanda: % chmod a+rx /tmp/example % chmod u+w /tmp/example % chmod ug+s /tmp/example
Sunt oameni care prefera literele in favoarea cifrelor. Indiferent de ce metoda folosim rezultatul este acelasi pentru setul de permisiuni. Formatul cifrelor este deseori mai rapid si cel mai folosit in scripturi. Uneori insa, literele sunt mai puternice. De exemplu, nu exista modalitate simpla de a schimba permisiunea unui grup in timp ce am pastra simultan permisiunea celorlalte grupuri, folosind cifre. Acest lucru se poate insa realiza extrem de usor cu litere. % ls -l /tmp/ -rwxr-xr-x 1 alan users -rwxr-x--1 alan users ----r-xr-x 1 alan users % chmod g-rwx /tmp/example? -rwx---r-x 1 alan users -rwx-----1 alan users -------r-x 1 alan users
0 Apr 19 11:21 /tmp/example0 0 Apr 19 11:21 /tmp/example1 0 Apr 19 11:21 /tmp/example2 0 Apr 19 11:21 /tmp/example0 0 Apr 19 11:21 /tmp/example1 0 Apr 19 11:21 /tmp/example2
Am adus vorba in mai multe locuri despre permisiunile de setare a identificatorului pentru utilizator si grupa. Probabil ca te intrebi ce sunt astea. In mod normal cand rulezi un program, aceasta opereaza sub contul tau de utilizator. Adica, are toate permisiunile pe care le ai tu ca utilizator. Acelasi lucru e valabil si pentru grup. Cand rulezi un program, acesta se executa sub grupul tau actual. Cu permisiunea de setare a identificatorului pentru utilizator, poti forta un program sa ruleze intotdeauna ca si proprietarul fisierului (ca si “root”). Setarea identificatorului pentru grup e la fel doar ca pentru grup. Fii prudent cu aceasta, programele cu setarea identificatorului pentru utilizator si grup pot creea gauri majore de securitate pe sistemul tau. Daca setezi frecvent permisiunea de setare a identificatorului pentru utilizator pe programele detinute de root, ii permiti oricui sa ruleze acel program si sa il ruleze ca si root. Din moment ce root nu are restrictii pe sistem , poti
117
Slackware Linux Essentials vedea cum poate acest lucru reprezenta un risc major de securitate pe sistemul tau. Pe scurt, nu este rau sa setezi permisiunile de setare a identificatorului pentru utilizator si grup, dar foloseste bunul simt.
9.3 Link-uri Link-urile sunt indicatoare intre fisiere. Cu link-uri, poti avea fisiere care sa existe in mai multe locatii si sa fie accesibile sub mai multe denumiri. Sunt doua tipuri de link-uri: hard si soft. Link-urile hard sunt denumiri pentru un fisier particular. Pot exista doar intr-un singur director si sunt inlaturate doar cand numele real este inlaturat de pe sistem. Acestea sunt folositoare in cateva cazuri, dar multi utilizatori considera link-urile soft mai multilaterale. Link-ul soft, de asemenea numit si link simbolic, poate indica catre un fisier in afara directorului lui. Este de fapt un fisier mic care contine informatia de care are nevoie. Poti adauga si inlatura link-uri soft fara a afecta fisierul propriu zis. Ca si un exemplu, mai degraba ai un link simbolic la directorul /var/tmp catre /tmp. Linkurile nu au setul propriu de permisiuni sau apartenente, ci le reflecta pe cele ale fisierului catre care indica. Slackware foloseste in mare parte link-uri soft. Iata un exemplu comun: % ls -l /bin/sh lrwxrwxrwx 1 root bash
root
4 Apr
6 12:34 /bin/sh ->
Shell-ul sh sub Slackware este de fapt bash. Inlaturarea link-urilor se face folosind rm. Comanda ln este folosita pentru a crea link-urile. Aceste comenzi vor fi discutate mai in amanunt in Capitolul 10. Este foarte important sa fi atent in folosirea link-urilor simbolice. Odata, am lucrat pe o masina care nu reusea sa realizeze back-up pe banda, noaptea. Doua linkuri simbolice au fost create catre directoare, unul sub altul. Programul de back-up apela aceleasi directoare, pana cand banda ramanea fara spatiu. In mod normal, o verificare de rutina ar putea preveni acest fel de link-uri simbolice, insa in cazul nostru a fost o situatie speciala.
118
Structura sistemului de fisiere
9.4 Montarea dispozitivelor La fel cum am discutat anterior in sectiunea intitulata Organizarea Fisierelor in Capitolul 4, toate unitatile si dispozitivele in calculatorul tau sunt un mare sistem de fisiere. Diferite parti de hard disk-uri, CD-ROM-uri si dischete toate sunt plasate in acelasi arbore. Pentru a atasa aceste unitati sistemului de fisiere pentru a le putea accesa, trebuie sa folosesti comenzile mount(1) si umount(1). Cateva dispozitive sunt montate automat la initializarea sistemului. Acestea sunt listate in fisierul /etc/fstab. Orice vrei sa fie montat in mod automat primeste o intrare in acel fisier. Pentru alte dispozitive, va trebui sa emiti o comanda de fiecare data cand vrei sa folosesti dispozitivul.
9.4.1 fstab Sa aruncam o privire la un exemplu de fisier /etc/fstab % cat /etc/fstab /dev/sda1 / /dev/sda2 /usr/local /dev/sda4 /home /dev/sdb1 swap /dev/sdb3 /export none /dev/pts none /proc /dev/fd0 /mnt /dev/cdrom /mnt/cdrom
ext2 ext2 ext2 swap ext2 devpts proc ext2 iso9660
defaults defaults defaults defaults defaults gid=5,mode=620 defaults defaults ro
1 1 1 0 1 0 0 0 0
1 1 1 0 1 0 0 0 0
Prima coloana este numele dispozitivului. In acest caz, dispozitivele sunt cinci partitii intinse peste doua hard disk-uri SCSI, doua sisteme de fisiere speciale care nu au nevoie de un dispozitiv o unitate de discheta si una de CD-ROM. A doua coloana este locul unde va fi montat dispozitivul. Acesta trebuie sa fie un nume de director, exceptie facand partitia swap. A treia coloana reprezinta tipul sistemului de fisiere al dispozitivului. Pentru sisteme de fisiere normal de Linux, aceasta va fi ext2 (second extended filesystem). Unitatile CD-ROM sunt iso9660, si dispozitivele bazate pe Windows vor fi msdos sau vfat. A patra coloana este o listare de optiuni care se aplica sistemelor de fisiere montate. “defaults” este bun pentru aproape orice. Desi, dispozitivelor read-only le-ar trebui dat marcatorul ro. Sunt multe optiuni care pot fi folosite. Verifica pagina de manual pentru fstab(5) pentru mai multe informatii. Ultimele doua coloane sunt folosite de fsck si alte
119
Slackware Linux Essentials comenzi care necesita manipularea dispozitivelor. Verifica pagina de manual si pentru acest lucru. Cand instalezi Slackware Linux, programul setup va construi majoritatea fisierului fstab.
9.4.2 mount si umount Atasarea unui alt dispozitiv sistemului tau de fisiere este usor. Tot ce trebuie sa faci este sa folosesti comanda mount impreuna cu cateva optiuni. Folosirea mount poate fi si mai simpla daca dispozitivul are o intrare in fisierul /etc/fstab. De exemplu, sa spunem ca vreau sa imi montez unitatea CD-ROM si ca fisierul meu fstab arata ca si exemplul din sectiunea anterioara. As apela mount in felul acesta: % mount /cdrom
Din moment ce are o intrare in fstab pentru acel punct de montare, stie ce optiuni sa foloseasca. Daca nu ar fi o intrare pentru acel dispozitiv, ar fi trebuit sa folosesc mai multe optiuni pentru mount:
mount
% mount -t iso9660 -o ro /dev/cdrom /cdrom
Acea linie de comanda include aceeasi informatie ca si fisierul exemplu fstab dar vom trece prin toate partile oricum. Optiunea -t iso9660 este tipul sistemului de fisiere al dispozitivului de montare. In acest caz, ar fi sistemul de fisiere iso9660 care este ceea ce folosesc actual majoritatea unitatilor CD-ROM. Optiunea -o ro ii spune lui mount sa monteze dispozitivul read-only. Argumentul /dev/cdrom este numele dispozitivului care urmeaza a fi montat si /cdrom este locatia pe sistemul de fisiere unde va fi montata unitatea. Inainte de a putea scoate o discheta, cd sau orice alt dispozitiv amovibil care este montat actual, trebuie sa il demontezi. Aceasta se face folosind comanda umount. Nu intreba unde s-a dus “n”pentru ca nu am putea sa iti spunem. Poti folosi fie dispozitivul montat fie punctul de montare ca argument pentru umount. De exemplu, daca vrei sa demontezi CD-ROM-ul din exemplul anterior, oricare dintre aceste comenzi ar functiona: # umount /dev/cdrom # umount /cdrom
120
Structura sistemului de fisiere
9.5 Monturi NFS NFS inseamna Network Filesystem (sistem de fisiere de retea). Nu face de fapt parte din adevaratul sistem de fisiere, dar poate fi folosit pentru a adauga parti sistemului de fisiere montat. Mediile Unix mari, deseori impart aceleasi programe, seturi de directoare ale utilizatorilor si spool-ul de mail. Problema de a avea aceeasi copie pe fiecare calculator se rezolva cu NFS. Putem folosi NFS pentru a imparti unul din directoarele pentru utilizatori intre toate statiile de lucru. Statiile de lucru pe urma monteaza acea parte NFS ca si cum ar fi pe statia propriu zisa. Vezi sectiunea intitulata NFS (Network File System) in Capitolul 5 si paginile de manual pentru exports(5), nfsd(8), si mountd(8) daca doresti sa afli mai multe informatii.
121
Capitolul 10
Manipularea fisierelor si a directoarelor 10.1 Navigarea: ls, cd, si pwd 10.2 Pagere: more, less, and most 10.3 Iesire simpla: cat and echo 10.4 Creare: touch and mkdir 10.5 Copiere si mutare 10.6 Stergere: rm si rmdir 10.7 Legaturi intre fisiere cu ln Linux incearca sa se asemene cat mai mult posibil cu Unix. Prin traditie, sistemele de operare Unix au fost orientate catre linia de comanda. Avem o interfata grafica pentru utilizator in Slackware, dar linia de comanda inca este principalul nivel de control al sistemului. De aceea, este important sa intelegi cateva din comenzile de baza pentru managementul fisierelor. Urmatoarele sectiuni explica unele din comenzile comune pentru managementul fisierelor si contin exemple pentru modul de utilizare al acestora. Exista multe comenzi, dar acestea te vor ajuta sa incepi. De asemenea, comenzile sunt discutate aici doar succint.Vei gasi mai multe detalii in paginile manual pentru fiecare comanda.
123
Slackware Linux Essentials
10.1 Navigarea : ls, cd, si pwd 10.1.1 ls Aceasta comanda afiseaza o lista cu fisierele dintr-un director. Utilizatorii de Windows si DOS vor observa asemanarea cu comanda dir. Folosita singura, ls(1) va afisa fisierele din directorul curent. Pentru a vedea ce este in directorul radacina, ai putea introduce urmatoarele comenzi: % cd / % ls bin cdr boot cdrom
dev etc
home lib
lost+found mnt
proc root
sbin suncd
tmp usr
var vmlinuz
Problema cu acest mod de afisare este ca multa lume nu poate sa spuna cu usurinta care este director si care este fisier. Unii utilizatori prefera ca ls sa adauge un identificator pentru fiecare inregistrare, dupa cum urmeaza: % ls -FC bin/ cdr/ var/ boot/ cdrom/ vmlinuz
dev/
home/
lost+found/
proc/
sbin/
tmp/
etc/
lib/
mnt/
root/
suncd/
usr/
Directoarele primesc un slash la sfarsitul numelui, executabilele primesc un asterisc, si asa mai departe. ls poate fi folosit pentru a obtine si alte statistici. De exemplu, pentru a vedea datele de creare, apartenenta si permisiunile, ai putea sa te uiti la lista extinsa: % ls -l drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x dr-xr-xr-x drwxr-x--x
124
2 2 2 14 4 10 8 3 2 2 62 12
root root root root root root root root root root root root
bin root root root root root root root root root root root
4096 May 7 09:11 bin/ 4096 Feb 24 03:55 boot/ 4096 Feb 18 01:10 cdr/ 6144 Oct 23 18:37 cdrom/ 28672 Mar 5 18:01 dev/ 4096 Mar 8 03:32 etc/ 4096 Mar 8 03:31 home/ 4096 Jan 23 21:29 lib/ 16384 Nov 1 08:53 lost+found/ 4096 Oct 6 12:47 mnt/ 0 Mar 4 15:32 proc/ 4096 Feb 26 02:06 root/
Manipularea fisierelor si a directoarelor drwxr-xr-x drwxr-xr-x drwxrwxrwt drwxr-xr-x drwxr-xr-x
2 5 4 21 18
root root root root root
bin root root root root
4096 Feb 17 2048 Oct 25 487424 Mar 4096 Aug 24 4096 Mar 8
02:02 sbin/ 10:51 suncd/ 7 20:42 tmp/ 03:04 usr/ 03:32 var/
Sa presupunem ca vrei sa obtii o lista cu fisierele ascunse din directorul curent. Urmatoarea comanda face exact acest lucru: % ls -a . .. .pwrchute_tmp
bin boot cdr
cdrom dev etc
home lib lost+found
mnt proc root
sbin suncd tmp
usr var vmlinuz
Fisierele care incep cu punct (numite fisiere punct) sunt ascunse cand rulezi ls. Le vei vedea numai daca utilizezi optiunea -a. Sunt mult mai multe optiuni care pot fi vazute in pagina de manual. Nu uita ca optiunile pe care le utilizezi cu ls pot fi folosite in combinatii.
10.1.2 cd Comanda cd este utilizata pentru schimbarea directorului de lucru. Tastezi simplu cd urmat de calea catre care vrei sa schimbi. Iata cateva exemple: darkstar:~$ cd /bin darkstar:/bin$ cd usr bash: cd: usr: No such file or directory darkstar:/bin$ cd /usr darkstar:/usr$ ls bin darkstar:/usr$ cd bin darkstar:/usr/bin$
Observa ca, fara slash-ul care il precede, incearca sa schimbe spre un director din directorul curent. De asemenea, executand cd fara nici o optiune, te va duce in directorul personal. Comanda cd nu se aseamna cu alte comenzi. Ea este o comanda integrata in shell. Comenzile integrate in shell sunt discutate in Sectiunea 8.3.1. S-ar putea ca aceasta sa fie fara sens pentru tine acum. In principiu, asta inseamna ca nu exita nici o pagina man pentru aceasta comanda, ci trebuie sa folosesti ajutorul din shell, dupa cum urmeaza: % help cd
Aceasta va afisa optiunile pentru cd si cum sa le folosesti.
125
Slackware Linux Essentials
10.1.3 pwd pwd
Comanda pwd o folosesti ca sa vezi locatia ta curenta. Pentru a folosi tasteaza pwd. De exemplu:
% cd /bin % pwd /bin % cd /usr % cd bin % pwd /usr/bin
10.2 Pagere: more, less, si most 10.2.1 more more(1) este ceea ce numim un utilitar de paginare. De multe ori, iesirea unei comenzi este prea mare pentru a incapea intr-un singur ecran. Comenzile individuale nu stiu cum sa-si imparta iesirile in ecrane diferite. Munca aceasta este lasata in seama unui utilitar de paginare. Comanda more sparge iesirile in ecrane individuale si asteapta ca tu sa apesi tasta spatiu inainte de a continua cu urmatorul ecran de text. Apasand tasta enter, vei putea avansa cu cate o linie. Iata un exemplu bun: % cd /usr/bin % ls -l
Asta ar trebui sa defileze pentru un timp. Pentru a sparge iesirea pe ecrane, redirectioneaza iesirea prin more: % ls -l | more
Acela este caracterul “teava” (shift backslash). “Teava” este un mod simplu de a spune “ia iesirea comenzii ls si introdu-o in more”. Poti redirectiona cam orice prin comanda more nu numai ls. Redirectionarea este discutata in Sectiunea 8.2.3.
10.2.2 less Comanda more este destul de utila, dar deseori vei realiza ca ai trecut peste ecranul pe care il voiai. more nu iti ofera o modalitate de a te
126
Manipularea fisierelor si a directoarelor intoarce. Comanda less(1) iti ofera aceasta functionalitate. Este folosita in acelasi fel cu comanda more asa ca exemplele anterioare se pot aplica si aici. Asadar, less este mai mult decat more. Joost Kremers a spus-o in felul urmator: less is more, but more more than more is, so more is less less, so use more less if you want less more.
10.2.3 most Acolo unde se opresc more si less, most(1) preia stafeta. Daca less este mai mult decat more, most este mai mult decat less. In timp ce alte paginatoare pot afisa numai cate un fisier o data, most este capabil sa afiseze oricate fisiere, atata timp cat fereastra fiecarui fisier are o lungime de cel putin 2 linii. most are multe optiuni, uita-te in pagina man pentru detalii comple.
10.3 Iesiri simple cat si echo 10.3.1 cat cat(1)
este prescurtarea de la “concatenare”. Initial, a fost proiectata pentru a alatura doua fisiere de text in unul singur, dar poate fi folosita in multe alte scopuri. Pentru a alatura doua sau mai multe fisiere intr-unul singur, scrii lista de fisiere dupa comanda cat redirectezi iesirea intr-un nou fisier. cat functioneaza cu intrarea si iesirea standard, asa ca trebuie sa folosesti caracterele de redirectionare din shell. De exemplu: % cat file1 file2 file3 > bigfile
Aceasta comanda ia continutul fisierelor file1, file2, si file3 si le alatura pe toate la un loc. Noua iesire este trimisa la iesirea standard. cat poate fi folosit pentru afisarea fisierelor. Multi utilizatori redirectioneaza iesirea din cat prin more sau less dupa cum urmeaza: % cat file1 | more
Aceasta va afisa fisierul file1 si il va redirectiona prin more astfel incat sa il obtii ecran cu ecran.
127
Slackware Linux Essentials O alta utilizare comuna pentru cat este copierea de fisiere. Poti copia orice fisier cu cat, dupa cum urmeaza: % cat /bin/bash > ~/mybash
Programul /bin/bash este copiat in directorul personal si renumit mybash. cat
are utilizari multiple, iar cele discutate aici sunt doar cateva. Din moment ce cat utilizeaza extensiv intrarea si iesirea standard, este ideal pentru utilizarea in scripturi sau ca parte in alte comenzi complexe.
10.3.2 echo Comanda echo(1) afiseaza pe ecran textul specificat. Poti specifica sirul de caractere pentru afisare dupa comanda echo Implicit, echo va afisa sirul de caractere si va adauga un caracter de linie noua dupa el. Poti sa utilizezi optiunea -n pentru a suprima trecerea la linie noua. Optiunea -e va face ca echo sa caute caractere speciale in sir si sa le execute.
10.4 Crearea: touch si mkdir 10.4.1 touch touch(1) este folosit pentru a schimba amprenta de timp pentru fisier. Poti schimba amprenta de timp de acces si amprenta de timp modificare cu aceasta comanda. Daca fisierul nu exista, touch va crea fisier de lungime zero, cu numele specificat. Pentru a marca un fisier timpul curent, vei folosi comanda urmatoare: % ls -al file1 -rw-r--r-1 root % touch file1 % ls -al file1 -rw-r--r-1 root
un de un cu
root
9779 Feb
7 21:41 file1
root
9779 Feb
8 09:17 file1
Exista mai multe optiuni pentru touch, incluzand optiunea de a specifica acea amprenta de timp care va fi modificata, timpul folosit si multe altele. Pagina de manual discuta in detaliu aceste optiuni.
128
Manipularea fisierelor si a directoarelor
10.4.2 mkdir mkdir(1) va crea un director nou. Specifica directorul pe care vrei sa-l creezi cand rulezi mkdir. Acest exemplu creaza directorul hejaz in directorul curent: % mkdir hejaz
Poti, de asemenea, sa specifici o cale, dupa cum urmeaza: % mkdir /usr/local/hejaz
Optiunea -p ii va spune lui mkdir sa creeze si orice director parinte. Exemplul de mai sus va esua in cazul in care /usr/local nu exista. Optiunea -p va crea /usr/local si /usr/local/hejaz: % mkdir -p /usr/local/hejaz
10.5 Copiere si mutare 10.5.1 cp cp(1) copiaza fisiere. Utilizatorii de DOS vor observa asemanarea cu comanda copy. Exista multe optiuni si pentru cp, asa ca ar trebui sa arunci o privire in pagina man inainte de a-l utiliza. O utilizare comuna pentru cp este aceea de a copia un fisier dintr-un loc in altul. De exemplu: % cp hejaz /tmp
Aceasta copiaza fisierul hejaz din directorul curent in directorul /tmp.
Multi utilizatori prefera sa pastreze amprentele de timp, ca in exemplul urmator: % cp -a hejaz /tmp
Aceasta te asigura ca amprentele de timp nu sunt modificate in timpul copierii. Pentru a copia recursiv continutul unui director in alt director, vei utiliza urmatoarea comanda: % cp -R mydir /tmp
129
Slackware Linux Essentials Aceasta va copia directorul mydir in directorul /tmp. De asemenea, daca doresti sa copiezi un director sau un fisier si sa pastrezi vechile permisiuni si amprente de timp, foloseste cp -p. % ls -l file -rw-r--r-1 root % cp -p file /tmp % ls -l /tmp/file -rw-r--r-1 root cp
vlad
4 Jan
1 15:27 file
vlad
4 Jan
1 15:27 file
are mult mai multe optiuni decat sunt discutate aici, in pagina de
manual.
10.5.2 mv mv(1)
muta fisiere dintr-un loc in altul. Suna destul de simplu, nu-i
asa? % mv oldfile /tmp/newfile mv are cateva optiuni folositoare, care sunt detaliate in pagina man. In practica, mv nu este folosit aproape niciodata cu optiuni.
10.6 Stergere: rm si rmdir 10.6.1 rm rm(1) sterge fisiere si arbori de directoare. Utilizatorii de DOS vor observa asemanarea atat cu del si cu deltree. rm poate fi foarte periculos daca nu il folosesti corect. Desi este cateodata posibil sa recuperezi unele fisiere sterse recent, poate fi foarte complicat (si posibil scump) si nu intra in obiectul acestei carti. Pentru a sterge un singur fisier, specifica-i numele cand rulezi rm: % rm file1
Daca fisierul nu are permisuni de scriere, s-ar putea sa obtii un mesaj de eroare “permisiuni insuficiente” (permission denied). Pentru a forta stergerea, utilizeaza optiunea -f dupa cum urmeaza: % rm -f file1
Pentru a sterge un director intreg, foloseste optiunile -r si -f impreuna. Urmatorul este un bun exemplu despre cum pot sa-ti stergi intregul disc. Nu vrei sa faci asta! Dar, oricum, iata comanda:
130
Manipularea fisierelor si a directoarelor # rm -rf /
Fii foarte atent cu rm; s-ar putea sa te impusti singur in picior. Exista mai multe optiuni pentru linia de comanda, care sunt discutate in pagina de manual.
10.6.2 rmdir rmdir(1)
sterge directoare din sistemul de fisiere. Directoarele trebuie sa fie goale inainte sa poata fi sterse. Sintaxa este simpla:
% rmdir
Exemplul urmator va sterge directorul hejaz din directorul curent: % rmdir hejaz
Daca directorul nu exista, rmdiriti va spune. De asemenea, poti specifica intreaga cale pentru directorul care va fi sters, dupa arata urmatorul exemplu: % rmdir /tmp/hejaz
Acest exemplu va incerca sa stearga directorul hejaz din directorul Poti, de asemenea, sa stergi un director si toate directoarele sale parinte, folosind optiunea -p.
/tmp.
% rmdir -p /tmp/hejaz
Aceasta incearca intai sa stearga directorul hejaz din directorul Daca reuseste, incearca sa stearga directorul /tmp. rmdir va continua astfel pana cand va intalni o eroare sau pana cand intregul arbore specificat va fi sters. /tmp.
10.7 Legaturi intre fisiere cu ln ln(1) este folosit la crearea de legaturi intre fisiere. Aceste legaturi pot fi hard sau soft (simbolice). Diferentele intre aceste doua tipuri de legaturi au fost discutate in Sectiunea 9.3. Daca vrei sa creezi o legatura simbolica spre directorul /var/media/mp3 si sa plasezi legatura in directorul tau personal, vei face in felul urmator: % ln -s /var/media/mp3 ~/mp3
131
Slackware Linux Essentials optiunea -s ii spune lui ln sa creeze o legatura simbolica. Urmatoarea optiune este tinta legaturii, iar optiunea finala este numele legaturii. In acest caz, va crea doar un director numit mp3 in directorul tau personal, care va arata spre /var/media/mp3. Poti sa numesti legatura cum vrei, schimband ultima optiune. Realizarea legaturilor hard este la fel de simpla. Tot ce trebuie sa faci este sa omiti optiunea -s. In mod normal, legaturile hard nu se refera la directoare si nu traverseaza intregul sistem de fisiere. Pentru a crea o legatura hard numita /usr/bin/email catre /usr/bin/mutt, scrie urmatoarele: # ln /usr/bin/mutt /usr/bin/email
132
Capitolul 11
Controlul proceselor 11.1 Backgrounding (procesele care ruleaza pe fundal) 11.2 Foregrounding (aducerea proceselor in prim-plan) 11.3 ps 11.4 kill 11.5 top Orice program care ruleaza se numeste un proces. Aceste procese pot sa varieze de la procese cum ar fi Sistemul de Ferestre X pana la programe specifice sistemului (daemon-i), care sunt pornite atunci cand calculatorul se initializeaza. Oricare proces ruleaza ca un anume utilizator. Procesele care sunt pornite la initializare, de obicei ruleaza ca root sau nobody. Procesele pe care le vei porni tu vor rula in continuare ca utilizatorul tau. Procesele pornite cu alti utilizatori vor rula ca respectivii utilizatori. Pe langa aceasta, root detine controlul asupra tuturor proceselor de pe sistem, incluzand chiar si pe cele pornite de catre alti utilizatori. Procesele pot fi controlate si monitorizate cu ajutorul catorva programe si niste comenzi de shell.
133
Slackware Linux Essentials
11.1 Backgrounding (procesele care ruleaza pe fundal) Programele pornite din linia de comanda sunt pornite in prim-plan. Acest lucru iti permite sa vezi tot ce face programul si sa interactionezi cu el. Totusi, sunt cateva situatii cand ai putea dori ca programul sa se execute fara sa iti ocupe consola. Acest lucru inseamna sa rulezi programul pe fundal, si exista mai multe metode de a realiza acest lucru. Prima modalitate de a trece un proces pe fundal este de a adauga un "&" in linia de comanda atunci cand pornesti programul. De exemplu, sa zicem ca vrei sa folositi mp3-player-ul din linia de comanda amp pentru a asculta un folder plin cu mp3-uri, dar ai avea nevoie sa faci si altceva in aceeasi consola. Urmatoarea comanda va porni "amp" pe fundal: % amp *.mp3 &
Programul va rula normal, iar tu te vei putea intoarce la consola. O alta modalitate ar fi sa faci programul sa ruleze pe fundal dupa ce acesta a fost deja pornit. Mai intai porneste un program. In timp ce programul ruleaza apasa Control+z. Aceasta comanda va suspenda respectivul proces. Atunci cand ai suspendat un proces, practic se poate spune ca i-ai pus pauza. Momentan s-a oprit, dar poate fi reluat de unde a fost oprit in orice moment. Dupa ce ai suspendat un proces, vei fi readus la prompt. Poti sa faci procesul sa ruleze in fundal cu comanda: % bg
Acum procesul pe care l-ai suspendat ruleaza in fundal.
11.2 Foregrounding (aducerea proceselor in prim-plan) Daca ai nevoie sa interactionezi cu un proces care ruleaza momentan pe fundal, poti sa il aduci din nou in prim-plan. Daca ai doar un proces pe care l-ai pus sa functioneze in fundal, poti sa-l aduci inapoi cu comanda: % fg
Daca programul nu s-a oprit intre timp, el va prelua controlul asupra consolei si nu ti se va returna un prompt. Uneori, programul se va termina
134
Controlul proceselor in timp ce ruleaza in fundal. In aceasta situatie, o sa primesti un mesaj ca aceasta: [1]+
Done
/bin/ls $LS_OPTIONS
Aceasta va spune ca procesul din fundal ( in acest caz ls) a fost terminat. Este posibil sa ai mai multe procese care ruleaza in fundal in acelasi timp. Cand acest lucru se intampla, va trebui sa stii ce proces vrei sa aduci inapoi in prim-plan. Daca vei scrie pur si simplu fg in prim plan va aparea ultimul proces care a fost trimis in fundal. Dar ce-ar fi daca ai avea o lista intreaga de procese care ruleaza in fundal? Noroc ca exista o comanda cu care poti sa vezi toate procesele. Comanda se numeste jobs si arata cam asa: % jobs [1] Stopped [2]- Stopped [3]+ Stopped
vim amp man ps
Aceasta comanda iti va arata o lista cu toate procesele din fundal. Dupa cum vezi toate procesele sunt oprite. Aceasta inseamna ca procesele sunt suspendate. Numarul este un fel de identificare pentru toate procesele din fundal. Procesul care are un plus langa numarul lui (man ps) este procesul care va fi adus in prim-plan daca folosesti comanda fg simpla. Daca ai vrea sa aduceti in prim-plan vim, ai folosi urmatoarea comanda: % fg 1
si vim va sari inapoi in consola. Trimiterea proceselor in fundal poate fi foarte folositoare daca nu ai decat o consola deschisa intr-o conexiune prin dial-up. Astfel ai putea avea mai multe programe care sa ruleze pe acea consola, iar tu vei putea sa navighezi inainte si inapoi prin ele.
11.3 ps Deci acum stii cum sa te misti printre mai multe procese pe care le-ai pornit din linia de comanda si de asemenea stii ca exista o multime de procese care ruleaza tot timpul. Cum poti sa vezi o lista cu toate acele programe? Simplu, ai putea folosi comanda ps(1). Aceasta comanda are o multime de optiuni, dintre care doar cele mai importante vor fi prezentate
135
Slackware Linux Essentials aici. Pentru lista completa poti vedea paginile manualului pentru comanda ps. Paginile manual sunt descrise mai amanuntit in Sectiunea 2.1.1. Daca tastezi pur si simplu ps o sa primesti o lista cu toate programele care ruleaza pe consola. Lista contine si procesele din prim-plan (adica inclusiv shell-ul pe care il folosesti si, bineinteles, ps). Sunt afisate si eventualele procese din background. De multe ori, lista va fi foarte scurta: Figure 11-1. Basic ps output % ps PID TTY 7923 ttyp0 8059 ttyp0
TIME CMD 00:00:00 bash 00:00:00 ps
Desi aici nu sunt prea multe programe, informatia va fi de cele mai multe ori asemanatoare cu cea din exemplu. O sa obtii aceleasi coloane folosind comanda ps indiferent de cate procese ruleaza. Deci ce inseamna toate astea? Ei bine, PID este ID-ul procesului (numarul lui de identificare). Toate procesele care ruleaza au un astfel de numar de identificare, unic. Fiecarui proces ii este atribuit urmatorul PID disponibil. Atunci cand un proces se termina (sau este intrerupt, cu comanda kill, asa cum o sa observi in sectiunea urmatoare), acesta isi pierde PID-ul. Cand numarul maxim PID este atins, urmatorul proces pornit va lua primul ID disponibil, incepand numaratoarea din nou de la 1. Coloana TTY indica consola pe care ruleaza programul respectiv. Cu comanda simpla ps nu vei putea vedea decat programele care ruleaza in consola actuala, deci toate procesele vor da aceeasi informatie in coloana ttyp0. Dupa cum poti observa, ambele procese ruleaza pe ttyp0. Acest lucru indica faptul ca ori functioneaza pe alt calculator, ori de pe o consola de X. Coloana TIME ne arata cat timp a rulat pana acum respectivul proces (este folosit timpul procesorului). Acest lucru inseamna ca timpul cat a lucrat procesul respectiv de fapt, este diferit de aceasta valoare. Amintesteti ca Linux-ul este un sistem de operare multi-tasking. Exista multe programe care ruleaza tot timpul si fiecaruia din aceste procese, procesorul ii aloca o mica portiune din timp. Deci coloana TIME va arata mult mai putin timp decat timpul care a trecut cu adevarat cand acesta a fost pornit. Daca vezi mai mult de cateva minute in coloana TIME, s-ar putea sa insemne ca ceva nu e bine. Si in sfarsit coloana CMD arata care este programul care ruleaza. Doar numele de baza al programului este listat, nu este inclusa o optiune
136
Controlul proceselor din linia de comanda sau alte informatii similare. Pentru a afla acest tip de informatie, va fi nevoie sa folosesti una din multele optiuni ale comenzii ps. Despre aceasta se va discuta in curand. Poti obtine o lista completa a proceselor care ruleaza pe sistem folosind o anumita combinatie de optiuni. Probabil ca lista rezultata va fi una foarte mare, de aceea voi prezenta o lista putin scurtata: % ps -ax PID TTY STAT 1 ? S 2 ? SW 3 ? SW 4 ? SW 5 ? SW 11 ? S 30 ? SW 50 ? S 54 ? S 57 ? S 59 ? S 61 ? S 63 ? S 65 ? S 67 ? S 69 ? S 77 ? S 79 ? S 94 ? S /etc/auto.misc 106 tty1 S 108 tty3 SW 109 tty4 SW 110 tty5 SW 111 tty6 SW [output cut]
TIME 0:03 0:13 0:14 0:00 0:17 0:00 0:01 0:00 0:00 0:00 0:00 0:04 0:00 0:00 0:00 0:00 0:00 0:01 0:00
COMMAND init [3] [kflushd] [kupdate] [kpiod] [kswapd] /sbin/kerneld [cardmgr] /sbin/rpc.portmap /usr/sbin/syslogd /usr/sbin/klogd -c 3 /usr/sbin/inetd /usr/local/sbin/sshd /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd /usr/sbin/crond -l10 /usr/sbin/atd -b 15 -l 1 /usr/sbin/apmd gpm -m /dev/mouse -t ps2 /usr/sbin/automount /auto file
0:08 0:00 0:00 0:00 0:00
-bash [agetty] [agetty] [agetty] [agetty]
Majoritatea acestor procese sunt pornite la initializare pe majoritatea sistemelor. Eu am facut cateva modificari la sistemul meu, deci este foarte posibil ca datele sa varieze. Cu toate acestea vei putea vedea multe dintre aceste procese ruland si pe sistemul tau. Dupa cum vezi, aceste optiuni afiseaza si optiunile din linia de comanda langa procesele respective. Recent, a fost descoperita o vulnerabilitate in kernel la ptrace iar repararea ei a dus la neafisarea linei de comanda pentru multe procese care ruleaza. Acestea sunt afisate in paranteze drepte, ca si in cazul PID 108 pana la 110. De asemenea mai sunt afisate si alte cateva coloane, impreuna cu alte date interesante.
137
Slackware Linux Essentials In primul rand vei observa ca multe dintre aceste programe sunt prezentate ca ruland pe tty “?”.Acestea sunt procese care au fost pornite dintr-o consola care a fost inchisa. Deci programele respective nu mai sunt, acum, atasate nici unui terminal. Demoni des intalniti sunt sendmail, BIND, apache si NFS. De obicei ei sunt listati daca clientul cere acest lucru si afiseaza informatia dupa ce a primit cererea. In al doilea rand, mai exista o noua coloana: STAT. Aceasta arata starea in care se afla respectivului proces. S inseamna ca procesul respectiv doarme: adica asteapta ca ceva sa se intample. Z este pentru un proces zombie. Un astfel de proces este un proces al carui parinte (proces) a murit, lasand copilul (proces si el) in urma. Asta nu e un lucru bun. D inseamna un proces care a intrat intr-un somn din care nu mai poate fi trezit. De obicei, aceste procese refuza sa dispara chiar daca li se paseaza un semnal SIGKILL. Poti citi despre SIGKILL in sectiunea ce urmeaza. W este pentru un proces care pagineaza. Un proces disparut e marcat cu X. Un proces marcat cu T este urmarit (traced) sau oprit. R inseamna ca procesul poate fi rulat. Daca doresti sa vezi mai multe informatii despre procesele care ruleaza, incearca aceasta: % ps -aux USER PID %CPU %MEM COMMAND root 1 0.0 0.0 [3] root 2 0.0 0.0 [kflushd] root 3 0.0 0.0 [kupdate] root 4 0.0 0.0 [kpiod] root 5 0.0 0.0 [kswapd] root 11 0.0 0.0 /sbin/kerneld root 30 0.0 0.0 [cardmgr] bin 50 0.0 0.0 /sbin/rpc.port root 54 0.0 0.1 /usr/sbin/sysl root 57 0.0 0.1 /usr/sbin/klog root 59 0.0 0.0 /usr/sbin/inet root 61 0.0 0.2 /usr/local/sbi root 63 0.0 0.0
138
VSZ
RSS TTY
STAT START
TIME
S
Mar02
0:03 init
344
80 ?
0
0 ?
SW
Mar02
0:13
0
0 ?
SW
Mar02
0:14
0
0 ?
SW
Mar02
0:00
0
0 ?
SW
Mar02
0:17
1044
44 ?
S
Mar02
0:00
1160
0 ?
SW
Mar02
0:01
1076
120 ?
S
Mar02
0:00
1360
192 ?
S
Mar02
0:00
1276
152 ?
S
Mar02
0:00
1332
60 ?
S
Mar02
0:00
1540
312 ?
S
Mar02
0:04
1796
72 ?
S
Mar02
0:00
Controlul proceselor /usr/sbin/rpc. root 65 /usr/sbin/rpc. root 67 /usr/sbin/cron root 77 /usr/sbin/apmd root 79 root 94 /usr/sbin/auto chris 106 root 108 [agetty] root 109 [agetty] root 110 [agetty] root 111 [agetty] [output cut]
0.0
0.0
1812
68 ?
S
Mar02
0:00
0.0
0.2
1172
260 ?
S
Mar02
0:00
0.0
0.2
1048
316 ?
S
Mar02
0:00
0.0 0.0
0.1 0.2
1100 1396
152 ? 280 ?
S S
Mar02 Mar02
0:01 gpm 0:00
0.0 0.0
0.5 0.0
1820 1048
680 tty1 0 tty3
S SW
Mar02 Mar02
0:08 -bash 0:00
0.0
0.0
1048
0 tty4
SW
Mar02
0:00
0.0
0.0
1048
0 tty5
SW
Mar02
0:00
0.0
0.0
1048
0 tty6
SW
Mar02
0:00
Sunt multe informatii aici. De fapt se mai adauga informatia legata de care utilizatorul a inceput procesul respectiv, cat la suta din resursele sistemului foloseste respectivul proces (coloanele %CPU, %MEM, VSZ si RSS), si pe ce data a fost inceput procesul. Bineinteles ca aceste informatii i-ar fi foarte utile unui administrator de sistem. Mai observam si altceva totusi; faptul ca informatia iese din ecran si nu mai poate fi vazuta in totalitate. Optiunea -w ne va fi de ajutor aici. Nu este extraordinar de draguta, dar este utila. Acum avem lista completa pentru fiecare proces in parte. Dar exista chiar si mai multe informatii care pot fi aflate despre fiecare proces. Poti sa le gasesti daca cercetezi in profunzime paginile manual pentru comanda ps. Totusi, optiunile pe care le-am prezentat aici sunt cele mai uzuale si sunt cele de care vei avea nevoie de cele mai multe ori.
11.4 kill Cateodata, programele nu se comporta cum ar trebui si va trebui sa le disciplinezi. Programul pentru acest tip de administrare este kill(1), si poate fi folosit pentru a manipula procesele in mai multe moduri. Cea mai evidenta modalitate de folosire a acestei comenzi este aceea de a folosi kill pentru a termina un program. Va trebui sa faci acest lucru daca un program functioneaza prost si utilizeaza mult din resursele sistemului, sau daca pur si simplu te-ai saturat de procesul respectiv.
139
Slackware Linux Essentials Pentru a termina un program, va trebui sa cunosti PID-ul sau numele lui. Ca sa aflii PID-ul procesului respectiv, folosesti comanda ps care a fost discuta mai devreme. De exemplu daca ai vrea sa termini procesul 4747, ar trebui sa dati comanda: % kill 4747
Va trebui ca procesul sa iti apartina pentru a-l termina. Aceasta este una din trasaturile securitatii sistemului. Daca ai fi putut termina procesele pe care alti utilizatori le-au pornit ar fi fost posibil sa faci si multe alte lucruri malitioase. Bineinteles ca root-ul poate sa inchida orice proces din sistem. Mai exista o varietate a comenzii kill numita killall(1). Acest program face exact ceea ce spune: termina toate procesele care au un anumit nume. Daca ai vrea de exemplu sa termini toate procesele cu numele vimar trebui sa folosesti comanda: % killall vim
Toate programele, care ruleaza si poarta numele vim fi terminate. Daca vei folosi comanda ca root vei putea termina toate procesele vim ale tuturor utilizatorilor. Uite si o comanda interesanta pentru a ii da pe toti afara de pe sistem (inclusiv pe tine): # killall bash
Uneori, simpla comanda kill nu face treaba. Anumite procese nu vor muri cu un simplu kill. Va fi nevoie de o comanda mai puternica. Daca acel PID 4747 nu raspunde la comanda, l-ai putea rezolva asa: % kill -9 4747
Acest lucru va termina cu siguranta procesul 4747. Poti face acelasi lucru cu killall. Aceasta comanda ii trimite procesului o comanda putin diferita. Comanda normala kill trimite procesului un semnal SIGTERM (de terminare). kill -9 pe de alta parte, trimite procesului un semnal SIGKILL care il termina definitiv. Procesului nu ii mai este permis sa curete in urma sa si din aceasta cauza, uneori se pot intampla lucruri neplacute, cum ar fi date corupte, etc, cand se foloseste SIGKILL. Exista o lista intreaga de semnale la dispozitia ta. Poti obtine aceasta lista cu aceasta comanda: % kill -l 1) SIGHUP
140
2) SIGINT
3) SIGQUIT
4) SIGILL
Controlul proceselor 5) 9) 13) 18) 22) 26) 30)
SIGTRAP SIGKILL SIGPIPE SIGCONT SIGTTOU SIGVTALRM SIGPWR
6) 10) 14) 19) 23) 27)
SIGABRT SIGUSR1 SIGALRM SIGSTOP SIGURG SIGPROF
7) 11) 15) 20) 24) 28)
SIGBUS SIGSEGV SIGTERM SIGTSTP SIGXCPU SIGWINCH
8) 12) 17) 21) 25) 29)
SIGFPE SIGUSR2 SIGCHLD SIGTTIN SIGXFSZ SIGIO
Numarul trebuie folosit pentru comanda kill, pe cand numele fara prefixul “SIG” poate fi folosit pentru comanda killall.killall. Uite inca un exemplu: % killall -KILL vim
Un alt mod de a folosi comanda kill este pentru a reporni un proces. Daca trimiti un semnal SIGHUP majoritatea proceselor vor incepe sa-si reciteasca fisierele de configurare. Acest lucru este folositor mai ales atunci cand trebuie sa le spunem proceseler de sistem sa-si reciteasca fisierele de configurare dupa ce acestea au fost modificate.
11.5 top In sfarsit, exista o comanda pe care o poti folosi ca sa iti afiseze informatii despre procesele care ruleaza pe sistemul tau. Comanda se numeste top(1), si se executa in felul urmator % top
Informatii generale despre sistem. Acestea includ: numarul de procese, media de incarcare a sistemului, starea procesorului, informatii despre memoria libera si detalii despre procese cum ar fi PID, utilizator, prioritate, cat la suta din procesor si din memorie este utilizata de proces, timpul cat a rulat si numele programului. 6:47pm up 1 day, 18:01, 1 user, load average: 0.02, 0.07, 0.02 61 processes: 59 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 2.8% user, 3.1% system, 0.0% nice, 93.9% idle Mem: 257992K av, 249672K used, 8320K free, 51628K shrd, 78248K buff Swap: 32764K av, 136K used, 32628K free, 82600K cached PID USER COMMAND
PRI
NI
SIZE
RSS
SHARE
STAT
LIB %CPU %MEM
TIME
141
Slackware Linux Essentials 112 root 4947 david screenshot 3398 david gimp 4946 root 121 david wmSMPmon 115 david wmaker 4948 david 1 root init 189 david licq 4734 david rxvt 2 root kflushd 3 root kupdate 4 root kpiod 5 root kswapd 31 root kerneld 51 root dhcpcd 53 bin rpc.portmap 57 root syslogd
12 15 7
0 19376 18M 0 2136 2136
2468 1748
R S
0 0
3.7 2.3
7.5 55:53 X 0.8 0:00
0 20544
20M
3000
S
0
1.5
7.9
0:14
12 4
0 0
1040 1040 796 796
836 644
R S
0 0
1.5 1.1
0.4 0:00 top 0.3 25:37
3
0
2180 2180
1452
S
0
0.3
0.8
1:35
16 1
0 0
776 176
648 148
S S
0 0
0.3 0.1
0.3 0.0
0:00 xwd 0:13
1
0
6256 6156
4352
S
0
0.1
2.4
3:16
0
0
1164 1164
916
S
0
0.1
0.4
0:00
0
0
0
0
0
SW
0
0.0
0.0
0:08
0
0
0
0
0
SW
0
0.0
0.0
0:06
0
0
0
0
0
SW
0
0.0
0.0
0:00
0
0
0
0
0
SW
0
0.0
0.0
0:04
0
0
340
340
248
S
0
0.0
0.1
0:00
0
0
48
48
32
S
0
0.0
0.0
0:00
0
0
316
316
236
S
0
0.0
0.1
0:00
0
0
588
588
488
S
0
0.0
0.2
0:01
776 176
Programul se numeste top. top pentru ca programele care folosesc cel mai mult din procesor vor fi afisate deasupra. Este interesant de retinut ca top va fi afisat printre primele procese din lista pe unele sisteme mai putin active (si unele mai active) din cauza memoriei folosite de catre procesor pentru a rula acest program. Totusi top este o comanda utila pentru a determina programul care nu se comporta asa cum ar trebui si drept urmare trebuie terminat. Dar acum sa presupunem ca doresti o lista cu propriile procese, sau cu procesele unui anumit utilizator. Procesele pe care le doresti s-ar putea sa nu fie printre cele care sa consume foarte mult din procesor. Optiunea -u iti permite sa precizezi un utilizator sau un UID si sa monitorizezi numai procesele detinute de acel UID. % top -u alan PID USER 3622 alan terminal
142
PR 13
NI VIRT RES SHR S %CPU %MEM 0 11012 10m 6956 S 1.0 2.1
TIME+ COMMAND 0:03.66 gnome-
Controlul proceselor 3739 alan 3518 alan 3529 alan 3544 alan 3548 alan session 3551 alan 3553 alan 3555 alan activati 3557 alan smproxy 3559 alan settings3565 alan xscreensaver 3568 alan 3572 alan panel 3574 alan 3575 alan 3576 alan
13 9 9 9 9
0 0 0 0 0
1012 1012 804 R 1312 1312 1032 S 984 984 848 S 640 640 568 S 8324 8320 6044 S
0.3 0.0 0.0 0.0 0.0
0.2 0.3 0.2 0.1 1.6
0:00.06 0:00.09 0:00.00 0:00.00 0:00.30
9 9 9
0 0 0
7084 7084 1968 S 2232 2232 380 S 2552 2552 1948 S
0.0 0.0 0.0
1.4 0.4 0.5
0:00.50 gconfd-2 0:00.05 esd 0:00.10 bonobo-
9
0
2740 2740 2224 S
0.0
0.5
0:00.05 gnome-
9
0
6496 6492 5004 S
0.0
1.3
0:00.31 gnome-
9
0
1740 1740 1440 S
0.0
0.3
0:00.28
9 9
0 7052 7052 4960 S 0 11412 11m 7992 S
0.0 0.0
1.4 2.2
0:02.28 metacity 0:01.58 gnome-
9 9 9
0 12148 0 12148 0 12148
0.0 0.0 0.0
2.4 2.4 2.4
0:00.64 nautilus 0:00.00 nautilus 0:00.00 nautilus
11m 8780 S 11m 8780 S 11m 8780 S
top bash startx xinit gnome-
Dupa cum se vede, momentan rulez X, top, un gnome-terminal in care scriu aceste lucruri si inca cateva procese legate de X care imi consuma cel mai mult din timpul procesorului. Este o buna metoda pentru a vedea cat de mult utilizeaza altii sistemul. top poate monitoriza procesele si dupa PID, ignorand procesele idle si zombie, precum si multe alte optiuni. Cel mai bun loc pentru a le gasi, este pagina din manual a comenzii top.
143
Capitolul 12
Administrarea de Sistem Esentiala 12.1 Utilizatori si Grupuri 12.2 Utilizatori si Grupuri, Metoda Dificila 12.3 Oprirea Corespunzatoare Hei, hei, hei, stiu la ce te gandesti. “Eu nu sunt administrator de sistem! Nici macar nu vreau sa fiu administrator de sistem!!” Adevarul este ca esti administrator pentru orice calculator pentru care ai parola de root. Acesta ar putea fi sistemul tau desktop, cu unul sau doi utilizatori, sau ar putea fi un server mare, cu cateva sute de utilizatori. Indiferent, va trebui sa stii cum sa administrezi utilizatorii si cum sa inchizi sistemul in mod corect. Aceste treburi par simple, dar au cateva ciudatenii.
145
Slackware Linux Essentials
12.1 Utilizatori si Grupuri Dupa cum am mentionat in Capitolul 8, in mod normal nu ar trebui sa folosesti sistemul logat ca root. In loc de aceasta, ar trebui sa creezi un cont normal de utilizator pentru uzul zilnic si sa folosesti contul root numai pentru administrarea sistemului. Pentru a crea un utilizator, poti fie folosi utilitarele furnizate de Slackware sau poti modifica de mana fisierul de parole.
12.1.1 Scripturi Furnizate Cel mai usor mod de a administra utilizatorii este cu utilitare si scripturile furnizate. Slackware include programele adduser, userdel(8), chfn(1), chsh(1), si passwd(1) pentru administrarea utilizatorilor . Comenzile groupadd(8), groupdel(8), si groupmod(8) sunt pentru administrarea grupurilor. Cu exceptia chfn, chsh, si passwd, aceste programe sunt de obicei rulate doar ca root, si prin urmare se afla in /usr/sbin. chfn, chsh, si passwd pot fi rulate de oricine si se afla in /usr/bin. Utilizatorii pot fi adaugati cu programul adduser. Vom incepe sa trecem prin toata procedura, aratand intrebarile care sunt puse si oferind o scurta descriere a lor. Raspunsul implicit este intre paranteze drepte si il poti alege pentru aproape toate intrebarile, cu exceptia cazului in care intradevar vrei sa schimbi ceva.. # adduser Login name for new user []: jellyd
Acesta este numele pe care utilizatorul il va utiliza pentru login. In mod traditional, numele de login sunt de maxim opt caractere si sunt compuse din litere mici. (poti folosi mai mult de opt caractere, sau poti folosi si cifre, dar incearca sa eviti asta daca nu ai un motiv bun.) De asemenea, poti trimite numele de login ca argument in linia de comanda: # adduser jellyd
In ambele cazuri, dupa ce ai dat numele de login, vei fi intrebat de ID-ul utilizatorului:
146
Administrarea de sistem esentiala User ID ('UID') [ defaults to next available ]:
ID-ul utilizatorului (UID) este modul in care sunt determinate cu adevarat apartenentele in Linux. Fiecare utilizator are un numar unic, acesta incepand de la 1000 in Slackware. Poti alege tu UID-ul pentru noul utilizator, sau il poti lasa pe adduser sa-l aleaga pe urmatorul disponibil. Initial group [users]:
In mod implicit, toti utilizatorii sunt introdusi in grupul users . S-ar putea sa vrei sa il introduci in alt grup, dar nu este recomandat decat daca stii ce faci. Additional groups (comma separated) []:
Acesta intrebare iti permite sa introduci noul utilizator in grupuri aditionale. Un utilizator poate fi in mai multe grupuri in acelasi timp. Aceasta este util in cazul in care ai stabilit grupuri pentru lucruri, cum ar fi modificarea fisierelor cu paginile web, rularea jocurilor si asa mai departe. De exemplu, unele site-uri definesc grupul wheel ca fiind singurul grup care poate folosi comanda su. Sau, o instalare implicita Slackware foloseste grupul sys pentru utilizatorii autorizati sa emita sunete prin placa de sunet interna. Home directory [/home/jellyd]
Directoarele personale sunt plasate in mod implicit sub /home. Shell [ /bin/bash ]
Daca rulezi un sistem foarte mare, este posibil sa fi mutat directoarele personale in alta locatie (sau in mai multe locatii). Acest pas iti permite sa specifici unde va fi directorul personal al utilizatorului. bash este shell-ul implicit pentru Slackware Linux si va fi indeajuns pentru majoritatea oamenilor. Daca noul utilizator provine din lumea Unix, s-ar putea sa fie familiarizat cu alt shell. Poti sa ii schimbi shell-ul acum, sau sil poate schimba el insusi mai tarziu, folosind comanda chsh . Expiry date (YYYY-MM-DD) []:
Conturile pot fi configurate sa expire la o data specificata. Implicit, nu exista data de expirare. Poti sa schimbi asta daca vrei. Aceasta optiune s-ar putea sa le fie utila oamenilor care conduc un ISP si care s-ar putea sa vrea ca aceste conturi sa expire la o anumita data daca nu incaseaza plata pentru urmatorul an.
147
Slackware Linux Essentials New account will be created as follows: --------------------------------------Login name: jellyd UID: [ Next available ] Initial group: users Additional groups: [ None ] Home directory: /home/jellyd Shell: /bin/bash Expiry date: [ Never ]
Asta-i tot ... daca vrei sa renunti, apasa Control+C. Altfel, apasa pentru a crea contul.. Vei vedea acum toate informatiile pe care le-ai introdus despre noul cont si iti va fi oferita posibilitatea de a anula crearea. Daca ai introdus ceva gresit, apasa Control+C si ia-o de la inceput. In caz contrar, poti sa apesi enter si contul va fi creat. ENTER
Creating new account... Changing the user information for jellyd Enter the new value, or press return for the default Full Name []: Jeremy Room Number []: Smith 130 Work Phone []: Home Phone []: Other []:
Toate aceste informatii sunt optionale. Nu este obligatoriu sa le introduci daca nu vrei, iar utilizatorul poate sa le schimbe singur, folosind chfn. Totusi, ar putea fi util sa introduci macar numele complet si un numar de telefon, pentru a putea lua contact cu persoana mai tarziu. Changing password for jellyd Enter the new password (minimum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: Re-enter new password: Password changed. Account setup complete.
Va trebui sa introduci o parola pentru noul utilizator. In general, daca utilizatorul nu este langa tine, vei alege o parola implicita si-i vei spune sa si-o shimbe in ceva mai sigur.
148
Administrarea de sistem esentiala Alegerea unei Parole: O parola sigura este prima linie de aparare impotriva spargerii unui sistem. Nu vrei sa ai o parola usor de ghicit, pentru ca este mai usor pentru cineva sa intre in sistemul tau. In mod ideal, o parola buna este un sir de caractere aleatoare, incluzand litere mari si mici, cifre si caractere aleatoare. (Caracterul tab nu este recomandat, depinzand de tipul de calculatoare de la care vei accesa sistemul). Exista multe pachete de programe care pot genera parola aleatoare; cauta-le pe Internet. In general, foloseste-ti bunul simt: nu alege ca parola ziua de nastere a cuiva, o fraza comuna, ceva ce ai gasit pe biroul tau sau ceva care poate fi asociat cu tine cu usurinta. Nici parolele pe care le vezi scrise sau online, cum ar fi “secure1” nu sunt bune. Stergerea utilizatorilor nu este de loc grea. Doar foloseste userdel cu numele contului pe care vrei sa-l stergi. Ar trebui sa verifici ca utilizatorul sa nu fie logat si ca nici un proces nu ruleaza cu drepturile utilizatorului. De asemenea tine minte ca, odata sters contul, toate datele legate de parola lui sunt definitiv pierdute. # userdel jellyd
Aceasta comanda il sterge pe enervantul utilizator jellyd din sistemul tau. Calatorie sprancenata! :) Utilizatorul este sters din fisierele /etc/passwd, /etc/shadow, si /etc/group, dar nu este sters si directorul personal al sau. Daca vrei sa stergi si directorul personal, foloseste urmatoarea comanda: # userdel -r jellyd
Dezactivarea temporara a unui cont de utilizator va fi acoperita in sectiunea urmatoare, intrucat implica schimbarea parolei utilizatorului. Schimbarea altor informatii ale contului este tratata in Sectiunea 12.1.3. Programele de adaugare si stergere ale grupurilor sunt foarte simple. groupadd va adauga o noua linie in fisierul /etc/group cu un ID unic de grup, in timp ce groupdel va sterge grupul specificat. Ramane treaba ta sa modifici /etc/group pentru a adauga utilizatori unui grup specific. De exemplu, pentru a adauga un grup numit cvs: # groupadd cvs
149
Slackware Linux Essentials Si penru a-l inlatura # groupdel cvs
12.1.2 Schimbarea Parolelor Programul passwd schimba parolele modificand fisierul Acest fisier mentine toate parolele pentru sistem intr-un format criptat. Ca sa-ti schimbi propria parola scrie: /etc/shadow.
% passwd Changing password for chris Old password: Enter the new password (minumum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password:
Dupa cum vezi, esti intrebat de vechea parola. Nu va aparea pe ercan cand o scrii, exact ca la login. Apoi esti intrebat de noua parola. passwd face mai multe verificari pentru noua ta parola si se va plange daca aceasta nu intruneste conditiile. Poti ignora aceste avertismente daca vrei. Ti se va cere sa introduci noua parola a doua oara, pentru confirmare. Daca esti root, poti schimba parola unui alt utilizator: # passwd ted
Vei trece prin aceeasi procedura ca mai sus, cu exceptia faptului ca nu vei mai fi intrebat de vechea parola (Unul din avantajele de a fi root...). Daca este nevoie pot sa dezactivezi temporar un cont si sa-l activezi mai tarziu. Atat dezactivarea cat si activarea pot fi facute cu passwd. Pentru a dezactiva un cont, fa urmatoarele ca root: # passwd -l david
Aceasta va schimba parola utilizatorului david in ceva care nu va fi niciodata verificat de o valoare criptata. Vei reactiva contul folosind: # passwd -u david
Acum, contul lui david este inapoi la normal. Dezactivarea contului unui utilizator poate fi utilzat daca utilizatorul nu joaca dupa regulile jocului sau daca au exportat o foarte mare copie de xeyes(1) pe desktop-ul tau X.
150
Administrarea de sistem esentiala
12.1.3 Modificarea Informatiilor Utilizatorilor Sunt doua lucruri pe care utilizatorul le poate schimba oricand: shellul si informatiile finger. Slackware Linux foloseste chsh (schimbare shell) si chfn (schimbare finger) pentru a modifica aceste valori. Un utilizator poate alege orice shell care este trecut in fisierul /etc/shells. Pentru majoritatea oamenilor, /bin/bash este de ajuns. Altii s-ar purtea sa fie mai familiarizati cu un shell de pe sistemul de la serviciu sau de la scoala si vor sa folosesca ceva ce deja stiu. Pentru a-ti schimba shell-ul, foloseste chsh: % chsh Password: Changing the login shell for chris Enter the new value, or press return for the default Login Shell [/bin/bash]:
Dupa ce ai dat parola, introdu calea completa spre noul shell. Asigura-te intai ca este trecut in fisierul /etc/shells(5). Utilizatorul root poate schimba shell-ul oricarui utilizator, ruland chsh si folosind numele utilizatorului ca argument. Informatiile finger sunt date optionale, cum ar fi numele tau complet, numarul de telefon si numarul camerei. Acestea pot fi schimbate folosind chfn, si urmand aceeasi procedura ca cea din timpul crearii contului. Ca de obicei, root poate schimba informatiile finger ale oricui.
12.2 Utilizatori si grupuri, metoda dificila Desigur, este posibil sa adaugi, sa modifici si sa stergi utilizatori si grupuri fara scripturile si programele care vin cu Slackware. Nu este foarte dificil desi, dupa ce vei citi procesul, probabil ca ti se va parea mult mai simplu sa folosesti scripturile. Totusi este important sa stii modul in care informatiile despre parole sunt stocate, pentru cazul in care ai nevoie sa recuperezi aceste informatii si nu ai la indemana uneltele Slackware. In primul rand vom adauga un nou utilizator in fisierele /etc/passwd(5), /etc/shadow(5), si /etc/group(5). Fisierul passwd contine cateva informatii despre utilizatorii sistemului dar (destul de ciudat) nu si parolele lor. Asa se intampla odata dar, din motive de securitate, s-a renuntat la acest lucru. Fisierul passwd trebuie sa poata fi
151
Slackware Linux Essentials citit de catre toti utilizatorii, dar nu vrei ca parolele criptate sa poata fi citite de toata lumea, intrucat posibilii intrusi pot folosi parolele criptate drept punct de pornire pentru decriptare parolei unui utilizator. In loc de asta, parolele sunt tinute in fisierul shadow, care poate fi citit numai de root, iar parolele fiecarui utilizator sunt introduse in fisierul passwd ca “x”. Fisierul group contine toate grupurile si corespondenta intre utilizatori si grupuri. Poti folosi comanda vipw pentru a edita fisierul /etc/passwd in siguranta, comanda vigr pentru a edita fisierul /etc/group in siguranta. Foloseste vipw -s pentru a edita fisierul /etc/shadow in siguranta. (“In siguranta” inseamna, in acest context, ca altcineva nu va putea modifica fisierul in acelasi timp cu tine. Daca esti unicul administrator, probabil ca esti oricum in siguranta, dar obiceiurile bune se formeaza de la inceput.) Haide sa examinam fisierul /etc/passwd si sa vedem cum se adauga un nou utilizator. O linie tipica in passwd arata asa: chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash
Fiecare linie este pentru un utilizator, iar fiecare camp de pe linie este separat de celelalte prin doua puncte. Campurile sunt numele de login, parola criptata (“x” pentru toata lumea pe un sistem Slackware, pentru ca Slackware foloseste parole criptate), ID-ul de utilizator, ID-ul de grup, informatiile optionale finger (separate de virgule), directorul personal si shell-ul. Pentru a adauga un nou utilizator, adauga o noua linie la sfarsitul fisierului, completand informatiile corecte. Informatiile pe care le adaugi trebuie sa indeplineasca niste conditii, altfel utilizatorul va avea probleme la login. In primul rand, asigura-te ca parola este x, si atat numele de utilizator cat si ID-ul de utilizator sunt unice. Atasaza utilizatorul la un grup, fie 100 (grupul “users” in Slackware) fie grupul tau implicit (foloseste numarul grupului, nu numele sau). Da-i utilizatorului un director personal valid (pe care il vrei crea mai tarziu) si un shell (tine minte, shell-urile valide sunt trecute in /etc/shells). Apoi, vom crea o intrare in fisierul /etc/shadow, care contine parolele criptate. O intrare tipica arata asa: chris:$1$w9bsw/N9$uwLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::
Din nou, fiecare linie este o intrare pentru o persoana, cu fiecare camp separat de doua puncte. Campurile sunt (in ordine) numele de login, parola criptata, numarul de zile de cand parola a fost schimbata ultima data, numarand de la Epoca (1 Ianuarie 1970), numarul de zile dupa care
152
Administrarea de sistem esentiala parola poate fi schimbata, numarul de zile pana cand parola trebuie schimbata, numarul de zile cu care va fi anuntat utilizatorul inainte de expirarea parolei, numarul de zile dupa expirare dupa care contul va fi dezactivat, numarul de zile de cand contul este dezactivat, numarand de la Epoca si un camp rezervat. Dupa cum vezi, majoritatea campurilor se refera la expirarea parolei. Daca nu folosesti informatiile de expirare, poti sa completezi unele campuri cu niste valori speciale. In caz contrar, va trebui sa faci cateva calcule si decizii inainte de completarea campurilor. Nu-ti face griji cu parola acum, intrucat o vei schimba imediat. Singurul caracter pe care nu il poti introduce in campul de parola este doua puncte. Lasa gol campul “zile de cand a fost schimbata parola ultima data”. Completeaza 0, 99999, si 7 exact cum ai vazut in exemplu si lasa restul campurilor goale. (Pentru cei care se gandesc ca imi pot vedea parola criptata mai sus si cred ca vor putea sa intre in sistemul meu, mult noroc. Daca imi puteti sparge parola, veti putea intra pe un sistem de test protejat de un firewall. Asta chiar ca e util :) ) Intr-un sistem Slackware, toti utilizatorii normali sunt membrii ai grupului “users”. Totusi, daca vrei sa adaugi un nou grup, sau daca vrei sa adaugi utilizatori la grupuri, va trebui sa modifici fisierul /etc/group. Iata o linie tipica: cvs::102:chris,logan,david,root
Campurile sunt numele grupului, parola grupului, ID-ul grupului si membrii grupului, separati de virgule. Crearea unui nou grup nu inseamna decat adaugarea unei linii noi, cu un ID de grup unic si o lista cu toti utilizatorii care vrei sa fie in acel grup. Utilizatorii care sunt logati vor trebui sa faca logout si apoi login pentru a beneficia de schimbari. In acest moment, este o idee buna sa folosesti comenzile pwck si grpck pentru a verifica daca ai facut niste schimbari corecte. In primul rand, foloseste pwck -r si grpck -r: optiunea -r -r nu face nici o schimbare, dar arata schimbarile pe care le-ar face daca ai rula comanda fara aceasta optiune. Poti folosi iesirea acestei comezi ca sa decizi daca mai trebuie sa modifici un fisier, daca trebuie sa rulezi pwck or grpck fara optiunea -r sau daca vrei sa lasi schimbarile asa cum sunt. Acum ar trebui sa folosesti comanda passwd pentru a crea o parola pentru utilizator. Apoi foloseste mkdir ca sa creezi directorul personal al noului utilizator in locatia pe care ai introdus-o in fisierul /etc/passwd si foloseste chown ca sa schimbi apartenenta noului director la noul utilizator.
153
Slackware Linux Essentials Stergerea unui utilizator inseamna doar stergerea tuturor intregistrarilor care exista pentru acel utilizator. Sterge intrarile utilizatorului din /etc/passwd si /etc/shadow, si sterge numele de login din toate grupurile din fisierul /etc/group . Daca vrei, poti sterge directorul personal al utilizatorului, fisierul spool de mail si intrarile din crontab (daca exista). Stergerea unui grup este la fel: sterge intrarea grupului din /etc/group./etc/group.
12.3 Oprirea corespunzatoare Este foarte important sa inchizi sistemul in mod corect. Oprindu-l doar apasand pe butonul de curent poate duce la avarii grave ale sistemului de fisiere. Cat timp este deschis, exista fisiere utilizate chiar daca tu nu faci nimic. Tine minte ca tot timpul ruleaza multe procese in fundal. Aceste procese administreaza sistemul si tin deschise multe fisiere. Cand sistemul este inchis de la buton, aceste fisiere nu sunt inchise in mod corect si pot fi corupte. In functie de ce fisier a fost stricat, sistemul poate deveni complet inutilizabil! In orice caz, va trebui sa treci printr-o indelungata procedura de verificare a sistemului de fisiere la urmatoare repornire. Daca ti-ai configurat sistemul sa foloseasca un sistem de fisiere jurnalizat, cum ar fi ext3 sau reiserfs, vei fi partial protejat de stricaciuni iar, la umatoarea restartare, verificarea va dura mult mai putin decat daca ai folosi un sistem de fisiere fara jurnalizare, cum ar fi ext2. Totusi, aceasta plasa de siguranta nu reprezinta o scuza pentru inchiderea necorespunzatoare a sistemului! Un sistem de fisiere jurnalizat te protejeaza numai de evenimentele asupra carora nu ai control, nu si de propria lene. In orice caz, cand vrei sa repornesti sau sa inchizi calculatorul, este important sa o faci in mod corect. Sunt mai multe moduri in care poti sa o faci; alege-l pe cel care crezi ca e cel mai amuzant (sau care implica cea mai putina munca). Din moment ce repornirea si inchiderea sunt proceduri asemanatoare, majoritatea modurilor de inchidere se pot aplica si la repornire.. Prima metoda este prin programul shutdown(8) si este probabil cea mai populara. shutdown poate fi folosit la repornire, la inchidere si poate afisa un mesaj tuturor utilizatorilor logati, spunandu-le ca sistemul este in curs de inchidere.
154
Administrarea de sistem esentiala Cel mai simplu mod de a inchide calculatorul este: # shutdown -h now
In acest caz nu vom trimite un mesaj personalizat catre utilizatori; ei vor vedea mesajul implicit al lui shutdown. “now” este momentul de timp cand vrei sa inchizi, iar “-h” inseamna ca vrei sa opresti sistemul. Acesta nu e este un mod tocmai prietenos de a rula un sistem multiutilizator, dar functioneaza perfect pe sistemul tau de acasa. O metoda mai buna pe un sistem multiutilizator este sa avertizezi din timp pe toata lumea: # shutdown -h +60
Asta va inchide sistemul peste o ora (60 de minute), ceea ce ar fi de ajuns pe un sistem multiutilizator. Inchiderea sistemelor vitale ar trebui programata cu mult timp inainte si ar trebui afisata note cu timpul de nefunctionare in orice loc crezi de cuviinta (e-mail, /etc/motd, orice). Restartarea sistemului se face folosind aceeasi comanda, dar utilizand “-r” cu “-h”: # shutdown -r now
Poti folosi aceeasi notatie de timp cu shutdown -r ca atunci cand folosesti shutdown -h. Sunt mai multe lucuri pe care le poti face cu shutdown pentru controlul opririi si repornirii; uita-te in pagina man pentru mai multe detalii. Al doilea mod de oprire a sistemului este folosirea comenzilor halt(8) si reboot(8). Dupa cum le spune si numele halt va opri imediat sistemul iar reboot il va reporni. (reboot este, de fapt, doar o legatura simbolica spre halt.) Sunt invocate astfel: # halt # reboot
Un mod mai intim de oprire sau repornire este sa discuti direct cu init. Toate celelalte metode sunt doar modalitati convenabile de conversatie cu init, dar poti sa-i spui direct ce sa faca folosind telinit(8) (observa faptul ca are un singur “l”). Folosind telinit ii vei spune lui init in ce nivel de rulare vrei sa ajungi, ceea ce va face ca un script special sa ruleze. Aceasta merge pentru oprirea si repornirea sistemului, pentru ca amandoua sunt nivele speciale de rulare. # telinit 0
155
Slackware Linux Essentials Nivelul de rulare 0 este modul de oprire. Spunandu-i lui init sa intre in nivelul de rulare 0, va determina ca toate procesele sa fie omorate, sistemele de fisiere sa fie demontate si sistemul sa fie oprit. Aceasta este o modalitate perfect acceptabila de a opri sistemul. Pe multe laptopuri si calculatoare moderne, acesta va face ca masina sa fie scoasa de sub tensiune. # telinit 6
Nivelul de rulare 6 este modul de repornire. Toate procesele vor fi omorate, sistemele de fisiere vor fi demontate si masina va fi repornita. Aceasta este o modalitate perfect acceptabila pentru repornirea sistemului. In caz ca esti curios, atunci cand schimbi la nivelele de rulare 0 sau 6, utilizand shutdown, halt, sau reboot, este rulat scriptul /etc/rc.d/rc.6. (Scriptul /etc/rc.d/rc.0 este o alta legatura simbolica catre /etc/rc.d/rc.6.) Poti sa personalizezi acest fisier dupa bunul tau gust – dar ai grija sa testezi schimbarile cu mare atentie! Mai exista o ultima metoda de repornire a sistemului. Pentru toate celelalte metode trebuie sa fii logat ca root. Totusi este posibil sa repornesti masina chiar daca nu esti root, cu conditia sa ai acces fizic la tastatura. Folosind Control+Alt+Delete ("salutul celor trei degete") vei face ca masina sa reporneasca imediat. (In fundal, comanda shutdown este rulata cand apesi Control+Alt+Delete.) Salutul nu functioneaza mereu cand folosesti X Window – s-ar putea sa trebuiasca sa folosesti Control+Alt+F1 (sau alta tasta functionala) pentru a schimba la un terminal non-X Window inainte sa-l folosesti. In sfarsit, fisierul care controleaza toate aspectele pornirii si opririi este fisierul /etc/inittab(5). In general nu ar trebui sa modifici acest fisier, dar s-ar putea sa-ti arate de ce lucrurile functioneaza asa cum functioneaza. Ca de obicei, uita-te in pagina man pentru alte detalii.
156
Capitolul 13
Comenzi primare de retea 13.1 ping 13.2 traceroute 13.3 Utilitare DNS 13.4 finger 13.5 telnet 13.6 The Secure shell 13.7 email 13.8 Browsers 13.9 Clienti FTP 13.10 Comunicarea cu alti utilizatori O retea consta in mai multe calculatoare interconectate. O retea variaza in complexitate. Poate fi la fel de mare ca reteaua de acasa cu cateva calculatoare, o retea a unei universitati sau chiar Internet-ul. Cand calculatorul dumneavoastra face parte dintr-o retea, puteti avea acces direct la resursele celorlalte calculatoare, sau indirect prin servicii ca web sau e-mail. Exista o varietate de programe de retea ce pot fi folosite. Unele sunt utile pentru diagnosticarea retelei, sa vedeti daca totul functioneaza cum trebuie. Altele precum clientii de e-mail sau web browser-e sunt utile pentru munca dumneavoastra si pentru a fi in contact permanent cu alte persoane.
157
Slackware Linux Essentials
13.1 ping ping(8)
trimite un pachet ICMP ECHO_REQUEST catre o masina specificata. Daca masina raspunde, primiti inapoi un pachet ICMP. Suna ciudat? Ei bine, puteti "pingui" o adresa IP a unei masini ca sa vedeti daca este oprita sau pornita. Daca nu exista un raspuns, ceva este in neregula. Un exemplu de conversatie intre doi utilizatori Linux: Utilizator A: Loki's e cazut iar. Utilizator B: Esti sigur? Utilizator A: Da, Am incercat sa-l pinguiesc, dar nu raspunde. Cazurile de genul acesta fac comanda ping o unealta foarte utilizata. Este o metoda foarte usoara prin care puteti vedea daca un calculator este pornit si/sau conectat la reta. Sintaxa de baza este: % ping www.slackware.com
Mai exista multe optiuni ce pot fi specificate. Vedeti pagina de manual ping(1) pentru mai multe informatii.
13.2 traceroute Comanda traceroute(8) este un utilitar foarte bun pentru diagnosticarea retelei. traceroute arata fiecare masina prin care un pachet trece in incercarea de a ajunge la destinatie. Puteti vedea cate "hop-uri" sunt de la dumneavoastra catre site-ul Slackware cu urmatoarea comanda: % traceroute www.slackware.com
Sunt aratate toate host-urile cu timpii de raspuns aferenti. Uitati un exemplu: % traceroute www.slackware.com traceroute to www.slackware.com (204.216.27.13), 30 hops max, 40 byte packets 1 zuul.tdn (192.168.1.1) 0.409 ms 1.032 ms 0.303 ms 2 207.171.227.254 (207.171.227.254) 18.218 ms 32.873 ms 32.433 ms 3 border-sf-2-0-4.sirius.com (205.134.230.254) 15.662 ms
158
Comenzi primare de retea 15.731 ms 16.142 ms 4 pb-nap.crl.net (198.32.128.20) 20.741 ms 23.672 ms 21.378 ms 5 E0-CRL-SFO-03-E0X0.US.CRL.NET (165.113.55.3) 22.293 ms 21.532 ms 21.29 ms 6 T1-CDROM-00-EX.US.CRL.NET (165.113.118.2) 24.544 ms 42.955 ms 58.443 ms 7 www.slackware.com (204.216.27.13) 38.115 ms 53.033 ms 48.328 ms traceroute este similar cu ping in sensul ca ambele folosesc pachete ICMP. Exista multe optiuni ce pot fi adaugate comenzii traceroute. Aceste optiuni sunt explicate detaliat in pagina de manual.
13.3 Utilitare DNS Domain Name Service (abreviat DNS) este acel protocol magic ce permite calculatorului dumneavoastra sa transforme adresele web ca www.slackware.com in adrese IP ca 64.57.102.34. Calculatoarele nu pot ruta pachete catre www.slackware.com, dar le pot ruta catre adresa IP al acelui domeniu. Aceasta este o metoda foarte buna de a va aminti usor adresele masinilor. Fara DNS ar trebui sa tinem noi minte fiecare adresa IP a fiecarei masini, si asta presupunand ca adresa IP nu se va schimba niciodata. In mod cert folosirea numelor pentru calculatoare este foarte buna, dar cum putem mapa numele catre adresele IP?
13.3.1 host host(1) poate face acest lucru. host este folosit pentru a mapa numele catre adresele IP. Este un utilitar mic, simplu si fara prea multe functii. % host www.slackware.com www.slackware.com is an alias for slackware.com. slackware.com has address 64.57.102.34
Sa zicem ca vrem sa mapam o adresa IP catre un nume; cum facem acest lucru?
159
Slackware Linux Essentials
13.3.2 nslookup nslookup este un program ce exista de foarte multi ani. nslookup este foarte vechi si este posibil sa nu mai existe in versiunile viitoare. Nici nu exista o pagina de manual pentru acest program. % nslookup 64.57.102.34 Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. Server: 192.168.1.254 Address: 192.168.1.254#53 Non-authoritative answer: www.slackware.com canonical name = slackware.com. Name: slackware.com Address: 64.57.102.34
13.3.3 dig The domain information groper, pe scurt dig(1) este utilitarul de baza pentru a afla informatii DNS. dig poate afla aproape orice informatie de la un DNS server chiar si reverse lookups, A, CNAME, MX, SP, si TXT. dig are extrem de multe optiuni, si daca nu sunteti foarte familiar cu ele, ar trebui sa cititi in detaliu stufoasa pagina de man. % dig @192.168.1.254 www.slackware.com mx ; <<>> DiG 9.2.2 <<>> @192.168.1.254 www.slackware.com mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26362 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.slackware.com. ;; ANSWER SECTION: www.slackware.com. slackware.com. slackware.com. mail.slackware.com.
160
IN
MX
76634
IN
CNAME
86400
IN
MX
1
Comenzi primare de retea ;; AUTHORITY SECTION: slackware.com. slackware.com.
86400 86400
IN IN
NS NS
;; ADDITIONAL SECTION: ns1.cwo.com. 163033 IN A ns2.cwo.com. 163033 IN A ;; Query time: 149 msec ;; SERVER: 192.168.1.254#53(192.168.1.254) ;; WHEN: Sat Nov 6 16:59:31 2004 ;; MSG SIZE rcvd: 159
ns1.cwo.com. ns2.cwo.com.
64.57.100.2 64.57.100.3
Exemplul ar trebui sa va dea o idee despre cum functioneaza dig. “@192.168.1.254” specifica ce server DNS vrem sa folosim. “www.slackware.com” aste domeniul despre care vrem sa aflam mai multe informatii, si “mx” este tipul de informatie pe care o vrem. Din informatiile de mai sus, aflu ca orice e-mail trimis catre www.slackware.com va fi trimis catre mail.slackware.com
13.4 finger finger(1) este folosit pentru a afla informatii despre un anume utilizator. Daca folosim finger asupra unui nume de utilizator sau o adresa de e-mail, serverul ne va da informatiile despre utilizator, cum ar fi adresa, numar de telefon, tot ce a fost specificat cand utilizatorul a fost adaugat in sistem cu adduser. Un exemplu este: % finger [email protected] finger poate preciza numele de utilizator, email-ul, numere de telefon, si fisiere numite “dot plan” si “dot project”. Desigur informatiile variaza in functie de serverul finger. Cel inclus in Slackware precizeaza urmatoarele informatii: • Username • Room number • Home phone number • Work phone number • Login status • Email status • Contents of the .plan file in the user's home directory • Contents of the .project file in the user's home directory
161
Slackware Linux Essentials Primele patru pot fi modificate cu ajutorul comenzii chfn. Tine minte informatiile in fisierul /etc/passwd. Pentru a modifica informatiile din fisierul .plan sau .project pur si simpu editatile cu editorul preferat. Fisierele trebuie sa fie in directorul personal, cu numele de .plan si .project. Multi utilizatori fac finger asupra propriului cont de pe alte masini pentru a afla daca au un e-mail nou. De altfel puteti afla planurile utilizatorului sau proiectul la care acesta lucreaza. Ca multe alte comenzi, finger are optiuni. Verificati pagina de man pentru alte optiuni.
13.5 telnet Cineva a spus odata ca telnet(1) este cel mai bun utilitar care a putut sa existe pe un calculator. Ai putea sa te autentifici via retea sau Internet pe o alta masina si sa iti faci treaba in mod normal este ceea ce separa sistemele de operare Unix si Unix-like de restul lumii. telnet iti da voie sa te autentifici pe o masina ca si cand aceasta ar fi in fata ta. Odata ce username si password au fost acceptate, vei primi un shell. De aici poti sa faci abslolut orice se poate face intr-o consloa normala. Administrare de sistem, sa citesti e-mail-ul sa modifici fisiere s.a.m.d. Daca lucrezi in X si faci telnet catre alta masina, poti rula programe de X pe masina remote si sa afisezi acestea pe masina curenta. Pentru a te autentifica pe o masina remote, foloseste sintaxa: : % telnet
Daca masina raspunde, vei vedea un ecran de login. Introdu username si parola. Asta este tot. Acum esti intr-un shell. Pentru a face log-out utilizeaza comanda exit sau logout. telnet nu cripteaza informatia trimisa. Totul este trimis in text clar, chiar si parolele. Nu este recomandat sa folosesti telnet via Internet. Incerca in schimb Secure Shell. Cripteaza toata informatia trimisa si este de asemenea gratuit.
162
Comenzi primare de retea
13.5.1 Alte moduri de a utiliza telnet Acum ca v-am convins sa nu folositi telnet va vom arata alte intrebuintari practice ale programului telnet. Poti folosi telnet ca sa te conectezi la o masina remote pe un anume port. % telnet [port]
Poate fi de mare folos cand trebuie sa testezi un anume serviciu, HTTP, POP3, etc. Mai jos se poate vedea telnet catre un server HTTP pe portul 80 pentru a afla cateva detalii despre el. Figura 13-1. Telnet catre un webserver % telnet store.slackware.com 80 Trying 69.50.233.153... Connected to store.slackware.com. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Mon, 25 Apr 2005 20:47:01 GMT Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7d Last-Modified: Fri, 18 Apr 2003 10:58:54 GMT ETag: "193424-c0-3e9fda6e" Accept-Ranges: bytes Content-Length: 192 Connection: close Content-Type: text/html Connection closed by foreign host. %
Poti sa faci la fel pentru orice alt protocol plain-text, atat timp cat sti pe ce port sa te conectezi.
13.6 The Secure shell In ziua de azi, secure shell se bucura de popularitatea pe care telnet o avea odata. ssh(1) iti da voie sa te autentifici pe o masina remote si sa faci ce doresti, ca si cand ar fi in fata ta; totusi, ssh cripteaza toata informatia ce circula intre cele doua masini. Chiar daca cineva ar
163
Slackware Linux Essentials intercepta aceste informatii, ar fi imposibil sa le inteleaga. Urmeaza un exemplu tipic de conexiune ssh: % ssh carrier.lizella.net -l alan The authenticity of host 'carrier.lizella.net (192.168.1.253)' can't be established. RSA key fingerprint is 0b:e2:5d:43:4c:39:4f:8c:b9:85:db:b2:fa:25:e9:9d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'carrier.lizella.net' (RSA) to the list of known hosts. Password: password Last login: Sat Nov 6 16:32:19 2004 from 192.168.1.102 Linux 2.4.26-smp. alan@carrier:~$ ls -l MANIFEST -rw-r--r-- 1 alan users 23545276 2004-10-28 20:04 MANIFEST alan@carrier:~$ exit logout Connection to carrier.lizella.net closed.
Poti observa o conexiune catre carrier.lizella.net, si verificarea permisiilor pe fisierul MANIFEST file.
13.7 email Posta electronica este unul dintre lucrurile cele mai cunoscute pe care le poate face cineva pe Internet. S-a reportat ca in 1998 a fost trimisa mai multa posta electronica decat clasica. Este intra-devar comun si folositor. Sub Slackware, oferim un mail server standard si diferiti clienti de mail. Toti clientii descrisi mai jos sunt bazati pe text. Multi utilizatori Windows ar putea sa fie impotriva acestui lucru, dar vei afla ca un client bazat pe text este foarte convenabil, in special cand verifici mail-ul de la distanta. Nu te teme, sunt multi clienti de e-mail grafici cum ar fi Kmail-ul de la KDE. Daca vrei sa folosesti unul dintre acelea verifica in meniul de ajutor.
13.7.1 pine pine(1) nu este elm. Sau asa se spune. Universitea din Washington a creat programul lor pentru stirile de pe Internet si e-mail din nevoia pentru
164
Comenzi primare de retea un cititor de mail simplu pentru sutdentii lor. pine este unul dintre cei mai populari clienti de mail folositi azi si este disponibil pentru aproape toate genurile de Unix si Windows. Figura 13-2. Meniul Pine principal
Vei vedea un meniu de comenzi si un rand de chei comanda in partea de jos. pine este intr-adevar un program complex, asa ca nu vom discuta fiecare trasatura a acestuia aici. Pentru a vedea ce este in inbox, apasa pe i. Mesajele tale sunt listate cu data, autorul si subiectul. Marcheaza mesajul pe care il vrei si apasa enter pentru a-l vizualiza. Apasand pe r va incepe un reply la mesaj. Odata ce ai scris raspunsul, apasa pe Ctrl+X pentru a-l trimite. Poti apasa pe i pentru a te intoarce la lista mesajelor. Daca vrei sa stergi un mesaj, apasa pe d. Va marca mesajul selectat pentru stergere. pine sterge mailul cand parasesti programul. pine te lasa de asemenea sa iti stochezi mailul in directoare. Poti vedea lista directoarelor apasand s. La listarea mesajelor, apasa s pentru a-l salva in alt director. Iti va cere numele directorului in care sa scrie mesajul. pine are multe, foarte multe caracteristici; ar trebui neaparat sa te uiti la pagina manual pentru mai multe informatii. Va contine cea mai recenta informatie despre program.
13.7.2 elm elm(1) este un alt client de mail popular bazat pe text. Desi nu la fel de prietenos ca si pine, este cu siguranta prezent de mai multa vreme.
165
Slackware Linux Essentials Figura 13-3. Ecranu principal Elm
Esti plasat in inbox-ul tau implicit. Mesajele sunt listate cu numarul mesajului, data, expeditor si subiect. Foloseste tastele sageata pentru a marca mesajele pe care le vrei. Apasa Enter pentru a citi mesajul. Pentru a compune un mesaj nou, apasa m la meniul principal. Tasta dva marca un mesaj pentru stergere. Tasta r va raspunde mesajului pe care il citesti. Toate aceste taste sunt afisate in partea de jos a ecranului cu un prompt. Pagina de manual discuta despre elm in mai mult detaliu, deci probabil ca vei vrea sa o consulti inainte de a folosi elm.
13.7.3 mutt “Toti clientii de mail sunt naspa. Aceasta e naspa mai putin ca celelalte.” Interfata originala.mutt a fost bazata pe elm cu trasaturi adaugate in alti clienti de mail populari, rezultand intr-un mutt hibrid. Cateva dintre trasaturile luimutt • suport pentru culori • filetarea mesajelor • suport pentru MIME si PGP/MIME • suport pentru pop3 si imap • suport pentru multiple formaturi mailbox (mbox, MMDF, MH, maildir) • foarte configurabil
166
Comenzi primare de retea Figura 13-4. Ecranul principal Mutt
Daca cauti un client de mail care te va lasa sa fii in control total asupra tot, atunci iti va placea mutt. Toate setarile implicite pot fi configurate, combinatiile de taste pot fi schimbate. Daca iti place sa adaugi un macrox, poti. Probabil ca vei vrea sa arunci o privire la pagina de manual a muttrc care iti va spune cum sa configurezi totul. Sau uita-te la fisierul exemplu muttrc inclus.
13.7.4 nail nail(1) este un client de mail condus de linia de comanda. Este foarte primitiv si nu ofera cam nimic ca si interfata utilizator. Desi, mailx este util in momentele cand vrei sa trimiti ceva repede, scriptarea unui bulk mailer, testarea instalatiei MTA sau ceva similar. Tine minte ca Slackware creeaza link-uri simbolice catre nail la /usr/bin/mail si /usr/bin/mailx. Oricare dintre aceste trei comenzi executa acelasi program. De fapt, vei vedea ca nail este cel mai des referit ca mail. mail. Linia de comanda primara este: % mailx <subject>
citeste corpul mesajului de la intrarea standard. Asa ca poti concatena un fisier acestei comenzi pentru a o trimite, sau poti pur si simplu sa tastezi textul si sa apesi Ctrl+D cand termini cu mesajul. Aici este un exemplu de trimite a sursei unui program unei alte persoane. mailx
167
Slackware Linux Essentials % cat randomfunc.c | mail -s "Here's that function" [email protected]
Pagina de manual explica mai mult din ceea ce poate nail sa faca, asa ca vei vrea probabil sa arunci o privire acolo inainte de a-l folosi.
13.8 Navigatoare (browser) Primul lucru la care se gandesc oamenii cand aud cuvantul Internet este “navigarea pe net”. Sau verificarea paginilor web folosind un browser web. Acesta este probabil cea mai populara folosire a Internetului pentru utilizatorul obisnuit. Slackware furnizeaza web browsere grafice populare in seriile “XAP”, precum si browsere text in seriile “N”. Vom arunca o privire rapida asupra catorva dintre optiunile cele mai obisnuite.
13.8.1 lynx lynx(1)
este un browser web bazat pe text. Este o metoda foarte rapida de a cauta ceva pe Internet. Cateodata grafica iti sta pur si simplu in cale daca stii exact ce cauti. Pentru a porni lynx, tasteaza pur si simplu lynx la prompt: % lynx
Figura 13-5. Pagina implicita la pornirea Lynx
Vei vrea sa specifici o pagina pe care sa o deschida lynx:
168
Comenzi primare de retea % lynx http://www.slackware.com
afiseaza tastele comanda si ce fac in josul ecranului. Tastele sageata sus si jos te poarta prin document, Enter alege link-ul marcat, iar sageata stanga te duce la pagina anterioara. Apasand d va descarca fisierul selectat. Comanda g afiseaza prompt-ul Go, unde poti sa-i dai lui lynx un URL pe care sa-l deschida. Sunt multe alte comenzi in lynx. Poti consulta fie pagina manualului, sau sa apesi pe h pentru a vedea ecranul de ajutor pentru mai multe informatii. lynx
13.8.2 links La fel ca si lynx, links este un browser web mod text, unde faci toata navigarea folosind tastatura. Desi, cand apesi pe tasta Esc va activa un meniu foarte convenabil in susul ecranului. Acesta il face foarte usor de folosit, fara a trebui sa inveti toate scurtaturile tastaturii. Oameni care nu folosesc un browser text in fiecare zi vor aprecia aceasta trasatura. links pare sa aiba mai mult suport pentru frame-uri si tabele, fata de lynx. Figura 13-6. Links, cu meniul fisier deschis
13.8.3 wget wget(1) este un utilitar pe linia de comanda care va downloada fisiere dintr-un URL specific. Pe cand nu este un web browser de fapt, wget este folosit pentru a lua parti intregi sau partiale ale paginilor web
169
Slackware Linux Essentials pentru vizualizarea offline, sau pentru download-uri rapide ale fisierelor de pe servere HTTP sau FTP. Sintaxa de baza este: % wget
Poti sa ii dai si optiuni. De exemplu, aceasta va downloada pagina web Slackware: % wget --recursive http://www.slackware.com wget va crea un director www.slackware.com si va stoca fisierele acolo, la fel cum face site-ul. wget poate downloada de asemenea de pe site-uri FTP; specifica doar un URL FTP in locul unuia HTTP. % wget ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz --12:18:16-- ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz => `wget-1.8.2.tar.gz' Resolving ftp.gnu.org... done. Connecting to ftp.gnu.org[199.232.41.7]:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /gnu/wget ... done. ==> PORT ... done. ==> RETR wget-1.8.2.tar.gz ... done. Length: 1,154,648 (unauthoritative) 100%[==================================>] 1,154,648 209.55K/s ETA 00:00 12:18:23 (209.55KB/s) - `wget-1.8.2.tar.gz' saved [1154648] wget are mai multe optiuni, care il fac util pentru scripturi specifice web (oglindirea paginilor web s.a.m.d.). Pentru mai multe informatii ar trebui sa fie consultata pagina de manual..
13.9 Clienti FTP FTP inseamna File Transfer Protocol. Iti permite sa trimiti si sa primesti fisiere intre doua calculatoare. Este serverul si clientul FTP. In aceasta sectiune discutam despre client. Pentru cei curiosi, clientul esti tu. Serverul este calculatorul care iti raspunde cererilor tale FTP si te lasa sa te loghezi. Vei downloada fisiere si vei uploada fisiere pe server. Clientul nu poate accepta conexiuni FTP, poate doar sa se conecteze la alte servere.
170
Comenzi primare de retea
13.9.1 ftp Pentru a te conecta la un server FTP, ruleaza comanda ftp(1) si specifica host-ul: % ftp [port]
Daca host-ul ruleaza un server FTP, ii va cere un nume de utilizator si o parola. Poti sa te loghezi cu username-ul tau sau cu “anonymous”. Site-urile FTP anonime sunt foarte populare pentru arhive software. De exemplu, pentru a lua Slackware Linux prin FTP, trebuie sa folosesti un FTP anonim. Odata conectat, vei fi la promptul ftp>. Sunt comenzi speciale pentru FTP, dar ele sunt similare cu alte comenzi standard. Tabelul urmator arata cateva dintre comenzile de baza si ce fac ele: Cpmanda ls cd bin ascii get put hash tick prom mget <mask> mput <mask> quit
Tabelul 13-1. comenzi ftp Scop Listeaza fisiere Schimba director Seteaza modul de transfer binar Seteaza modul de transfer ASCII Downloadeaza un fisier Uploadeaza un fisier Porneste/Opreste indicatorul de tranfer Porneste/Opreste indicatoul pentru byte Porneste/Opreste modul interactiv pentru downloaduri Downloadeaza un fisier sau un grup de fisiere; sunt permise caracterele de potrivire Uploadeaza un fisier sau un grup de fisiere; sunt permise caracterele de potrivire Paraseste serverul FTP
Poti de asemenea sa folosesti cateva dintre comenzile urmatoare care se explica singure: chmod, delete, rename, rmdir. Pentru o lista completa a tuturor comenzilor si insemnatatea lor, tasteaza help sau ? si vei vedea o listare completa pe ecran.
171
Slackware Linux Essentials FTP este un program destul de simplu de folosit, dar ii lipseste interfata cu utilizatorul cu care multi dintre noi suntem obisnuiti. Pagina de manual discuta cateva dintre optiunile liniei de comanda pentru ftp(1). ftp> ls *.TXT 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. -rw-r--r-1 root 100 18606 Apr 6 2002 BOOTING.TXT -rw-r--r-1 root 100 10518 Jun 13 2002 COPYRIGHT.TXT -rw-r--r-1 root 100 602 Apr 6 2002 CRYPTO_NOTICE.TXT -rw-r--r-1 root 100 32431 Sep 29 02:56 FAQ.TXT -rw-r--r-1 root 100 499784 Mar 3 19:29 FILELIST.TXT -rw-r--r-1 root 100 241099 Mar 3 19:12 PACKAGES.TXT -rw-r--r-1 root 100 12339 Jun 19 2002 README81.TXT -rw-r--r-1 root 100 14826 Jun 17 2002 SPEAKUP_DOCS.TXT -rw-r--r-1 root 100 15434 Jun 17 2002 SPEAK_INSTALL.TXT -rw-r--r-1 root 100 2876 Jun 17 2002 UPGRADE.TXT 226 Transfer complete. ftp> tick Tick counter printing on (10240 bytes/tick increment). ftp> get README81.TXT local: README81.TXT remote: README81.TXT 200 PORT command successful. 150 Opening BINARY mode data connection for README81.TXT (12339 bytes). Bytes transferred: 12339 226 Transfer complete. 12339 bytes received in 0.208 secs (58 Kbytes/sec)
13.9.2 ncftp ncftp(1)
(pronuntat "Nik-F-T-P") este o alternativa pentru traditionalul client ftp care vine cu Slackware. Este tot un program bazat pe text, dar ofera multe avantaje fata de ftp, incluzand: • Completare Tab • Fisier de Bookmarks • Caractere de potrivire mai liberale
172
Comenzi primare de retea •
Istoria comenzilor Implicit, ncftp va incerca sa se autentifice ca anonymous la serverul pe care il specifici. Il poti forta sa prezinte un prompt de login cu optiunea “-u”. Odata logat, poti folosi aceleasi comenzi ca la ftp, doar ca vei observa o interfata mai draguta, una care functioneaza ca bash. ncftp /pub/linux/slackware > cd slackware-current/ Please read the file README81.TXT it was last modified on Wed Jun 19 16:24:21 2002 - 258 days ago CWD command successful. ncftp ...ware/slackware-current > ls BOOTING.TXT FAQ.TXT bootdisks/ CHECKSUMS FILELIST.TXT extra/ CHECKSUMS.asc GPG-KEY isolinux/ CHECKSUMS.md5 PACKAGES.TXT kernels/ CHECKSUMS.md5.asc PRERELEASE_NOTES pasture/ COPYING README81.TXT rootdisks/ COPYRIGHT.TXT SPEEKUP_DOCS.TXT slackware/ CRYPTO_NOTICE.TXT SPEEK_INSTALL.TXT source/ CURRENT.WARNING Slackware-HOWTO ChangeLog.txt UPGRADE.TXT ncftp ...ware/slackware-current > get README81.TXT README81.TXT: 12.29 kB 307.07 kB/s
13.10 Comunicarea cu alti oameni 13.10.1 wall wall(1)
este un mod rapid de a scrie un mesaj utilizatorilor de pe sistem. Sintaxa de baza este:
% wall [file]
Aceasta va rezulta in afisarea continutului lui [fisier] pe terminalele tuturor utilizatorilor logati in mod actual pe sistem. Daca nu specifici un fisier, wall va citi de pe intrarea standard, asa ca iti poti scrie mesajul, si sa-l termini cu Ctrl+d.
173
Slackware Linux Essentials wall nu are multe trasaturi, si pe langa faptul ca iti lasa utilizatorii sa stie ca vei face ceva serios pe sistem, sau chiar sa restartezi, astfel incat sasi poata salva munca si sa iasa de pe sistem :)
13.10.2 talk talk(1)
le permite utilizatorilor sa vorbeasca. Imparte ecranul in jumatate, pe orizontala. Pentru a initia o convorbire cu alta persoana, foloseste aceasta comanda: % talk [ttyname]
Figura 13-7. Doi utilizatori intr-o sesiune talk
Daca specifici doar un nume de utilizator, cerinta de convorbire se presupune ca este locala, deci doar utilizatorii locali sunt intrebati. ttyname-ul este cerut daca vrei sa vorbesti un utilizator pe un terminal specific (daca utilizatorul este logat de mai multe ori). Informatia de care are nevoie talk se poate obtine cu comanda w(1). talk poate de asemenea sa sune utilizatorii de pe hosturi aflate la distanta. Pentru numele de utilizator specifici pur si simplu o adresa de email. talk va incerca sa contacteze acel utilizator aflat la distanta pe acel host. talk este oarecum limitat. Suporta doar doi utilizatori si este halfduplex.
174
Comenzi primare de retea
13.10.3 ytalk ytalk(1) este un inlocuitor compatibil cu versiuni anterioare talk. El vine cu Slackware sub comanda ytalk. Sintaxa este similara, dar are cateva diferente: % ytalk <username>[#ttyname]
Figura 13-8. Doi utilizatori intr-o sesiune ytalk
Numele de utilizator si terminalul sunt specificate ca si sub talk, doar ca trebuie sa le pui impreuna cu semnul diez (#). ytalk ofera cateva avantaje: • Suporta mai mult de doi utilizatori. • Are un meniu de optiuni care poate fi activat oricand cu tasta Esc. • Poti sa iesi in shell in timp ce esti inca in sesiunea ytalk. • Plus altele... Daca esti administratorul unui server, vei vrea sa te asiguri ca portul ntalk este activat in /etc/inetd.conf. ytalk are nevoie de acest lucru pentru a functiona corespunzator.
175
Capitolul 14
Securitatea 14.1 Dezactivarea servicilor 14.2 Controlarea accesului bazat pe host-uri 14.3 Mentinerea la curent Securitatea in orice sistem este importanta; ea poate preveni lumea sa lanseze atacuri de pe masina ta, cat si protejeaza datele sensibile. Acest capitol indica modul de a incepe securizarea calculatorului tau Slackware impotriva script kiddies-ilor, cracker-ilor si totodata impotriva rogue hamster-ilor. Tine minte ca acesta este doar inceputul securizarii sistemului; securitatea este un proces, nu o stare.
177
Slackware Linux Essentials
14.1 Dezactivarea servicilor Primul pas dupa instalarea Slackware-ului ar trebui sa fie dezactivarea servicilor de care nu ai nevoie. Orice serviciu este o potentiala expunere la un risc de securitate, deci este important sa ruleze cu cat mai putin posibile servici (i.e. numai acelea care sunt necesare). Servicile sunt pornite din doua parti importante - inetd si scripturile init.
14.1.1 Servicii pornite de inetd Multi daemon-i care vin cu Slackware sunt rulati din inetd(8). este un daemon care asculta pe toate porturile folosite de serviciile configurate sa fie pornite de el si porneste o instanta a daemon-ului corespunzator cand se incearca o conexiune. Daemon-ii porniti din inetd pot fi dezactivati prin comentarea catorva linii din /etc/inetd.conf. Pentru a face asta deschide acest fisier in editorul favorit (e.g. vi)si ar trebui sa vezi linii similare cu acestea: inetd
telnet stream in.telnetd
tcp
nowait
root
/usr/sbin/tcpd
Poti dezactiva acest servici, si oricare altele de care nu ai nevoie, prin comentarea lor (i.e. adaugarea unui simbol # (diez) la inceputul liniei). Atunci linia de mai sus ar deveni: #telnet stream in.telnetd
tcp
nowait
root
/usr/sbin/tcpd
Dupa ce inetd a fost repornit, acest serviciu va fi dezactivat. Poti reporni inetd inetd cu comanda: # kill -HUP $(cat /var/run/inetd.pid)
14.1.2 Servicii pornite de scripturi init Restul serviciilor pornite la deschiderea calculatorului sunt pornite de catre scripturi init din /etc/rc.d/. Acestea pot fi dezactivate in doua moduri diferite, primul fiind scoaterea permisiunilor de executare a init scriptului respectiv, si al doilea este comentarea linilor corespunzatoare din scripturile init. De exemplu, SSH este pornit de catre propriul init script /etc/rc.d/rc.sshd. Poti sa-l dezactivati folosind:
178
Securitatea # chmod -x /etc/rc.d/rc.sshd
Pentru servicile care nu au propriul init script, va fi nevoie sa comentezi linile respective din init script-uri pentru a le dezactiva. De exemplu, daemon-ul portmap este pornit de urmatoarele linii in /etc/rc.d/rc.inet2: # This must be running in order to mount NFS volumes. # Start the RPC portmapper: if [ -x /sbin/rpc.portmap ]; then echo "Starting RPC portmapper: /sbin/rpc.portmap" /sbin/rpc.portmap fi # Done starting the RPC portmapper.
Acestea pot fi dezactivate prin adaugarea simbolurilor # la inceputul linilor care nu incep deja cu ele, astfel: # This must be running in order to mount NFS volumes. # Start the RPC portmapper: #if [ -x /sbin/rpc.portmap ]; then # echo "Starting RPC portmapper: /sbin/rpc.portmap" # /sbin/rpc.portmap #fi # Done starting the RPC portmapper.
Aceste schimbari vor intra in vigoare ori dupa ce resetezi sau schimband din runlevel-ul 3 sau 4 si inapoi. Poti face asta tastand urmatoarele in consola (va trebui sa te logezi din nou dupa schimbarea in runlevel 1): # telinit 1 # telinit 3
14.2 Controlarea accesului bazat pe host-uri 14.2.1 iptables este programul de configurare a filtrari pachetelor de la Linux 2.4 in sus. Kernel-ul 2.4 (2.4.5, pentru exactitate) a fost primul introdus in Slackware (ca optiune) in versiunea 8.0 si a fost facut implicit in Slackware 8.1. Aceasta sectiune acopera numai bazele utilizari sale si ar trebui sa te uiti peste http://www.netfilter.org/ pentru mai multe detalii. Aceste comenzi pot fi introduse in /etc/rc.d/rc.firewall, care trebuie setat drept executabil pentru ca aceste reguli sa aiba efect la pornire. Ai iptables
179
Slackware Linux Essentials grija la comenzile incorecte iptables care te pot bloca in afara propriului calculator. Decat daca esti 100% sigur de cunostiintele tale n-ar trebui sa te asiguri ca ai aces local pe masina. Primul lucru care majoritatea lumii ar trebui sa o faca este sa seteze politica implicita pentru fiecare lant inbound pe DROP: # iptables -P INPUT DROP # iptables -P FORWARD DROP
Cand totul este blocat, poti incepe sa deschizi treptat. Primul lucru care trebuie deschis este traficul pentru sesiunile ce sunt deja stabilite: # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Pentru a nu impiedica aplicatile ce comunica folosind adresa de loopback, este in general bine sa adaugi o regula ca aceasta: # iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
Aceste reguli permit orice trafic spre si de la 127.0.0.0/8 (127.0.0.0 127.255.255.255) prin interfata(lo). Cand creezi reguli este o idee buna sa fi cat mai specific posibil, pentru a te asigura ca regulile tale nu lasa loc pentru ceva rau. Acestea fiind spuse, regulile care permit prea putin inseamna mai multe reguli si mai multa tastare. Urmatorul lucru care ar trebui sa-l faci ar fi sa lasi acces servicilor specifice ce ruleaza pe masina ta. Daca, de exemplu, ai vrut sa rulezi un server web pe masina ta, ar trebui sa folosesti o regula similara cu aceasta: # iptables -A INPUT -p tcp --dport 80 -i ppp0 -j ACCEPT
Aceasta va permite acces de la orice masina prin port-ul 80 la masina ta prin intermediul interfetei ppp0. Ai putea sa restrictionezi accesul la acest serviciu astfel incat numai anumite masini sa-l poata accesa. Aceasta regula permite acces catre serviciul tau de web dinspre 64.57.102.34: # iptables -A INPUT -p tcp -s 64.57.102.34 --dport 80 -i ppp0 -j ACCEPT
Permiterea traficului ICMP poate fi folositor pentru diagnosticare. Pentru a face asta, ai folosi o regula ca aceasta: # iptables -A INPUT -p icmp -j ACCEPT
180
Securitatea Majoritatea oamenilor ar vrea sa seteze pe masina lor gateway si Network Address Translation (NAT), ca alte calculatoare din reteaua lor sa acceseze internetul prin ea. Ar trebui sa folosesti urmatoarea regula pentru a face asta: # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
La fel va trebui sa permiti IP forwarding. Poti face asta temporar, folosind comanda: # echo 1 > /proc/sys/net/ipv4/ip_forward
Pentru a permite IP forwarding intr-un mod permanent (i.e. astfel incat schimbarea sa fie retinuta dupa repornire), va trebui sa deschizi fisierul/etc/rc.d/rc.inet2 in editorul preferat si sa schimbi urmatoarea linie: IPV4_FORWARD=0
...cu asta: IPV4_FORWARD=1
Pentru mai multe informatii despre NAT, vezi NAT HOWTO.
14.2.2 tcpwrappers tcpwrappers controleaza accesul daemon-ilor la nivelul aplicatiei, altfel decat la nivel de IP. Aceasta poate oferi o fasie in plus de securitate in momentele in care la nivelele de contol de acces IP (e.g. Netfilter) nu functioneaza corect. De exemplu, daca recompilezi kernelul dar uiti sa incluzi suport iptables, nivelul de protectie IP va esua dar tcpwrappers va continua sa ajute protejarea sistemului tau. Accesul la servicii protejate de tcpwrappers poate fi controlat utilizand /etc/hosts.allow si /etc/hosts.deny. Majoritatea lumii va avea o singura linie in fisierul /etc/hosts.deny si anume sa impiedice accesul la orice daemon-i implicit. Aceasta linie ar fi: ALL : ALL
Cand este facut acest lucru, te poti concentra inspre permiterea servicilor pentru host-uri specifice, domenii, sau intervale de IP. Aceast lucru poate fi facut in fisierul /etc/hosts.allow care urmeaza acelasi format.
181
Slackware Linux Essentials Multi oameni ar incepe prin permiterea accesului tuturor conexiunilor dinspre localhost. Acest lucru poate fi realizat asa: ALL : 127.0.0.1
Pentru a permite acces SSHd dinspre 192.168.0.0/24, ai putea folosi oricare dintre urmatoarele reguli: sshd : 192.168.0.0/24 sshd : 192.168.0.
Este deopotriva posibil sa restrictionezi accesul catre host-uri din anumite domenii. Asta poate fi facut folosind urmatoarea regula (vezi ca aceasta se bazeaza pe increderea inversarea intrari DNS pentru host-ul ce se conecteaza, deci as recomanda impotriva utilizari pentru host-uri ce se conecteaza de pe Internet): : sshd : .slackware.com
14.3 Mentinerea la curent 14.3.1 Lista de mail-uri slackware-security Oricand o problema de securitate afecteaza Slackware, un email este trimis tuturor abonatilor listei de mail [email protected]. Rapoarte sunt trimise privind vulnerabilitatile oricarei parti a Slackwareului, separat de software-ul din /extra or /pasture. Aceste email-uri cu anunturi de securitate includ detalii privind obtinerea versiunilor de pachete reinoite Slackware sau metode de evitare, daca exista. Inscrierea la listele de mail Slackware este acoperita in Sectiunea 2.2.2.
14.3.2 Directorul /patches Oricand pachetele reinoite sunt eliberate pentru o versiune a Slackware-ului (deobicei numai pentru a rezolva o problema de securitate, in cazul deja existent al versiunilor pachetelor Slackware), ele sunt puse in directorul /patches. Calea intreaga catre aceste patch-uri depind de mirror-ul pe care-l folositi, dar vor lua forma /path/to/slackwarex.x/patches/.
182
Securitatea Inainte de a instala oricare din aceste pachete, este o idee buna de a verifica md5sum pachetului. md5sum(1)este o utilitate in linie de comanda care creaza un hash matematic "unic" al fisierului. Daca un singur bit al fisierului a fost schimbat, atunci va fi generat un md5sum diferit. % md5sum package--<arch>-.tgz 6341417aa1c025448b53073a1f1d287d package--<arch>.tgz
Ar trebui sa verifici acesta cu linia noului pachet din fisierul (la fel si in de la lista slackware-security. Daca ai un fisier cu valorile md5sum in el, il poti scoate cu optiunea -c pentru md5sum.
CHECKSUMS.md5 din radacina directorului slackware-$VERSION directorul /patches pentru patch-uri) sau in email-ul primit
# md5sum -c CHECKSUMS.md5 ./ANNOUNCE.10_0: OK ./BOOTING.TXT: OK ./COPYING: OK ./COPYRIGHT.TXT: OK ./CRYPTO_NOTICE.TXT: OK ./ChangeLog.txt: OK ./FAQ.TXT: FAILED
Precum vezi, orice fisier pe care il evalueaza md5sum ca fiind corect este listat cu “OK” in timp ce fisierele ce au esuat sunt etichetate “FAILED”. (Da, aceasta a fost o insulta adresata inteligentei tale. De ce ma suporti?)
183
Capitolul 15
Fisiere Arhiva 15.1 gzip 15.2 bzip2 15.3 tar 15.4 zip
185
Slackware Linux Essentials
15.1 gzip gzip(1)
este programul de compresie GNU. Preia un singur fisier si il comprima. Este folosit in general ca: % gzip filename
Fisierul rezultat se va numi numefisier.gz si de obicei va fi mai mic decat fisierul introdus. Notati ca numefisier.gz va inlocui numefisier. Aceasta inseamna ca numefisier nu va mai exista, desi o copie gzip-uita a sa va fi. Fisierele text obisnuite se vor comprima bine, in timp ce fisierele jpeg, mp3 si altele de acest tip nu vor fi comprimate prea bine deoarece ele sunt deja comprimate. Aceasta functie de baza ofera o balanta intre marimea finala a fisierului si timpul de compresie. Compresia maxima se obtine in felul urmator: % gzip -9 filename
Aceasta va cere mai mult timp pentru compresia fisierului, dar rezultatul va fi cel mai mic care se poate obtine cu gzip. Folosirea valorilor mai mici in optiunea liniei de comanda va face compresia mai rapida, dar fisierul nu va mai fi la fel de bine comprimat. Decompresia fisierelor gzip-uite se poate face folosind doua comenzi, care de fapt sunt acelasi program. gzip va decomprima orice fisier cu o extensie recunoscuta. O extensie recunoscuta poate fi oricare din urmatoarele: .gz, -gz, .z, -z, .Z, sau -Z. Prima metoda este folosirea gunzip(1) pe un fisier, in acest fel: % gunzip filename.gz
Aceasta va lasa o versiune decomprimata a fisierului introdus in directorul curent si extensia .gz va fi stearsa de la numele fisierului. gunzip este de fapt o parte a gzip si este identic cu gzip -d. Din acest motiv, gzip este adeseori pronuntat gunzip, pentru ca suna mai misto. :^)
186
Fisiere arhiva
15.2 bzip2 bzip2(1)
este un program alternativ de compresie instalat pe Slackware Linux. Foloseste un algoritm de compresie diferit de gzip, ceea ce aduce niste avantaje si dezavantaje. Principalul avantaj al lui bzip2 este marimea fisierului comprimat. bzip2 va comprima, aproape tot timpul, mai bine decat gzip. In anumite cazuri aceasta duce la fisiere considerabil mai mici. Acesta poate fi un mare avantaj pentru cei ce au conexiuni mai lente prin modem. De asemenea, cand se download-eaza software de pe un server ftp public, este in general o dovada de netiquette-a buna (n.t. termen folosit cu sensul de buna cuvinta pe internet) download-area fisierelor .bz2 in locul fisierelor .gz deoarece in acest fel nu veti incetini serverul oamenilor generosi care vi l-au pus la dispozitie. Dezavantajul lui bzip2 este faptul ca consuma mai mult din resursele CPU decat gzip. Acest lucru inseamna ca arhivand un fisier cu bzip va dura de obicei mai mult si va folosi mai mult din CPU decat arhivandu-l cu gzip. Cand alegem ce program de comprimare sa folosim, trebuie sa contrabalansam viteza de comprimare cu marimea fisierului comprimat si sa determinam care dintre astea doua este mai important. Folosirea lui bzip2 este aproape la fel ca la gzip, deci nu vom pierde timpul discutand desprea asta. La fel ca gunzip, bunzip2 este identic cu bzip2 -d. Principala diferenta in practica este ca bzip2foloseste extensia .bz2. % bzip2 filename % bunzip2 filename.bz2 % bzip2 -9 filename
15.3 tar tar(1)este arhivatorul de casete GNU. Acesta ia mai multe fisiere sau directoare si creeaza un fisier mare. Aceasta iti permite sa comprimi un director intreg, ceea ce este imposibil folosind doar gzip sau bzip2. tar are multe optiuni in linie de comanda, acestea sunt explicate in pagina sa man. Aceasta sectiune va acoperi doar cele mai utilizate optiuni ale lui tar.
187
Slackware Linux Essentials tar este cel mai des folosit pentru a decomprima si dezarhiva un pachet pe care l-ai download-at de pe o pagina web sau de pe un ftp. Majoritatea fisierelor vor avea externsia .tar.gz. Acesta este numit de obicei un “tarball”. Inseamna ca mai multe fisiere au fost arhivate folosind tar si apoi comprimate folosind gzip. De asemenea il poti gasi scris si ca un fisier .tar.Z. Inseamna acelasi lucru, dar de obicei se intalneste pe sisteme Unix mai vechi. De asemenea ai putea sa gaseste un fisier .tar.bz2 undeva. Sursele kernel-ului sunt distribuite in acest fel pentru ca download-ul sa fie mai mic. Dupa cum banuiesti, acesta reprezinta mai multe fisiere arhivate cu tar si apoi bzip-uit. Poti ajunge la toate fisierele din aceasta arhiva folosind tar si cateva argumente in linie de comanda. Pentru dezarhivarea unui tarball se foloseste optiunea -z ceea ce inseamna ca fisierul va fi intai decomprimat cu gunzip. Cea mai des intalnita cale de a decomprima un tarball este aceasta: % tar -xvzf filename.tar.gz
Cam multe optiuni acolo. Deci ce inseamna ele de fapt? Optiunea -x inseamna extrage. Asta este important pentru ca ii spune lui tar exact ce trebuie facut cu acel fisier. In acest caz, il va imparti inapoi in toate fisierele din care a fost facut. Optiunea -v inseamna sa fie verbal. Aceasta va afisa toate fisierele care sunt dezarhivate. Se accepta omiterea aceste optiuni, desi este plictisitor fara. Puteti altfel sa folositi -vv pentru a fi mai verbal si a afisa mai multe informatii despre fiecare fisier dezarhivat. Optiunea -z ii spune lui tar sa foloseasca numefisier.tar.gz in gunzip mai intai. In fine, -f ii spune lui tarca urmatorul sir de fisier din linia de comanda va fi numele fisierului cu care va lucra. Exista si alte cai de executa aceeasi comanda. Pe sisteme mai vechi fara o copie buna de GNU tar, ai putea sa o vezi scrisa astfel: % gunzip filename.tar.gz | tar -xvf -
Aceasta comanda va decomprima fisierul si va trimite rezultatul in Din moment ce gzip isi va scrie rezultatul in iesirea standard daca i se va cere, aceasta comanda va scrie fisierul decomprimat in iesirea standard. Teava il trimite apoi la tar pentru dezarhivare. Caracterul “-” inseamna sa lucreze cu intrarea standard. Va dezarhiva sirul de data primit de la gzip si il va scrie pe disc. O alta cale de a scrie prima comanda este de a omite cratima din fata optiunilor, astfel: tar.
188
Fisiere arhiva % tar xvzf filename.tar.gz
Ai putea intalni si o arhiva bzip-uita. Versiunea de tar inclusa in Slackware Linux poate lucra si cu acestea la fel cum o face si cu cele gzipuite. In locul folosirii optiunii -z vei folosi -j: % tar -xvjf filename.tar.bz2
Trebuie sa retii ca tar va pune fisierele dezarhivate in directorul curent. Deci, daca ai o arhiva in /tmp pe care vrei sa o decomprimi in directorul tau home exista cateva optiuni. Prima, arhiva ar putea fi mutata in directorul tau home si apoi trecuta prin tar. A doua, ai putea da calea catre fisierul arhiva in linia de comanda. A treia, poti folosi optiunea -C pentru a "exploda" tarball-ul intr-un director dat. % cd $HOME % cp /tmp/filename.tar.gz . % tar -xvzf filename.tar.gz % cd $HOME % tar -xvzf /tmp/filename.tar.gz % cd / % tar -xvzf /tmp/filename.tar.gz -C $HOME
Toate comenzile de mai sus sunt echivalente. In fiecare caz, arhiva este despachetata in directorul tau home si fisierul original este lasat la locul lui. Cu ce te ajuta daca poti sa decomprimi aceste arhive dar nu poti sa le creezi? Ei bine, tar se ocupa si de asta. In majoritatea cazurilor este suficient sa inlaturi optiunea “-x” si sa o inlocuiesti cu optiunea “-c”. % tar -cvzf filename.tar.gz .
In aceasta linie, optiunea -c ii spune lui tar sa creeze o arhiva, in timp ce optiunea -z ruleaza gzip pe rezultat pentru a-l comprima. numefisier.tar.gz este fisierul pe care doresti sa-l creezi. Specificarea optiunii “-f” nu este intotdeauna necesara, dar de obicei este bine sa fie folosita. Fara ea, tar scrie in iesirea standard, ceea ce de obicei este dorit la intubarea iesirii lui tar cu un alt program astfel. % tar -cv filename.tar . | gpg --encrypt
Acea comanda creeaza o arhiva tar necomprimata a directorului curent, intubeaza tarball-ul cu gpg care cripteaza si comprima tarball-ul, in acest fel este practic imposibil sa fie citit de cineva care nu stie cheia secreta.
189
Slackware Linux Essentials
15.4 zip In sfarsit, exista doua utilitare care pot fi folosite pe fisierele zip. Acestea sunt foarte comune in lumea Windows, deci Linux are programe pentru a le putea folosi. Programul de compresie se numeste zip(1), si programul de decompresie se numeste unzip(1). % zip foo *
Aceasta va crea fisierul foo.zip, care va contine toate fisierele din directorul curent. zip va adauga automat extensia .zip deci nu este nevoie sa o includeti in numele fisierului. Puteti de asemenea sa parcurgeti recursiv directorul curent, zip-uind orice alte directoare din preajma: % zip -r foo *
Decompresia fisierelor este si ea usoara. % unzip foo.zip
Aceasta va extrage toate fisierele din foo.zip, inclusiv orice director din arhiva. Utilitarele zip au multe optiuni avansate pentru crearea unor arhive care se extrag singure, omiterea unor fisiere, controlarea marimii fisierului comprimat, afisarea a ceea ce se va intampla si multe altele. Vezi paginile man pentru zip si unzip pentru a afla cum sa folosesti aceste optiuni.
190
Capitolul 16
Vi 16.1 Pornirea programului vi 16.2 Moduri 16.3 Deschiderea fisierelor 16.4 Salvarea fisierelor 16.5 Iesirea din programul vi 16.6 Configurarea vi 16.7 Tastele vi vi(1) este programul standard de editare Unix, iar in timp ce stapanirea lui nu mai este atat de esentiala cum obisnuia sa fie, atingerea obiectivul este inca una plina de recompense. Exista cateva versiuni (sau clone) de vi disponibile, incluzand vi, elvis, vile, si vim. Una dintre acestea este disponibila in aproape orice versiune de Unix, la fel si pe Linux. Toate aceste versiuni includ aceleasi comenzi si seturi de instructiuni de baza, deci invatand o clona ar trebui sa faca usoara invatarea alteia. Cu varietatea de editoare text incluse de distributile Linux si variantele de Unix in zilele noastre, multi oameni nu mai folosesc vi. Cu toate acestea, ramane cel mai universal editor de texte peste Unix si derivate Unix. Stapanirea vi inseamna ca nu vei sta niciodata la o masina Unix fara sa fi confortabil cu cel putin un singur editor de texte. vi include un numar mare de utilitati puternice incluzand syntax highlighting, formatarea codului, un mecanism puternic de cautare si inlocuire, macro-uri, si multe altele. Aceste functii il fac in special atractiv pentru programatori, dezvoltatori de web, si cei in genul. Administratorii de sistem vor aprecia automatizarea si integrarea posibila cu shell-ul. In Slackware Linux, versiunea implicita de vi disponibila este elvis. Alte versiuni - incluzand vim si gvim - sunt disponibile daca ai instalat pachetele corespunzatoare. gvim este o versiune X Window al vim care include toolbar-uri, meniuri detasabile, si casute de dialog.
191
Slackware Linux Essentials
16.1 Pornirea programului vi vi poate fi pornit din linia de comanda in modalitati diferite. Cea mai simpla forma este doar: % vi
Figura 16-1. O sesiune vi..
Aceasta va porni vi cu un buffer gol. In acest moment, vei vedea un ecran majoritar negru. El se afla acum in "modul comanda" asteptandu-te pe tine sa faci ceva. Pentru o discutie legata de modurile diferite vi, vezi Sectiunea 16.2. Pentru a iesi din vi, tasteaza urmatoarele: :q
Presupunand ca nu au avut schimbari in fisier, acesta va cauza vi sa iasa. Daca exista modificari facute, te va anunta ca exista schimbari si iti spune cum sa nu le iei in considerare. Ignorarea schimbarilor inseamna deobicei adaugarea unui semn de exclamare dupa “q” asa: :q!
192
Vi Semnul de exclamare inseamna deobicei sa fortezi o actiune. O sa discutam despre asta si alte combinatii de chei mai tarziu. Poti sa pornesti vi deasemnea cu un fisier pre-existent. De exemplu, fisierul /etc/resolv.conf va fi deschis asa: % vi /etc/resolv.conf
In final, vi poate fi pornit pe o linie anume dintr-un fisier. Aceasta este in special folositoare programatorilor cand un mesaj de eroare include linia pe care a bombardat-o programul lor. De exemplu, poti porni vi pe linia 47 a /usr/src/linux/init/main.c asa: % vi +47 /usr/src/linux/init/main.c vi va afisa fisierul specificat si va pune cursorul la linia specificata. In cazul in care specifici o linie care este dupa sfarsitul fisierului, vi va plasa cursorul pe ultima linie. Acest fapt este in mod special util programatorilor, caci pot sa sara direct la locatia unde a avut loc eroarea, fara sa trebuiasca sa o caute.
16.2 Moduri vi opereaza in moduri variate, care sunt folosite pentru a obtine lucruri diferite. Cand pornesti prima data vi, esti pus in command mode. Din acest punct, poti sa trimiti diferite comenzi pentru a manipula textul, pentru a te misca prin fisier, sa salvezi, sa iesi, si sa schimbi moduri. Editarea textului se face in modul insert. Poti sa te misti rapid intre moduri printr-o varietate de combinatii de taste, care sunt explicate mai jos.
16.2.1 Modul de comanda Prima data esti pus in modul de comanda. Din acest mod, nu poti sa introduci direct text sau sa editezi ce este deja acolo. Oricum, poti manipula textul, cauta, iesi, salva, incarca fisiere noi, si mai multe. Aceasta este menita a fi doar o introducere in modul de comanda. Pentru o descriere a diferitelor comenzi, vezi Sectiunea 16.7. Probabil cea mai folosita comanda in modul de comanda este schimbarea in modul de inserare. Aceasta este indeplinita prin tastarea tastei i. Cursorul isi schimba forma, si -- INSERT -- este afisat in josul ecranului (vezi ca asta nu se intampla in toate clonele vi). De aici, toate
193
Slackware Linux Essentials tastarile sunt introduse in buffer-ul curent si sunt afisate pe ecran. Pentru a reveni la modul de comanda, apasa tasta ESCAPE. Modul de comanda este si locul unde te misti prin fisier. Pe unele sisteme, poti sa folosesti tastele sageti sa te misti. Pe altele, s-ar putea sa fi nevoit sa folosesti tastele traditionale “hjkl”. O simpla lista despre cum se folosesc aceste taste pentru a te misca este: h j k l
mergi in stanga un caracter mergi in jos un caracter mergi in sus un caracter mergi in dreapta un caracter
Apasa o tasta ca sa te misti. Cum vei vedea mai tarziu, aceste taste pot fi combinate cu un numar pentru a te misca mult mai eficient. Multe dintre comenzile care le vei folosi in modul de comanda incep cu doua puncte. De exemplu, iesirea este :q, precum a fost discutat mai devreme. Doua puncte indica o comanda, in timp ce “q” ii spune vi-ului sa iasa. Alte comenzi se reprezinta un numar optional, urmat de o litera. Aceste comenzi nu au doua puncte inaintea lor, si sunt in general folosite la manipularea textului. De exemplu, stergerea unei linii dintr-un fisier este realizata prin dd.Aceasta va sterge linia pe care se afla cursorul. Folosind comanda 4dd ii vei spune vi sa stearga linia pe care se afla cursorul si urmatoarele trei. In general, numarul spune lui vi de cate ori sa execute comanda. Poti combina un numar cu tastele de miscare pentru a te misca cu cateva caractere deodata. De exemplu,10k se va deplasa cu zece linii in sus pe ecran. Modul de comanda poate fi folosit deasemenea pentru a efectua cut si paste, inserare de text, si citirea altor fisiere in buffer-ul curent. Copierea textului este realizata de tasta y (y de la yank). Copierea liniei curente este efectuata tastand yy, si aceasta poate fi prefixata de un numar pentru a yank-a mai multe fisiere. Apoi, du-te la locatia pentru copie si apasa p. Textul este pus in linia inaintea celei curente. Taierea de text este facuta prin tastarea dd, si p poate fi folosit pentru a insera textul inapoi in fisier. Citind text din alt fisier este o procedura simpla. Tasteaza doar :r, urmat de un spatiu si numele fisierului ce contine textul de inserat. Continutul fisierului va fi introdus in buffer-ul curent pe linia de dupa cursor. Clone mai sofisticate ale vi-ului contin completarea numelui fisierului similar celui al shell-ului.
194
Vi Ultima utilizare acoperita va fi cautarea. Modul de comanda permite cautare simpla, la fel ca si comenzi complicate de cautare si inlocuire care fac uz de o versiune puternica de regular expressions. O discutie completa legata de regular expressions este peste scopul acestui capitol, asa ca sectiunea va acoperi numai metode simple de cautare. O cautare simpla este realizata prin apasarea tastei / urmata de textul cautat. vi va cauta in fata de la cursor pana la sfarsitul fisierului pentru o pereche, oprindu-se cand gaseste una. Vezi ca perechile inexacte vor face deasemenea vi sa se opreasca. De exemplu, o cautare dupa “the” va face vi sa se opreasca la “then”, “therefore”, si asa mai departe. Asta se intampla pentru ca toate acele cuvinte contin “the”. Dupa ce vi a gasit prima pereche, poti continua sa cauti urmatoarea pereche prin apasarea tastei / urmata de enter. Poti sa cauti si invers in fisier inlocuind slash-ul cu tasta ?. De exemplu, cautand inapoi in fisier pentru “the” ar fi realizat prin tastarea ?the.
16.2.2 Modul de inserare Inserarea si inlocuirea textului este realizata in modul de inserare. Cum s-a discutat anterior, poti intra in modul de inserare tastand i in modul de comanda. Apoi, tot textul pe care il tastezi este inserat in buffer-ul curent. Apasand tasta ESCAPE te duce inapoi in modul de comanda. Inlocuirea textului este realizata in cateva feluri. Din modul de comanda, apasand r te va lasa sa inlocuiesti singurul caracter de sub cursor. Doar tasteaza noul caracter si va inlocui pe cel de sub cursor. Vei fi apoi repus imediat in modul de comanda. Apasand R permite sa inlocuiesti cate caractere vrei. Pentru a iesi din acest mod de inlocuire, apasa ESCAPE si vei intra inapoi in modul de comanda. Mai exista inca o metoda de a jongla intre modul de inserare si cel de inlocuire. Apasand tasta INSERTdin modul de comanda te va duce in modul de inserare. Odata ce esti in modul de inserare, tasta INSERT foloseste ca un mod de a trece dintre modul de inserare si cel de inlocuire. Apasandu-l odata iti permite sa inlocuiesti. Apasand inca odata iti da voie inca odata sa inserezi text.
195
Slackware Linux Essentials
16.3 Deschiderea fisierelor vi iti permite sa deschizi fisiere din modul de comanda la fel ca specificarea descrieri unui fisier in linia de comanda. Pentru a deschide fisierul /etc/lilo.conf: :e /etc/lilo.conf
Daca ai efectuat schimbari asupra buffer-ului curent fara sa salvezi, vi se va plange. Poti sa deschizi in continuare fisierul fara sa salvezi buffer-ul curent tastand :e!, urmat de un spatiu si numele fisierului. In general, avertizarile vi pot fi suprimate prin comanda urmata de semnul exclamarii. Daca vrei sa redeschizi fisierul curent, poti sa o faci simplu tastand e!. Asta este in mod particular folositor daca ai sticat cumva fisierul curent si vrei sa-l redeschizi. Unele clone vi (de exemplu, vim) permit buffer-e multiple sa fie deschise concomitent. De exemplu, pentru a deschide fisierul 09-vi.sgml in directorul meu home in timp ce alt fisier este deschis, as tasta: :split ~/09-vi.sgml
Noul fisier este afisat in partea de jumatate sus a ecranului, si vechiul fisier este afisat in partea de jos a jumatatii ecranului. Sunt multe comenzi care manipuleaza ecranul impartit, si multe dintre aceste comenzi incep sa semene cu ceva din Emacs. Cel mai bun loc sa te uiti dupa aceste comenzi ar fi pagina man a clonei tale vi. Vezi ca multe clone nu suporta ideea de ecran impartit, deci s-ar putea sa nu poti sa-o folosesti.
16.4 Salvarea fisierelor Exista cateva metode de a salva in vi. Daca vrei sa salvezi buffer-ul curent in fisierul randomness, ar trebui sa tastezi: :w randomness
Odata ce ai salvat fisierul prima data, salvandu-l din nou este simpla tastare a :w. Orice schimbari vor fi scrise in fisier. Dupa ce ai salvat
196
Vi fisierul, esti trimis inapoi in modul de comanda. Daca vrei sa salvezi fisierul si sa iesi din vi (o operatiune foarte comuna), ar trebui sa tastezi :wq. Asta spune lui vi sa salveze fisierul curent si sa iasa inapoi in shell. Ocazional, vrei sa salvezi un fisier care este marcat ca read-only. Poti sa faci asta adaugand un semn de exclamare dupa comanda de scriere, asa: :w!
Oricum, vor exista situatii in care nu vei putea salva fisierul (de exemplu, incerci sa editezi un fisier care este detinut de alt utilizator). Cand se intampla asta, vi iti va spune ca nu poate salva fisierul. Daca chiar vrei sa editezi fisierul, va trebui sa revi si sa-l editezi ca root sau (preferabil) ca detinatorul fisierului respectiv.
16.5 Iesirea din programul vi Un mod de a iesi din vi este prin :wq, care va salva buffer-ul curent inainte de a iesi. Poti sa iesi si fara sa salvezi cu :q sau (in mod obisnuit) :q!. Cel din urma este folosit cand ai modificat fisierul dar nu vrei sa salvezi schimbarile efectuate in el. Ocazional, masina ta s-ar putea sa cada sau chiar vi. Oricum, si elvis cat si vim vor face tot posibilul sa minimizeze stricaciunile oricarui buffer deschis. Ambele editoare salveaza buffer-ele deschise intr-un fisier temporar ocazional. Acest fisier este denumit deobicei similar celui deschis, dar cu un punct la inceput. Asta face fisierul ascuns. Fisierul temporar este sters odata cu iesirea normala din editor. Asta inseamna caci copia temporara va mai exista daca ceva cade. Cand te duci inapoi sa editezi fisierul, vei fi intrebat cu ce actiune sa continuui. In majoritatea cazurilor, o mare parte a muncii nesalvate poate fi recuperata. elvis iti va trimite si un mail (din Graceland, destul de ciudat :) spunanduti ca o copie back-up exista.
16.6 Configurarea vi Clona ta de vi poate fi configurata in cateva feluri. Exista o varietate de comenzi ce pot fi introduse in timp ce esti in modul de comanda pentru a seta vi exact cum il vrei. Depinzand de editor,
197
Slackware Linux Essentials poti sa setezi anumite lucruri sa faca programarea mai usoara (ca syntax highlighting, auto-identare, si mai multe), poti sa setezi macro-uri care sa automatizeze task-urile, sa permiti substitutia de text, si multe alte lucruri. Aproape toate comenzile pot fi puse intr-un fisier de configurare in directorul tau home. elvis asteapta un fisier .exrc iar vim asteapta un fisier .vimrc. Majoritatea comenzilor de setare ce pot fi introduse in modul de comanda pot fi puse in fisierul de configurare. Asta include informatia legata de setari, substitutii text, macro-uri, etc. Discutand toate aceste optiuni si diferentele intre editoare este un subiect evoluat. Pentru mai multe informatii verifica pagina man sau website-ul editorului vi. Unele editoare (ca vim) au un help extins in cadrul lor care poate fi accesat prin comanda :help sau ceva similar. Poti sa te uiti si peste cartea O'Reilly Learning the vi Editor scrisa de Lamb si Robbins. Multe programe cunoscute in Linux vor incarca un fisier text in vi implicit. De exemplu, editarea crontab-urilor va porni in vi implicit. Daca nu-ti place vi si ai vrea alt editor sa fie pornit in locul lui, tot ce trebuie sa faci este sa setezi variabila de mediu VISUAL catre editorul preferat. Pentru informatii privind setarea variabilelor de mediu, vezi sectiunea numita Variabilele de mediu din capitolul 8. Daca vrei sa fi sigur ca editorul tau va fi implicit data viitoare cand te logezi, adauga setarea VISUAL fisierului tau .bash_profile sau .bashrc.
16.7 Tastele vi Aceasta sectiune reprezinta o referinta scurta catre multe comenzi comune vi. Unele dintre acestea au fost discutate mai devreme in acest capitol, iar multe altele vor fi noi. Tabelul 16-1. Miscarea Operatie Tasta stanga, jos, sus, dreapta h, j, k, l Sfarsitul liniei $ Inceputul liniei ^ Sfarsitul fisierului G Inceputul fisierului :1 Linia 47 :47
198
Vi Tabelul 16-2. Editarea Operatie Tasta Stergerea unei linii dd Stergerea a cinci linii 5dd Inlocuirea unui caracter r Stergerea unui caracter x Stergerea a zece caractere 10x Anularea ultimei actiuni u Uneste linia curenta si urmatoarea J Inlocuieste old cu new, global %s'old'new'g Tabelul 16-3. Cautarea Operatie Tasta Cauta “asdf” /asdf Cauta invers “asdf” ?asdf Repeta ultima cautare inainte / Repeta ultima cautare inapoi ? Repeta ultima cautare, aceiasi directie n Repeta ultima cautare, directie opusa N Tabelul 16-4. Salvarea si iesirea Operatie Tasta Iesire :q Iesire fara a salva :q! Scriere si iesire :wq Scriere fara a iesi :w Reincarca fisierul deschis curente :e! :w asdf Scrie buffer in fisierul asdf :e hejaz Deschide fisierulhejaz :r asdf Citeste fisierul asdf in buffer :r !ls Citeste output-ul ls in buffer
199
Capitolul 17
Emacs 17.1 Pornirea programului emacs 17.2 Buffer-e 17.3 Moduri 17.4 Editari de baza 17.5 Salvarea fisierelor In timp ce vi (si clonele sale) este fara indoiala cel mai popular editor pe sistemele Unix-like, Emacs este pe locul doi si destul de aproape. In locul folosirii unor "moduri" diferite, cum face vi sunt folosite combinatii cu tastele Control si Alt pentru introducerea comenzilor, intr-un mod asemanator cu folosirea combinatiilor de Control si Alt intr-un procesor de texte si in multe alte aplicatii. (Totusi trebuie stiut ca aceste comenzi nu corespund prea des; deci in timp ce aplicatiile moderne folosesc Ctrl-C/ X/ V pentru copy, cut, paste, Emacs foloseste alte taste si un sistem oarecum diferit pentru a face acelasi lucru.) De asemenea, spre deosebire de vi, care este un editor (excelent) dar nimic mai mult, Emacs este un program cu posibilitati aproape nesfarsite. Emacs este (in mare parte) scris in Lisp, un limbaj de programare foarte puternic care are proprietatea deosebita ca orice program scris in el devine automat un compilator de Lisp in sine. Asta inseamna ca utilizatorul poate extinde Emacs si poate chiar sa scrie programe noi “in Emacs”. In concluzie, Emacs nu mai este doar un editor. Exista multe pachete disponibile pentru Emacs (multe dintre ele vin cu sursele programului) care aduc tot felul de functii. Multe dintre acestea sunt legate de editarea textului, care este la urma urmei functia de baza a Emacs-ului, dar nu se opresc la atat. Exista de exemplu mai multe programe de calcul tabelar pentru Emacs, exista baze de date, jocuri, clienti de mail si news (cel mai bun fiind Gnus), etc. Exista doua versiuni principale de Emacs: GNU Emacs (versiunea care vine cu Slackware) si XEmacs. Ultima nu este o versiune de Emacs care
201
Slackware Linux Essentials ruleaza sub X. De fapt, si Emacs si XEmacs pot rula atat in consola cat si sub X. XEmacs a inceput ca un proiect de curatare al codului Emacs. In prezent, amandoua versiunile sunt in continua dezvoltare, iar cele doua echipe de dezvoltatori comunica des. In acest capitol nu conteaza daca folosesti Emacs sau XEmacs, diferentele dintre ele nu sunt relevante pentru un utilizator normal.
202
Emacs
17.1 Pornirea programului emacs Emacs poate fi pornit din shell prin tastarea comenzii emacs. Cand rulezi X, Emacs (in mod normal) va porni in propria sa fereastra X, de obicei cu o bara de meniu sus, unde se gasesc cele mai importante functii. La pornire, Emacs va afisa intai un mesaj de intampinare, apoi, dupa cateva secunde, te va lasa in *scratch* buffer. (Vezi Sectiunea 17.2.)
Poti porni Emacs si cu un fisier existent print tastarea: % emacs /etc/resolv.conf
Aceasta va face Emacs-ul sa inceapa cu fisierul respectiv deschis, fara a mai afisa mesajul de intampinare.
17.1.1 Taste Dupa cum s-a spus mai sus, Emacs foloseste combinatii de taste cu Control si Alt pentru comenzi. Conventia de scriere obisnuita este Clitera si M-litera. Deci C-x inseamna Control+x, si M-x inseamna Alt+x. (Litera M este folosita in locul literei A pentru ca initial tasta nu se numea Alt ci Meta. Tasta Meta n-a disparut de pe tastaturi, iar in Emacs tasta Alt i-a preluat functionalitatea.)
203
Slackware Linux Essentials Multe comenzi Emacs sunt secvente de taste si combinatii de taste. De exemplu, C-x C-c (Control-x urmat de Control-c ) opreste Emacs, Cx C-s salveaza fisierul curent. Tine minte ca C-x C-b nu este acelasi lucru cu C-x b. Prima inseamna Control-x urmat de Control-b, in timp ce ultima inseamna Control-x urmat doar de 'b'.
17.2 Buffer-e In Emacs, conceptul de “buffers” este esential. Fiecare fisier pe care il deschizi este incarcat in propriul sau buffer. Mai mult, Emacs are mai multe buffere speciale, care nu contin un fisier dar sunt folosite pentru alte lucruri. De exemplu, buffer-ul deschis de Emacs la pornire este asanumitul *scratch* buffer. In *scratch* buffer poti tasta text ca de obicei, dar textul scris in el nu este salvat cand Emacs este oprit. Mai exista un buffer special despre care trebuie sa stii, acesta este minibuffer-ul. Acesta are doar o linie si este intotdeauna pe ecran: este chiar ultima linie a ferestrei Emacs, sub bara de stare (status bar) a bufferului curent. Minibuffer-ul este locul in care Emacs arata mesajele pentru utilizator, de asemenea este locul in care comenzile care necesita date de intrare de la utilizator sunt executate. De exemplu, cand deschizi un fisier, Emacs va cere numele sau in minibuffer. Trecerea dintr-un buffer intr-altul se poate face folosind comanda Cx b. Aceasta iti va cere numele unui buffer (numele buffer-ului este de obicei numele fisierului editat in el), si ofera o alegere standard, care este in mod normal buffer-ul in care te aflai inainte de a crea sau a trece in buffer-ul curent. Apasarea tastei Enter va face trecerea in acel buffer standard. Daca vrei sa treci in alt buffer decat cel standard oferit de Emacs trebuie doar sa-i tastezi numele. Tine cont ca poti folosi Tab-completion (autocompletarea folosind tasta Tab): tasteaza primele litere ale numelui buffer-ului si apasa Tab; Emacs va completa numele buffer-ului. Tab completion functioneaza peste tot unde are sens in Emacs. Poti vedea o lista a buffer-elor deschise tastand C-x C-b. Aceasta comanda de obicei va imparti ecranul in doua, afisand buffer-ul in care lucrai in jumatatea de sus si un nou buffer numit *Buffer List* in jumatatea de jos. Acest buffer contine o lista a tuturor buffer-elor, marimilor si modurilor, a fisierelor, daca exista, vizitate (asa se numeste in Emacs) de acele buffere. Poti scapa de ecranul dublu tastand C-x 1.
204
Emacs Sub X, lista buffer-elor este disponibila si in meniul Buffer din bara de meniu.
17.3 Moduri Fiecare buffer din Emacs are asociat un mod. Acest mod este diferit de ideea de mod din vi: un mod iti spune in ce fel de buffer te afli. De exemplu, exista modul text (text-mode) pentru fisiere text normale, dar exista si c-mode pentru editarea programelor C, sh-mode pentru editarea scripturilor shell, latex-mode pentru editarea fisierelor LaTeX, mail-mode pentru editarea mesajelor de email si news, etc. Un mod iti ofera setari si functionalitati utile tipului de fisier pe care il editezi. Este posibil chiar ca un mod sa redefineasca taste si comenzi din taste. De exemplu, in modul text, tasta Tab doar sare la urmatorul tab stop, dar in multe moduri pentru limbaje de programare tasta Tab indenteaza linia curenta conforma adancimii blocului in care se afla acea linie. Modurile mentionate mai sus se numesc moduri principale (major modes). Fiecare buffer are fix un mod principal. Pe langa acesta, un buffer poate avea unul sau mai multe moduri secundare (minor modes). Un mod secundar ofera functii in plus care pot fi utile pentru anumite necesitati de editare. De exemplu, daca apesi tasta INSERT poti porni modul de suprascriere (overwrite-mode), care face ceea ce te-ai astepta sa faca. Exista de asemenea un modul auto-fill, care este util in combinatie cu modul text sau module latex: face ca fiecare linie pe care o scrii sa fie automat impachetata (wrapped) cand linia are un anumit numar de caractere. Fara modul auto-fill trebuie sa tastezi M-q pentru a umple un paragraf. (Pe care il poti folosi si pentru a reformata un paragraf dupa ce ai editat o parte din textul sau si nu mai este completat frumos.)
17.3.1 Deschiderea fisierelor Pentru a deschide un fisier in Emacs tasteaza: C-x C-f
Emacs iti va cere numele fisierului, completand un path standard pentru tine (de obicei ~/ ). Dupa ce tastezi numele fisierului (poti folosi Tab completion) si apesi ENTER , Emacs va deschide fisierul intr-un buffer nou si va afisa acel buffer pe ecran.
205
Slackware Linux Essentials Emacs va crea automat un buffer nou, nu va incarca fisierul in bufferul curent. C-x C-f apoi tastand un nume de fisier, la fel cum ai deschide un fisier existent. Emacs va observa ca fisierul tastat nu exista si va crea un nou buffer si va anunta “(New file)” in minibuffer. Cand tastezi C-x C-f si apoi scrii numele unui director in locul numelui unui fisier Emacs va crea un nou buffer in care vei gasi o lista a tuturor fisierelor din acel director. Poti muta cursorul pe fisierul pe care il cauti si sa tastezi, iar Emacs il va deschide. (De fapt se pot face mai multe lucruri asa, cum ar fi, stergerea, redenumirea si mutarea fisierelor, etc. Emacs se afla acum in dired-mode, care este in esenta un file manager simplu). Cand ai tastat C-x C-f dar te-ai razgandit poti tasta C-g pentru a anula comanda. C-g functioneaza aproape peste tot unde vrei sa anulezi o actiune sau comanda pe care ai inceput-o, dar pe care nu vrei sa o termini.
17.4 Editare de baza Cand ai deschis un fisier vei putea desigur sa te misti prin el cu ajutorul cursorului. Tastele cursor si PgUp, PgDn fac ceea ce te astepti sa faca. Home si End sar la inceputul si sfarsitul unei linii. (In versiuni mai vechi sare chiar la inceputul si sfarsitul bufferului.) Totusi, exista si combinatii cu Control si Meta (Alt) care muta cursorul. Pentru ca nu trebuie sa-ti misti mainile pe alta bucata din tastatura pentru aceste sunt mult mai rapide dupa ce te-ai obisnuit cu ele. Cele mai importante astfel de comenzi sunt insirate in Tabelul 17-1. Commanda C-b C-f C-n C-p C-a C-e M-b
206
Table 17-1. Comenzi de Baza Editare Emacs Resultat un caracter inapoi un caracter inainte o linie in jos o linie in sus inceput de linie sfarsit de linie un cuvant inapoi
Emacs Commanda M-f M-} M-{ M-a M-e C-d M-d C-v M-v M-< M-> C-_ C-k C-s C-r
Resultat un cuvant inainte un paragraf inainte un paragraf inapoi un enunt inapoi un enunt inainte sterge caracterul de sub cursor sterge pana la sfarsitul cuvantului curent coboara un ecran (i.e., PgDn) urca un ecran (i.e., PgUp)) inceputul buffer-ului sfarsitul buffer-ului undo (poate fi repetat); tine cont ca va trebui sa tastezi Shift+Control+cratima sterge pana la sfarsitul liniei cautare inainte cautare inapoi
Tine cont ca multe comenzi Meta seamana cu comenzi Control numai ca lucreaza pe unitati mai mari: in timp ce C-f merge inainte un caracter, M-f merge inainte un intreg cuvant, etc. De asemenea tine cont ca M-< si M-> cer sa apesi Shift+Alt+virgula si respectiv Shift+Alt+punct in moment ce < si > sunt Shift+virgula si Shift+punct. (Mai putin in cazul in care ai la tastatura un layout diferit de standard US.) C-k sterge (kills, cum se mai spune) tot textul dupa cursor pana la sfarsitul de linie, dar nu sterge linia in sine (i.e., nu sterge caracterul newline de la sfarsit). Sterge linia doar daca nu era nici un text dupa cursor. Cu alte cuvinte, pentru a sterge o linie complet, trebuie sa pui cursorul la inceputul liniei si sa apesi C-k de doua ori: o data pentru a sterge textul de pe linie, inca o data pentru a sterge linia.
207
Slackware Linux Essentials
17.5 Salvarea fisierelor Pentru a salva un fisier, tastezi C-x C-s
Emacs nu-ti va cere un nume de fisier, buffer-ul va fi salvat in fisierul din care a fost incarcat. Daca vrei sa-ti salvezi textul in alt fisier, scrie C-x C-w
Cand salvezi fisierul pentru prima data in aceasta sesiune Emacs va salva in mod normal versiunea veche a fisierului tau intr-o copie de siguranta (backup), care are acelasi nume dar cu o tilda la sfarsit: deci daca editezi un fisier “cars.txt”, Emacs va crea un backup “cars.txt~”. Acest fisier backup este o copie a fisierului pe care l-ai deschis. Cat timp lucrezi, Emacs va crea in mod regulat o copie auto-save a ceea ce lucrezi intr-un fisier numit cu simboluri diez: #cars.txt#. Acest backup este sters cand salvezi fisierul cu C-x C-s. Cand ai terminat cu editarea fisierului poti sa inchizi (kill) bufferul care il contine tastand C-x k
Emacs te va intreba ce buffer vrei sa inchizi, cu buffer-ul curent ca raspus stadard, ce poate fi selectat tastand ENTER. Daca nu ti-ai salvat fisierul inca, Emacs te va intreba daca vrei sa inchizi buffer-ul.
17.5.1 Iesirea din Emacs Cand ai terminat cu Emacs, poti tasta C-x C-c
Aceasta inchide Emacs. Daca ai un fisier pe care nu l-ai salvat, Emacs iti va spune si te va intreba daca vrei sa-l salvezi pe fiecare in parte. Daca raspunzi nu la oricare din ele, Emacs iti va cere pentru ultima oara confirmarea apoi se va inchide.
208
Administrarea pachetelor Slackware
Capitolul 18
Administrarea pachetelor Slackware 18.1 O privire de ansamblu asupra formatului pachetelor 18.2 Utilitare de pachete 18.3 Crearea pachetelor 18.4 Crearea Etichetelor si a Fisierelor Eticheta (pentru setup) Un pachet software reprezinta o colectie de programe asociate pregatite pentru a fi instalate de tine. Cand iei o arhiva de cod sursa, trebuie sa configurezi, compilezi si sa o instalezi manual. Cu un pachet software, acestea au fost facute deja pentru tine. Tot ceea ce trebuie sa faci este sa instalezi pachetul. O alta caracteristica folositoare a utilizarii pachetelor software este ca e foarte usor sa le inlaturi si sa le imbunatatesti, daca asa doresti. Slackware vine cu programe pentru toate nevoile tale de administrare a pachetelor. Poti instala, inlatura, imbunatati, crea si examina pachetele foarte usor. Exista un mit printre utilizatori, inca de cand Red Hat a prezentat Red Hat Package Manager (RPM), cum ca Slackware nu ar avea un manager de pachete. Este cat se poate de neadevarat. Slackware a avut intotdeauna un manager de pachete, chiar inainte ca Red Hat sa existe. Chiar daca nu are atat de multe optiuni si nu este atat de titrat ca si rpm (sau deb), pkgtool si programele conexe sunt tot atat de bune pentru instalarea pachetelor ca si rpm. Adevarul despre pkgtool este nu ca ar fi inexistent, ci ca nu verifica dependintele pachetelor instalate. Se pare ca multa lume din comunitatea Linux crede ca un manager de pachete trebuie prin definitie sa includa si o rutina de verificare a dependintelor. Ei bine, nu este cazul, sau cel putin in Slackware nu se pune problema. Asta nu inseamna ca pachtele Slackware nu au dependinte, doar ca managerul de pachete pur si simplu nu le verifica. Managementul dependintelor este o problema lasata in grija administratorului de sistem, si noua asa ne place.
209
Slackware Linux Essentials
18.1 Formatul pachetelor Slackware Inainte de a invata utilitarele, ar trebui sa te familiarizezi cu formatul unui pachet Slackware. Un pachet este un simplu fisier arhiva tar care a fost comprimat cu gzip.Un pachet este construit in asa fel incat sa poata fi extras in sistemul de fisiere radacina. Acesta e un program inventat si pachetul lui exemplu: ./ usr/ usr/bin/ usr/bin/makehejaz usr/doc/ usr/doc/makehejaz-1.0/ usr/doc/makehejaz-1.0/COPYING usr/doc/makehejaz-1.0/README usr/man/ usr/man/man1 usr/man/man1/makehejaz.1.gz install/ install/doinst.sh
Sistemul de pachete va extrage acest fisier in directorul radacina pentru a il instala. Va fi creata o intrare in baza de date a pachetelor care contine continutul acestui pachet ca sa poata fi imbunatatit sau mai tarziu inlaturat. Observa subdirectorul install/. Acesta este un director special care contine un script de postinstalare numit doinst.sh. Daca sistemul de pachete gaseste acest fisier, il va executa dupa instalarea pachetului. Alte scripturi pot fi incarcate in pachet, dar acelea sunt discutate detaliat in sectiunea intitulata makepkg.
18.2 Utilitare de pachete Sunt patru utilitare principale pentru administrarea pachetelor. Ele executa instalarea, inlaturarea si imbunatatirea pachetelor. 18.2.1 pkgtool pkgtool(8) este un program bazat pe meniuri care permite instalarea si inlaturarea pachetelor. Meniul principal arata asa:
210
Administrarea pachetelor Slackware Figura 18-1. Meniul principal Pkgtool.
Instalarea este oferita din directorul curent, alt director, sau de pe dischete. Alege metoda de instalare pe care o vrei si pkgtool va cauta in locatia respectiva pachete valabile pe care sa le instaleze. Poti de asemenea sa vezi si o lista de pachete instalate, care ar arata asa: Figura 18-2. Mod de vizualizare a pachetelor
211
Slackware Linux Essentials Daca vrei sa inlaturi pachete, alege optiunea remove si iti va fi oferita o lista alfabetica a tuturor pachetelelor instalate. Marcheaza-le pe cele pe care vrei sa le inlaturi si alege OK. pkgtool le va inlatura. Unii utilizatori prefera acest utilitar in favoarea celor de la linia de comanda, desi ar trebui notat notat ca utilitarele liniei de comanda ofera mult mai multe optiuni. De asemenea capacitatea de a imbunatati pachetele este oferita doar prin intermediul utilitarelor de la linia de comanda.
18.2.2 installpkg installpkg(8) manipuleaza instalarea noilor pachete pe sistem. Sintaxa este urmatoarea: # installpkg option package_name
Sunt oferite trei optiuni pentru installpkg. Doar o singura optiune se poate folosi la un moment dat. Tabelul 18-1. Optiuni installpkg Optiuni Efecte -m Executa o operatiune makepkg pe directorul actual. Arata ce s-ar intampla daca ai instala pachetul specificat. Acesta e -warn util pentru sisteme de productie ca sa poti vedea exact ce s-ar intampla inainte de a instala ceva. Instaleaza toate pachetele din directorul actual in jos in mod -r recursiv. Poate folosi si potrivirea caracterelor, care ar fi utilizate ca masca de cautare cand instalezi recursiv. Daca dai variabila de mediu ROOT inainte de installpkg, acea cale va fi folosita pentru directorul radacina. Acesta este folositor pentru setarea noilor unitati pentru directorul tau radacina. Tipic, acestea vor fi montate in /mnt sau altceva decat /. Inregistrarea in baza de date a pachetelor instalate este stocata in /var/log/packages. “Inregistrarea” este de fapt doar un fisier text obisnuit, unul pentru fiecare pachet. Daca pachetul are un script de postinstalare, este scris in /var/log/scripts/. Poti specifica mai multe pachete sau sa folosesti caractere de potrivire pentru numele pachetului. Nu uita ca installpkg nu iti va spune daca scrii peste un pachet instalat. Pur si simplu va instala peste cel vechi. Daca vrei sa te asiguri ca fisierele vechi din pachetul anterior sunt inlaturate in siguranta, foloseste upgradepkg.
212
Administrarea pachetelor Slackware
18.2.3 removepkg removepkg(8) se ocupa de inlaturarea pachetelor instalate pe sistem. Sintaxa este urmatoarea: # removepkg option package_name
Exista patru optiuni pentru removepkg. Doar o singura optiune poate fi folosita la un moment dat. Tabelul 18-2. Optiuni removepkg Optiuni Efect Pachetul este copiat in directorul de pachete conservate. Acesta -copy creeaza un arbore al pachetului original fara a il inlatura. Salveaza fisierele temporare create in timpul inlaturarii. Este -keep folositor doar pentru scopuri de depanare. Pachetul este inlaturat, dar copiat in directorul de pachete preserve conservate in acelasi timp. -warn Arata ce s-ar intampla daca ai inlatura pachetul. Daca specifici variabila de mediu ROOT inainte de removepkg, acea cale va fi folosita pentru directorul radacina. Acesta este util pentru setarea noilor unitati pentru directorul tau radacina. Tipic, ele vor fi montate in to /mnt sau altceva decat /. removepkg se uita la celelalte pachete instalate si inlatura doar fisierele unice pachetului pe care il specifici. Va scana de asemenea si scriptul de postinstalare si va inlatura orice link-uri simbolice care au fost create de catre el. In timpul procesului de inlaturare, este afisat un raport de situatie. Dupa inlaturare, inregistrarea din baza de date a pachetelor este mutata in /var/log/removed_packages si scriptul de postinstalare este mutat in /var/log/removed_scripts. La fel ca si cu installpkg,
poti specifica diferite pachete sau folosi caractere de potrivire pentru numele pachetului.
18.2.4 upgradepkg upgradepkg(8)
va imbunatati un pachet Slackware instalat. Sintaxa
este urmatoarea: # upgradepkg package_name
213
Slackware Linux Essentials sau # upgradepkg old_package_name%new_package_name upgradepkg functioneaza instaland prima data pachetul nou si pe urma inlaturandu-l pe cel vechi asa ca fisierele vechi nu mai sunt prin preajma pe sistem. Daca numele pachetului imbunatatit s-a schimbat, foloseste sintaxa cu semnul procent pentru a specifica vechiul pachet (cel care este instalat) si noul pachet (cel care va imbunatati). Daca specifici variabila de mediu ROOT inainte de upgradepkg, acea cale va fi folosita pentru directorul radacina. Acesta este util pentru setarea noilor unitati pe directorul tau radacina. Tipic, acestea vor fi montate in /mnt sau altceva decat /. upgradepkg nu este perfect. Ar trebui sa iti salvezi fisierele de configurare. Daca se scrie peste ele, vei avea o copie dupa originale pentru orice munca necesara de reparatii. Ca si cu installpkg si removepkg, poti specifica mai multe pachete sau folosi caractere de potrivire pentru numele pachetului.
18.2.5 rpm2tgz/rpm2targz Administratorul de pachete pe Red Hat este un sistem popular de impachetare disponibil azi. Multi distribuitori de software isi ofera produsele in format RPM. Din moment ce nu acesta este formatul nostru nativ, nu le recomandam oamenilor sa se bazeze pe ele. Desi, cateva lucruri sunt disponibile doar ca si RPM (chiar si sursa). Noi furnizam un program care va transforma pachetele RPM in formatul nostru nativ .tgz. Acesta iti va permite sa extragi pachetul (poate cu explodepkg) intr-un director temporar si sa ii examinezi continutul. Programul rpm2tgz va crea un pachet Slackware cu o extensie .tgz in timp ce rpm2targz creaza o arhiva cu o extensie .tar.gz.
18.3 Crearea pachetelor Crearea pachetelor Slackware poate fi si usoara si dificila. Nu este nici o metoda specifica pentru construirea unui pachet. Singura cerinta este ca pachetul sa fie un fisier tar comprimat cu gzip si daca exista un script de postinstalare, acesta trebuie sa fie /install/doinst.sh.
214
Administrarea pachetelor Slackware Daca esti interesat in crearea pachetelor pentru sistemul tau sau pentru o retea pe care o administrezi, ar trebui sa arunci o privire la diferitele scripturi de constructie in arborele sursa al Slackware. Sunt mai multe metode pe care le folosim pentru crearea pachetelor.
18.3.1 explodepkg explodepkg(8) va face acelasi lucru ca si installpkg va extrage pachetul, dar de fapt nu il instaleaza si nu il inregistreaza in baza de date a pachetelor. Il extrage doar in directorul actual. Daca te uiti la arborele sursa al Slackware, vei vedea cum folosim aceasta comanda pentru pachetele “schelet”. Aceste pagini contin un schelet a ceea ce va fi pachetul final. Contin toate numele fisierelor necesare (lungime zero), permisiuni si apartenente. Scriptul de construire va da cat continutului pachetului din directorul sursa in directorul constructie al pachetului.
18.3.2 makepkg makepkg(8)
va impacheta directorul curent intr-un pachet Slackware valabil. Va cauta arborele pentru o legatura simbolica si va adauga un bloc de creatie scriptului de postinstalare pentru a le crea in timpul instalarii pachetului. Avertizeaza de asemenea si despre fisierele cu lungime zero din arborele pachetului. Aceasta comanda este rulata in mod tipic dupa ce ti-ai creat arborele pachetului.
18.3.3 Scriptul SlackBuild Pachetele Slackware sunt create in diverse forme, dupa necesitati. Nu toate programele de pachete sunt scrise de programatorii lor, pentru a se compila asa cum este de dorit. De multe ori se intampla ca unele optiuni sa nu fie disponibile in pachetele folosite de Slackware. Uneori s-ar putea sa ai nevoie de aceste optiuni; atunci va trebui sa iti compilezi propriul pachet. Din fericire, pentru multe pachete Slackware, poti gasi scripturi Slackbuild in sursa pachetului. Ce este deci un script SlackBuild? Scripturile SlackBuild sunt scripturi care pot fi executate in shell, de catre root pentru a configura, compila si crea pachete Slackware. Poti modifica dupa bunul plac aceste scripturi din directorul cu surse si le poti rula pentru a-ti crea propriile versiuni ale pachetelor Slackware originale.
215
Slackware Linux Essentials
18.4 Crearea Etichetelor si a Fisierelor Eticheta (pentru setup) Programul setup Slackware manipuleaza instalarea pachetelor software pe sistemul tau. Sunt fisiere care ii spun programului setup ce pachete trebuie instalate, care sunt optionale si care sunt alese ca default de programul setup. Un fisier eticheta este primul director al seriilor software si este numit tagfile. El afiseaza pachetele in acel disc set particular si starea lor. Starea poate fi: Table 18-3. Optiuni de Stare a Fisierelor Eticheta Optiune Semnificatie Este nevoie de pachet pentru functionarea corespunzatoare a ADD sistemului SKP Pachetul va fi omis in mod automat REC Nu este nevoie de pachet dar este recomandat OPT Pachetul este optional Formatul este simplu: package_name: status
Un pachet pe linie. Fisierele eticheta originale pentru fiecare serie software sunt stocate ca tagfile.org. Asa ca daca il strici pe al tau, il poti restaura pe cel original. Multi administratori prefera sa isi scrie propriile fisiere eticheta sa inceapa programul de instalare si sa aleaga “full”. Programul setup va citi fisierele eticheta si va executa instalarea in conformitate cu continutul lor. Daca folosesti REC sau OPT, ii va fi prezentata o casuta de dialog utilizatorului intrebandu-l daca vrea sau nu vrea un pachet paticular. Prin urmare, este recomandat sa te tii de ADD si SKP cand scrii fisiere eticheta pentru instalari automate. Asigura-te doar ca fisierele tale eticheta sunt scrise in aceeasi locatie cu originalele. Sau poti specifica o cale proprie pentru fisierul eticheta daca ai fisiere eticheta proprii.
216
Capitolul 19
ZipSlack 19.1 Ce este ZipSlack? 19.2 Obtinere Zipslack 19.3 Initializare ZipSlack
217
Slackware Linux Essentials
19.1 Ce este ZipSlack? “ZipSlack” este o versiune speciala de Slackware Linux. Este o copie preinstalata de Slackware pregatita pentru a rula dintr-o partitie DOS sau Windows. Este o instalare de baza, nu vei obtine chiar tot din ceea ce vine cu Slackware. ZipSlack isi ia numele din modul in care este distribuit: un imens fisier ZIP. Utilizatorii de DOS si Windows sunt probabil familiarizati cu aceste fisiere. Acestea sunt arhive comprimate. Arhiva ZipSlack contine tot ceea ce ai putea avea nevoie pentru a putea porni si rula un sistem Slackware. Este important sa intelegi ca ZipSlack este semnificativ diferit fata de o instalare normala. Chiar daca functioneaza la fel si contine aceleasi programe, functiile si persoanele carora i se adreseaza, sunt diferite. Cateva avantaje si dezavantaje ale ZipSlack sunt discutate mai jos.. Si inca ceva: poti intotdeauna cerceta documentatia inclusa in directorul ZipSlack. Acesta contine informatii de ultima ora in ceea ce priveste instalarea, initializarea si utilizarea la modul general a acestui produs.
19.1.1 Avantaje • •
Nu este necesara repartitionarea hard disk-ului tau. Poti sa inveti Slackware Linux fara a iti complica viata cu procesul de instalare.
19.1.2 Dezavantaje • •
Foloseste sistemul de fisiere DOS, mult mai lent decat sistemul de fisiere nativ Linux. Nu va functiona sub Windows NT.
19.2 Obtinerea ZipSlack Obtinerea lui ZipSlack este simpla. Daca ai cumparat setul oficial de CD-uri Slackware Linux, atunci ai deja ZipSlack. Nu este nevoie decat sa gasesti CD-ul care contine directorul zipslack si sa-l introduci in unitatea
218
ZipSlack ta CD-ROM. De obicei, este al treilea sau al patrulea disc, si intotdeauna poti avea incredere in etichetele CD-urilor. Daca doresti sa descarci ZipSlack, va trebui ca mai intai sa vizitezi sectiunea “Get Slack” pentru ultimele informatii legate de download: http://www.slackware.com/getslack/ ZipSlack face parte din fiecare versiune Slackware. Gasesti versiunea dorita, si apoi te duci in directorul respectiv de pe serverul FTP. Directorul ultimei versiuni poate fi gasit la adresa: ftp://ftp.slackware.com/pub/slackware/slackware/ Vei gasi ZipSlack in directorul /zipslack. ZipSlack este disponibil ca un singur mare fisier .ZIP sau in imagini de 1.44 MB (capacitatea unui floppy disk). Imaginile se afla in directorul /zipslack/split. Numai fisierul .ZIP este suficient. Va trebui, de asemenea, sa descarci fisierele ce compun documentatia, precum si orice imagini de boot care apar in acel director.
19.2.1 Instalarea Dupa ce ai descarcat componentele necesare, va fi nevoie sa dezarhivezi fisierul .ZIP. Asigura-te ca folosesti un dezarhivator pe 32 biti. Marimea si lungimea numelor de fisiere din arhive sunt prea mult pentru un dezarhivator pe 16 biti. Exemple de dezarhivatoare pe 32 biti sunt WinZip si PKZIP pentru Windows. ZipSlack este astfel realizat incat sa se extraga direct in radacina partitiei/hard disk-ului (cum ar fi C: sau D:). Un director \LINUX va fi creat, director ce va contine intreaga instalare Slackware. De asemenea, vei gasi si fisierele necesare initializarii sistemului tot in acelasi director. Dupa ce vei extrage fisierele, va trebui sa ai un director \LINUX pe partitia/hard disk-ul ales (presupunem de acum inainte ca acesta este C:.
19.3 Initializare ZipSlack Exista cateva moduri de a initializa ZipSlack. Cel mai simplu este sa folosesti LINUX.BAT pentru a initializa din DOS (sau din DOS-mode sub Windows 9x). Acest fisier va trebui editat pentru a se potrivi cu sistemul tau inainte de a-l folosi. Incepe prin a deschide fisierul C:\LINUX\LINUX.BAT in editorul tau de text favorit. La inceputul acestui fisier, vei observa un numar de linii de
219
Slackware Linux Essentials comentariu, care va explica de ce este nevoie sa editezi acest fisier (si de asemenea ce ai de facut daca doresti sa initializezi de pe un drive ZIP extern). Nu te speria daca nu intelegi setarile gen root=. Sunt cateva example, deci alege unul dintre ele, si inceara sa initializezi sistemul. Daca nu functioneaza, poti edita fisierul din nou, transformand in comentarii liniile pe care le-ai decomantat. Dupa ce vei activa liniile stergand caracterul “rem” de la inceputul liniei, salveaza fisierul si iesi din editor, apoi reporneste-ti calculatorul in modul DOS. NU porni o fereastra DOS in Windows 9x, pentru ca NU va functiona!. Scrie C:\LINUX\LINUX.BAT pentru a initializa sistemul. Daca totul merge corect, vei ajunge in final in fata prompt-ului de login. Te poti loga ca root, fara nici o parola. Vei dori (bineinteles) sa iti setezi propria parola de root, si de asemenea un cont de utilizator pentru tine. Din acest punct poti folosi indicatiile disponibile in alte sectiuni ale acestei carti pentru a cunoaste modul general de utilizare a sistemului. Daca fisierul LINUX.BAT nu iti initializeaza sistemul, citeste fisierul C:\LINUX\README.1ST pentru a cunoaste alte moduri in care poti initializa sistemul.
220
Glosar Account Toata informatia despre un utilizator, incluzand numele utilizator, parola, informatia finger, UID si GID si directorul camin. Crearea unui cont inseamna adaugarea si definirea unui utilizator. Background Orice proces care ruleaza fara acceptarea sau controlarea intrarii unui terminal se spune ca ruleaza in background. Boot disk O discheta care contine un sistem de operare (in cazul nostru, kernel-ul Linux) de pe care poate fi pornit un calculator. Compile Convertirea codului sursa in cod care poate fi citit de catre calculator, cod “binar”. Daemon Un program destinat sa ruleze in background si fara interventia utilizatorului, sa execute o sarcina specifica (de obicei furnizeaza un serviciu). Darkstar Hostname-ul default in Slackware; calculatorul tau va fi numit darkstar daca nu specifici alt nume. Unul din calculatoarele de dezvoltare ale lui Patrick Volkerding's , numit dupa “Dark Star”, o melodie de Grateful Dead. Desktop Environment O interfata grafica (GUI) care ruleaza pe Sistemul de Ferestre X si furnizeaza caracteristici cum ar fi aplicatii integrate, un look-andfeel coeziv intre programe si componente, posibilitati de administrare de fisiere si ferestre, etc. Un pas mai departe de simplul administrator de ferestre. Device driver O bucata de cod in kernel care controleaza in mod direct componentele. Device node Un tip special de fisier in sistemul de fisiere /dev care reprezinta o componenta hardware pentru sistemul de operare.
221
Slackware Linux Essentials DNS Domain Name Service. Un sistem in care calculatoarelor aflate intr-o retea li se dau nume care se traduc in adrese numerice. Domain name Numele DNS al unui calculator, fara hostname-ul acestuia. Dot file In Linux, fisierele care sunt ascunse au nume de fisiere care incep cu un punct ('.'). Dotted quad Formatul adreselor IP, numite asa pentru ca sunt alcatuie din patru numere (raza 0-255 decimala) separate de puncte. Dynamic loader Cand programele sunt compilate sub Linux, acestea folosesc de obicei bucati de cod (functii) din librarii externe. Cand aceste programe sunt rulate, acele librarii trebuie gasite si functiile cerute sunt incarcate in memorie. Aceasta este slujba unui dynamic loader. Environment variable O variabila setata in shell-ul utilizatorului la care poate face referire acel utilizator sau programe rulate de catre acel utilizator inauntrul acelui shell. Variabilele de mediu sunt in general folosite pentru a stoca preferinte si parametrii. Epoch O perioada in istorie; in Unix, “Epoch-ul” incepe la 00:00:00 UTC Ianuarie 1, 1970. Acesta este considerat “inceputul timpului” de catre Unix si sisteme de operare Unix-like si restul timpului este calculat relativ cu aceasta data. Filesystem O reprezentare a datelor stocate in care “fisierele” de date sunt tinute organizat in “directoare”. Sistemul de fisiere este forma aproape universala a reprezentarii datelor stocate pe discuri(fixe si amovibile). Foreground Un program care accepta sau controleaza intrarea unui terminal se spune ca ruleaza in foreground. Framebuffer Un tip de dispozitiv grafic; in Linux, asta se refera de obicei la framebuffer-ul software, care furnizeaza o interfata framebuffer standard catre programe in timp ce tine diverse driver-e ale componentelor ascunse de ele. Acest strat de abstractie elibereaza
222
Glosar programele de nevoia de comunicare cu diversele driver-e hardware. FTP File Transfer Protocol. FTP este o metoda foarte populara de transferare a datelor intre calculatoare. Gateway Un calculator prin care datele de pe o retea sunt transferate pe o alta retea. GID Group Identifier. GID-ul este un numar unic atribuit unui grup de utilizatori. Group Utilizatorii in Unix apartin “grupurilor”, care pot contine multi alti utilizatori si sunt folosite pentru un control de accese mai generale decat poate oferi existenta de sine statatoare a utilizatorilor. GUI Graphical User Interface. O interfata software care foloseste elemente grafice interpretate ca si butoanele, scrollbar-urile, ferestre, etc. mai degraba decat intrari si iesiri bazate doar pe text Home directory Directorul “camin” al unui utilizator este directorul in care utilizatorul este plasat imediat dupa logare. Utilizatorii au permisiuni maxime si mai mult sau mai putin domnia in directoarele lor camin. HOWTO Un document care descrie “how to(cum sa)” faci ceva, ca si configurarea unui firewall sau administrarea utilizatorilor si a grupurilor. Este o mare colectie de asemenea documente disponibile de la Proietul de Documentare Linux. HTTP Hypertext Transfer Protocol. HTTP este protocolul primar pe care lucreaza World Wide Web. ICMP Internet Control Message Protocol. Un protocol foarte primar de retea, folosit in general pentru ping-uri. Kernel Inima unui sistem de operare.Kernel-el este partea care furnizeaza controlul primar de procese si interfetele cu componentele calculatorului.
223
Slackware Linux Essentials Kernel module O bucata de cod kernel, de obicei un driver, care poate fi incarcat si descarcat din memorie separat de corpul principal al kernel-ului. Modulele sunt foarte utile cand imbunatatesti sau testezi setarile kernel-ului, deoarece ele pot fi incarcate si descarcate fara a rebuta sistemul. Library O colectie de functii care pot fi impartite intre programe. LILO LInux LOader. LILO este cel mai folosit administrator de but Linux. LOADLIN LOADLIN este un program care ruleaza sub MS DOS sau Windows si buteaza un sistem Linux. Este de obicei folosit pe calculatoare cu mai multe sisteme de operare (incluzand Linux si DOS/Windows, desigur). Man section Paginile in manualul online standard Unix ("man") sunt grupate in sectiuni pentru o referire mai usoara. Toate paginile referitoare la programarea in C sunt in sectiunea 3, paginile de administrare a sistemului in sectiunea 5, etc. MBR Master Boot Record. Un spatiu rezervat de pe un hard disk unde este stocata informatia referitoare la ce se va intampla in timpul butarii. LILO sau alti administratori de butare pot fi scrisi aici. Motif Un ansamblu de unelte de programare folosite in mai multe programe X vechi. MOTD Message of the Day. motd-ul (stocat in Linux in /etc/motd este un fisier text care este afisat tuturor utilizatorilor la logare. In mod traditional este folosit de catre administratorul de sistem ca si un fel de “buletin de stiri” pentru comunicarea cu utilizatorii. Mount point Un director gol intr-un sistem de fisier unde un alt sistem de fisiere urmeaza a fi “montat”, sau altoit. Nameserver Un server de informatii DNS. Nameservere-le traduc numele DNS in adrese IP numerice.
224
Glosar Network interface O reprezentare virtuala a unui dispozitiv de retea furnizat de catre kernel. Interfetele de retea le permit utilizatorilor si programelor sa comunice cu dispozitivele retea. NFS Network Filesystem. NFS permite montarea sistemelor de fisiere aflate la distanta ca si cum ar fi locale calculatorului tau si astfel furnizeaza o metoda transparenta de impartire a fisierelor. Octal Sistem de numarare in baza 8, cu cifrele 0-7. Pager Un program X care ii permite utilizatorului sa vada si sa se plimbe prin mai multe “desktop-uri”. Partition O parte a unei unitati hard. Sistemele de fisiere exista pe partitii. PPP Point-to-Point Protocol. PPP se foloseste in mod primar pentru conectare la un Internet Service Provider prin intermediul unui modem. Process Un program care ruleaza. Root directory Reprezentat ca “/”, directorul root este la varful sistemului de fisiere, cu toate celelalte directoare ramificandu-se sub el intr-un “arbore de fisiere”. Root disk Discul (de obicei reparat) pe care este salvat directorul root. Routing table Setul de informatii pe care kernel-ul le foloseste in “rutarea” datelor de pe o retea. Contine anumite delicatese cum ar fi gateway-ul tau default, care interfata de retea este conectata pe ce retea, etc. Runlevel Starea de sistem definita de init. Nivelul de rulare 6 este rebutarea, nivelul de rulare 1 este “mod de utilizator singur”, nivel de rulare 4 este o logare X, etc. Sunt 6 nivele de rulare disponibile pe un sistem Slackware. Secure shell O metoda criptata (prin urmare sigura) de logare la distanta pe un calculator. Sunt disponibile multe programe secure shell; e nevoie si de un client si de un server.
225
Slackware Linux Essentials Service Impartirea informatiei si/sau a datelor intre programe si calculatoarele de la un singur “server” catre mai multi “clienti”. HTTP, FTP, NFS, etc. sunt servicii. Shadow password suite Suita de parole shadow permite parolelelor criptate sa fie ascunse de utilizatori, pe cand restul informatiei in fisierul /etc/passwd ramane vizibila pentru toti. Asta ajuta la prevenirea atacurilor brute-force de ghicire a parolelor. Shell Shell-urile ofera o interfata de linie de comanda utilizatorului. Cand te uiti la un prompt text, esti intr-un shell. Shell builtin O comanda incorporata in shell, opus furnizarii acestuia de un program extern. De exemplu, bash are o incorporata cd. Signal Programele Unix pot comunica intre ele folosind simple “semnale”, care sunt enumerate si au sensuri specifice. kill -l va lista semnalele disponibile. SLIP Serial Line Interface Protocol. SLIP este un protocol similar cu PPP, in sensul ca este folosit pentru conectare calculatoarelor printr-o interfata seriala. Software package Un program si fisierele asociate acestuia, arhivate si comprimate intr-un singur fisier impreuna cu orice scripturi necesare sau informatii in ajutorarea instalarii, imbunatatirii si inlaturarii acelor fisiere. Software series O colectie de pachete software in Slackware. Toata pachetele KDE sunt in seriile “kde”, pachetele de retea sunt in seriile “n” , etc. Source code Cod care poate fi citit (mai mult sau mai putin) de catre oameni in care sunt scrise majoritatea programelor. Codul sursa este compilat in cod “binar” . Standard Error (stderr) Iesirea Unix standard pentru erori. Programele scriu orice mesaje de eroare pe stderr, astfel incat sa poata fi separate de iesirea normala.
226
Glosar Standard Input (stdin) Intrarea Unix standard. Datele pot fi redirectate sau intubate in intrarea unui program de la orice sursa. Standard Output (stdout) Iesirea Unix standard. Produsul normal de text al unui program este scris pe stdout, care este separat de mesajele de eroare raportate pe stderr si poate fi intubat sau redirectat in intrarile altor programe sau intr-un fisier. Subnet O raza a unui adrese IP care face parte dintr-o raza mai mare. De exemplu , 192.168.1.0 este un subnet al 192.168.0.0 (unde 0 este o masca care este “nedefinita”); este de fapt, subnet-ul “.1”. Superblock In Linux, partitiile sunt discutate in termeni de blocuri. Un bloc are 512 bytes. Superblocul reprezinta primii 512 bytes ai unei partitii. Supplemental disk In Slackware, o discheta folosita in timpul instalarii care nu contine nici kernel-ul (care este pe discheta de but) nici sistemul de fisiere root (care este pe discheta root), dar fisiere aditionale cum ar fi module de retea sau suport PCMCIA. Suspended process Un proces care a fost inghetat pana cand va fi ucis sau reluat. Swap space Spatiu pe disc folosit de kernel ca si RAM “virtual”. Este mai lent decat RAM-ul, dar pentru ca spatiul pe disc este mai ieftin, swapul este de obicei mai indestulator. Spatiul swap este folositor pentru kernel pentru tinerea datelor mai putin folosite si ca un ultim punct de sprijin cand RAM-ul fizic este epuizat. Symbolic link Un fisier special care pur si simplu indica catre locatia unui alt fisier. Legaturile simbolice sunt folosite pentru a evita duplicarea datelor cand este nevoie de un fisier in mai multe locuri. Tagfile Un fisier folosit de programul Slackware setup in timpul instalarii, care descrie un set de pachete care urmeaza a fi instalat. Terminal O interfata om-calculator care consista din cel putin un ecran (sau ecran virtual) si o metoda de introducere a datelor (aproape intotdeauna cel putin o tastatura).
227
Slackware Linux Essentials Toolkit, GUI O cutie de unelte GUI este o colectie de librarii care furnizeaza unui programator coduri cu care sa faca “widget-uri” cum ar fi scrollbar-urile, casutele, etc. si sa construiasca o interfata grafica. Cutia de unelte GUI folosita de un program deseori defineste “aspectul si simtul” acestuia. UID User Identifier. Un numar unic care identifica un utilizator sistemului. UID-urile sunt folosite de majoritatea programelor in loc de numele de utilizator pentru ca e mai usor sa lucreze cu numere; numele de utilizator este de obicei folosit doar cand utilizatorul vrea sa vada cum se intampla lucrurile. VESA Video Electronics Standards Association. Termenul “VESA” este deseori folosit pentru a denota un standard specificat de aceasta asociatie. Aproape toate adaptoarele video moderne sunt compatibile VESA. Virtual terminal Folosirea software-ului pentru simularea mai multor terminale in timp ce folosesti doar un set de dispozitive de intrare/iesire (tastatura, monitor, mouse). Combinatii speciale de taste schimba intre terminalele virtuale la un singur terminal fizic. Window manager Un program X al carui scop este sa furnizeze o interfata grafica dincolo de simplele desene dreptunghiulare ale Sistemului de Ferestre X. Administratoarele de ferestre furnizeaza de obicei bare de titlu, meniuri pentru rularea programelor, etc. Working directory Directorul in care un program considera ca se afla in timpul rularii. Wrapper program Un program al carui unic scop este sa ruleze alte programe, dar sa le schimbe comportamentul intr-un fel prin alterarea mediului lor sau filtrarea intrarii lor. X server Programul in Sistemul de Ferestre X care face legatura cu componentele grafice si manipuleaza rularea actuala a programelor X. X Window System Interfata grafica orientata spre retea folosit pe majoritatea sistemelor de operare Unix-like, inclusiv Linux.
228
Appendix A. The GNU General Public License Table of Contents A.1. Preamble A.2. TERMS AND CONDITIONS A.3. How to Apply These Terms to Your New Programs GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
A.1. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
229
Slackware Linux Essentials We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow.
A.2. Terms And Conditions TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
230
The GNU General License 3.
4.
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a. Accompany it with the complete corresponding machinereadable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
231
Slackware Linux Essentials b.
5.
6.
7.
232
Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machinereadable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the
The GNU General License recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 9. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 10. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number
233
Slackware Linux Essentials of this License, you may choose any version ever published by the Free Software Foundation. 11. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. 12. NO WARRANTY BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS
A.3. How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
234
The GNU General License To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouseclicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by
235
Slackware Linux Essentials James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
236
by dahn 2005