Documente Academic
Documente Profesional
Documente Cultură
Slack Ware Linux Essentials 2
Slack Ware Linux Essentials 2
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.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
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
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
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
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
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
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
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
12
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
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
19
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.
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. :^)
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
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. ;)
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.
28
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: majordomo@slackware.com
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.
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
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
36
Instalare
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.
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
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.
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
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.
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
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.
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
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.
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
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.
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
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 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
59
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
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
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
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.
61
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.
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)
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
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
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.
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.
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.
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]=""
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
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
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
78
Configurarea retelei
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$
81
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
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
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
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 $ xinit(1) startx(1), asa
87
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
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:
/etc/rc.d/rc.4.
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.
91
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
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=<root partition device> 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.
97
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
C:\AUTOEXEC.BAT AUTOEXEC.BAT
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
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
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
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!
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.
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
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
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.
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
unset
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.)
% 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
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
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
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
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: mr.jones@example.com. 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
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
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
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
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
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.
mount
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:
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 npentru 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
121
Capitolul 10
123
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/ etc/ home/ lib/ lost+found/ mnt/ proc/ root/ sbin/ suncd/ tmp/ 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 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/
124
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
125
10.1.3 pwd
pwd
Comanda pwd o folosesti ca sa vezi locatia ta curenta. Pentru a folosi tasteaza pwd. De exemplu:
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.
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
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.
un de un cu
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
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
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
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)
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.
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
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 <directory>
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
/tmp.
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.
% 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.
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
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
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 0:08 0:00 0:00 0:00 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 -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 VSZ 344 0 0 0 0 1044 1160 1076 1360 1276 1332 1540 1796 RSS TTY 80 ? 0 ? 0 ? 0 ? 0 ? 44 ? 0 ? 120 ? 192 ? 152 ? 60 ? 312 ? 72 ? STAT START S SW SW SW SW S SW S S S S S S Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 TIME 0:03 init 0:13 0:14 0:00 0:17 0:00 0:01 0:00 0:00 0:00 0:00 0:04 0:00
138
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 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.2 0.1 0.2 0.5 0.0 0.0 0.0 0.0 1812 1172 1048 1100 1396 1820 1048 1048 1048 1048 68 ? 260 ? 316 ? 152 ? 280 ? 680 tty1 0 tty3 0 tty4 0 tty5 0 tty6 S S S S S S SW SW SW SW Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 Mar02 0:00 0:00 0:00 0:01 gpm 0:00 0:08 -bash 0:00 0:00 0:00 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 2) SIGINT 3) SIGQUIT 4) SIGILL
140
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
1040 1040 796 796 2180 2180 776 176 776 176
0.4 0:00 top 0.3 25:37 0.8 0.3 0.0 2.4 0.4 0.0 0.0 0.0 0.0 0.1 0.0 0.1 0.2 1:35 0:00 xwd 0:13 3:16 0:00 0:08 0:06 0:00 0:04 0:00 0:00 0:00 0:01
6256 6156 1164 1164 0 0 0 0 340 48 316 588 0 0 0 0 340 48 316 588
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 PR 13 NI VIRT RES SHR S %CPU %MEM 0 11012 10m 6956 S 1.0 2.1 TIME+ COMMAND 0:03.66 gnome-
142
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 9 9 9 9 9 9 9 9 9 9 9 0 0 0 0 0 0 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 7084 7084 1968 S 2232 2232 380 S 2552 2552 1948 S 2740 2740 2224 S 6496 6492 5004 S 1740 1740 1440 S 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.3 0.2 0.1 1.6 1.4 0.4 0.5 0.5 1.3 0.3 1.4 2.2 2.4 2.4 2.4 0:00.06 0:00.09 0:00.00 0:00.00 0:00.30 top bash startx xinit gnome-
0:00.50 gconfd-2 0:00.05 esd 0:00.10 bonobo0:00.05 gnome0:00.31 gnome0:00.28 0:02.28 metacity 0:01.58 gnome0:00.64 nautilus 0:00.00 nautilus 0:00.00 nautilus
0 7052 7052 4960 S 0 11412 11m 7992 S 0 12148 0 12148 0 12148 11m 8780 S 11m 8780 S 11m 8780 S
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
145
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
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]
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
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
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
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.
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.
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
157
13.1 ping
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 ping(8)
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
158
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
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.
IN
MX
76634 86400
IN IN
CNAME MX 1
160
;; 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
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 johnc@idsoftware.com 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 <hostname>
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
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.
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
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
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> <to-addr>
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
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.1 lynx
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 lynx(1)
168
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 <url>
170
13.9.1 ftp
Pentru a te conecta la un server FTP, ruleaza comanda ftp(1) si specifica host-ul:
% ftp <hostname> [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 <numedirector> bin ascii get <numefisier> put <numefisier> 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
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
13.10.2 talk
le permite utilizatorilor sa vorbeasca. Imparte ecranul in jumatate, pe orizontala. Pentru a initia o convorbire cu alta persoana, foloseste aceasta comanda:
% talk <person> [ttyname] talk(1)
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
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]
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
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)
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
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
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
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-<ver>-<arch>-<rev>.tgz 6341417aa1c025448b53073a1f1d287d package-<ver>-<arch><rev>.tgz
CHECKSUMS.md5 din radacina directorului slackware-$VERSION directorul /patches pentru patch-uri) sau in email-ul primit
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.
# 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
15.1 gzip
este programul de compresie GNU. Preia un singur fisier si il comprima. Este folosit in general ca:
% gzip filename gzip(1)
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
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 bzip2(1)
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
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
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 *
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
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.
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.
195
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.
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.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
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.)
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.
206
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
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.
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
Capitolul 18
209
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
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
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)
este urmatoarea:
# upgradepkg package_name
213
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.
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
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.
makepkg(8)
215
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
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.
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:.
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
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
230
4.
231
5.
6.
7.
232
233
234
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
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