Sei sulla pagina 1di 268

IntroduzioneaLinux

Introduzione a Linux
Una guida pratica
Machtelt Garrels
Garrels.be

<tille_want_no_spam_at_garrels_dot_be> Versione1.25 Copyright2002,2003,2004,2005,2006,2007MachteltGarrels 20070511

Traduzioneinitaliano(v.1.25.0)diAndreaMontagner

IntroduzioneaLinux

IntroduzioneaLinux

Indice generale
Introduzione................................................................................................................... ...........................9 1.Perchquestaguida?.................................................................................................................... ....9 2.Chidovrebbeleggerequestolibro?........................................................................ ........................9 3.Nuoveversioniedisponibilit....................................................................................................... ..9 4.Storiadellerevisioni......................................................................................................... .............10 5.Contributi........................................................................................................... ............................11 6.Feedback.................................................................................................................................... .....11 7.Informazionisulcopyright........................................................................................... .................11 8.Cosaviserve?....................................................................................................... .........................12 9.Convenzioniutilizzateinquestodocumento........................................................................... .....12 10.Organizzazionediquestodocumento............................................................................ .............13 Capitolo1.Cos'Linux?............................................................................................... .........................15 1.1.Storia.............................................................................................................. .............................15 1.1.1.UNIX................................................................................................................. ..................15 1.1.2.LinuseLinux................................................................................................. .....................16 1.1.3.AttualeutilizzazionedeisistemiLinux..................................................... ........................17 1.2.L'interfacciautente...................................................................................................................... 18 1.2.1.Linuxdifficile?........................................................................................................... ......18 1.2.2.Linuxperutentinonesperti..................................................................... ..........................18 1.3.Linuxhafuturo?........................................................................................................................ ..19 1.3.1.OpenSource............................................................................................................ ............19 1.3.2.Dieciannidiesperienzaalvostroservizio............................................................ ............20 1.4.CaratteristichediLinux............................................................................................... ...............21 1.4.1.VantaggidiLinux............................................................................................. ..................21 1.4.2.SvantaggidiLinux........................................................................................................ ......23 1.5.SaporediLinux..................................................................................................................... ......24 1.5.1.LinuxeGNU................................................................................................................. ......24 1.5.2.GNU/Linux............................................................................................. ............................25 1.5.3.Qualedistribuzionedovreiinstallare?............................................................ ...................25 1.6.Sommario................................................................................................................. ...................26 1.7.Esercizi........................................................................................................................ ................27 Capitolo2.Avviorapido...................................................................................................... ..................28 2.1.Connettersi,attivarel'interfacciautenteedisconnettersi........................................................28 . 2.1.1.Introduzione.................................................................................................. ......................28 2.1.2.Modalitgrafica..................................................................................................... .............28 2.1.3.Modalittesto................................................................................................................. .....30 2.2.Rudimentiessenziali......................................................................................................... ..........31 2.2.1.Icomandi.................................................................................................................... .........31 2.2.2.Annotazionigenerali......................................................................................................... ..32 2.2.3.UsarelecaratteristichediBash................................................................................ ..........33 2.3.Cercareaiuto............................................................................................................ ...................35 2.3.1.Stateattenti.................................................................................................................. ........35 2.3.2.Lepagineman........................................................................................................... ..........35 2.3.3.Maggioriinformazioni...................................................................................................... ..37 3

IntroduzioneaLinux

2.4.Sommario................................................................................................................. ...................40 2.5.Esercizi........................................................................................................................ ................41 2.5.1.Connessioneedisconnessione................................................................... ........................41 2.5.2.Password............................................................................................................................ ..42 2.5.3.Ledirectory.......................................................................................................... ...............42 2.5.4.Ifile..................................................................................................................................... .43 2.5.5.Cercareaiuto................................................................................................... ....................44 Capitolo3.Fileefilesystem........................................................................................................... .......45 3.1.PanoramicageneralesulfilesystemLinux................................................................... ............45 3.1.1.Ifile..................................................................................................................................... .45 3.1.2.Ilpartizionamento.................................................................................................. .............47 3.1.3.Dipisullastrutturadelfilesystem.................................................................. ................51 3.2.Orientarsinelfilesystem........................................................................................................ ....54 3.2.1.Ilpercorso.......................................................................................................................... ..54 3.2.2.Percorsiassolutierelativi...................................................................... ............................56 3.2.3.Ifileeledirectorypiimportanti......................................................................... .............56 3.2.4.Ifilediconfigurazionepiimportanti........................................................................ .......59 3.2.5.Ipicomunidevice................................................................................ ............................61 3.2.6.Ipicomunifiledivariabili........................................................................................... ....62 3.3.Manipolareifile....................................................................................................................... ...64 3.3.1.Vedereleproprietdeifile.......................................................................................... .......64 3.3.2.Creareecancellarefileedirectory.................................................................. ..................66 3.3.3.Trovareifile....................................................................................................................... .70 3.3.4.Pimodidivedereilcontenutodeifile....................................................................... ......75 3.3.5.Collegareifile................................................................................................................... ..76 3.4.Lasicurezzadeifile....................................................................................................... .............78 3.4.1.Dirittidiaccesso:laprimalineadidifesadiLinux.........................................................78 . 3.4.2.Glistrumenti............................................................................................ ...........................80 3.5.Sommario................................................................................................................. ...................86 3.6.Esercizi........................................................................................................................ ................87 3.6.1.Partizioni..................................................................................................... ........................88 3.6.2.Percorsi....................................................................................................................... .........88 3.6.3.Viaggionelsistema........................................................................................................... ..88 3.6.4.Manipolareifile............................................................................................................... ...89 3.6.5.Permessideifile........................................................................................................ ..........89 Capitolo4.Iprocessi............................................................................................................ ..................90 4.1.Iprocessiindettaglio............................................................................................................. .....90 4.1.1.Multiutenzaemultitasking...................................................................................... ...........90 4.1.2.Tipidiprocessi............................................................................................................... .....90 4.1.3.Attributideiprocessi............................................................................... ...........................93 4.1.4.Visualizzazionedelleinformazionisuiprocessi................................................. ..............93 4.1.5.Vitaemortediunprocesso......................................................................................... .......96 4.1.6.SUIDeSGID............................................................................................... .......................98 4.2.Processod'avvio,initeshutdown.............................................................................. ..............100 4.2.1.Introduzione.................................................................................................. ....................100 4.2.2.Ilprocessodiavvio.................................................................................................. .........101 4

IntroduzioneaLinux

4.2.3.CaratteristichediGRUB........................................................................ ..........................101 4.2.4.Init.................................................................................................................................. ....102 4.2.5.Ilivellidiesecuzionediinit............................................................................ .................104 4.2.6.Lospegnimento.............................................................................................................. ...106 4.3.Lagestionedeiprocessi................................................................................ ...........................106 4.3.1.Lavoriperl'amministratoredisistema......................................................... ...................106 4.3.2.Quantotemporichiede?.................................................................................................. ..107 4.3.4.Leprestazioni............................................................................................................ ........108 4.3.4.Ilcarico......................................................................................................................... .....108 4.3.5.Possofarequalcosacomeutente?............................................................................. .......108 4.4.Temporizzareiprocessi................................................................................ ...........................113 4.4.1.Usatequeltempodiozio!............................................................................................. ....113 4.4.2.Ilcomandosleep............................................................................................. ..................114 4.4.3.Ilcomandoat................................................................................................................. ....114 4.4.4.Cronecrontab............................................................................................................. ......115 4.5.Sommario................................................................................................................. .................117 4.6.Esercizi........................................................................................................................ ..............118 4.6.1.Ingenerale............................................................................................................... ..........118 4.6.2.Avvio,init,ecc.......................................................................................................... ........119 4.6.3.Pianificazione.............................................................................................................. ......119 Capitolo5.Redirezionedell'I/O.......................................................................................................... .120 5.1.Sempliciredirezioni............................................................................................................... ...120 5.1.1.Cosasonolostandardinputelostandardoutput?..................................................... .....120 5.1.2.Glioperatoridiredirezione.............................................................................. ................120 5.2.Caratteristicheavanzatedellaredirezione...................................................................... .........123 5.2.1.Usodeidescrittoridifile...................................................................................... ............123 5.2.2.Esempi.................................................................................................................. .............124 5.3.Filtri........................................................................................................................... ................125 5.3.1.Dipisugrep............................................................................................................ ........125 5.3.2.Filtraggiodeidatiinuscita........................................................................................ .......126 5.4.Sommario................................................................................................................. .................127 5.5.Esercizi........................................................................................................................ ..............127 Capitolo6.Glieditorditesto................................................................................................... ............129 6.1.Editorditesto................................................................................................................. ...........129 6.1.1.Perchdovreiusareuneditor?.............................................................................. ...........129 6.1.2.Qualeeditordovreiusare?................................................................... ............................129 6.2.Impiegodell'editorVim............................................................................................................ 131 6.2.1.Duemodi.............................................................................................................. .............131 6.2.2.Comandidibase.............................................................................................................. ..131 6.2.3.Lamanierasemplice............................................................................................... ..........133 6.3.Linuxinufficio...................................................................................................... ...................133 6.3.1.Storia...................................................................................................... ...........................133 6.3.2.Suiteeprogrammi............................................................................... .............................134 6.3.3.Note........................................................................................................... ........................134 6.4.Sommario................................................................................................................. .................135 6.5.Esercizi........................................................................................................................ ..............135 5

IntroduzioneaLinux

Capitolo7.Homesweet/home.......................................................................................... ..................136 7.1.Correttagestionedellacasaingenerale........................................................... .......................136 7.1.1.Introduzione.................................................................................................. ....................136 7.1.2.Farespazio............................................................................................... .........................136 7.2.Ilvostroambientetestuale....................................................................................................... .140 7.2.1.Levariabiliambientali.................................................................................................. ....140 7.2.2.Ifilediimpostazionedellashell.................................................................. ....................142 7.2.3.Untipicoinsiemedifilediconfigurazione........................................................ .............143 7.2.4.IlpromptdiBash....................................................................................... .......................146 7.2.5.Gliscriptdishell......................................................................................................... ......147 7.3.L'ambientegrafico.................................................................................................. ..................150 7.3.1.Introduzione.................................................................................................. ....................150 7.3.2.IlsistemaXWindow...................................................................................... ..................150 7.3.3.ConfigurazionediunserverX............................................................................. ............153 7.4.Specificheimpostazionidiregione................................................................................... .......153 7.4.1.Configurazionedellatastiera............................................................... ............................153 7.4.2.Itipidicaratteri................................................................................................................ .154 7.4.3.Dataefusiorari................................................................................................................ .154 7.4.4.Lalingua........................................................................................................................ ....155 7.4.5.Specificheinformazioninazionali............................................................. ......................155 7.5.Installarenuovosoftware.................................................................................... .....................156 7.5.1.Ingenerale............................................................................................................... ..........156 7.5.2.Iformatideipacchetti................................................................................................. ......156 7.5.3.Gestioneedaggiornamentiautomaticideipacchetti.....................................................159 . 7.5.4.Aggiornareilkernel..................................................................................................... .....161 7.5.5.InstallarepacchettiextradaiCDdiinstallazione.......................................................... ..161 7.6.Sommario................................................................................................................. .................163 7.7.Esercizi........................................................................................................................ ..............164 7.7.1.L'ambientedellashell........................................................................................ ...............164 7.7.2.L'ambientegrafico.......................................................................................... ..................164 Capitolo8.Stampantiestampe........................................................................................................ ....166 8.1.Ifiledistampa............................................................................................... ...........................166 8.1.1.Stamparedalineadicomando.................................................................... .....................166 8.1.2.Impostazionedeiformati........................................................................................... .......168 8.2.Illatoserver..................................................................................................... .........................169 8.2.1.Ingenerale............................................................................................................... ..........169 8.2.2.Configurazionegraficadellastampante........................................................ ..................169 8.2.3.L'acquistodiunastampanteperLinux............................................................... .............170 8.3.Problemidistampa................................................................................................ ...................170 8.3.1.Filesbagliato........................................................................................................ .............170 8.3.2.Lamiastampanonriuscita........................................................................................ ....170 8.4.Sommario................................................................................................................. .................172 8.5.Esercizi........................................................................................................................ ..............172 Capitolo9.Tecnichefondamentalidibackup............................................................................. ........174 9.1.Introduzione.......................................................................................................... ....................174 9.1.1.Preparazionedeivostridati................................................................................... ...........174 6

IntroduzioneaLinux

9.2.Spostareivostridativersoun'unitdibackup................................................................... .....179 9.2.1.Copiaresuundiscofloppy........................................................................................ .......179 9.2.2.FareunacopiaconunmasterizzatorediCD.................................................................. .180 9.2.3.Copiedisicurezzasu/daunitjazz,perifericheUSBesimili........................................ 81 1 9.2.4.Copiedisicurezzaconunaperifericaanastro.......................................................... ......182 9.2.5.Strumentidallavostradistribuzione................................................................ ................182 9.3.Usodirsync.................................................................................................... ..........................183 9.3.1.Introduzione.................................................................................................. ....................183 9.3.2.Unesempio:rsyncsuunaperifericaUSBdimassa......................................................183 . 9.4.Crittografia................................................................................................................... .............183 9.4.1.Notegenerali......................................................................................................... ............183 9.4.2.Lagenerazionediunachiave................................................................................. ..........184 9.4.3.Apropositodellavostrachiave...................................................................................... ..185 9.4.4.Crittografiadeidati....................................................................................................... ....186 9.4.5.Decodificadeifile.......................................................................................................... ...186 9.5.Sommario................................................................................................................. .................186 9.6.Esercizi........................................................................................................................ ..............187 Capitolo10.Lereti................................................................................................................ ...............188 10.1.Panoramicasullereti....................................................................................... .......................188 10.1.1.IlmodelloOSI................................................................................................................. 188 10.1.2.Alcunipopolariprotocollidirete...................................................... ............................189 10.2.Configurazioniedinformazionidirete........................................................... ......................192 10.2.3.Icomandidiconfigurazionedellereti................................................................. ..........193 10.2.4.Nomidelleinterfaccedirete............................................................................... ...........195 10.2.5.Laconfigurazionedelvostrohost............................................................................... ...196 10.2.6.Altrihost.......................................................................................................................... 196 10.3.ApplicazioniInternet/Intranet................................................................................... .............198 10.3.1.Tipidiserver....................................................................................................... ............199 10.3.2.Laposta....................................................................................................... ....................200 10.3.3.Ilweb.................................................................................................................... ...........202 10.3.4.FileTransferProtocol................................................................................................. ....203 10.3.5.Chateconferenze................................................................................. ..........................204 10.3.6.Servizipernotizie................................................................................................ ...........205 10.3.7.IlDomainNameSystem........................................................................ ........................206 10.3.8.DHCP...................................................................................................... ........................206 10.3.9.Servizidiautenticazione....................................................................... .........................206 10.4.Esecuzioneremotadiapplicazioni................................................................ ........................209 10.4.1.Introduzione.................................................................................................. ..................209 10.4.2.Rsh,rloginetelnet.................................................................................................. ........209 10.4.3.IlsistemaXWindow...................................................................................... ................210 10.4.4.LasuiteSSH...................................................................................... .............................211 10.4.5.VNC............................................................................................................................... ..215 10.4.6.Ilprotocollordesktop............................................................................ .........................215 10.4.7.Cygwin........................................................................................................ ....................216 10.5.Lasicurezza................................................................................................ ............................216 10.5.1.Introduzione.................................................................................................. ..................216 7

IntroduzioneaLinux

10.5.2.Iservizi.................................................................................................................. ..........217 10.5.3.Aggiornareconregolarit.................................................................... ..........................217 10.5.4.Ifirewallelepolitiched'accesso.................................................................. .................218 10.5.5.Lascopertadelleintrusioni............................................................................ ................219 10.5.6.Ulteriorispunti....................................................................................................... .........220 10.5.7.Sonostatoattaccatodaglihacker?.................................................................... .............220 10.5.8.Ripristinaredopoun'intrusione........................................................................... ...........221 10.6.Sommario................................................................................................................. ...............221 10.7.Esercizi........................................................................................................................ ............222 10.7.1.Leretiingenerale............................................................................................. ..............222 10.7.2.Connessioniremote................................................................................. .......................223 10.7.3.Lasicurezza........................................................................................ ............................223 Capitolo11.Suonievideo.............................................................................................. .....................224 11.1.Lebasidell'audio.................................................................................................... ................224 11.1.1.Installazione................................................................................................ ....................224 11.1.2.Idriverel'architettura................................................................................ ....................224 11.2.Riproduzioneaudioevideo......................................................................... ..........................225 11.2.1.AscoltoecopiadeiCD............................................................................................. ......225 11.2.2.Lariproduzionedifilemusicali............................................................................ .........225 11.2.3.Laregistrazione................................................................................... ...........................227 11.3.Riproduzionevideo,guardareflussietelevisione................................................ ................228 11.4.TelefoniaInternet.................................................................................................................... 229 11.4.1.Checos'?................................................................................................................... .....229 11.4.2.Cosaviserve?............................................................................................... ..................229 11.5.Sommario................................................................................................................. ...............230 11.6.Esercizi........................................................................................................................ ............231 AppendiceA.Doveandaredaqui?............................................................................. ........................232 A.1.Libriutili....................................................................................................... ...........................232 A.1.1.Linuxingenerale........................................................................................ .....................232 A.1.2.Editor............................................................................................................... .................232 A.1.3.Shell..................................................................................................................... .............232 A.1.4.XWindow.................................................................................................... ....................232 A.1.5.Reti.................................................................................................................................. ..233 A.2.Sitiutili....................................................................................................................... ..............233 A.2.1.Informazionigenerali........................................................................... ...........................233 A.2.2.Riferimentiaspecifichearchitetture......................................................................... ......233 A.2.3Distribuzioni.................................................................................................................. ....233 A.2.4.Software............................................................................................... ............................234 AppendiceB.ComandiDOScontroLinux.................................................................................... .....235 AppendiceC.Caratteristichedellashell............................................................................................. .236 C.1.Caratteristichecomuni............................................................................................... ..............236 C.2.Caratteristichediverse.................................................................................. ...........................237 AppendiceD.GNUFreeDocumentationLicense.......................................................................... ....240 D.1.PREAMBLE................................................................................................ ............................240 D.2.APPLICABILITYANDDEFINITIONS.............................................................. .................240 D.3.VERBATIMCOPYING......................................................................................................... .241 8

IntroduzioneaLinux

D.4.COPYINGINQUANTITY............................................................................ ........................242 D.5.MODIFICATIONS...................................................................................................... ............242 D.6.COMBININGDOCUMENTS..................................................................................... ...........244 D.7.COLLECTIONSOFDOCUMENTS.................................................................. ...................244 D.8.AGGREGATIONWITHINDEPENDENTWORKS..........................................................245 . D.9.TRANSLATION..................................................................................................................... .245 D.10.TERMINATION............................................................................................................. .......245 D.11.FUTUREREVISIONSOFTHISLICENSE................................................... ....................245 D.12.ADDENDUM:HowtousethisLicenseforyourdocuments............................................246 . Glossario.............................................................................................................................................. ..247 A..................................................................................................................................................... ...247 B............................................................................................................................................. ...........248 C.............................................................................................................................................. ..........248 D.................................................................................................................................................... ....249 E....................................................................................................................................... .................250 F................................................................................................................................. .......................251 G..................................................................................................................................................... ...251 H.................................................................................................................................................... ....252 I................................................................................................................................... ......................253 J........................................................................................................................................... ..............253 K.................................................................................................................................................. ......254 L....................................................................................................................................... .................254 M.......................................................................................................................................... .............255 N..................................................................................................................................................... ...256 O..................................................................................................................................................... ...257 P................................................................................................................................ ........................257 Q..................................................................................................................................................... ...258 R............................................................................................................................................. ...........259 S................................................................................................................................. .......................259 T....................................................................................................................................... .................261 U..................................................................................................................................................... ...262 V..................................................................................................................................................... ...263 W................................................................................................................................................. ......263 X..................................................................................................................................................... ...264 Y..................................................................................................................................................... ...265 Z....................................................................................................................................... .................265

IntroduzioneaLinux

Introduzione
1. Perch questa guida?
MoltepersonecredonoancorachesiadifficoltosoimparareLinuxochesolodegliespertipossano comprenderecomefunzionaunsistemaLinux. Sebbenesiadisponibileunariccadocumentazionegratuita,questalargamentedispersainretee spesso confonde in quanto abitualmente destinata ad esperti UNIX o Linux. Oggi, grazie ai progressinelsuosviluppo,Linuxcresciutoinpopolaritsiainambitodomesticochelavorativo. L'obbiettivodiquestaguidamostrareallagenteditutteleetcheLinuxpuesseresemplice, divertenteedutilizzabileperognigenerediimpiego.

2. Chi dovrebbe leggere questo libro?


QuestaguidastataconcepitacomepanoramicasulsistemaoperativoLinux,rivoltaainuoviutenti alla stregua di un giro esplorativo e come guida introduttiva, con esercizi alla fine di ciascun capitolo:gliutentipiavanzatipossonoconsiderarlacomeunaguidadiriferimentoeraccoltadi nozionibasilariperl'attivitdiamministrazionedisistemaedirete.Questolibrocontienemolti esempirealiderivatidall'esperienzadell'autricecomeamministratricedisistemaLinuxedirete, insegnante e consulente. Noi speriamo che questi esempi vi aiuteranno ad avere una migliore comprensionedelsistemaLinuxechevisentireteincoraggiatiacondurreesperimentiinproprio. ChidesideraottenereunaCLUE,unaEsperienzadiUtentediLineadiComando[ndt.Command LineUserExperience]conLinux(eUnixingenerale)troverutilequestolibro.

3. Nuove versioni e disponibilit


Questo documento pubblicato nella sezione Guide della collezione del Progetto di Documentazione Linux (LDP = Linux Documentation Project) all'indirizzo: http://www.tldp.org/guides.html PoteteinoltrescaricareleversioniinPDFePostScript. Laversionepirecentedisponibilesulsitohttp://tille.garrels.be/training/tldp. LaguidasipufarstamparesucartapressoFultus.comBooks. Fultus distribuisce questo documento presso molte librerie, comprese Baker & Taylor equelle onlineAmazon.com,Amazon.co.uk,BarnesAndNoble.comeGoogle'sFroogle. Figura1.CopertinadiIntroductiontoLinux

10

IntroduzioneaLinux

LaguidastatatradottainHindida:

AlokKumar DhananjaySharma Kapil PuneetGoel RavikantYuyutsu

AndreaMontagnerhatradottolaguidainitaliano.

4. Storia delle revisioni


Storiadellerevisioni
Revisione1.25 20070511 Rivistoda:MG Commenti dai lettori, aggiornamenti minori. Etichetta della posta elettronica, aggiornamento informazioni sulla disponibilit(grazieOleg) Revisione1.24 20061101 Rivistoda:MG Aggiuntiterminidell'indice,preparatoperl'edizionedisecondastampa,aggiunteinformazionisugpgeproxy. Revisione1.23 20060725 Rivistoda:MGeFK Aggiornamentiecorrezioni,rimossanuovamentel'app5,adattatalalicenzaperconsentirel'inclusionetraidocumenti Debian. Revisione1.22 20060406 Rivistoda:MG Rivistocompletamenteilcapitolo8,capitolo10: esempichiarificatori,aggiunteinformazionisuifconfigecygwin, rivisteleapplicazionidirete. Revisione1.21 20060314 Rivistoda:MG Aggiuntiesercizinelcapitolo11,correttierroridinuovariga,panoramicadeicomandicompletataperilcapitolo9, correzioniminorinelcapitolo10. Revisione1.20 20060106 Rivistoda:MG Diviso il capitolo 7: ora la materia dell'audio si trova in un capitolo separato, capitolo 11.xml. Piccole revisioni, aggiornamentisuicomandicomeaptitude,dipisullememorieUSB,telefoniaInternet,correzionidailettori.

11

IntroduzioneaLinux

Revisione1.13 20040427 Rivistoda:MG UltimariletturaprimadiinviareiltuttoaFultusperlestampe.AggiuntoriferimentoaFultusnellasezioneNuove Versioni, aggiornate le sezioni Convenzioni e Organizzazione. Cambi minori nei capitoli 4, 5, 6 e 8, aggiunte informazioni su rdesktop nel cap. 10, aggiornato il glossario, rimpiazzati riferimenti a fileutils con coreutils, ringraziamentiaitraduttoriinHindi.

5. Contributi
Moltegrazieallepersonechehannocondivisoleloroesperienzee,inparticolare,agliutentiLinux delBelgioperavermiascoltatofinoinfondoognigiornosempregenerosineilorocommenti. PureunpensierospecialeaTabathaMarshallperaverfattosiaunarevisionerealmenteminuziosa, siailcontrolloortograficoestilistico,eaEugeneCrosserperaverindividuatoglierrorichenoidue avevamotrascurato. Egrazieatuttiilettorichemihannoavvisato degli argomenti mancanti edachihaaiutato a toglieregliultimierrori,ledefinizionieicaratteripocochiariattraversoledifficoltdiscrivermi tuttelelorosegnalazioni.Quellesonolepersonechemihannoaiutatoamantenereaggiornata questaguida,comeFilipusKlutiero,chehaeffettuatounarevisionecompletanel2005enel2006e mihaaiutataadinserirelaguidanellacollezionedeidocumentiDebian,edAlexeyEremenko,che mihainviatolabaseperilcapitolo11. Nel2006SureshRajashekarahacreatounpacchettoDebiandiquestadocumentazione. Infine,ungrossoringraziamentoaivolontarichestannoattualmentetraducendoquestodocumento infrancese, svedese,tedesco,farsi,hindiealtrelingueancora.E'ungrossolavorochenonva disprezzato:ammiroilvostrocoraggio.

6. Feedback
Informazioni perdute, collegamenti perduti, caratteri perduti? Scrivete per posta elettronica al manutentorediquestodocumento: <tillewantsnospam_at_garrelsdotbe> Nonscordatevidicontrollareprimal'ultimaversione!

7. Informazioni sul copyright


20022007MachteltGarrels. E'garantitoilpermessodicopiare,distribuiree/omodificarequestodocumentosottoiterminidella GNUFreeDocumentationLicense,Versione1.2oqualsiasiversionepirecentepubblicatadalla 12

IntroduzioneaLinux

FreeSoftwareFoundation,senzapartiinvariabili,senzatestidicopertinaanterioreeposteriore. Unacopiadellalicenzainclusanell'AppendiceDintitolataGNUFreeDocumentationLicense. LeggeteilManifestoGNUsevoletesapereperchstataadottatatalelicenzaperquestolibro. L'autrice e l'editore hanno fatto ogni sforzo nella preparazione di questo libro per assicurare l'accuratezzadelleinformazioni.Comunqueleinformazionicontenuteinquestolibrosonoofferte senzagaranzie,siaespressecheimplicite.Nl'autrice,nl'editore,nalcunvenditoreodistributore sarannoresponsabiliperqualsiasidannocausatooasseritamentecausatoinmododirettooindiretto daquestolibro. Iloghi,imarchieisimboliutilizzatiinquestolibrosonodiproprietdeilororispettiviproprietari.

8. Cosa vi serve?
ViservonouncomputereunsupportocontenenteunadistribuzioneLinux.Lamaggiorpartedi questaguidaapplicabileatutteledistribuzioniLinuxeadUNIXingenerale.Aparteiltemponon cisonoaltrerichiestespecifiche. Lo Installation HOWTO contiene utili informazioni su come ottenere software Linux ed installarlosuivostricomputer:trattaanchedellerichiestehardwareedellacoesistenzaconaltri sistemioperativi. ImmaginiCDpossonoesserescaricatedalinuxiso.comedinaltriposti,vediAppendiceA. Un'interessante alternativa per quelli che non osano installare Linux nelle loro macchine costituitadalledistribuzioniLinuxchesipossonoavviaredaunCD,comequellaKnoppix.

9. Convenzioni utilizzate in questo documento


Sonopresentiinquestotestoleseguenticonvenzionitipograficheediutilizzo: Tavola1.Convenzionitipograficheediutilizzo Tipoditesto
Testotravirgolette Vistadaterminale Comando VARIABILE opzione

Significato
Citazionidapersone,outputdicomputercitato. Inputeoutputtestualedicomputercatturatodalterminale,disolitoresocon unosfondogrigiochiaro. Nomediuncomandochepuessereinseritonellalineadicomando. Nomediunavariabileodiunpuntatorealcontenutodiunavariabile,come $VARNAME. Opzionediuncomandocomel'opzioneanelcomandols

13

IntroduzioneaLinux

Tipoditesto
argomento prompt Comandoopzioniargomenti filename Tasto Bottone Menu>Scelta Terminologia \ VediCapitolo1 L'autrice

Significato
Argomentodiuncomandocomeinleggeremanls Promptdell'utenteabitualmenteseguitodauncomandochevoibatteteinuna finestraditerminalecomehilda@home>lsl Sintassiousogenericodiuncomandosulineaseparata. Nomedifileodirectory.Ades.Portarsialladirectory/usr/bin. Tastodapremeresullatastieracome,ades.battereQperterminare. Bottonegraficodapremerecome,ades.ilpulsanteOK. Sceltadaeffettuareinunmenugrafico,peres.ScegliAiuto>Informazioni suMozillanelvostrobrowser. Termineoconcettoimportante:IlkernelLinuxilcuoredelsistema. Lasbarrainversainunavistadaterminaleoinunsommariodicomandi indicaunalineanonterminata.Inaltreparolesevedeteuncomandolungo chetagliatoinpilinee,\significaNonpremereancoraInvio!. Collegamentoalrelativosoggettodellaguida Collegamentoattivoadunarisorsadireteesterna.

Vengonoutilizzateneltestoleseguentiimmagini:
Questaunanota Contieneinformazioniaggiuntiveoannotazioni Questaunacautela Significadistareattenti Questounavviso Significadistaremoltoattenti Questounacuriosit Sitrattadicuriositetrucchi

10. Organizzazione di questo documento


QuestaguidafapartedelProgettodiDocumentazioneLinux(TLDP)emiraacostituirelabaseper tutti i materiali ivirintracciabili. Come talefornisce laconoscenza elementare necessaria a chi vuole iniziare alavorare con Linux edallo stesso tempo evita intenzionalmente direinventare l'acquacalda.Cospoteteattendervichequestolibrosiaincompletoepienodiriferimentiafontidi informazioniaggiuntivesulvostrosistema,suinternetenellavostradocumentazionedisistema. Il primo capitolo un'introduzione al soggetto Linux; i due successivi trattano i comandi assolutamentedibase.Icapitoli4e5spieganoalcuniargomentipiavanzatimasempredibase.Il capitolo6serveperprocedereconilrestoinquantoparladellamodificadeifile,unacapacitche bisogna acquisire per passare da principiante ad utente Linux. I successivi capitoli illustrano qualchealtroargomentopisofisticatoconcuiavreteachefarenell'usoquotidianodiLinux. 14

IntroduzioneaLinux

Tuttiicapitoli sonoforniti diesercizi checontrolleranno lavostrapreparazione perilcapitolo successivo.


Capitolo1:Cos'Linux,comenato,vantaggiesvantaggi,cosariservailfuturoperLinux, chidovrebbeusarlo,installazionesulvostrocomputer. Capitolo2:Iniziare,connettersialsistema,comandibase,dovetrovareaiuto. Capitolo3:Ilfilesystem,directoryefileimportanti,gestionedifileedirectory,protezionedei vostridati. Capitolo 4: Comprensione e gestione dei processi, procedure di avvio e spegnimento, differimentodioperazioni,operazioniripetute. Capitolo5:Cosasonoglistandardinput,outputederrorecometalicaratteristichevengono utilizzatedallalineadicomando. Capitolo6:Perchdovresteimpararealavorareconuneditor,discussionesuglieditorpi comuni. Capitolo7:Configurazionedelvostroambiente,grafico,testualeedaudio,impostazioniper gliutentiLinuxnondilinguainglese,suggerimentiperaggiungeresoftwareextra. Capitolo 8: Conversione dei file in formato stampabile, loro stampa, suggerimenti per risolvereproblemidistampa. Capitolo9:Preparazionedeidatiperilbackup,discussionesuvaristrumenti,backupremoto. Capitolo10:PanoramicasuglistrumentidireteLinuxeapplicazionipergliutenti,conbreve disquisizionesuiprogrammidaemondeiservizidibaseeconnessionidiretesicure. Capitolo11:Inquestocapitolovengonotrattatiilsuonoedilvideo,compresiVoiceoverIPe registrazionedeisuoni. AppendiceA:Qualilibridaleggereesitidavisitareunavoltaterminatalaletturadiquesto testo. AppendiceB:Unconfronto. Appendice C: Semmai doveste rimanere bloccati, queste tabelle potrebbero essere una soluzione.AncheunbuonargomentoquandoilvostrocapoinsistecheVOIdovresteusarela SUAshellfavorita. AppendiceD:Cosapotetefareconquestaguidadalpuntodivistalegale.

15

IntroduzioneaLinux

Capitolo 1. Cos' Linux?


Cominceremo con una panoramica su come Linux diventato l'attuale sistema operativo.Tratteremodeglisviluppipassatiefuturieosserveremopiattentamentei vantaggi e gli svantaggi di questo sistema. Parleremo delle distribuzioni, dell'Open SourceingeneraleeproveremoaspiegarequalcosasuGNU. Questocapitolorispondeadomandecome:

Cos'Linux? DoveecomeiniziatoLinux? Linuxunsistemadovetuttosifamediantelineadicomando? Linuxhaunfuturoosolounamontaturaesagerata? QualivantaggioffreLinux? Qualiglisvantaggi? QualitipidiLinuxcisonoecomefaccioasceglierequelloadattoame? CosasonoimovimentiOpenSourceeGNU?

1.1. Storia
1.1.1. UNIX
PercomprenderelapopolaritdiLinuxdobbiamotornareindietroneltempoacirca30annifa... Immaginatecomputergrandicomecase,oppurecomestadi.Mentreledimensionidiqueicomputer ponevanoproblemisostanziali,c'eraunacosaancorapeggiore:ognicomputeravevaundifferente sistemaoperativo.Ilsoftwarevenivasempreadattatopersvolgereunocompitodeterminatoeil softwarediundatosistemanongiravasuunaltro.Esserecapacidilavoraresudiunsistemanon significavaautomaticamentedipoterlavorareconunaltro.Eranodifficoltsiapergliutenticheper gliamministratoridisistema. Inoltre, i computer erano estremamente costosi e bisognava compiere sacrifici dopo l'iniziale acquisto anche perspiegare agli utenti come funzionavano. Ilcostototale perunitdipotenza elaborativaeraenorme. Tecnologicamente il mondo non era abbastanza avanzato, cosicch si continu con quelle dimensioniperun'altradecade.Nel1969unteamdisviluppatorideilaboratoriBellLabscominci a lavorare su una soluzione per il problema del software, dedicandosi alla questione della compatibilit.Essisvilupparonounnuovosistemaoperativocheera: 1. sempliceedelegante; 2. scrittonellinguaggiodiprogrammazioneCalpostodelcodiceassembly; 16

IntroduzioneaLinux

3. capacediriutilizzareilcodice. GlisviluppatorideiBellLabschiamaronoilloroprogettoUNIX. Lacaratteristicadipoterriutilizzareilcodicefumoltoimportante.Finoadalloratuttiisistemidi computer commercialmente disponibili erano scritti in un codice specificamente sviluppato per ognuno,UNIXdall'altrolatonecessitavasolodiunpiccolopezzodiquelcodice,oracomunemente chiamato kernel. Tale kernel l'unico pezzo di codice che bisogna adattare ad ogni specifico sistemaecostituiscelabasedelsistemaUNIX.Ilsistemaoperativoetuttelealtrefunzionierano costruiteintornoaquestokernelescritteinunlinguaggiodiprogrammazionedipialtolivello,il C. TalelinguaggiofuinparticolaresviluppatopercreareilsistemaUNIX:utilizzandoquestanuova tecnica fu molto pisemplice sviluppare unsistema operativo che potesse girare su molti tipi diversidimacchine. Ivenditoridisoftwarefuronorapidiadadattarsi,dalmomentochepotevanovenderediecivoltedi pisoftware quasi senza sforzo. Vennero inessere nuovestrane situazioni: immaginate perun momentocomputerdidiversicostruttoricomunicantisullastessareteoppureutentichelavoranosu sistemidiversisenzanecessitdi nuovistudiperusarealtricomputer.UNIXhafattomoltoper aiutaregliutentiadessereprontipercomputerdiversi. NellasuccessivacoppiadidecadilosviluppodiUNIXproseguito.Parecchiecosesonodivenute possibilidafareeparecchivenditoridihardwareesoftwarehannoaggiuntoilsupportoUNIXai loroprodotti. UNIXinizialmentesitrovavasoloinambientimoltovasticonmainframeeminicomputer(notate cheunPCunmicrocomputer).Dovevatelavorareinun'universit,perilgovernoopersociet moltofacoltosepermetterelemanisuunsistemaUNIX. Mafuronosviluppaticomputerpipiccoliedallafinedeglianni'80moltepersoneavevanodegli homecomputer.AqueltempoesistevanodiverseversionidiUNIXdisponibiliperl'architetturaPC manessunadiloroerarealmenteliberae,ancorapiimportante,eranotutteterribilmentelente, cosicchlamaggioranzadellagentefacevagirareMSDOSoWindows3.11neipropricomputer domestici.

1.1.2. Linus e Linux


Agliinizideglianni'90iPCdomesticieranofinalmenteabbastanzapotentidafargirareunoUNIX completo.LinusTorvalds,ungiovanestudentediinformaticaall'universitdiHelsinki,ritenneche sarebbestataunabuonaideaavereunqualchetipodiversioneaccademicadiUNIXliberamente disponibile,edimmediatamenteincominciaprogrammare. Eglicominciaporredelledomandepercercarerisposteesoluzionichelopotesseroaiutaread avereUNIXsulsuoPC.Quisottoc'unodeisuoprimimessaggisucomp.os.minix,datato1991: 17

IntroduzioneaLinux

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Gcc-1.40 and posix-question Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI> Date: 3 Jul 91 10:00:50 GMT Hello netlanders, Due to a project I'm working on (in minix), I'm interested in the posix standard definition. Could somebody please point me to a (preferably) machine-readable format of the latest posix rules? FTP-sites would be nice.

Sin dall'inizio lo scopo di Linus fu avere un sistema libero che fosse completamente aderente all'originaleUNIX.QuestoilmotivopercuichiedevaglistandardPOSIX,essendoPOSIXlo standardperUNIX. In quei giorni non era stato ancora inventato il plugandplay, ma cos tante persone erano interessateadavereunsistemaUNIXchequestononfuungrossoostacolo.Nuovidriverfurono residisponibilipertuttiitipidinuovohardwareadunavelocitsempremaggiore.Nonappenaun nuovocomponentehardwareeraadisposizione,qualcunolocompravaelosottoponevaalLinux test,comeprogressivamentesiandavachiamandoilsistema,rilasciandopicodiceliberoperuna gammasemprepiampiadihardware.QuestiprogrammatorinonsilimitaronoailoroPC:ogni pezzodihardwarechepotevanotrovareerautileperLinux. Quelle persone furono chiamate nerd ofreak, ma a loro non interessava altro che la lista dell'hardwaresupportatocrescessesemprepi.GrazieaquellagenteLinuxoranonsoloidealeda fargirare suinuovi PC, maanche ilsistema preferito perhardware vecchio edesotico che sarebbestatoinutilesenzal'esistenzadiLinux. DueannidopoilmessaggiodiLinusc'eranogi12000utentiLinux.Ilprogetto,popolaretragli appassionati,crebbeinfretta,rimanendopertuttoiltempolegatoaglistandardPOSIX.Tuttele caratteristichediUNIXfuronoaggiunteneisuccessividueanni,divenendocosilmaturosistema Linuxodierno.LinuxunclonetotalediUNIX,disegnatoperl'usosuworkstation,coscomeperi serverdimedioealtolivello.Oggimoltideiprincipalioperatorinelmercatohardwareesoftware hanno il proprio team di sviluppatori Linux; presso i vostri venditori locali voi potete anche acquistaresistemiconLinuxpreinstallatoinsiemealsupportoufficialesebbenecisiaancorauna quantitdihardwareesoftwarechenonsupportato.

1.1.3. Attuale utilizzazione dei sistemi Linux


OggiLinuxharaggiuntoilmercatodesktop.GlisviluppatoriLinuxsisonoconcentratisulleretie suiservizidibasecosicchleapplicazionid'ufficiosonostatel'ultimabarrieraabbattuta.Nonci piaceammetterecheMicrosoftstiaguidandoilmercatoeperciunmucchiodialternativesono sortenegliultimidueanniperrendereLinuxunasceltaaccettabilecomeworkstation,fornendouna comodainterfacciautenteedapplicazioniperufficiocompatibiliMScomeelaboratoritesti,fogli elettronici,presentazioniesimili. SullatoserverLinuxbennotocomepiattaformastabileedaffidabile,cheforniscedatabasee servizidicommercioelettronicoacompagniecomeAmazon,ilcelebrenegoziodilibrionline,le Postestatunitensi,l'Esercitotedesco edaltri ancora. Inparticolar modoiprovider internet edi servizi internet si sono appassionati a Linux impiegato come firewall, proxy e web server, e 18

IntroduzioneaLinux

trovereteunaLinuxboxadisposizionediogniamministratoredisistemaUNIXcheapprezziuna confortevolestazione digestione.Cluster (ndt.gruppi/complessi) dimacchineLinuxsono state utilizzatenellacreazionedifilmcomeTitanic,Shrekedaltri.Negliufficipostali(sonoicentri nevralgicicheinstradanolapostaenelgrandemotorediricerca)siusanoiclusterperlericerche internet.QuestisonosoloalcunidellemigliaiadicompitisvoltigiornalmentedaLinuxintuttoil mondo. E'anchedegnodinotacheilmodernoLinuxnonsologiranelleworkstation,neiservermedio grandi,maanchesuaggeggicomepalmari,portatili,vagonatediapplicazioniincorporateepuresu orologi da polso sperimentali. Ci fadiLinux l'unico sistema operativo almondo ingrado di ricoprireunacosampiagammadihardware.

1.2. L'interfaccia utente


1.2.1. Linux difficile?
SeLinuxdifficiledaapprendere,dipendedallapersonaacuivirivolgete:utentiespertidiUNIX vi diranno di no, poich Linux un sistema operativo ideale per utenti professionali e programmatoridalmomentochestatoevienesviluppatopropriodaquestepersone. E' disponibile tutto ci che possa desiderare un buon programmatore: compilatori, librerie, strumentidisviluppoecorrezione.QuestipacchettisitrovanoinqualsiasidistribuzioneLinux.Il compilatore C compreso gratuitamente diversamente da molte distribuzioni UNIX che domandanodeicompensiperl'usodiquestostrumento.Cisonotuttiidocumentieimanualie spessosonoinclusiesempiperaiutarviadiniziaresenzasprechiditempo.SembraUNIXedil passaggiodaUNIXaLinuxunacosanaturale. AiprimordidiLinuxessereunespertoeraunrequisitoperpoterutilizzareilsistema.Quelliche dominavanoLinuxsisentivamomiglioridelrestodeiluserchenonavevanoancoravistolaluce. Erapratica comune rispondere RTFM (leggete i[fottuti] manuali) aiprincipianti. Mentre i manuali si trovavano in ogni sistema, era molto difficile trovare la documentazione e sebbene qualcunolofacesse,lespiegazionieranointerminicostecnicicheilnuovoutentefacilmentesi scoraggiavadalconoscereilsistema. LacomunitdiutentiLinuxcominciacomprendereche,seLinuxdovevadiventareunimportante giocatorenelmercatodeisistemioperativi,avrebberodovutoessercialcunigrossicambiamenti nell'accessibilitdelsistema.

1.2.2. Linux per utenti non esperti


SocietcomeRedHat,SuSE eMandrivasonoimprovvisamenteapparse fornendoconfezioni di distribuzioniLinuxdestinatealconsumo dimassa.Essehannointegratounagrandequantitdi interfaccegraficheperutenti[ndt.GUI=GraphicalUserInterface]sviluppatedallacomunitper 19

IntroduzioneaLinux

facilitarelagestionediprogrammieservizi.AttualmentecomeutentiLinuxavetetuttimezziper conoscere a fondo come funziona il vostro sistema, ma non pi necessario possedere tale conoscenzaperadattareilsistemaallevostreesigenze. Oggigiorno poteteregistrarvi inmodalitgraficaedavviaretutteleapplicazionirichiestesenza necessit di battere un solo carattere, pur tuttavia mantenendo la facolt di accedere quando necessarioalcuoredelsistema.Proprioperlasuastruttura,Linuxconsenteall'utentediinteragire conilsistema:essosiadattasiaagliutentiesperticheaquelliprincipianti.Inuoviutentinonsono costrettiafarecosecomplicate,mentregliutentiveteraninondevonosforzarsidilavorarecome quandohannoiniziatoaconoscereLinux. Mentre continua losviluppo nelsettore dell'assistenza, grandi passi sono stati compiuti per gli utenti desktop, generalmente considerati come la categoria meno interessata ad apprendere il funzionamentodiunsistemaoperativo.Sviluppatoridiapplicazionidesktopstannofacendosforzi incredibiliperprodurreipibeidesktopchevoiabbiatemaivistooperfarassomigliarelevostre macchine Linux alle vostre precedenti workstation MS Windows o Apple. Gli ultimi sviluppi includonoancheilsupportoperl'accelerazione3DeperleperifericheUSB,aggiornamenticonun solo clic e pacchetti, ecc... Linux ha tutto ci e tenta di presentare tutte le sue funzionalit disponibiliinunaformalogicachesiacomprensibileancheperlagentecomune.Quisottoc'un breveelencodialcuniesempiimportanti.Questisitipresentanomolteschermatechevidaranno un'ideadiqualeLinuxsiapreferibilenelcomputerdascrivania:

http://www.gnome.org http://kde.org/screenshots/ http://www.openoffice.org http://www.mozilla.org

1.3. Linux ha futuro?


1.3.1. Open Source
L'ideadifondodelc.d.SoftwareOpenSource[ndt.=acodicesorgenteaperto]piuttostosemplice: quandoiprogrammatoripossonoleggere,distribuireemodificareunprogramma,questoarriver ad essere maturo. La gente pu adattarlo, individuarne ecorreggerne gli errori, eci ad una velocittaledaridicolizzareilrendimentodeglisviluppatoridiprogrammiappartenentiasociet convenzionali.Taleprogrammasarpiflessibileediqualitsuperiorerispettoaquellosviluppato secondo i canali tradizionali perch molte pi persone lo avranno testato nelle condizioni pi disparaterispettoacichepumaifarelosviluppatoredisoftwarechiuso. L'iniziativadell'OpenSourcehaincominciatoafarcapirecialmondocommercialee,piuttosto lentamente, i produttori commerciali stanno iniziando a considerare la questione. Mentre molti accademici e tecnici si sono convinti gi da vent'anni che questa la strada da percorrere, i venditoricommercialihannoavutobisognodiapplicazionicomeinternetpercapirelapossibilitdi realizzareprofitticonl'OpenSource.OraLinuxhasuperatolafaseincuieraquasiesclusivamente un sistema accademico, utile soltanto ad una manciata di soggetti con preparazione tecnica. 20

IntroduzioneaLinux

AttualmenteLinuxforniscequalcosadipidiunsistemaoperativo:esisteun'interainfrastrutturaa sostegno della catena disforzi dicreazione delsistema operativo, direalizzazione eprova dei programmiperesso,didistribuzionedeltuttoagliutenti,difornituradiassistenza,aggiornamenti, supporto e personalizzazione, ecc... Ora Linux pronto per la sfida in un mondo che cambia rapidamente.

1.3.2. Dieci anni di esperienza al vostro servizio


MentreLinuxprobabilmentel'iniziativaOpenSourcepinota,esisteunaltroprogettocheha contribuitoenormementeallapopolaritdiquestosistemaoperativo:sitrattadelprogettochiamato SAMBA e il suo successo la ricostruzione del c.d. Protocollo Server Message Block (SMB)/CommonInternetFileSystem(CIFS),impiegatoperfornirefileestampenellemacchinedi classe PC, nativamente supportato daMS Windows NT, OS/2 eLinux. Ipacchetti sonoora a disposizione diquasi ogni sistema eforniscono soluzioni diinterconnessione inambienti misti utilizzantiprotocolliMSWindowseserverdifileedistampacompatibiliWindows(compreso WinXP). ForsepifamosodiquelloSAMBA ilprogettodiserver HTTPApache. Ilserver girasotto UNIX,WindowsNTemoltialtrisistemioperativi.OriginariamenteconosciutocomeAPatCHy server,basatosuunprogrammaesistenteeunaseriedipatchfiles,ilnomedelcodicematuro merita di essere connotato conilnome della tribuamericana degli Apache, celebre perla sua superiore capacit nella strategia bellica e per l'inesauribile resistenza. E' stato dimostrato che Apachesostanzialmentepiveloce,pirobustoepiriccodifunzionalitrispettoamoltialtri serverdirete.Apachegirasusitivisitatidamilionidipersonealgiornoe,mentrenessunsupporto ufficialevienefornitodaglisviluppatori,lacomunitdegliutentiApacherispondeatuttelevostre domande:attualmentediverseditteesternelosupportanosulpianocommerciale. NellacategoriadelleapplicazionidaufficiovieneoffertaunasceltadiclonidellasuiteMSOffice che va da parziali ad integrali sostituti delle applicazioni disponibili nelle stazioni di lavoro [workstation] MS Windows. Tali iniziative hanno giovato assai all'accettazione di Linux nel mercatodeidesktopperchgliutentinonnecessitanodicorsiextraperimpararealavorareconi nuovisistemi.Attraversoidesktopgiungonolepreghieredegliutenticomuni,enonsoltantoquelle, maanchelelororichiesteparticolari,chesifannosemprepisofisticateenumerosedigiornoin giorno. Lacomunit Open Source, essendo formata inmaggioranza dasoggetti che hanno datoilloro contributo per oltre un quinquennio, garantisce la posizione di Linux sia come importante competitorenelmercatodeidesktop,siadelleapplicazionigeneralidell'IT.Dipendentistipendiatie volontarilavoranodiligentementeinmodosimilecosicchLinuxpossamantenereilsuopostonel mercato. Maggiori utenti, maggiori domande. Lacomunit Open Source siprodiga perfornire risposte sicure econtrolla laqualit dellestesse conocchio attento, conconseguente maggiore stabiliteaccessibilit. Elencare tuttoilsoftwareLinuxdisponibilevaoltreloscopodiquestaguidadalmomentoche esistono decine di migliaia di pacchetti. Attraverso questo corso vi presenteremo i pacchetti 21

IntroduzioneaLinux

softwarepicomuni,chesonoperlopiliberamenteutilizzabili.Pertogliereunpo'delpanicoai nuoviutenti,eccounaschermatadiunodeiprogrammipiricercati.Poteteconstataredavoistessi che non si sono risparmiati gli sforzi per far sentire come a casa gli utenti che abbandonano Windows: Figura11.IlfoglioelettronicocompatibileMSdiOpenOffice

1.4. Caratteristiche di Linux


1.4.1. Vantaggi di Linux
Molti dei vantaggi di Linux dipendono dalle sue origini, profondamente radicate in UNIX, ad eccezionenaturalmentedelprimovantaggio: Linuxgratuito Comeunabirragratis,dicono.Senonvoletespendereassolutamentenulla,non doveteneppurepagareilprezzodiunCD:Linuxpuesserescaricatointeramente dainternetinmodogratuito.Noncisonotassediregistrazione,nientecostiper utente,aggiornamentigratuitiecodicesonoliberamenteadisposizionesevolete cambiareilcomportamentodelvostrosistema.

SoprattuttoLinuxliberocomeliberalaparola: Lalicenza comunemente adottatalaGNU PublicLicense (GPL).Lalicenza 22

IntroduzioneaLinux

afferma che chiunque voglia farlo, ha il diritto di modificare Linux ed eventualmentediredistribuireunaversionemodificata,all'unicacondizionecheil codicesiaancoraadisposizionedopotaleredistribuzione,.Inpraticasieteliberi diprendereunaimmaginedelkernel,adesempioperaggiungereilsupportoperle macchinediteletrasportoodiviaggioneltempoedivendere ilvostronuovo codicepurchilvostroclientepossaavereunacopiadiquelcodice. Linuxportabilesuqualsiasipiattaformahardware Unproduttorechevogliavendereunnuovotipodicomputerenonsachegenere diOSgirersullasuanuovamacchina(siachesitrattidellaCPUdellavostraauto odellalavatrice)puprendereunkernelLinuxerenderlofunzionantesulsuo hardwaredalmomentocheladocumentazionerelativaataleattivitliberamente disponibile.

Linuxstatoprogettatoperrimaneresemprefunzionante ComeconUNIX,cisiaspettacheunsistemaLinuxrestiinesecuzionepertuttoil temposenzanecessitdiriavviarlo:ciperchunaquantitdioperazionivengono svoltedinotteorispettandoautomaticamenteorariprefissatiinaltrimomentidi calma,consentendocosunamaggioredisponibilitneiperiodidicaricomaggiore edunusopibilanciatodell'hardware.Questacaratteristicapermettediapplicare Linux in ambienti dove le persone non hanno il tempo o la possibilit di controllareiproprisistemigiornoenotte.

Linuxsicuroeversatile IlmodellodisicurezzautilizzatodaLinuxsibasasulconcettodisicurezzaUNIX, conosciutoperlasuarobustezzaelasuasperimentataqualit.MaLinuxnonsi adatta solo ad essere un baluardo contro gli attacchi nemici provenienti da internet:infattiessosiadeguaadaltresituazioniutilizzandoimedesimielevati standarddisicurezza.Lavostramacchinadisviluppoolastazionedicontrollo sarannosicurecomeilvostrofirewall.

Linuxscalabile DaunPalmtopda2MBdimemoriaadungruppodiarchiviazionedaunpetabyte con centinaia di nodi: aggiungete o togliete i pacchetti appropriati e Linux si adatteradentrambi.D'altrapartenonavetebisognodiunsupercomputer,perch potete usare Linux per grossi compiti utilizzando i mattoni forniti con il sistema.Sevoletefarecosepiccolecomelarealizzazionediunsistemaoperativo perunprocessoreintegratoosoloriciclareilvecchio486,Linuxciriusciral meglio.

IlsistemaoperativoLinuxelesueapplicazionihannotempididebugmolto brevi SiccomeLinuxstatosviluppatoeprovatodamigliaiadipersone,siaglierrori sialepersonepercorreggerlisitrovanonormalmentepiuttostoinfretta.Qualche voltaaccadechetrascorranosolodueoredallascopertaallacorrezionediunbug.

23

IntroduzioneaLinux

1.4.2. Svantaggi di Linux


Cisonotroppedifferentidistribuzioni Quot capites, tot rationes, come gi dicevano i latini: tante persone, tante opinioni.DiprimoacchitolaquantitdidistribuzioniLinuxpotrebbesembrare spaventosa o ridicola a seconda del vostro punto di vista. D'altro canto ci significacheognunotrovaquellachegliserve.Nonavetebisognodiesseredegli espertipertrovareunaversioneadatta.

Quando gli viene richiesto, generalmente ogni utente Linux risponder che la miglior distribuzione quella specifica versione che sta usando. Cos quale andrebbe scelta? Non preoccupatevi eccessivamente di ci: tutte le versioni contengonopiomenolostessocomplessodipacchettibase.Oltreaquest'ultimi, vengonoaggiuntisoftwarediterzepartirendendocos,adesempio,TurboLinux piadattaallapiccolaemediaimpresa,RedHatperiservereSuseLinuxperle workstation.Comunqueledifferenzesono,ilpidellevolte,solosuperficiali.La migliorstrategiaquelladiprovareunacoppiadidistribuzioni:peccatochenon tutti abbiano il tempo per questa prova. Fortunatamente esiste una marea di consigli sull'argomento della scelta del vostro Linux. Una rapida ricerca su Google utilizzando le parole choosing your distribution [ndt. scelta della distribuzione] vi dar oltre una decina di collegamenti a buoni suggerimenti. L'InstallationHOWTOtrattaanchedellasceltadelladistribuzione. Linuxnonmoltofacileeconfondeinuoviutenti VadettocheLinux,perlomenoilnucleodelsistema,menosemplicerispettoa MSWindowsesicuramentemoltopicomplicatodiMacOS,ma...allalucedella suapopolaritsonostaticompiutisforziconsiderevoliperrendereLinuxsempre pifaciledausare,specialmenteperinovizi.Semprepiinformazionivengono rilasciatequotidianamente,comequestaguida,peraiutareacolmareladisparit didocumentazionedisponibilepergliutentidituttiilivelli.

UnprodottoOpenSourceaffidabile? Come pu una cosa che gratuita essere anche affidabile? Gli utenti Linux possonosceglierediusarloofareameno,cosachedaloroungrossovantaggio rispettoagliutentidisoftware proprietario,chenonposseggonoquestotipodi libert. Dopo lunghi periodi di prova, molti utenti Linux giungono alla conclusionecheLinuxnonsolovalidomainmolticasimiglioreepiveloce delle soluzioni tradizionali. Se Linux non fosse stato affidabile, sarebbe scomparsomoltotempofa,senzaconoscerelapopolaritodiernaconmilionidi utenti.Oragliutentipossonomodificareiproprisistemiecondividereleproprie osservazioniconlacomunit,cosicchilsistemamiglioradigiornoingiorno.E' un progetto non completato, questo vero, ma in un mondo in continua evoluzioneLinuxunprogettochecontinuaacompetereperlaperfezione.

24

IntroduzioneaLinux

1.5. Sapore di Linux


1.5.1. Linux e GNU
SebbeneesistaungrannumerodiversionidiLinux,troveretemoltesimilitudinitraledifferenti distribuzioni,poichognimacchinaLinuxcomeunmucchiodimattonichepoteteposizionare assiemeseguendolevostreesigenzeegusti.Installareilsistemasolol'iniziodiunarelazionea lungotermine:nonappenapensatediavereinbelsistemafunzionante,Linuxstimolerlavostra immaginazioneecreativitepicapiretelapotenzachevivieneoffertadalsistemaepicercherete diridefinireisuoilimiti. Linuxpuapparirediversoasecondadelladistribuzione,dell'hardwareedelgustopersonalemale basisucuisifondanotutteleinterfacce,graficheomeno,rimangonolemedesime.IlsistemaLinux basatosuglistrumentiGNU(Gnu'sNotUnix),chefornisconouninsiemedimetodicomuniper maneggiarloedusarlo.TuttiglistrumentiGNU[ndt.:GNUtools]sonoasorgenteapertocosicch possonoessereinstallatisuqualsiasisistema.Moltedistribuzionioffronopacchettiprecompilatidi strumentimoltocomuni,comeipacchettiRPMdiRedHatoquelliDebian(chiamatianchedebo dpkg)diDebian,inmanierachenondoveteesseredeiprogrammatoriperinstallareunpacchetto nel vostro sistema. Comunque, se vi piace fare da voi stessi, godrete di Linux al meglio dal momentochemoltedistribuzionisonofornitediuninsiemecompletodistrumentidisviluppo,che consentonodiinstallarenuovosoftwaresemplicementedalcodicesorgente.Talemodalitpermette diinstallareprogrammianchesenonesistonogipreparatiperilvostrosistema. UnelencodiprogrammiGNUcomuni:

Molte applicazioni commerciali sono disponibili per Linux (per maggiori informazioni su tali pacchetticiriportiamoallalorospecificadocumentazione).Attraversoquestaguidanoitratteremo 25

Bash:lashellGNU GCC:ilCompilatoreCdiGNU GDB:ilDebuggerGNU Coreutils:uninsiemediutilitybaseinstileUNIX,comels,catechmod Findutils:percercareetrovarefile Fontutils:perconvertirefontdaunformatoadunaltroepercrearnedinuovi TheGimp:GNU Image Manipulation Program [Programma GNU diManipolazione delle Immagini] Gnome:l'ambientedesktopGNU Emacs:uneditormoltopotente GhostscripteGhostview:interpreteefrontendgraficoperifilePostScript. GNUPhoto:programmaperinteragireconlemacchinefotografichedigitali. Octave: un linguaggio di programmazione destinato in primo luogo a svolgere calcoli numericiedelaborazionidiimmagini. GNUSQL:sistemadidatabaserelazionale Radius:serverremotodiautenticazioneegestioneaccount. ...

IntroduzioneaLinux

solodiprogrammiliberamentedisponibili,forniti(perlamaggiorparte)dilicenzaGNU. Per installare pacchetti cancellati onuovi avrete bisogno diuna qualche forma digestione del software:lepicomunisonoRPMedpkg.RPMilRedHatPackageManager[gestoredipacchetti RedHat] utilizzatodasvariati sistemiLinuxnonostanteilnomenonlolascipensare.Dpkgil sistemadigestionepacchettidiDebianchefausodiun'interfacciachiamata aptget ingradodi gestireanche ipacchettiRPM.NovellXimianRedCarpetunaimplementazionediRPMcon interfaccia grafica provenientedaunaterza parte.Altriproduttori disoftware possonoaverele proprie procedure d'installazione, qualche volta somiglianti a InstallShield od altri programmi simili,notiinMSWindowsedaltrepiattaforme.QuandosaretepiespertidiLinuxavreteache farefacilmenteconunoopidiquestiprogrammi.

1.5.2. GNU/Linux
IlkernelLinux(leossadelvostrosistema,v.Sezione3.2.3.1)nonfapartedelprogettoGNUma adottalastessalicenzadelsoftwareGNU.Lagrandemaggioranzadiprogrammi diutilitedi strumentidisviluppo(lacarnedelvostrosistema),chenonspecificaLinux,trattadalprogetto GNU.Poichqualsiasisistemausabiledeveaveresiailkernelcheuninsieme,ancheminimo,di utility,alcunepersoneaffermanochequestosistemadovrebbeesseredefinitosistemaGNU/Linux. Perottenereilmaggiorgradopossibilediindipendenzatradistribuzioni,tratteremoquestogenere di Linux in questo corso. Quando nonparleremo diunsistema GNU/Linux, provvederemo ad indicarelaspecificadistribuzione,laversioneoilnomedelprogramma.

1.5.3. Quale distribuzione dovrei installare?


Prima dell'installazione, il fattore pi importante il vostro hardware. Dal momento che ogni distribuzioneLinuxcontieneipacchettibaseepuessererealizzataperadattarsiaquasituttele richieste(inquantoesseusanotutteilkernelLinux),avetesolobisognodicapireseladistribuzione girersullavostramacchina.LinuxPPC,peresempio,statoconcepitoperfunzionaresuAppleed altriPowerPCenongirasunormaliPCbasatisux86.LinuxPPCfunzionasuinuoviMacmanon utilizzabilesualtripivecchiconsorpassatatecnologiadelbus.Altrocasocomplicatol'hardware Sun, che potrebbe essere una vecchia CPU SPARC oppure una pirecente UltraSparc: queste richiedonodifferentiversionidiLinux. AlcunedistribuzionidiLinuxsonoottimizzatepercertiprocessori,comelaCPUAthlon,mentre contemporaneamentefunzionerannoinmododecentesuprocessoriIntel486,586e686standard. Talvolta le distribuzioni per certe CPU speciali non sono affidabili perch provate da poche persone. MoltedistribuzioniLinuxoffronouninsiemediprogrammiperPCgenericiconpacchettispeciali contenentikernelottimizzatiperleCPUbasatesuIntelx86.Talidistribuzionisonobentestatee mantenute regolarmente, focalizzate su una affidabile realizzazione per server e su semplici procedure di installazione ed aggiornamento. Esempi sono Debian, Ubuntu, Fedora, SuSE e 26

IntroduzioneaLinux

MandrivachesonodigranlungaipipopolarisistemiLinuxesonoingenereconsideratisemplici dagestireperl'utenteprincipiante,mentrenonimpedisconoaiprofessionistidiottenereilmassimo dailorocomputerLinux.Linuxgiradecentementeanchesuiportatiliesuiserverdimediolivello.I driverperilnuovohardwarevengonoinclusisolodopoproveapprofondite,cosacheaccrescela stabilitdiunsistema. MentreildesktopstandardsuunsistemapotrebbeessereGnome,unaltropotrebbeoffrireKDEdi base.GeneralmentesiaGnomeeKDEsonodisponibiliintutteleprincipalidistribuzioniLinux. Altrigestoridifinestreedesktopsonoadisposizionedegliutentipiavanzati. Ilprocesso diinstallazione standard consente agli utenti discegliere tradifferenti impostazioni base,comequellaworkstationincuituttiipacchettinecessariall'usoquotidianoeperlosviluppo, ocomequellaserverincuimoltepliciservizidiretepossonoessereselezionati.Gliutentiesperti possonoinstallarequalsiasicombinazionedipacchettichedesideranoduranteilprocessoinizialedi installazione. L'obbiettivo diquesta guida diapplicarsi atutte ledistribuzioni Linux. Per vostra comodit, comunque,siconsigliavivamentecheiprincipiantisiaffidinoadunadelledistribuzioniprincipali, chesupportanotuttol'hardwarecomuneeleapplicazionidibase.Quelleseguentisonoottimescelte perinovizi:

FedoraCore Debian SuSELinux Mandriva(inprecedenzaMandrakeSoft) Knoppix: un sistema operativo che funziona dal vostro CDROM senza la necessit di installarealcunch.

ImmaginiISOscaricabilisipossonotrovaresuLinuxISO.org.Leprincipalidistribuzionipossono essereacquistatepressoqualsiasidecentenegoziodicomputer.

1.6. Sommario
Inquestocapitoloabbiamoappresoche:

LinuxunaspeciediUNIX. IlsistemaoperativoLinuxscrittonellinguaggiodiprogrammazioneC. Degustibusetcoloribusdisputandumnonest:esisteunLinuxperciascuno. LinuxutilizzaglistrumentiGNU,uncomplessodistrumentistandardliberamentedisponibili perlamanipolazionedelsistemaoperativo.

27

IntroduzioneaLinux

1.7. Esercizi
Un esercizio pratico per chi inizia: installate Linux nel vostro PC. Leggete il manuale di installazionedellavostradistribuzionee/ol'InstallationHOWTOeprocedete. Leggeteladocumentazione! Molti errori vi bloccano per non aver letto le informazioni fornite durante l'installazione. Leggere perci con attenzione i messaggi di installazione il primo passosullastradadelsuccesso. CosedasaperePRIMAdiiniziareun'installazionediLinux: Questadistribuzionegirersulvostrohardware? Controllatesuhttp://www.tldp.org/HOWTO/HardwareHOWTO/index.htmlincasodidubbi circalacompatibilitdelvostrosistema. Che genere di tastiera possiedo (numero di tasti, formato)? Che tipo di mouse (seriale/parallelo,numerodipulsanti)?QuantiMBdiRAM? Installerunaworkstationbaseounserver,oppuredovrselezionaredamestessopacchetti specifici? Installerdalmiodiscorigido,daunCDROMoattraversolarete?DovradeguareilBIOS perciascunodiquesti?Ilmetododiinstallazionerichiedeundiscodiavvio? Linuxsarl'unicosistemaoperativosulcomputeroppuresiprocederadun'installazioneper l'avviodiduesistemialternativamente?Dovrcreareunagrandepartizioneperinstallarepi avantideisistemivirtualioquestaessastessaun'installazionevirtuale? Ilcomputerinrete?Qualilsuonomedihost,ilsuoindirizzoIP?C'qualcheserver gatewayoaltraimportantemacchinainreteconcuicomunicare? Linuxsiattendediesserecollegatoinrete Nonutilizzarelareteoconfigurarlainmodosbagliatopucausareunavviolento. Ilcomputerungateway/router/firewall?(Seviponetequestadomanda,probabilmentenon lo). Partizionamento:perquestavoltalasciatesvolgereilcompitoalprogrammadiinstallazione: tratteremo le partizioni in dettaglio nel Capitolo 3. Esiste documentazione specifica del sistema da installare se volete sapere tutto di esso. Se la vostra distribuzione Linux non consente il partizionamento automatico, significa probabilmente che non adatta ai principianti. Questamacchinasiavvierinmodalittestoografica? Pensateadunabuonaparolachiaveperl'amministratorediquestamacchina(root).Createun accountdiutentenonroot(accessononprivilegiatoalsistema). Hobisognodiundiscodiripristino[rescuedisk]?(operazioneraccomandata) Chelinguavoglio?

Tutta la lista di controllo si pu trovare su http://www.tldp.org/HOWTO/Installation HOWTO/index.html. Neisuccessivicapitoliscopriremosel'installazioneandataabuonfine. 28

IntroduzioneaLinux

Capitolo 2. Avvio rapido


Pertrarreilmassimodaquestaguida,cominceremosubitoconuncapitolopraticosulla connessioneadunsistemaLinuxcompiendoalcuneoperazionifondamentali. Tratteremodi: Connessionealsistema Disconnessionedalsistema Modalittestoegrafica Cambiodellapassword Navigazionenelfilesystem Determinazionedeltipodifile Osservazionineifileditesto Ricercadiaiuti

2.1. Connettersi, attivare l'interfaccia utente e disconnettersi


2.1.1. Introduzione
PerlavoradirettamenteinunsistemaLinuxavretebisognodiunnomeutenteediunapassword. Dovretesempreautenticarvinelsistema.Comegiricordatonell'eserciziodelCapitolo1,molti sistemi Linux basati suPChannoduemodalit fondamentali peravviarsi: oinrapida esobria modalit console testuale, che sembra come il DOS con mouse, dotata di caratteristiche multitasking emultiutente, oinquellagrafica chehaunaspetto migliore masottraemoltepi risorsedisistema.

2.1.2. Modalit grafica


Oggigiorno lamodalitstandardsullamaggiorpartedeicomputerdesktop.Voisapetechevi connetteretealsistemautilizzandolamodalitgraficadopochevisarstatorichiestoperprima cosailnomeutenteepoilapassword. Perautenticarvi,assicuratevicheilpuntatoredelmousesianellafinestradilogin,forniteilvostro nomeutenteepasswordalsistemaepremeteOKoiltastoInvio. Attenticonquell'accountdiroot! Generalmente considerata una pessima idea connettersi (in grafica) utilizzando il nomeutenteroot,l'accountdell'amministratoredelsistema,dalmomentochel'usodella graficacomprendel'avviodiunaquantitextradiprogrammi,incasodiutenterootcon 29

IntroduzioneaLinux

un sacco di permessi extra. Per mantenere il rischio pi basso possibile, usate un accountdiutentenormaleperconnettervigraficamente.Cisonocostantirischinel connettersiconaccount root checonvienetenereinmentecicomeregolagenerale: connettetevicomerootsoloquandoservonoprivilegiextra. Dopo aver inserito la combinazione nome/password, necessario attendere un attimo prima dell'avviodell'ambientegrafico,inbaseallavelocitdellaCPUdelvostrocomputer,alsoftware cheutilizzateedalleimpostazionipersonali. Percontinuaredovreteaprireunaterminalwindow[finestraditerminale]oxterminbreve(Xil nomedelsoftwarechesupportailsottostanteambientegrafico).Taleprogrammasiputrovare sottoApplicazioni>UtilitFile,StrumentidiSistemaoilmenuInternet,asecondadelgestoredi finestra impiegato. Potrebbero esserci delle icone da usare come scorciatoia per ottenere una finestraxterm,coscomepremendoiltastodestrodelmousesullosfondonormalmenteapparirun menucontenenteunaapplicazionedifinestraditerminale. Scorrendoimenunoteretechesipossonofaremoltecosesenzaintrodurrecomandiviatastiera.Per moltiutentiandrbeneilbuonvecchiometododigestireilcomputerpunta_e_clicca.Maquesta guidadestinataaifuturiamministratoridireteedisistema,iqualidovrannooccuparsidelcuore delsistema.Essinecessitanodiunostrumentopiavanzatorispettoalmousepergestiretuttii compiti chedovrannoaffrontare. Talestrumentolashelle,trovandoci inmodalitgrafica, la attiveremoaprendounafinestraditerminale. La finestra di terminale il vostro pannello di controllo del sistema. Quasi tutte le seguenti operazionisarannosvolteutilizzandoquestosemplicemapotentestrumentotestuale.Unafinestra di terminale dovrebbe sempre mostrare il prompt dei comandi alla sua apertura. Il seguente terminale mostra un prompt standard, che fa apparire il nome di login dell'utente e l'attuale directorydilavoro,rappresentatadallatilde(~): Figura21.Finestraditerminale

Un'altraformacomuneperunpromptquesta:
[utente@host dir]

Nell'esempiosoprastante, utenteilvostronomedilogin, hostilnomedelcomputersucuistate 30

IntroduzioneaLinux

lavorandoedirun'indicazionedell'attualelocazionenelfilesystem. Pi avanti tratteremo dettagliatamente dei prompt e del loro comportamento: per adesso sufficiente sapere che essi posso mostrare ogni tipo di informazione ma non fanno parte dei comandichedatealsistema. Perdisconnettervidalsistemainmodalitgraficadovetechiuderetuttelefinestrediterminaleele altreapplicazioni.Dopodicipremetel'iconadilogoutocercateLogOutnelmenu.Inrealt chiuderetuttononnecessarioeilsistemapufarloalpostovostro,mailgestoredisessione potrebbe riportare tutte le applicazioni attualmente aperte di nuovo a video nel successivo collegamento, rallentando il sistema, effetto questo non sempre desiderato. Comunque tale comportamentoconfigurabile. Quandovedretedinuovolaschermatadiloginrichiederenomeutenteepassword,capiretechela disconnessionehaavutosuccesso. GnomeoKDE? AbbiamocitatogiunpaiodivolteidesktopGnomeeKDE.Sitrattadeiduemodipi diffusiperlagestionedelvostrodesktop[scrivaniaelettronica],sebbeneneesistano altri,moltialtri.Qualsiasidesktopscegliatediutilizzare,vabene(sesapetecomeaprire unafinestraditerminale).ComunquecontinueremoafareriferimentosiaaGnomeche aKDEqualimodipipopolaripersvolgeredeterminaticompiti.

2.1.3. Modalit testo


Capiretediessere inmodalit testoquando l'intero schermo sarneroconcaratteri (perlopi bianchi). Uno schermo di login in modo testuale mostra tipicamente alcune informazioni sulla macchinaconcuistatelavorando,ilnomediquestaeunpromptcheviattendeperl'autenticazione:
RedHat Linux Release 8. (Psyche) blast login: _

IllogindiversodaquellograficoinquantodovetebattereiltastoInviodopoaverfornitoilvostro nomeutentepoichnoncisonopulsantisulloschermodaschiacciareconilmouse.Subitodopo dovetescriverelavostrapasswordseguitadaunaltroInvio:nonvedretealcunaindicazionedici chestatedigitando,neppureunasterisco,enonvedreteilcursoremuoversi.Questocomportamento normalesottoLinuxedstatofattoperragionidisicurezza. Una volta che il sistema vi haaccettato come utente valido, potrete eventualmente avere altre informazioni,chiamatemessaggiodelgiorno(messageoftheday).Inoltrefrequenteneisistemi UNIX mostrare un biscotto della fortuna (fortune cookie) contenente alcuni pensieri saggi o strampalati (ci spetta a voi). Dopo di questo, avrete a disposizione una shell, indicata con il medesimopromptcheotterresteinmodalitgrafica. Nonautenticatevicomeroot 31

IntroduzioneaLinux

Anche in modalit testo: autenticatevi come root solo per operazioni di setup e configurazione che richiedano assolutamente i privilegi di amministratore, come l'aggiuntadiutenti,l'installazionedipacchettidiprogrammi,ilfunzionamentodellarete edaltreconfigurazionidisistema.Unavoltaterminato,abbandonateimmediatamentelo speciale account e riprendete il vostro lavoro come utente non privilegiato. In alternativa,alcunisistemi,comeUbuntu,vicostringonoadutilizzare sudo,cosicch nonavetenecessitdiaccederedirettamenteall'accountamministrativo. LadisconnessionesiesegueinserendoilcomandologoutseguitodaInvio:saretedisconnessicon successodalsistemaquandovedretenuovamentelaschermatadilogin. Ilpulsantedispegnimento DalmomentochenonhasensospegnereLinuxsenzaapplicarelecorretteproceduredi spegnimentodelsistema,lapressionedeltastodiaccensioneequivaleadavviarequelle proceduresusistemipinuovi.Comunque,spegnereunvecchiosistemasenzaeseguire ilprocessodichiusurapucausaregravidanni!Sevoleteesserealsicuro,utilizzate sempre l'opzione di spegnimento quando chiudete dall'interfaccia grafica oppure, quandosieteallaschermata diautenticazione(incuidoveteindicare ilvostronome utenteelaparolachiave),cercateunbottonedispegnimento. Orachesappiamocomeconnetterciedisconnettercidalsistema,siamoprontiperinostriprimi comandi.

2.2. Rudimenti essenziali


2.2.1. I comandi
Questisonoquelliimmediaticheciservonoperiniziare;litratteremomegliopiavanti. Tabella21.Comandidiavviorapido Comando ls cddirectory passwd filenomefile catfiletesto pwd exitologout Significato Mostraunelencodeifilecontenutinelladirectorydilavoroattuale,comeil comandodirdelDOS cambiodirectory cambiodellapassworddell'utentecorrentemente mostrailtipodifilediquellochiamatonomefile faappariresulloschermoilcontenutodifiletesto mostraladirectorydilavoroattuale abbandonalasessione

32

IntroduzioneaLinux

Comando mancomando infocomando

Significato leggelepaginemanrelativeacomando leggelepagineinforelativeacomando

aproposstringa cercaneldatabasewhatislastringa

2.2.2. Annotazioni generali


Scrivete questi comandi dopo il prompt in una finestra di terminale, in modalit grafica o in modalittesto,seguitidaInvio. I comandi possono essere eseguiti da soli, come il comando ls. Un comando si comporta differentementequandosiaggiungeuna opzione,normalmenteprecedutadaunsegnomeno(), comelsa.Ilmedesimocaratterediopzionepuassumeresignificatidiversiconaltricomandi.I comandiGNUaccettanoopzioniestese,precedutedaduemeno(),comelsall.Alcunicomandi nonhannoopzioni. L'argomentodiuncomandounaprecisazionecircal'oggettosucuivoletecheilcomandoagisca: unesempio ls /etc,doveladirectory /etc l'argomentodelcomando ls. Ciindicache volete vedere il contenuto di quella directory, invece di quella normale ottenibile battendo il semplice comando ls seguito da Invio. Qualche volta i comandi richiedono degli argomenti, qualchealtragliargomentisonosoloopzionali. Potete scoprire se un comando accetta opzioni e argomenti, e quali di questi sono validi, controllandogliaiutiinlineaperquelcomando(v.Sezione2.3). InLinux,comeinUNIX,ledirectorysonoseparateutilizzandodellebarre(/)comequelleusateper gliindirizzidirete(URL):piavantitratteremolastrutturadelledirectoryapprofonditamente. Isimboli.e..hannounsignificatospecialequandoriguardanoledirectory:proveremoascoprirlo congliesercizieancorpinelprossimocapitolo. Cercatedievitarediautenticarviodiusarel'accountdiamministratore root.Oltreasvolgereil vostronormalelavoro,molticompiti,inclusiilcontrollodelsistema,laraccoltadiinformazioni, ecc.,possonoessereeseguiticonunaccountdiutentenormalesenzaalcunanecessitdipermessi speciali.Senecessario,peresempioquandocreateunnuovoutenteoinstallatenuovosoftware,il modopreferibileperottenerel'accessodirootattraversoloscambiodegliIDdiutente(v.Sezione 3.2.1perunesempio). Quasituttiicomandidiquestolibropossonoessereeseguitisenzaiprivilegisiamministratoredi sistema. In molti casi quando date un comando o avviate un programma come utente non privilegiato,ilsistemaviavvisaovipresentalarichiestadellapassworddirootsenecessario l'accessodiroot.Unavoltafatto,abbandonateimmediatamentel'applicazioneolasessionechevi 33

IntroduzioneaLinux

hafornitoiprivilegidiroot. Leggereladocumentazionedovrebbediventarelavostrasecondanatura.Specialmenteall'inizio importanteleggereladocumentazionedisistema,imanualideicomandibase,gliHOWTOecos via.Dalmomentochelaquantitdidocumentazionecosvasta,impossibileinseriretuttala relativadocumentazione.Questolibroproveraorientarviversoladocumentazionepiappropriata suogniargomentotrattatoperstimolareanchel'abitudinealeggerelepagineman.

2.2.3. Usare le caratteristiche di Bash


Alcunecombinazionispecialiditastiviconsentonodifarecosepifacilmenteepirapidamente conlashellGNU,Bash,laqualesitrovapresentedinormainquasituttiisistemiLinux(v.Sezione 3.2.3.2).Quisottoc'unalistadellefunzionipiutilizzate:sietefortementeconsigliatiadabituarvi allorousoinmododaottenereilmassimodiesperienzaLinuxsindalprincipio. Tabella22.CombinazioniditastiinBash Tastoocombinazioneditasti Ctrl+A Ctrl+C Ctrl+D Ctrl+E Ctrl+H Ctrl+L Ctrl+R Ctrl+Z FrecciaSinistrae FrecciaDestra FrecciaSueFrecciaGi Maiuscolo+PaginaSue Maiuscolo+PaginaGi Tab Funzione Muoveilcursoreall'iniziodellalineadicomando. Terminaunprogrammaattivoeritornaalprompt(v.Capitolo4). Disconnessionedallacorrentesessionedishell:corrispondealla scritturadiexitologout. Spostailcursoreinfondoallalineadicomando. Generauncaratteredibackspace[cancellazioneall'indietro]. Pulisceilterminale. Ricercanellacronologia[history]deicomandi(v.Sezione 3.3.3.4). Sospendeunprogramma(v.Capitolo4) Spostailcursorediunospazioasinistraoadestrasullalineadi comandoinmodochepoteteinserirecaratteriinaltripostioltre aquellid'inizioefine. Scorrelacronologia[history]deicomandi.Andateallalineache voleteripetere,modificateidettaglisenecessarioepremete Invioperrisparmiaretempo. Scorreilbufferditerminale(pervedereiltestocheha spostatoloschermo). Completamentodicomandionomidifile:quandosonopossibili piscelte,ilsistemavelosegnalerconunsegnalesonoroo visivo,altrimenti,selesceltesonotroppe,vichiedersevolete vederetuttequante.

34

IntroduzioneaLinux

Tastoocombinazioneditasti TabTab

Funzione Mostralepossibilitdicompletamentodifileocomandi.

Leultimeduevocinellasoprastantetabella richiedonoalcunespiegazioniextra.Peresempio,se volete spostarvi nella directory directory_dal_nome_piuttosto_lungo, non dovete digitareassolutamentetuttoquellunghissimonome.Dovetesolobatterenellalineadicomandocd direpoipremereiltastoTab:lashellprovvedereacompletareilnomepervoisenonesistonoaltri filecheinizianoconglistessitrecaratteri.Naturalmentesenonesistonoaltreparolecheiniziano cond,allorapotetedigitaresolamente cdd epoi Tab.Sepidiunfileiniziaconglistessi caratteri,lashellvelosegnaler,dopodichepotretebattereduevolte Tab diseguitoelashell mostrerlesceltedisponibili:
vostro_prompt>cdst starthere stuff stuffit

NelesempioquisoprasedigitereteadopoiprimiduecaratteriebattereteTabnuovamente,non rimarranno altre possibilit e la shell completer il nome della directory senza costringervi a scriverelastringarthere:
vostro_prompt> cd starthere

NaturalmentedovretepremereInvioperaccettarelascelta. Nellostessoesempio,sedigitateuepoibattete Tab, la shellaggiungerffpervoi,mapoi protester nuovamente perch sono possibili piscelte. Premendo ancora Tab Tab,vedrete le scelte;sebattereteunoopicaratteri,inmododarendeunivocalasceltaalsistema,e Tab di nuovo(oEnterquandoaveteraggiuntolafinedelnomedelfiledavoiscelto),lashellcompleter ilnomedelfileevisposterinquelladirectorysenaturalmentesitrattadiunnomedidirectory. Cifunzionacontuttiinomideifilechesonoargomentideicomandi. Lastessacosasuccedeperilcompletamentodeinomideicomandi.Digitando ls ebattendodue volte il tasto Tab,apparir l'elenco di tuttiicomandi del vostro PATH (v. Sezione 3.2.1) che inizianoconquelleduelettere:
vostro_prompt> ls ls lsdev lspci lsattr lsmod lspgpot lsb_release lsof lsraid lspnp lsw lss16toppm lsusb

35

IntroduzioneaLinux

2.3. Cercare aiuto


2.3.1. State attenti
GNU/Linuxtuttotesoadiventarepiautoesplicativo.E,comeconsuetudineconquestosistema, ci sono diversi modi per raggiungere lo scopo. Un modo comune per ricevere aiuto trovare qualcunochesappiae,sebbenelacomunitdiutentiLinuxsiapazienteedamantedellapace,quasi tuttisiaspetterannocomunquechevoiabbiategiprovatounoopimetodidiquestasezioneprima diinterpellarli:imodiincuivieneespressoquestopuntodivistapossonoesserepiuttostobruschi senondimostratediaverseguitoquestaregolafondamentale.

2.3.2. Le pagine man


Molti principianti temono lepagine man (manuale), perch esse sono unafonte travolgente di documentazione.Questepersonobenorganizzate,comepotreteverificarenell'esempioseguente: manman. Laletturadellec.d. manpages sieffettua normalmenteinunafinestraditerminale(inmodalit grafica)osemplicementeinmodalittestoselopreferite.Dopoilpromptscrivetequestocomando seguitodaInvio:
vostronome@vostrocomp ~> man man

LadocumentazionedimanapparirsulloschermodopoaverpremutoInvio:
man(1) man(1)

NOME man - formatta formatta e mostra le pagine di guida in linea manpath - determina i percorsi di ricerca dell'utente pagine di guida SINTASSI man [-acdfFhkKtwW] [-m sistema] [-p stringa] [-C file_configurazione] [-M percorso] [-P impaginatore] [-S lista_sezioni] [sezione] nome ... DESCRIZIONE man formatta e mostra le pagine di guida in linea. Questa versione riconosce le variabili d'ambiente MANPATH e (MAN)PAGER, in modo da avere il proprio insieme di pagine di guida e scegliere il programma preferito per leggere le pagine formattate. Se sezione specificata, man cerca solamente in quella sezione del manuale. Si pu anche specificare l'ordine di ricerca delle sezioni e quale preprocessore utilizzare tramite un'opzione della riga di comando o variabile d'ambiente. Se nome contiene un carattere /, allora questo viene prima provato come se fosse il nome di un file, in modo da poter fare man ./foo.5 o anche man /cd/foo/bar.1.gz. OPZIONI -C file_configurazione Specifica il file man.config da usare; il valore /usr/lib/man.config (vedere man.config(5)). di default per le

36

IntroduzioneaLinux

lines 1-27

Passate alla pagina successiva con la barra spaziatrice. Potete ritornare alla pagina precedente usandoiltasto b.Disolito,quandoarrivateallafine, mansiinterrompeeviritrovatealprompt. Premeteqsevoletelasciarelapaginamanprimadeltermineoseilprogrammadivisualizzazione nonsifermaautomaticamenteallafine. Paginatori Lecombinazionidisponibiliditastiperlamanipolazionedellepaginemandipendono dal paginatore (pager)utilizzatodallavostradistribuzione.Moltedistribuzioniusano lesspervisualizzareescorrereavantieindietrolepagineman.(v.Sezione3.3.4.2per maggioriinformazionisuipaginatori). Ogni pagina man contiene abitualmente unacoppia di sezioni standard, come possiamo notare nell'esempiodimanman:

La prima riga contiene il nome del comando di cui state leggendo e l'identificativo(id)dellasezioneincuisitrovaquestapaginaman.Lepagine mansonoordinatepercapitoli.Icomandihannofacilmentepipagine, per esempio la pagina man della sezione utente, quella della sezione di amministratoredisistemaequelladellasezionedelprogrammatore. Vengonofornitiilnomedelcomandoeunabrevedescrizionecheservonoper costruireunindicedipagineman:potetecercarequalsiasistringanell'indice tramiteilcomandoapropos. Lasintassidelcomandofornisceunaannotazionetecnicaditutteleopzionie/o argomenti accettabili. Potete pensare ad un'opzione come ad un modo di eseguire ilcomando. L'argomento ildestinatario dell'elaborazione. Alcuni comandi non hanno n opzioni, n argomenti. Opzioni e argomenti non necessarisonopostitra[e]perindicarechepossonoesseretralasciati. Vienefattaunadescrizionepilungadelcomando. Vengonoelencateleopzioniconlelorodescrizioni.Leopzioninormalmente possonoesserecombinateassieme:secinonpossibilevivienesegnalatoda questasezione. VARIABILI D'AMBIENTE descrive levariabili dishell cheinfluenzano il comportamentodiquestocomando(nontutticel'hanno). Qualchevoltacisonodellesezionispecifichedelcomando. LasezioneVEDEREALTROcontieneriferimentiadaltrepagineman.Tra parentesi c' il numero della sezione di pagine man in cui si trova questo comando.Gliutenti esperti spessoaccedonoallaparteVEDERE ALTRO utilizzandoilcomando/seguitodallastringaVEDedaInvio. Normalmentecisonoancheinformazionisuibachi(bug)noti(anomalie)esu comesegnalarnedinuovidavoieventualmenteriscontrati. Potrebberoesserciancheleinformazionicircal'autoreeidiritti.

Alcunicomandihannonumerosepagineman.Peresempio,ilcomandopasswdhaunapaginaman 37

IntroduzioneaLinux

nella sezione 1edun'altra nella 5.Normalmente viene mostrata lapagina man con il numero minore.Sedesideratevedereun'altrasezionerispettoaquellasolita,dovetespecificarladopoil comandoman: man5 passwd Seinvecevoletevederetuttelepaginemandiuncomando,unadopol'altra,usateaconman: man-a passwd Talemodalit,raggiuntoilterminedellaprimapaginamanepremendodinuovoSPAZIO,verr mostratalapaginamandellasezionesuccessiva.

2.3.3. Maggiori informazioni


2.3.3.1. Le pagine Info
Oltreallepagineman,poteteleggerelepagineInfodiuncomandousandoilcomandoinfo.Queste contengonodisolitoinformazionipirecentiesonoperqualcheversopisemplicidausare.Le paginemandialcunicomandirimandanoaquelleInfo. Cominciatedigitandoinfoinfoinunafinestraditerminale:
File: info.info, Node: Top, Next: Getting Started, Up: (dir)

Info: An Introduction ********************* The GNU Project distributes most of its on-line manuals in the "Info format", which you read using an "Info reader". You are probably using an Info reader to read this now. If you are new to the Info reader and want to learn how to use it, type the command `h' now. It brings you to a programmed instruction sequence. To read about expert-level Info commands, type `n' twice. This brings you to `Info for Experts', skipping over the `Getting Started' chapter. * Menu: * Getting Started:: Getting started using an Info reader. * Expert Info:: Info commands for experts. * Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. --zz-Info: (info.info.bz2)Top, 24 lines --Top---------------------------------Welcome to Info version 4.3. Type C-h for help, m for menu item.

Usateitastifrecciapermuovervineltestoeperspostareilcursoresuunalineacheiniziaconun asterisco,contenentel'argomentodicuivoleteinformazioni,epoipremeteInvio.UtilizzateitastiP eNperandareall'argomentoprecedenteosuccessivo.Labarraspaziatriceviporterallapagina successiva,senzaverificaresequest'ultimainiziaunnuovoargomentoolapaginainfodiunnuovo 38

IntroduzioneaLinux

comando.ImpiegateQperuscire.Ilprogrammainfohamaggioriinformazioni.

2.3.3.2. I comandi whatis e apropos


Unbreveindicedispiegazioni suicomandi disponibileutilizzando ilcomando whatis,come nell'esempioquisotto:
[vostro_prompt] whatis ls ls (1) - list directory contents

Cimostraunabreveinformazionecircauncomandoelaprimasezionedellacollezionedipagine manchecontieneunapaginaappropriata. Senonsapetedovecercareechepaginamanleggere,aproposviforniscemaggioriinformazioni. Supponiamo che voi non sappiate come avviare un browser: potete allora battere il seguente comando:
un_altro_prompt> apropos browser QDataBrowser [qdatabrowser] (3qt) - Data manipulation and navigation for data entry forms QTextBrowser [qtextbrowser] (3qt) - Rich text browser with hypertext navigation gnome-moz-remote (1) - remote control of browsers goad-browser (1) - Graphical GOAD browser links (1) - lynx-like alternative character mode WWW browser lynx (1) - a general purpose distributed information browser for the World Wide Web mozilla (1) - a Web browser for X11 derived from Netscape Communicator ncftp (1) - Browser program for the File Transfer Protocol

Dopo aver premuto Invio, vedrete quanti argomenti relativi ai browser ci sono nella vostra macchina:nonsolobrowserweb,maanchebrowserdifile,FTPedidocumentazione.Seavete installato i pacchetti di sviluppo, potreste anche avere le pagine man di accompagnamento concernentiprogrammidiscritturachehannoachefareconibrowser.Generalmenteuncomando conunapaginamaninsezioneuno(unorappresentatocon(1))puesseresperimentatoinqualit diutente.Pertantol'utentechequisoprahadigitatoapropospudiconseguenzaprovareadavviare icomandilinks,lynx,mozillaoncftpdalmomentochequestihannoachefareconlanavigazione nelc.d.worldwideweb.

2.3.3.3. L'opzione --help


MolticomandiGNUsupportanol'opzione--help,chedunabrevespiegazionesucomeusareil comandoeunalistadelleopzionidisponibili.Quisottoilrisultatodiquestaopzioneconilcomando cat:
prompt_utente@host: cat --help Usage: cat [OPTION] [FILE]... Concatenate FILE(s), or standard input, to standard output. -A, --show-all -b, --number-nonblank -e -E, --show-ends equivalent to -vET number nonblank output lines equivalent to -vE display $ at end of each line

39

IntroduzioneaLinux

-n, -s, -t -T, -u -v,

--number --squeeze-blank

number all output lines never more than one single blank line equivalent to -vT --show-tabs display TAB characters as ^I (ignored) --show-nonprinting use ^ and M- notation, except for LFD and TAB --help display this help and exit --version stampa le informazioni sulla versione ed esce

With no FILE, or when FILE is -, read standard input. Report bugs to <bug-coreutils@gnu.org>.

2.3.3.4. Aiuti in modalit grafica


Nondisperatevisepreferiteun'interfacciautentegrafica(GUI).Konqueror,ilnormalefilemanager diKDE,fornisceunaccessoindoloreecoloratoallepaginemaneInfo.Poteteprovareinfo:info nella barradegliindirizzi eotterreteunapaginaInfonavigabilerelativaalcomando info.Allo stessomodoman:lsvimostrerlapaginamanperilcomando ls.Avetepureilcompletamento deinomideicomandi:vedretelepaginemandituttiicomandicheinizianoconlsinunmenua scorrimento. Inserendo info:/dir nella barra degli indirizzi, appaiono tutte le pagine Info organizzateincategoriediprogrammi.EccellenteilcontenutodiAiuto,comprendente ancheil manualediKonqueror.Avviatequest'ultimodalmenuodigitandoilcomando konquerorinuna finestraditerminaleseguitodaInvio;osservatelaschermataquisotto. Figura22.Konquerorcomebrowserdegliaiuti

40

IntroduzioneaLinux

Anche il browser degli aiuti Gnome molto facile da usare. Lo potete avviare selezionando Applicazioni>AiutonelmenudiGnome,conunclicsull'iconadelsalvagentesulvostrodesktop oppure inserendo il comando gnomehelp in una finestra di terminale. La documentazione di sistemaelepaginemansonofacilmentenavigabiligrazieallachiarainterfaccia. Il gestore di file nautilus fornisce un indice di ricerca delle pagine man e info, che risultano facilmente navigabili etralorointerconnesse. Nautilus siavvia[ndt. seinstallato] da lineadi comando,cliccandosull'iconadellavostradirectoryhomeoppuredalmenudiGnome. Il grosso vantaggio delle GUI per la documentazione di sistema che le informazioni sono completamente interconnesse, cosicch potete cliccare sulla sezione VEDERE ALTRO e dovunque appaiano collegamenti ad altre pagine man, in modo da navigare ed acquisire contemporaneamenteconoscenzesenzainterruzioniperoreallavolta.

2.3.3.5. Eccezioni
Alcunicomandinonhannodocumentazioneseparatapoichfannopartediunaltrocomando. cd, exit, logout e pwd sonotalieccezioni:appartengonoalvostroprogrammadishellesonodetti comandiinterniallashell.Perinformazionisuquestibisognaricorrereallepaginemaneinfodella vostrashell.MoltinuoviutentihannolashellBash(v.Sezione3.2.3.3permaggioridettaglisulle shell). Seavetemodificatolaconfigurazioneoriginale,potrebbeanchesuccederechelepagineman,pur esistendoancora,nonsianovisibiliperchivostroambientedishellcambiato.Inquestocaso dovretecontrollarelavariabileMANPATH:laSezione7.2.1.2.spiegacomefareci. Alcuni programmi opacchetti hanno solouninsieme diistruzioni oriferimenti nella directory /usr/share/doc(v.Sezione3.3.4.perelencarli). Nelcasopeggiore,aveterimossoaccidentalmenteladocumentazionedalvostrosistema(speriamo chesiastatoproprioaccidentalmente,perchveramenteunapessimaideafarlovolontariamente). Intalcaso,perprimacosacercatediaccertarvichenonsiarimastoancoraqualcosautilizzandouno strumento di ricerca (v. Sezione 3.3.3.). Se proprio cos, dovete reinstallare il pacchetto che contieneilcomandoacuisiriferisceladocumentazione(v.Sezione7.5.).

2.4. Sommario
AbitualmenteLinuxfunzionainmodalittestoografica.DalmomentocheoggiCPUpotentie RAMnonsonopicostose,ogniutenteLinuxpupermettersidilavorareinmodalitgraficae normalmente lo fa. Ci non significa per che voi non dobbiate conoscere il modo testo: noi lavoreremo interamente nell'ambiente testuale durante questo corso utilizzando una finestra di terminale. Linux incoraggia i suoi utilizzatori ad acquisire conoscenze e a rendersi indipendenti. Inevitabilmentedovreteleggeremoltadocumentazioneperraggiungerequestoobbiettivo:pertale 41

IntroduzioneaLinux

motivo,comeavretenotato,checiriportiamoadocumentazioneextraperquasiognicomando, strumentoeproblemaelencatoinquestolibro.Pidocumentileggereteepisemplicediverrepi rapidamentesfoglieretemanuali.Fateinmodocheleggeredocumentazionedivengaalpipresto un'abitudine.Quandononsapetedareunarispostaadunproblema,rivolgervialladocumentazione dovrebbedivenireunasecondanatura. Abbiamogiimparatoalcunicomandi: Tabella23.Nuovicomandinelcapitolo2:Basi Comando apropos cat cd exit file info logout ls man passwd pwd Significato Cercainformazionisuuncomandooargomento Mostrailcontenutodiunoopifile Cambiadirectory Abbandonaunasessionedishell Informacircailcontenutodiunfile LeggelepagineInfodiuncomando Abbandonaunasessionedishell Elencailcontenutodiunadirectory Leggelepaginedimanualediuncomando Cambialavostrapassword Mostral'attualedirectorydilavoro

2.5. Esercizi
Moltodicicheimpariamodovutoaglierrorichefacciamoedall'osservazionedicomelecose possonononfunzionare.Questiesercizisonostaticreatiperprocurarvialcunimessaggidierroreda leggere.L'ordineincuiaffronteretetalieserciziimportante. NonscordatevidiricorrereallecaratteristichediBashsullalineadicomando:tentatedisvolgere gliesercizibattendomenocaratteripossibili!

2.5.1. Connessione e disconnessione

Verificatesestatelavorandoinmodalittestoografica. Stolavorandoinmodalittesto/grafica(barratequellasbagliata)

42

IntroduzioneaLinux

Autenticatevi(login)conilnomeutenteelapasswordcheavetesceltodurante l'installazione. Disconnettetevi(logout). Autenticatevinuovamenteusandounnomeutenteinesistente. >Cosasuccede?

2.5.2. Password
Autenticatevinuovamenteconivostrinomeutenteepassword.

CambiatelapasswordinP6p3.aa!ebatteteiltastoInvio. >Cosasuccede?

Provateancora,stavoltainseriteunapasswordridicolmente facile,tipo123 o aaa. >Cosasuccede?

Provateancora,questavoltanoninseriteunapasswordmabattetesoltantoil tastoInvio. >Cosasuccede?

Provateilcomandopsswdalpostodipasswd. >Cosasuccede?

Nuovapassword Amenochevoinonripristiniatelavostrapasswordaquellaprecedenteall'esercizio, questasarP6p3.aa!. Mutatepassworddopoquestoesercizio! Notate che alcuni sistemi potrebbero non consentire di riciclare password, cio ripristinarequellaoriginaleuncertonumerodivolteouncertonumerodicambidi passwordoambedue.

2.5.3. Le directory
Questisonoalcuniesercizicheviaiuterannoacapirneilsenso.

Dateilcomandocdblah

43

IntroduzioneaLinux

>Cosaaccade?

Dateilcomandocd.. Ricordatevilospaziotracde..!Usateilcomandopwd >Cosaaccade?

Elencateilcontenutodelladirectoryconilcomandols. >Cosavedete? >Cosapensatechesianoquellevoci? >Controllateconilcomandopwd

Dateilcomandocd >Cosaaccade?

Ripeteteduevolteilpasso2. >Cosaaccade?

Mostrateilcontenutodiquestadirectory. Provateilcomandocdroot >Cosaaccade? >Aqualedirectoryaveteaccesso?

Ripeteteilpasso4. >Conosceteun'altramanierapersaperedoveoravitrovate?

2.5.4. I file

Cambiateladirectorya/equindiaetc.Scrivete ls;sel'outputpilungo del vostro schermo, ampliate la finestra o provate Maiuscolo+PaginaSu e Maiuscolo+PaginaGiu. Il file inittab contiene la risposta alla prima domanda in questa lista. Provateilcomandofilesudiquesto. >Iltipodifiledelmioinittab......

44

IntroduzioneaLinux

Usateilcomandocatinittabeleggeteilfile. >Qualelamodalitnormaledelvostrocomputer?

Ritornateallavostradirectoryhomeimpiegandoilcomandocd Dateilcomandofile. >L'esercizioaiutaatrovareilsignificatodi.? Poteteguardare.usandoilcomandocat? Richiamate l'aiuto del programma cat, utilizzando l'opzione --help. Utilizzatel'opzionepernumerarelelineedioutputpercontarequantiutenti sonoelencatinelfile/etc/passwd.

2.5.5. Cercare aiuto


Leggetemanintro Leggetemanls Leggeteinfopasswd Dateilcomandoapropospwd Provatemanoinfodicd >Comepotetetrovaremaggioriinformazionisucd?

Leggetels--helpesperimentate.

45

IntroduzioneaLinux

Capitolo 3. File e file system


Dopol'inizialeesplorazionecontenutanel Capitolo2,siamoprontipertrattarepiin dettaglioifileeledirectorydiunsistemaLinux.Moltiutentitrovanodifficoltcon Linuxperchmancanodiunapanoramicasultipodidaticonservatiinunadeterminata posizione.Proveremoperciafareunpo'dilucesull'organizzazionedeifilenelfile system. Elencheremo pure i file e le directory pi importanti, useremo metodi diversi per visualizzare ilcontenuto diqueifile,impareremo come possiamo creare, spostare e cancellarefileedirectory. Dopoilcompletamentedegliesercizidiquestocapitolo,sareteingradodi:

DescriverelastrutturadiunfilesystemLinux Mostrareeimpostarepercorsi(path) Descrivereifilepiimportanti,compresikerneleshell Trovarefilepersienascosti Creare,muovereecancellarefileedirectory Mostrareilcontenutodeifile Comprendereedusaretipidicollegamenti(link)differenti Esplorareleproprietdeifileecambiareiloropermessi

3.1. Panoramica generale sul file system Linux


3.1.1. I file
3.1.1.1. In generale
QuestaunadescrizionesemplicedelsistemaUNIX,applicabileancheaLinux: InunsistemaUNIXognicosaunfile:sequalcosanonunfile,unprocesso. Taleaffermazioneveraperchesistonofilespecialichesonopidinormalifile(chiamatipipee socket,peresempio)ma,persemplificare,unageneralizzazioneaccettabiledirechetuttounfile. UnsistemaLinux,coscomeUNIX,nonfadistinzionitraunfileeunadirectorydalmomentoche unadirectorysolounfilechecontienenomidialtrifile.Programmi,servizi,testi,immagini,e cosvia,sonotuttifile.Leperiferichediingresso/uscita(edingeneretutteleperiferiche) sono consideratecomefilechesiraccordanoalsistema. Pergestiretuttiqueifileinmodoordinatogliesseriumanipreferisconopensarliinunastruttura organizzata a forma dialbero neldisco rigido, come sappiamo adesempio daMSDOS (Disk OperatingSystem).Iramiprincipalicontengonoaltriramieleestremithannolefoglie,cioifile. 46

IntroduzioneaLinux

Perorautilizzeremo questaimmaginedell'albero,mapiavantiscopriremochenonsitrattadi un'immagineperfettamentecalzante.

3.1.1.2. Ordine dei file


Moltifilesonosolofile,dettifileregolari:essicontengonodatinormali,peresempiofileditesto, fileeseguibilioprogrammi,datid'ingressoouscitadiunprogrammaecosvia. SebbenesiaragionevolmentesicuroritenerechetuttocicheincontrateinunsistemaLinuxsiaun file,esistonotuttaviaalcuneeccezioni.

Directory:filechesonoelenchidialtrifile. Filespeciali:ilmeccanismousatoperingressoeuscitadeidati.Moltifilespecialisi trovanoin/dev:neparleremopiavanti. Collegamenti (link):unmezzoimpiegatoperrenderevisibilifileedirectoryinpi partidell'alberodeifiledelsistema.Tratteremoicollegamentiindettaglio. (Domain) socket:unospeciale tipodifile,simile aisocket TCP/IP, chefornisce un'infrastrutturadiprocessiinterconnessiprotettadauncontrollod'accessodelfile system. Named pipes:funzionano piomeno come isocket ecostituiscono unmodo di comunicazionetraprocessisenzal'impiegodellasemanticadeisocketdirete.

L'opzione-ldilsmostrailtipodifileusandoilprimocaratterediciascunalineadiinput:
jaime:~/Documents> ls total 80 -rw-rw-r-- 1 jaime -rw-rw-r-- 1 jaime drwxrwxr-x 2 jaim -l jaime jaime jaime 31744 Feb 21 17:56 intro Linux.doc 41472 Feb 21 17:56 Linux.doc 4096 Feb 25 11:50 course

Questatabellaoffreunapanoramicadeicaratterichedeterminanoiltipodifile: Tabella31.Tipidifileinelencoesteso Simbolo d l c s p b Significato Filenormale Directory Collegamento(link) Filespeciale Socket Namedpipe Perifericaablocchi

Per non dover fare ogni volta un lungo elenco per riconoscere il tipo di file, molti sistemi normalmentenoneseguonounsemplicels,bensls-F,cheapplicaunsuffisso/=*|@ainomidei fileperindicarneiltipo.Perrenderelafaccendaancorapisempliceperiprincipianti,leopzioni 47

IntroduzioneaLinux

-Fe--colorsolitamentevengonocombinateassieme(v.Sezione3.3.1.1.).Noiutilizzeremols -Fnelcorsodiquestodocumentoperunamiglioreleggibilit. Comeutenti,voiavretedirettamenteachefaresoloconcomunifile,fileeseguibili,directorye collegamenti.Ifileditipospecialeesistonoperconsentirealsistemadifarecicheglirichiedetee sonousatidagliamministratoriedaiprogrammatori. Adesso, prima di trattare dei file importanti e delle directory, dobbiamo conoscere meglio le partizioni.

3.1.2. Il partizionamento
3.1.2.1. Perch le partizioni?
Molte persone hanno una vaga idea dicosa siano le partizioni dal momento che ogni sistema operativo capace di crearle orimuoverle. Pu sembrare strano che Linux utilizzi pidi una partizionesullostessodisco,anchequandosiusalaproceduradiinstallazionestandard,cossi rendenecessariofornirealcunespiegazioni. Unodegliscopidiaverediversepartizioniquellodiraggiungereunlivellodisicurezzadeidati maggiore in caso di disastro. Dividendo il disco rigido in partizioni, i dati possono essere raggruppati e separati. Quando capita un incidente, solo i dati nella partizione colpita saranno danneggiati,mentreidatinellealtrepartizionimoltoprobabilmentesopravviveranno. QuestoprincipiodatadaigiorniincuiLinuxnonavevaunfilesystemditipojournaledelecadute direteelettricapotevanocondurreadisastri.L'usodellepartizionirestapermotividisicurezzae robustezza, inmodocheunguasto inunapartedelsistema nonsignificaautomaticamente che l'interocomputersiainpericolo.Attualmentequestalaragionepirilevantedelpartizionamento. Unsempliceesempio:unutentecreaunoscript,unprogrammaoun'applicazionewebcheiniziaa riempire il disco. Se il disco contenesse solo una grande partizione, l'intero sistema potrebbe smettere di funzionare incaso ditotale riempimento. Sel'utente invece conserva idati in una partizioneseparata,allorasolotalepartizione(deidati)potrebbeguastarsi,mentrelepartizionidi sistemaeleeventualialtredidaticontinuerebberoafunzionare. Consideratechel'avereunfilesystemjournaledgarantisceunicamentelasicurezzadeidatiin casodiinterruzionedireteelettricaedimprovvisoscollegamentodiperiferichediarchiviazione. Cinonproteggeivostridatidablocchiguasti(badblock)ederrorilogicidelfilesystem.Intali casidovresteusareunasoluzioneRAID(RedundantArrayofInexpensiveDisk).

3.1.2.2. Schema di partizione e tipi


EsistonoduetipidipartizioniprincipaliinunsistemaLinux:

partizione dati: normali dati del sistema Linux, compresa la partizione di root contenentetuttiidatiperavviareefarfunzionareilsistema; partizioneswap:espansionedellamemoriafisicadelcomputer,memoriaextrasu

48

IntroduzioneaLinux

discorigido. Moltisistemicontengonounapartizionediroot,unaopipartizionididatieunaopipartizionidi swap.Sistemiinambientimistipossonoavereanchepartizioniperaltridatidisistema,comeuna partizioneconfilesystemFAToVFATperidatidiMSWindows. ParecchisistemiLinuxusanofdiskalmomentodell'installazioneperimpostareiltipodipartizione. Comeavretepotutonotaredurantel'eserciziodelCapitolo1,disolitociavvieneautomaticamente. Tuttaviainqualcheoccasionepotrestenonesserecosfortunati.Intalcasodovretesiascegliere manualmenteiltipodipartizione,siaancheprovvederealpartizionamento.Lepartizionistandard Linuxhannoinumeri82perswape83peridati,iqualipossonoesserejournaled(ext3)onormali (ext2,neisistemipivecchi).L'utilityfdiskhaunaiutointegratosicchpotetedimenticarequesti valori. Apartequestidue,Linuxsupportaunavarietdialtritipidifilesystem,comeilrelativamente recentefilesystemReiser,JFS,NFS,FATxxemoltialtrifilesystemoriginariamentedisponibiliin altrisistemioperativi(proprietari). Lapartizionedirootstandard(rappresentataconunasingolabarra/)dicirca100500MBe contieneifilediconfigurazionedelsistema,molticomandibaseeprogrammidiserver,libreriedi sistema, unpo'dispaziotemporaneoeladirectoryhomedell'amministratore.Unainstallazione standardrichiedecirca250MBperlapartizionediroot. Lospaziodiswap(indicatoconswap)accessibilesolodalsistemastessoednascostoallavista durantelenormalioperazioni.Swapilmezzocheassicura(comeneinormalisistemiUNIX)che voipossiatecontinuarealavorarequalsiasicosaaccada.ConLinuxpotenzialmentenonvedretemai irritantimessaggitipoOutofmemory,pleaseclosesomeapplicationsfirstandtryagain(Memoria esaurita, per favore chiudere prima alcune applicazioni e riprovare), per necessit di questa memoriainpi.Laproceduradiswapomemoriavirtualedalungotempoadottata,solooraloda partedisistemioperativiestraneialmondoUNIX. Usarelamemoriasuundiscorigidonaturalmenteun'operazionepilentarispettoall'utilizzodei vericircuitidimemoriapresentinelcomputer,maaverequestasemplicefunzionalitextrauna grossa comodit. Impareremo qualcosa in pi sulla swap quando parleremo dei processi nel Capitolo4. LinuxingeneresiaspettadiavereildoppiodellamemoriafisicasottoformadispaziodiSwapsul discorigido.Installandounsistemadovetesaperecomefareci.Eccounesempiosudiunsistema con512MBdiRAM:

primapossibilit:unapartizionediswapda1GB secondapossibilit:duepartizionidiswapda512MB terzapossibilit:conduedischirigidi:1partizioneda512MB

L'ultimaopzionedarimiglioririsultatiquandocisiattendemolteoperazionidiI/O.

49

IntroduzioneaLinux

Leggeteladocumentazionedelsoftwareperinformazionispecifiche.Alcuneapplicazioni,comei database, potrebbero richiedere maggiore spazio di swap. Altri, come alcuni sistemi palmari, potrebberononaverealcunaswapperl'assenzadiundiscorigido.Lospazioswappudipendere anchedallavostraversionedikernel. Ilrestodeldiscorigido(dischirigidi)generalmentedivisoinpartizionididati,sebbenepotrebbe succederechetuttiidatidisistemanoncriticirisiedanoinun'unicapartizione,adesempioquando eseguiteunainstallazionestandardperstazionedilavoro.Quandoidatinoncriticisonosuddivisiin differentipartizioni,solitamentesisegueunoschemapreordinato:

unapartizionediprogrammipergliutenti(/usr) unapartizionecontenenteidatipersonalidegliutenti(/home) unapartizioneperconservareidatitemporaneicomelecodedistampaediposta (/var) unapartizionepersoftwarediterzepartiedextra(/opt)

Unavoltacreatelepartizioni,potetesoloaggiungerne altre.Cambiaredimensionioproprietdi partizioniesistentipossibilemanonconsigliabile. Lasuddivisionedeidischirigidiinpartizionistabilitadall'amministratoredisistema:insistemi pigrandipotrebbeanchedistribuireunapartizionesudiversidischirigidiutilizzandoilsoftware appropriato.Moltedistribuzioniconsentonoimpostazionistandardottimizzateperstazionidilavoro (utentimedi)eperimpieghicomeservergenerici,maaccettanoanchepartizionipersonalizzate. Durante il processo di installazione potete definire il vostro schema di partizionamento sia utilizzando lostrumento specifico dellavostra distribuzione, cheabitualmente unainterfaccia puramentegrafica,ofdisk,unostrumentotestualepercrearepartizioniedefinirnelepropriet. Unainstallazioneworkstationoclientedestinataprincipalmenteall'usodiunasolamedesima persona.Ilsoftwareselezionatoperl'installazionerifletteciedpostal'attenzionesuipacchetti perl'utentecomune,comedeibeitemiperildesktop,strumentidisviluppo,programmiclientiper lapostaelettronica,softwaremultimediale,webedaltriservizi.Iltuttocollocatoinsiemesuuna grande partizione, viene aggiunto lo spazio di swap pari al doppio della RAM e la vostra workstationgenericacompleta,dotatadellapivastaquantitpossibile dispaziosudiscoper l'uso personale, ma con l'inconveniente di una possibile perdita di integrit dei dati durante situazionicritiche. Inunserveridatidisistematendonoadessereseparatidaquellidegliutenti.Iprogrammiche offronoservizivengonotenutiinunpostodiversorispettoaidaticheessitrattano.Suquestisistemi verrannocreatediversepartizioni:

unapartizionecontuttiidatinecessariperl'avviodellamacchina unapartizioneconidatidiconfigurazioneeiprogrammiserver unaopipartizionicontenentiidatideiservercomeletabelledidatabase,laposta degliutenti,unarchivioftp,ecc... unapartizioneconiprogrammidegliutentieleapplicazioni unaopipartizioniperifilepersonalidegliutenti(directoryhome)

50

IntroduzioneaLinux

unaopipartizionidiswap(memoriavirtuale)

Iserverabitualmentehannopimemoriae,conseguentemente,pispaziodiswap.Certiprocessidi server, come quelli di database, possono richiedere pi spazio swap del normale: leggete la documentazionespecificaperinformazionidettagliate.Permiglioriprestazioni,spessolaswap divisainduepartizionidiswap.

3.1.2.3. Punti di montaggio


Tutte le partizioni vengono agganciate alsistema tramite ilpunto dimontaggio (mountpoint). Questodefiniscelaposizionediunspecificoinsiemedidatinelfilesystem.Normalmentetuttele partizionisonoconnessetralorograzieallapartizionerootoradice.Inquestapartizione,cheviene indicataconlabarra(/),vengonocreateledirectory.Talidirectoryvuotesarannoilpuntod'inizio dellepartizionialoroattaccate.Unesempio:dataunapartizionecontenteleseguentidirectory:
videos/ cdimages/ pictures/

Vogliamoattaccarequestapartizionenelfilesysteminunadirectorychiamata/opt/media.Per fare ci, l'amministratore di sistema deve assicurarsi che la directory /opt/media esista nel sistema.Preferibilmentedovrebbeessereunadirectoryvuota.Comeciavvengavienespiegatopi tardi in questo capitolo. Dopo, usando il comando mount, l'amministratore pu attaccare la partizionealsistema.Quandoosservereteilcontenutodelladirectory/opt/media formalmente vuota, essa conterr ifileeledirectory chesitrovano suldispositivo montato (discorigido o partizionedidiscorigido,CD,DVD,flashcard,USBoaltraunitdimemorizzazione). Durante l'avvio del sistema, tutte le partizioni vengono montate cos come indicato nel file /etc/fstab.Alcunepartizioninonvengonomontateinautomatico,peresempiosenonsono collegate costantemente al sistema, come le memorie usate dalla vostra macchina fotografica digitale. Sebenconfigurata,laperifericasarmontatanonappenailsistemasiaccorgerche collegata,oppurepuesseremontabiledall'utente,ciononavetebisognodiessereamministratore disistemaperattaccareestaccarelaperifericaal/dalsistema.C'unesempionellaSezione9.3. Inunsistemafunzionanteleinformazionisullepartizioniesuirelativipuntidimontaggipossono esseremostrateusandoilcomandodf(chesignificadiskfullodiskfree).InLinux,dflaversione GNU e supporta l'opzione -h o human readable (leggibile da esseri umani) che migliora notevolmentelaleggibilit.NotatechelemacchineUNIXcommercialihannocomunementeleloro versioni particolari di df edimolti altri comandi. Illoro comportamento disolito lostesso, sebbeneleversioniGNUdeglistrumenticomunispessohannofunzionimiglioriepinumerose. Ilcomando df mostrasoloinformazioni circa lepartizioni attivenondiswap.Queste possono comprenderepartizionidaaltrisistemiinrete,comenell'esempioquisottodoveledirectoryhome sonomontatedaunfileserversullarete,situazionechesiincontraspessoinambientiaziendali.
freddy:~> df -h Filesystem /dev/hda8 /dev/hda1 /dev/hda5 /dev/hda6 Size 496M 124M 19G 7.0G Used 183M 8.4M 15G 5.4G Avail 288M 109M 2.7G 1.2G Use% 39% 8% 85% 81% Mounted on / /boot /opt /usr

51

IntroduzioneaLinux

/dev/hda7 fs1:/home

3.7G 8.9G

2.7G 3.7G

867M 4.7G

77% 44%

/var /.automount/fs1/root/home

3.1.3. Di pi sulla struttura del file system


3.1.3.1. Visuale
PercomoditilfilesystemLinuxabitualmenteimmaginatocomeunastrutturaadalbero.Inun sistemaLinuxstandardtrovereteunastrutturasimilealloschemapresentatodiseguito. Figura31.StrutturadelfilesystemLinux

QuestalastrutturadiunsistemaRedHat.Asecondadell'amministratoredisistema,ilsistema operativoelamissionedellamacchinaUNIX,lastrutturapucambiare eledirectorypossono 52

IntroduzioneaLinux

mancare oppure essere aggiunte a piacere. I nomi non sono neanche richiesti: sono solo una convenzione. L'alberodelfilesysteminiziadaltroncoosbarra,rappresentatodaunasbarra(/).Taledirectory, contenente tutti i file e le directory sottostanti, chiamata root directory (directory radice) o radicedelfilesystem. Ledirectorychesitrovanosoloadunlivelloaldisottodiquelladirootsonospessopreceduteda unasbarra(slash)perindicarelaloroposizioneeperevitarediconfonderleconaltredirectoryche potrebberoaverelostessonome.Quandosiiniziaconunnuovosistemasempreunabuonaidea dareun'occhiataalladirectoryradice.Vediamocomepoteteaccedervi:
emmy:~> cd / emmy:~> ls bin/ dev/ home/ boot/ etc/ initrd/

lib/ lost+found/

misc/ mnt/

opt/ proc/

root/ sbin/

tmp/ var/ usr/

Tabella32.Sottodirectorydelladirectoryradice Directory /bin /boot /dev /etc /home /initrd /lib /lost+found /misc /mnt /net /opt Contenuto Comuniprogrammicondivisidalsistema,dall'amministratoredisistemaedagli utenti. Ifilediavvioedelkernel,vmlinuz.Inalcunerecentidistribuzionicisono ancheidatidigrub.GrubilGRandUnifiedBootloadererappresentaun tentativodisbarazzarsidimoltibootloaderdifferenticheconosciamooggi. Contieneiriferimentiatuttol'hardwareperifericodellaCPU,cheviene rappresentatocomefileconparticolaricaratteristiche. In/etcsitrovanofilediconfigurazionedisistemamoltoimportanti.Questa directorycontienedatisimiliaquellidelPannellodiControllodiWindows Directoryhome[personale]deinormaliutenti. (inalcunedistribuzioni)Informazioniperl'avvio.Nonrimuovere! Filedilibreria,comprendefilepertuttiitipidiprogramminecessarialsistema edagliutenti. Ognipartizionepossiedelost+foundnelladirectorypialta:visitrovanoi filesalvatiduranteunguasto. Perusidiversi. Puntodimontaggiostandardperfilesystemesterni,ades.unCDROMouna fotocameradigitale. Puntodimontaggiostandardperinterifilesystemremoti. Contienetipicamentesoftwareextraediterzeparti.

53

IntroduzioneaLinux

Directory /proc

Contenuto Unfilesystemvirtualecontenenteinformazionisullerisorsedisistema. Maggioriinformazionisulsignificatodeifileinprocsiottengonodandoil comandomanprocinunafinestraditerminale.Ilfileproc.txttrattain dettagliodelfilesystemvirtuale. Ladirectoryhomedell'utenteamministratore.Tenetepresenteladifferenzatra/, ladirectoryrootoradice,e/root,lahomedirectorydell'utenteroot. Programmiutilizzatidalsistemaedall'amministratoredisistema. Spaziotemporaneousatodalsistema,ripulitoadogniriavvio:danonusareper salvarealcunlavoro! Programmi,librerie,documentazione,ecc...pertuttiiprogrammiadisposizione degliutenti. Depositodituttiifilevariabilietemporaneicreatidagliutenti,comeifiledilog, lecodediposta,l'areaperlospoolerdistampa,spazioperl'archiviazione temporaneadeifilescaricatidainternet,operconservarel'immaginediunCD primadimasterizzarlo.

/root /sbin /tmp /usr

/var

Comesipuscoprireinqualepartizionesitrovaunadirectory?Usandoilcomandodfconunpunto (.)comeopzionemostralapartizioneacuiappartieneladirectorycorrenteeinformasullaquantit dispaziousatointalepartizione:


sandra:/lib> df -h . Filesystem Size /dev/hda7 980M Used 163M Avail 767M Use% 18% Mounted on /

Comeregolagenerale,ognidirectorysottoladirectoryrootsitrovanellapartizionediroot,ameno chenonesistaunavoceseparatanell'elencocompletoprodottodadf(odfhsenzaaltreopzioni). Leggetedipiinmanhier.

3.1.3.2. Il file system in realt


Permoltiutentiepermolticompiticomunidegliamministratoridisistemasufficientesapereche ifileeledirectorysonoordinatiinunastrutturaadalbero.Ilcomputer,comunque,noncapisce nulladialberiedistruttureadalbero. Ognipartizionehaunpropriofilesystem.Immaginandotuttiqueifilesysteminsieme,possiamo farciunideadellastrutturaadalberodell'interosistema,manoncossemplicecomequella.Inun filesystem,unfilerappresentatodauninode,untipodinumeroserialechecontieneinformazioni suidativerichecostituisconoilfile,suchipossiedeilfileedovequestositrovaneldiscorigido. Ognipartizionehailsuoproprioinsiemediinode:grazieadunsistemaconpartizionimultiple possonoesisterefileconlostessonumerodiinode.

54

IntroduzioneaLinux

Ciascuninodedescriveunastrutturadidatineldiscorigido,conservando leproprietdiunfile, compresa la locazione fisica dei dati del file. Quando si prepara un disco fisso per accettare l'archiviazionedeidati,normalmentedurantel'inizialeprocessodiinstallazionedelsistema,sicrea unnumerofissodiinodeperpartizione.Questonumerosarlaquantitmassimadifiledituttiitipi (compresedirectory,filespeciali,collegamenti,ecc...)chepotrannoesisterecontemporaneamente nellapartizione.Normalmentecontiamodiavere1inodeda2a8kilobytedimemoria. Ogni qualvolta si crea un nuovo file, questo ottiene un inode libero contenente le seguenti informazioni:

Proprietario(owner)egruppopossessoredelfile. Tipodelfile(normale,directory,ecc...) Permessisulfile(v.Sezione3.4.1.) Dataedoradicreazione,ultimaletturaemodifica. Dataedoraincuitaleinformazionestatacambiatanell'inode. Numerodicollegamentiaquestofile(v.pioltreinquestocapitolo). Dimensionedelfile Unindirizzochedefiniscelaveraposizionedeidatidelfile.

L'unica informazione noninclusa inuninode ilnome delfileedella directory. Questi sono conservatiinspecialifiledidirectory.Confrontandoinomideifileeinumeridiinode,ilsistema ingradodicostruireunastrutturaadalberocomprensibileperl'utente.Gliutentipossonovederei numeridiinodeutilizzandol'opzione-iconls.Gliinodedispongonodiunpropriospazioseparato neldisco.

3.2. Orientarsi nel file system


3.2.1. Il percorso
Quandovoletecheilsistemaeseguauncomando,nondovetequasimaidareilpercorso(path) completodiquelcomando.Peresempio,sappiamocheilcomandolssitrovanelladirectory/bin (controllate con which a ls), cosicch non dobbiamo inserire il comando /bin/ls affinch il computerelenchiilcontenutodellacorrentedirectory. Lavariabiled'ambientePATHsioccupadici.Talevariabileelencaledirectorydelfilesystemin cui si possono trovare i file eseguibili e cos risparmia all'utente molte battiture di caratteri e memorizzazioni delle posizioni dei comandi. Cos PATH contiene solitamente molte directory aventibindaqualchepartenelloronome,comemostral'utentequisotto.Ilcomandoechosiusa pervedereilcontenuto($)dellavariabilePATH:
rogier:> echo $PATH /opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin

In questo esempio, le directory /opt/local/bin, /usr/X11R6/bin, /usr/sbin , /usr/sbine/binvengonoscanditeallaricercadelprogrammarichiesto.Nonappenac'una 55

IntroduzioneaLinux

corrispondenza,laricercavieneterminata,anchesenontutteledirectorynelpercorsosonostate passate.Cipuportareastranesituazioni.Nelprimoesempioquidiseguitol'utentesacheesiste unprogrammachiamatosendsmsperinviareunmessaggioSMSecheunaltroutentedellostesso sistemapuusarlo,maluino.LadifferenzaconsistenellaconfigurazionedellavariabilePATH:


[jenny@blob jenny]$ sendsms bash: sendsms: command not found [jenny@blob jenny]$ echo $PATH /bin:/usr/bin:/ust/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony Password: tony:~>which sendsms sendsms is /usr/local/bin/sendsms tony:~>echo $PATH /home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\ /usr/X11R6/bin:/usr/bin/:/usr/sbin:/bin:/sbin

Notatel'usodi su (switchuser),cheviconsente dieseguireunashellnell'ambientediunaltro utenteacondizionecheneconosciatelapassword. Unasbarrarovesciaindicalacontinuazionediunalineasuquellasuccessivasenzal'interruzionedi unInviodaunalineaall'altra. Nelprossimoesempiounutentevuolerichiamareilcomando wc (wordcount)percontrollareil numerodilineeinunfile,manonaccadenullaepercideveinterromperetaleazioneusandola combinazioneCtrl+C:
jumper:~> wc -l test (Ctrl-C) jumper:~> which wc wc is hashed (/home/jumper/bin/wc) jumper:~> echo $PATH /home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\ /usr/bin:/usr/sbin:/bin:/sbin

L'uso del comando which ci mostra che questo utente ha una directory bin nella sua home directory,contenenteunprogrammacheanchechiamato wc.Dalmomentocheilprogramma nellasuahomedirectoryvienetrovatoperprimomentresistannoscorrendoipercorsiallaricerca diwc,taleprogrammafattoincasavieneeseguitoconuninputcheprobabilmentenoningrado dicomprendere,cosicchsiamocostrettiadinterromperlo.Esistonovarimodiperrisolverequesto problema(cisonosemprediversimodiperrisolvereunproblemainUNIX/Linux):unarisposta potrebbeesserequelladirinominareilprogramma wcdell'utente,oppurel'utentepotrebbedareil percorso completo fino al comando desiderato, che pu essere trovato utilizzando -a con il comandowhich. Sel'utenteutilizzapifrequentementeprogrammiinaltredirectory,pucambiareilsuopercorso percercareperultimonellesuedirectory:
jumper:~> export PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\ /usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin

56

IntroduzioneaLinux

Icambiamentinonsonopermanenti! Notate che, quando si usa il comando export in una shell, i cambiamenti sono temporaneievalidisoloperlasessioneincorso(finchnonlachiudete).L'aperturadi nuovesessioni,anchementrequellacorrenteancoraattiva,nonvicreerunnuovo percorso in esse. Vedremo nella Sezione 7.2 come possiamo rendere permanenti nell'ambiente questo tipo di modifiche, aggiungendo quelle linee ai file di configurazionedellashell.

3.2.2. Percorsi assoluti e relativi


Unpercorso(path),ciolastradadaseguirenellastrutturaadalberoperraggiungereuncertofile, pu essere descritto partendo dal tronco dell'albero (la / o directory radice). In tal caso, il percorsoiniziaconunasbarraevienechiamatopercorsoassoluto,dalmomentochenonpossono essercierrori:nelsistemasolounfilepotrcorrispondervi. Nell'altro caso,ilpercorso noniniziaconunasbarra edpossibileconfondere tra ~/bin/wc (nelladirectoryhomedell'utente)ebin/wcin/usrcomenell'esempioprecedente.Ipercorsiche noninizianoconunasbarrasonosemprerelativi. Neipercorsirelativiusiamoanche.e..perindicareladirectorycorrenteequellagenitrice.Una coppiadiesempipratici:

Quando volete compilare del codice sorgente, spesso la documentazione di installazione vidice di avviare il comando ./configure, che lancia il programma configure collocatonelladirectorycorrente(creataconilnuovocodice)invecedi eseguireunaltroprogrammaconfigurepresentealtrovenelsistema. Nei fileHTML ipercorsi relativi sonospesso utilizzati per creare uninsieme di paginefacilmentetrasferibiliinaltriposti:
<img alt=Garden with trees src=../images/garden.jpg>

Notateladifferenzaancoraunavolta:

theo:~> ls /mp3 ls: /mp3: No such file or directory theo:~> ls mp3/ oriental/ pop/ sixties/

3.2.3. I file e le directory pi importanti


3.2.3.1. Il kernel
Ilkernelilcuoredelsistema:gestiscelecomunicazionitral'hardwaresottostanteeleperiferiche. Il kernel assicura inoltre che processi e daemon (demoni o processi server) vengano avviati e fermatialmomentogiusto.Haunaquantitcosgrandedialtricompitiimportanticheesisteuna specialemailinglist,dedicataallosuosviluppo,chesioccupasolodiquestoargomentoedove vengonocondivisemontagnediinformazioni.Dibattereindettagliosulkernelciporterebbetroppo 57

IntroduzioneaLinux

lontano:perorasufficientesaperecheilkernelilfilepiimportantedelsistema.

3.2.3.2. La shell
3.2.3.2.1. Cos' una shell? Cercareunaspiegazioneappropriatadelconcettodi shell mihacreatopiproblemidiquantimi attendessi.Sonodisponibilituttiigeneridispiegazioni,chevannodalsempliceparagonecomela shelllosterzodiun'auto,allavagadefinizionedelmanualediBashcheaffermachebashun interpretedellinguaggioacomandicompatibileshoadaltreancorapioscureespressionicome unashellgestiscel'interazionetrailsistemaeisuoiutenti.Unashellmoltopidiquesto. Unashellpuesseremeglioparagonataadunmezzoperparlareconilcomputer,unlinguaggio. Moltiutenticonosconoquell'altrolinguaggio,illinguaggiopuntaecliccadeldesktop,macon essoilcomputerguidalaconversazione,mentrel'utenteassumeilruolopassivodiselezionarele funzionichequestoglipresenta.E'moltodifficileperunprogrammatoreincluderetutteleopzioni egliusipossibilidiuncomandoinunformatoGUI.CosleGUIsonoquasisempremenopotenti delcomandoodeicomandicheformanoilbackend[ciosucuiquestesiappoggianopersvolgere levariefunzioni]. La shell, d'altro canto, una maniera evoluta di dialogare con il sistema poich consente la conversazioneneiduesensiediassumerel'iniziativa.Entrambelepartidellacomunicazionesono uguali,cossipossonosperimentarenuoveidee.Lashellpermetteall'utentedigestireunsistema inmodopiuttostoflessibilee,comeulteriorevantaggio,diautomatizzareicompiti. 3.2.3.2.2. Tipi di shell Comelagenteconoscelinguaggiedialettidifferenti,cosilcomputerconoscetipidiversidishell:

shoBourneShell:lashelloriginaleancorautilizzatasusistemiUNIXeinambienti collegatiaUNIX.E'lacomuneshell,unpiccoloprogramma conpochefunzioni. QuandoinmodalitPOSIXcompatibilebashemulaquestashell. bash o Bourne Again SHell: la shell GNU standard, intuitiva e flessibile. Probabilmentemoltoconsigliabilesiaaiprincipiantisia,contemporaneamente,agli espertieprofessionistiessendounostrumentomoltopotente.InLinuxbashlashell standardpericomuniutenti.Taleshellvieneanchedetta superinsieme dellashell Bourne,uninsiemediaggiunteeplugin.CisignificachelashellBourneAgain compatibileconquellaBourne:icomandichefunzionanocon sh,funzionanopure conbash.Comunquenonsempreveroilcontrario.Tuttigliesempiegliesercizidi questolibrousanobash. csh o C Shell: la sintassi di questa shell assomiglia a quella del linguaggio di programmazioneC.Qualchevoltavienerichiestadaiprogrammatori. tcsh o Turbo C Shell: un superinsieme della comune C shell, che aumenta la semplicitelavelocit. kshoKornshell:apprezzataqualchevoltadapersoneconesperienzediUNIX.E'un superinsieme della Bourne shell: in configurazione base un incubo per i

58

IntroduzioneaLinux

principianti. Ilfile/etc/shellsoffreunapanoramicadelleshellconosciutedaunsistemaLinux:
mia:~> cat /etc/shells /bin/bash /bin/sh /bin/tcsh /bin/csh

Bourneshellfalsa Notate che normalmente /bin/sh un collegamento a Bash, che, se chiamata in questomodo,verreseguitainmodalitBourneshell. Lavostrashelldibaseimpostatanelfile /etc/passwd,comeinquestalineacheriguarda l'utentemia:
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash

Perpassaredaunashellall'altra,bastasoloinserireilnomedellanuovashellnelterminaleattivo.Il sistematrovaladirectorydovericorreilnomeusandoleimpostazionidiPATHe,dalmomentoche unashellunfileeseguibile(programma),lashellcorrentelaattivaelamandainesecuzione. Abitualmenteappareunnuovopromptperchognishellhailproprioaspettotipico:


mia:~> tcsh [mia@post21 ~]$

3.2.3.2.3. Quale shell sto usando? Senonsapetequaleshell stateutilizzando, potete siacontrollare lalineadelvostroaccountin /etc/passwd,siadareecho$SHELLcomecomando.

3.2.3.3. La vostra home directory


Quandoviconnettetealsistema,lavostrahomedirectory[directorypersonale]ladestinazione iniziale.Inmolticasisitrattadiunasottodirectorydi /home,sebbenepossavariare.Lavostra homedirectorypuesserecollocataneldiscorigidodiunfileserverremoto:inquestocasoessasi putrovare in /nethome/vostronomeutente.Incaso diverso l'amministratore disistema puaveroptatoperunastrutturamenocomprensibileelavostradirectory,adesempio,potrebbe esseresu/disk6/HU/07/jgillard. Nondovetepreoccuparvieccessivamentediqualesiailpercorsodellavostrahomedirectory:infatti ilpercorsocorrettoconservatonellavariabiled'ambiente HOME,nelcasoalcuniprogrammine abbianobisogno.Conilcomandoechopotetevedereilcontenutodiquestavariabile:
orlando:~> echo $HOME /net/home/orlando

Nellavostradirectorypersonalepotetefaretuttocichevipiace:potetemettercitantifileintante 59

IntroduzioneaLinux

directoryquantinevolete,sebbenelospaziototaleperdatieifilesianaturalmentelimitatoacausa dell'hardware,delledimensionidellepartizionie,allevolte,dall'applicazionediunsistemadiquota dapartedell'amministratore. Erainfattipratica comune limitarel'usodeldiscoquandoidischi rigidierano ancora costosi. Algiorno d'oggi ilimitivengono applicati quasi esclusivamente in grossiambienti.Poteteverificaredavoistessil'esistenzadiunlimiteutilizzandoilcomandoquota:
pierre@lamaison:/> quota -v Disquotas for user pierre (uid 501): none

Nelcasosianostatestabilitedellequote, otterreteunalistadellepartizionilimitateedelleloro specifichelimitazioni.L'eccedereilimitipuesserecomunquetolleratoperunbreveperiodocon alcuneminimeonullerestrizioni.Informazionidettagliatesipossonotrovareusandoicomandiinfo quotaomanquota. NessunaQuota? Se ilvostro sistema nonriesce atrovare quota,allora significa chenonsono state applicatelimitazioniall'usodelfilesystem. La vostra directory personale viene indicata con una tilde (~), abbreviazione di /path_to_home/nome_utente. Lo stesso percorso conservato nella variabile HOME, cosicch non dovete fare nulla per attivarlo. Una semplice applicazione: passare da /var/music/albums/arno/2001 a images contenuta nella vostra directory personale utilizzandouncomandoelegante:
rom:/var/music/albums/arno/2001> cd ~/images rom:~/images> pwd /home/rom/images

Piavantiinquestocapitolodiscuteremodeicomandiperlagestionedeifileedelledirectoryallo scopodimantenereordinatalavostradirectorypersonale.

3.2.4. I file di configurazione pi importanti


Comeabbiamoaccennatoinprecedenza,moltifilediconfigurazionesonoripostinelladirectory /etc.Ilcontenutopuesserevisualizzatoricorrendoalcomandocat,cheinviaifiletestualiallo standardoutput(normalmenteilvostromonitor).Lasintassilaseguente: catfile1 file2 ... fileN In questa sezione proveremo ad offrire una panoramica dei file di configurazione pi comuni. Questononunelencoesaustivo:installandopacchettiextrasipossonoaggiungerealtrifiledi configurazionein /etc.Leggendoifilediconfigurazionescopriretechesolitamenteessi sono abbastanza ben commentati ed autoesplicanti. Alcuni file hanno anche delle pagine man che contengonodocumentazioneextra,comemangroup. Tabella33.Ipicomunifilediconfigurazione 60

IntroduzioneaLinux

File

Informazioni/servizio IlfiledeglialiasdipostautilizzatodaiserverdipostaSendmailePostfix.L'usodi unmailservernelmondoUNIXdalunghiannicomuneintuttiisistemiequasi ognidistribuzioneLinuxcontieneancoraunpacchettoSendmail.Inquestofilei nomidell'utentelocalevengonoaccoppiaticoninomireali,quandoessiricorrono negliindirizziEmail,oconaltriindirizzilocali. IfilediconfigurazionedelwebserverApache IlfilediconfigurazioneglobaledellaBourneAgainSHell.Definiscelefunzionie glialiaspertuttigliutenti.Lealtreshellpossonoavereilpropriofiledi configurazioneglobale,comecshrc. Configurazionedelleoperazionidaeseguirsiperiodicamentebackup, aggiornamentideidatabasedisistema,puliziadelsistema,rotazionedeilog,ecc... Leopzionidibasepercerticomandi,comeperuseradd. Filesystemnoti:ext3,vfat,iso9660,ecc... Elencalepartizioniconirelativipuntidimontaggio(mountpoint). Configurazionedelserverftp:chipuconnettersi,qualipartidelsistemasono accessibili,ecc... Filediconfigurazionedeigruppidiutenti.Utilizzateleutilityombragroupadd, groupmodegroupdelpermodificarequestofile.Modificatelomanualmentesolo serealmentesapetecosastatefacendo. Unelencodimacchinechepossonoesserecontattatetramiterete,masenzala necessitdiunserviziodirisoluzionedeinomididominio(DNS).Questononha nullaachefareconlaconfigurazionediretedelsistema,chesiattuacon /etc/sysconfig. Informazioniperl'avvio:modalit,numerodelleconsoleditesto,ecc... Informazionisulladistribuzione(versionedirilascioe/oinfosulkernel) Locazionideifiledilibreria InformazionidiavvioperilLInuxLOader,ilsistemadiavviocheoragradualmente sarsoppiantatodaGRUB. Rotazionedeilog,unsistemacheprevienelaraccoltadiunaquantiteccessivadi filedilog. Directorycontenenteistruzioniperilcomportamentodelmailserver. Configurazionedeimodulicheabilitanofunzionispeciali(driver). MessageOfTheDay:mostratoachiunquesicolleghialsistema(inmodotestuale), puessereusatodall'amministratoredisistemaperannunciareservizi/manutenzioni ecc... Filesystemcorrentementemontati.Siavvisadinonmodificaremaiquestofile. Ordinesecondocuicontattareirisolutorideinomiquandounprocessorichiedela risoluzionediunnomedihost. Configurazionedeimodulidiautenticazione Elencagliutentilocali.Utilizzateleutilityombrauseradd,usermodeuserdelper modificarequestofile.Modificatelomanualmentesoloquandosapeteveramente cosastatefacendo.

aliases

apache bashrc crontabeledirectory cron.* default filesystems fstab ftp*

group

hosts

inittab issue ld.so.conf lilo.conf,silo.conf, aboot.conf,ecc... logrotate.* mail modules.conf motd mtab nsswitch.conf pam.d passwd

61

IntroduzioneaLinux

File printcap

Informazioni/servizio Filediconfigurazionedistampasorpassatomaspessoancorafrequentemente utilizzato.Nonmodificatelomanualmenteamenochenonsappiaterealmentecosa statefacendo. Estesaconfigurazionedisistemadell'ambientedishell:variabili,proprietbasiche deinuovifile,limitazionidellerisorse,ecc... Directorychedefinisconoiserviziattiviperognirunlevel. OrdinedaseguirepercontattareiserverDNS(soloDomainNameServer). PrincipalefilediconfigurazionedelserverSendmail. Configurazionedellaschedasonoraedeglieventisonori. Directorycontenenteifilediconfigurazionedelclientedelserversecureshell Directorycontenenteifilediconfigurazionedelsistema:mouse,tastiera,rete, desktop,orologiodisistema,gestionedell'alimentazioneelettrica,ecc...(specifico diRedHat). ImpostazionidelservergraficoX.RedHatusaXfreecherichiamatonelnomedel principalefilediconfigurazione,Xfree86Config.Contieneinoltreledirettive generaliperiwindowmanagerdisponibilinelsistema,peresempiogdm,fvwm, twm,ecc... IfilediconfigurazionedeiserviziInternetavviatidaldaemondisistemadeiservizi (estesi)Internet(serverchenonavvianodaemonindipendenti).

profile rc* resolv.conf sendmail.cf sndconfigosound ssh sysconfig

X11

xinetd.*oinetd.conf

Nelcorsodiquestaguidaimpareremodipisuquestifileenestudieremoalcuniindettaglio.

3.2.5. I pi comuni device


Idevice(dispositivi),ingenereogniunitperifericadiunPCchenonsialaCPUstessa,vengono presentatialsistemacomevocidelladirectory/dev.UnodeivantaggidiquestoapproccioUNIX di gestione delle periferiche che n l'utente, n il sistema devono preoccuparsi troppo delle caratteristichediqueste. IngeneregliutentinovizidiLinuxoUNIXsonospessosopraffattidallaquantitdinuovinomie concettichesonocostrettiadimparare.Eccoilperchinquestaintroduzionestatoacclusoun elencodeicomunidispositivi. Tabella34.Comuniperiferiche
Nome cdrom console cua* dsp* fd* Deviceodispositivo CDdrive Vocespecialeperlaconsolecorrentementeinuso. Porteseriali Perifericheperilcampionamentoelaregistrazione Nomidellamaggioranzaditipidifloppydrive:quellobase/dev/fd0, unlettoreperfloppyda1.44MB.

62

IntroduzioneaLinux

Nome hd[a-t][1-16] ir* isdn* js* lp* mem midi* mixer*emusic modem mouse(anchemsmouse,logimouse, psmouse,input/mice,psaux) null par* pty* radio* ram* sd* sequencer tty* usb* video*

Deviceodispositivo SupportostandardperperifericheIDEconlacapacitmassimadipartizioni perciascuna Perifericheall'infrarosso GestionedelleconnessioniISDN Joystick Stampanti Memoria Lettorimidi Modelloidealediunmixer(combinaosommasegnali) Modem Tuttiitipidimouse Bidonedellaspazzaturasenzafondo Nomidelsupportodelleporteparallele Pseudoterminali Perradioamatori(HAM) Devicediavvio DischiSCSIconleloropartizioni Perapplicazioniaudiocheusanolecaratteristichedisintetizzazionedella schedasonora(controllorediperifericheMIDI) Consolevirtualicheemulanoiterminalivt100 PerifericheUSB(schede,scanner,ecc...) Perl'usodiunaschedagraficaconsupportovideo.

3.2.6. I pi comuni file di variabili


Nelladirectory /vartroviamouninsiemedivariabiliperlaconservazionedidatispecificinon costanti(alcontrariodelprogrammalsodeifilediconfigurazionedelsistemachecambianopoche volteoaddiritturamai).Tuttiifilechecambianofrequentemente,comequellidilog,lecaselle postali,ilockfile,glispooler,ecc..,vengonotenutiinunasottodirectorydi/var. Comemisuradisicurezzaquestifilesonotenutinormalmenteinluoghiseparatidaiprincipalifile disistema,cosicchsiamoingradodiosservarlimeglioediimpostare,senecessario,permessipi stretti.Moltidiquestifilehannopurebisognodipermessipiestesidelsolito,come/var/tmp, chenecessitadiesserescrivibiledachiunque.Molteattivitdell'utentepotrebberosvolgersicol, generateanchedaanonimiutentiInternetconnessialvostrosistema.Questounodeimotiviper cuiladirectory /var,compresetuttelesuesottodirectory,sitrovainunapartizioneseparata.In questomodo,peresempiononsussisteilrischiocheunamailbomb,invadailrestodelsistema operativochecontienedatipiimportanti,comeivostriprogrammieifilediconfigurazione.

63

IntroduzioneaLinux

/var/tmp/e/tmp I file in /tmp possono essere cancellati senza preavviso da regolari operazioni di sistemaoacausadiunriavviodellostesso.Inalcunisistemi(personalizzati)anche /var/tmp potrebbecomportarsiinmodoimprevedibile.Tuttavia,dalmomentoche nonilcasonormale,visuggeriamodiusareladirectory/var/tmpperilsalvataggio deifiletemporanei.Incasodidubbi,controllateconilvostroamministratoredisistema. Segestitevoiilvostrosistema,potreteessereragionevolmentecertichequestoun luogosicurosenonavetecambiatoleimpostazionidi/var/tmp(comeroot,inquanto unutentenormalenonpufarlo). Qualsiasicosafacciate,provateamantenereiprivilegigarantitiadunutentenormale noncominciateasalvarefiledirettamentenelladirectoryradice(/)delfilesystem,non metteteli in /usr oinaltre sottodirectory oinunaltro postoriservato. Ci limita notevolmenteilvostroaccessoaifilesystemsicuri. UnodeiprincipalisistemidisicurezzadiUNIX,chenaturalmentestatobeneimplementatosu tutte le macchine Linux, la funzione di conservazione dei log, che registra tutte le azioni dell'utente, i processi, gli eventi di sistema, ecc... Il file di configurazione del cosiddetto syslogdaemon stabilisce quale informazione e per quanto essa sar mantenuta registrata. La posizioneoriginaledituttiilog/var/log,checontienefiledifferentiperilogd'accesso,dei server,perimessaggidisistema,ecc... In /var troviamodisolitoidatideiserver,mantenutiquipersepararlidaidaticriticicomeil programmaserverstessoeisuoifilediconfigurazione.UntipicoesempioinLinux/var/www, checontienelepagineHTMLattive,scripteimmaginicheoffreunwebserver.L'alberoFTPdiun serverFTP(datichepossonoesserescaricatidaunclienteremoto)altresbenconservatoinuna dellesottodirectorydi/var.Siccometalidatisonopubblicamenteaccessibiliespessomodificabili dautentianonimi,pisicurotenerliqui,lontanidapartizioniodirectorycondatisensibili. In molte installazioni ditipostazione dilavoro, /var/spool avr almeno ledirectory at e cron,contenentileoperazioniprogrammate.Inambientid'ufficiotaledirectorycontienelpd,che tiene sia lecode distampa edaltri file diconfigurazione della stampante, siaifiledei log di quest'ultima. Insistemiservertroveremoingenere /var/spool/mail,contenentelapostainarrivodegli utenti locali, ordinata in un file per utente, la inbox dell'utente. Una directory correlata mqueue,l'areadispoolerperimessaggidipostanoninviati.Questepartidelsistemasonomolto occupateneiserverdipostaconmoltiutenti.Ancheinewsserverusanol'area /var/spool a causadell'enormequantitdimessaggidaelaborare. La directory /var/lib/rpm specifica delle distribuzioni basate su RPM (RedHat Package Manager):l'areadovesonoconservateleinformazionideipacchettiRPM.Anchealtrigestoridi pacchettisolitamentesalvanoilorodatidaqualchepartein/var.

64

IntroduzioneaLinux

3.3. Manipolare i file


3.3.1. Vedere le propriet dei file
3.3.1.1. Di pi su ls
Comeabbiamogidetto,oltrealnomedelfile,lspufornireunaquantitdiulterioriinformazioni, adesempioiltipodifile.E'inoltrecapacedimostrareipermessidiunfile,lasuadimensione,il numero di inode, data e ora di creazione, proprietari e quantit di collegamenti ad esso. Con l'opzione-adilspossonoesserevisualizzatiifilechenormalmentesononascostiallavista.Questi sonoifilechehannoilnomeinizianteconunpunto.Unacoppiadiesempitipiciincludeifiledi configurazione dellavostra home directory. Seavete lavorato perunpo'conuncerto sistema, avretenotatochedecinedifileedirectorysonostaticreatisenzaesserestatielencatiinunindicedi directory.Oltreaci,ognidirectorycontieneunfilechiamatosoloconunpunto(.)edunaltrocon duepunti(..)chesonoutilizzatiincombinazioneconilloronumerodiinodeperdeterminarela posizionedelladirectorynellastrutturaadalberodelfilesystem. Inrealtdovresteleggere lepagineInfodi ls,dalmomentochesitrattadiuncomandomolto frequente con molte opzioni utili. Le opzioni si possono combinare, come succede con molti comandiUNIXeleloroopzioni.Unacombinazionecomunels-al:mostraunlungoelencodi fileeleloroproprietcoscomeledestinazioniacuipuntaciascuncollegamentosimbolico. ls -latr mostra gli stessi file, ma ora in ordine di ultima modifica inverso in modo che i file modificatipidirecenteappaionoallafinedell'elenco.Eccoquiunpaiodiesempi:
krissie:~/mp3> ls Albums/ Radio/ Singles/ krissie:~/mp3> ls ./ .thumbs Radio ../ Albums/ Singles/ gene/ index.html

gene/ index.html

krissie:~/mp3> ls -l Radio/ total 8 drwxr-xr-x 2 krissie krissie drwxr-xr-x 2 krissie krissie krissie:~/mp3> ls -ld Radio/ drwxr-xr-x 4 krissie krissie krissie:~/mp3> ls -ltr total 20 drwxr-xr-x 4 krissie -rw-r--r-1 krissie drwxrwxr-x 30 krissie drwxr-xr-x 2 krissie drwxrwxr-x 13 krissie

4096 Oct 30 4096 Sep 24 4096 Oct 30

1999 Carolina/ 1999 Slashdot/ 1999 Radio/

krissie krissie krissie krissie krissie

4096 453 4096 4096 4096

Oct 30 1999 Radio/ Jan 7 2001 index.html Oct 20 17:32 Singles/ Dec 4 23:22 gene/ Dec 21 11:40 Albums/

Inmolteversioni Linux ls normalmenteunaliasdicolorls.Questacaratteristica permettedi vedereiltipodeifilesenzaapplicarenessunaopzionea ls.Perfareci,ognitipodifilehaun propriocolore.Loschemastandardsitrovain/etc/DIR_COLORS: Tabella35.Schemabasedeicoloriincolorls 65

IntroduzioneaLinux

Colore blu rosso bianco rosa azzurro giallo verde rossolampeggiante

Tipodifile directory archivicompressi fileditesto immagini collegamenti dispositivi fileeseguibili collegamentiinterrotti

Maggioriindicazionisitrovanonellapaginaman.Neiprimitempilestesseinformazioni[sultipo difile]venivanorappresentateapplicandodeisuffissiadogninomedifilenonstandard.Perl'usoin monocromatico(comelastampadiunelencodidirectory)eperunaleggibilitgenerale,ancora utilizzatoquestoschema: Tabella36.Schemabasedeisuffissiperls Carattere nessuno / * @ = | Tipodifile filenormale directory fileeseguibile collegamento socket namedpipe

Unadescrizionecompletadellefunzionalitecaratteristichedelcomando ls puesserelettacon infocoreutils ls.

3.3.1.2. Altri strumenti


Perscopriredipisultipodeidaticoncuiabbiamoachefare,possiamousareilcomando file. Effettuandodeterminateprovechecontrollanoleproprietdiunfilenelfilesystem(numerimagici etestdilinguaggio) file tentadifareunaeducatacongetturacircailformatodiunfile.Alcuni esempi:
mike:~> file Documents/ Documents/: directory mike:~> file high-tech-stats.pdf high-tech-stats.pdf: PDF document, version 1.2 mike:~> file Nari-288.rm Nari-288.rm: RealMedia file

66

IntroduzioneaLinux

mike:~> file bijlage10.sdw bijlage10.sdw: Microsoft Office Document mike:~> file logo.xcf logo.xcf: GIMP XCF image data, version 0, 150 x 38, RGB Color mike:~> file cv.txt CV.txt: ISO-8859 text mike:~> file image.png image.png: PNG image data, 616 x 862, 8-bit grayscale, non-interlaced mike:~> file figure figure: ASCII text mike:~> file me+tux.jpg me+tux.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), 28 Jun 1999, 144 x 144 mike:~> file 42.zip.gz 42.zip.gz: gzip compressed data, deflated, original filename, '42.zip', last modified: Thu Nov 1 23:45:39 2001, os: Unix mike:~> file vi.gif vi.gif: GIF image data, version 89a, 88 x 31 mike:~> file slide1 slide1: HTML document text mike:~> file template.xls template.xls: Microsoft Office Document mike:~> file abook.ps abook.ps: PostScript document text conforming at level 2.0 mike:~> file /dev/log /dev/log: socket mike:~> file /dev/hda /dev/hda: block special (3/0)

Il comando file ha una serie di opzioni, fra cui l'opzione -z per curiosare all'interno di file compressi(v.infofileperunadescrizionedettagliata).Teneteinmentecheirisultatidifilenon sonoassolutitrattandosidisemplicisupposizioni:inaltreparole,filepuesseretrattoininganno. Perchtuttoquestotrambustoperitipidifileeiformati? Inbreve,tratteremodiunacoppiadistrumentialineadicomandoperguardareifiledi puro testo. Tali strumenti non funzionano se usati con i tipi di file sbagliati. Nel peggioredeicasi,essimanderannoincrashilvostroterminalee/ofarannounsaccodi segnalisonori.Sevicapita,bastachiuderelasessionedelterminaleericominciarecon unanuova.Macercatedievitarlo,perchnormalmentemoltofastidiosoperlealtre persone.

3.3.2. Creare e cancellare file e directory


3.3.2.1. Combinare un pasticcio...
... non una cosa complicata da fare. Oggi quasi ogni sistema collegato in rete e 67

IntroduzioneaLinux

conseguentementeifilevengonocopiatidaunamacchinaall'altra.E,specialmentequandosista lavorandoinunambientegrafico,lacreazionedinuovifilesemplicissimaespessoeseguita senza il consenso dell'utente. Per illustrare il problema, ecco qui il contenuto integrale di una directorydiunnuovoutente,creatainunsistemaRedHat:
[newuser@blob user]$ ls -al total 32 drwx-----3 user user drwxr-xr-x 6 root root -rw-r--r-1 user user -rw-r--r-1 user user -rw-r--r-1 user user drwxr-xr-x 3 user user -rw-r--r-1 user user -rw------1 user user

4096 4096 24 Jan 191 Jan 124 Jan 4096 Jan 3511 Jan 61 Jan

Jan 16 13:32 . Jan 16 13:32 .. 16 13:32 .bash_logout 16 13:32 .bash_profile 16 13:32 .bashrc 16 13:32 .kde 16 13:32 .screenrc 16 13:32 .xauthDqztLr

Diprimoacchito,ilcontenutodiunadirectorypersonaleusatanonsembraneppureinbrutte condizioni:
olduser:~> ls app-defaults/ articles/ bin/ brol/ c/ closed/ crossover/ Desktop/ Desktop1/ desktoptest/ Documents/ Emacs@ Fvwm@ GNUstep/ images/ Machine@ mail/ Mail/ mp3/ Nautilus/ nqc/ ns_imap/ nsmail/ office52/ OpenOffice.org638/ staroffice6.0/ training/ webstart/ xml/ Xrootenv.0

Maquandotuttiifileeledirectoryinizianticonunpuntosonoincluse,esistono185oggettiin questa directory. Ci si spiega perch molte applicazioni hanno le proprie directory e/o file, contenenti impostazioni specifiche dell'utente, nella directory personale di costui. Abitualmente questifilevengonocreatilaprimavoltacheavviatel'applicazione.Inalcunicasiverreteavvisati quandonecessariocreareunanuovadirectorynonancoraesistente,mailpidellevoltetutto vieneeffettuatoautomaticamente. Inoltrenuovifilesonocreatiapparentementeincontinuazionepoichgliutentivoglionosalvare file,tenereversionidifferentideiproprilavori,usareapplicazioniInternetescaricarefileeallegati nelleloromacchinelocali.Nonsiferma.E'evidentecheunapersonahabisognodiunpreciso schemaperavereunapanoramicadellecose. Nellaprossimasezionediscuteremosucosasignifichipernoitenereinordine.Parleremosolodegli strumentitestualidisponibilinellashell,dalmomentocheglistrumentigraficisonomoltointuitivi ehannoilmedesimoaspettodeigestoridifilepuntaecliccainstileMSWindows,compresele funzionigrafichediaiutoedaltrecaratteristichecheviattendetedaquestogenerediapplicazioni. L'elencoseguenteunapanoramicadeipipopolarigestoridifileperGNU/Linux.Moltidiloro possonoessereavviatidalmenudelvostrodesktopmanager ocliccandosull'iconadellavostra directorypersonaleodalineadicomando,dandoquesticomandi:

nautilus: il file manager di base in Gnome, il desktop GNU. Eccellente documentazione su come lavorare con questo strumento pu essere trovata su http://www.gnome.org. konqueror:il gestore difile usato abitualmente nel desktop KDE. Ilmanuale si trovasuhttp://docs.kde.org.

68

IntroduzioneaLinux

mc: Midnight Commander, il file manager di Unix con lo stile del Norton Commander.Tuttaladocumentazionedisponibilesuhttp://gnu.org/directoryosuun mirrorcomehttp://www.ibiblio.org.

Queste applicazioni meritano certamente diessere provate esolitamente impressionano inuovi arrivatidiLinux,anchesoloperchesisteunacosgrandevariet:questisonosologlistrumentipi diffusi per gestire directory e file, mentre molti altri progetti sono in corso di sviluppo. Ora scopriamone il funzionamento e vediamo come questi strumenti grafici utilizzano i comuni comandiUNIX.

3.3.2.2. Gli strumenti


3.3.2.2.1. Creare directory Unamanierapertenerelecoseinordinequelladiassegnareacertifilelocazionispecifichedi base creando directory esottodirectory (ocartelle esottocartelle sepreferite). Ci sifacon il comandomkdir:
richard:~> mkdir archive richard:~> ls -ld archive drwxrwxrwx 2 richard richard 4096 Jan 13 14:09 archive/

Lacreazionedidirectoryesottodirectoryinunasolamossasifausandol'opzione -p:
richard:~> cd archive richard:~/archive> mkdir 1999 2000 2001 richard:~/archive> ls 1999/ 2000/ 2001/ richard:~/archive> mkdir 2001/reports/Restaurants-Michelin/ mkdir: cannot create directory '2001/reports/Restaurants-Michelin/': No such file or directory richard:~/archive> mkdir -p 2001/reports/Restaurants-Michelin/ richard:~/archive> ls 2001/reports/ Restaurants-Michelin/

Seilnuovofilehabisognodiulterioripermessioltreaquellidibaseperlacreazione,inuovidiritti diaccessopossonoessereimpostatiinunasolamossa,usandoancorailcomandomkdir(v.pagine Infopermaggioriinformazioni).Stiamopertrattarelemodalitd'accessonellaprossimasezione dedicataallasicurezzadeifile. Ilnomediunadirectorydeveattenersi allestesseregoleapplicateainomideicomunifile.Una dellerestrizionipiimportantichenoncipossonoesistereduefileconlostessonomeinuna directory (maricordate cheLinux unsistema operativo chedistingue tralettere maiuscole e minuscole[casesensitive]comeUNIX).Virtualmentenonesistonolimitiallalunghezzadelnome diunfile,madisolitositienepicortodi80caratteriinmododafarlostareinunasolalineadi terminale.Poteteusarequalsiasicarattereapiacerenelnomediunfile,sebbenesiaconsigliabile escludere icaratteri chehannounsignificato speciale perlashell.Incaso didubbi,consultate 69

IntroduzioneaLinux

l'AppendiceC. 3.3.2.2.2. Spostare file Oracheabbiamostrutturatocorrettamentelanostradirectorypersonale,tempodiriorganizzarei filenonclassificatiusandoilcomandomv:


richard:/archive> mv ../report[1-4].doc reports/Restaurants-Michelin/

Questocomandoserveancheperrinominareifile:
richard:~> ls To_Do -rw-rw-r-1 richard richard richard:~> mv To_Do done richard:~> ls -l done -rw-rw-r-1 richard richard 2534 Jan 15 12:39 done 2534 Jan 15 12:39 To_Do

E'evidentechecambiasoloilnomedelfile:tuttelealtreproprietrimangonouguali. Dettagliateinformazionisullasintassielecaratteristichedelcomandomvsipossonotrovarenelle paginemanoInfo.L'usoditaledocumentazionedovrebbeessereilvostroprimopensieroquando incontrateunproblema: facilmentelarispostaadessositrovaproprionelladocumentazionedi sistema. Come gli utenti esperti consultano le pagine man quotidianamente, cos i principianti dovrebberoleggerleognivolta.Dopounpo'imparereteleopzionipicomunideinormalicomandi, maavreteancorabisognodelladocumentazionecomefonteprimariadiinformazioni.Notatechele informazioni contenute negli HOWTO, FAQ, pagine man e cos via, stanno lentamente trasfondendosinellepagineInfo,cheoggisonolafontepiaggiornatadidocumentazioneinlinea (ciodisponibileperlaletturasulsistema). 3.3.2.2.3. Copiare file Lacopiadifileedirectorysieffettuaconilcomando cp.Unafunzioneutilelacopiaricorsiva (copiadituttiifilesottostantiedellesottodirectory)chesiottieneaggiungendol'opzione-Racp. Lasintassigenerale cp[R]dal_fileal_file Come esempio ecco ilcaso dell'utente newguy chedesidera lestesse impostazioni del desktop Gnomechehal'utente oldguy.Unmodoperrisolvereilproblemacopiareleimpostazioni di oldguynelladirectorypersonaledinewguy:
victor:~> cp -R ../oldguy/.gnome/ .

Cirestituiralcunierrorilegatiaipermessisuifile,matuttiquestierrorihannoachefareconifile privati di cui, in ogni caso, newguy non ha necessit. Tratteremo nella prossima parte come cambiarequestipermessiincasoessicostituiscanoveramenteunproblema.

70

IntroduzioneaLinux

3.3.2.2.4. Rimuovere i file Utilizzateilcomandormperrimuoveresingolifile,rmdirperrimuoveredirectoryvuote(usatels aperverificareseunadirectoryvuotaomeno).Ilcomandormhaancheopzioniperrimuovere directory non vuote con tutte le loro sottodirectory (leggete le pagine Info per queste opzioni piuttostopericolose). Quantovuotapuessereunadirectory? E'normalecheledirectory.(punto)e..(puntopunto)nonpossanoessererimosse,dal momentocheessesononecessarieancheinunadirectoryvuotaperstabilireillivello delledirectorynellagerarchiadelfilesystem. InLinux,esattamentecomeinUNIX,nonesisteuncestinoalmenononnellashell,sebbeneci sianonumerosesoluzioniperlamodalitgrafica.Cosicchunfile,unavoltarimosso,nonesistepi edingenerenonc'mododirecuperarloamenochenonabbiatedeibackuposiateveramente rapidieabbiateunamministratoredisistemarealmentebravo.Perproteggereilprincipianteda questo inconveniente, possibile attivare con l'opzione -i il comportamento interattivo dei comandi rm, cp e mv. Intalcasoilsistemanonagirimmediatamentesurichiestama,invece, chiederconferma,richiedendounclicaggiuntivosultastoInvioperprodurreildanno:
mary:~> rm -ri archive/ rm: descend into directory 'archive'? y rm: descend into directory 'archive/reports'? y rm: remove directory 'archive/reports'? y rm: descend into directory 'archive/backup'? y rm: remove directory 'archive/backup/sysbup200112.tar'? y rm: remove directory 'archive/backup'? y rm: remove directory 'archive'? y

Tratteremo di come rendere automatica tale opzione nel Capitolo 7 in cui si parla della personalizzazionedelvostroambientedishell.

3.3.3. Trovare i file


3.3.3.1. Utilizzo delle caratteristiche della shell
Abbiamogivistonell'esempiodellospostamentodeifilecomelashellpugestirepifilealla volta. In quell'esempio la shell rileva automaticamente ci che l'utente vuol dire in base alle richiestecontenutetraleparentesiquadre[e].Lashellpusostituireseriedinumeriedi letteremaiuscoleominuscoleindifferentemente.Essasostituiscepurequanticaratterivoleteconun asteriscoedunsolocarattereconunpuntodidomanda. Tuttiitipidisostituzionipossonoessereusaticontemporaneamente:lashellmoltologicainci. LashellBash,peresempio,nonhaproblemiconespressionicomelsdirname/*/*/*[2-3]. In altre shell, l'asterisco comunemente usato per ridurre gli sforzi di battitura: una persona potrebbescriverecddir*alpostodicddirectory.InBash,comunque,cinonnecessario poichlashellGNUhaunafunzionechiamatacompletamentodeinomideifile:significachevoi 71

IntroduzioneaLinux

potetebattereiprimicaratteridiuncomando(ovunque)odiunfile(nelladirectorycorrente)e,se nonc'possibilitdiconfusione,lashellindovinercosacosaintendetedire.Peresempio,inuna directory contenentemoltifile,potetecontrollaresec'qualchefilecheiniziaconlaletteraA battendosoltantolsAepremendoiltastoTabperduevolte,piuttostochepremereInvio.Seesiste un solo file che inizia per A, questo verr mostrato come argomento di ls (oqualsiasi altro comandodishell)immediatamente.

3.3.3.2. which
Unmodopiuttostosemplicepertrovareifilericorrerealcomando which,che,perl'appunto, ricercaifilerichiestinelledirectoryelencatenelpercorsodiricercadell'utente.Naturalmente,dal momentocheilpercorsodiricercacontienesolopercorsiadirectoryconprogrammieseguibili, which nonfunzionaconifilenormali.Ilcomando whichutilequandoappaionomessaggitipo Commandnotfound.Nell'esempioquisotto,l'utentetinanonpuusareilprogrammaacroread, mentre ilsuocollega nonincontra alcun problema sullostesso sistema. Ilproblema similea quellodelPATH(oPERCORSO) dellaparteprecedente:ilcollegadiTinaledicecheluipu vedereil programmarichiestoin /opt/acroread/bin,maquestadirectorynonsitrovanel percorsodiTina:
tina:~> which acroread /usr/bin/which: no acroread in (/bin:/usr/bin:/usr/bin/X11)

Il problema pu essere risolto scrivendo il percorso completo del comando da avviare o riesportandoilcontenutodellavariabilePATH:
tina:~> export PATH=$PATH:/opt/acroread/bin tina:~> echo $PATH /usr:/usr/bin:/usr/bin/X11:/opt/acroread/bin

Conwhichsipuanchecontrollareseuncomandounaliasdiunaltro:
gerrit:~> which -a ls ls is aliased to 'ls -F --color=auto' ls is /bin/ls

Secinondovessefunzionare,utilizzateilcomandoalias:
tille@www:~/mail$ alias ls alias ls='ls --color'

3.3.3.3. find e locate


Questisonoiveristrumentiutilizzatipertrovarealtripercorsioltreaquellielencatinelpercorsodi ricerca [search path]. Lo strumento find, noto sin da UNIX, molto potente, cosa che pu determinareunacertadifficoltdisintassi.Talecomandononsoloviconsentediricercarenomidi file,maaccettapureledimensionideifile,ladatadell'ultimamodificaealtreproprietdeifile qualicriteridiricerca.L'usopicomunelaricercadeinomideifile: find<percorso> -name <stringadiricerca> 72

IntroduzioneaLinux

Cipuesserecosinterpretato:Cercatuttiifileelesottodirectorycontenuteinundatopercorso estampainomideifilecontenentilastringadiricercanelloronome(nonnellorocontenuto). Altraapplicazionedifindsihaperricercarefilediunacertamisura,comenell'esempioseguente, dovel'utentepetervuoletrovaretuttiifiledellacorrentedirectoryodiunadellesuesottodirectory, chesonopigrandidi5MB:


peter:~> find . -size +5000k psychotic_chaos.mp3

Sescavatenellepagineman,vedretechefindpucompiereoperazionisuifiletrovati.Unsemplice esempiolarimozionedeifile.E'meglioprimaprovaresenzal'opzione -exec chesianostati selezionatiifilegiustiepoiridareilcomandopercancellarli.Sotto,cerchiamofilechefiniscono per.tmp:


peter:~> find . -name *.tmp -exec rm {} \; peter:~>

Ottimizzate! Talecomandorichiamerrmtantevoltequantesarrintracciatounfilecorrispondente aicriteridiricerca.Nelpeggiorcasopotrebbeesseremigliaiaomilionidivolte. E' abbastanzaunbelcaricosulvostrosistema. Unmododiprocederepirealisticosarebbequellodiusareunapipe(|)elostrumento xargs con rm per argomento. In questa maniera il comando rm chiamato solo quandolalineadicomandopiena,alpostodiognifile.GuardateilCapitolo5per maggioriinformazionisull'usodellaredirezionedell'I/Operfacilitareicompitidiogni giorno. Successivamente(nel1999secondolepagineman,dopo20annidafind)statosviluppatolocate. Questoprogrammapifaciledausare,mapilimitatorispettoa find,dalmomentocheilsuo outputsibasasuundatabaseindicizzatodeifilechevieneaggiornatosolounavoltaalgiorno. D'altraparteunaricercaneldatabaselocaterichiedeminoririsorserispettoafindequindimostrai risultatiquasiistantaneamente. Molte distribuzioni Linux oggi usano slocate, un locate migliorato dal punto di vista della sicurezza,laversionemodernadilocatecheimpedisceagliutentidiottenereinformazioniinuscita cheessinonhannoildirittodileggere.Ifilenelladirectorypersonaledi root sonounesempio: questinonsononormalmenteaccessibilialpubblico.Unutentechedesideririntracciarequalcuno checonoscalaCshellpudareilcomandolocate.cshrcpervederetuttigliutentichehannoun filepersonalizzatodiconfigurazionedellaCshell.Supponendochegliutenti root e jenny stiano facendogirareunaCshell,soloilfile/home/jenny/.cshrcverrmostratoenonquellonella homedirectorydiroot.Inmoltisistemilocateuncollegamentosimbolicoalprogrammaslocate:
billy:~> ls -l /usr/bin/locate lrwxrwxrwx 1 root slocate 7 Oct 28 14:18 /usr/bin/locate -> slocate*

73

IntroduzioneaLinux

L'utentetinaavrebbepotutousarelocatepertrovarel'applicazionedesiderata:
tina:~> locate acroread /usr/share/icons/hicolor/16x16/apps/acroread.png /usr/share/icons/hicolor/32x32/apps/acroread.png /usr/share/icons/locolor/16x16/apps/acroread.png /usr/share/icons/locolor/32x32/apps/acroread.png /usr/local/bin/acroread /usr/local/Acrobat4/Reader/intellinux/bin/acroread /usr/local/Acrobat4/bin/acroread

Ledirectory chenoncontengonoilnome bin nonpossonocontenere ilprogramma (esse non contengonofileeseguibili).Restanotrepossibilit.Ilfilein/usr/local/binilsolochetina avrebbericercato:uncollegamentoalloscriptdishellcheavvial'attualeprogramma:


tina:~> file /usr/local/bin/acroread /usr/local/bin/acroread: symbolic link to ../Acrobat4/bin/acroread tina:~> file /usr/local/Acrobat4/bin/acroread /usr/local/Acrobat4/bin/acroread: Bourne shell script text executable tina:~> file /usr/local/Acrobat4/Reader/intellinux/bin/acroread /usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped

Permantenereilpercorsopibrevepossibile,inmodotalecheilsistemanondebbacercaretroppo alungoognivoltacheunutentevuoleeseguireunprogramma,aggiungeremo/usr/local/bin alpercorsoenonlealtredirectory,contentisolamenteifilebinaridiunospecificoprogramma, mentre/usr/local/bincontienealtriutiliprogrammi. Dinuovo:unadescrizionedellefunzionalitcompletedi find edi locate possonoesseretrovate nellepagineInfo.

3.3.3.4. Il comando grep


3.3.3.4.1. Filtraggio delle linee in generale Un semplice ma potente programma, grep, viene utilizzato per filtrare le linee in ingresso e restituirecertimodelliinuscita.Esistono letteralmentemigliaiadiapplicazioniperilprogramma grep.Nell'esempioseguente,jerryusagreppervederecomehautilizzatofind:
jerry:~> grep -a find .bash_history find . -name userinfo man find find ../ -name common.cfg

Ricercanellahistory Pureutileinquesticasilafunzionediricercadibash,chesiattivapremendoinsieme Ctrl+R,comenell'esempiodovevogliamocontrollarenuovamentechecosaabbiamo fattoconl'ultimofind:


thomas ~> ^R (reverse-i-search)'find': find '/home/thomas' -name *.xml

74

IntroduzioneaLinux

Battete lavostrastringadiricerca alprompt diricerca. Picaratteri battereteepi ridurreteirisultatidellaricerca.Questaleggelacronologia(history)delcomandodella sessione di shell (che viene scritta in .bash_history della vostra directory personale quando voi chiudete quella sessione). Viene mostrata la pi recente apparizionedellavostrastringadiricerca.Sevoletevedereicomandiprecedentiche contengonolamedesimastringa,battetedinuovoCtrl+R(v.pagineInfosuBashper sapernedipi). TuttigliUnixconunminimodidecenzahannoundizionarioinlinea:cospureLinux.Ildizionario unelencodelleparolenoteinunfilechiamatowords,posizionatoin /usr/share/dict.Per controllarerapidamentelascritturacorrettadiunaparola,nonserveun'applicazionegrafica:
william:~> grep pinguin /us/share/dict/words william:~> grep penguin /us/share/dict/words penguin penguins

Dizionariocontroelencodiparole Alcune distribuzioni offrono il comando dict che mette a disposizione maggiori funzionalitrispettoallasemplicericercadiparolediunelenco. Chiilproprietariodellahomedirectorydopolamia?Hey,c'ilsuonumerotelefonico!
lisa:~> grep gdbruyne /etc/passwd gdbruyne:x:981:981:Guy Debruyne, tel 203234:/gdbruyne:/bin/bash

E,dinuovo,quall'indirizzoemaildiArno?
serge:~/mail> grep -i arno * sent-mail: To: <Arno.Hintjens@celeb.com> sent-mail: On Mon, 24 Dec 2001, Arno Hintjens@celeb.com wrote:

findelocatevengonospessousatiincombinazionecongrepperrealizzaredellericercheserie.Per maggioriinformazioni,v.Capitolo5sullaredirezionedell'I/O. 3.3.3.4.2. Caratteri speciali Icaratterichehannounospecialesignificatoperlashelldevonoesseresegnalaticonilcaratteredi escape:nellaBashlasbarrainversa,comeinmolteshell,edeterminalospecialesignificatodel caratteresuccessivo.Lashellconoscesvariaticaratterispecialitracui,ipicomuni,/,.,?e *.UnelencocompletosiputrovarenellepagineInfoenelladocumentazionedellavostrashell. Peresempio,direchevoletevedereilfile*alpostodituttiifilediunadirectory,doveteusare less\* Lostessovaleperinomidifilecontenentiunospazio: 75

IntroduzioneaLinux

catThis\ File

3.3.4. Pi modi di vedere il contenuto dei file


3.3.4.1. In generale
Eccettocat,chenonfamoltodipidiinviareifileallostandardoutput,cisonoaltristrumentiper vedereilcontenutodeifile. Naturalmentelamanierapisemplicesarebbequelladiusarestrumentigraficialpostodiquellia lineadicomando.Nell'introduzioneabbiamogidatounrapidosguardoadunaapplicazioneda ufficio,OpenOffice.org.AltriesempisonoGIMP(siavviacongimpdallalineadicomando)GNU ImageManipulatingProgram,xpdfpervedereifilePDF(PortableDocumentFormat),GhostView (gv)pervedereifilePostScript,Mozilla/Firefox,links(unbrowserinmodalittesto),Konqueror, Operaemoltialtriperquantoriguardaicontenutidelweb,XMMS,Cdplayealtripericontenuti deifilemultimediali,AbiWord,Gnumeric,Koffice,ecc...,pertuttiigeneridiapplicazionid'ufficio ecosvia.EsistonomigliaiadiapplicazioniLinux:elencarletutterichiederebbegiorni. Invecenoiciconcentreremosulleapplicazionidishelloinmodalittesto,chesonolabaseditutte lealtreapplicazioni.Questicomandilavoranomeglioinunambientetestualesufilecontenenti testo.Incasodiincertezza,controllateprimaconilcomandofile. Vediamo cosquali strumenti testuali utilizzabili percuriosare all'internodeifilesonoanostra disposizione. Problemidifont Glistrumentidipurotestocomequellicheoratratteremo,spessoincontranoproblemi conifiledipurotestoacausadellacodificadeifontutilizzataconqueifile.Caratteri speciali, tipo i caratteri alfabetici accentati, i caratteri cinesi e gli altri caratteri provenienti dalinguaggi cheusano insiemidicaratteri differenti dallacodifica base en_US e cos via, sono poi visualizzati in modo errato o rimpiazzati da robaccia illeggibile.QuestiproblemisarannodiscussinellaSezione7.4.

3.3.4.2. less is more


Senza dubbio avrete sentito prima o poi qualcuno pronunciare questa frase lavorando in un ambienteUNIX.UnpezzettodistoriadiUNIXspiegaci:

Primacifucat.L'uscitadeidatifluivainmodoincontrollabile. Poivennepg,chesipuancoratrovareinvecchiUNIX.Questocomandoproduceil testoinuscitaunapaginaallavolta. Il programma more fu una versione rivista di pg. Questo comando ancora disponibileinognisistemaLinux. less la versione GNU di more ed ha delle caratteristiche extra permettendo l'evidenziazionedellestringhediricerca,loscorrimentoall'indietro,ecc...Lasintassi moltosemplice:

76

IntroduzioneaLinux

lessnome_del_file MaggioriinformazionisitrovanonellepagineInfo. Conoscetegigliimpaginatori(pager)dalmomentocheessisonostatiusatipervederelepagine man.

3.3.4.3. I comandi head e tail


Questiduecomandimostranorispettivamentelenprime/ultimelineediunfile.Perosservaregli ultimidiecicomandiusati:
tony:~> tail -10 .bash_history locate configure | grep bin man bash cd xavtv & grep usable /usr/share/dict/words grep advisable /usr/share/dict/words info quota man quota echo $PATH frm

headfunzionainmodosimile.Ilcomandotailhaunautilefunzionedimostrareincontinuazionele ultime n linee diun file che cambia costantemente. Tale opzione -f viene spesso usata dagli amministratoridisistemapercontrollareifiledilog(maggioriinformazionisitrovanoneifiledi documentazionedelsistema).

3.3.5. Collegare i file


3.3.5.1. Tipi di collegamento
Dalmomentocheorasappiamodipisuifileelalororappresentazionenelfilesystem,ungioco daragazzicapireicollegamenti(link,shortcut o scorciatoie).Unlinknonnientedipidiun modoperassegnaredueopinomidifileallostessoinsiemedidatidifile.Esistonoduemaniere perottenereci:

Hard link(collegamentofisso):siassociano due opinomi difilealmedesimo inode.Glihardlinkcondividonoglistessiblocchididatineldiscorigido,mentre continuanoacomportarsicomefileindipendenti. C' unosvantaggio immediato: icollegamenti fissi nonpossono essere creati tra partizioniinquantoinumeridiinodesonouniciperunadatapartizione.

Softlinkolinksimbolico(collegamentosimbolicoo,inbreve,symlink):unpiccolo filechepuntaadunaltrofile.Uncollegamentosimbolicocontieneilpercorsodel file di destinazione (target file) invece di una locazione fisica sul disco rigido. 77

IntroduzioneaLinux

Siccome con questo metodo non si fa uso di inode, i collegamenti possono espandersitralepartizioni. Iduetipidicollegamentosicomportanoinmodosimile,manonsonolastessacosa,comeviene illustratonelloschemaseguente: Figura32.Ilmeccanismodeicollegamentihardesoft

Notatechelarimozionedeltargetfilediunlinksimbolicorendeinutilequest'ultimo. Ogni comune fileinizialmente unhardlink.Icollegamenti fissinonpossono estendersi api directorydelmomentocheessifannoriferimentoagliinodeeinumeridiinodesonouniciperuna datapartizione. Sipotrebbearguirechecisiaunterzotipodicollegamento,illinkinspazioutente(userspace link),chesarebbesimileallescorciatoiediMSWindows.Questisonodeifilecontenentimetadati chepossonoessereinterpretatisolodalgestoregraficodifile.Perilkernelelashellquestisono solo normali file. Essi potrebbero terminare con i sufissi .desktop o .lnk: possiamo trovare un esempioin~/.gnome-desktop:
[dupont@boulot .gnome-desktop]$ cat La\Maison\ Dupont [Desktop Entry] Encoding=Legacy-Mixed Name=La Maison Dupont Type=X-nautilus-home X-Naautilus-Icon=temp-home URL=file:///home/dupont

QuestoesempiotrattodaundesktopKDE:
[lena@venus Desktop]$ cat camera [Desktop Entry] Dev=/dev/sda1

78

IntroduzioneaLinux

FSType=auto Icon=memory MountPoint=/mnt/camera Type=FSDevice X-KDE-Dynamic-Device=true

Lacreazionediquestotipodicollegamentoabbastanzafacilericorrendoallefunzionidelvostro ambientegrafico.Seavestebisognodiaiuto,lavostradocumentazionedisistemapotrebbeesserela vostraprimarisorsa. NellaprossimasezionestudieremolacreazionedilinksimboliciinstileUNIXricorrendoallalinea dicomando.

3.3.5.2. Creare collegamenti simbolici


Il link simbolico (symlink) particolarmente interessante per gli utenti principianti: esso abbastanzafaciledariconoscereenondovetepreoccuparvidellepartizioni. Ilcomandopercrearelinkln.Percrearesymlinkdoveteusarel'opzione-s: ln-s filedacollegare nomedelcollegamento Nell'esempioseguente,l'utentefreddycreaunlinkinunasottodirectorydiquellapersonaleaduna directorydiun'altrapartedelsistema:
freddy:~/music> ln -s /opt/mp3/Queen/ Queen freddy:~/music> ls -l lrwxrwxrwx 1 freddy freddy 17 Jan 22 11:07 Queen-> /opt/mp3/Queen

Ilinksimbolicisonosemprefilemoltocorti,mentreglihardlinkhannolestessedimensionidelfile originale. L'usodeilinksimboliciampiamentediffuso.Essisonospessousatiperrisparmiarespaziosul disco,perfareunacopiadiunfilealfinedisoddisfarelerichiestediinstallazionediunnuovo programmachesiattendeditrovareinunaltroluogo:sonoutilizzatipercorreggere scriptche improvvisamentedevonogirareinunnuovoambienteepossonogeneralmenterisparmiareunsacco dilavoro.Unamministratoredisistemapudecideredispostareledirectorypersonalidegliutenti inunaltroposto, disk2 peresempio,masevuolechetuttofunzionicomeprima,comeilfile /etc/passwd,conunosforzominimopucreareunsymlinkda /home allanuovaposizione /disk2/home.

3.4. La sicurezza dei file


3.4.1. Diritti di accesso: la prima linea di difesa di Linux
IlmodellodisicurezzadiLinuxsibasasuquelloutilizzatoneisistemiUNIX,edinflessibilecome quest'ultimo(equalchevoltadipi),chegiabbastanzarobusto.InunsistemaLinuxognifile 79

IntroduzioneaLinux

diproprietdiunutenteediungruppodiutenti.Esisteancheunaterzacategoriadiutentichenon sononl'utenteproprietario,nappartengonoalgruppoproprietariodelfile.Ipermessidilettura, scritturaedesecuzionepossonoesseregarantitionegati. Abbiamogiusatol'opzionelongperelencareifileconilcomandols-l,sebbeneperaltrimotivi. Talecomandomostraancheipermessideifileattribuitialletrecategoriediutenti:essivengono indicatidanovecarattericheseguonoilprimocarattere,costituitodall'indicatoredeltipodifile postoall'iniziodellalineadelleproprietdelfile.Comevedetenell'esempioseguente,leprimetre letterediquestaseriedinovemostraidirittidiaccessodell'attualeutenteproprietariodelfile.Le successivetreletteresonorelativealgruppoacuiappartieneilfile,mentreleultimetreriguardano gli altri utenti. Ipermessi sono sempre nello stesso ordine: lettura, scrittura ed esecuzione per l'utente(user),ilgruppo(group)eglialtri(other).Alcuniesempi:
marise:~> ls -l To_Do -rw-rw-r-1 marise users marise:~> ls -l /bin/ls -rwxr-xr-x 1 root root 5 Jan 15 12:39 To_Do 45948 Aug 9 15:01 /bin/ls*

Ilprimounnormalefile(primotrattino).Gliutenticonnome marise oappartenentialgruppo userspossonoleggereescrivere(modificare/spostare/cancellare)ilfilemanonpossonometterloin esecuzione(secondoeterzotrattino).Tuttiglialtriutentihannosoloilpermessodileggerequesto file,manonpossononscriverlo,neseguirlo(quartoequintotrattino). Ilsecondoesempiounfileeseguibile.Ladifferenza:ognunopueseguirequestoprogrammama doveteessererootperpoterlomodificare. LepagineInfospieganodettagliatamentecomeilcomandolsgestiscelarappresentazionedeidiritti diaccesso(v.lasezioneWhatinformationislisted). Perunfacileutilizzoconicomandi,siaidirittiomodidiaccessosiaigruppihannouncodice: osservateletabelleseguenti. Tabella37.Icodicidellemodalitdiaccesso Codice 0o 4or 2ow 1ox Significato Ildirittodiaccessochesipensaessereinquestaposizionenonvieneconcesso L'accessoinletturaconcessoallacategoriadiutentidefinitainquestaposizione Ilpermessodiscritturaconcessoallacategoriadiutentidefinitainquestaposizione Ilpermessodiesecuzioneconcessoallacategoriadiutentidefinitainquestaposizione

Tabella38.Codicideigruppid'utenti Codici u g o 80 Significato permessidell'utente(user) permessidelgruppo(group) permessiperglialtri(others)

IntroduzioneaLinux

Questo chiaro schema viene applicato molto rigidamente, cosa che rende possibile un elevato livellodisicurezzaperfinosenzalasicurezzadirete.Fralealtrefunzioni,loschemadisicurezzasi occupadell'accessoaiprogrammidapartedegliutenti,pufornirefileinbasealle necessitdi conoscenza eproteggeidatisensibilicomeledirectorypersonali eifilediconfigurazionedel sistema. Dovrestesaperechecosailvostronomeutente.Incasocontrario,puesseremostratousandoil comandoid,chemostraancheilgruppobaseacuiapparteneteedeventualmenteglialtrigruppidi cuisietemembri:
tilly:~> id uid=504(tilly) gid=504(tilly) groups=504(tilly),100(users),2051(org)

Ilvostronomeutenteconservatoanchenellavariabiled'ambienteUSER:
tilly:~> echo $USER tilly

3.4.2. Gli strumenti


3.4.2.1. Il comando chmod
Unanormaleconseguenzadell'applicazionedirigidipermessideifile(equalchevoltaancheuna seccatura)cheidirittid'accessosidovrannocambiareperognigeneredimotivo.Perfareci usiamo il comando chmod ed alla fine to chmod diventa un verbo inglese quasi accettabile, significandoilcambiodellemodalitd'accessoadunfile.Ilcomandochmodpuessereutilizzato conopzionialfanumericheonumerichecomemeglioritenete. L'esempioseguenteusaleopzionialfanumericheperrisolvereunproblemachedisolitosipresenta coninuoviutenti:
asim:~> ./hello bash: ./hello: bad interpreter: Permission denied asim:~> cat hello #!/bin/bash echo Hello, World asim:~> ls -l hello -rw-rw-r-1 asim asim:~> chmod u+x hello asim:~> ./hello Hello, World asim:~> ls -l hello -rwxrw-r-1 asim asim 32 Jan 15 16:29 hello* asim 32 Jan 15 16:29 hello

Glioperatori+esonousatiperconcedereonegareuncertodirittoaduncertogruppo:sono permessecombinazioniseparate.LepagineInfoemancontengonodegliutiliesempi.Ecconequi 81

IntroduzioneaLinux

unaltrochetrasformailfiledelprecedenteesempioinunfilepersonaledell'utenteasim:
asim:~> chmod u+rwx,go-rwx hello asim:~> ls-l hello -rwx-----1 asim asim 32 Jan 15 16:29 hello*

Iltipodiproblemamanifestantesiinunmessaggiodierrorechedicecheilpermessonegatoda qualcheparte,normalmentedipendeinmolticasidaunproblemaconiprivilegid'accesso.Anche commenticomeIerifunzionavaoFunzionaquandoloavviocomerootderivanoilpidelle voltedaerratipermessideifile. Usandochmodconargomentinumerici,ivaloridiognidirittod'accessoconsentitodevonoessere conteggiatiinsiemepergruppo.Cosotteniamounnumeroditrecifrecheilvaloresimbolico delleimpostazionicreateconchmod.Latabellaseguenteelencalecombinazionipicomuni: Tabella39.Protezionedeifileconchmod Comando chmod400 file chmod500 directory chmod600 file chmod644 file chmod660 file chmod700 file chmod755 directory chmod775 file chmod777 file Significato Perproteggereunfilecontrosovrascrittureaccidentali. Perproteggervidacancellazioni,ridenominazioniospostamenti accidentalidifiledaquestadirectory. Unfileprivatochepuesseremodificatosolodall'utentecheha datoquestocomando. Unfileleggibilepubblicamentechepuesseremodificatosolo dall'utentechel'hamessoadisposizione. Gliutentiappartenentialvostrogruppopossonomodificarequesto filementreglialtrinonpossonoassolutamenteaccedervi. Proteggeunfilecontroogniaccessodapartedeglialtriutenti, mentrel'utenteproprietariohaancorailpienoaccesso. Perfilechedovrebberoessereleggibiliedeseguibilidaglialtri,ma modificabilisolodall'utenteproprietario. Modalitstandardperlacondivisionediunfileinungruppo. Chiunquepufaredituttosuquestofile.

Seinseriteunnumeroconmenoditrecifrecomeargomentodichmod,icaratteriomessivengono rimpiazzaticondeglizeroacominciaredasinistra.Effettivamentec'unaquartacifraneisistemi Linux,cheprecedeleprimetreedimpostaspecialimodalitdiaccesso.Qualsiasiinformazionesu ci(emoltoaltroancora)sitrovanellepagineInfo.

3.4.2.2. Accesso ad un altro gruppo


Quando battete id nella linea di comando, ottenete un elenco di tutti i gruppi a cui potete 82

IntroduzioneaLinux

appartenere, preceduti dai vostri nome utente e ID e dal nome del gruppo e ID con cui siete correntementeconnessi.ComunqueinmoltisistemiLinuxpoteteessereattivamentecollegatisolo conungruppoallavolta.Dibasequesto gruppoattivo o primario quelloassegnatovinelfile /etc/passwd.Ilquartocampodiquestofilecontienel'IDdelgruppoprimariodegliutenti,che sipuricercarenelfile/etc/group.Unesempio:
asim:~> id uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web) asim:~> grep asim /etc/passwd asim:x:501:501:Asim El Baraka:/home/asim:/bin/bash asim:~> grep 501 /etc/group asim:x:501:

Ilquartocamponellalineada /etc/passwdcontieneilvalore501cherappresentailgruppo asim nell'esempio precedente. Da /etc/group possiamo ottenere il nome corrispondente a questoIDdelgruppo.Quandosiconnettealsistema,questoilgruppoacuiappartieneasim. Schemadelgruppoprivatodell'utente Perconsentireunamaggioreflessibilit,moltisistemiLinuxseguonoilcosiddettouser privategroupscheme (oschemadelgruppoprivatodell'utente)cheassegnaciascun utenteinprimoluogoalpropriogruppo.Talegruppoungruppochecontienesolo questoparticolareutente,daquiilnomegruppoprivato.Normalmentequestogruppo ha lo stesso nome del nome di login dell'utente, cosa che pu creare una leggera confusione. Aparteilpropriogruppoprivato,l'utente asim puanchestareneigruppi users e web.Poich questisonogruppisecondaripertaleutente,costuidovrusare newgrp perregistrarsiinunodi questigruppi(utilizzategpasswdperimpostareprimalapassworddelgruppo).Nell'esempio,asim devecrearefilediproprietdelgruppoweb.
asim:/var/www/html> newgrp web asim:/var/www/html> id uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)

Ora,quando asimcreernuovifile,essisarannodiproprietdelgruppo webalpostodelgruppo asim:


asim:/var/www/html> touch test asim:/var/www/html> ls -l test -rw-rw-r-- 1 asim web 0 Jun 10 15:38 test

Registrarsi inunnuovogruppovipermette dievitare l'usodi chown (v. Sezione3.4.2.4)odi contattareilvostroamministratoredisistemapercambiareleproprietpervoi. Permaggioriinformazionidateun'occhiataallepaginemanriguardantinewgrp.

83

IntroduzioneaLinux

3.4.2.3. La maschera dei file


Quandosisalvaunfiledaqualcheparte,questoperprimacosavienesottopostoallaprocedura standarddisicurezza.IfilesenzapermessinonesistonoinLinux.Ipermessideifilestandardsono stabilitidallamask(maschera)perlacreazionedinuovifile.Ilvalorediquestamascherapuessere visualizzatomediantel'usodelcomandoumask:
bert:~> umask 0002

Invecediaggiungereivalorisimboliciaciascuno,comeconchmod,percalcolareipermessisuun nuovo file questi devono essere sottratti dai diritti d'accesso totali possibili. Nell'esempio precedente,comunque,vediamo4valoripuressendocisolo3categoriedipermessi:user,groupe other.Ilprimozerofapartedelleimpostazionispecialidegliattributideifilechetratteremonelle Sezioni3.4.2.4e4.1.6.Potrebbesuccederechenelvostrosistemanonvenganeppuremostratoil primozeroquandobatteteilcomandoumaskechevediatesoloitrenumericherappresentanola mascheradibaseperlacreazionedeifile. OgnisistemaderivatodaUNIXhaunafunzionedisistemaperlacreazionedinuovifile,funzione che viene chiamata ogni qualvolta un utente utilizza un programma che crea nuovi file, per esempio,quandosiscaricaunfiledainternet,quandosisalvaunnuovodocumentoditestoecos via.Questafunzionecreasiafilechedirectorynuovi.Ilpermessototaledileggere,scrivereed eseguireconcessoatuttiquandosicreaunanuovadirectory.Quandoinvecesicreaunnuovofile, talefunzioneconcederipermessidiletturaescritturaatuttimanondaripermessidiesecuzione a nessuno per tutte le categorie di utenti. Perci, prima dell'applicazione della maschera, una directoryhaipermessi777orwxrwxrwxeunsemplicetesto666orwrwrw. Ilvalorediumaskvienesottrattodaquestipermessibasedopochelafunzionehacreatoilnuovo fileodirectory.Diconseguenza,seilvaloredellamaschera(0)002,unadirectoryavrdibasei permessi775eunfile664.Civienemostratonell'esempioseguente.
bert:~> mkdir newdir bert:~> ls -ld newdir drwxrwxr-x 2 bert bert:~> touch newfile bert:~> ls -l newfile -rw-rw-r-1 bert bert 0 Feb 28 13:52 newfile bert 4096 Feb 28 13:45 newdir/

Filecontrodirectory Normalmenteunadirectoryhamaggioripermessi:hasempreilpermessodiesecuzione (execute). Se non l'avesse, essa sarebbe inaccessibile. Sperimentate ci eseguendo chmod644conunadirectory! Seviregistrateinunaltrogruppoutilizzandoilcomandonewgrp,lamascherarimaneinvariata. Cos,sequest'ultimaimpostataa002,ifileeledirectorychecreeretestandonelnuovogruppo sarannopureaccessibiliatuttiglialtrimembridiesso:nonavretequindibisognodiusarechmod. 84

IntroduzioneaLinux

L'utenterootdibasehadeipermessidicreazionedeifilepiristretti:
[root@estoban root]# umask 022

Questivaloridibasesonoimpostatipertuttoilsistemaneifilediconfigurazionedellerisorsedi shell,peresempio /etc/bashrcoppure /etc/profile.Potetemodificarlinelvostrofiledi configurazionedellashell(v.il capitolo7 dedicatoallapersonalizzazionedelvostroambientedi shell).

3.4.2.4. Cambiare le propriet di utente e gruppo


Quandounfilepossedutodaunutenteodaungrupposbagliato,l'errorepuesserecorrettoconi comandi chown (changeowner)e chgrp (changegroup).Cambiarelaproprietdiunfileun compito frequente diamministrazionedelsistema inambienti doveifilehannolanecessitdi esserecondivisiall'internodiungruppo.Entrambiicomandisonomoltoflessibili,comepotete verificarericorrendoall'opzione--help. Il comando chown puessere impiegato per modificare lepropriet dell'utente edelgruppo, mentre chgrpcambiasololaproprietdelgruppo.Naturalmenteilsistemaverifichersel'utente chefornisceunodiquesticomandihasufficientipermessisuifilecheintendemodificare. Permodificarel'appartenenzadiunfileadunutente,usatequestasintassi: chownnewuser file Seusateduepunti(:)dopoilnomediutente(v.pagineInfo),anchel'appartenenzaalgruppoverr cambiata algruppo primario dell'utente che fornisce ilcomando. Inunsistema Linuxciascun utentehailpropriogruppocosicchquestosistemapuessereusatoperrendereprivatiifile.
jacky:~> id uid=1304(jacky) gid=(1304) groups=1304(jacky),2034(pproject) jacky:~> ls -l my_report -rw-rw-r-- 1 jacky project jacky:~> chown jacky: my_report jacky:~> chmod o-r my_report jacky:~> ls -l my_report -rw-rw---- 1 jacky jacky 29387 Jan 15 09:34 my_report 29387 Jan 15 09:34 my_report

Se jacky volessecondividerequestofile,senzadareanessunoilpermessodiscriverlo,potrebbe usareilcomandochgrp:


jacky:~> ls -l report-20020115.xls -rw-rw---- 1 jacky jacky 45635 Jan 15 09:35 report-20020115.xls jacky:~> chgrp project report-20020115.xls jacky:~> chmod o= report-20020115.xls

85

IntroduzioneaLinux

jacky:~> ls -l report-20020115.xls -rw-rw---- 1 jacky project 45635 Jan 15 09:35 report-20020115.xls

Inquestomodogliutentidelgruppoprojectpotrannolavoraresuquestofile.Gliutentiestraneial gruppononavrannonullaachefareconquesto. Sia chown che chgrp possono essere usati per cambiare le propriet ricorsivamente usando l'opzioneR.Intalcasotuttifilesottostantielesottodirectorydiunadatadirectoryapparterrannoa queldatoutentee/ogruppo. Restrizioni In molti sistemi l'utilizzo dei comandi chown e chgrp vietato agli utenti non privilegiati. Se non siete gli amministratori di sistemi, non avrete la possibilit di modificareutenteegruppo perragionidisicurezza.Sel'usodi questicomandinon fosselimitato,utentimaliziosipotrebberoassegnarelapropriet,modificandola,deifile adaltriutentie/ogruppiemodificareilcomportamentodiquegliambientiutentiepure causaredanniadaltrofiledegliutenti.

3.4.2.5. Modi speciali


Perevitarechel'amministratoredisistemasiainfastiditodalrisolvereproblemidipermessiper tuttoiltempo,possonoessereconcessispecialidirittid'accessoatutteledirectoryoaprogrammi separati.Quidiseguitocisonotremodispeciali:

modostickybit:dopol'esecuzionediuncompito,ilcomandovienemantenutonella memoriadisistema.Inoriginequestoeraunafunzioneusataspessoperrisparmiare memoria:grandijobvenivanocaricatiinmemoriaunasolavolta.Maoggigiornola memoriaeconomicaecisonomiglioritecnichepergestirlacosicchilmodonon vienepiutilizzatoperlesuecapacitdiottimizzazionesusingolifile.Seapplicato comunqueadun'interadirectory,lostickybitassumeundiversosignificato.Intal casounutentepumodificarefileesistentiinquestadirectoryquandoproprietario delfileoppurequandoilfilehaipermessicorretti.Questafunzionevieneutilizzata condirectorycome /var/tmp,chedeveessereaccessibiledachiunque,madove nonappropriatopergliutentimodificareocancellareidatialtrui.Lostickybit indicatoconunatallafinedell'elencodeipermessisulfile:
mark:~> ls -ld /var/tmp drwxrwxrwt 19 root root 8192 Jan 16 10:37 /var/tmp/

Lostickybitsiimpostautilizzandoilcomandochmodo+t directory.L'origine storicadellatsiritrovanellafunzioneUNIXsaveTextaccess. SUID(setuserID)eSGID(setgroupID):rappresentatodallaletterasnelcampodei permessi dell'utente o del gruppo. Quando un file eseguibile ha tale modalit impostata,essogirerconipermessidell'utenteedelgruppoinvececheconquelli dell'utentechebatteilcomando,dandocosaccesoallerisorsedisistema.Piavanti discuteremoicinelCapitolo4. SGID(setgroupID)suunadirectory:inquestocasospecialeognifilecreatonella directoryavrcomegruppoproprietariolostessodelladirectory(mentreilnormale comportamentosarebbecheinuovifilefosserodiproprietdell'utentechelicrea).

86

IntroduzioneaLinux

Inquestamanieragliutentinondevonopreoccuparsidelleproprietdifilequando condividonodirectory
mimi:~> ls -ld /opt/docs drwxrws--- 4 root users mimi:~> ls -l /opt/docs -rw-rw---- 1 mimi users 4096 Jul 25 2001 docs/ 345672 Aug 30 2001-Council.doc

QuestoilmodonormaledicondividerefileinUNIX. Ifileesistentinonvengonomodificati! IfilespostatiinunadirectorySGID, macreatialtrove,mantengonoiloroutentie gruppiproprietari.Cipuconfondere.

3.5. Sommario
ConUNIX,comeconLinux,tuttelecosesonorappresentateinunmodooinunaltrocomefilecon lelorocorrettepropriet.L'usodipercorsi(predefiniti)consenteagliutentiedall'amministratoredi sistemaditrovare,leggereemodificareifile. Abbiamocompiutoiprimipassiperdiventaredegliesperti:abbiamotrattatodellastrutturarealee fittiziadelfilesystemedorasappiamodelmodelloLinuxdisicurezzadeifilecomepuredidiverse altreprecauzioniperlasicurezzachevannoadottatenormalmenteconognisistema. Lashellilpiimportantestrumentoperinteragireconilsistema.Inquestocapitoloabbiamo appresodiversicomandidishell,riportatinellatabellaseguente. Tabella310.Nuovicomandinelcapitolo3:ifileedilfilesystem Comando
bash catfile(s) cddirectory chgrpnewgroup file(s) chown mode file chmodnewowner[:[newgroup]] file(s) cpsourcefile targetfile dffile echostringa export filenomefile

Significato
ProgrammaGNUdishell. Inviailcontenutodeifileallostandardoutput Entranelladirectory.cduncomandointegratoin bash. Cambiailgruppoproprietariodifileanewgroup Modificaipermessidiaccessonelfile. Modificaleproprietdiutenteegruppodelfile copiasourcefileconilnometargetfile Rapportosullospaziousatodeldisconellapartizione contenentefile. Mostraunalineaditesto Partedibashchemostralevariabiliedilorovalorial sistema. Determinailtipodifiledinomefile.

87

IntroduzioneaLinux

Comando
findpercorso espressione grepPATTERN file headfile id infocomando lessfile lntargetfile linkname locatestringadiricerca lsfile mancomando mkdirnuovadir mvvecchiofile nuovofile newgroupnomegruppo pwd quota rmfile rmdirfile tailfile umask[valore] wcfile whichcomando

Significato
Trovafilenellagerarchiadelfilesystem Mostralelineeinfilechecontengonoilmodello (pattern)diricerca Invialaprimapartedifileallostandardoutput Stampailnomeeigruppidell'utenterealeedattuale Mostraladocumentazionerelativaacomando Mostrafileconunpotentevisualizzatore Creauncollegamentodinomelinknamea targetfile. Mostratuttiifileaccessibilichecorrispondonoalmodello diricerca. Stampailcontenutodelladirectory. Formattaemostralepaginedelmanuale(disistema)in linearelativeacomando. Creaunanuovadirectoryvuota. Rinominaospostavecchiofile. Registrainunnuovogruppo Mostraladirectorydilavoroattualeocorrente. Mostral'utilizzodeldiscoeilimiti. Rimuovefileedirectory. Rimuovedirectory. Stampal'ultimapartedifile. Mostraocambialamodalitdicreazionedeinuovifile. Contalinee,paroleecaratteridifile. Mostral'interopercorsodelcomando.

InsistiamopuresulfattochevoidovresteLEGGERELEPAGINEMAN.Taledocumentazioneil vostrokitdiprontosoccorsoecontienelerisposteamoltedomande.Lalistaprecedentecontienei comandifondamentalicheuseretequotidianamente,maessipossonofaremoltodipirispettoa quantoabbiamodettoqui.Leggereladocumentazionevidarilcontrollodicuiavetebisogno. Ultimamanonmenoimportante,eccoun'agilepanoramicadeipermessisuifile: Tabella311.Permessisuifile Chi u(ser)utente g(roup)gruppo r(ead)lettura 4 4 w(rite)scrittura 2 2 1 1 (e)x(ecute)

88

IntroduzioneaLinux

Chi o(ther)altri

r(ead)lettura 4

w(rite)scrittura 2 1

(e)x(ecute)

3.6. Esercizi
RegistratevisemplicementeconilvostroIDdiutentecomune.

3.6.1. Partizioni

Inqualepartizionesitrovalavostradirectorypersonale? Quantepartizioniesistononelvostrosistema? QualladimensionetotaledellavostrainstallazionediLinux?

3.6.2. Percorsi

Mostrateilvostropercorso(path)diricerca. Esportateunpercorsosenzasensoinserendo,peresempio, export PATH=blah e provateadelencareilcontenutodelladirectory. Qualilpercorsodellavostradirectorypersonale?Comepotrebbeunaltroutente raggiungerelavostrodirectorypersonalepartendodallasuaeusandounpercorso relativo? Andatenelladirectorytmpcontenutain/var. Oraandatein share contenutain /usr usandounsolocomando.Spostateviin doc.Quallavostraattualedirectorydilavoro?

3.6.3. Viaggio nel sistema


Spostatevinelladirectory/proc. SucheCPUstagirandoilsistema? QuantaRAMstautilizzandoattualmente? Quantospaziodiswapavete? Quantidriversonocaricati? Daquanteoreaccesoilsistema? Qualifilesystemsonoriconosciutidalvostrosistema? Spostateviin/etc/rc.d | /etc/init.d | /etc/runlevelsescegliete ladirectorycorrispondentealvostrorunlevel. Qualiservizidovrebberogirareinquestolivello? Qualiservizigiranoinmodograficoenoninmodotesto? Spostateviin/etc Perquantotempoilsistemamantieneilfiledilogincuisonomonitoratiilogindegli utenti? 89

IntroduzioneaLinux

Cheversionestatefacendogirare? Cisonodeimessaggidelgiorno? Quantiutentisonostatidefinitinelvostrosistema?Noncontateli,fateglielofareal computeralvostroposto! Quantogruppi? Dovesonotenuteleinformazionicircaifusiorari? GliHOWTOsonoinstallatinelvostrosistema? Spostateviin/usr/share/doc. CitatetreprogrammicontenutinelpacchettoGNUcoreutils. Qualeversionedibashinstallatainquestosistema?

3.6.4. Manipolare i file


Createunanuovadirectorynellavostradirectorypersonale. Potetespostarequestanuovadirectoryallostessolivellodiquellapersonale? CopiatetuttiifileXPM da /usr/share/pixmaps allanuovadirectory. Cosa significaXPM? Elencateifileinordinealfabeticocontrario. Portatevi nella vostra directory personale. create unanuova directory ecopiatevi dentro tutti i file della directory /etc. Assicuratevi di copiare pure i file e le sottodirectorydi/etc(copiaricorsiva)! Spostatevinellanuovadirectoryecreateunadirectoryperfilecheinizianoconun carattere maiuscolo e una per quelli che iniziano con un carattere minuscolo. Spostatetuttiifilenelledirectoryappropriate.Usatemenocomandipossibili. Rimuoveteifilerimanenti. Cancellateladirectoryeilsuointerocontenutoutilizzandoununicocomando. Usategreppertrovarequalescriptavviailserverdeifontnelrunlevelgrafico. Dovesitrovailprogrammaserversendmail? Create un link simbolico nella vostra directory home che punti a /var/tmp. Controllatesefunzionaveramente. Createunulteriorelinksimboliconellavostradirectorypersonaleallinkprecedente. Controllatesefunziona.Rimuoveteilprimolinkelistateilcontenutodelladirectory. Cosacapitaalsecondolink?

3.6.5. Permessi dei file


Riusciteacambiareipermessideifilein/home? Qualelavostramodalitstandarddicreazionedeifile? Cambiatelaproprietdi/etcconivostriutenteegruppopersonali. Cambiateipermessideifiledi~/.bashrcinmodochesolovoieilvostrogruppo primariopossiateleggerlo. Dateilcomandolocateroot.Notatequalcosadispeciale? Createunlinksimbolicoa/root.Puessereutilizzato?

90

IntroduzioneaLinux

91

IntroduzioneaLinux

Capitolo 4. I processi
Dopoifile,iprocessisonolecosepiimportantiinunsistemaUNIX/Linux.Inquesto capitolodaremounosguardodavicinoaqueiprocessi.Impareremodipisu:

Elaborazionemultiutenteemultitasking Tipidiprocessi Controllodeiprocessicondiversisegnali Attributideiprocessi Ilciclovitalediunprocesso Avvioechiusuradelsistema SUIDeSGID Velocitetempidirispostadelsistema Programmazionedeiprocessi IlsistemaVixiecron Comeottenereilmassimodalvostrosistema.

4.1. I processi in dettaglio


4.1.1. Multiutenza e multitasking
Oracheabbiamoacquisitomaggioredimestichezzaconilnostroambienteesiamounpo'capacidi comunicareconilnostrosistema,giuntoilmomentodistudiarepidettagliatamenteiprocessi (job) chepossiamoavviare. Nontuttiicomandi avvianoununicoprocesso.Alcuni programmi dannoinizioadunaseriediprocessi,comemozilla,mentrealtri,comels,sonoeseguiticomeun singolocomando. D'altraparteLinuxsibasasuUNIX,dovepraticacomuneaveremoltepliciutentichefannogirare molticomandicontemporaneamenteenellostessosistema.E'intuitivoqualimisuredebbanoessere assunteperfarschelaCPUgestiscatuttiquestiprocessiequalefunzionalitdebbaesserefornita inmodochegliutentipossanopassaredaunprocessoall'altro.Inalcunicasiiprocessidevono continuare afunzionare anchequandosidisconnettel'utentechelihaavviati.Inoltregliutenti hannobisognodiunmezzoperriattivareiprocessiinterrotti. SpiegheremolastrutturadeiprocessidiLinuxnelleprossimesezioni.

4.1.2. Tipi di processi


4.1.2.1. Processi interattivi
Iprocessiinterattivisiavvianoesicontrollanopermezzodiunasessionediterminale.Inaltri termini, deve esserci qualcuno connesso al sistema per poter avviare questi processi: essi non 92

IntroduzioneaLinux

partono automaticamente come parte delle funzioni di sistema. Tali processi possono girare in primopiano (foreground), occupandoilterminalechehaavviatoilprogramma,evoinonpotete avviare altre applicazioni fintanto che il processo sta girando in primo piano. Altrimenti essi possono girare dietro le quinte (background) cosicch il terminale in cui avete avviato il programmapuaccettarenuovicomandimentreilprogrammastafunzionando.Finoadoranoici siamofocalizzatisuprogrammichegiranoinprimopianoladuratadeltemporichiestoperfarli funzionareeratalmentebrevedaessereirrilevantemavedereunfileconilcomando less un buon esempio dicomandocheimpegna lasessione diterminale. Inquestocaso,ilprogramma avviatostaattendendodavoidifarequalcosa.Ilprogrammaancoraconnessoalterminaledacui erastatoavviatoedilterminaleutilizzabilesoloperdarecomandichequestoprogrammapu comprendere.Altriprogrammisegnalerannosoloerrorionessunrispostadalsistema. Comunque,mentreunprocessogirasullosfondo,l'utentepufarealtrecosenelterminaleincuiha avviatoilprogrammachestafunzionando. Lashelloffreunafunzionechiamata jobcontrol checonsentedigestirefacilmentepiprocessi. Questomeccanismoselezionaiprocessitraprimopianoesfondo.Utilizzandoquestosistemai programmipossonoessereancheavviatidirettamentesullosfondo. Fargirareunprocessosullosfondoutilesoloconprogrammichenonnecessitanoinput(tramite shell)dapartedell'utente.Mettereunjobinbackgroundsifaabitualmentequandocisiattendeche lasuaesecuzionerichiedaparecchiotempo.Perliberareilterminaledopol'inviodelcomandoviene aggiunta una E commerciale (&). Nell'esempio, usando la modalit grafica, noi apriamo una finestraditerminaleinpiapartiredaquellaesistente:
billy:~> xterm & [1] 26558 billy:~> jobs [1]+ Running xterm &

Le caratteristiche complete relative al controllo dei processi sono spiegate in modo particolareggiatonellepagineInfodiBash,cosicchsololeapplicazionidicontrollodeijobsono elencatequidiseguito: tabella41.Controllodeiprocessi (partediun)comando comando_normale comando& jobs Ctrl+Z Significato Avviaquestocomandoinprimopiano Avviaquestocomandosullosfondo(liberail terminale) mostraicomandichestannogirandosullo sfondo Sospende(fermamanonchiude)unprocesso attivoinprimopiano(sospensione).

93

IntroduzioneaLinux

(partediun)comando Ctrl+C

Significato Interrompe(terminaechiude)unprocessoche stagirandoinprimopiano. Adogniprocessochegiradietrolequinte (background)vieneassegnatounnumero. Utilizzandolafunzione%cisipuriferireadun jobgraziealsuonumero,peresempiofg%2. Riattivaunprogrammasospesodietrolequinte. Riportainprimopianoiljob. Terminaunprogramma(v.ancheiComandi interniallashellnellepagineInfodibash)

%n bg fg kill

Ulterioriesempipraticisipossonotrovaretragliesercizi. MoltisistemiUNIXsonoprobabilmentecapacidiavviare screen,cherisultautilequandovolete un'altrashellpereseguirecomandi.Dopoaveravviatoscreen,vienecreataunanuovasessionecon relativashelle/ocomandicomerichiesti,chepoipotetetoglieredimezzo.Nellanuovasessione potete fare qualsiasi cosa.Tuttiiprogrammi eleoperazioni gireranno indipendentemente dalla shell diprovenienza.Potetepoitoglierequestasessionementreiprogrammiavviatisudiessa continueranno a girare, anche quando vi disconnetterete dalla shell originaria e ripristinerete a piacimentoinqualsiasimomentoilvostroscreen. Taleprogrammaderivadall'epocaincuileconsolevirtualinoneranostateancorainventateetutto andavafattousandoununicoterminaleditesto.PerifanaticiancorapresenteinLinuxsebbenele consolevirtualiesistanodaalmenodiecianni.

4.1.2.2. Processi automatici


Iprocessiautomaticio batch nonsonocollegatiadunterminale.Piuttostositrattadioperazioni [task]chepossonoessereaccodateinun'areadispoolerdoveattendonodiessereeseguitesecondo laregolaFIFO(firstin,firstout).Questepossonoessereeseguiteusandounodeiduecriteri:

adunacertadataeora:sifausandoilcomando at,chetratteremonellaseconda partediquestocapitolo. nel momento incui ilcarico totale delsistema abbastanza ridotto daaccettare lavoriextra:sifausandoilcomandobatch.Dibaseitaskvengonoaccodatiinattesa diessereeseguitiquandoilcaricodelsistemainferiorea0,8.Ingrandiambienti l'amministratoredisistemapupreferirel'elaborazionebatchquandograndiquantit di dati devono essere elaborate o quando i task che richiedono molte risorse di sistemadevonoessereeseguitiinunsistemagisovraccarico.L'elaborazionebatch utilizzataancheperottimizzareleprestazionidelsistema.

4.1.2.3.Daemon
94

IntroduzioneaLinux

I daemon (demoni)sonoprocessiserverchegiranoincontinuazione. Ilpidellevoltevengono inizializzatiall'avviodelsistemaepoirimangonoinattesadietrolequintefinchvienerichiestoil loroservizio.Unesempiotipicoildemonediretexinetd,chevienefattopartireinquasituttele procedurediavvio.Dopocheilsistemasiavviato,ildemonediretesisiedeeattendefinoache unprogrammacliente,comeunclienteFTP,habisognodiconnettersi.

4.1.3. Attributi dei processi


Unprocessopossiedeunaseriedicaratteristichevisualizzabiliconilcomandops:

Il process IDoPID: ununico numero diidentificazione usato per riferimenti al processo. Il parentprocess IDoPPID:ilnumerodelprocesso(PID)chehaavviatoquesto processo. Ilnumerodinice:ilgradodicordialit(friendliness)conglialtriprocessi(danon confondereconlaprioritdeiprocessichevienecalcolatainbasealnumerodinicee alrecenteutilizzodiCPUdapartedelprocesso). TerminaleoTTY:terminaleacuiconnessoilprocesso. Nomedell'utenterealeeeffettivo(RUIDeEUID):ilproprietariodelprocesso.Il proprietariorealel'utentechehadatoilcomando,L'utenteeffettivoquelloche accedeallerisorsedisistema.RUIDeEUIDnormalmentesonolastessacosaeil processohaglistessidirittidiaccessodell'utentechel'haavviato.Unesempioper chiarireci:ilbrowsermozillain/usr/bindiproprietdell'utenteroot:
theo:~> ls -l /usr/bin/mozilla -rwxr-xr-x 1 root root theo:~> mozilla & [1] 26595 theo:~> ps -af UID PID PPID C STIME TTY
theo theo 26601 26613

4996 Nov 20 18:28 /usr/bin/mozilla*

TIME CMD

Quandol'utente theo lanciaquestoprogramma,ilprocessostessoetuttiiprocessi avviatidaquesto,sarannodiproprietdell'utente theoenondell'amministratoredi sistema. Quando mozilla ha necessit di accedere a certi file, quell'accesso sar determinatodaipermessiditheoenondaquellidiroot. Gruppoproprietariorealeedeffettivo(RGIDeEGID):ilrealegruppoproprietariodi unprocessoilgruppoprimariodell'utentechehaavviatoilprocesso.L'effettivo gruppoproprietarionormalmenteilmedesimo,eccettoquandoilmododiaccesso SGIDstatoapplicatoadunfile.

26599 0 15:04 pts/5 00:00:00 /usr/lib/mozilla/mozilla-bin 26569 0 15:04 pts/5 00:00:00 ps -af

4.1.4. Visualizzazione delle informazioni sui processi


Ilcomandopsunodeglistrumentipermostrareiprocessi.Talecomandohadiverseopzioniche possonoesserecombinatepermostrareattributidifferentidelprocesso. Senzaopzioni,psdsoloinformazionicircalashellcorrenteeglieventualiprocessi: 95

IntroduzioneaLinux

theo:~> ps PID TTY 4245 pts/7 5314 pts/7

Dal momento checinonvioffre informazioni sufficienti ingenere almeno uncentinaio di processistannogirandonelvostrosistemadisolitoselezioneremoprocessispecificidallalistadi tuttiiprocessi,usandoilcomandogrepinunapipe(v.Sezione5.1.2.1.)comeinquestalineacon cuisceglieremoemostreremotuttiiprocessipossedutidaunparticolareutente: ps-ef|grepnomeutente Questoesempiomostratuttiiprocessiconnome bash,lapicomuneshelldiloginneisistemi Linux:
theo:~> ps auxw | grep bash brenda 31970 0.0 0.3 6080 root 32043 0.0 0.3 6112 theo 32581 0.0 0.3 6384 theo 32616 0.0 0.3 6396 theo 32629 0.0 0.3 6380 theo 2214 0.0 0.3 6412 theo 4245 0.0 0.3 6392 theo 5427 0.0 0.1 3720 1556 1600 1864 1896 1856 1944 1888 548 tty2 tty4 pts/1 pts/2 pts/3 pts/5 pts/7 pts/7 S S S S S S S S Feb23 Feb23 Feb23 Feb23 Feb23 16:18 17:26 19:22 0:00 0:00 0:00 0:00 0:00 0:02 0:00 0:00 -bash -bash bash bash bash bash bash grep bash

TIME CMD 00:00:00 bash 00:00:00 ps

Inquesti casiilcomando grep, chetrovalineecontenenti lastringa bash,vienepuremostrato meglioinsistemichehannomoltotempolibero.Senonvoletecheciaccada,usateilcomando pgrep. LeshellBashsonouncasospeciale:questoelencodeiprocessimostraqualisonoleshelldilogin (incuidovetedarenomeutenteepassword,comequandoviconnetteteinmodalittestoostabilite unaconnessioneremota,alcontrariodelleshelldinonlogin,avviateperesempiocliccandosuun iconadellafinestraditerminale).Leshellconloginsonoprecedutedaunsegnomeno(). I? Spiegheremol'operatoreInelprossimocapitolo(v.Capitolo5). Si possono trovare maggiori informazioni nel solito modo: ps --help o man ps. GNU ps supportadiversistilidiformatodelleopzioni:gliesempiquisopranoncontengonoerrori. Notate che ps restituisce sololasituazione momentanea deiprocessi attivi; unaregistrazione istantanea. Ilprogramma top mostraunimmagine piprecisamantenendo aggiornati irisultati fornitidaps(conunaquantitdiopzioni)unavoltaognicinquesecondi,generandounanuovalista deiprocessichecausaperiodicamenteilpigrandecarico,mentreintegrapiinformazionesullo spaziodiswapinusoelostatodellaCPU,dalfilesystemproc:
12:40pm up 9 days, 6:00, 4 users, load average: 0.21, 0.11, 0.03 89 processes: 86 sleeping, 3 running, 0 zombie, 0 stopped CPU states: 2.5% user, 1.7% system, 0.0% nice, 95.6% idle Mem: 255120K av, 239412K used, 15708K free, 765K shrd, 22620K buff Swap: 1050176K av, 76428K used, 973748K free, 82756K cached PID USER 5005 root PRI NI SIZE 14 0 91572 RSS SHARE STAT %CPU %MEM TIME COMMAND 15M 11580 R 1.9 6.0 7:53 X

96

IntroduzioneaLinux

19599 19100 19328 1 2 3 4 5 6 7 8 9 13 89 219 220

jeff jeff jeff root root root root root root root root root root root root root

14 0 1024 1024 796 R 9 0 5288 4948 3888 R 9 0 37884 36M 14724 S 8 0 516 472 464 S 9 0 0 0 0 SW 9 0 0 0 0 SW 19 19 0 0 0 SWN 9 0 0 0 0 SW 9 0 0 0 0 SW 9 0 0 0 0 SW 9 0 0 0 0 SW -1-20 0 0 0 SW< 9 0 0 0 0 SW 9 0 0 0 0 SW 9 0 0 0 0 SW 9 0 0 0 0 SW

1.1 0.4 0.5 1.9 0.5 14.8 0.0 0.1 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.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

0:01 0:24 1:30 0:06 0:02 0:00 0:00 0:33 0:00 0:00 0:05 0:00 0:01 0:00 0:00 0:00

top gnome-terminal mozilla-bin init keventd kapm-idled ksoftirqd_CPU0 kswapd kreclaimd bdflush kupdated mdrecoveryd kjournald khubd kjournald kjournald

Laprimalineaditopcontienelestesseinformazionimostratedalcomandouptime:
jeff:~> uptime 3:30pm, up 12 days, 23:29, 6 users, load average: 0.01, 0.02, 0.00

Idatiperquestiprogrammisonoconservati in /var/run/utmp (informazionesugliutential momento connessi) e nel fille system virtuale /proc, per esempio /proc/loadavg (informazionesulcaricomedio).Esistonotuttiigeneridiapplicazionigrafichepervederequesti dati,comelo GnomeSystemMonitore lavaps.Su FreshMeate SourceForgetroveretedecine di applicazioni che raccolgono queste informazioni da altri dati dei server e dalle registrazioni provenienti da molteplici server in un unico (web) server, consentendo di monitorare l'intera infrastrutturadaunasolaworkstation. Lerelazionitraiprocessipossonoesserevisualizzateusandoilcomandopstree:
sophie:~> pstree init-+-amd |-apmd |-2*[artsd] |-atd |-crond |-deskguide_apple |-eth0 |-gdm---gdm-+-X | `-gnome-session-+-Gnome | |-ssh-agent | `-true |-geyes_applet |-gkb_applet |-gnome-name-serv |-gnome-smproxy |-gnome-terminal-+-bash---vim | |-bash | |-bash---pstree | |-bash---ssh | |-bash---mozilla-bin---mozilla-bin---3*[mozilla-bin] | `-gnome-pty-helper |-gpm |-gweather |-kapm-idled |-3*[kdeinit] |-keventd |-khubd |-5*[kjournald] |-klogd |-lockd---rpciod

97

IntroduzioneaLinux

|-lpd |-mdrecoveryd |-6*[mingetty] |-8*[nfsd] |-nscd---nscd---5*[nscd] |-ntpd |-3*[oafd] |-panel |-portmap |-rhnsd |-rpc.mountd |-rpc.rquotad |-rpc.statd |-sawfish |-screenshooter_a |-sendmail |-sshd---sshd---bash---su---bash |-syslogd |-tasklist_applet |-vmnet-bridge |-xfs `-xinetd-ipv6

Leopzioni-ue-adannodelleinformazioniulteriori.Perlealtreopzioniepersaperecosafanno, ricorreteallepagineInfo. Nellaprossimasezionevedremocomeunprocessopucrearneunaltro.

4.1.5. Vita e morte di un processo


4.1.5.1. Creazione del processo
Unnuovoprocessovienecreatoperchunprocessogiesistentecreauncopiaesattadisestesso. Questoprocessofiglio(child)halostessoambientedelsuogenitoreedifferiscesoloperildiverso numerodiprocessID(PID).Taleproceduradettaforking(biforcazione). Dopoilprocessodibiforcazione,lospaziodiindirizzodelprocessofigliovienesovrascrittoconi datidelnuovoprocesso:cisifaconunachiamataexecalsistema. Poiilmeccanismoforkandexecscambiaunvecchiocomandoconunonuovomentrel'ambientein cui il nuovo programma viene eseguito rimane lo stesso, comprese la configurazione delle periferichediingressoeuscita,levariabilid'ambienteelepriorit.Talemeccanismoimpiegato percrearetuttiiprocessidiUNIX,coscomeapplicatopurenelsistemaoperativoLinux.Anche ilprimoprocesso,init,conIDdiprocessoparia1,vienesdoppiato(fork)durantelaproceduradi avvionellacosiddettaproceduradibootstrap. Questoschemaillustrailmeccanismodiforkandexec.L'IDdiprocessocambiadopolaprocedura disdoppiamento: Figura41.Meccanismodiforkandexec

98

IntroduzioneaLinux

Cisonoduecasiincui initdiventailgenitorediunprocesso,mentreilprocessononeraancora statoavviatodainitcomeabbiamogivistonell'esempiodipstree.Moltiprogrammi,peresempio, demonizzanoiloroprocessifiglio,inmodochepossonomantenersiattivianchequandoilgenitore sifermaovienefermato.Ungestoredifinestreiltipicoesempio:essoavviaunprocessoxterm che genera una shell che accetta comandi. Poi il gestore di finestre rifiuta ogni ulteriore responsabilitepassailprocessofiglioainit.Utilizzandoquestomeccanismo,possibilecambiare gestoridifinestresenzainterrompereleapplicazioniattive. Ditantointantolecosepossonoandaremale,anchenellemigliorifamiglie.Incasieccezionaliun processo potrebbe finire mentre quello genitore non si aspetta il suo completamento. Cos un processoinsepoltodettoprocessozombie.

4.1.5.2. Terminare i processi


Quandounprocessoterminanormalmente(nonvieneciouccisoointerrottoinmodoinatteso),il programmarestituisceilsuoexitstatusaquellogenitore.Questoexitstatusunnumerorestituito dal programma che fornisce i risultati dell'esecuzione dello stesso. Il sistema di restituire le informazioniriguardantil'esecuzionedeijobhalasuaoriginenellinguaggiodiprogrammazioneC concuistatoscrittoUNIX. Ilcodicediritornopuessereinseguitointerpretatodalprocessogenitoreodascript.Ivaloridei codici di ritorno sono specifici del programma. Questa informazione pu essere normalmente 99

IntroduzioneaLinux

trovatanellepaginemandellospecificoprogramma:peresempioilcomandogreprestituisce-1 senoncisonostatecoincidenze,econcisipuscrivereunmessaggiosullelineediNofile found.Unaltroesempiotrue,comandointernoaBash,chenonfaaltrosenonrestituireunexit statusugualea0perindicareilsuccesso.

4.1.5.3. Segnali
Iprocessiterminanoperchricevonounsegnale.Esistononumerosisegnalichepoteteinviaread unprocesso.Utilizzateilcomandokillpermandareunsegnaleadunprocesso.Ilcomandokill-l mostra un elenco disegnali dicui molti sonoper usointerno alsistema operativo oppure per programmatorichestannoscrivendodelcodice.Comeutentiviservirannoiseguentisegnali: Tabella42.Segnalicomuni Nomedelsegnale SIGTERM SIGINT SIGKILL SIGHUP Numerodelsegnale Significato 15 2 9 1 Terminailprocessoinmodoordinato. Interrompe il processo. Un processo pu ignorare questosegnale. Interrompeilprocesso.Unprocessononpuignorare questosegnale. Perdemoni:rileggeilfilediconfigurazione.

Poteteleggeredipisulleazionidibasechevengonointrapreseconl'inviodiunsegnaleadun processoinman7 signal.

4.1.6. SUID e SGID


Comepromessonelprecedentecapitolo,oranoitratteremodellemodalitspecialiSUIDeSGIDin manierapidettagliata.Talimodalitesistonoperfornireainormaliutentilacapacitdieseguire compitichenormalmentenonsarebberoingradodisvolgereacausadelrigidoschemadipermessi suifileutilizzatoneisistemibasatisuUNIX.Nellasituazioneidealelemodalitspecialivengono utilizzateilpiraramentepossibiledalmomentocheessecomportanodeirischidisicurezza.Gli sviluppatoridiLinuxhannoingeneretentatodievitarleilpipossibile,LaversioneLinuxdips, per esempio, utilizza le informazioni contenute nel file system /proc, che accessibile a chiunque,cosdaevitarel'esposizionedidatierisorsesensibilidelsistemaalpubblicoingenere. Primadici(eancoraneisistemiUNIXpivecchi)ilprogrammapsavevabisognodiaccedereai filetipo/dev/meme/dev/kmem,conglisvantaggilegatiaipermessiealleproprietditalifile:
rita:~> ls -l /dev/*mem crw-r----1 root crw-r----1 root kmem kmem 1, 1, 2 Aug 30 22:30 /dev/kmem 1 Aug 30 22:30 /dev/mem

Nelleversionipivecchiedipseraimpossibileavviareilprogrammacomeutentecomune,ameno chenonglifosseroapplicatelemodalitspeciali. 100

IntroduzioneaLinux

Mentreingeneretentiamodievitarel'applicazionediqualsiasimodalitspeciale,qualchevolta necessarioutilizzareunSUID.Unesempiocostituitodalmeccanismopercambiarelepassword. Naturalmente gli utenti vorranno fare ci da s al posto di avere le loro password impostate dall'amministratoredisistema.Comesappiamo,inomiutenteelepasswordsonoelencatenelfile /etc/passwd,chehaquestipermessidiaccessoeproprietari:
bea:~> ls -l /etc/passwd -rw-r--r-1 root root 1267 Jan 16 14:43 /etc/passwd

Tuttaviagliutentidevonoesserecapacidicambiarelepropriinformazionicontenuteinquestofile. Cisiottieneattribuendoalprogrammapasswddeipermessispeciali:
mia:~> which passwd passwd is /usr/bin/passwd mia:~> ls -l /usr/bin/passwd -r-s--x--x 1 root root 13476 Aug 7 06:03 /usr/bin/passwd*

Quandovieneinvocato,ilcomandopasswdsiavvierutilizzandoipermessidiroot,abilitandocos uncomuneutenteamodificareilfiledipasswordchepossedutodall'amministratoredisistema. LamodalitSGIDsudiunfilenonservecosfrequentementecomequellaSUID,perchspesso SGIDimplicalacreazionedigruppiextra.Inalcunicasi,comunque,dobbiamopassareattraverso taledifficoltperrealizzareunasoluzioneelegante(nonpreoccupatevieccessivamentedicii gruppinecessarivengonodisolitocreatidurantel'installazione).Questoilcasodeiprogrammi write e wall, che vengono utilizzati per mandare messaggi agli altri terminali d'utenti (tty). Il comando write scrive unmessaggio adunsingolo utente, mentre wall scrive atutti gliutenti connessi. Mandare untestoadunaltroterminale d'utente oadunoschermo grafico nonnormalmente permesso.Persuperarequestoproblemastatocreatoungruppochepossiedetutteleperiferichedi terminale.Quandoicomandi write e wall hannoipermessiSGID,essigirerannoconidirittidi accessodiquestogruppo, ttynell'esempio.Dalmomentochetalegruppohal'accessoinscrittura nelterminaledidestinazione,ancheunutentechenonhailpermessodiusarequelterminalein qualchemanieraglipuinviareunmessaggio. Nell'esempio seguente, l'utente joe primacercaconilcomando who inqualeterminalelasua corrispondenteconnessa,poileinviaunmessaggiousandoilcomandowrite.Sonopureillustrati idirittid'accessoperilprogrammawriteesuiterminalioccupatidallautentericevente:evidente chealtri,all'infuoridell'utenteproprietario,nonhannoipermessisuquellaperifericaadeccezione delgruppoproprietario,chepuscriveresudiessa.
joe:~> which write write is /usr/bin/write joe:~> ls -l /usr/bin/write -rwxr-sr-x 1 root tty joe:~> who jenny tty1 Jan 23 11:41 8744 Dec 5 00:55 /usr/bin/write*

101

IntroduzioneaLinux

jenny jenny jenny joe

pts/1 pts/2 pts/3 pts/0

Jan Jan Jan Jan

23 23 23 20

12:21 12:22 12:22 10:13 4,

(:0) (:0) (:0) (lo.callhost.org) 1 Jan 23 11:41 /dev/tty1

joe:~> ls -l /dev/tty1 crw--w---1 jenny

tty

joe:~> write jenny tty1 hey Jenny, pranziamo assieme? ^C

L'utentejennyricevequestosulsuoschermo:
Message from joe@lo.callhost.org on ptys/1 at 12:36 ... hey Jenny, pranziamo assieme? EOF

Dopoaverricevutounmessaggio,ilterminalepuesserecancellatousandolacombinazionedi tastiCtrl+L.Pernonriceverealcunmessaggio(eccettochedall'amministratoredisistema)usateil comandomesg.Pervederequaliutenticonnessiaccettanomessaggidaaltriusatewho-w.Tuttele caratteristichesonospiegatenellepagineInfodiciascuncomando. Inomideigruppipossonovariare Loschemadeigruppi specificodiognidistribuzione.Altredistribuzionipossono utilizzarealtrinomiosoluzioni.

4.2. Processo d'avvio, init e shutdown


4.2.1. Introduzione
UnodeipipotentiaspettidiLinuxriguardailsuometodoapertodiavviareechiudereilsistema operativo, dove carica specifici programmi utilizzando le loro particolari configurazioni, vi permettedicambiaretaliconfigurazionipercontrollareilprocessod'avvioechiudeinunmodo pulitoedorganizzato. Oltreallaquestionedelcontrollodelprocessod'avvioodichiusura,lanaturaapertadiLinuxrende pisemplicedeterminarelafonteesattadimoltiproblemiassociatiaglistessi.Unainfarinaturadi questiprocessiabbastanzautileperchiunqueutilizziunsistemaLinux. Molte macchine Linux adoperano lilo, il LInux LOader, per avviare il sistema operativo. Noi tratteremocomunquesolodiGRUBchepifaciledausareemaggiormenteflessibile.Seavete bisognodiinformazionisulilo,poteteriferirviallepaginemaneagliHOWTO.Entrambiisistemi supportanoinstallazioniindualboot(faremoriferimentoagliHOWTO suquestoargomentoper esempipraticieinformazionidifondo).

102

IntroduzioneaLinux

4.2.2. Il processo di avvio


Quandosiavviauncomputerx86,ilprocessorericercailBIOS(BasicInput/OutputSystem)alla finedellamemoriadisistemaeloesegue.Normalmentequest'ultimocontrollaillettoredeifloppy (oilCDROMinmoltideisistemipirecenti)allaricercadiunsupportoavviabile,sepresente,e successivamentecercaneldiscorigido.L'ordinedelleperifericheusateperilcosiddetto boot di solitocontrollatodaunaspecificaimpostazionedelBIOSdisistema.UnavoltainstallatoLinux neldiscorigidodiuncomputer,il BIOScercaun MasterBootRecord (MBR)posizionatonel primosettoredelprimodiscofisso,caricailsuocontenutoinmemoriaepoiglipassailcontrollo. Questo MBR contiene istruzioni su come caricare il bootloader GRUB (oLILO), che usa un sistemaoperativopreselezionato.QuindiMBRcaricailbootloader,ilqualeassumeasuavoltail controllodelprocesso(se,naturalmente,ilbootloaderinstallatoinMBR).Nellaconfigurazione basediRedHatLinuxGRUBusaleimpostazionicontenuteinMBRpermostrareinunmenule opzionidiavvio.UnavoltacheGRUBharicevutolecorretteistruzioniperilsistemaoperativoda farpartire(siadallasualineadicomandochedalfilediconfigurazione),essotrovailfilediboot necessarioelasciailcontrollodellamacchinaaquelsistemaoperativo.

4.2.3. Caratteristiche di GRUB


Questo metodo di avvio detto caricamento diretto (direct loading) perch sono usate delle istruzioniperavviaredirettamenteilsistemaoperativo,senzacodiceintermediotraibootloaderei principalifiledelsistemaoperativo(comeilkernel).Ilprocessodibootimpiegatodaaltrisistemi operativi pu comunque differire leggermente daquello sopra descritto. Per esempio, isistemi operativi Microsoft DOS e Windows sovrascrivono qualsiasi cosa in MBR quando vengono installatisenzaincorporarealcunchdellaprecedenteconfigurazionediMBR:cidistruggeogni altra informazione scrittainMBR daaltrisistemi operativi, come adesempio Linux. Isistemi operativiMicrosoft,comeanchevarialtrisistemioperativiproprietari,vengonocaricaticonun metododiavvioacaricamentoincatena(chainloadingbootmethod).ConquestometodoMBR puntaalprimosettoredellapartizionecontenenteilsistemaoperativo,dovetrovaifilespeciali necessariperavviareeffettivamentetalesistemaoperativo. GRUBsupportaentrambiimetodidiboot,consentendovidiutilizzarloconquasi tuttiisistemi operativi,conmoltifilesystemequalsiasidiscofissoriconosciutodalvostroBIOS. GRUBpossiedenumerosealtrecaratteristichetracui(lepiimportanti):

GRUBfornisceunveroambientepreSistemaOperativo,basatosucomandi, per macchinex86checonsentelamassimaflessibilitnelcaricaresistemioperativicon certeopzionionelraccogliereinformazionisulsistema. GRUBsupportalamodalitdiindirizzamentologicodeiblocchi(LBAo Logical blockAddressing),necessariaperaccedereamoltidischifissiIDEeatuttiquelli SCSI.PrimadiLBAidischifissipotevanoandareincontroallimitedelcilindro 1024oltrealqualeilBIOSpotevanontrovareunfile. IlfilediconfigurazionediGRUBvienelettodaldiscoognivoltacheilsistemasi 103

IntroduzioneaLinux

avvia,evitandovididoverscriverenelMBRtuttelevoltechecambiateleopzionidi boot. UnadescrizionecompletadiGRUBsipuavereconilcomando info grub oppurenel sitodi GRUB.IlProgettodiDocumentazioneLinuxhailMultibootwithGRUBMiniHOWTO.

4.2.4. Init
Ilkernel,dopoesserestatocaricato,trovainitinsbineloesegue. Quando parte init, esso diviene il genitore o il nonno di tutti i processi che si avviano automaticamente nel vostro sistema Linux. La prima cosa che init fa leggere il suo file di inizializzazione, /etc/inittab. Quest'ultimo istruisce init a leggere uno script iniziale di configurazionedell'ambientecheimpostailpath,avvialoswapping,controllaifilesystem,ecos via.Fondamentalmentequestafasesicuradituttelecosedicuihabisognoilvostrosistema al momentodellainizializzazione:impostarel'orologio,inizializzareleporteseriali,ecc. Poiinitcontinualaletturadelfile/etc/inittabchedescrivecomeilsistemadovrebbeessere impostatoinciascunrunlevel(livellodiesecuzioneoavvio)eselezionaquellodipartenza.Unrun level una configurazione di processi. Tutti i sistemi similUNIX possono essere avviati con diverseconfigurazionidiprocessi,comelamodalitutentesingolo,chevienedefinitacomerun level1oS(os).Inquestamodalitsolol'amministratoredisistemapuconnettersialsistema: vieneutilizzataperattivitdimanutenzionesenzarischididannialsistemaoaidatidegliutenti. Naturalmenteconquestaconfigurazionenonabbiamobisognodioffrireservizidiutente,cosicch essisarannotuttidisabilitati.Unaltrorunlevelquellodireboot(orunlevel6)cheterminatuttoi serviziattiviseguendoleappropriateprocedureepoiriavviailsistema. Usatewhopercontrollarequal'ilvostroattualelivellod'esecuzione:
willy@ubuntu:~$ who -r run-level 2 2006-10-17 23:22 last=S

Dipisuilivellidiesecuzione[runlevel]nellaprossimasezione(v.Sezione4.2.5). Dopoaverstabilitol'inizialelivellodiesecuzioneperilvostrosistema,initlanciatuttiiprocessidi backgroundnecessariperfargirareilsistema cercandonelladirectory rc specificadiquelrun level. init avviaogniscript killer(iloronomidifileinizianoconK)conunparametrodistop. Dopofagiraretuttigliscriptdipartenza(iloronomidifileinizianoconS,cioStart)contenuti nella directory del corrispondente livello di avvio in modo che tutti iservizi ele applicazioni venganolanciatecorrettamente.Difatto,dopocheilsistemahaterminatol'avvio,poteteeseguire manualmentequestistessiscriptconuncomandotipo /etc/init.d/httpd stop o service httpd stopconnessicomeroot(fermandoinquestocasoilwebserver). Casospeciale Notate che all'avvio del sistema, gli script in rc2.d e rc3.d vengono eseguiti 104

IntroduzioneaLinux

normalmente. In questo caso, nessun servizio viene fermato (almeno non permanentemente).Cisonosoloservizichevengonoattivati. Nessuno degli script che normalmente avviano e fermano i servizi sono collocati in /etc/rc<x>.d. Piuttosto tutti i file in /etc/rc<x>.d sono collegamenti simbolici che puntanoagliscriptrealiposizionatiin/etc/init.d.Uncollegamentosimbolicononaltrose nonunfilechepuntaadunaltrofileedintalcasoutilizzatoperchpuesserecreatoedeliminato senzainfluiresugliscriptrealicheuccidonooavvianoiservizi.Icollegamentisimboliciavari scriptsononumeratiinunordineparticolarechedeterminalasequenzadiavvio.Potetecambiare l'ordineconcuisiavvianoesiuccidonoiservizimodificandoilnomedelcollegamentosimbolico chesiriferiscealloscriptcherealmentecontrollaloscript.Poteteutilizzarelostessonumeropi voltesevoletecheunparticolareserviziosiafermatooavviatoprimaodopodiunaltro,come nell'esempioseguentecheelencailcontenutodi/etc/rc5.d,directoryincuicrondexfssono entrambiavviatidaunnomedilinkcheiniziaperS90.Inquestocasogliscriptvengonoavviati inordinealfabetico.
[jean@blub /etc/rc5.d] ls K15httpd@ K45named@ K16rarpd@ K46radvd@ K20nfs@ K61ldap@ K20rstatd@ K65identd@ K20rusersd@ K74ntpd@ K20rwalld@ K74ypserv@ K20rwhod@ K74ypxfrd@ K25squid@ K89bcm5820@ K34yppasswdd@ S05kudzu@ S08ipchains@ S08iptables@ S09isdn@ S10network@ S12syslog@ S13portmap@ S14nfslock@ S17keytable@ S20random@ S25netfs@ S26apmd@ S28autofs@ S30nscd@ S55sshd@ S56rawdevices@ S56xinetd@ S60lpd@ S80sendmail@ S85gpm@ S90crond@ S90xfs@ S95anacron@ S95atd@ S97rhnsd@ S99local@

Dopo che init passato per i livelli di avvio fino a raggiungere quello predefinito, lo script /etc/inittab biforca unprocesso getty perciascuna console virtuale (richiesta dilogin in modotesto).gettyaprelineetty,impostaleloromodalit,presentalarichiestadilogin,ottieneil nomeutenteepoidinizioalprocessodiconnessionediquell'utente,Tuttociconsenteagliutenti diautenticarsinelsistemaediusarlo.Perdefinizione,moltisistemioffronoseiconsolevirtuali,ma, comepoteteriscontrarenelfileinittab,ciconfigurabile. /etc/inittab pu anche dire a init come gestire la pressione da parte dell'utente dei tasti Ctrl+Alt+Delnellaconsole.Siccomeilsistemadovrebbeesserespentoeriavviatoconledovute maniere piuttosto che con l'immediato spegnimento dell'energia elettrica, a init viene detto di eseguireilcomando/sbin/shutdown-t3 -r now,peresempio,quandol'utentepremequeitasti. In aggiunta, /etc/inittab stabilisce cosa init deve fare in caso di interruzione dell'alimentazioneseilvostrosistemadotatodiunitUPS. InmoltisistemibasatisuRPMlavideatagraficadiloginvieneavviatanelrunlevel5,quando /etc/inittabavvialoscript/etc/X11/prefdm.Talescriptlanciailgestoredelloschermo (display manager) di X preferito, basato sui contenuti della directory /etc/sysconfig/desktop.NormalmentesitrattadigdmselanciateGNOMEodikdm se inveceavviateKDE,maessipossonoesserecombinatiec'purexdmchefapartedell'installazione standarddiX. Esistonoperanchealtrepossibilit.PeresempiosottoDebianc'uninitscriptperciascunodei 105

IntroduzioneaLinux

gestoridischermoeilcontenutodi/etc/X11/default-display-managervieneusatoper stabilirequalediquestiavviare.E'possibileleggerequalcosadipisull'interfacciagraficanella Sezione7.3.Perfinire,ladocumentazionedisistemaspiegherdettagliatamentegliaspettidipi altolivellodiinit. Ledirectory/etc/defaulte/o/etc/sysconfigcontengonodatisuunaseriedifunzionie servizi che vengono letti al momento del boot. La posizione della directory contenente le impostazionidibasepotrebbeessereinqualchemododiversaasecondadellavostradistribuzione Linux. Oltrel'ambientegraficodell'utente,ancheunagrandequantitdialtriservizipuessereavviata.Se tuttoprocedeperilmeglio,dovrestevedereunarichiestadiautenticazioneounaschermatadilogin alterminedelprocessodiboot. Altreprocedure Abbiamospiegatocome initSysVoperaneicomputerbasatisux86.Leproceduredi avviopossonovariareasecondadellearchitettureedelledistribuzioni.Altrisistemi usano init stileBSDincuiifilediavviononsonosuddivisiinmolteplicidirectory /etc/rc<LIVELLO>. E' anche possibile che il vostro sistema usi /etc/rc.d/init.dalpostodi/etc/init.d.

4.2.5. I livelli di esecuzione di init


L'ideabasedeidifferentiservizioperantineidiversilivellidiesecuzione(orunlevel)fondatasul concettochesistemidiversipossonoessereutilizzatiinmodidiversi.Nonsiusanocertiservizifino a che il sistema non si trovi in uno stato (o modo) particolare come, ad esempio, quando disponibileperpiutentioperilcollegamentoinrete. Esistonooccasioniincuipotrestevolerusareilsistemainunamodalitdilivellopibasso.Esempi sonolasistemazionedeiproblemidicorruzionedeidischialivello1,inmodochenessunaltro utentesitrovinelsistema,oppureillasciareunservernellivellodiesecuzione3senzaunasessione diXinfunzione.Inquesticasinonhasensofargirareservizichedipendonodaunamodalitdi sistemapi altainquanto,comunque,nonlavorerebberocorrettamente.Avendogiassegnatoa ciascunserviziodiavviarsiquandosiraggiuntoilsuospecificolivellodiesecuzione,voigarantite unordinato processo diavvioepotete rapidamente cambiare lamodalit dellamacchina senza preoccuparvidiqualeservizioavviareoterminaremanualmente. Ilivelli di esecuzione disponibili sitrovano generalmente descritti in /etc/inittab,che vi mostriamoparzialmentequidiseguito:
# # inittab # This file describes how the INIT process should set up the system in a certain run-level.

# Default runlevel. The run levels are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS

106

IntroduzioneaLinux

# (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: <--cut-->

Sentiteviliberidiconfigurareirunlevelinutilizzati(comunementeil4)comemeglioviaggrada. Moltiutenticonfiguranoquestilivellidiesecuzioneinmododaottimizzarlipersalmassimo, mentrelascianoilivellidiesecuzione3e5standard.Ciconsentelorodispostarsirapidamente dentroefuoridallaconfigurazionepersonalesenzainterferireconilnormaleinsiemedifunzioni deilivellistandard. Se il vostro computer cade in uno stato in cui non pu avviarsi a causa di un errato /etc/inittabononvilasciaautenticarviacausadiunfile/etc/passwdcorrotto(oseavete semplicementedimenticatolapassword),fatelopartirenellamodalitutentesingolo(runlevel1). Nientegrafica? Quando lavorate in modalit grafica perch non avete avuto la richiesta di autenticazionegraficasullaconsoledelvostrocomputer,di solitopotetepassarealla console7(omaggiore)perottenereunlogingrafico.Sequestononilvostrocaso, verificate il livello di esecuzione corrente utilizzando il comando who -r. Se impostatosuqualcosadidiversodaquellostandardoriginaleda /etc/inittab, probabile che il sistema non si avvii nella normale modalit grafica: in tal caso contattatel'amministratoredisistemaoleggetevimaninit.Osservatecheilpassaggio dilivelloavvieneutilizzandopreferibilmenteilcomandotelinit:passaredaunaconsole testualeadunagraficaoviceversanoncomportauncambiodilivellodiesecuzione. Inquestaguida latrattazionedei livellidiavvio,scripteconfigurazionicerca diessere ilpi generica possibile anche seesistono molte differenze. Per esempio, Gentoo Linux conserva gli scriptin/etc/run levels.Altrisistemipotrebberopartireattraversounoopilivelliminori edeseguiretuttiirelativiscriptprimadiarrivareallivellodiesecuzionedefinitivoedieseguire quegli script.Fateriferimentoallavostradocumentazionedisistemapermaggioriinformazioni. Potreste pure scorrervi gli script richiamati da /etc/inittab per acquisire una migliore comprensionedicosaavvienenelvostrosistema

4.2.5.1. Strumenti
Iprogrammi diutilit chkconfig o updaterc.d,seinstallati nel vostrosistema, forniscono un semplice strumento a riga di comando per la manutenzione della gerarchia della directory /etc/init.d:essisollevanogliamministratoridisistemadaldovermanipolaredirettamentei numerosicollegamentisimbolicidelledirectorysotto/etc/rc[x].d. Inoltre, alcuni sistemi offrono lo strumento ntsysv, che fornisce un'interfaccia testuale (potrete trovarequestapifaciledausaredell'interfacciaarigadicomandodichkconfig).ConSuSELinux, avreteglistrumenti yasteinsserv.PerlaconfigurazionesemplificatadiMandrake,potrestevole provareDrakConf,checonsente,fralealtrefunzionalit,dipassaredallivellodiesecuzione3al5. 107

IntroduzioneaLinux

ConMandrivaquestodiventailMandrivaLinuxControlCenter. Moltedistribuzionioffronoun'interfacciautentegraficaperconfigurareiprocessi:verificatenella vostradocumentazionedisistema. Tuttequesteutilitydevonoessereavviatecomeroot.L'amministratoredisistemapuanchecreare manualmentegliappropriaticollegamentiinognidirectorydirunlevelperavviareofermareun serviziodiuncertolivellodiesecuzione.

4.2.6. Lo spegnimento
UNIXnonstatocreatoperesserespento,masepropriodovete,utilizzateilcomandoshutdown. Dopoilcompletamentodellaproceduradispegnimento,l'opzione-hfermerilsistema,mentre-r loriavvier. Icomandi reboot ehalt orasonocapacidiinvocare shutdownselanciatiquandoilsistemasi trovaneilivellidiesecuzioneda1a5ecossiassicurauncorrettospegnimento(shutdown)ma sitrattadiunapessimaabitudine daacquisireenontutteleversioniUNIX/Linuxhannoquesta funzionalit. Seilvostrocomputernonsispegnedasolo,nondovrestefarlofinoachenonvedeteunmessaggio cheviindicacheilsistemafermoochelachiusuranonterminata,perdaretempoalsistemadi smontaretuttelepartizioni.Essereimpazientipotrebbecausareunaperditadidati.

4.3. La gestione dei processi


4.3.1. Lavori per l'amministratore di sistema
Mentre gestire le risorse di sistema, compresi i processi, un compito dell'amministratore del sistemalocale,nonnuoceaduncomuneutenteconoscerequalcosadiquesto,specialmentequando ciriguardaisuoiprocessielaloroesecuzioneottimale. Spiegheremounpo'alivelloteoricoleprestazionidelsistema,sebbenenonfinoallaottimizzazione dell'hardware esimili. Piuttosto studieremo iproblemi quotidiani concui deve confrontarsi un comuneutenteeleazionidaintraprendereintalequalitperusarealmegliolerisorsedisponibili. Comeimpareremonellaprossimasezione,cicostituisceunmotivoperpensareprimadiagire. Figura42.Puoicorrerepivelocemente?

108

IntroduzioneaLinux

4.3.2. Quanto tempo richiede?


Bashoffreilcomandointegrato time chemostraquantotempouncomandoimpiegaperessere eseguito. Il cronometraggio altamente accurato e pu essere usato con qualsiasi comando. Nell'esempioseguenteessoimpiegaunminutoemezzopercompilarequestotesto:
tilly:~/xml/src> time make Output written on abook.pdf (222 pages, 1619861 bytes). Transcript written on abook.log. real user sys 1m41.056s 1m31.190s 0m1.880s

Ilcomando GNU time in /usr/bin (adifferenza dellaversione integrata nella shell) mostra maggioriinformazionipresentabiliindiversimodi.Mostraanchelostatodiuscitadelcomandoed iltempo totaletrascorso.Lostesso comandocheusail time indipendenteappena descrittod questorisultatoavideo:
tilly:~/xml/src> /usr/bin/time make

109

IntroduzioneaLinux

Output written on abook.pdf (222 pages, 1595027 bytes). Transcript written on abook.log. Command exited with non-zero status 2 88.87user 1.74system 1:36.21elapsed 94%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (2192major+30002minor)pagefaults 0swaps

RiportatevinuovamenteallepagineInfopertutteleinformazioni.

4.3.4. Le prestazioni
Perunutenteprestazionisignificaunarapidaesecuzionedeicomandi.Perungestoredisistema, d'altrocanto,significamoltodipi:l'amministratoredeveottimizzareleprestazionidelsistema complessivo,compresigliutenti,tuttiiprogrammieidemoni.Leprestazionidelsistemapossono dipenderedaunmigliaiodipiccolecosechenonvengonoconsideratedalcomandotime:

ilprogrammainesecuzionestatoscrittomaleononusaadeguatamenteilcomputer l'accessoaidischi,aicontroller,aldisplay,atuttiitipid'interfaccia,ecc... laraggiungibilitdeisistemiremoti(prestazionidirete) laquantitdiutentinelsistemaediquellichestannolavorandoincontemporanea ilmomentodellagiornata ...

4.3.4. Il carico
Inbreve:ilcaricodipendedacichenormaleperilvostrosistema.IlmiovecchioP133,chesta eseguendounfirewall,unserverSSH,unfileserver,undemonediroute,unserversendmail,un server proxy e alcuni altri servizi, non si lamenta con 7 utenti connessi: il carico ancora mediamente0.Alcunisistemi(multiCPU)chehovistoeranoinveceabbastanzacontenticonun caricoparia67.Esistesolounmodoperscoprirlo:controllateloregolarmentesevoletesaperese normale.Senonlofate,saretesolocapacidimisurareilcaricodisistemadaltempodirisposta dellalineadicomando,cheunamisurazionemoltodifficiledalmomentochequestavelocit influenzatadauncentinaiodialtrifattori. Teneteinmentechedifferentisistemisicomporterannoinmanieradiversaconlastessamediadi carico. Per esempio, un computer con una scheda grafica che supporta l'accelerazione grafica hardwarenonincontrerprobleminellacreazionediimmagini3D,mentrelostessocomputercon unaschedaVGAeconomicarallenterspaventosamente.IlmiovecchioP133diverrabbastanza scomodoavviandoilserverX,mainunmodernocomputernoteretepesantementeladifferenzanel caricodisistema.

4.3.5. Posso fare qualcosa come utente?


Ungrossoambientepurallentarvi.Seavetemoltevariabilid'ambiente(alpostodivariabilidi shell), percorsi di ricerca lunghi e non ottimizzati (errori nell'impostazione della variabile 110

IntroduzioneaLinux

ambientaledelpercorso)ecosvia,ilsistemaavrbisognodipitempoperricercareeleggere dati. InX,igestoridellefinestreegliambientidesktoppossonoesseredeiverimangiatoridiCPU.Un desktoprealmenteestrosocomportadeicosti,anchequandoloscaricategratis,dalmomentochela maggiorpartedeidesktopsipudotarediprogrammiaggiuntivi adinfinitum.Lamodestiauna virt,senoncomprateunnuovocomputerognianno.

4.3.5.1. La priorit
Lapriorit,ovverol'importanzadiunprocesso,definitadalnumerodinice.Unprogrammacon unnumerodinicealtoconcilianteconglialtriprogrammi,glialtriutentieilsistema;nonunjob importante.Minoreilnumerodiniceepiimportanteunjobedessorichiedermaggioririsorse senzacondividerle. L'incremento delnumero diniceadun jobutile soltanto nelcaso diprocessi cheutilizzano pesantementeiltempodellaCPU(compilatori,applicazionimatematicheecosvia).Iprocessiche usano sempre molto tempo di I/O vengono automaticamente ricompensati dal sistema con concessionediunaprioritmaggiore(unnumeroinferioredinice):peresempiol'inputdatastiera ottienesemprelapialtaprioritinunsistema. Perdefinirelaprioritdiunprogrammasiricorrealcomandonice. MoltisistemifornisconoancheilcomandoBSDrenice.cheviconsentedivariareilvalorenicedi uncomando inesecuzione. Nuovamente, leggetelapaginamanperspecifiche informazioni sul sistema. Programmiinterattivi Nonunabuonaideautilizzare nice o renice suunprogramma interattivoosuun programmainesecuzioneinprimopiano. L'impiegodiquesticomandiabitualmenteuncompitodell'amministratoredisistema.Leggetele paginemanpermaggioriinformazionisullefunzionalitextraadisposizionedell'amministratoredi sistema.

4.3.5.2. Le risorse della CPU


InognisistemaLinuxmoltiprogrammivoglionousarela(le)CPUcontemporaneamente,anchese viununicoutentedelcomputer.OgniprogrammanecessitadiunacertaquantitdiciclidiCPU perpotergirare.Potrebberoesisteredellevolteincuinoncisonoabbastanzacicliacausadella CPU troppo occupata. Il comando uptime largamente impreciso (fornisce solo delle medie, dovetecapirechenormale),malontanodall'essereinutile.Esistonoalcuneoperazionichepotete intraprendereseritenetechelaCPUsiadaincolpareperl'inerziadelvostrosistema:

Avviareprogrammipesantiquandoilcaricobasso.Questopotrebbeessereilcaso delvostrosistemaintempodinotte(v.laprossimasezioneperlaprogrammazione 111

IntroduzioneaLinux

deglieventi). Evitare al sistema lo svolgimento di lavoro non necessario: fermate demoni e programminonutilizzati,usatelocatealpostodiunpesantefind,... Avviategrossijobconunaprioritbassa

Senessunadiquestesoluzioniutilizzabilenellavostrasituazionespecifica,dovreteconsiderare l'aggiornamentodellaCPU.InunamacchinaUNIXquestouncompitodell'amministratore di sistema.

4.3.5.3. Le risorse di memoria


Quando i processi attualmente in funzione si aspettano pi memoria di quella fisicamente disponibilenelsistema,unsistemaLinuxnonandrin crash:essocominceraimpaginareoa swappare, cio adusare lamemoria sudisco onell'area diswap, spostando il contenuto della memoriafisica(pezzidiprogrammiinfunzioneointeriprogrammiincasodiswap)neldisco,in mododasgombrarelamemoriafisicapergestirepiprocessi.Ilcomandotoppuessereutilizzato per mostrare l'uso della memoria e della swap. I sistemi che usano glibc offrono i comandi memusageememusagestatpervisualizzarel'usodellamemoria. Sescopritechemoltadellamemoriaedellospaziosonousati,poteteprovarea:

uccidere,fermareocambiarelaprioritdiqueiprogrammicheusanounagrossa quantitdimemoria aggiungerepimemoria(edinalcunicasipispaziodiswap)alcomputer aggiustareleprestazionidelsistema,argomentochevaaldildelloscopodiquesto documento(v.l'elencodilettureinAppendiceApermaggioriinformazioni).

4.3.5.4. Le risorse di I/O


MentrelelimitazionidiI/O(cioInput/OutputoIngresso/Uscita)sonounadelleprincipalicausedi stress per gli amministratori di sistema, Linux offre utility piuttosto povere per misurare le prestazionidiI/O.Glistrumentips,vmstatetopdannoqualcheindicazionesuquantiprogrammi sianoinattesadiI/O;netstatmostralestatistichedell'interfacciadirete,manonesistonorealmente strumentidisponibilipermisurarelareattivitdell'I/Oalcaricodisistemaedilcomando iostat restituisceunabrevedescrizionedell'usodell'I/Oingenerale.Esistonovarifrontendgraficiper rappresentarel'outputditalicomandiinunaformaumanamentecomprensibile. Ciascuna periferica ha i suoi propri problemi, ma le larghezze di banda a disposizione delle interfaccedireteedeidischisonoleduecauseprimariedeicollidibottiglianelleprestazionidi I/O. IproblemidiI/Odellarete:

Retesovraccarica: la quantit di dati trasportati sulla rete maggiore della sua capacit, con conseguenteesecuzionelentadiqualsiasioperazionediretepertuttigliutenti.Cisi

112

IntroduzioneaLinux

purisolvereripulendolarete(cosacheimplicaladisabilitazionediprotocollie servizinonnecessari)oriconfigurandolarete(peresempioconilricorsoasottoreti, allasostituzionedeglihubconswitch,all'aggiornamentodiinterfacceeattrezzature); Problemidiintegritdellarete: capitanoquandoidativengonotrasferitiinmodoscorretto.Perrisolverequestotipo diproblemasipusolamenteisolarel'elementoguastoesostituirlo.

ProblemidiI/Odeldisco: rateoditrasferimentoperprocessoeccessivamentelento: nonsufficientelavelocitdiletturaoscritturaperunsingoloprocesso; rateoaggregatodeltrasferimentotroppolento; lalarghezzadibandatotalemassimacheilsistemapufornireatuttiiprogrammi nonsufficiente. Questo tipo di problemi pi difficile da individuare e normalmente richiede dell'hardware extra perredistribuire iflussididati neibus,controller edischi seil sovraccaricodell'hardwarenel'origine.Unasoluzionedicilaconfigurazionediun sistema RAID ottimizzato per le operazioni di input e output. In questo modo manterrete lostesso hardware. L'altra opzione l'aggiornamento abus, controller e dischipiveloci. Selacausanonilsovraccarico,potrebbetrattarsidelvostrohardwarechesistaprogressivamente deteriorandoodellasuanonperfettaconnessionealsistema.Percominciare,controllatecontatti, connettorieprese.

4.3.5.5. Gli utenti


Gliutentisipossonosuddividereindiversecategorieinbaseallorocomportamentonell'utilizzo dellerisorse:

utenticheavvianoun(grande) numero dipiccoli processi: voi,peresempio,nuoviutenti Linux; utenti che avviano relativamente pochi processi ma di grosse dimensioni: simulazioni, calcoli, emulatori oaltri programmi che divorano una quantit dimemoria esolitamente accompagnatidagrandifileddati; utenticheeseguonopochiprocessimausanomoltotempodellaCPU(sviluppatoriesimili).

Poteteconstatarechelerichiestedisistemapossonovariareasecondadellaclassediutentieche difficileaccontentaretutti.Sevitrovateinunsistemamultiutente,utile(edivertente)scoprirele abitudinideglialtriutentinelsistemaperottenereilmassimoperivostriimpieghispecifici.

4.3.5.6. Strumenti grafici


Per gli ambienti grafici sono disponibili strumenti di monitoraggio in quantit. Qui sotto c' l'immaginedelMonitordiSistemaGnome,chepossiedelecaratteristichedimostrareericercare informazionisuiprocessiedimonitorarelerisorsedisistema: Figura43.IlMonitordiSistemaGnome 113

IntroduzioneaLinux

C'ancheunpaiodicomodeiconechepoteteinstallarenellataskbarcomemonitordidischi, memoriaecarico.xloadun'altrapiccolaapplicazionediXperilcontrollodelsistema.Scopritela vostrapreferita!

4.3.5.7. L'interruzione dei vostri processi


Comeutentinonprivilegiati,voipoteteinfluiresolosuivostriprocessipersonali.Abbiamo gi vistocomepotetemostrareiprocessi,filtrarequellicheappartengonoadundeterminatoutentee quali possibili restrizioni si possono incontrare. Ci sono due cose che potete fare quando vi accorgetecheunodeivostriprocessistaconsumandotropperisorsedisistema: 1. fareinmodocheilprocessousimenorisorsesenzainterromperlo; 2. fermareilprocessocompletamente. Sedesideratecheilprocessocontinui,mavoletelasciaremaggior spazioaglialtriprocessidel sistema,poteteusarerenicesulmedesimo.Apartel'usodeicomandiniceorenice,topunmodo facileperindividuareiprocessiproblematicieperridurrelapriorit. Identificate il processo nella colonna NI: molto probabilmente sar quello con una priorit negativa.Batteteredinseritel'IDdelprocessoacuivoletemodificarelapriorit.Indicatepoiil valorenice(peresempio20):cistaadindicarechetaleprocessouseralmassimo1/5dei ciclidiCPU. Esempidi processichevoletemantenereinfunzionesono:gliemulatori,lemacchinevirtuali,i compilatoriecosvia. Sedesideratefermareunprocessoperchsiimpiantaostadivenendocompletamenteunberserk sullastradadelconsumodell'I/O,nellacreazionedifileonell'usodialtrerisorse, utilizzateil comando kill. Se neavete l'opportunit, prima provate auccidere elegantemente il processo, inviandoilsegnaleSIGTERM.Questaun'istruzioneperterminarequalsiasicosasistiafacendo, secondoleproceduredescrittenelcodicedelprogramma: 114

IntroduzioneaLinux

joe:~> ps -ef | grep mozilla joe 25822 1 0 Mar11 ? joe:~> kill -15 25822

00:34:04 /usr/lib/mozilla-1.4.1/mozilla-

Nell'esempioquisopra,l'utentejoehafermatoilsuobrowserMozillaperchquestosierabloccato. Alcuniprocessisonopidifficilidaeliminare.Seneaveteiltempo,poteteinviareloroilsegnale SIGINTperinterromperli.Secinonfunziona,usateilsegnalepiforte,SIGKILL.Nell'esempio seguente,joefermaunMozillachesibloccato:


joe:~> ps -ef | grep mozilla joe 25915 1 0 Mar11 ? joe:~> kill -9 25915 joe:~> ps -ef | grep 25915 joe 2634 32273 0 18:09 pts/4 00:00:00 grep 25915 00:15:06 /usr/lib/mozilla-1.4.1/mozilla-

Inquesticasi,potrestedesideraredicontrollarequaleprocessorealmentemorto,usandoilfiltro grepsulPID.Sequest'ultimorestituiscesoloilprocessogrep,potretestaresicuridiessereriusciti nelfermarlo. Fraiprocessichesonoarduidaucciderec'lavostrashell.Eciunabuonacosa:seessafosse semplicedauccidere,voipotresteperderelashellogniqualvoltapremeteaccidentalmenteCtrlC nellalineadicomando,damomentocheciequivaleadinviareunSIGINT. Linuxquasiimpensabilesenzalepipe L'usodellepipe(|)perinviareidatiinuscitadiuncomandoall'ingressodiunaltro vienespiegatonelprossimo capitolo5 . Inunambientegrafico,ilprogrammaxkillrisultapiuttostofaciledaimpiegare:bastasolodigitare ilnomedelcomando,seguitodaunInvio,esceglierelafinestradell'applicazionedafermare.E' comunqueanchepiuttostopericolosoperchinvianormalmenteunSIGKILL:usatelopercisolo quandoun'applicazionesiimpianta.

4.4. Temporizzare i processi.


4.4.1. Usate quel tempo di ozio!
Unsistema Linuxpupatiremolto,masolitamente soffre solodurante leored'ufficio.Chesi trovino inunambiented'ufficio,inunastanzadeiserver oacasa,moltisistemi Linuxoziano duranteilprimomattino,lasera,lanotteedifinesettimana.L'utilizzoditaletempodiinattivit puesseremoltopieconomicodell'acquistodiquellemacchinechedovrestecomprarevolendo faretuttonelmedesimotempo. Esistonotretipidiesecuzioneritardata:

115

IntroduzioneaLinux

attendere perunpocoepoiriassumere l'esecuzione diunprocesso, usando ilcomando sleep.Iltempodiesecuzionedipendedaltempodelsistemaalmomentodell'invio. avviareuncomandoinunmomentospecificato,usandoilcomando at.L'esecuzionedel processo(odipiprocessi)dipendedaltempodisistema,nondalmomentodell'invio,non daquellodiinvio. avviareunprocessoregolarmenteconcadenzamensile,settimanale,giornalieraodoraria, usandoimezzioffertidacron.

Leseguentisezionitrattanodiciascunapossibilit.

4.4.2. Il comando sleep


LapaginaInfodedicataasleepforseunadellepicorte.Tuttocichefasleepattendere. Normalmenteiltempodaaspettarevieneespressoinsecondi. Allora,perchesiste?Alcuniesempipratici: QualcunotelefonaevoirispondeteSisarldatetramezz'ora,masieteveramentesommersida lavoroesietepurecostrettiarinunciarealpranzo: (sleep1800;echoOradipranzo...)& Quandoperqualchemotivononpoteteusareilcomandoat(sonolecinque),voleteandareacasa mac'ancoralavorodasbrigareeproprioadessoqualcunostasottraendorisorsedelsistema: (sleep10000;mioprogramma)& Avviando questo genere di processo assicuratevi che ci sia una disconnessione automatica nel vostrosistemaediuscireodibloccareilvostroufficio/desktop,oppureavviateloinunasessionedi screen. Quandolanciateunaseriedistampedigrossifile,madesideratechealtriutentipossanostampare nelfrattempo: lpmucchioditesti;sleep900;lpgrossofile;sleep900;lpaltrogrossofile NelCapitolo8tratteremodellastampadeifile. Iprogrammatoriusanospessoilcomandosleepperfermarel'esecuzionediscriptoprogrammiper uncertolassoditempo.

4.4.3. Il comando at
Ilcomandoateseguedeicomandiadunadataora,utilizzandolavostraconsuetashellamenoche nondiateilcomandoinaltromodo(v.paginaman). 116

IntroduzioneaLinux

steven@home:~> at tomorrow + 2 days warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> cat reports | mail myboss@mycompany at> <EOT> job 1 at 20010616 12:36

BattendoCtrl+Dsiinterrompel'utilityatesigenerailmessaggioEOT. L'utentestevenquifaunacosastranacombinandoduecomandi;studieremoquestotipodiesempio nelCapitolo5Redirezionedell'Inputedell'Output.


steven@home:~> at 0237 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> cd new programs at> ./configure; make at> <EOT> job 2 at 20010614 02:00

L'opzione-minviaunmessaggiodipostaall'utentealterminedelprocesso,oppureavvisaquando quest'ultimononstatocompletato.Ilcomandoatqelencaiprocessi;datetalecomandoprimadi lanciare dei processi in modo da evitare di farli partire contemporaneamente ad altri. Con il comandoatrmpoteterimuoveredeiprocessipianificati,secambiatepropositi. Unabuonaideasceglierestranioraridiesecuzionepoichiprocessidisistemavengonospesso avviatoalloscoccaredelleore,comepoteteconstatarenellaprossimaSezione4.4.4.Peresempioi processi spesso vengono lanciati all'una precisa del mattino (l'indicizzazione del sistema per l'aggiornamentodeldatabasestandarddilocate),cosicchlafissazionediuntempoparia0100 potrebbefacilmenterallentareilvostrosistemapiuttostochefarloaccelerare.Perimpedirechei processisianoavviatituttiallostessotempo,poteteusareancheilcomandobatch,cheliaccodaeli sottoponealsistemainunmodoequilibratoalloscopodiprevenirepicchieccessividiusodelle risorsedisistema.V.lepagineInfoperulterioriinformazioni.

4.4.4. Cron e crontab


Ilsistemacronvienegestitodaldemonecron:riceveinformazionisuquandoequaliprogrammi avviare in base alle istruzioni delsistema edelle crontab degli utenti. Solo l'utente root ha accessoallecrontabdisistema,mentreciascunutenteaccedeesclusivamenteallepropriecrontab. Inalcunisistemigliutenti(alcuni)possonoessereprividellefunzionalitdicron. Durantel'avviodelsistemaildemonecroncercaleistruzionicrontabin/var/spool/cronche sono elencate dopo gli account in /etc/passwd, in /etc/cron.d e in /etc/crontab, quindiusaquesteinformazioniogniminutopercontrollaresec'qualcosadafare.Essoeseguei comandicomel'utentechepossiedeilfilecrontabedinviaperpostaognioutputdeicomandial medesimo. NeisistemicheutilizzanoilVixiecron,iprocessichesiripetonoconcadenzaoraria,giornaliera, settimanaleemensilesonoconservatiindirectoryseparatesotto/etcpervederlirapidamente,al 117

IntroduzioneaLinux

contrariodellafunzionecronstandardUNIXdovetuttiicompitisonoinseritiinununicogrosso file. EsempiodiunfileVixiecrontab:


[root@blob /etc]# more crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # runparts # commands to execute every hour 01 * * * * root runparts /etc/cron.hourly # commands to execute every day 02 4 * * * root runparts /etc/cron.daily # commands to execute every week 22 4 * * 0 root runparts /etc/cron.weekly commands to execute every month 42 4 1 * * root runparts /etc/cron.monthly

Alternativa Potresteusareancheilcomandocrontab-lpervedereicrontab. Vengonoimpostatedellevariabiliepoic'laverapianificazione,unalineaperogniprocessocon5 campi inizialiperl'oraeilgiorno.Ilprimocampocontienei minuti(da0a59),il secondo definiscel'oradi esecuzione(023),ilterzorappresentailnumerodelgiorno(131),ilquartoil numerodelmese(112)el'ultimoil giornodellasettimana(07,dovesia0che7indicanola domenica). Unasteriscoinquesticampirappresental'interaseriedivaloriaccettati.Glielenchi sonoconsentiti:inseriretenell'ultimocampo15pereseguireunprocessodallunedalvenerde 1,3,5perl'esecuzioneneigiorniluned,mercoledevenerd. Dopoquesti5campivienel'utentechedovrebbeavviareiprocessielencatinell'ultimacolonna. L'esempioquisopraricavatodaunaconfigurazionediVixiecronincuirootavviailprogramma runpartsadintervalliregolariconledirectoryappropriatecomeopzioni.Inquestedirectoryiveri processidaeseguireall'orariopianificatosonoconservaticomescriptdishell,comequestopiccolo scriptchevieneavviatoquotidianamenteperaggiornareildatabaseutilizzatodalcomandolocate:
billy@ahost cron.daily]$ cat slocate.cron #!/bin/sh renice +19 p $$ >/dev/null 2>&1 /usr/bin/updatedb f "nfs,smbfs,ncpfs,proc,devpts" e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"

Si suppone che gli utenti modifichino i propri crontab in modo sicuro utilizzando il comando crontabe :ciimpedirl'aperturaaccidentaledipidiunacopiadelfilecrontab.Solitamente l'editor vi (v. Capitolo6,perpoteteusarequalsiasieditortestuale,come gvim o gedit, sevi trovatemeglioconuneditorvisuale). Altermineilsistemavicomunicherchestatoinstallatounnuovocrontab. Ilcrontabseguentericordaabillydirecarsiognigiovedseraalproprioclubsportivo: 118

IntroduzioneaLinux

billy:~> crontab l # DO NOT EDIT THIS FILE edit the master and reinstall. # (/tmp/crontab.20264 installed on Sun Jul 20 22:35:14 2003) # (Cron version $Id: chap4.xml,v 1.24 2006/10/26 15:37:52 tille Exp $) 38 16 * * 3 mail s "sports evening" billy

Dopoaveraggiuntounanuovaattivitpianificata,ilsistemavidirchestatoinstallatounnuovo crontab. Non necessario riavviare il demone cron per rendere efficaci i cambiamenti. Nell'esempiobillyhaaggiuntounanuovarigachepuntaadunoscriptdibackup:
billy:~> crontab e 45 15 * * 3 mail s "sports evening" billy 4 4 * * 4,7 /home/billy/bin/backup.sh <write and quit> crontab: installing new crontab billy:~>

Lo script backup.sh viene eseguito ogni gioved e domenica (v. Sezione 7.2.5 per un'introduzioneagliscriptdishell).Tenetepresenteche,sepresente,l'outputdeivostricomandi vieneinviato come emailalproprietariodelfilecrontab.Senonfossestatoconfiguratoalcun serviziodiposta,potrestetrovarel'outputcomesemplicefileditestonellavostracasellapostale locale/var/spool/mail/<vostro_nomeutente>. Chiavviaimieicomandi? Non dovete specificare l'utente che dovrebbe avviare i comandi in quanto vengono eseguitinormalmenteconipermessipropridell'utente.

4.5. Sommario
Linuxunsistemaoperativomultiutente,multitasking,cheimpiegaunmodosimileaUNIXper gestire i processi. La velocit di esecuzione dei comandi pu dipendere da migliaia di piccoli fattori:fral'altro,abbiamoimparatomoltinuovicomandipervisualizzareemanipolareiprocessi. Ecconeunalista: Tabella43.Nuovicomandinelcapitolo4:Processi Comando at atq atrm batch crontab halt Significato Accodaiprocessiperlasuccessivaesecuzione. Elencaiprocessidell'utenteinesecuzione. Cancellaprocessiinbaseallorospecificonumerodiprocesso. Eseguecomandiquandoillivellodicaricodisistemalopermette. Gestisceifilecrontabperogniutente. Fermailsistema. 119

IntroduzioneaLinux

Comando initrun level jobs kill mesg netstat nice pgrep ps pstree reboot renice shutdown sleep time top uptime .stat w wall who write

Significato Elaborailprocessodiinizializzazione. Elencaiprocessicorrentementeinesecuzione. Terminaunprocesso. Controllal'accessoinscritturadelvostroterminale. Mostraleconnessionidirete,letabellediinstradamento,lestatistichedi interfaccia,leconnessionimascherateeleappartenenzedelmulticast. Avviaunprogrammaconlaprioritprevistamodificata. Mostraiprocessi. Presentalostatodeiprocessi. Mostraunalberodeiprocessi. Riavviailsistema. Modificalaprioritdiesecuzionedeiprocessi. Spegneilsistema. Ritardaperuntempodeterminato. Temporizzauncomandoomostral'usodellerisorse. Mostraiprocessiprincipali Mostradaquantotempoilsistemastafunzionando Presentalestatistichedellamemoriavirtuale. Mostrachiconnessoalsistemaechecosastafacendo Inviaunmessaggioatuttiiterminali. Mostrachiconnessoalsistema Mandaunmessaggioadunaltroutente.

4.6. Esercizi
Questisonoalcuniesercizicheviaiuterannoacomprendereilsignificatodeiprocessichegirano nelvostrosistema.

4.6.1. In generale

Avviatetopinunterminalementreeseguiteglieserciziinunaltro. Avviateilcomandops. Leggetelepaginemanpercercareilmododivisualizzaretuttiivostriprocessi

120

IntroduzioneaLinux

Avviateilcomando find/.Qualeeffettoproduce sulcarico disistema? Fermate questo comando. Inmodalitgrafica,avviateilprogrammaxclockinprimopianoepoilasciatelofunzionare dietrolequinte.Fermateilprogrammausandoilcomandokill Avviatedirettamenteinbackgroundilprogramma xcalcinmododaliberareilpromptdel terminaledacuistatoavviato. Cosafakill91? Aprite nuovamente due terminali o finestre di terminale e usate write per inviare un messaggiodall'unaall'altra. Dateilcomandomesg.Checosadice? Quantocivuolepereseguirelsnelladirectorycorrente? Inbasealleinformazionideiprocessiin/procdivostrapropriet,comedovetefareper scoprirequaliprocessiattualmenterappresentano? Daquantotempoattivoilvostrosistema? Qual'lavostraattualeTTY? Indicate3processichenonpossonoaveravutoinitcomeoriginariogenitore. Elencate3comandicheusanolamodalitSUID.Spiegateperchciavviene. Nominateicomandichegeneralmentecausanoilmaggiorcariconelvostrosistema.

4.6.2. Avvio, init, ecc...


Poteteriavviareilsistemainqualitdinormaleutente?Perchcos? Inbasealvostroattualelivellodiavvio,elencateipassaggidaeffettuareperlachiusura. Come cambiate livello di avvio del sistema? Passate dal vostro livello di esecuzione standardallivello1eviceversa. Elencatetuttiiserviziedemoniavviatidall'accensionedelvostrosistema. Qualekernelvienecaricatoattualmenteall'avvio? Fingetedidoveravviareunqualchestranoserveralmomentodell'accensione:finora,dopo l'accensionedelsistemaviautenticavateelanciavatequestoservermanualmentericorrendo allo script consegna_pizza della vostra directory personale. Cosa dovete fare per consentirel'avvioautomaticodelservizionelrunlevel4davoicreatosolopertalescopo?

4.6.3. Pianificazione

Usatesleeppercreareunavvisochelavostrapastaprontaindieciminuti. Createunprocesso atchecopituttiifiledellavostradirectorypersonalein/var/temp dopomezzora.Potrestecreareancheunasottodirectoryin/var/temp. Createunprocessocroncheeseguaquestocompitodallunedalvenerdall'oradipranzo. Controllatechefunzioni. Inseriteunerroreneidaticrontabcome,adesempio,uninesistentecomandocopyalposto dicp.Cosasuccedeconl'esecuzionedelcompito?

121

IntroduzioneaLinux

Capitolo 5. Redirezione dell'I/O


Questocapitoloforniscemaggiori informazionisulpotentemeccanismoUNIXdella redirezionedell'input,dell'outputedeglierrori.Gliargomenticomprendono:

Standardinput,outputederrori Operatoridiredirezione Comeusarel'outputdiuncomandocomeinputdiunaltro Come creare un file con l'output di un comando per una successiva consultazione Comeaccodarel'outputdipicomandiinunfile Redirezionedell'input Gestionedeimessaggistandarddierrore Combinarelaredirezionedeiflussidiinput,outputedierrore Filtridell'output

5.1. Semplici redirezioni


5.1.1. Cosa sono lo standard input e lo standard output?
MolticomandiLinuxleggonol'input,comefileoaltroattributodelcomando,escrivonol'output. Dinormal'inputvienedatodatastierael'outputapparesulvostroschermo.Latastieracostituisceil vostrodispositivodistandardinput(stdin)[ingressostandard]eloschermoounaspecificafinestra diterminaleinveceildispositivodistandardoutput(stdout)[uscitastandard]. Comunque,dalmomentocheLinuxunsistemaflessibile,questeimpostazionidibasenondevono essereapplicatenecessariamente.Adesempiolostandardoutputdiunservermoltocontrollatoin ungrandeambientepuessereunastampante.

5.1.2. Gli operatori di redirezione


5.1.2.1. Redirezione dell'output con > e |
Qualchevoltapotrestevolersalvarel'outputdiuncomandoinunfileoppureapplicareunaltro comando sull'outputdiuncomando.Questaoperazionenotacomeredirezionedell'output. La redirezionesifautilizzandosia>(simbolodimaggiore),sial'operatore|(pipeininglese)che invialostandardoutputdiuncomandoadunaltrocomestandardinput. Comeabbiamovistoinprecedenza,ilcomando cat concatenaifileeliinviatuttiinsiemeallo standard output.Redirigendo questooutputadunfile,essoverrcreatoosovrascrittosegi esistente(fateattenzione).
nancy:~> cat test1

122

IntroduzioneaLinux

some words nancy:~> cat test2 some other words nancy:~> cat test1 test2 > test3 nancy:~> cat test3 some words some other words

Nonsovrascrivete! State attenti a non sovrascrivere file esistenti (magari importanti) quando redirigete l'uscita dei dati. Molte shell, compresa Bash, hanno la capacit predefinita di proteggervi da tale rischio: noclobber (consultate le pagine Info per maggiori informazioni). Con Bash dovreste aggiungere il comando set -o noclobber al vostrofilediconfigurazione.bashrcperprevenirescrittureaccidentalidifile. Redirigerenienteversounfileesistenteequivaleasvuotarlo:
nancy:~> ls l list rwrwr 1 nancy nancy 117 Apr 2 18:09 list nancy:~> > list nancy:~> ls l list rwrwr 1 nancy nancy 0 Apr 4 12:01 list

Questoprocessochiamatotroncamento. Lastessaredirezioneadunfileinesistentecreerunnuovofilevuotoconilnomeindicato:
nancy:~> ls l newlist ls: newlist: No such file or directory nancy:~> > newlist nancy:~> ls l newlist rwrwr 1 nancy nancy 0 Apr 4 12:05 newlist

IlCapitolo7forniscealcunialtriesempidell'usodiquestotipodiredirezione. Eccoalcuniesempidell'utilizzodell'incanalamento(piping)deicomandi. Pertrovareunaparolainuncertotesto,mostratetuttelelineecontenentiparola1edescludete quellechecontengonoancheparola2: grepparola1 file|grep-v parola2 Permostrarel'outputdiunelencodeifilediunadirectoryunapaginaallavolta: ls-la|less Pertrovareunfileinunadirectory: 123

IntroduzioneaLinux

ls-l|grepparte_del_nome_del_file

5.1.2.2. Redirezione dell'input


Inaltreoccasionipotrestevolerecheunfilecostituissel'inputdiuncomandochenormalmentenon accetta file come opzione. Questa redirezione dell'input si ottiene ricorrendo all'operatore < (minore). Quisottoc'unesempiodicomeinviareunfileaqualcunoutilizzandolaredirezionedell'input.
andy:~> mail mike@somewhere.org < to_do

Sel'utentemikeesistenelsistema,nonavetebisognodiscriverel'interoindirizzo.Seinvecevolete raggiungerequalcunosuInternet,battetel'interoindirizzocomeargomentodimail. Taleesempiosileggeconmaggioredifficoltrispettoalbanalecatfile|mailqualcunoma unmodomoltopieleganteperusareglistrumentidisponibili.

5.1.2.3. Combinare redirezioni


L'esempio seguente combina le redirezioni di input e output. Il file testo.txt viene prima controllatoallaricercadierroriel'outputvienepoiredirettoinunfilediregistrazionedeglierrori: spell<testo.txt>errori.log Ilcomandoseguenteelencatuttiicomandichepotetedareperesaminareunaltrofilequandousate less:
mike:~> less help | grep i examine :e [file] Examine a new file. :n * Examine the (Nth) next file from the command line. :p * Examine the (Nth) previous file from the command line. :x * Examine the first (or Nth) file from the command line.

L'opzione -i vieneutilizzata perricerche nonsensibili amaiuscolo/minuscolo (ricordate chei sistemiUNIXsonomoltocasesensitive). Sedesideratesalvarel'outputdiquestocomandoperfuturamemoria,redirigeteloadunfile:


mike:~> less help | grep i examine > esaminarefileinless mike:~> cat esaminarefileinless :e [file] Examine a new file. :n * Examine the (Nth) next file from the command line. :p * Examine the (Nth) previous file from the command line. :x * Examine the first (or Nth) file from the command line.

Difattol'outputdiuncomandopuessereincanalatoinunaltrocomandoquantevoltevoletea condizionechenormalmentetalicomandilegganoidatiiningressodallostandardinputescrivano 124

IntroduzioneaLinux

nellostandardoutputquelliinuscita.Talvoltaessinonsonoingradodifarlo,mapotrebberoesserci dellespeciali opzionicheistruisconoquesticomandiacomportarsi secondoleregoleconsuete. Leggeteperciladocumentazione(paginemaneInfo)deicomandiutilizzatinelcasootteniate deglierrori. Nuovamente, siate certi di non usare nomi di file esistenti di cui avete ancora bisogno: la redirezionedell'outputafileesistenticancellerillorocontenuto.

5.1.2.4. L'operatore >>


Invece di sovrascrivere i dati dei file, potete anche aggiungere del testo ad un file esistente utilizzandoinsuccessioneduesegnidimaggiore. Esempio:
mike:~> cat listadesideri piu' soldi meno lavoro mike:~> date >> listadesideri mike:~> cat listadesideri piu' soldi meno lavoro Thu Feb 28 20:23:07 CET 2002

Il comando date scriverebbe sull'ultima linea sullo schermo: adesso invece la aggiunge al file listadesideri.

5.2. Caratteristiche avanzate della redirezione


5.2.1. Uso dei descrittori di file
EsistonotretipidiI/Oeciascunohailproprioidentificatore,chiamatodescrittoredifile:

standardinput:0 standardoutput:1 standarderror:2

Nelle descrizioni seguenti, se il numero descrittore di file viene omesso e il primo carattere dell'operatorediredirezione<,laredirezionesiriferisceallostandardinput(descrittoredifile0): seinveceilprimocaratteredell'operatorediredirezione>,alloralaredirezionesiriferisceallo standardoutput(descrittoredifile1). Alcuniesempipraticivichiarirannomaggiormente: ls>dirlist2>&1

125

IntroduzioneaLinux

redirigersialostandardoutputchelostandarderroralfiledirlist,mentreilcomando ls2>&1>dirlist invier solo lo standard output a dirlist. Questa pu essere una opzione utile per i programmatori. Lecosequisistannofacendoabbastanzacomplicate:nonconfondetel'usodellaEcommerciale(&) conquelloin Sezione4.1.2.1., doveessausataperlanciareunprogramma insottofondo.Qui serve esclusivamente per indicare che il numero seguente non un nome di file, bens una locazioneacuipuntailflussodeidati.Notatepurecheilsegnodimaggiorenondovrebbeessere separato con spazi dal numero del descrittore di file: se venisse separato, noi punteremmo nuovamentel'uscitadeidatiadunfile.L'esempiosuccessivovelodimostra:
[nancy@asus /var/tmp]$ ls 2> tmp [nancy@asus /var/tmp]$ ls l tmp rwrwr 1 nancy nancy 0 Sept [nancy@asus /var/tmp]$ ls 2 > tmp ls: 2: No such file or directory 7 12:58 tmp

Ilprimocomandoeseguitodanancycorretto(anchesenonvengonogeneratierroriedvuotoil fileacuilostandarderrorvienerediretto).Ilsecondocomandosiaspettache2siaunnomedifile, cheinquestocasoinesistente,cosicchvienesegnalatounerrore. TuttequestecaratteristichesonospiegateindettaglionellepagineInfodiBash.

5.2.2. Esempi
5.2.2.1. Analisi degli errori
Seilvostroprocessogeneramoltierrori,questounmodoperesaminarliapprofonditamente: comando2>&1|less Cisiusaspessoquandosicreanonuoviprogrammiutilizzandoilcomandomake,comein:
andy:~/newsoft> make all 2>&1 | less output ommitted

5.2.2.2. Separazione dello standard output dallo standard error


Costrutticomequestivengonospessousatidaiprogrammatori inmodochel'uscitadeidatisia mostratainunafinestraditerminaleeglierroriinun'altra.Scopritequalepseudoterminalestate utilizzandofornendoprimailcomandotty:
andy:~/newsoft> make all 2> /dev/pts/7

126

IntroduzioneaLinux

5.2.2.3. Scrittura in contemporanea di output e file


Poteteutilizzareilcomandoteepercopiarel'inputnellostandardoutputeinunoopifileinuscita inunasolamossa.Utilizzandol'opzione-aditeesihacomerisultatol'aggiuntadell'inputincoda a(i)file.Talecomandoutilesevoletenellostessotempovedereesalvareidatiinuscita.Gli operatori>e>>nonpermettonolosvolgimentodientrambeleazionisimultaneamente. Questo strumento viene di solito invocato tramite una pipe (|), come mostrato nell'esempio seguente:
mireille ~/test> date | tee file1 file2 Thu Jun 10 11:10:34 CEST 2004 mireille ~/test> cat file1 Thu Jun 10 11:10:34 CEST 2004 mireille ~/test> cat file2 Thu Jun 10 11:10:34 CEST 2004 mireille ~/test> uptime | tee a file2 11:10:51 up 21 days, 21:21, 57 users, mireille ~/test> cat file2 Thu Jun 10 11:10:34 CEST 2004 11:10:51 up 21 days, 21:21, 57 users, load average: 0.04, 0.16, 0.26

load average: 0.04, 0.16, 0.26

5.3. Filtri
Quandounprogramma svolgeoperazionisuidatiiningressoescriveilrisultatonellostandard output,essovienedefinitofiltro.Unodegliimpieghipicomunideifiltriquellodiristrutturare l'output.Quidiseguitotratteremodiunacoppiadeifiltripiimportanti.

5.3.1. Di pi su grep
ComeabbiamovistonellaSezione3.3.3.4,grepesaminaidatiinuscitilineaperlinearicercandole coincidenzealmodello:tuttelelineechelocontengonovengonostampatenellostandardoutput. Talecomportamentopuessereinvertitoutilizzandol'opzione-v. Eccoalcuniesempi. Supponetedivolerconoscerequalifilediunacertadirectorysonostatimodificatiinfebbraio:
jenny:~> ls la | grep Feb

Ilcomandogrep,comemoltialtri,sensibileallemaiuscole/minuscole:usatepercil'opzione-i pernondistinguere tradiesse.Sono disponibili molteestensioniGNU, come --colour,che serveadevidenziareiterminiricercatinellelineelunghe,eafter-context,chestampail numero di linea dopo l'ultima che corrisponde. Usando l'opzione -r potete avviare un grep ricorsivo che cerca in tutte le sottodirectory delle directory trovate. Come al solito le opzioni 127

IntroduzioneaLinux

possonoesserecombinate. Leespressioniregolarisipossonoutilizzareperdettagliaremaggiormenteleesattecorrispondenze dicaratterichedesideratericercareintuttelelineeiningresso.Ilmodomiglioredicominciarecon leespressioniregolari,ovviamente,quellodileggereladocumentazionedi grep.Uneccellente capitoloricompresonellapaginaInfogrep.Dalmomentochetuttocipotrebbecondurcitroppo lontanosuidettaglidelleespressioniregolari,fortementeconsigliabileiniziaredaquisevolete sapernedipi. Esercitatevi un po' con grep: vale proprio la pena di dedicare del tempo a questo piuttosto elementare, mamoltopotente,comandodifiltraggio.Glieserciziallafinediquestocapitolovi aiuterannoadiniziare(v.Sezione5.5.).

5.3.2. Filtraggio dei dati in uscita


Ilcomandosortnormalmentedisponelelineeinordinealfabetico:
thomas:~> cat persone-preferite | sort Amico Capo Mamma Nonna Papa' Zietta Emmy

Maesistonomoltealtrecosechesortcapacedifare:adesempioguardareledimensionideifile. Contalecomandoilcontenutodelladirectoryvieneordinatopartendodalfilepipiccoloaquello pigrande: ls-la |sort-nk5 Vecchiasintassidisort Potreste ottenere lostessorisultato con ls -la |sort+4n,maquesta unaforma sorpassatanonconformeaglistandardcorrenti. Ilcomando sort vieneancheimpiegatoincombinazioneconilprogramma uniq (o sort -u)per ordinareidatiinuscitaefiltrarneidoppioni:
thomas:~> cat itemlist 1 4 2 5 34 567 432 567 34 555 thomas:~> sort itemlist | uniq

128

IntroduzioneaLinux

1 2 34 4 432 5 555 567

5.4. Sommario
Inquestocapitoloabbiamoimparatocomeicomandipossonoesserecombinatitradiloroecome l'inputdiunprogrammapuessereusatocomeoutputdiunaltro. Laredirezionediinput/outputun'attivitcomunenellemacchineUNIXeLinux.Talepotente meccanismopermettel'usoflessibiledeimattonidicuicostituitoUNIX. Le redirezioni comunemente pi usate sono > e |. Fate rifermento all'Appendice C per una panoramicasuicomandidiredirezioneedaltricostruttidishell. Tabella51.Nuovicomandinelcapitolo5:Redirezionedell'I/O Comando date set sort uniq Significato Mostraleinformazioniorarieedidata. Configuraleopzionidishell. Disponeinordinelineeditesto. Rimuovedaunfileordinatolelineeduplicate.

5.5. Esercizi
Questi esercizi offrono pi esempi di come combinare i comandi. L'obbiettivo principale di provareadusareiltastoInvioilmenopossibile. TuttigliesercizisonostaticreatiutilizzandounIDdiutentenormaleinmododaprodurrealcuni errori.Durantel'esecuzionenondimenticatedileggerelepagineman!

Usateilcomandocutsuidatiinuscitadiunlungoelencodelladirectorypermostraresoloi permessideifile.Poireindirizzate questooutputa sort e uniq perfiltraretuttelelinee duplicate.Infineusatewcpercontareidiversitipidipermessocontenutiinquestadirectory. Mettetel'outputdidateinunfile.Aggiungeteidatiinuscitadilsaquestofile.Inviateilfile risultanteallavostracasellapostalelocale(nonspecificatealcun <@dominio>,baster soloilnomeutente).UsandoBash,vedreteunavvisodipostanuovaincasodisuccesso. Elencate le periferiche in /dev che al momento sono utilizzate dal vostro UID. 129

IntroduzioneaLinux

Reindirizzateattraversolesspervedereleloropropriet. Dateicomandiseguentiinqualitdiutentenonprivilegiato.Determinateglistandardinput, outputederrordiciascuncomando:


catfileinesistente file/sbin/ifconfig greproot /etc/passwd /etc/nofiles > grepresults /etc/init.d/sshdstart > /var/tmp/output /etc/init.d/crondstart > /var/tmp/output 2>&1 Oracontrollateivostririsultatiridandoicomandieredirigendolostandard output al file /var/tmp/output e lo standard error al file /var/tmp/error.

Quantiprocessisonoattualmenteattivi? Quantifileinvisibiliesistononellavostradirectorypersonale? Usatelocatepertrovaredocumentazionesulkernel. Scopritequalefilecontienelaseguenteriga:


root:x:0:0:root:/root:/bin/bash

equest'altra:
system:

Guardatecosasuccedebattendoquestocomando:
> time; date >> time; cat < time

root

Quale comando usereste per verificare quale script in /etc/init.d avvia un certo processo?

130

IntroduzioneaLinux

Capitolo 6. Gli editor di testo


Inquestocapitolodiscuteremol'importanzadelpadroneggiareuneditor,inparticolare viiMproved. Alterminedelcapitolosareteingradodi:

aprireechiuderefileinmodalittesto modificarefile cercaredeltesto annullareerrori fonderefile recuperarefilepersi trovareunprogrammaounasuiteperl'usoinufficio

6.1. Editor di testo


6.1.1. Perch dovrei usare un editor?
E'moltoimportante essere capaci diusare almenouneditorinmodalittestuale.Sapere come utilizzareuneditornelvostrosistemailprimopassoperl'indipendenza. Avremobisognodipadroneggiareuneditordalprossimocapitolononappenaciimbatteremonella necessitdimodificareifilecheinfluenzanoilnostroambiente.Comeunutenteesperto,potrete volercominciareascriverescriptolibri,svilupparesitiwebonuoviprogrammi.Saperusareun editormigliorerimmensamentelavostraproduttivitcoscomelevostrecapacit.

6.1.2. Quale editor dovrei usare?


Lanostraattenzionerivoltaaglieditortestuali,chepossonoessereimpiegatiancheinsistemi privi di ambiente grafico ed in finestre di terminale. Il vantaggio aggiuntivo di conoscere alla perfezioneuneditortestualesiriscontranell'utilizzosumacchineremote,poichillavoroconesso migliora enormemente lavelocit dellarete, nonessendo necessario trasferire l'intero ambiente graficosudiquesta. Esistono,comealsolito,moltimodidiaffrontarelaquestione.Andiamoavederequalieditorsono normalmentedisponibili.

6.1.2.1. ed
L'editoredorientatoallalineaeutilizzatopercreare,mostrare,modificareemanipolareinaltri modiifiletestuali,siainmanierainterattivasianell'usocongliscriptdishell. 131

IntroduzioneaLinux

edl'originaleeditorditestodellemacchineUNIXeperciampiamentedisponibile.Comunque permoltiscopistatosuperatodaglieditoratuttoschermocomeemacsevi(v.sotto).

6.1.2.2. GNU Emacs


Emacs l'editorestensibile, configurabile, autodescrittivo,conschermo intemporeale,notoin moltiUNIXedaltrisistemi.Iltestodaeditarevisibilesulmonitorevieneaggiornatomolto spesso,normalmentedopoaverbattutounooduecaratteri.Ciriducealminimolaquantitdi informazionidatenereinmentementrescrivete.Emacsdefinitoavanzatoperchforniscedelle possibilit che vanno oltre i semplici inserimenti e cancellazioni: controllo dei sottoprocessi; indentazione automatica dei programmi; vista di due o pi file alla volta; produzione di testo formattato e trattamento di caratteri, parole, linee, periodi, paragrafi e pagine cos come di espressioniecommentiinmoltilinguaggidiprogrammazionedifferenti. Autodescrittivosignificacheinqualsiasimomentopotetebattereuncaratterespeciale,Ctrl+H,per scoprirequaliopzioniaveteadisposizione.Poteteancheusarloperscoprirecosafaognicomandoo pertrovaretuttiicomandicheriguardanoundeterminatoargomento. Personalizzabile significachepotetemodificarefacilmenteledefinizionideicomandidiEmacs. Peresempio,seutilizzateunlinguaggiodiprogrammazioneicuicommentiinizianocon<**e finisconocon**>,poteteistruireicomandidimanipolazionedeicommentiinEmacsausare quellestringhe.Unaltrogeneredipersonalizzazionelaridefinizionedell'insiemedeicomandi: peresempio,sepreferitecheiquattrocomandifondamentalidimovimentodelcursore(su,gi, sinistraedestra)sianodispostiadiamantesullatastiera,poteteriassegnareitastiinquelmodo. Estensibile significa chepotete andare oltre lasemplice personalizzazione escrivere perintero nuovi comandi, programmi nel linguaggio Lisp che gireranno sotto l'interprete Lisp proprio di Emacs. Emacs unsistema estensibile online,inquanto composto damolte funzioni che si chiamanoreciprocamente,ciascunadellequalipuessereridefinitanelmezzodiunasessionedi scrittura.QuasituttelepartidiEmacspossonoesseresostituitesenzanecessitdifareunacopia separatadituttoEmacs.MoltideicomandidiEmacsperlaredazionedeltestosonogiscrittiin Lisp:lepocheeccezionisonostatescritteinCperefficienza,masisarebberopotutescrivereanche inLisp.Sebbenesolounprogrammatorepotrebbescrivereun'estensione,tuttaviadopochiunque puusarla. QuandogirasottoilsistemaafinestreXEmacs(avviatoconxemacs)fornisceiproprimenuedei comodeassociazioniconitastidelmouse.MaEmacspuoffriremoltideivantaggidiunsistemaa finestreinunterminaleesclusivamentetestuale.Peresempio,poteteosservareomodificarealcuni fileallavolta,spostaredeltestotrafileeredigerefilementresonoattivideicomandidishell.

6.1.2.3. Vi(m)
VimstaperViiMproved[Vimigliorato].EranatocomeViImitation,macisonocostanti miglioramentidagiustificareilcambiodelnome.Vimuneditorditestochecomprendequasitutti 132

IntroduzioneaLinux

icomandidelprogrammaUNIXviemoltialtridinuovi. Icomandinell'editorvivengonoinseritisolodatastieraconilvantaggiodimantenereleditasudi essaelosguardosulloschermo,piuttostocheportareilbraccioripetutamentealmouse.Perquelli chelodesiderano,sipossonoattivaresiailsupportoperilmouse,siaunaversioneperlaGUIcon barrediscorrimentoemenu. Perlaredazionedifileciriferiremoaviovimnelcorsodiquestolibro,mentresietenaturalmente liberidiusareilvostroeditorprediletto.Comunqueraccomandiamodiimpratichirvialmenonegli elementifondamentalidi vi,inquantol'editortestualestandardinquasituttiisistemiUNIX, mentreEmacspucostituireunpacchettoopzionale.Possonoesisterepiccoledifferenzetradiversi computereterminali,malaquestionecentralechesepotetelavorareconvi,sietepureingradodi sopravvivereinqualsiasisistemaUNIX. Oltrealcomandovim,ipacchettivImpossonoancheoffriregvim,laversioneGnomedivim.Gli utenti principianti potrebbero trovarlo pi semplice da utilizzare, poich i menu offrono aiuti quando dimenticate o non sapete come svolgere un particolare compito di redazione usando i comandistandarddivim.

6.2. Impiego dell'editor Vim


6.2.1. Due modi
L'editor vi unostrumentopiuttostopotenteericomprendeunmanualemoltoesteso,chepotete attivareutilizzandoilcomando:helpall'avviodelprogramma(invecediusaremanoinfo,chenon fornisconomolteinformazioni).Quitratteremosolodeglielementibaseperfarviiniziare. Quellocherendevidisorientanteperunprincipiantechepuoperareinduemodalit:comandoe inserimento.L'editoriniziasempreinmodalitcomando:icomandivispostanoneltesto,ricercano, rimpiazzano,marcanoblocchiedeseguonoaltreattivitdielaborazione,ed,infine,alcunidiessi convertonol'editorinmodalitinserimento. Ci significa che ogni tasto pu avere facilmente non uno solo, ma due significati: pu rappresentareuncomandoperl'editornellamodalitcorrispondente,oppureuncaratterechevolete inuntestoquandositrovainmodalitinserimento. Pronuncia Sipronunciaviai.

6.2.2. Comandi di base


6.2.2.1. Muoversi attraverso il testo
133

IntroduzioneaLinux

Normalmentepossibilemuoversineltestoconitastifreccia.Secosnonfosse,provate:

hperspostareilcursoreasinistra lperspostarloadestra kperspostarloversol'alto jperspostarloversoilbasso

SHIFTGspostailcursoreallafinedeldocumento.

6.2.2.2. Operazioni elementari


Questisonoalcunifrequenticomandivi:

nddcancellanlineeapartiredallaposizionecorrentedelcursore ndwcancellanparolealladestradelcursore xcancellailcaratteresucuiposizionatoilcursore :nspostamentoallalineandelfile :wsalva(scrive)ilfile :quscitadall'editor :q! forzatura dell'uscita quando volete abbandonare senza salvare un file modificato :wqsalvaedesce :wnuovofilesalvailtestoinnuovofile :wq! scavalcailpermessodisolalettura(seaveteilpermessodiscavalcarei permessi,usandol'accountdiroot) /unastringa cerca la stringa nel file e posiziona il cursore sotto la prima coincidenza. /eseguelaricercaprecedentemuovendoilcursoreallacoincidenzasuccessiva :/1,$s/parola/altraparola/grimpiazzaparolaconaltraparolanell'intero testo yycopiaunbloccoditesto nploincollanvolte :recoverripristinaunfiledopounainterruzioneimprovvisa

6.2.2.3. Comandi che pongono l'editor in modalit inserimento


a aggiunge:muoveilcursorediunaposizionealladestraprimadientrarein modalitinserimento iinserisce o inserisce unalineavuotasottolaposizione corrente delcursore spostando quest'ultimol

PremendoiltastoEscsiritornainmodalitcomando.Senonsietesicuridellamodalitincuivi trovate perch state usando una versione piuttosto vecchia di vi che non riporta il messaggio INSERT,batteteEscesaretecertidiritornareinmodalitcomando.E'possibilecheilsistema 134

IntroduzioneaLinux

emettaunpiccolosegnalesevitrovategiintalemodalitquandopremeteEsc,suonandoodando unavvisovisivo(unlampeggiosulloschermo):questouncomportamentonormale.

6.2.3. La maniera semplice


Alpostodileggereiltesto(chepiuttostonoioso),poteteutilizzareilvimtutorperapprenderei primicomandidiVim.Sitrattadiuntutorialditrentaminuticheinsegnalefunzionielementaridi Viminottosempliciesercizi.Anchesenonpoteteimpararetuttodiviminmezz'ora,lalezione costruitainmododadescrivereabbastanzaicomandimettendoviingradodiutilizzareVimcome editortuttofare. InUNIXeMSWindows,seVimstatoinstallatocorrettamente,poteteavviarlodallashellodalla lineadicomandoinserendo vimtutor.Cicreer unacopiadelfiledellalezione, inmodoche potrete modificarlo senza il rischio didanneggiare l'originale. Esistono alcune versioni tradotte dellalezione. Persaperesec'quellavostra,usate ilcodicedilinguaggioaduelettere: peril francesedovrebbeesserevimtutorfr(seinstallatonelsistema).

6.3. Linux in ufficio


6.3.1. Storia
Per l'intera ultima decade il settore dell'ufficio stato dominato tipicamente da MS Office e, ammettiamolo,iformatiMicrosoftWord,ExcelePowerPointsonodeglistandardindustrialicon cuiprimaopoiavreteachefare. Questa situazione di monopolio di Microsoft stata sentita come un grosso impedimento alla venuta di nuovi utenti di Linux, cosicch un gruppo di sviluppatori tedeschi diedero inizio al progettoStarOffice,cheera(elotuttora)miratoacreareunclonediMSOffice.Lalorosociet stataacquistatadaSunMicrosystemsallafinedeglianni1990,pocoprimadellaversione5.2.Sun continua lo sviluppo mahavietato l'accesso aicodici. Tuttavia losviluppo inbase all'insieme originaledeicodicisorgenticontinuanellacomunitdell'OpenSource,laqualeharidenominatoil progettoOpenOffice.OpenOfficeoradisponibileperunavarietdipiattaforme,comprendente MSWindows,Linux,MacOSeSolaris.C'unaschermatanellaSezione1.3.2. Quasi in contemporanea, stata avviata una coppia di altri progetto abbastanza noti. Anche KOffice, la suite da ufficio che era popolare abitualmente tra gli utenti SuSE, costituisce una alternativa molto comune all'uso di MS Office. Come l'originale, questo clone incorpora un programmacompatibileMSWordedExcel,emoltoaltro. ProgettiminorisioccupanodeisingoliprogrammidellasuiteMSdiesempio,comeAbiwordeMS WordviewperlacompatibilitconidocumentiMSWordeGnumericpervedereecrearefogli elettronicicompatibiliconExcel.

135

IntroduzioneaLinux

6.3.2. Suite e programmi


Leattualidistribuzioninormalmentecigiungonocontuttiglistrumentinecessari.Dalmomentoche essefornisconolineeguidaeindicidiricercaeccellentineimenudiAiuto,nonletratteremoin dettaglio. Come riferimento date un'occhiata alla documentazione di sistema o ai siti web dei progetti,come:

http://www.openoffice.org http://www.koffice.org FreshmeateSourceforgepervarialtriprogetti

6.3.3. Note
6.3.3.1. Uso generale dei documenti d'ufficio
Provatealimitarel'usodeidocumentid'ufficiosoloagliscopipercuisonostaticreati:l'ufficio. Unesempio:moltiutentiLinuximpazzisconoseinviatelorounaemailchedicepiomenocosnel contenuto:"Ciao,devodirtiqualcosa,leggil'allegato"equest'ultimosirivelaessereundocumento compatibileMSWordcontenente"Ciaoamicomio,comevailtuonuovolavoro:haitempoper pranzareconmedomani?".Un'altrapessimaideal'allegatoconlavostrafirma,peresempio.Se intendetefirmaremessaggiefile,usateGPG,laGuardPrivacyGNUcompatibilePGPoppurei certificatiSSL(SecureSocketLayer). Questiutentinonsonoseccatiperchsonoimpossibilitatialeggeretalidocumentioperchsono preoccupatichedettiformatigenerinonormalmentefilemoltoingombranti,mapiuttostoperch stannousandoMSWindowse,eventualmente,perillavoroaggiuntivocausatodaldoveravviare alcuniprogrammiinpi.

6.3.3.2. File di configurazione di sistema e di utente


Nelprossimocapitolocominceremoaconfigurareilnostroambienteecicomportalapossibilit dimodificaretuttiigeneridifilechedeterminanoilcomportamentodiunprogramma. Noncreateomodificatequestifileconqualsiasiprogrammad'ufficio! Le normali specifiche del formato del file potrebbero determinare che il programma aggiunga alcunelineedicodiceperdefinireilformatodelfileeifontutilizzati.Questelineepotrebbero essere male interpretate dai programmi chedipendono daesse, causando errori oilblocco del programmacheleggeilfile.Inalcunicasipotretesalvareilfilecometestosemplice,mafiniretenei guaiseprenderetequestaabitudine.

6.3.3.3. Ma io voglio un editor testuale grafico!


Sevoleteproprioinsistere,provategedit,kedit,kwriteoxedit:questiprogrammicreanosolofile testuali,cidicuiabbiamobisogno.Seperprogettatediscriverequalcosadiserio,passateadun 136

IntroduzioneaLinux

veroeditorinmodalittestualecomevimoemacs. Un'alternativaaccettabilegvim,laversioneGnomedivim:dovreteusareancoraicomandidivi, masevitrovereteindifficoltpotretecercarlineimenu.

6.4. Sommario
Inquestocapitoloabbiamoappresol'usodiuneditor.Mentredipendedaivostrigustipersonali qualeusare,necessarioalmenosaperecomesiutilizzauneditor. L'editorvidisponibilesuognisistemaUNIX. Moltedistribuzionicomprendonounasuitedaufficioeuneditortestualegrafico.

6.5. Esercizi
Questocapitolohaunsoloesercizio:avviateilVimTutorbattendo vimtutor inunasessionedi terminaleediniziate. Inalternativapotresteavviareemacs,battereCtrl+HepoiTperrichiamarelalezionepassopasso diEmacs. Lapratical'unicavia!

137

IntroduzioneaLinux

Capitolo 7. Home sweet /home


Questocapitolodedicatoallaconfigurazionedelvostroambiente.Orachesappiamo usareuneditor,possiamomodificaretuttiitipidifileperfarcisentirepiacasanostra. Dopoilcompletamentodiquestocapitolonesapretedipicirca:

l'organizzazionedelvostroambiente ifilenormalidiconfigurazionedellashell laconfigurazionedellashell laconfigurazionedelprompt laconfigurazionedell'ambientegrafico leapplicazionesonoreevideo igestoridelvideoedellefinestre ilfunzionamentodelsistemaclientserverdiX leimpostazionidellalinguaedeifont l'installazionedinuovosoftware l'aggiornamentodeipacchettiesistenti

7.1. Corretta gestione della casa in generale


7.1.1. Introduzione
Comeabbiamomenzionatoinprecedenza,abbastanzasemplicemettereasoqquadroilsistema. Non ci stancheremo mai abbastanza nell'insistere sull'importanza di mantenerlo in ordine. Se imparerete ci sin dall'inizio, la cosa diventer una sana abitudine che far risparmiare tempo programmando con un sistema Linux o UNIX oppure nell'affrontare i compiti di gestione del sistema.Quisonoelencatialcunimodipersemplificarcilavita:

Createunadirectorybinperivostrifileescript. Organizzateifilenoneseguibiliindirectoryappropriateediquestecreateneapiacimento: peresempiocreatedirectorydistinteperleimmagini,idocumenti,iprogetti,ifilescaricati, ifoglielettronici,ifilepersonali,ecosvia. Rendeteprivateledirectoryconilcomandochmod700 nomedirectory. Dateaivostrifilenomisensati,come Lamentela al primo ministro 050302, piuttostodilettera1.

7.1.2. Fare spazio


Inalcunisistemi, quota pucostringerviafarepuliziaditantointanto,oppureilimitifisicidel vostrodiscorigidopotrebberoobbligarviarecuperarespaziosenzal'avviodiqualsiasiprogramma di monitoraggio. Questa sezione spiega unnumero dimodi, oltre all'uso delcomando rm, per liberarespaziosudisco. 138

IntroduzioneaLinux

Lanciateilcomandoquotavpervederequantospaziorimasto.

7.1.2.1. Svuotamento dei file


Qualchevoltailcontenutodiunfilenonviinteressa,peravetebisognodelnomedelfilecome segno(peresempioviservesolol'oradicreazionediunfile,unappuntochelunfilec'eraoci potrebbeessereinfuturo).IlmodoperottenerecinelleshellBourneeBashquellodiredirigere l'outputdiuncomandonullo.
andy:~> cat desiderata > segnaposto andy:~> ls la segnaposto rwrwr 1 andy andy andy:~> > segnaposto andy:~> ls la segnaposto rwrwr 1 andy andy 0 Jun 12 13:35 segnaposto 200 Jun 12 13:34 segnaposto

Ilprocessodiriduzionediunfileesistenteadunoconlostessonomechesiagrande0bytesi chiamatroncamento. Percreareunnuovofilevuotolostessoeffettosiottieneconilcomandotouch:conunfileesistente touchaggiornersoltantol'oradimodifica.LeggetelepagineInfosutouchpermaggioridettagli. Persvuotare quasicompletamenteunfileutilizzateilcomando tail.Supponete chel'elenco dei desideratadell'utenteandysiadivenutopiuttostolungoperlecontinueaggiunteinfondosenzala cancellazionedellecosegiinpossesso.Oracostuivuolmanteneresologliultimicinqueoggetti:
andy:~> tail 5 desiderata > nuovoelenco andy:~> cat nuovoelenco > desiderata andy:~> rm nuovoelenco

7.1.2.2. Approfondimento sui file di log


AlcuniprogrammiLinuxinsistononelloscriveretuttiitipidioutputinunfilediregistro(log). Solitamente esistono opzioni per registrare solo gli errori, oppure una quantit minima di informazioni (impostando per esempio il livello di scoperta degli errori del programma). Ma potrebbeanchenoninteressarviunfiledilog.Eccoquialcunimodipersbarazzarsidiquestio almenoperlimitarneledimensioni:

Provateacancellareilfilediregistroquandoilprogrammanoninfunzionesesietecertidi nonaverneancorabisogno.Alcuniprogrammi possonoancheverificareall'avviosenon esistealcunfiledilogedunquenonregistrareniente. Se cancellate il file di log e il programma lo ricrea, leggete la documentazione di quest'ultimopercercarel'opzionecheevitadiscriverefilediregistro. Tentatedicrearefiledilogpipiccoliregistrandosololeinformazionipervoiimportantio 139

IntroduzioneaLinux

solosignificanti. Provateasostituireilfiledilogconuncollegamentosimbolicoa /dev/null;sesarete fortunatiilprogrammanonsilamenter.Nonfateciconifilediregistrodiprogrammiche vengonoeseguiticonl'avviodelsistemaoconiprogrammilanciatidacron(v.Capitolo4). Taliprogrammipotrebberoinfattisostituireillinksimbolicoconunpiccolofilecheinizier nuovamenteacrescere.

7.1.2.3. Posta
Fate pulizia con regolarit nella vostra casella postale, create sottocartelle e reindirizzate automaticamente usando procmail (leggete le pagine Info) o i filtri della vostra applicazione preferita per lalettura della posta. Seavete unacartella per i file dacestinare, svuotatela con regolarit. Perreindirizzarelapostautilizzateilfile.forwardnellavostradirectorypersonale.Ilserviziodi postaLinuxcercaquestofileognivoltachedeveconsegnaredellapostalocale.Ilcontenutodelfile determinailcomportamentodelsistemadipostaneiconfrontidellavostraposta.Puavereunasola lineaconunindirizzodipostaelettronicapienamentequalificato.Intalcasoilsistemainviertutta lavostrapostaaquell'indirizzo.Peresempio,noleggiandodellospazioperunsitowebpotreste desideraredireindirizzarelapostacondestinatarioilwebmasteralvostroaccountpersonaleper nonsprecarespaziosudisco.Il.forwarddelwebmasterpotrebbeapparirecos:
webmaster@www ~/> cat .forward mike@pandora.be

L'impiego dell'inoltro della postautileanche perevitarvi didover controllare diverse caselle postali:poteteinfattifareinmodocheogniindirizzopuntiadunaccountcentralizzatoefacilmente accessibile. Poteteanchedomandareall'amministratoredisistemadidefinireuninoltropervoinelfilelocaledi aliasdiposta,comequandounaccountstatochiusomalapostaelettronicarimaneattivaperun po'ditempo.

7.1.2.4. Risparmiare spazio con un link


Quando numerosiutentidevonoaccedereallostessofileoprogramma, oppure quandoilnome originaledelfiletroppolungoodifficiledaricordare,usateuncollegamentosimbolicoalpostodi unacopiadistintaperciascunutenteoimpiego. Linksimbolicimultiplipossonoaverenomidifferenti,come,adesempio,uncollegamentopu essere chiamato monfichier nella directory di un utente e miolink in quella di un altro. Svariaticollegamenti(connomidiversi)almedesimofilepossonocoesisterenellastessadirectory. Cicapitafrequentementenelladirectory/lib:dandoilcomando lsl/lib vedretechequestadirectorypienadilinkchepuntanoaglistessifile.Quest'ultimivengonocreati 140

IntroduzioneaLinux

affinch i programmi che ricercano un nome non restino bloccati ma vengano indirizzati al corretto/correntenomedellelibreriedicuihannobisogno.

7.1.2.5. Limitare le dimensioni dei file


Lashellcontieneuncomandointernoperlimitareledimensionideifile, ulimit,chepuessere usatoanchepermostrarelelimitazioninellerisorsedisistema:
cindy:~> ulimit a core file size (blocks) data seg size (kbytes) file size (blocks) max locked memory (kbytes) max memory size (kbytes) open files pipe size (512 bytes) stack size (kbytes) cpu time (seconds) max user processes virtual memory (kbytes) 0 unlimited unlimited unlimited unlimited 1024 8 8192 unlimited 512 unlimited

Cindynonunasviluppatriceenonsicuradeic.d.coredump,contenentileinformazionididebug di un programma. Se vi servono i core dump, potete impostarne le dimensioni utilizzando il comandoulimit.LeggetelepagineInfodedicateaBashperunaspiegazionedettagliata. FileCore? Unfilecoreo coredump vienetalvoltageneratoquandolecosevannomaleconun programmadurantelasuaesecuzione.Ilfilecorecontieneunacopiadellamemoria, coscom'eraalmomentodellaverificazionedell'errore.

7.1.2.6. File compressi


Ifilecompressisonoutiliperchoccupanomenospazioneldiscofisso.Unaltrovantaggiochesi impegnamenolarghezzadibandaspedendounfilecompressoinrete.Moltifile,comelepagine man, vengono conservati informa compressa dalsistema. D'altro canto,scompattarli peravere qualcheinformazione,perpoidoverlinuovamentecomprimere,piuttostoonerosointerminidi tempo.Nonvolete,peresempio,espandereunapaginaman,leggerediun'opzionediuncomandoe poiricomprimeredinuovolastessapagina.Probabilmentemoltepersonesidimenticherannodi farepuliziadopoavertrovatol'informazionedicuiavevanobisogno. Diconseguenzaabbiamodeglistrumentichelavoranosuifilecompressi,scompattandolisoloin memoria.Ilfilecompressooriginariorestaneldiscorigidocoscom'.Moltisistemisupportano zgrep, zcat, bzless ed altri in modo da prevenire azioni di decompressione/compressione non necessarie.OsservatelavostradirectorydeifilebinaridisistemaelepagineInfo. GuardateilCapitolo9permaggioriinformazionisullaeffettivacompressionedeifileeperesempi dicreazionediarchivi.

141

IntroduzioneaLinux

7.2. Il vostro ambiente testuale


7.2.1. Le variabili ambientali
7.2.1.1. In generale
Abbiamo gimenzionatounpaiodivariabilid'ambiente,come PATH e HOME.Finoraabbiamo visto soltanto esempi in cui esse servono alla shell per un certo scopo. Ma esistono molti programmidiutilitchehannonecessitdelleinformazionisudivoipersvolgereunbuonservizio. Diqualialtreinformazioninecessitanoiprogrammi oltreaquellesuipercorsiesulledirectory personali? Moltiprogrammivoglionoconoscereiltipoditerminalechestateadoperando;taleinformazione viene conservata nella variabile TERM. Inmodalit testuale costituir l'emulazione diterminale linux, in modalit grafica userete probabilmente xterm. Molti programmi desiderano conoscere qual'ilvostroeditorpreferito,nelcasochedebbanoavviareuneditorinunsottoprocesso.Lashell chestateutilizzandovieneregistratanellavariabileSHELL,iltipodisistemaoperativoinOSecos via. Un elenco di tutte le variabili correntemente definite per la vostra sessione pu essere visualizzatoinserendoilcomandoprintenv. Levariabiliambientalisonogestitedallashell.Alcontrariodellenormalivariabilidishell,quelle d'ambientevengonoereditatedaqualsiasiprogrammacheavviate,compresaun'altrashell.Ainuovi processivieneassegnataunacopiadiquestevariabili,copiacheessipotrannoleggere,modificaree passarealorovoltaaipropriprocessifigli. Nonc'nulladispecialeneinomidellevariabilisenonchequellecomunisonoinletteremaiuscole perconvenzione.Poteteassegnarequalsiasinomevogliate,sebbeneesistanodellevariabilistandard abbastanzaimportantidaesserelestesseinognisistemaLinux,comePATHeHOME.

7.2.1.2. Esportazione delle variabili


Ilcontenutodiunasingolavariabilenormalmentevienemostratousandoilcomandoecho,comein questiesempi:
debby:~> echo $PATH /usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:/usr/local/bin debby:~> echo $MANPATH /usr/man:/usr/share/man/:/usr/local/man:/usr/X11R6/man

Sevoletemodificareilcontenutodiunavariabileinunmodochesiautileagliaglialtriprogrammi, doveteesportareilnuovovaloredalvostroambienteaquellochestaeseguendotaliprogrammi.Un banaleesempiol'esportazionedellavariabile PATH.Potetedichiararlacomesegueperesserein grado di giocare con il programma di simulazione di volo che si trova in /opt/FlightGear/bin:

142

IntroduzioneaLinux

debby:~> PATH=$PATH:/opt/FlightGear/bin

Ciistruiscelashellanoncercareiprogrammisoltantonelpercorsocorrente($PATH)maanche nelladirectoryaggiuntiva/opt/FlightGear/bin. Comunque, finch il nuovo valore della variabile PATH non noto all'ambiente, le cose non funzionano:
debby:~> runfgfs bash: runfgfs: command not found

L'esportazionedellevariabilesiesegueusandoilcomandointernoallashellexport:
debby:~> export PATH debby:~> runfgfs flight simulator starts

ConBashnormalmentequestosifaconun'unicamossaelegante: exportVARIABILE=valore LastessatecnicasiutilizzaperlavariabileMANPATH,chedicealcomandomandovecercarele pagine man compresse. Seviene aggiunto del software nuovo al sistema indirectory nuove o strane, la suadocumentazione sitrover probabilmente anch'essa inuna inusuale directory. Se desiderateleggerelepaginemandelnuovosoftware,estendetelavariabileMANPATH:
debby:~> export MANPATH=$MANPATH:/opt/FlightGear/man debby:~> echo $MANPATH /usr/man:/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/FlightGear/man

Potetetralasciarelaribattituradiquestocomandoinognifinestracheapriteaggiungendoloinuno deivostrifilediimpostazionedellashell(v.Sezione7.2.2.).

7.2.1.3. Variabili riservate


Latabellaseguenteoffreunapanoramicadellevariabilipredefinitepicomuni: Tabella71.Comunivariabiliambientali Nomedellavariabile DISPLAY DOMAIN EDITOR HISTSIZE HOME Informazionicontenute usatodalsistemaXWindowperidentificareilserverdidisplay nomedidominio mantienel'editordilineafavorito misurainnumerodilineedelfilehistorydishell percorsodellavostradirectorypersonale

143

IntroduzioneaLinux

Nomedellavariabile HOSTNAME INPUTRC LANG LD_LIBRARY_PATH LOGNAME MAIL MANPATH OS OSTYPE PAGER PATH PS1 PS2 PWD SHELL TERM UID USER(NAME) VISUAL XENVIRONMENT XFILESEARCHPATH

Informazionicontenute nomehostlocale locazionedelfiledidefinizionidelleperiferichediinputcomelatastiera linguapreferita percorsidiricercadellelibrerie nomedilogin posizionedellavostracartelladipostainarrivo percorsidiricercadellepagineman stringachedescriveilsistemaoperativo maggioriinformazionisuversione,ecc... usatadaiprogrammicomemanchedevonosaperecosafarenelcasoin cuil'outputsiapidiunafinestraditerminale percorsidiricercadeicomandi promptprimario promptsecondario PresentWorkingDirectory,ovveroladirectoryincuicisitrova shellcorrente tipoditerminale IDutente(UserID) nomeutente ilvostroeditoratuttoschermopreferito posizionedellevostreimpostazionipersonaliperilcomportamentodiX percorsidiricercadellelibreriegrafiche

Molte variabili non solo sono predefinite ma anche preimpostate, utilizzando i file di configurazione.Discuteremodicinellaprossimasezione.

7.2.2. I file di impostazione della shell


Quandolanciateilcomandols-alperottenereunlungoelencodituttiifile,compresiquelliche inizianoconunpunto,nellavostradirectorypersonale,trovereteunoopifilecheinizianocon.e terminanocon rc:nelcasodi bash questo .bashrc.Essolacontropartedelfileglobaledi configurazionedelsistema/etc/bashrc. Autenticandosiinunashelldilogininterattiva,logincompirl'autenticazione,imposterl'ambiente eavvierlavostrashell.Nelcasodibashilpassosuccessivolaletturadelprofilegeneraleda 144

IntroduzioneaLinux

/etc,seesistente.Poi bashcercher ~/bash_profile,~/.bash_logine~/.profile, inquestasuccessione,eleggeredeseguiricomandidalprimocheesisteedleggibile.Senon esiste,siapplicher/etc/bashrc. Quandoterminaunashelldilogin,bashleggeedesegueicomandidalfile~/.bash_logout,se esiste. Questaproceduravienespiegatadettagliatamentenellepaginemandedicatealogineabash.

7.2.3. Un tipico insieme di file di configurazione.


7.2.3.1. Esempio di /etc/profile
Esaminiamoalcunidiquestifilediconfigurazione.Perprimovieneletto/etc/profileincui vengonoimpostateimportantivariabilicomePATH,USEReHOSTNAME.
debby:~> cat /etc/profile # /etc/profile # System wide environment and startup programs, for login setup # Functions and aliases go in /etc/bashrc # Path manipulation if [ `id u` = 0 ] && ! echo $PATH | /bin/grep q "/sbin" ; then PATH=/sbin:$PATH fi if [ `id u` = 0 ] && ! echo $PATH | /bin/grep q "/usr/sbin" ; then PATH=/usr/sbin:$PATH fi if [ `id u` = 0 ] && ! echo $PATH | /bin/grep q "/usr/local/sbin" then PATH=/usr/local/sbin:$PATH fi if ! echo $PATH | /bin/grep q "/usr/X11R6/bin" ; then PATH="$PATH:/usr/X11R6/bin" fi

Queste linee controllano il percorso da impostare: se root apre una shell (user ID 0), viene controllato che /sbin, /usr/sbin e /usr/local/sbin siano nel percorso. Se cos non fosse,esseverrebberoaggiunte.Sicontrollapertuttiche/usr/X11R6/binsianelpercorso.
# No core files by default ulimit S c 0 > /dev/null 2>&1

Tuttalaspazzaturafiniscein/dev/nullsel'utentenoncambiaquestaimpostazione.
USER=`id un` LOGNAME=$USER MAIL="/var/spool/mail/$USER"

145

IntroduzioneaLinux

HOSTNAME=`/bin/hostname` HISTSIZE=1000

Quisonoassegnatiivaloriappropriatiallevariabiliglobali.
if [ z "$INPUTRC" a ! f "$HOME/.inputrc" ]; then INPUTRC=/etc/inputrc fi

Se la variabile INPUTRC non impostata e non esiste .inputrc nella directory personale dell'utente,alloravienecaricatoilcomunefiledicontrollodell'input.
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

Vengonoesportatetuttelevariabili,cosicchessesonoadisposizionedeglialtriprogrammiche richiedonoinformazionisulvostroambiente.

7.2.3.2. La directory profile.d


for i in /etc/profile.d/*.sh ; do if [ r $i ]; then . $i fi done unset i

Tutti gli script di shell leggibili dalla directory /etc/profile.d vengono letti ed eseguiti. Questisvolgonoazionicomeabilitarecolorls,crearel'aliasviavim,impostarelevariabililocali, ecc.Lavariabiletemporanea ivienedisattivataperimpedirechedisturbiilcomportamentodella shellpitardi.

7.2.3.3. Esempio di .bash_profile


Poibashcerca.bash_profilenelladirectorypersonaledell'utente:
debby:~> cat .bash_profile ################################################################# # # # .bash_profile file # # # # Executed from the bash shell when you log in. # # # ################################################################# source ~/.bashrc source ~/.bash_login

Questo file molto chiaro istruisce la vostra shell a leggere per prima cosa ~/.bashrc e poi ~/.bash_login.Trovereteilcomandointernoallashellsourceregolarmentequandolavoratein unambientedishell:siusaperapplicareicambiamentidellaconfigurazioneall'ambientecorrente.

7.2.3.4. Esempio di .bash_login


Ilfile ~/.bash_login definiscelaprotezionebasedeifileimpostandoilvaloredi umask (v. 146

IntroduzioneaLinux

Sezione3.4.2.2.).Ilfile ~/.bashrc vieneusatoperstabilireuncomplessodialias,funzionie variabili d'ambiente personali peculiari all'utente. Per prima cosa legge /etc/bashrc, che descriveilpromptdibase(PS1)eilvalorenormalediumask.Dopodicipoteteaggiungerele vostreproprieimpostazioni.Senonesiste~/.bashrc,normalmentevieneletto/etc/bashrc.

7.2.3.5. Esempio di /etc/bashrc


Ilvostrofile/etc/bashrcpotrebbeassomigliareaquesto:
debby:~> cat /etc/bashrc # /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile # by default, we want this to get set. # Even for noninteractive, nonlogin shells. if [ `id gn` = `id un` a `id u` gt 99 ]; then umask 002 else umask 022 fi

Questelineeimpostanoilvalorediumask.Poi,inbasealtipodishell,vieneimpostatol'invito(o prompt).
# are we an interactive shell? if [ "$PS1" ]; then if [ x /usr/bin/tput ]; then if [ "x`tput kbs`" != "x" ]; then # We can't do this with "dumb" terminal stty erase `tput kbs` elif [ x /usr/bin/wc ]; then if [ "`tput kbs|wc c `" gt 0 ]; then # We can't do this with "dumb" terminal stty erase `tput kbs` fi fi fi case $TERM in xterm*) if [ e /etc/sysconfig/bashpromptxterm ]; then PROMPT_COMMAND=/etc/sysconfig/bashpromptxterm else PROMPT_COMMAND='echo ne "\033]0;${USER}@${HOSTNAME%%.*}:\ ${PWD/$HOME/~}\007"' fi ;; *) [ e /etc/sysconfig/bashpromptdefault ] && PROMPT_COMMAND=\ /etc/sysconfig/bashpromptdefault ;; esac [ "$PS1" = "\\s\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " if [ "x$SHLVL" != "x1" ]; then # We're not a login shell for i in /etc/profile.d/*.sh; do if [ x $i ]; then . $i fi done fi fi

147

IntroduzioneaLinux

7.2.3.6. Esempio di .bash_logout


Conladisconnessionevengonoeseguitiicomandiin ~/.bash_logout,iqualipossono, per esempio,cancellareilterminale,inmodocheabbiateunafinestrapulitaall'uscitadiunasessione remotaonell'abbandonarelaconsoledisistema:
debby:~> cat .bash_logout # ~/.bash_logout clear

Diamoun'occhiatapiapprofonditaacomefunzionanoquestiscriptnellaprossimasezione.Tenete infobashaportatadimano.

7.2.4. Il prompt di Bash


7.2.4.1. Introduzione
IlpromptdiBashpufaremoltodipichemostraresempliciinformazionicomeilvostronome,il nomedelvostrocomputeredalcuneindicazionicircaladirectorycorrentementeinuso.Possiamo aggiungerealtreinformazionicomedataeoracorrenti,ilnumerodegliutenticonnessi,ecc... Comunque,primadicominciare,salveremoilnostroattualepromptinun'altravariabileambientale:
[jerry@nowhere jerry]$ MYPROMPT=$PS1 [jerry@nowhere jerry]$ echo $MYPROMPT [\u@\h \W]\$ [jerry@nowhere jerry]$

Cambiandoorailprompt,dandoperesempioilcomandoPS1="->",potremosempreritornarea quello originario con il comando PS1=$MYPROMPT. Naturalmente, lo ritroverete anche alla riconnessione tuttelevoltechevigingillerete appenaconilpromptnellalineadicomando ed eviteretediinserirloinunfilediconfigurazionedellashell.

7.2.4.2. Alcuni esempi


Percomprenderequestipromptesequenzediescapeusati,ciriportiamoallepagineInfoomandi Bash. exportPS1="[\t \j] " Mostral'oradelgiornoedilnumerodeiprocessiattivi. exportPS1="[\d][\u@\h \w] : " Mostradata,nomeutente,nomehostedirectorycorrentedilavoro.Notateche\Wmostra soloinomidibasedell'attualedirectorydilavoro. exportPS1="{\!} " Mostrailnumerocronologico(history)diognicomando. exportPS1="\[\033[1;35m\]\u@\h\[\033[0m\] " Mostrautente@hostinrosa. 148

IntroduzioneaLinux

exportPS1="\[\033[1;35m\]\u\[\033[0m\] \[\033[1;34m\] \w\[\033[0m\] " Impostailnomeutenteinrosaeladirectorydilavorocorrenteinblu. export PS1="\[\033[1;44m\]$USER is in \w\[\033[0m\] " Prompt per personechehannodifficoltneldistinguereladifferenzatrailpromptstessoecicheessi scrivono. exportPS1="\[\033[4;34m\]\u@\h \w \[\033[0m\]" Promptsottolineato. exportPS1="\[\033[7;34m\]\u@\h \w \[\033[0m\] " Caratteriinbiancosusfondoblu. exportPS1="\[\033[3;35m\]\u@\h\w\[\033[0m\]\a" Promptrosainuncaratterepichiarocheavvisaquandoivostricomandisonoterminati. exportPS1=...

Levariabilivengonoesportateinmodocheancheicomandieseguitisuccessivamenteconoscano l'ambiente. La linea di configurazione del prompt preferito meglio metterla nel file di configurazione~/.bashrcdellavostrashell. Selodesiderate,ipromptpossonoeseguirescriptdishellecomportarsidiversamenteaseconda dellediversecondizioni.Poteteaverepureilpromptchesuonaunamusicaognivoltachedateun comando,sebbenecidivienequasisubitofastidioso.Maggioriinformazionisipossonotrovarenel BashPromptHOWTO.

7.2.5. Gli script di shell


7.2.5.1. Cosa sono gli script?
Unoscriptdishell,comeabbiamovistonegliesempisullaconfigurazionedellashell,unfile testualecontenentedeicomandidellashell.Quandotalefilevieneutilizzatocomeprimoargomento nondiopzionenell'invocareBash,enonsonostateinseritenl'opzione-cn-s,Bashleggeed esegueicomandipresidalfileepoiesce.Questomododioperarecreaunashellnoninterattiva. QuandoBashesegueunoscriptdishell,vieneattribuitoilparametrospeciale 0 alnomedelfile piuttostocheilnomedellashell,eiparametriposizionali(qualsiasicosacheseguailnomedello script)vengonofissatisuirestantiargomenti,seesistenti.Seinvecenonsonostatifornitiargomenti aggiuntivi,iparametriposizionalirestanoindefiniti. Unoscriptdishellpuessereresoeseguibileusandoilcomando chmod peraccendereilbitdi esecuzione. Quando Bash trova tale file mentre sta cercando in PATH un comando, apre una sottoshellpereseguirlo.Inaltritermini,eseguire nomefileARGOMENTI equivaleall'esecuzionedi bashnomefile ARGOMENTI 149

IntroduzioneaLinux

senomefileunoscriptdishelleseguibile.Talesottoshellreinizializzasestessainmodocheil risultatocomesefossestatainvocataunanuovashellperinterpretareloscript,conl'eccezione che le posizioni dei comandi registrate dalla genitrice (v. hash nelle pagine Info) vengono mantenutedallafiglia. Molte versioni di UNIX rendono ci parte del meccanismo di esecuzione di un comando del sistemaoperativo.Selaprimarigadiunoscriptcominciaconiduecaratteri#!,ilrestodellariga specifica uninterprete per ilprogramma. Cos poteteindicare bash, awk, perl oqualche altro interpreteoshellescrivereilrestodelfilediscriptinquellinguaggio. Gli argomenti per l'interprete consistono in un singolo argomento opzionale dopo il nome dell'interprete nella prima linea del file discript, seguito dal nome del file di script e poi dai rimanentiargomenti.Bashsvolgerquestaazioneneisistemioperativichenonlagestisconoda lorostessi. SpessogliscriptdiBashinizianocon
#! /bin/bash

(supponendocheBashsiastatainstallatain/bin),poichciassicuracheBashverrutilizzataper interpretareloscript,ancheseeseguitosottoun'altrashell.

7.2.5.2. Alcuni semplici esempi


Unoscriptmoltosempliceconsisteinununicocomandochesalutal'utentecheloesegue:
[jerry@nowhere ~] cat hello.sh #!/bin/bash echo "Ciao $USER"

Di fatto lo script costituito da un solo comando, echo, che usa il valore ($) della variabile ambientale USER per stampare unafrase personalizzata conil nome dell'utente chefornisce il comando. Unaltromonolinea,impiegatopermostraregliutenticonnessi:
#!/bin/bash who | cut d " " f 1 | sort u

Quidiseguitoc'unoscriptformatodaunnumeromaggioredilineecheutilizzopereseguire copiedisicurezzadituttiifileinunadirectory.Perprimacosaloscriptcreaunelencodituttiifile presentinelladirectorycorrenteelomettenellavariabileLIST.Poiimpostailnomedellacopiaper ciascunfileedinfinecopiailfile.Perognifilevienestampatounmessaggio:


tille:~> cat bin/makebackupfiles.sh #!/bin/bash # make copies of all files in a directory LIST=`ls` for i in $LIST; do

150

IntroduzioneaLinux

ORIG=$i DEST=$i.old cp $ORIG $DEST echo "copied $i" done

Inserendosolounalineacomemv* *.oldnonfunziona,comenoteretesperimentandolasuun gruppodifilediprova.Uncomando echo statoaggiuntopermostraredell'attivit:essotorna normalmenteutilequandounoscriptnonfunziona.Inseriteneunodopociascunpassaggiodubbioe scopriretel'erroreinunattimo. Ladirectory/etc/rc.d/init.dcontieneunaquantitdiesempi.Diamounocchioaquestoscriptche controllailserverimmaginarioICanSeeYou:


#!/bin/sh # description: ICanSeeYou allows you to see networked people # process name: ICanSeeYou # pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid # config: /etc/ICanSeeYou.cfg # Source function library. . /etc/rc.d/init.d/functions # See how (with which arguments) we were called. case "$1" in start) echo n "Starting ICanSeeYou: " daemon ICanSeeYou echo touch /var/lock/subsys/ICanSeeYou ;; stop) echo n "Shutting down ICanSeeYou: " killproc ICanSeeYou echo rm f /var/lock/subsys/ICanSeeYou rm f /var/run/ICanSeeYou/ICanSeeYou.pid ;; status) status ICanSeeYou ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0

Perprimacosaconilcomando.(punto)vienecaricatoungruppodifunzionidishell,usatedaquasi tuttigliscriptdishellin/etc/rc.d/init.d.Dopovienedatouncomandocasechedefinisce quattromodidiversidiesecuzionedelloscript:unesempiopotrebbeessere IcanSeeYou start. Ladecisionesuquale case eseguire dipendedallaletturadelprimoargomentodelloscriptcon l'espressione$1. Quandovienedatouninputnoncorretto,vieneeseguitoilcasedibase,segnatoconunasterisco, 151

IntroduzioneaLinux

concuiloscriptrestituisceunmessaggiodierrore.Lalistadeicaseterminaconl'istruzioneesac. Nelcase start ilprogrammaservervieneavviatocomedemoneeglivengonoassegnatiunIDdi processoeunlock.Nelcasestopilprocessoservervienerintracciatoefermatoconrimozionedel lockedelPID.Opzioni,comequelladaemon,efunzioni,comekillproc,vengonodefinitenel file /etc/rc.d/init.d/functions. Questa impostazione specifica delle distribuzioni usateinquestoesempio.Gliinitscriptdelvostrosistemapotrebberousarealtrefunzioni,definitein altrifile,onemmenouna. Incasodisuccessoloscriptrestituisceuncodiced'uscita0alprocessogenitore. Questo script un bell'esempio di impiego delle funzioni, che rendono lo script pi facile da leggereeillavorovienesvoltopivelocemente.Osservatecheesseusanoshinvecedibashper essereutiliaduninsiemepiestesodisistemi.InunsistemaLinuxinvocare bash come sh la conseguenzadellashellchegirainmodalitcompatibilePOSIX. Lepaginemandibashcontengonomaggioriinformazionicircalecombinazionidicomandi,icicli for e while eleespressioni regolari, come pure esempi. Uncomprensibile corso diBash, con esercizi, destinato ad amministratori di sistema e utenti avanzati, disponibile su http://tille.garrels.be/training/bash/,dallastessaautricediquestaguidaIntroduzioneaLinux.La descrizione dettagliata delle caratteristiche ed applicazioni di Bash si trova nella guida di riferimentoAdvancedBashScripting.

7.3. L'ambiente grafico


7.3.1. Introduzione
L'utentemediopotrebbenonpreoccuparsieccessivamentedelleproprieimpostazionidilogin,ma Linux offre un'ampia variet di appariscenti gestori di finestre e desktop da usare sotto X, l'ambiente grafico. L'impiego elaconfigurazione digestori difinestre edesktop sono chiari e possonoancheassomigliareagliambientistandardMSWindows,AppleoUNIXCDE,sebbene moltiutentiLinuxpreferiscanodesktoppicoloratiegestoridifinestrepifantasiose.Quinon vogliamotrattaredellaconfigurazionespecificadegliutenti.Semplicementesperimentateeleggete ladocumentazioneusandolefunzioniinternediAiutofornitedaquestigestoriecosprocederete bene. Daremocomunqueunosguardopiattentoalsistemachestaallabase.

7.3.2. Il sistema X Window


IlsistemaXWindowunsistemaafinestretrasparenteallaretechegirainun'ampiagammadi macchinepercalcoliegrafica.IserverdisistemaXWindowfunzionanosucomputerconschermo a bitmap. Lo X server distribuisce l'input dell'utente ed accetta richieste uscenti da svariati programmiattraversounavarietdicanalidicomunicazioneinterprocessodifferenti.Sebbeneil casopicomuneperiprogrammiclientisiaquellodigiraresullastessamacchinadelserver,i 152

IntroduzioneaLinux

clientisipossonoegualmenteeseguireinmodotrasparentedaaltremacchine(compresemacchine conarchitettureesistemioperatividifferenti).ImpareremoafarecinelCapitolo10dedicatoalle retiedalleapplicazioniinremoto. X supporta la sovrapposizione gerarchica di sottofinestre ed operazioni di testo e grafica, su schermisiamonocromaticicheacolori.IlnumerodeiprogrammiclientiXcheusanoilserverX abbastanzaampio.Alcunideiprogrammi fornitinelladistribuzione essenziale diXConsortium comprendono:

xterm:unemulatorediterminale twm:ungestoredifinestreminimalista xdm:ungestoredischermi xconsole:unprogrammadiredirezionedellaconsole bitmap:uneditordibitmap xauth,xhosteiceauth:programmidicontrollodegliaccessi xset,xmodmapemoltialtri:programmiperimpostarelepreferenzedell'utente xclock:unorologio xlsfonts ealtri:unvisualizzatoredifont,utilitperelencare informazioni circaifont,le finestreeglischermi xfs:unserverdifont ...

Ciriportiamonuovamenteallepaginemandiquesticomandiperdettagliateinformazioni.Maggiori spiegazionisullefunzionidisponibilipossonoesserericercatenelmanuale XlibClanguageX Interfacechetrovatenellavostradistribuzione,nellespecifichediXWindowSystemProtocolenei varimanuali etestidegliXtoolkit.ladirectory /usr/share/doc contiene riferimenti atali documentiedamoltialtriancora. Molte altri programmi di utilit, gestori di finestre, giochi, toolkit e gadget sono inclusi come contributi degli utenti nella distribuzione diXConsortium, oppure sono disponibili suInternet mediante FTP anonimo. Buoni posti dove incominciare sono http://www.x.org e http://www.xfree.org. Inoltretutteleapplicazionigrafiche,comeivostribrowser,programmidipostaelettronicaedi visualizzazionediimmagini,strumentiperlaproduzionedisuoniecosvia,sonotutticlientidel vostroserverX.NotatechenellenormalioperazioniinmodalitgraficaiclientiXedilserverX giranosottoLinuxnellastessamacchina.

7.3.2.1. Nomi dei display


Dalpuntodivistadell'utenteogniserverXhaunnomedischermo(displayname)nellaforma: nomehost:numerodisplay.numeroscreen Taleinformazionevieneutilizzatadall'applicazioneperstabilirecomedovrconnettersialserverX echeschermodovrusarenormalmente(sudisplayconmoltischermi):

153

IntroduzioneaLinux

nomehost: rappresenta il nome della macchina cliente a cui connesso fisicamente il display.Senonvieneindicato,verrusatalamodalitpiefficientedicomunicareadun serversullastessamacchina. numerodisplay:laparoladisplayvieneabitualmenteusataperriferirsiadungruppodi monitor che condividono tastiera e puntatore (mouse, tavoletta grafica, ecc...). Molte workstation tendono adavere solo unatastiera eperci ununico display. D'altro canto sistemimultiutentepigrandihannospessodiversidisplaycosicchpidiunapersonaalla voltapulavorareingrafica.Perevitareequivociadognidisplaydiunamacchinaviene assegnatounnumerodidisplay(iniziandodallo0)quandoilserverXdiqueldisplaystato avviato.Ilnumerodidisplaydeveesseresempreassegnatoinunnomedidisplay. numerodiscreen:alcunidisplaycondividonounasolatastieraedununicomousefradueo pimonitor.Siccome ognimonitorhailpropriosetdifinestre,aciascunoscreenviene attribuitoun numerodiscreen (cominciandodallo0)all'avviodelserverXperildisplay corrispondente.Senonvieneindicatounnumerodiscreen,siuserloscreen0.

NeisistemiPOSIX ilnomedeldisplay dipartenza viene conservatonellavariabile ambientale DISPLAY. Tale variabile impostata automaticamente dall'emulatore di terminale xterm. Comunque,quandoviautenticateinun'altramacchinadiunarete,poteteaverbisognodiimpostare manualmenteDISPLAYperpuntarealvostrodisplay(v.Sezione10.4.3.2.). MaggioriinformazionipossonoesserescovatenellepaginemandiX

7.3.2.2. I gestori di finestre e desktop


La rappresentazione delle finestre nello schermo controllata da programmi speciali chiamati gestori di finestre (o windowmanager). Sebbene molti diquesti gestori difinestre seguano le specifichedigeometriacoscomeassegnate,altripotrebberosceglierediignorarle(peresempio, chiedendoall'utentedidisegnareesplicitamentelaregionedellafinestrasulloschermomedianteil puntatore). Dalmomentocheigestoridifinestresononormali(anchesecomplessi)programmiclienti,pu esserecostruitountipodiversodiinterfacciautente.LadistribuzionediXConsortiumvienefornita di un gestore di finestre chiamato twm, sebbene molti utenti preferiscano qualcosa di pi fantasioso, risorse di sistema permettendo. Sawfish e Enlightenment sono esempi popolari che consentonoaciascunutentediavereundesktopintonatoall'umoreedallostile. Ungestoredidesktop(desktopmanager)consentediusareungestoredifinestreoppureunaltro per definire in modo adeguato il vostro desktop grafico, con menu a barre, menu a tendine, messaggiinformativi,unorologio,ungestorediprogrammiedifile,ecc...Fraidesktopmanager piinvogatroviamoGnomeeKDE,chegiranoentrambiinquasitutteledistribuzioniLinuxedin moltialtrisistemiUNIX. ApplicazioniKDEconGnome/applicazioniGnomeconKDE NonnecessarioavviareildesktopinKDEperfargiraredelleapplicazioniKDE.Se aveteinstallatolelibrerieKDE(pacchettokdelibs),poteteeseguirequesteapplicazioni daimenuGnomeofarlepartiredaunterminalediGnome. 154

IntroduzioneaLinux

FargirareapplicazioniGnomeinambienteKDEunattimopidifficoltosoperch sottoGnomenonesisteuninsiemeunicodilibreriedibase.Comunqueledipendenzee glialtripacchettiextrachepotrestedoverinstallareviverrannosegnalatialmomento dell'avvioodell'installazioneditaliapplicazioni.

7.3.3. Configurazione di un server X


La distribuzione X normalmente fornita con Linux, Xfree86, utilizza il file di configurazione XF86Config perlesueimpostazioniiniziali.Questofileconfiguralavostraschedavideoesi trovainmolteposizioni,sebbenequellapifrequentesiain/etc/X11. Sevedetecheilfile/etc/X11/XF86Configpresentenelvostrosistema,unasuadescrizione puessererintracciatanellepagineInfoomanconXF86Config. AcausadellelicenzeadottatedaXfree86,isistemipirecentinormalmentesonoforniticonla distribuzione X.Org del server e degli strumenti X. Qui il file principale di configurazione xorg.conf,anchequestosolitamentein/etc/X11.Ilfileconstadiuncertonumerodisezioni disposte in qualsiasi ordine. Queste contengono informazioni circa ilvostromonitor, lascheda video, laconfigurazionedelloschermo,latastiera, ecc...Comeutenti,nondovetepreoccuparvi eccessivamentedicosac'inquelfile,dalmomentocheognicosavienenormalmenteimpostata quandosiinstallailsistema. Sedovetecambiareleimpostazionidelservergrafico,potetecomunquemandareinesecuzionegli strumentidiconfigurazioneomodificareifilediconfigurazionechedeterminanol'infrastruttura perl'usodelserverXfree86.Dateunosguardoallepaginemanpermaggioriinformazioni;lavostra distribuzionepotrebbeavereisuoipropristrumenti.Dalmomentocheunaconfigurazioneerrata potrebbe causare della spazzatura illeggibile inmodalit grafica, sarebbe consigliabile fare una copiadibackupdelfilediconfigurazioneprimadiprovareamodificarlo,tantoperesseresicuri.

7.4. Specifiche impostazioni di regione


7.4.1. Configurazione della tastiera
Latastieraperleconsoletestualisiconfiguraconilcomandoloadkeys.Utilizzateinveceivostri strumenti locali diconfigurazione diXoppure modificate manualmente lasezione keyboard in XF86Config per configurare la disposizione in modalit grafica. XkbdLayout uno dei comandichepotresteutilizzare:
XkbdLayout us

Questodibase.Peradeguarloallevostreimpostazionilocali,modificatelosostituendoilvaloretra le virgolette con uno qualsiasi dei nomi elencati nelle sottodirectory della vostra directory keymaps.Senonriusciteatrovarelemappaturedeitasti,provateafarapparirenelvostrosistema 155

IntroduzioneaLinux

laloroposizionedandoilcomando locatekeymaps E'possibilecombinareleimpostazionideglischemi,comeinquestoesempio:


Xkblayout "us,ru"

Fateunacopiadisicurezzadelfile/etc/X11/XF86Configprimadimodificarlo!Perfareci avetebisognodell'accountdiroot. DisconnetteteviepoiriconnetteteviperricaricareleimpostazionidiX. LaGnomeKeyboardAppletvipermettedipassareintemporealetraglischemi;nonsonorichiesti specialipermessiperl'usodiquestoprogramma.KDEpossiedeunostrumentoanalogoperpassare daunaconfigurazioneditastieraall'altra.

7.4.2. I tipi di caratteri


Utilizzatelostrumento setfont percaricareifontinmodalittesto.Moltisistemihannounfile standard inputrc che rende possibili combinazioni di caratteri come quello francese (metacaratteri).L'amministratoredisistemadovrebbepoiaggiungerelalinea
export INPUTRC="/etc/inputrc"

alfile/etc/bash.

7.4.3. Data e fusi orari


L'impostazione dell'informazione oraria viene di solito effettuata al momento dell'installazione. Successivamentepuesseremantenutaaggiornataricorrendoaduncliente NTP (NetworkTime Protocol).MoltisistemiLinuxnormalmenteavvianontpd:
debby:~> ps ef | grep ntpd ntp 24678 1 0 2002 ? 00:00:33 ntpd U ntp

Poteteavviaremanualmententpdateperimpostarel'ora,acondizionechepossiateraggiungereun server temporale. Ildemone ntpd non dovrebbe funzionare quando regolate l'oracon ntpdate. Utilizzateunservertemporalequaleargomentodelcomando:
root@box:~# ntpdate 10.2.5.200 26 Oct 14:35:42 ntpdate[20364]: adjust time server 10.2.5.200 offset -0.008049 sec

DateunosguardoalvostromanualedisistemaealladocumentazioneallegataalpacchettoNTP. Molti gestori di desktop comprendono strumenti per la regolazione dell'ora di sistema, consentendovidiaveraccessoall'accountdiamministratoredisistema. 156

IntroduzioneaLinux

Perimpostareilfusoorario(timezone)corretto,poteteservirvideicomanditzconfigotimezone. L'informazione sul fuso orario viene normalmente data durante l'installazione della vostra macchina.Moltisistemihannodeglistrumentispecificidelladistribuzioneperconfigurarlo:date unosguardoallavostradocumentazionedisistema.

7.4.4. La lingua
Sepreferitepiuttostoricevereimessaggidalsistemainolandeseoinfrancese(ndt.initaliano), doveteimpostarelevariabiliambientali LANG e LANGUAGE,impostandocosilsupportoperla localizzazioneallinguaggiodesideratoedeventualmenteaifontlegatiaisegniconvenzionaliditale linguaggio. Inmoltisistemigraficidiautenticazione(come gdm o kdm),avetelapossibilitdiconfigurare questeimpostazionilinguisticheprimadellogin. Notatecheinmoltisistemil'impostazionetipotendeadessereen_US.UTF8inquestoperiodo.Ci noncostituisceunproblemapoichisistemichecel'hannodibasesonofornitianchedituttii programmichesupportanotalecodifica.Cosvipumodificaretuttiifiledelvostrosistema, cat nonsicomportainmodostrano,ecc... Iproblemisorgonoquandovicollegateadunsistemapivecchiochenonsupportaquestacodifica deifont,oppurequandoapriteunfilecodificatoUTF8inunsistemachesupportasoloitipidi caratteread1byte.Ilprogrammadiutilitrecodepotrebbefornirviunbuonservizioperconvertire i file da un insieme di caratteri adun altro. Leggete le pagine man per una panoramica sulle caratteristiche esull'uso.Un'altrasoluzionepotrebbe esserequelladilavorare temporaneamente con unadiversadefinizionedicodificaimpostandolavariabileambientaleLANG:
debby:~> acroread /var/tmp/51434s.pdf Warning: charset "UTF8" not supported, using "ISO88591". Aborted debby:~> set | grep UTF LANG=en_US.UTF8 debby:~> export LANG=en_US debby:~> acroread /var/tmp/51434s.pdf <new window opens>

FateriferimentoalsitowebdiMozillaperindicazionisucomericevereFirefoxnellavostralingua. IlsitowebOpenOffice.orghainformazionisullalocalizzazionedellavostrasuiteOpenOffice.org.

7.4.5. Specifiche informazioni nazionali


L'elenco degli HOWTO contiene riferimenti circa le istruzioni di localizzazione, in bangla, bielorusso,cinese,esperanto,finnico,francofono,ebraico,ellenico,lituano,polacco,portoghese, 157

IntroduzioneaLinux

serbo,slovacco,sloveno,spagnolo,thaieturco.

7.5. Installare nuovo software


7.5.1. In generale
Dopol'installazionediLinux,moltepersonesistupisconoallavistadelcomputerfunzionantee utilizzabile.Parecchiedistribuzionicontengonounampiosupportoperleschedevideoedirete,per monitor ed altre periferiche esterne, cosicch di solito non serve installare driver extra. Pure strumenticomunicomelesuitedaufficio,inavigatoriweb,iclientidipostaelettronicaecosvia, sonocompresinellemaggioridistribuzionimaggiori.Anchecosunaprimainstallazionepotrebbe noncorrispondereallevostreesigenze. Seproprio nontrovatecicheviserve, potrebbe essere chenonsiastatoinstallatonelvostro sistema.Potrebbeancheesserechevoiabbiateilsoftwarericercato,machenonfacciacichesi supponevadovessefare.RicordatevicheLinuxsimuoverapidoedilsoftwaremigliorasubase giornaliera.Nongettateilvostrotemponelricercareproblemichepotrebberoesserestatigirisolti. Poteteaggiornareilvostrosistemaoppureaggiungerglipacchettiquandovolete.Moltosoftware arrivainpacchetti.SoftwareextrapotrebbeessererintracciatoneivostriCDdiinstallazioneosu Internet.Ilsitowebdellavostradistribuzioneunbuonpostopercominciareacercareprogrammi aggiuntiviecontieneistruzionisucomeinstallarlinellavostraversionediLinux(v.AppendiceA). Leggetesempreladocumentazioneunitaalnuovosoftwareequalsiasiistruzioneperl'installazione eventualmentecontenutanelpacchetto.TuttiisoftwarehannounfileREADME,cheviinvitomolto calorosamentealeggere.

7.5.2. I formati dei pacchetti


7.5.2.1. I pacchetti RPM
7.5.2.1.1. Cos' un RPM? RPM,ilRedHatPackageManager,unpotentegestoredipacchettichepoteteusareperinstallarli, aggiornarlierimuoverli.Viconsentedicercarepacchettiedimanteneretracciadeifilecontenutiin ognipacchetto.E'integratounsistemacosicchsieteingradodiverificarel'autenticitdeipacchetti scaricatidaInternet.GliutentiavanzatihannolapossibilitdicostruireipropripacchetticonRPM. UnpacchettoRPMconsisteinunarchiviodifileemetadatiutilizzatiperinstallareecancellarei filed'archivio.Imetadatiincludonoscriptdiaiuto,attributideifile,einformazionidescrittivedel pacchetto.Ipacchettisonodiduetipi:binari(usatiperincapsulareilsoftwaredainstallare)edei sorgenti(checontengonoilcodicesorgenteeleregolenecessariaprodurrepacchettibinari). MoltealtredistribuzionisupportanoipacchettiRPM,fracuilepopolariRedHatEnterpriseLinux, Mandriva (prima Mandrake), Fedora Core e SuSE Linux. A parte i consigli della vostra distribuzione,viconverrleggeremanrpm. 7.5.2.1.2. Esempi di RPM

158

IntroduzioneaLinux

Numerosipacchettivengonosemplicementeinstallaticonl'opzionediaggiornamento, -U,cheil pacchetto sia gi installato o meno. Il pacchetto RPM contiene una versione completa del programma che sovrascrive le versioni esistenti o installa come uno nuovo. L'uso tipico il seguente: rpmUvh /path/to/rpm package(s) L'opzione -v genera unoutput pidescrittivo e -h fainmodo che rpm stampi unabarra di avanzamento.
[root@jupiter tmp]# rpm Uvh totem 0.99.51.fr.i386.rpm Preparing... ########################################### [100%] 1:totem ########################################### [100%] [root@jupiter tmp]#

I pacchetti del nuovo kernel vengono installati con l'opzione -i, che evita di sovrascrivere le versioniesistentidelpacchetto.Inquestomodosareteancoraingradodiavviareilvostrosistema conilvecchiokernelsequellonuovononfunziona. Potetepureusarerpmpercontrollareseunpacchettoinstallatonelvostrosistema:
[david@jupiter ~] rpm qa | grep vim vimminimal6.129 vimX116.129 vimenhanced6.129 vimcommon6.129

Oppurepotetescoprirequalepacchettocontieneuncertofileodeseguibile:
[david@jupiter ~] rpm qf /etc/profile setup2.5.251 [david@jupiter ~] which cat cat is /bin/cat [david@jupiter ~] rpm qf /bin/cat coreutils4.5.319

Notatechenonviservel'accessoconiprivilegidiamministratoreperinterrogaremedianterpmil databasediRPM.Doveteessererootsoloquandoaggiungete,modificateocancellatepacchetti. Diseguitounultimoesempiochedimostracomesidisinstallaunpacchettoricorrendoarpm:


[root@jupiter root]# rpm e totem [root@jupiter root]#

Osservatecheladisinstallazionedibasenonquella"verbosa":normalechenonvediatemoltodi cichestasuccedendo.Incasodidubbi,usatedinuovorpm-qaperverificarecheilpacchettosia statorimosso. RPM pu fare molto dipidella coppia difunzioni elementari che abbiamo trattato inquesta introduzione:RPMHOWTOcontieneulterioriinformazioni. 159

IntroduzioneaLinux

7.5.2.2. I pacchetti DEB (.deb)


7.5.2.2.1. Cosa sono i pacchetti Debian? QuestoformatodipacchettiquellostandarddiDebianGNU/Linux,dovedselect,e,picomune al giorno d'oggi, aptitude, lo strumento normale di gestione dei pacchetti. Viene usato per selezionareipacchettichevoleteinstallareoaggiornare,masiavvieranchedurantel'installazione di un sistema Debian e vi aiuter a definire il metodo di accesso da utilizzare, ad elencare i pacchettiedaconfigurarli. Il sito web di Debian contiene tutte le informazioni che vi servono, compreso un "dselect DocumentationforBeginners". Seguendo le pi recenti novit, il formato dei pacchetti di Debian sta divenendo sempre pi popolare.Almomentodiquestoscritto,lousano5delledistribuzionitop10.Anche aptget (v. Sezione7.5.3.2.)stadiventandoestremamentepopolarepurepressoisisteminonDEB. 7.5.2.2.2 Esempi con gli strumenti DEB Laverificasull'installazionediunpacchettosieffettuausandoilcomando dpkg.Peresempio,se voletesaperecheversionedelsoftwareGalleryinstallatanellavostramacchina:
nghtwsh@gorefest:~$ dpkg -l *gallery* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii gallery 1.5-1sarge2 a web-based photo album written in php

Ilprefissoiisignificacheilpacchettoinstallato.Sedovestevedereuncomeprefisso,allora cisignificherebbecheilpacchettopresentenell'elencotenutodalvostrocomputer,machenon installato. Laricercasull'appartenenzadiunfileaqualepacchettosieffettuausando-Scondpkg:


nghtwsh@gorefest:~$ dpkg -S /bin/cat coreutils: /bin/cat

MaggioriinformazionisipossonotrovarenellepagineInfodedicateadpkg.

7.5.2.3. I pacchetti dei sorgenti


LamaggiorpartedeiprogrammidiLinuxasorgenteaperto/libero,cosicchsonodisponibilii pacchettideisorgentidiquestiprogrammi.Ipacchettideisorgentisononecessaripercompilarela vostraversionepersonalediunprogramma.Isorgentidiunprogrammasipossonoscaricaredal suositoweb,spessocomeun"tarball"compresso(programma-versione.tar.gzoqualcosa di simile). Per le distribuzioni basate su RPM, il sorgente spesso fornito in programmaversione.src.rpm.Debianemoltedistribuzionibasatesudiquesta,offronodalorostesseil sorgentecorrettochesipuricavareusandoaptgetsource. 160

IntroduzioneaLinux

Nelfile README sonoriportate lespecifiche richieste,dipendenze eistruzioni diinstallazione. ProbabilmenteviserviruncompilatoreC,gcc.QuestocompilatoreCGNUvieneinclusoinmolti sistemiLinuxedstatoportatosumoltealtrepiattaforme.

7.5.3. Gestione ed aggiornamenti automatici dei pacchetti


7.5.3.1. Note generali
La prima cosa da fare dopo l'installazione di un sistema nuovo quella di applicare gli aggiornamenti:ilsuggerimentosiapplicaatuttiisistemioperativieLinuxnondifferente. GliaggiornamentipermoltisistemiLinuxnormalmentesipossonotrovareinunvicinositochefa damirrordellavostradistribuzione.Elenchideisiticheoffronotaleserviziosipossonotrovarenel sitowebdellavostradistribuzione(v.AppendiceA). Gliaggiornamentidovrebberoessereeffettuatiregolarmente(ognigiorno,sepossibile),maogni due settimane potrebbe essere un ragionevole inizio. Realmente dovreste tentare di avere la versione pi recente della vostra distribuzione, dal momento che Linux cambia costantemente. Come abbiamo accennato in precedenza, funzioni, miglioramenti e correzioni di errori nuovi vengonofornitiaritmoserratoequalchevoltavengonopuresistematiproblemidisicurezza. LabuonanotiziachelamaggiorpartedelledistribuzioniLinuxforniscestrumentiinmodoche non dovrete quotidianamente aggiornare a mano decine di pacchetti. Le sezioni seguenti vi offriranno una panoramica dei gestori dei gestori di pacchetti. C' molto di pi su questo argomento,persinoaggiornamentiregolarideipacchettisorgentisonogestibiliautomaticamente; noi elencheremo soltanto i sistemi maggiormente noti. Fate sempre riferimento alla documentazionedellavostraparticolaredistribuzioneperleprocedureconsigliate.

7.5.3.2. APT
AdvancedPackageToolunsistemadigestionedeipacchettidelsoftware.Lostrumentoalineadi comandopermaneggiareipacchettiaptget,chearrivafornitodiunaeccellentepaginamanche descrive come installarli, aggiornarli singolarmente o nell'intera distribuzione. APT trae le sue originidalladistribuzioneDebianGNU/Linux,dicuirappresentailnormalegestoredipacchetti Debian.APTstatomodificatopersupportareancheipacchettiRPM.ImaggiorivantaggidiAPT consistononell'essereliberoeflessibilenell'impiego:vipermetterdipredisporresistemisimilia quellispecificidelladistribuzione(e,inalcunicasi,commerciali)elencatinelleprossimesezioni. Generalmente,usandoperlaprimavoltaaptget,viservirunindicedituttiipacchettidisponibili. Perottenerecisiusailcomando apt-get update Successivamentepotreteusareaptgetperaggiornareilvostrosistema:

161

IntroduzioneaLinux

apt-get upgrade Effettuarespessoquestaoperazioneunmodosemplicepermantenereilvostrosistemaalpasso conitempiepercisicuro. A prescindere da questo impiego generico, aptget anche molto veloce nell'installare singoli pacchetti.Funzionacos:
[david@jupiter ~] su c "apt get install xsnow" Password: Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: xsnow 0 packages upgraded, 1 newly installed, 0 removed and 3 not upgraded. Need to get 33.6kB of archives. After unpacking 104kB of additional disk space will be used. Get:1 http://ayo.freshrpms.net redhat/9/i386/os xsnow 1.4210 [33.6kB] Fetched 33.6kB in 0s (106kB/s) Executing RPM (Uvh)... Preparing... ########################################### [100%] 1:xsnow ########################################### [100%]

Osservate l'opzione -c nel comando su, che indica alla shell di root di eseguire solo questo comando e di ritornarne poi nell'ambiente dell'utente. In questa maniera non vi scorderete di chiuderel'accountdiroot. Seesistonodelledipendenzeconaltripacchetti, aptget scarichereinstallertalipacchettidi supporto. MaggioriinformazionisipossonotrovareinAPTHOWTO.

7.5.3.3. I sistemi che utilizzano i pacchetti RPM


UpdateAgent,cheoriginariamentesupportavasoloipacchettiRPMdiRedHat,statooraallargato adunestesoinsiemedisoftware,compresii repository nonRedHat.Questostrumentooffreun sistemacompletoperaggiornareipacchettiRPMneisistemiRedHatoFedoraCore.Nellalineadi comandobatteteup2dateperaggiornareilvostrosistema.Neldesktopvienenormalmenteattivata unapiccolaiconacheviavvisasecisonoaggiornamentidisponibiliperilvostrosistema. Yellowdog's Updater Modifier (yum) un altro strumento che recentemente divenuto pi popolare.Sitrattadiunprogrammainterattivomadiaggiornamentoautomatizzatoperinstallare, aggiornareorimuoverepacchettiRPMinunsistema.E'lostrumentodielezioneneisistemiFedora. InSuSE LinuxtuttosifaconYast,YetAnother SetupTool,chesupportaun'ampiavarietdi compiti diamministrazione disistema fracuil'aggiornamento deipacchetti RPM. Apartireda SuSELinux7.1poteteeffettuarel'aggiornamentotramiteun'interfacciawebeYOU,YastOnline Update. MandrakeLinuxeMandrivaoffronoglistrumentichiamatiURPMI,uninsiemediprogrammidi interfacciacherendonopisemplicel'installazionedinuovosoftwareperl'utente.Talistrumenti 162

IntroduzioneaLinux

mettono insieme RPMDrakee MandrakeUpdateper fornire ognicosa cheserveper unafacile installazioneedisinstallazionedeipacchettisoftware.MandrakeOnlineoffreunaestesavarietdi serviziepucomunicareautomaticamenteagliamministratoriquandosirendonodisponibilidegli aggiornamenti per un particolare sistema Mandrake. Guardate, tra gli altri, man urpmi per maggioriinformazioni. AnchelesuiteperdesktopKDEeGnomehannolelorospecifiche(egrafiche)versionideigestori dipacchetti.

7.5.4. Aggiornare il kernel


La maggior parte delle installazioni Linux sono valide se aggiornate periodicamente la vostra distribuzione.Laproceduradiaggiornamentoinstallerunnuovokernel,quandonecessario, ed effettuertutteleopportunemodifichealvostrosistema.Dovretecompilareoinstallareunnuovo kernelmanualmentesoloseavretenecessitdifunzionidelkernelnonsupportatedaquellobase incluso nella vostra distribuzione Linux. Ogni volta che compilate il vostro kernel personale ottimizzato o usate unpacchetto del kernel precompilato, installatelo incoesistenza conquello vecchiofinchnonsietesicuricheognicosafunzionisecondoleaspettative. Poi create un sistema a doppio avvio, che vi consentir di scegliere quale kernel avviare, modificandoilvostrofilediconfigurazionedelbootloader, grub.conf.Questounsemplice esempio:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making config changes. # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, e.g. # root (hd0,0) # kernel /vmlinuzversion ro root=/dev/hde8 # initrd /initrdversion.img #boot=/dev/hde default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux new (2.4.931) root (hd0,0) kernel /vmlinuz2.4.931 ro root=/dev/hde8 initrd /initrd2.4.931.img title oldkernel root (hd0,0) kernel /vmlinuz2.4.921 ro root=/dev/hde8 initrd /initrd2.4.921.img

Dopo che il nuovo kernel stato collaudato positivamente, potete rimuovere dal file di configurazione di GRUB le linee che riguardano quello vecchio, anche se sarebbe preferibile attendereunpaiodigiornisoloperesseresicuri.

7.5.5. Installare pacchetti extra dai CD di installazione


7.5.5.1. Montare un CD
Dibase,taleoperazionesieffettuanellostessomodoincuisiinstallanomanualmenteipacchetti, 163

IntroduzioneaLinux

salvo che doveteaggiungereil filesystemdel CDaquellodellavostramacchinaper renderlo accessibile.Nellamaggiorpartedeisistemiquestosarfattoautomaticamenteconl'inserimentodi unCDnellettoreperchalmomentodell'avviostatolanciatoildemoneautomount.Seilvostro CD nonvieneresodisponibileinmodoautomatico,dateilcomando mount inunafinestradi terminale. In base alla vostra effettiva configurazione di sistema, una riga simile a questa normalmenterisolverilproblema: mount/dev/cdrom /mnt/cdrom In alcuni sistemi solo root pu montare delle periferiche rimovibili; ci dipende dalla configurazione. Perconsentirnel'usoinautomatico,illettoreCDdisolitohaunalineain/etc/fstab,ilquale elencaifilesystemediloropuntidimontaggio,costituentiilvostroalberodelfilesystem.Sitratta diunarigasimileaquesta:
[david@jupiter ~] grep cdrom /etc/fstab /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0

Ciindicacheilsistemasaringradodicomprendereilcomandomount/mnt/cdrom.L'opzione noautosignificachequiiCDnonvengonomontatinelmomentodell'avvio. Poteteancheprovareapremereconiltastodidestradelmousesull'iconadelCDneldesktopper montareilCDstessoseilvostrogestoredifilenonlofapervoi.Potetecontrollaresehafunzionato dandoilcomandomountsenzaargomenti:


[david@jupiter ~] mount | grep cdrom /dev/cdrom on /mnt/cdrom type iso9660 (ro,nosuid,nodev)

7.5.5.2. Usare il CD
DopoavermontatoilCD,sieteingradodicambiaredirectory,disolitoalpuntodimontaggio /mnt/cdrom,dovepoteteaccederealcontenutodelCDROM.Utilizzateglistessicomandiper muovervitrafileedirectorycomefaresteconifileneldiscorigido.

7.5.5.3. Espellere il CD
PerfaruscireilCDdallettoredopoilsuoutilizzo,ilfilesystemdelCDdovrebbenonessereinuso. Pur trovandosi in una sola delle sottodirectory del punto di montaggio (nel nostro esempio /mnt/cdrom),sarconsideratocomefilesysteminuso,cosicchdovreteusciredal.Peresempio, fatelobattetecdsenzaargomenti(viriporternellavostradirectorypersonale.Dopodicipotete siausareilcomando umount/mnt/cdrom oppure ejectcdrom 164

IntroduzioneaLinux

Drivebloccati MAIforzareidrive.Iltruccodellagraffettaunapessimaideaperch,ancheseviene espulsoilCD,ilvostrosistemacontinueracrederecheilCDsiaancoraalsuoposto dalmomentochenonsonostateseguiteleprocedurenormali.E'assaiprobabileche dovreteriavviareperfartornareilsistemainunostatoconsistente. Secontinuateadaveremessaggidi"perifericaoccupata",controllateperprimacosache tuttelesessionidishellabbianorilasciatoilfilesystemdelCDechenoncisianopi applicazionigrafichechelostianousandoancora.Incasodidubbi,usatelostrumento lsofperrintracciareilprocessochestautilizzandolarisorsadelCD.

7.6.Sommario
Quandotuttoalsuopostosignificachegimetdellavorofatto. Anche setenere inordineimportante, altrettanto importante ilsentirsi"acasa" nelproprio ambiente,siagraficochetestuale.L'ambienteditestocontrollatoattraversoifilediimpostazione dellashell.L'ambientegrafico,invece,dipendeinprimoluogodallaconfigurazionedelserverX,su cuinumero altreapplicazioni sonostatecostruite,come igestori difinestre edeidesktop ele applicazioni grafiche, ciascuna con i propri file di configurazione. Dovreste leggere la documentazionespecificadelsistemaedeiprogrammiperscoprirecomeconfigurarli. Leimpostazionidiregionalizzazione,comequelladitastiera,l'installazionedifontappropriatiedel supportodellalinguameglioeffettuarlialmomentodell'installazione. Ilsoftwarevienegestitosiaautomaticamentechemanualmenteutilizzandounsistemadipacchetti. Tabella72.Nuovicomandinelcapitolo7:Faredavoistessiacasa Comando aptitude automount dpkg dselect loadkeys lsof mount ntpdate quota recode Significato GestisceipacchettiinstileDebian. Includeautomaticamenteifilesystemappenainseriti. IlgestoreDebiandipacchetti. GestisceipacchettiinstileDebian. Caricalaconfigurazionedellatastiera. Identificaiprocessi. Includeunnuovofilesystemnell'alberodelfilesystemesistente. Impostaoraedatadisistemautilizzandounservertemporale. Mostrainformazionicircal'usodellospaziosudiscoconcesso. Converteifileinunaltroinsiemedicaratteri. 165

IntroduzioneaLinux

Comando rpm setfont timezone tzconfig ulimit up2date urpmi yum

Significato GestisceipacchettiRPM. Sceglieunfont. Impostailfusoorario. Impostailfusoorario. Impostaomostrailimitidellerisorse. GestisceipacchettiRPM. GestisceipacchettiRPM. GestisceipacchettiRPM.

7.7.Esercizi
7.7.1. L'ambiente della shell

Stampateleimpostazionidell'ambiente.Qualevariabilesipuusarepermemorizzareiltipo diCPUdelvostrocomputer? Createunoscriptchepossascriverequalcosadeltipo"ciao,mondo".Dategliipermessi appropriatiinmodochepossaessereeseguito.Provateilvostroscript. Create una directory nella vostra directory personale e spostate lo script nella nuova directory. Aggiungete permanentemente questa nuova directory al vostro percorso di ricerca. Provate se lo script pu essere eseguito senza dare il percorso alla sua reale posizione. Createdellesottodirectorynellavostradirectorypersonaleperconservaresvariatifile,per esempiounadirectorymusicaperregistrare ifileaudio,unadirectory documentiperle vostreannotazioni,ecosvia.Eusatele! Createunpromptpersonalizzato. Visualizzateilimitidell'usodellerisorse.Riusciteamodificarli? Provatealeggerelepaginemancompressesenzaprimadecomprimerle. Createunaliaslllcheinrealteseguals-la. Perchilcomandotailtestfile>testfilenonfunziona? Montate un CD dati, come ad esempio il vostro CD dell'installazione di Linux, ed esploratelo.Nonscordatevidismontarloquandononviservepi. LoscriptdellaSezione7.2.5.2.nonperfetto:generaerroriconifilechesonodirectory. Modificateloscriptonmodocheselezioniperlacopiasolofilenormali.Usate find per effettuare la scelta. Non dimenticatevi di rendere il file eseguibile prima di provare ad avviarlo.

7.7.2.L'ambiente grafico

Provatetuttiitastidelmouseinzonediverse(terminale,sfondo,barradellefunzioni).

166

IntroduzioneaLinux

Esplorateimenu. Personalizzatelavostrafinestraditerminale. Usateibottonidelmousepercopiareeincollaredeltestodaunterminaleadunaltro. Scoprite come configurare il vostro gestore di finestre. Provate diversi spazi di lavoro (schermivirtuali). Aggiungereunaapplet,comeunanalizzatoredeicarichi,allabarradellefunzioni. Applicateuntemadifferente. Abilitateilcosiddettosloppyfocus,chesihaquandounafinestravieneattivatapassandoci soprailmouse,cosicchnonviservecliccarelafinestraperabilitarlaall'uso. Selezionareungestoredifinestredifferente. Disconnettetevieselezionateuntipodisessionediverso,tipoKDEseprimastavateusando Gnome.Ripeteteipassiprecedenti.

167

IntroduzioneaLinux

Capitolo 8. Stampanti e stampe


Inquestocapitoloimpareremodipisullestampantiesuifiledistampa.Dopolalettura diquestapartesareteingradodi:

Impostareilformatodeidocumenti Vedereinanteprimaidocumentiprimadiinviarliallastampante ScegliereunabuonastampantechelavoriconilvostrosistemaLinux Stamparefileecontrollarelostatodellastampante Risolvereiproblemidistampa Trovareladocumentazionenecessariaperinstallareunastampante

8.1. I file di stampa


8.1.1. Stampare da linea di comando
8.1.1.1. Inviare il file alla stampante
Lastampadaun'applicazionemoltosemplice,selezionandol'opzioneStampa[oPrint]dalmenu. Dallalineadicomandousateicomandilpolpr. lpfile(s) lprfile(s) Questicomandipossonoleggeredaunincanalamento[pipe],cosicchpotetestamparel'outputdi comandiutilizzando comando|lp Esistonomolteopzioniperregolarel'impostazionedellapagina,ilnumerodellecopie,lastampante concuivoletestampareseneavetepidiuna,ladimensionedellacarta,lastampanormaleoquella fronteretroselavostrastampantelaconsente,imarginiecosvia.Leggetelepaginemanperuna panoramicacompleta.

8.1.1.2. Lo stato dei vostri processi di stampa


Unavoltacheilfilestatoaccettatonellacodadistampa,vieneattribuitounnumeroidentificativo delprocessodistampa:
davy:~> lp /etc/profile request id is davy@blob+253

168

IntroduzioneaLinux

Pervedere(query)lacodadistampa,utilizzateicomandilpqolpstat.Seinseritisenzaargomenti, mostranoicontenutidellacodadistampapreimpostata.
davy:~> lpq blob is ready and printing Rank Owner Job File(s) Total Size active davy 253 profile 1024 bytes davy:~> lpstat blob253 davy 1024 Tue 25 Jul 2006 10:20_01 AM CEST

8.1.1.3. Stato della vostra stampante


Qual'lastampantepredefinitainunsistemacheaccedeapistampanti? lpstat-d
davy:~> lpstat -d system default destination: blob

Qual'lostatodella/emia/estampante/i? lpstat-p
davy:~> lpstat -d printer blob now printing blob253. enabled since Jan 01 18:01

8.1.1.4. La rimozione dei processi dalla coda di stampa


Senonvipiacecichevedeteconicomandidistato,usatelprmocancelpercancellareiprocessi.
davy:~> lprm 253

In ambiente grafico potete vedere apparire una finestra che vi comunica la cancellazione del processo. Inambitimaggiori,lpcpuessereutilizzatopercontrollaremolteplicistampanti.GuardateleInfo diciascuncomando. Esistonomoltistrumentidistampaadinterfacciagrafica(GUI)utilizzaticomefrontenddilpela maggiorpartedelleapplicazionigrafichehannounafunzionedistampachericorrealp.Leggetele funzioniinternediaiutoeladocumentazionespecificadeiprogrammipermaggioriinformazioni. Perchesistonoduecomandiperognioperazioneconnessaallastampa? LastampaconUNIXesimilihaunalungastoria.Eranoconsuetidueapproccipiuttosto differenti:lostileBSDdistampaequelloSystemV.Percompatibilit,LinuxconCUPS supportaentrambiglistili.Notatepureche lpnonsicomportaesattamentecome lpr, lpq haqualcheopzionediversada lpstat e lprm quasi,manondeltutto,similea cancel.Nonimportaqualiusate,bastacheadoperiatequelliconcuiviritrovateoche potresteconoscereperprecedentiesperienzeconsistemisimilUNIX. 169

IntroduzioneaLinux

8.1.2. Impostazione dei formati


8.1.2.1. Strumenti e linguaggi
Sevogliamoottenerequalcosadisensatodallastampante,ifiledevonoprimaassumereunformato. Linux,aprescinderedall'abbondanzadisoftwareperformattare,fornitodeglistrumentiUNIX basilariperl'impostazionedeiformatieperlelingue. I sistemi Linux moderni supportano la stampa diretta, senza alcuna formattazione da parte dell'utente,diunampiospettroditipidifile:testo,PDF,PostScriptediversiformatidiimmagine comePNG,JPEG,BMPeGIF. Perqueiformatidifilechenecessitanodiimpostazioni,Linuxdisponeinquantitdistrumentidi formattazione,comeadesempioicomandipdf2p,fax2psea2ps,checonvertonoglialtriformati inPostScript.Questiprogrammisonoingradodicrearedeifilechepoipossonoessereutilizzatiin altrisistemichenonhannoinstallatituttiglistrumentidiconversione. Esclusiquestistrumentialineadicomando,esistonoparecchiprogrammigraficidielaborazione testi.Sonodisponibilidiversesuitedaufficiocomplete,moltesonogratuite.Questisvolgonola formattazioneinmodoautomaticoalmomentodell'inviodiunprocessodistampa.Solopercitarne alcuni:OpenOffice.org,Koffice,AbiWord,WordPerfect,ecc... Iseguentisonolinguaggicomuniinuncontestodistampa:

groff:versione GNU delcomando UNIX roff.Sitrattadiunfrontend del sistemagroffdiimpaginazionedeidocumenti.Normalmentelanciailcomando troff e un postprocessore adatto alla periferica selezionata. Permette la generazionedifilePotScript. TeX eilpacchettodimacro LaTeX:unodeipilargamenteusatilinguaggidi marcaturaperisistemiUNIX.Solitamenteavviatocontex,impostailformato deifileerestituisce inuscitalarelativa rappresentazione (indipendentedalle periferiche)deldocumentodicomposizione. LeoperetecnichesonofrequentementescritteancorainLaTeXperchsupporta leformulematematiche,sebbenesianostaticompiutideglisforzidapartedel W3C (il World Wide Web Council) per includere tale funzionalit in altre applicazioni. SGML eXML: sonodegli analizzatori liberi disponibili perUNIX eLinux. XMLSGMLdellaprossimagenerazione,staallabasedelDocBookXML,un sistemadidocumenti(peresempio,questolibroscrittoinXML).

Documentazionesullastampa Lepaginemancontengonodeidatipreformattatiditroffchedevonoessereimpaginati primadifarliusciredallavostrastampante.Lastampasieffettuausandol'opzione-t delcomandoman: 170

IntroduzioneaLinux

man-t comando>comando-man.ps SuccessivamentesistampailfilePostScript.Sestataconfigurataunadestinazione predefinitadistampaperilvostrosistema/account,potetescrivereunicamenteman-t comandoperinviaredirettamentelapaginaformattataallastampante.

8.1.2.2. Anteprima dei file impaginati


Qualsiasicosapossiateinviareallastampante,essapualtrettantoessereinviataalloschermo.In basealformatodelfile,poteteusareunodiquesticomandi:

FilePostScript:gv(GhostView). FileTeX:xdviokdvidiKDE. File PDF: xpdf, kpdf, gpdf o acroread, il visualizzatore Adobe che disponibilegratuitamentemanonsoftwarelibero.IllettoreAdobesupporta PDF1.6,mentreglialtrisololeversionifinoad1.5.LaversionediunfilePDF puesserestabilitaconilcomandofile. Nelleapplicazioni,comeFirefoxoOpenOffice,normalmentepoteteselezionare l'anteprimadiStampadaunodeimenu.

8.2. Il lato server


8.2.1. In generale
Finoadunpaiodiannifa,lasceltapergliutentiLinuxerasemplice:ognunolanciavalostesso vecchioLPD,derivatodalcodicediNet2diBSD.InseguitodivennemoltopopolareLPRng,maal giorno d'oggi molte distribuzioni Linux moderne utilizzano CUPS, il Common UNIX Printing System. CUPS un'implementazione dell'Internet Printing Protocol (IPP), un protocollo simil HTTP standard RFC che rimpiazza il venerando (e difettoso) protocollo LDP. CUPS viene distribuitosottoGNUPublicLicenseedpureilsistemadistampapredefinitoinMacOSX.

8.2.2. Configurazione grafica della stampante


LamaggiorpartedelledistribuzionifornitadiunaGUIperlaconfigurazionedellestampantiin reteelocali(portaparallelaoUSB).Vipermettonodiscegliereiltipodistampantedaunalistae di provarla con facilit. Non dovete preoccuparvi della sintassi e della posizione dei file di configurazione.Controllateladocumentazionedelvostrosistemaprimaditentarel'installazione dellastampante. CUPS pu anche essere configurato usando un'interfaccia web attiva alla porta 631 del vostro computer. Perverificare sequestafunzionalit abilitata,provate aimpostare lanavigazione internetsulocalhost:631/helpolocalhost:631/.

171

IntroduzioneaLinux

8.2.3. L'acquisto di una stampante per Linux


SiccomesemprepiproduttoridistampantimettonoadisposizionedriverperCUPS,quest'ultimo consentirunafacileconnessionediqualsiasistampantecollegabileadunaportaseriale,parallelao USB,oltreaqualsiasistampanteinrete.CUPSvipermetterunarappresentazioneuniformeditutti idiversitipidistampantipervoielevostreapplicazioni. LestampantidotatesolamenteundriverWin9xpotrebberocrearedeiproblemisenonhannoaltro supporto.Incasodidubbiverificatesuhttp://linuxprinting.org/. Inpassatolasceltamigliorepervoiavrebbedovutoessereunastampanteconsupportonativodi PostScriptnelfirmware,dalmomentochequasituttoilsoftwareUNIXeLinuxcheingradodi produrreinuscitadatistampabili,lofainPostscript,illinguaggiod'elezionedell'industriaeditoriale perilcontrollodellestampanti.LestampantiPostScriptsonodisolitounpo'picostosemasono dotate di questo linguaggio di programmazione aperto, indipendente dalle periferiche, e perci sarete sempre certi al100% chefunzioneranno. Tuttaviaainostrigiorni l'importanza diquesta regolaempiricastascemando.

8.3. Problemi di stampa


Inquestasezionetratteremodicichepotetefaredautentiquandoqualcosavanelversosbagliato. Nonvogliamodiscuterequalsiasiproblemachesipuincontrareconlapartedemonedelservizio distampa,dalmomentochesitrattadiuncompitodaamministratoredisistema.

8.3.1. File sbagliato


Sestampateilfilesbagliato,potetecancellareilprocessousandoilcomandolprmIDprocesso, dove IDprocesso nella forma nomestampantenumeroprocessodistampa (ricavabile dalle informazionimostratedalpqolpstat).Cifunzionerquandoaltriprocessisonoinattesadiessere stampatiinquestacodadistampa.Comunquedoveteessereveramenterapidisesietegliuniciad usarequestastampante,dalmomentocheiprocessisononormalmenteimmagazzinatiinspooled inviatiallastampanteinpochisecondi.Unavoltacheessiabbianoraggiuntolastampante,troppo tardiperrimuoverliusandoglistrumentiLinux. Cichepotetetentareinqueicasi,oppureneicasiincuiconfiguratoundriversbagliatoedesce solospazzaturadallavostrastampante,dispegnerelastampante.Tuttaviapotrebbenonessere l'azionemiglioreinquantopotrestecausareinceppamentidellacartaedaltreirregolarit.

8.3.2. La mia stampa non riuscita


Usateilcomandolpqecercatediindividuareilvostroprocesso:
elly:~> lpq Printer: lp@blob Queue: 2 printable jobs Server: pid 29998 active Unspooler: pid 29999 active

172

IntroduzioneaLinux

Status: waiting for subserver to exit Rank Owner/ID Class Job 1 elly@blob+997 A 997 2 elly@blob+22 A 22

at 09:43:20.699 Files Size Time (STDIN) 129 09:42:54 /etc/profile 917 09:43:20

Moltestampantiainostrigiornihannointerfaccewebchesonoingradodimostrareleinformazioni distatobattendol'indirizzoIPnelvostronavigatoreweb: Figura81.Statodellastampanteattraversol'interfacciaweb

L'interfacciawebdiCUPSrispettoall'interfacciawebdellastampante Fate attenzione che questa non l'interfaccia web e funziona solamente con quelle stampantichesupportanotalefunzionalit.Verificateladocumentazionedellavostra stampante. Sel'IDdelvostroprocessononleneppuresullastampante,contattateilvostroamministratoredi sistema.SequestoIDinveceriportatonell'output,controllatechelastampantesiaattualmente attiva:secos,aspettatesoltanto,ilvostroprocessoverreseguitoneitempidovuti. Se la stampante non stampa, verificate che abbia carta, controllate le connessioni fisiche sia all'alimentazioneelettricacheallaretedeidati.Seciaposto,lastampantepotrebbeaverbisogno diessereriavviata.Chiedeteunconsiglioalvostroamministratoredisistema. Nel caso di una stampante di rete, provate a stampare da un altro host. Se la stampante 173

IntroduzioneaLinux

raggiungibiledalvostrohostpersonale(guardateilCapitolo10perilprogrammadiutilitping), potete tentare di mettere il file impaginato su di essa, come file.ps in caso di stampante PostScript, usandounclienteFTP.Secifunziona,lavostrastampanteconfiguratamale. Se invece non funziona, potrebbe essere chelastampante noncomprenda ilformato chele avete inviato. IlsitoGNU/LinuxPrintingcontienepiconsiglietrucchi.

8.4. Sommario
IlservizioLinuxdistampadotatodiuncomplessodistrumentiperlastampabasatisuquelli standardUNIXLPD,chesitrattidiun'implementazioneSystemVoBSD.Sottoc'unelencodei comandirelativiallastampa. Tabella81.Comandinuovinelcapitolo8:Stampa Comando lprolp lpqolpstat acroread groff gv printconf xdvi xpdf *2ps Significato Stampafile Interrogalacodadistampa VisualizzatorePDF Strumentodiimpaginazione VisualizzatorePostScript Configurastampanti VisualizzatoreDVI VisualizzatorePDF ConvertefileinPostScript

lprmocancel Rimuoveprocessidistampa

8.5. Esercizi
Configurare e testare stampanti richiede la disponibilit di una almeno e di avere accesso all'accountdiroot.Secos,poteteprovarea:

installarelastampanteusandolaGUI[InterfacciaGraficaperl'Utente]delvostrosistema; stampareunapaginadiprovausandolaGUI; stampareunapaginadiprovaconilcomandolp; stamparedaun'applicazione,peresempioMozillaoOpenOffice,scegliendoFile>Stampa dalmenu; scollegarelastampantedallareteodalcomputerlocale/serverdistampa.Cosasuccedese provateastamparequalcosa?

174

IntroduzioneaLinux

Glieserciziseguentipossonoesseresvoltisenzastampanteoaccessodiroot.

ProvateacrearefilePostScriptdadifferentifilesorgenti(peresempioHTML,PDF,pagine man).controllateirisultaticonilvisualizzatoregv. Verificatecheildemonedistampastiafunzionando. Stampateifileinqualsiasimaniera.Cosaaccade? CreateunfilePostscriptusandoMozilla.Controllatelocongv. ConvertiteloinformatoPDF.Controllateloconxpdf. ComepotresteavviareunastampadiunfileGIFdallalineadicomando? Usatea2psperstampareilfile/etc/profilesuunfileinuscita.Verificatelodinuovo congv.Cosasuccedesenonspecificateunfileinuscita?

175

IntroduzioneaLinux

Capitolo 9. Tecniche fondamentali di backup


Incidentiprimaopoicapiteranno.Inquestocapitolotratteremodicomeconservarei dati inunluogo sicuro usando altri host, dischetti, CDROM enastri. Discuteremo inoltredeicomandipipopolaridicompressioneearchiviazione. Alterminediquestocapitolosapretecome:

creare,ricercareescompattarearchividifile; gestiredischettiecreareundiscodiavvioperilvostrosistema; scrivereCDROM; effettuarecopiedisicurezzaincrementali; crearearchiviJava; trovare documentazione per utilizzare altre periferiche di backup ed altri programmi; crittografareivostridati.

9.1. Introduzione
SebbeneLinuxsiaunodeipisicurisistemioperativiesistentiepuressendostatoprogettatoper funzionaresempre,idatipossonoandarepersi.Laperditadeidatimoltospessolaconseguenzadi erroridell'utente,maoccasionalmenteundifettodelsistema(comeunguastoelettricoodeldisco) nelacausa,cosicchsempreunabuonaideamantenereunacopiaextradidatisensibilie/o importanti.

9.1.1. Preparazione dei vostri dati


9.1.1.1. Archiviare con tar
Nella maggioranza dei casi prima raccoglieremo tutti i dati da conservare in un unico file d'archivio,chepoicompatteremo.Ilprocessodiarchiviazioneimplicailconcatenamentodituttii fileelencati el'estrazionedituttiglispazinonnecessari.InLinuxdisolitoquestosifaconil comando tar.Inorigine tar erastatocreatoperarchiviaredatisunastro,mapuanchecreare archivi,noticometarball. tarhamolteopzioni,dicuicitiamoquisottolepiimportanti:

-v:dettagliataoverbosa -t:provaotest.Mostrailcontenutodiunatarball -x:estrazionearchivio -c:creazionearchivio -f perifericaarchivio: usa perifericaarchivio come sorgente/destinazionedellatarball.Laperifericapredefinitalaprimaanastro (disolito/dev/st0oqualcosadisimile) -j:filtraattraversobzip2(guardatelaSezione9.1.1.2.).

176

IntroduzioneaLinux

E'comunetrascurareilprefissomeno[]conleopzionidi tar,comepotetevederenegliesempi seguenti. UsateGNUtarperlacompatibilit Gliarchivicreaticonunaversioneproprietariaditarinunsistemapotrebberoessere incompatibilicontardiunaltrosistemaproprietario.Cipotrebbecausaremoltimaldi testa,comequandol'archiviodeveessereripristinatoinunsistemachenonesistepi. Usate la versione GNU di tar in tutti i sistemi per prevenire che il vostro amministratoredisistemascoppiinlacrime.LinuxutilizzasempretardiGNU.Quando lavoratesualtremacchineUNIX,inserite tarhelp perscoprirequaleversionestate usando.ContattateilvostroamministratoredisistemasenonvedetelaparolaGNUda qualcheparte. Nell'esempioseguentevienecreatoespacchettatounarchivio.
gaby:~> ls images/ me+tux.jpg nimf.jpg gaby:~> tar cvf images inadir.tar images/ images/ images/nimf.jpg images/me+tux.jpg gaby:~> cd images gaby:~/images> tar cvf images withoutadir.tar *.jpg me+tux.jpg nimf.jpg gaby:~/images> cd gaby:~> ls */*.tar images/imageswithoutadir.tar gaby:~> ls *.tar imagesinadir.tar gaby:~> tar xvf images inadir.tar images/ images/nimf.jpg images/me+tux.jpg gaby:~> tar tvf images/imageswithoutdir.tar rwrr gaby/gaby 42888 19990630 20:52:25 me+tux.jpg rwrr gaby/gaby 7578 20000126 12:58:46 nimf.jpg gaby:~> tar xvf images/imageswithoutadir.tar me+tux.jpg nimf.jpg gaby:~> ls *.jpg me+tux.jpg nimf.jpg

Questoesempioillustraancheladifferenzatraunadirectoryarchiviatacontareuncomplessodi file archiviati con tar. E' consigliabile comprimere le directory solamente, cosicch i file non sprizzerannoovunquenelmomentodellospacchettamentodellatarball(cosachepotrebbeavvenire in un altro sistema dove non potreste sapere quali file ci siano gi l e quali siano quelli 177

IntroduzioneaLinux

dell'archivio). Quandounaunitanastroconnessaalvostrocomputeredstataconfiguratadall'amministratore disistema,inomideifileterminantiin.tarvengonorimpiazzaticonilnomedellaperifericaa nastro,peresempio: tarcvf/dev/tapemail/ La directory mail e tutti i file che contiene vengono compressi in un file che viene immediatamentescrittosunastro.Unelencodeicontenuticivienemostratoperchabbiamousato l'opzione"verboso".

9.1.1.2. Copie di sicurezza incrementali con tar


Lo strumento tar supporta lacreazione di backupincrementali, usando l'opzioneN. Con tale opzionepotetespecificareunadataetarcontrollerlamarcatemporale(timestamp)dituttiifile specificatirispettoaquestadata.Seifilesonocambiatipirecentementeditaledata,saranno inclusinellacopiadisicurezza.L'esempioseguenteutilizzailtempodicreazionediunprecedente archiviocomevaloredelladata.Perprimacosavienecreatol'archivioinizialeevienemostratala marcatemporaledelfiledibackup.Poivienecreatounnuovofiledicuivogliamofareunnuovo backup,checontengasoloquestonuovofile:
jimmy:~> tar cvpf /var/tmp/javaproggies.tar java/*.java java/btw.java java/error.java java/hello.java java/income2.java java/income.java java/inputdevice.java java/input.java java/master.java java/method1.java java/mood.java java/moodywaitress.java java/test3.java java/TestOne.java java/TestTwo.java java/Vehicle.java jimmy:~> ls l /var/tmp/javaproggies.tar rwrwr 1 jimmy jimmy 10240 Jan 21 11:58 /var/tmp/javaproggies.tar jimmy:~> touch java/newprog.java jimmy:~> tar N /var/tmp/javaproggies.tar \ cvp /var/tmp/incremental1javaproggies.tar java/*.java 2> /dev/null java/newprog.java jimmy:~> cd /var/tmp/ jimmy:~> tar xvf incremental1 javaproggies.tar java/newprog.java

Gli errori standard vengono rediretti verso /dev/null: se non fate ci, tar stamper un messaggioperognifilenonmodificatodicendovichenonsareliminato.

178

IntroduzioneaLinux

Questomododifunzionarehalosvantaggiochesibasasultempodicreazionedeifile:diteche scaricateunarchivionelladirectorycontenentelevostrecopiedisicurezzael'archiviocontienefile chesonostaticreatidueannifa.Quandovienecontrollataladatadicreazionediqueifilerispettoal tempo dicreazionedell'archivioiniziale,inuovifilesembrerannoinrealtvecchia tar enon sarannoinclusiinunbackupincrementalefattousandol'opzione-N. Unasceltamigliorepotrebbeesserel'opzione -g,checreerunelencodifiledaarchiviare.Nel momento della copia di sicurezza incrementale, i file saranno confrontati con questo elenco. Funzionacos:
jimmy:~> tar cvpf work 20030121.tar g snapshot 20030121 work/ work/ work/file1 work/file2 work/file3 jimmy:~> file snapshot 20030121 snapshot20030121: ASCII text

Ilgiornodopol'utente jimmy lavoraancoraunpo'su file3 ecrea file4.Altermine della giornataeffettuaunanuovacopiadisicurezza:


jimmy:~> tar cvpf work20030122.tar g snapshot20030121 work/ work/ work/file3 work/file4

Questisonoalcunisempliciesempi,mapotresteusareanchequestotipodicomandoinunprocesso cron(v.Sezione4.4.4.)cheindicaperesempiounfiledisnapshotperilbackupsettimanaleeuno perquellogiornaliero.Ifiledisnapshotverrannorimpiazzatialmomentodeibackupcompletiintal caso. Maggioriinformazionisipossonotrovarenelladocumentazioneditar. Laverasostanza Come probabilmente potete notare, tar va bene quando stiamo discorrendo di una semplicedirectory,uninsiemedifilechestannoassieme.Comunqueesistonodegli strumentichesonopifacilidagestirequandovoletearchiviareinterepartizioni,dischi oprogettipigrandi.Noiparliamoquisoloditarperchunostrumentomoltodiffuso perdistribuirearchivi.Capiterabbastanzaspessocheavretebisognodiinstallareun softwarechetrovatenellacosiddetta"tarballcompressa".DateunosguardoallaSezione 9.3.perunmodopisemplicedieffettuarecopiedisicurezzaregolari.

9.1.1.3. Compressione e spacchettamento con gzip o bzip2


Idati,compreseletarball,possonoesserecompressiusandoglistrumentizip.Ilcomando gzip aggiungerilsuffisso.gzalnomedelfileerimuoverilfileoriginale.
jimmy:~> ls la | grep tar rwrwr 1 jimmy jimmy 61440 Jun 6 14:08 imageswithoutdir.tar

jimmy:~> gzip imageswithoutdir.tar

179

IntroduzioneaLinux

jimmy:~> ls la images withoutdir.tar.gz rwrwr 1 jimmy jimmy 50562 Jun 6 14:08 imageswithoutdir.tar.gz

Decomprimeteifilegzipconl'opzione-d. bzip2funzionainmodosimile,mausaunavanzatoalgoritmodicompressione,cosicchgenerafile pipiccoli.Guardatelepagineinfodibzip2permaggioridettagli. IpacchettidiSoftwareLinuxvengonospessodistribuitiinunatarballcompressacongzip.Lacosa importantedafaredopoaverspacchettatoquestogenerediarchivitrovareREADMEeleggerlo.In genereconterristruzioniperl'installazionedelpacchetto. IlcomandoGNUtartieneinconsiderazioneifilegzip.Usateilcomando tarzxvf file.tar.gz perscompattareedearchiviareifile.tar.gzo.tgz.Usateinvece tarjxvf file.tar.bz2 perspacchettaregliarchivitarchesonostaticompressiconbzip2.

9.1.1.4. Gli archivi Java


IlprogettoGNUcimetteadisposizionelostrumento jar pergenerarearchiviJava.Sitrattadi un'applicazioneJavachecombinamolteplicifileinunsingolofiled'archivioJAR.Puressendouno strumentodiusogeneraleperl'archiviazioneelacompressione(basatosulformatodicompressione ZIPeZLIB),jarerastatoconcepitoprincipalmenteperl'impacchettamentodicodiceJava,applet e/oapplicazioni,inunsingolofile.IcomponentidiunaapplicazioneJava,combinatiinunsolofile, possonoesserescaricatimoltopirapidamente. Diversamentedatar,jarnormalmentecomprime,indipendentementedaaltristrumenti(inquanto si tratta in sostanza della versione Java di zip). Inoltre permette inserimenti individuali in un archiviochel'autoresigla,inmodocheleoriginipossonoesserecertificate. La sintassi quasi uguale a quella del comando tar. Ci riferiremo a info jar per differenze specifiche. tar,jareicollegamentisimbolici Unafunzionedegnadinota,trascuratanelladocumentazionestandard,chejarseguir icollegamentisimbolici.Idatiacuipuntanoquesticollegamentiverrannoricompresi nell'archivio. Di base in tar si archiviano solo i collegamenti simbolici, ma questo comportamentopuesseremodificatoconl'opzione-h.

9.1.1.5. Trasportare i vostri dati

180

IntroduzioneaLinux

Salvarecopiedeivostridatiinunaltrohostunasemplicemaaccuratamanieraperfare dei backup.GuardateilCapitolo10permaggioriinformazionisuscp,ftpedaltriancora. Nellaprossimasezionetratteremodelleperiferichelocalidibackup.

9.2. Spostare i vostri dati verso un'unit di backup


9.2.1. Copiare su un disco floppy
9.2.1.1. Formattazione del floppy
In molti sistemi Linux gli utenti hanno accesso alla periferica del disco floppy. Il nome della periferica pu variare in base alla dimensione ed al numero di unit floppy: contattate l'amministratoredisistema senonnesietesicuri.Inalcunisistemi cisarmoltofacilmenteun collegamento /dev/floppychepuntaallaperifericacorretta,probabilmente/dev/fd0(unit floppyautorilevata)o/dev/fd0H1440(impostataperfloppyda1,44MB). fdformatlostrumentoperlaformattazioneabassolivellodeidischifloppy.Usacomeopzioneil nomedell'unitdeldiscofloppy.fdformatrestituirunerrorenelcasoincuiilfloppysiaprotetto dascrittura.
emma:~> fdformat /dev/fd0H1440 Doublesided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done emma:~>

Ilcomandomformat(dalpacchettomtools)vieneutilizzatopercrearedischettiDOScompatibili, chepoisipossonousareconmcopy,mdiredaltricomandim. Sonodisponibilianchedeglistrumentigrafici. Figura91.Ilformattatoredifloppy.

Dopocheildischettostatoformattato,possibilemontarlonelfilesystemedutilizzarlocomeuna 181

IntroduzioneaLinux

normale,seppurepiccola,directory,normalmenteattraversol'inserimentodi/dev/floppy. Potresteavernebisogno:installateilprogrammadiutilitmkbootdiskchecreaunfloppydacuiil sistemainusopuessereavviato.

9.2.1.2. Utilizzo di dd per copiare i dati


Il comando dd pu essere impiegato per scrivere dei dati su un disco, oppure per copiarli nuovamentedaquesto,inbasealleforniteunitdiingressoeuscita.Unesempio:
gaby:~> dd if=imageswithoutdir.tar.gz of=/dev/fd0H1440 98+1 records in 98+1 records out gaby~> dd if=/dev/fd0H1440 of=/var/tmp/images.tar.gz 2880+0 records in 2880+0 records out gaby:~> ls /var/tmp/images* /var/tmp/images.tar.gz

Notatecheladuplicazionevieneeseguitasuun'unitnonmontata.Ifloppycreatiusandoquesto metodononsarannomontabilinelfilesystem,maquestonaturalmenteilmodopercrearedischi d'avvioodiripristino.Permaggioriinformazionisullepossibilitdidd,leggetelepagineman. QuestostrumentofapartedelpacchettoGNUcoreutils. Duplicazionedeidischi Ilcomando dd puessereusatoancheperfareunacopiagrezzadiuninterodisco rigido.

9.2.2. Fare una copia con un masterizzatore di CD


InalcunisistemigliutentihannoipermessiperutilizzareilmasterizzatorediCD.Innanzituttoi vostri dati devono essere formattati. Usate il comando mkisofs per fare ci nella directory contenente i file di cui intendete fare una copia di sicurezza. Controllate con df che ci sia abbastanzaspaziodisponibilesuldiscoperchverrcreatounnuovofiledalledimensionicirca delladirectorycorrente:
[rose@blob recordables] df h . Filesystem Size Used Avail Use% Mounted on /dev/hde5 19G 15G 3.2G 82% /home [rose@blob recordables] du h s . 325M . [rose@blob recordables] mkisofs J r o cd.iso . <snap> making a lot of conversions </snap> 98.95% done, estimate finish Fri Apr 5 13:54:25 2002 Total translation table size: 0 Total rockridge attributes bytes: 35971 Total directory bytes: 94208 Path table size(bytes): 452

182

IntroduzioneaLinux

Max brk space used 37e84 166768 extents written (325 Mb)

Leopzioni-Je-rvengonousateperrenderemontabileilCDROMsudifferentisistemi(vedete lepaginemanpermaggioridettagli).Dopodici,ilCDpuesserecreatoutilizzandolostrumento cdrecordconleappropriateopzioni:


[rose@blob recordables] cdrecord dev 0,0,0 speed=8 cd.iso Cdrecord 1.10 (i686pclinuxgnu) (C) 19952001 Joerg Schilling scsidev: '0,0,0' scsibus: 0 target: 0 lun: 0 Linux sg driver version: 3.1.20 Using libscg version 'schily0.5' Device type : Removable CDROM Version :0 Response Format: 1 Vendor_info : 'HP ' Identification : 'CDWriter+ 8100 ' Revision : '1.0g' Device seems to be: Generic mmc CDRW. Using generic SCSI3/mmc CDR driver (mmc_cdr). Driver flags : SWABAUDIO Starting to write CD/DVD at speed 4 in write mode for single session. Last chance to quit, starting real write in 0 seconds. Operation starts.

Ora,asecondadelvostromasterizzatore,aveteiltempoperfumare,mangiareunsalutarepezzodi fruttae/obereuncaff.Alterminedelprocessootterreteunmessaggiodiconferma:
Track 01: Total bytes read/written: 341540864/341540864 (166768 sectors).

Cisonoalcunistrumentigraficiadisposizioneperrenderel'operazionepisemplice.Unotrai maggiormentediffusixcdroast,chedisponibileliberamentesulsitowebdiXCDROASTed inclusonellamaggiorpartedeisistemienelladirectoryGNU.SiaKDEcheGnomesonodotatidi programmipermasterizzareivostriCDpersonali.

9.2.3. Copie di sicurezza su/da unit jazz, periferiche USB e simili


Queste periferiche vengono comunemente montate nel file system. Dopo la procedura di montaggio,sonoaccessibilicomenormalidirectory,cosicchpoteteusareicomandistandardper manipolareifile. Nell'esempioseguentedelleimmaginivengonocopiatedaunafotocameraUSBadundiscorigido:
robin:~> mount /mnt/camera robin:~> mount | grep camera /dev/sda1 on /mnt/camera type vfat (rw,nosuid,nodev)

Selafotocameral'unicaperifericadimemorizzazioneUSBcheavetecollegatoalvostrosistema, questosicuro.MateneteinmentechealleperifericheUSBvengonoassegnatedellevociin/dev quando si connettonoalsistema.CosseprimacollegatealvostrosistemaunamemoriaUSB, questa sar inserita come /dev/sda, e se poi collegate dopo di questa una fotocamera, 183

IntroduzioneaLinux

quest'ultimasarassegnataa /dev/sdb (ammessochenonabbiatedischiSCSI,chesarebbero anch'essi su /dev/sd*). Nei sistemi pi recenti, a partire dal kernel 2.6, un sistema di collegamento a caldo chiamato HAL (Hardware Abstraction Layer) assicura che gli utenti non debbanotrafficareconquestocompitooneroso.Sevoleteverificaredovesitrovilavostraperiferica, battetedmesgdopoaverlaattaccata. Orapotetecopiareifile:
robin:~> cp R /mnt/camera/* images/ robin:~> umount /mnt/camera

Nellostessomodounaunitjazzpuesseremontatasu/mnt/jazz. Dovrebberoessereaggiuntelelineeappropriatein/etc/modules.confe/etc/fstab per farfunzionareci.RiportateviaglispecificiHOWTOdeglihardwarepermaggioriinformazioni.Su sistemi con un kernel 2.6.x o superiore, potreste anche dover controllare le pagine man di modprobeemodprobe.conf.

9.2.4. Copie di sicurezza con una periferica a nastro


Questa operazione va fatta con tar (v. sopra). Lo strumento mt utilizzato per controllare la perifericaanastromagnetico,come/dev/st0.Interilibrisonostatiscrittisulbackupanastro, nonostante ci, fate riferimento al nostro elenco di lettura in Appendice B per maggiori informazioni.Tenenteinmentecheidatabasepotrebberoaverbisognodialtriproceduredibackup acausadelleloroarchitetture. Icomandigiustiperlecopiedisicurezzavengononormalmenteinseritiinunadelledirectorycron allo scopo di mandarli in esecuzione con regolarit. In ambiti maggiori la suite liberamente disponibileAmandaounasoluzionecommercialepossonoessereintrodottepereffettuarebackup sumoltemacchine.Comunquel'usodeinastriuncompitodaamministratoredisistemacheva oltreloscopodiquestodocumento.

9.2.5. Strumenti dalla vostra distribuzione


LamaggioranzadelledistribuzioniLinuxoffreipropristrumentiperrendervisemplicelavita. Unabrevepanoramica:

Suse:oraYastcomprendecopiedisicurezzaesteseemodulidiripristino. RedHat: lo strumento File Roller fornisce una gestione visuale degli archivi (compressi). Sembra che siano in favore dello strumento XCDRoast per spostarelecopiedisicurezzasuundispositivoesterno. Mandrake:XCDRoast. LamaggioranzadelledistribuzionigiungefornitadeiprogrammidiutilitBSD dump e restore per effettuare dei backup dei file system ext2 e ext3. Tale strumentopuscrivereinunavarietdidispositivie,letteralmente,duplicail(i) filesystembitperbitsullaperifericaindicata.Come dd,questopermettedi

184

IntroduzioneaLinux

crearecopiedisicurezzaditipispecialidifilecomequelliin/dev.

9.3. Uso di rsync


9.3.1. Introduzione
Ilprogrammarsyncunostrumentorapidoeflessibileperilbackupremoto.E'comuneneisistemi UNIXesimilUNIX,faciledaconfigurareedausarenegliscript.Sebbenela r inrsync stiaper "remoto",nondoveteprenderetuttociallalettera.Ilvostrodispositivo"remoto"potrebbeessere solounaperifericaUSBdimassaoun'altrapartizionedelvostrodiscorigido:nondoveteperforza avereduemacchineseparate.

9.3.2. Un esempio: rsync su una periferica USB di massa


CometrattatonellaSezione3.1.2.3.,dobbiamoperprimacosamontarelaperiferica.Ciandrebbe fatto,possibilmente,inqualitdiroot:
root@theserver# mkdir /mnt/usbstore root@theserver# mount t vfat /dev/sda1 /mnt/usbstore

Facilitd'uso Moltissimedistribuzioniconcedonoagliutentinonprivilegiatil'accessoalleperiferiche removibiliemontanoidispositiviUSB,CDROMedaltriinmodoautomatico. Notatechequestaistruzionerichiedel'installazionedelsupportoUSBnelvostrosistema.Guardate USB Guide per un aiuto se questo non funziona. Verificate con dmesg che /dev/sda1 sia naturalmentelaperifericadamontare. Dopopoteteavviarel'attualebackup,peresempio,delladirectory/home/karl:
karl@theserver:~> rsync avz /home/karl /mnt/usbstore

Comeilsolito,fateriferimentoallepaginemanpermaggioriinformazioni.

9.4. Crittografia
9.4.1. Note generali
9.4.1.1. Perch dovreste crittografare i dati?
Lacrittografiasinonimodisegretezza.Nelcontestodellecopiedisicurezzalacrittografiapu esseremoltoutile,peresempioseavetenecessitdilasciareivostridatisalvatiinunpostoincui nonpotetecontrollaregliaccessi,comeilserverdelvostroprovider. Aparteci,lacrittografiapuessereadottatapureconlapostaelettronica:normalmentequesta 185

IntroduzioneaLinux

noncriptataespessovieneinviataalloscopertosullareteosuInternet.Seilvostromessaggio contienedelleinformazionisensibili,alloramegliocrittografarlo.

9.4.1.2. GNU Privacy Guard


NeisistemiLinuxpotretetrovareGnuPG,GnuPrivacyGuard,cheuncomplessodiprogrammi compatibiliconglistrumentiPGP(PrettyGoodPrivacy),chesonodisponibilicommercialmente. In questa guida tratteremo soltanto dell'uso pi elementare degli strumenti di crittografia e mostreremocidicuiavretebisognopergenerareunachiavedicodificaeperusarladavoistessi nella crittografia dei dati (che poi potrete conservare tranquillamente in un luogo pubblico). Indicazioniperunusomaggiormenteavanzatopossonoessererintracciatenellepaginemandeivari comandi.

9.4.2. La generazione di una chiave


Primadicominciareacriptareivostridati,dovetecreareunpaiodichiavi.Lacoppiaconsistein una chiave privata edinunapubblica. Potete inviare lachiave pubblica ai corrispondenti, che possonousarlapercriptareidatiavoidesinati,chedecriptereteconlavostrachiaveprivata.Tenete semprelachiave,noncondividetelaconqualunquealtro,oessisarannoingradodidecriptareidati destinatisoloavoi.Esclusivamenteperesserecertichenonaccadanoincidenti,lachiaveprivata protettadaunapassword.Lacoppiadichiavivienecreatausandoquestocomando:
willy@ubuntu:~$ gpg --key-gen gpg (GnuPG) 1.4.2.2; Copyright (C) This program comes with ABSOLUTELY This is free software, and you are under certain conditions. See the 2005 Free Software Foundation, Inc. NO WARRANTY. welcome to redistribute it file COPYING for details.

gpg: directory `/home/willy.gnupg' created gpg: new configuration file `/home/willy/.gnupg/gpg.conf' created gpg: WARNING: options in `/home/willy/.gnupg/gpg.conf' are not yet active during this run gpg: keyring `/home/willy/.gnupg/secring.gpg' created gpg: keyring `/home/willy/.gnupg/pubring.gpg' created Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? 1 DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n month <n>y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Willy De Wandel

186

IntroduzioneaLinux

Email address: wdw@mvg.vl Comment: Willem You selected this USER-ID: "Willy De Wandel (Willem) <wdw@mvg.vl>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. Passphrase:

Ora inserite lavostra password. Questa puessere unafrase, lapilunga, lamigliore: l'unica condizionechedovrestericordarlaognivolta.Perverificadoveteinserirelastessafraseun'altra volta. Oravienegeneratalacoppiadichiavidaunprogrammacheproducenumericasualieche,fragli altrifattori,vienealimentatodaidatidell'attivitdelsistema.Cosicchunabuonaideaavviareora alcuniprogrammi,muovereilcursoredelmouseobatterealcunicaratteriacasoinunafinestradi terminale.Inquestomodosarannomoltopigrandilepossibilitdicreareunnumerochecontenga moltecifredifferentielachiavesarmoltodifficiledaindividuare.

9.4.3. A proposito della vostra chiave


Dopo che stata creata la vostra chiave, riceverete u messaggio circa l'impronta digitale (fingerprint).Sitrattadiunasequenzadiquarantanumeriesadecimali,coslungadaesseremolto, moltodifficilegenerarneunasecondaugualesuqualsiasicomputer.Poteteesserepiuttostosicuri chequestasiaunasequenzaunica.Laformaabbreviatadiquestachiaveconsistenelvostronome seguitodagliultimi8numeriesadecimali. Poteteottenereinformazionisullavostrachiavenelmodoseguente:
willy@ubuntu:~$ gpg --list-keys /home/willy/.gnupg/pubring.gpg -----------------------------pub 1024D/BF5C3DBB 2006-08-08 uid Willy De Wandel (Willem) <wdw@mvg.vl> sub 4096g/A3449CF7 2006-08-08

L'IDdichiave (keyID)perquestachiave"BF5C3DBB".PoteteinviareivostriIDdichiavee nomeadunserverdichiavi(keyserver),cosicchaltrepersonepossanoaverequesteinformazioni sudivoieleusinopercriptareidatiavoidiretti.Inalternativa,potresteinviarelavostrachiave pubblicadirettamenteaisoggettichenehannobisogno.Lapartepubblicadellachiaveunalunga seriedunumerichepotetevedereusandol'opzione-exportconilcomandogpg: gpg-export -a Comunque,perquantoriguardaquestaguida,supponiamocheabbiatebisognodellachiavesoloper codificareedecodificaredatipervoistessi.Leggetelepaginemandipgpsevoletesapernedipi.

9.4.4. Crittografia dei dati


Orapotetecriptareunarchivio.tarocompresso,primadisalvarlosuunsupportodisalvataggio 187

IntroduzioneaLinux

oditrasportarlosulserverdibackup.Usateilcomandogpgcomequidiseguito: gpg-e -r (parte di) uidarchivio L'opzione-ediceagpgdicriptare,l'opzione-rindicaperchisicripta.Teneteinmentechesoloi nomiutentecheseguonotaleopzionersarannoingradodidecodificarenuovamenteidati.Un esempio:


willy@ubuntu:~$ gpg -e -r Willy /var/tmp/home-willy-20060808.tar

9.4.5. Decodifica dei file


Utilizzando l'opzione -d, potete decriptare i file che sono stati codificati per voi. I dati vi scorrerannosulloschermo,marimarrunacopiacriptatasudisco.Cosperifilediversidaquellidi semplicetesto,dovretesalvareidatidecodificatiperpoterlivedereconilprogrammaappropriato. Cidieffettuaricorrendoall'opzione-oconilcomandogpg:
willy@ubuntu:~$ gpg -d -o /var/tmp/home-willy-decrypt.tar /var/tmp/home-willy20060808.tar.gpg You need a passphrase to unlock the secret key for user: "Willy De Wandel (Willem) <wdw@mvg.vl>" 4096 ELG-E key, ID A3449CF7, created 2006-08-08 (main key ID BF5C3DBB) gpg: encrypted with 4096-bit ELG-E key, ID A3449CF7, created 2006-08-08 "Willy De Wandel (Willem) <wdw@mvg.vl>"

Nientepassword=nientedati Seviscordatelapassword,idatisonopersi.Neppurel'amministratoredisistemasar capacedidecrittareidati.Eccoperchtalvoltaunacopiadellechiaviimportantiviene conservatainunacassettadisicurezzadiunabanca.

9.5. Sommario
Quic'unelencodeicomandiriguardantiilbackupdeifile: Tabella91.Nuovicomandinelcapitolo9:Lacopiadisicurezza Comando bzip2 cdrecord dd fdformat gpg gzip Significato Uncompressoredifileaordinamentoablocchi RegistraCompactDiskaudioodatidaunoriginale Converteecopiaunfile Formattaabassolivellodiundischettofloppy Codificaedecodificaidati. Comprimeoespandefile

188

IntroduzioneaLinux

Comando mcopy mdir mformat mkbootdisk mount rsync tar umount MostraunadirectoryMSDOS

Significato CopiafileMSDOSverso/daUNIX AggiungeunfilesystemMSDOSadundischettofloppyformattatoa bassolivello Creaundischettodiavvioindipendenteperfargirareilsistema Monta un file system (integratelo con il file system corrente connettendoloinunpuntodimontaggio) Sincronizzaledirectory Programma di utilit per l'archiviazione su nastro, usato anche per crearearchivisudiscoinvecechesunastro Smontaifilesystem

9.6. Esercizi

Fate una copia della vostra directory personale verso /var/tmp usando il comandotar.Successivamentecomprimeteilfileusandogzipobzip2:fateloin modo che ne risulti un corretto file archiviato con tar, uno che non crei confusioneunavoltascompattato. Formattateunfloppyemettetealcunifiledellavostradirectorypersonalesudi esso.Scambiateifloppyconunaltrostudenteeripristinateilsuofloppynella vostradirectorypersonale FormattateilfloppyinDOS.Usateglimtoolspermettereecancellarefilesudi esso. Cosasuccedeadundischettononformattatoquandolovoletemontarenelfile system? SeaveteunamemoriaUSB,provatearegistrarcidentrounfile. Usando rsync, fateunacopiadellavostradirectorypersonaleinunaltrofile systemlocaleoremoto. Quandosilascianofileinunserverdirete,megliocriptarli.Createunarchivio tarnellavostradirectorypersonaleecriptatelo.

189

IntroduzioneaLinux

Capitolo 10. Le reti


Quandosiparladireti,Linuxilvostrosistemaoperativod'elezione,nonsoloperch leretisonostrettamenteintegratenelS.O.stessoesonodisponibiliun'ampiavarietdi strumentiedapplicazioniliberi,maancheperlarobustezzasottocarichipesantiche puessereraggiuntasolodopoannididebugeproveinunprogettoOpenSource. SonostatiscrittiscaffalidilibripienidiinformazionisuLinuxelereti,mainquesto capitoloproveremoafornireunapanoramica.Dopoaverlocompletato,sapretedipisu

iprotocollidiretesupportati ifilediconfigurazionedellarete icomandiperconfigurareeprovarelarete idemonieiprogrammiclienticheabilitanodifferentiapplicazionidirete lacondivisioneelastampadifile l'esecuzioneremotadicomandieapplicazioni l'interconnessionebasedirete l'esecuzionesicuradiapplicazioneremote ifirewallel'individuazionedelleintrusioni

10.1. Panoramica sulle reti


10.1.1. Il modello OSI
Unprotocollo,persemplificare,uninsiemediregoleperlecomunicazioni. Perinviaredatiinunarete,peresempiounaletteraelettronicadalvostrocomputeraduncomputer all'altraestremitdelmondo,moltihardwareesoftwaredifferentidevonolavorareinsieme. Tutti queste parti di hardware e programmi software differenti parlano linguaggi diversi. Immaginateilvostroprogrammadipostaelettronica:ingradodialogareconilsistemaoperativo delcomputerattraversounospecificoprotocollomanoncapacediparlareconl'hardware del computer.Ciserveunospecialeprogrammanelsistemaoperativochesvolgatalecompito.Asua voltailcomputerdeveessereingradodicomunicare conlalineatelefonicaodaltrimetodidi collegamento Internet. E, dietro le quinte, l'hardware di collegamento alla rete deve poter colloquiarepertrasmettereilvostromessaggiodaunapparecchioall'altropertuttoilpercorsosino alcomputerdidestinazione. Tuttiquestitipidifferentidiprotocollidicomunicazionesonoclassificatiin7livelli,noticome Open Systems Interconnections Reference Model, in breve Modello OSI. Per una facile comprensione,talemodellovieneridottoadunadescrizionediprotocolloa4livelli,comedescritto nellatabellaseguente: Tabella101.IlModelloOSIsemplificato 190

IntroduzioneaLinux

Nomedellivello Livelloapplicazioni Livelloditrasporto Livellodirete Livellodiaccessoallarete

Protocollidellivello HTTP,DNS,SMTP,POP,... TCP,UDP IP,IPv6 PPP,PPPoE,Ethernet

Ciascunlivellopuutilizzarelefunzionalitdellivelloinferiore;ognilivellopusoloesportarele funzionalit al livello superiore. In altre parole: i livelli comunicano solo con quelli adiacenti. Riprendiamol'esempiodelmessaggiodipostaelettronica:loinviatepermezzodellivellodelle applicazioni.Nelvostrocomputerscendeattraversoilivelliditrasportoerete.Ilvostrocomputer lo pone in rete tramite illivello dell'accesso inrete. Questo anche illivello che trasferir il messaggiointornoalmondo.Giuntoadestinazione,ilcomputerriceventeaccetterilmessaggio attraversoilpropriolivellodireteelomostreraldestinatarioutilizzandoilivelliditrasportoe delleapplicazioni. E'veramentemoltopicomplicato Le precedenti esuccessivesezionisonoricomprese perchprestootardiverrete in contattoconalcuniterminidireti;essevifornirannoalcunipuntidipartenza.Dovreste cercareidettagli.

10.1.2. Alcuni popolari protocolli di rete


Linuxsupportamoltiprotocollidifferentidirete.Elenchiamosoloquellipiimportanti:

10.1.2.1. TCP/IP
Il Transport Control Protocol e l'Internet Protocol sono due dei modi pi popolari di comunicazionesuInternet.Molteapplicazioni,comeivostriprogrammidinavigazioneediposta elettronica,sonocostruitisopraquestocomplessodiprotocolli. Dettomoltosemplicemente,IPfornisceunasoluzioneperinviarepacchettidiinformazionidauna macchinaadun'altra,mentreTCPassicuracheipacchettisianodispostiinflussi,inmodoche pacchettidadiverseapplicazioninonvenganomescolatiechesianoinviatiericevutinell'ordine corretto. UnbuonpuntodipartenzaperimpararedipisuTCPeIPsonoiseguentidocumenti:

man7 ip:descrivel'implementazionesuLinuxdelprotocolloIPv4(essendoattualmente laversione4lapidiffusaedizionedelprotocolloIP). man7 tcp:implementazionedelprotocolloTCP RFC793,RFC1122,RFC2001perTCP,eRFC791,RFC1122eRFC1112perIP IdocumentiRequestForCommentcontengonoledescrizionideglistandard,deiprotocolli, delle applicazioni e delle implementazioni di rete. Questi documenti sono gestiti dalla Internet Engineering Task Force, una comunit internazionale che si occupa del 191

IntroduzioneaLinux

funzionamentodiInternetsenzaintoppi,dell'evoluzioneedellosviluppodell'architetturadi Internet. IlvostroISPhanormalmenteadisposizioneunarchiviodiRFC,oppurepotetenavigaretra gliRFCviahttp://www.ietf.org/rfc.html.

10.1.2.2. TCP/IPv6
NessunosiaspettavacheInternetcrescessecosinfrettacomehafatto.IPhadimostratodiavere alcuni svantaggi quando in rete presente un numero molto grande di computer, essendo di notevoleimportanzaladisponibilitdiindirizziunicidaassegnareadognimacchinaconnessa.Cos IPversione6statocongegnatopersoddisfarelenecessitdell'odiernaInternet. SfortunatamentenontutteleapplicazionieiservizisupportanoancoraIPv6.Attualmenteincorso una migrazione in molti ambienti che possono trarre beneficio dall'aggiornamento a IPv6. Per alcuneapplicazioniilvecchioprotocolloancorainuso,mentrelanuovaversionegiattivaper applicazionichesonostateaggiornate.Cosicch,quandoverificatelavostraconfigurazionedirete, possibilechequalchevoltasialeggermenteconfusadalmomentochetuttiigeneridimisure possonoesserestateadottatepernascondereunprotocollodall'altroaffinchiduenonconfondano lecomunicazioni. Maggioriinformazionisipossonotrovareneidocumentiseguenti:

man7 ipv6:l'implementazionedelprotocolloIPv6inLinux; RFC1883descriveilprotocolloIPv6.

10.1.2.3. PPP, SLIP, PLIP, PPPOE


IlkerneldiLinuxhailsupportointegratoperPPP(PointtoPointProtocol),SLIP(SerialLineIP), PLIP(ParallelLineIP)ePPPOverEthernet.PPPilmodopidiffusoconcuigliutentiindividuali accedonoalloroISP(InternetServiceProvider),sebbeneinareedensamentepopolatesiaspesso sostituito da PPPOE, PPP over Ethernet, il protocollo utilizzato nelle connessioni ADSL (AsymmetricDigitalSubscriberLine). La maggioranza delle distribuzioni Linux fornisce strumenti di facile uso per impostare una connessioneInternet.L'unicacosadicuiavetesostanzialmentebisognounnomeutenteeduna passwordperconnettervialvostroInternetServiceProvider(ISP)eunnumerotelefonicoincasodi PPP. Questi dati vengono inseriti nello strumento grafico di configurazione, che assai probabilmentevipermetteranchediavviareedinterromperelaconnessioneconilprovider.

10.1.2.4. ISDN
IlkerneldiLinuxhailsupportointegratoISDN.Isdn4linuxcontrollaleschedeISDNperPCepu emulareunmodemconl'insiemedeicomandiHayes(comandi"AT").Lepossibilitspazianodal sempliceusodiunprogrammaditerminaleadunacompletaconnessioneaInternet. Verificatelavostradocumentazionedisistema.

192

IntroduzioneaLinux

10.1.2.5. AppleTalk
AppleTalkilnomedellostackdiinterconnessionediApple.Consenteuntipodiretepeertopeer cheforniscefunzionalitdibasecomelacondivisionedifileestampanti.Ciascunamacchinapu contemporaneamenteagireinqualitdiclienteediserveredilsoftwareel'hardwaresonocompresi inognicomputerApple. LinuxfornisceconnessionicompleteaAppleTalk.Netatalkunaimplementazionealivellokernel dellaSuitediProtocolloAppleTalk,inoriginepersistemiBSDderivati.Comprendeilsupportoper l'instradamentoAppleTalk,funzionidiserverperfilesystemUNIXeAFSusandoAppleShare,di serverperstampantiUNIXediaccessoallestampantiAppleTalk.

10.1.2.6. SMB/NMB
PercompatibilitcongliambientiMSWindows,lasuiteSamba,comprendenteilsupportoperi protocolliNMBeSMB,puessereinstallatainqualsiasisistemasimilUNIX.IlprotocolloServer MessageBlock(chiamatoancheSessionMessageBlock,NetBIOSoprotocolloLanManager)viene usatoinMSWindows3.11,NT,95/98,2KeXPpercondividerefileestampanti. LefunzionibasedellasuiteSambasono:condivisionedeidriveLinuxconlemacchineWindows, accesso alle condivisioni SMB da macchine Linux, condivisione delle stampanti Linux con le macchineWindowseviceversa. LamaggioranzadelledistribuzioniLinuxfornisceunpacchetto samba checreagranpartedelle impostazioni del server e avvia smbd, il server Samba, e nmbd, il server netbios dei nomi, solitamentealmomentodell'avvio.Sambapuessereconfiguratoinmodalitgrafica,attraverso un'interfacciaweboattraversolalineadicomandoeifilediconfigurazionetestuale.Idemoni fannoinmodocheunamacchinaLinuxappaiacomeunhostMSWindowsinunafinestraMS WindowsMyNetworkPlaces/NetworkNeighbourhood;unacondivisionedaunamacchinaLinux sarindistinguibiledaunadiunqualsiasialtrohostinambienteMSWindows. Maggioriinformazionisipossonotrovareneipostiseguenti:

mansmb.conf:descriveilformatodelprincipalefilediconfigurazionediSamba. SambaProjectDocumentation (overificateilvostromirrorlocaledisamba.org)contiene unaguidadifacileletturasull'installazioneelaprova,chespiegapurecomeconfigurareil vostroserverSambacomePrimaryDomainController.Quisonoancheadisposizionetutte lepagineman.

10.1.2.7. Miscellanea di protocolli


Linuxhaancheilsupportoperleretiradioamatoriali eWANX25, Frame Relay,ATM),perle connessioniall'infrarossoedaltresenzafili,madalmomentochequestiprotocollinormalmente richiedonohardwarespeciale,nonlitratteremoinquestodocumento.

193

IntroduzioneaLinux

10.2. Configurazioni ed informazioni di rete


10.2.1. Configurazione delle interfacce di rete
Tutte le grosse distribuzioni Linux di facile utilizzo sono dotate di vari strumenti grafici che consentono l'impostazione semplice del computer in una rete locale, la sua connessione ad un InternetServiceProviderol'accessowireless(senzafili,viaradio).Questistrumentipossonoessere avviatidallalineadicomandoodaunmenu:

LaconfigurazionevieneeseguitaselezionandoSystem+Administration>Networking. RedHatvieneconredhatconfignetwork,chehaun'interfacciainmodalitsiagraficache testuale. YASToYAST2diSuSEsonostrumentidiconfigurazionegenerale. Mandrake/MandrivaarrivadotatadiunassistentediconfigurazionedireteeInternet,che preferibileavviaredalCentrodiControlloMandrake. InsistemiGnome:gnomenetworkpreferences. InsistemiKDE:knetworkconf.

La vostra documentazione di sistema fornisce consigli e informazioni in abbondanza circa la disponibilitel'utilizzodistrumenti. Leinformazionichedovretefornire:

perlaconnessioneadunaretelocale,peresempioconivostricomputerdomestici,oal lavoro: nome host, nome di dominio e indirizzo IP. Se volete impostare la vostra rete personale, prima meglio leggere qualcosa in pi. Al lavoro questa informazione probabilmentevieneassegnataalvostrocomputerautomaticamentealmomentodell'avvio. Incasodidubbi,megliononspecificarealcunainformazionesenonquellenecessarie; perlaconnessioneadInternet:nomeutenteepasswordperilvostroISP,numeroditelefono quandosiutilizzaunmodem.NormalmenteilvostroISPviattribuisceautomaticamenteun indirizzoIPetuttiglialtridatinecessarialfunzionamentodellevostreapplicazioniInternet.

10.2.2. I file di configurazione di rete


Glistrumentigraficidiaiutomodificanounospecificoinsiemedeifilediconfigurazionedirete utilizzando una coppia di comandi di base. I nomi esatti dei file di configurazione e la loro posizione nel file system dipendono largamente dalla vostra distribuzione eversione diLinux. Comunque,unacoppiadifilediconfigurazionesonocomuniintuttiisistemiUNIX:

10.2.2.1. /etc/hosts
Ilfile/etc/hostscontienesemprel'indirizzoIPlocalhost,127.0.0.1,chevieneutilizzatoperla comunicazionetraiprocessi.Noncancellatemaiquestalinea!.Qualchevoltacontienegliindirizzi dihostaggiuntivichepossonoessereraggiuntisenzautilizzareunservizioesternodinamingcome ilDNS(DomainNameServer).

194

IntroduzioneaLinux

Unsemplicefilehostsdiesempioperunapiccolaretedomestica:
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.52.10 tux.mylan.com tux 192.168.52.11 winxp.mylan.com winxp

Leggetedipiinmanhosts.

10.2.2.2. /etc/resolv.conf
Ilfile /etc/resolv.conf configural'accessoadunserverDNS(v. Sezione10.3.7.).Questo filecontieneilvostronomedidominioedilnomedel(dei)serverdacontattare:
search mylan.com nameserver 193.134.20.4

Leggeteulteriormentenellapaginamandiresolv.conf.

10.2.2.3. /etc/nsswitch.conf
Ilfile /etc/nsswitch.conf definiscel'ordineconcuicontattarevariservizideinomi.Per l'usodiInternet,importantechednsappaianellalinea"hosts":
[bob@tux ~] grep hosts /etc/nsswitch.conf hosts: files dns

Questo istruisce ilvostrocomputer acercare inomideglihostegliindirizzi IPprimanelfile /etc/hostsepoiacontattareilserverDNSseuncertohostnoncomparenelfilelocalehosts. AltripossibiliservizideinomidacontattaresonoLDAP,NISeNIS+. Dipiinmannsswitch.conf.

10.2.3. I comandi di configurazione delle reti


10.2.3.1. Il comando ip
Gliscriptspecificidelledistribuzionieglistrumentigraficisonointerfacceaip(oifconfigeroute insistemipivecchi)perimpostarelaconfigurazionediretedelkernel. Il comando ip viene utilizzato per assegnare indirizzi IP alle interfacce, per impostare gli instradamentiversoInterneteversoaltrereti,permostrareleconfigurazioniTCP/IP,ecc... Iseguenticomandimostranol'indirizzoIPeleinformazionidell'instradamento:
benny@home benny> ip addr show 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo inet6 ::1/128 scope host 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:50:bf:7e:54:9a brd ff:ff:ff:ff:ff:ff

195

IntroduzioneaLinux

inet 192.168.42.15/24 brd 192.168.42.255 scope global eth0 inet6 fe80::250:bfff:fe7e:549a/10 scope link benny@home benny> ip route show 192.168.42.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default via 192.168.42.1 dev eth0

Cosedanotare:

Dueinterfaccedirete,ancheinunsistemachehaun'unicaschedadirete:loil local loopusatoperlecomunicazioniinterne;eth0unnomecomunediunaverainterfaccia. Noncambiatemailaconfigurazionedellocalloop,incasocontrariolavostramacchina incomincerafunzionaremale!Leinterfaccesenzafilivengonoabitualmentedefinitecome wlan0;leinterfaccemodemcomeppp0,mapotrebberopureessercialtrinomi. GliindirizziIPsegnaticoninet:illocalloophasempre127.0.0.1,l'interfacciafisicapu averequalsiasialtracombinazione. L'indirizzohardwaredellavostrainterfaccia,chepotrebbeessererichiestocomepartedella proceduradiautenticazioneperlaconnessioneadunnetwork,vieneindicatoconether.Il localloophaseipaiadituttizeri,illoopfisicohaseicoppiedicaratteriesadecimalidicuii primitresonospecificidelproduttore.

10.2.3.2. Il comando ifconfig


Mentre ip il modo pi moderno per configurare un sistema Linux, ifconfig ancora molto diffuso.Usatelisenzaopzionipermostrareleinformazionidell'interfacciadirete:
els@asus:~$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:50:70:31:2C:14 inet addr:60.138.67.31 Bcast:66.255.255.255 Mask:255.255.255.192 inet6 addr: fe80::250:70ff:fe31:2c14/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31977764 errors:0 dropped:0 overruns:0 frame:0 TX packets:51896866 errors:0 dropped:0 overruns:0 carrier:0 collisions:802207 txqueuelen:1000 RX bytes:2806974916 (2.6 GiB) TX bytes:2874632613 (2.6 GiB) Interrupt:11 Base address:0xec00 lo inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:765762 errors:0 dropped:0 overruns:0 frame:0 TX packets:765762 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:624214573 (595.2 MiB) TX bytes:624214573 (595.2 MiB)

Purequinotiamogliaspettipirilevantidellaconfigurazionedell'interfaccia:

L'indirizzoIPindicatoconinetaddr. L'indirizzohardwaresegueiltagHwaddr.

Sia ifconfig che ip mostrano informazioni pi dettagliate sulla configurazione e numerosi dati statisticicircaciascunainterfacciae,potrebbeesseremaggiormenteimportante,sequest'ultima UPeRUNNING.

196

IntroduzioneaLinux

10.2.3.3. I comandi PCMCIA


Nel vostro portatile, che normalmente collegate alla rete aziendale utilizzando la connessione Ethernet integrata, ma che ora dovete configurare per una connessione telefonica a casa o in albergo, potresteaverbisognodiattivarelaschedaPCMCIA.Cisieffettuatramitel'utilitdi controllocardctloconpccardctlnellenuovedistribuzioni. Unesempiodell'uso: cardctlinsert Oralaschedapuessereconfigurata,siaconl'interfacciagraficacheconquellaalineadicomando. Primadiestrarrelaschedausatequestocomando: cardctleject Comunque unabuona distribuzione dovrebbe fornire ilsupporto PCMCIA conglistrumenti di configurazionedellarete,evitandoagliutentididovereseguiremanualmenteicomandiPCMCIA.

10.2.3.4. Maggiori informazioni


Dibattereulteriormentesullaconfigurazionediretealdifuoridelloscopodiquestodocumento. La vostra fonte primaria di informazioni extra sono le pagine man per i servizi che volete impostare.Lettureaddizionali: ModemHOWTO :aiutanellascelta,connessione,configurazione,risoluzionedeiproblemi ecomprensionedeimodemanalogiciperiPC. IndiceLDPHOWTO,sezione4.4 :elencodiHOWTOsuddivisoincategoriecircaleretiin generale,iprotocolli,ledialup,ilDNS,leVPN,ilbridging,l'instradamento,lasicurezzaed altroancora. Moltisistemihannounaversionedifile ip-cref (trovateloutilizzandoilcomando locate):il formatoPSdiquestofilevisibile,peresempio,congv.

10.2.4. Nomi delle interfacce di rete


InunamacchinaLinuxilnomediperiferica lo o localloop collegatoconl'indirizzointerno 127.0.0.1. Se non presente tale periferica, il computer passer un brutto momento nel far funzionarelevostreapplicazioni:infattisemprepresente,ancheincomputernoncollegatiinrete. Laprimaperifericaethernet,eth0nelcasodiunatradizionaleschedadiinterfacciadiretepuntaal vostroindirizzolocaleLANIP.Lenormalimacchineclientihannosoltantoun'unicaschedadirete. Irouter,collegandoleretitradiloro,hannounaperifericadireteperciascunareteservita. SeusateunmodemperconnetterviadInternet,lavostraperifericadireteprobabilmenteverr chiamatappp0. Esistonomoltialtrinomi,peresempioperleinterfacceVirtualPrivateNetwork(VPNoreteprivata virtuale),enumeroseinterfaccepossonoessereattivecontemporaneamente,cosicchl'outputdei 197

IntroduzioneaLinux

comandi ifconfig o ip potrebbe divenire piuttosto esteso quando non vengono utilizzate delle opzioni.Anchemoltepliciinterfaccedellostessogenerepossonoessereattive.Intalcasovengono numerateinsequenza:laprimaavrilnumero0,lasecondaunsuffisso1,laterza2,ecosvia. Questoilcasodimoltiserverdiapplicazioni,dimacchinedotatediconfigurazionefailover,di router,firewallemolteancora.

10.2.5. La configurazione del vostro host


Aprescinderedalcomandoipchemostralaconfigurazionedirete,c'ilcomunecomandonetstat chehamolteopzioniedgeneralmenteutileinqualsiasisistemaUNIX. Leinformazionidiinstradamentopossonoesseremostrateconl'opzione-nrdelcomandonetstat:
bob:~> netstat nr Kernel IP routing table Destination Gateway 192.168.42.0 0.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 192.168.42.1

Genmask 255.255.255.0 255.0.0.0 0.0.0.0

Flags MSS Window irtt Iface U 40 0 0 eth0 U 40 0 0 lo UG 40 0 0 eth0

QuestaunatipicamacchinaclienteinunareteIP:hasoloun'interfacciadirete,eth0.L'interfaccia loillocalloop. Lamanieramoderna Lamanieraattualeperottenerequesteinformazionidalvostrosistemadiricorrereal comandoip: iproute show Quandotalemacchinatenterdicontattareunhostchesitrovainunaretediversadallasua,indicata dallalineainiziantecon0.0.0.0,essainvierlerichiestediconnessioneallamacchina(router)con indirizzoIP192.168.42.1edutilizzerlapropriainterfacciaprimariaeth0perfareci. Gli host che si trovano sulla stessa rete (la linea iniziante con 192.168.42.0) verranno altres contattatiattraversol'interfacciadireteprimaria,manonsarnecessariounrouter:idatisaranno immessisemplicementeinrete. Lemacchinepossonoaveretabellediinstradamentopicomplicatediquesta,conmoltecoppiedi DestinazioneGatewayperconnettersiadiversereti.Sevicapital'occasionedicollegarviadun serverdiapplicazioni(peresempioallavoro),piuttostoeducativoverificareleinformazionidi instradamento.

10.2.6. Altri host


Un impressionante numero distrumenti mirato allagestione dellereti edall'amministrazione remotadimacchineLinux.IlvostromirrorlocaledisoftwareLinuxveneoffririnabbondanzadi questi.Ciporterebbetroppolontanotrattarliinquestodocumento,cosfateriferimentoperfavore alladocumentazionespecificadelprogramma. 198

IntroduzioneaLinux

ParleremoinquestasezionesoltantodialcunicomunistrumentitestualidiUNIX/Linux.

10.2.6.1. Il comando host


Permostrareleinformazionisuglihostoidomini,usateilcomandohost:
[emmy@pc10 emmy]$ host www.eunet.be www.eunet.be. has address 193.74.208.177 [emmy@pc10 emmy]$ host t any eunet.be eunet.be. SOA dns.eunet.be. hostmaster.Belgium.EU.net. 2002021300 28800 7200 604800 86400 eunet.be. mail is handled by 50 pophost.eunet.be. eunet.be. name server ns.EU.net. eunet.be. name server dns.eunet.be.

Similiinformazionipossonoesserevisualizzateusandoilcomandodig,chednozioniaggiuntive sucomeirecordvengonoregistratinelserverdeinomi.

10.2.6.2. Il comando ping


Percontrollareseunhostattivoutilizzateping.Seilvostrosistemaconfiguratoperinviarepi diunpacchetto,interrompetepingconlacombinazioneditastiCtrl+C:
[emmy@pc10 emmy]$ ping a.host.be PING a.host.be (1.2.8.3) from 80.20.84.26: 56(84) bytes of data. 64 bytes from a.host.be(1.2.8.3):icmp_seq=0 ttl=244 time=99.977msec a.host.be ping statistics 1 packets transmitted, 1 packets received, 0% packet loss roundtrip min/avg/max/mdev = 99.977/99.977/99.977/0.000 ms

10.2.6.3. Il comando traceroute


Percontrollareilpercorsoseguitodaipacchettiversounhostdirete,usateilcomandotraceroute:
[emmy@pc10 emmy]$ /usr/sbin/traceroute www.eunet.be traceroute to www.eunet.be(193.74.208.177),30 hops max,38b packets 1 blob (10.0.0.1) 0.297ms 0.257ms 0.174ms 2 adsl65.myprovider.be (217.136.111.1) 12.120ms 13.058ms 13.009ms 3 194.78.255.177 (194.78.255.177) 13.845ms 14.308ms 12.756ms 4 gigabitethernet22.intl2.gam.brussels.skynet.be (195.238.2.226) 13.123ms 13.164ms 12.527ms 5 pecbru2.car.belbone.be (194.78.255.118) 16.336ms 13.889ms 13.028ms 6 ser21110iasbevilar01.kpnbelgium.be (194.119.224.9) 14.602ms 15.546ms 15.959ms 7 unknown195207939.eunet.be (195.207.93.49) 16.514ms 17.661ms 18.889ms 8 S010.Leuven.Belgium.EU.net (195.207.129.1) 22.714ms 19.193ms 18.432ms 9 dukat.Belgium.EU.net (193.74.208.178) 22.758ms * 25.263ms

Inalcunisistemitraceroutestatorinominatotracepath.

10.2.6.4. Il comando whois


199

IntroduzioneaLinux

Sipossono richiedere specifiche informazioni sulnomedeldominiousandoilcomando whois, comevienespiegatodamoltiserverwhois,comequellochesegue:


[emmy@pc10 emmy]$ whois cnn.com [whois.crsnic.net] Whois Server Version 1.3 $<snap server message> Domain Name: CNN.COM Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: http://www.networksolutions.com Name Server: TWDNS01.NS.AOL.COM Name Server: TWDNS02.NS.AOL.COM Name Server: TWDNS03.NS.AOL.COM Name Server: TWDNS04.NS.AOL.COM Updated Date: 12mar2002 >>> Last update of whois database: Fri, 5 Apr 2002 05:04:55 EST <<< The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and Registrars. [whois.networksolutions.com] $<snap server message> Registrant: Turner Broadcasting (CNNDOM) 1 CNN Center Atlanta, GA 30303 Domain Name: CNN.COM Administrative Contact: $<snap contactinfo> Technical Contact: $<snap contactinfo> Billing Contact: $<snap contactinfo> Record last updated on 12Mar2002. Record expires on 23Sep2009. Record created on 22Sep1993. Database last updated on 4Apr2002 20:10:00 EST. Domain servers in listed order: TWDNS01.NS.AOL.COM TWDNS02.NS.AOL.COM TWDNS03.NS.AOL.COM TWDNS04.NS.AOL.COM 149.174.213.151 152.163.239.216 205.188.146.88 64.12.147.120

Peraltrinomididominialdifuoridi.com,.net,.orge.edu,potresteaverbisognodispecificareil serverdiwhois,comeinquestocasoperidomini.be: whoisdomain.be@whois.dns.be

10.3. Applicazioni Internet/Intranet


IlsistemaLinuxunagrandepiattaformaperoffrireservizidirete.Inquestasezioneproveremoad offrireunapanoramicadeiserveredelleapplicazionidiretepicomuni. 200

IntroduzioneaLinux

10.3.1. Tipi di server


10.3.1.1.Server indipendente
L'offertadiunservizioagliutentipuessereaffrontatainduemodi:undemoneoserviziopu girareinmodoindipendenteopudipenderedaunaltroserviziodaattivare. Iservizidiretechevengonousatipesantementee/oincontinuazione,giranonormalmenteinmodo indipendente: sono dei programmi demoni indipendenti che stanno sempre in attivit. Molto facilmente vengono fatti partire al momento dell'avvio del sistema ed attendono richieste su specificipuntioportediconnessionecheessisonostatiimpostatiadascoltare.Quandogiungeuna richiesta, questa viene elaborata e l'ascolto continua fino alla successiva. Un server web un esempiotipico:voletechesiadisponibile24orealgiornoe,setroppooccupato,dovrebbecreare ulterioriistanzediascoltoinmododaservireutentisimultanei.Altriesempisonoigrossiarchividi softwarecomeSourceforgeoilvostromirrorTucowschedevonogestiremigliaiadirichiesteFTP algiorno. Unesempiodiserviziodireteindipendentenelvostrocomputercasalingopotrebbeesserenamed (namedaemon),unserverdeinomiconcache.Iserviziindipendentihannoiloroprocessiattivi, chevoipotetecontrollareognivoltausandops:
bob:~> ps auxw | grep named named 908 0.0 1.0 14876 5108 ? S Mar14 0:07 named u named

ComunqueesistonoalcuniservizichepoteteusarenelvostroPCanchesenonc'unprocesso serverattivoperessi.EsempipossonoessereilservizioFTP,ilserviziodicopiasicuraoquellodi finger;TaliservizihannoilDemoneInternet(inetd)inascoltoalloroposto.

10.3.1.2. (x)inetd
DisolitonelvostroPCdomesticolefaccendesonounpo'pitranquille.Poteteavereunapiccola rete,peresempio,edeifiledatrasferiredaunPCadunaltroditantointantousandoFTPoSamba (per il collegamento amacchine MS Windows). Intali casi avviare tutti iservizi dicuiavete bisognosolosaltuariamenteetenerlituttoiltempoinfunzione,sarebbeunosprecodirisorse.Cos nelleconfigurazioniminoriscopriretecheidemoninecessaridipendonodaunprogrammacentrale cheascoltasututteleportedeiservizidicuiresponsabile. Questo superserver, il demone dei servizi Internet, viene avviato durante l'inizializzazione del sistema.Esistonoduediffuseimplementazioni:inetdexinetd(extendedInternetservicesdaemon). L'unool'altrogiranodisolitoinognisistemaLinux:
bob:~> ps ef | grep inet root 926 1 0 Mar14 ? 00:00:00 xinetdipv6 stayalive reuse \ pidfile /var/run/xinetd.pid

I servizi di cui responsabile il demone Internet sono elencati nel suo file di configurazione /etc/inetd.conf per inetd enella directory /etc/xinetd.d per xinetd.Di consueto i 201

IntroduzioneaLinux

servizigestiticomprendonolacondivisionedeifileeiquellidistampa,SSH,FTP,telnet,ildemone diconfigurazioneSamba,iservizidelparlatoedegliorari. Nonappenavienericevutaunarichiestadiconnessione,ilservercentraleavvierun'istanzadel serverdesiderato.Inquestomodo,nell'esempioseguente,quandol'utente bob avviaunasessione FTPnell'hostlocale,parteundemoneFTPnonappenalasessioneattiva:


bob:~> ps auxw | grep ftp bob 793 0.1 0.2 3960 1076 pts/6 S 16:44 0:00 ncftp localhost ftp 794 0.7 0.5 5588 2608 ? SN 16:44 0:00 ftpd: localhost.localdomain: anonymous/bob@his.server.com: IDLE

Naturalmente succede la stessa cosa quando aprite delle connessioni verso host remoti: o un demonerispondedirettamente,oppureun(x)inetdremotoavviailserviziocheviserveeloferma quandoavetefinito.

10.3.2. La posta
10.3.2.1. I server
SendmaililprogrammaserverstandarddipostaoMailTransportAgentperlepiattaformeUNIX. E'robusto,scalabilee,seconfiguratoadeguatamenteperl'hardwarecorretto,gestiscemigliaiadi utentisenzabattereciglio.MaggioriinformazionisucomeconfigurareSendmailsonoinclusenei pacchetti sendmail e sendmailcf: potreste leggere i file README e README.cf in /usr/share/doc/sendmail.Sonoutilianchemansendmailemanaliases. Qmailunaltroserverdipostachestaguadagnandoinpopolaritperchsivantadiesserepi sicurodiSendmail.MentreSendmailunprogrammamonolitico,Qmailformatodapartipi piccolediprogrammainteragenti,chepossonoessereresimaggiormentesicuri.Postfixunaltro serverdipostadicrescentepopolarit. Questiservergestisconomailinglist,filtri,scansioni antivirus emoltoaltroancora. Programmi liberiocommercialidiscansioneantivirussonodisponibiliperl'usoconLinux.Esempidisoftware permailinglistsonoMailman,Listserv,MajordomoeEZmlm.Guardatelepaginewebdelvostro scanner antivirus preferito per informazioni sul supporto dei clienti e server Linux. Amavis e Spamassassinsonoimplementazioniliberedivirusscannerespamscanner.

10.3.2.2. Server remoti di posta


I protocolli pi diffusi per accedere alla posta in remoto sono POP3 e IMAP4. IMAP e POP permettonoentrambioperazioninoninlinea,accessoremotoallapostainarrivoesiappoggianosu unserverSMTPperinviarelaposta. MentrePOPunprotocollosemplice,faciledaimplementareesupportatodaquasituttiiclientidi posta,IMAPpreferibileinquanto:

pumanipolareiflagpersistentidellostatodeimessaggi; pusiaconservarealmeglioimessaggidipostacoscomeridistribuirli;

202

IntroduzioneaLinux

puutilizzareegestirecaselledipostamultiple; supportaaggiornamenticoncorrentiecasellepostalicondivise; pureutilizzabileperaccedereaimessaggidiUseneteadaltridocumenti; IMAPfunzionasiaonlinecheoffline; ottimizzatoperleprestazioneonline,soprattuttoneicollegamentiavelocit estremamentebassa.

10.3.2.3. Mail user-agent


Esistonoclientidipostaelettronica,siatestualichegrafici,inabbondanza:viciteremoilnomedi alcunitraipidiffusi.Sceglieteilvostropreferito. IlcomandoUNIXmailstatoincircolazionepermoltianni,ancheprimacheesistesserolereti.E' unasempliceinterfacciapermandaremessaggiepiccolifileadaltriutenti,chepupoisalvareil messaggio,redirigerlo,replicareadessoecosvia. Mentresolitamentenonpiusatocomecliente,ilprogrammamailancorautile,adesempio,per inviareaqualcunoidatiinuscitadiunprogramma: mail<future.employer@whereIwant2work.com> < cv.txt Illettoredipostaelmunmiglioramentomoltopiraffinatodimail,ecosanche pine(PineIs NotElm).Illettoredipostamuttancorapirecenteeoffrefunzioniqualiilthreading. Per quegli utenti che preferiscono un'interfaccia grafica per la propria posta (e un gomito da tennistaounbracciodamouse),esistonocentinaiadipossibilit.Ipipopolaritrainuoviutenti sono Mozilla Mail/Thnderbird, che ha delle facili opzioni di configurazione antispam, ed Evolution,ilclonediMSOutlook.KmailpopolaretragliutentiKDE. Figura101.Evolution,illettoredipostaenews

203

IntroduzioneaLinux

Sonodisponibilianchedecinediapplicazionidipostaweb,comeSquirrelmail,Yahoo!mail,gmail diGoogleeHotmail. UnapanoramicasitrovainLinuxMailUserHOWTO. MoltedistribuzioniLinuxincludono fetchmail,unprogrammadiutilitperlaricercael'inoltro dellaposta.Ritiralapostadaserverremotidiposta(POP,IMAPedalcunialtri)elainoltraal vostrosistemalocalediconsegna.Allorapotetegestirelapostaricevutaattraversonormaliclienti diposta.Puessereavviatoinmodalitdemoneperinterrogareripetutamenteunoopisistemiad intervalli specifici. Informazioni ed esempi di impiego sono rintracciabili sulle pagine Info: la directory/usr/share/doc/fetchmail[-<versione>]contieneunelencocompletodelle caratteristicheeunaFAQperiprincipianti. Il filtro di procmail si pu usare per filtrare la posta in entrata, per creare mailing list, per preprocessare laposta,perinoltrareselettivamentelapostaedaltroancora.L'unitoprogramma formail,fralealtrecose,abilitaallagenerazionedirisposteautomaticheelasuddivisioneincaselle postali. Procmail sitrova ormai daanninellemacchine UNIX eLinuxedunsistema molto robusto, progettato per funzionare anche nelle circostanze peggiori. Maggiori informazioni si possonotrovarenelladirectory/usr/share/doc/procmail[-<versione>]enellepagine man. Unanotasull'EtichettadellaPostaElettronica Alcunepersoneoggigiornosembranoritenerecheunmessaggiodipostaelettronicanon debbaesseretroppoformale.Cidipende,naturalmente.Sescriveteaqualcunochenon conoscete,megliomantenereunpo'ledistanze,propriocomefaresteinunalettera tradizionale.Enondimenticate:lepersonechenonconoscetepotrebberoesseremaschi ofemmine...

10.3.3. Il web
10.3.3.1. Il server web Apache
Apachedigranlungailpidiffusoserverweb,impiegatoinoltrelametdituttiiserverwebdi Internet. La maggioranza delle distribuzioni Linux includono Apache. I pregi di Apache comprendono il suo design modulare, il supporto SSL, stabilit e velocit. Con gliappropriati hardwareeconfigurazionipusostenereicarichipigrossi. NeisistemiLinuxlaconfigurazionedelserversieseguesolitamentenelladirectory/etc/httpd. Ilprincipalefilediconfigurazionehttpd.conf:notevolmenteautoesplicante.Sedovesteaver bisognodiaiuto,lopotrestetrovarenellapaginamandihttpdnelsitowebdiApache.

10.3.3.2. Navigatori del Web


PerlapiattaformaLinuxesisteuncertonumerodinavigatoriweb,siagratuitichecommerciali. Cos come Netscape Navigator stato a lungo l'unica scelta decente per il passato, ora Mozilla/Firefoxoffreunacompetitivaalternativachegirasottomoltialtrisistemioperativi,come MSWindowsedancheMacOSX. 204

IntroduzioneaLinux

Amaya ilnavigatore diW3C. Opera unnavigatore commerciale, compatto erapido. Molti gestorididesktopoffronofunzionidinavigazionewebneilorogestoridifile,comenautilus. Fraidiffusinavigatoribasatisultestocisonolynkelinks.Potresteaverenecessitdiinstallaredei serverproxynellavostrashellimpostandolevariabiligiuste.Inavigatoritestualisonovelocie maneggevoliquandonondisponibileunambientegrafico,comequandosiusanonegliscript.

10.3.3.3. I server proxy


10.3.3.3.1. Cos' un server proxy? Lesocieteleorganizzazionispessoesigonocheipropriutentiutilizzinounserver.Specialmente inambienticonmoltiutenti,unserverproxypurenderepirapidigliscaricamentidellepagine web. Il server proxy conserva le pagine web. Quando unutente richiama una pagina web gi richiestaprecedentemente,ilserverproxygliforniscelapaginaimmediatamente,cosicchnonha necessit di ottenerla tramite Internet, cosa che richiederebbe pi tempo. Naturalmente essere adottatedellemisureinmodocheilserverproxyeseguaunrapidocontrolloeforniscasemprela versionepirecentedellapagina.Inalcuniambitil'usodelserverproxyobbligatorio,inaltri potetedecidereseusarloomeno. 10.3.3.3.2. La configurazione del proxy Seaveteilnomeelaportadelserverproxy,sarebbepiuttostoovviodaretaleinformazione al vostro navigatore. Tuttavia, molte applicazioni (a linea di comando) dipendono dalle variabili http_proxy e ftp_proxy perilcorrettofunzionamento.Pervostracomoditpotrestevoler aggiungerealvostro~/.bashrcunalineacomequellachesegue:
exporthttp_proxy=http://username:password@proxy_server_name:port_number

Peresempio:

exporthttp_proxy=http://willy:Appelsi3ntj3@proxy:80

Senonviservedareunnomeutenteeunapassword,escludetesemplicementeognicosaprimadel segno@compreso.

10.3.4. File Transfer Protocol


10.3.4.1. I server FTP
InunsistemaLinuxunserverFTPvienenormalmenteavviatodaxinetdusandoilserverWUftpd, sebbeneilserverFTPpossaessereconfiguratocomeserverindipendenteinsistemicontraffico FTPpesante.Guardategliesercizi. IserverFTPcomprendono,traglialtri,vsftpd,NcftpdeProftpd. Lamaggior parte delledistribuzioni Linuxcontengono ilpacchetto anonftp,chepredispone un alberodiserverFTPanonimoedirelativifilediconfigurazione. 205

IntroduzioneaLinux

10.3.4.2. I clienti FTP


La maggioranza delle distribuzioni Linux comprendono ncftp, una versione migliorata del comando UNIX ftp,che potreste conoscere anche attraverso la linea dicomando Windows. Il programmancftpoffrefunzionalitextra,comeunapibellaecomprensibileinterfacciautente,il completamentodeinomideifile,lefunzionidiaggiunta(append)eripresa(resume),isegnalibri,la gestionedellasessioneedaltroancora:
thomas:~> ncftp blob NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com). Connecting to blob... blob.some.net FTP server (Version wu2.6.120) ready. Logging in... Guest login ok, access restrictions apply. Logged in to blob. ncftp / > help Commands may be abbreviated. 'help showall' shows hidden and unsupported commands. 'help <command>' gives a brief description of <command>. ascii bgget bgput bgstart binary bookmark bookmarks ncftp / > cat cd chmod close debug dir get help jobs lcd lchmod lls lmkdir lookup lpage lpwd lrename lrm lrmdir ls mkdir open page pdir pls put pwd quit quote rename rhelp rm rmdir set show site type umask version

Aiutieccellenticonmoltiesempisipossonotrovarenellepagineman.E,dinuovo,disponibileun certonumerodiapplicazioniGUI. FTPnonsicuro! NonusateilFileTransferProtocolperaccessinonanonimiamenochenonsappiate cosa state facendo. I vostri nomi utente e password potrebbero essere captati da malevoli utenti compagni di rete! Usate invece FTP sicuro: il programma sftp compresonellasuiteSecureSHell(guardatelaSezione10.4.4.).

10.3.5. Chat e conferenze


Variclientiesistemisonoadisposizioneinognidistribuzioneinsostituzionedellachatvecchio stileIRC,basatasultesto.Unbreveedincompletoelencodeipidiffusiprogrammi:

gaim: cliente multiprotocollo di messaggistica istantanea per Linux, Windows e Mac, compatibileconMSNMessenger,ICQ,IRCemoltialtriancora:guardatelepagineInfooil sitodiGaimpermaggioriinformazioni. xchat:clienteIRCperilsistemaXwindow: Figura102.XChat

206

IntroduzioneaLinux

LapaginainizialesuSourceforge. aMSN:clonediMSN. Konversation,kopete,KVIrcemoltialtristrumentiKdallasuiteKDE. gnomemeeting:programmadivideoconferenzaperUNIX(oraEkiga). jabber:piattaforma opensource dimessaggistica istantanea compatibileconICQ,AIM, Yahoo,MSN,IRC,SMTPemoltialtriancora. psi:clientejabber,guardatelapaginainizialediPSIJabberClient. skype:programma pereffettuare chiamate instile telefonico tramite Internet verso altri utentiSkype(guardatehttp://www.skype.compermaggioriinformazioni).Skypegratuito manonaperto. Gizmo: un telefono gratuito (ma non aperto) per il vostro computer (guardate http://www.gizmoproject.com).

10.3.6. Servizi per notizie


L'avviodiunserverUsenetimplicamolteproveeunaregolazionefine,percifateriferimentoalla paginainizialeINNpermaggioriinformazioni. Esisteunacoppiadiinteressantinewsgroupnellagerarchia comp.*,chepuessereraggiuntacon svariaticlientiinmodalittestoegrafica.Molticlientidipostasupportanobenelanavigazionenei newsgroup: controllate ilvostroprogramma ocercate nel vostro mirror disoftware asorgente apertodeiclientitestualitipotin,slrnnemutt,oppurescaricateMozillaounodeglialtrinumerosi clientiinmodalitgrafica. Deja.commantieneunarchivioconricercadituttiinewsgroup,motorizzatodaGoogle.Questo unostrumentoestremamentepotenteperricevereaiuto:sonomoltoalteleprobabilitchequalcuno 207

IntroduzioneaLinux

abbiagiavutoivostriproblemi,abbiatrovatounasoluzione,poipostatainunodeinewsgroup.

10.3.7. Il Domain Name System


TuttequesteapplicazioninecessitanodeiserviziDNSperfarcorrisponderegliindirizziIPainomi deglihosteviceversa.UnserverDNSnonconoscetuttigliindirizziIPdelmondo,macollegato in rete con altri server DNS che pu interrogare per trovare un indirizzo sconosciuto. La maggioranza dei sistemi UNIX possono far girare named, che fa parte del pacchetto BIND (Berkeley Internet Name Domain) distribuito da Internet Software Consortium. Pu funzionare comeserverdeinomiindipendenteconmemorizzazione,cosachefannospessoisistemiLinuxper accelerarel'accessoinrete. Ilvostroprincipalefilediconfigurazione /etc/resolv.conf,chestabiliscel'ordineincui vengonocontattatiiDomainNameServer:
search somewhere.org nameserver 192.168.42.1 nameserver 193.74.208.137

Maggiori informazioni si possono trovare nelle pagine Info su named, nei file /usr/share/doc/bind[-<versione>] enellapaginainizialedel progettoBind.Il DNS HOWTOtrattadell'usodiBINDcomeDNSserver.

10.3.8. DHCP
DHCP il Dynamic Host Configuration Protocol che sta gradualmente rimpiazzando il buon vecchiobootpnegliambitipigrandi.Vieneusatopercontrollareparametrivitalidiretequaligli indirizziIPeiserverdeinomideglihost.DHCPcompatibilearitrosoconbootp.Perconfigurare ilserveravretebisognodileggerel'HOWTO. LemacchineclientiDHCPnormalmentesarannoconfigurateusandounaGUIcheimpostadhcpd, ildemone clienteDHCP. Verificateladocumentazione delvostrosistemaseavete necessit di configurareilcomputercomeclienteDHCP.

10.3.9. Servizi di autenticazione


10.3.9.1. La tradizione
Per tradizione gli utenti vengono autenticati localmente usando le informazioni conservate in /etc/passwde/etc/shadowinognisistema.Maanchequandosiusaunserviziodireteper l'autenticazione,ifilelocalisarannosemprepresentiperconfiguraregliaccountdisistemaaduso amministrativo,comel'accountdiroot,gliaccountdeidemoniespessoquelliperprogrammie scopiaddizionali. Questifilespessosonoicandidatiprincipaliperessereesaminatidaglihacker,perciaccertatevi cheipermessieleappartenenzesianorigidamenteimpostateinmodoopportuno: 208

IntroduzioneaLinux

bob:~> ls l /etc/passwd /etc/shadow rwrr 1 root root 1803 Mar 10 13:08 /etc/passwd r 1 root root 1116 Mar 10 13:08 /etc/shadow

10.3.9.2. PAM
LinuxpuusarePAM,PluggableAuthenticationModule,unmetodoflessibileperl'autenticazione inUNIX.VantaggidiPAM:

Un comune schema di autenticazione che pu essere utilizzato da un'ampia variet di applicazioni. PAM pu essere implementato con varie applicazioni senza la necessit di dover ricompilarlepersupportarePAMspecificamente. Grandiflessibilitecontrollosull'autenticazioneperl'amministratoreelosviluppatoredi applicazioni. Glisviluppatoridiapplicazioninondevonosviluppareiloroprogrammiperutilizzareuno specificoschemadiautenticazione,mentrepossonoconcentrarsisolosuidettaglideiloro programmi.

Ladirectory/etc/pam.dcontieneifilediconfigurazionediPAM(disolito/etc/pam.conf). Ogniapplicazioneoserviziohailsuofile.Ciascunalineanelfilehaquattroelementi:

Modulo: auth: fornisce la vera autenticazione (forse richiedendo e verificando una password) ed imposta le credenziali, come l'appartenenza ad un gruppo o i permessidiKerberos. account: verifica per essere sicuri che l'accesso sia consentito all'utente (l'account nonscaduto, l'utente hailpermesso dicollegarsi aquell'ora del giorno,ecosvia). password:usatoperimpostarelepassword. session: utilizzato dopo che unutente stato autenticato. Questo modulo svolge compiti aggiuntivi che sono necessari a consentire l'accesso (per esempio, il montaggio della directory personale dell'utente o la messa a disposizionedellasuacaselladiposta). L'ordineincuiimoduliincuisonoeseguiti,dalmomentochenevengonousatimolti, piuttostoimportante.

Flagdicontrollo:diconoaPAM qualiazioniintraprendere incasodiaccessonegato o consentito. I valori possono essere required, requisite, sufficient o optional. Percorsodelmodulo:percorsodelmoduloinseribilechedeveessereusato,solitamentein /lib/security. Argomenti:informazioniperimoduli. 209

IntroduzioneaLinux

IfiledelleshadowpasswordvengonoindividuatiautomaticamentedaPAM. Maggiori informazioni sipossono trovare nelle pagine man di pam onella pagina iniziale del progettoLinuxPAM.

10.3.9.3. LDAP
Il Lightweight Directory Access Protocol un sistema clienteserver per accedere a servizi di directory globali o locali in una rete. In Linux si usa l'implementazione OpenLDAP. Essa comprendeslapd,unserverindipendente,slurpd,unserverindipendentedireplicaLDAP,librerie cheimplementanoilprotocolloLDAPeunaseriediprogrammidiutilit,strumentieclientidi esempio. Ilmaggiorbeneficionell'usodiLDAPilconsolidamentodicertitipidiinformazioniall'interno della vostra organizzazione. Per esempio tutti i differenti elenchi di utenti nella vostra organizzazione possono essere fusi inuna sola directory LDAP. Questa directory pu ricevere richieste da qualsiasi applicazione abilitata a LDAP che abbia bisogno di tale informazione. Possonoaccedereadessaancheutentichehannobisognodelleinformazionidellastessa. AltribeneficidiLDAPoX.500Litecomprendonolasuafacilitdiinstallazione(rispettoaX.500) e la sua Interfaccia di Programmazione delle Applicazioni (API o Application Programming Interface), che significa che il numero delle applicazioni e dei gateway con LDAP dovrebbe aumentareinfuturo. Per quanto riguarda gli aspetti negativi, se volete usare LDAP, avete bisogno di applicazioni abilitate a LDAP oppure la capacit di utilizzare gateway LDAP. Mentre l'impiego di LDAP dovrebbe solo aumentare, attualmente non esistono molte applicazioni abilitate disponibili per Linux.Inoltre,mentreLDAPsupportaqualchecontrollodegliaccessi,nonpossiedetuttequelle caratteristichedisicurezzadiX.500. Dal momento che LDAP un protocollo aperto e configurabile, pu essere impiegato per conservare ognitipodiinformazione relativa adunastrutturaorganizzativa particolare. Esempi comuni sono i lookup degli indirizzi di posta, l'autenticazione accentrata in combinazione con PAM,glielenchitelefonicieidatabasediconfigurazionedellemacchine. Guardateleinformazionispecifichedelvostrosistemaelepaginemanperirelativicomandicome ldapmodifyeldapsearchperidettagli.MaggioriinformazionisipossonotrovareinLDAPLinux HOWTO, che tratta dell'installazione, della configurazione, del funzionamento e della manutenzionediunserverLDAPinLinux. LDAPImplementationHOWTO descrivegliaspetti tecnicidellaconservazionedeidatidiapplicazioniinunserverLDAPsottoLinux.L'autricedi questotesto"IntroduzioneaLinux" hapurescritto LDAPOperationsHOWTO,cheillustragli elementi basilari che ognuno dovrebbe conoscere quando ha a che fare con la gestione, le operazioniel'integrazionedeiservizidiLDAP.

210

IntroduzioneaLinux

10.4. Esecuzione remota di applicazioni.


10.4.1. Introduzione
Cisonoduemodidifferentipereseguirecomandioperavviareprogrammiinunamacchinaremota edotteneredeidatiinuscita,testualiografici,mandatiallevostreworkstation.Leconnessioni possono essere sicure omeno. Sebbene naturalmente siaconsigliabile usare connessioni sicure invecediinviareinretelavostrapasswordnoncriptata,parleremodialcuneapplicazionipratiche deisistemipivecchi(insicuri)dalmomentochesonoancorautiliinunmodernoambientedirete, come,adesempio,perl'individuazionedeiproblemioperilfunzionamentodiesoticiprogrammi.

10.4.2. Rsh, rlogin e telnet


Icomandi rlogin e rsh perlaconnessioneel'esecuzionedicomandiinremotosonoderivatida UNIX.Quantunqueraramenteusatiperchpalesementeinsicuri,essivengonoancoraforniticon quasitutteledistribuzioniLinuxpercompatibilitall'indietroconiprogrammiUNIX. D'altrocantotelnetvienetuttoracomunementeutilizzato,spessodaamministratoridisistemiedi rete.Telnetunodeipipotentistrumentiperl'accessodaremotoaifileeperl'amministrazione remota, consentendo connessioni da ovunque su Internet. Combinandolo con un server X le applicazionigrafichedaremotopossonoesseremostratelocalmente.Nonesistedifferenzatrail lavorosumacchinelocaliel'usodimacchineremote. Poichl'interocollegamentononcriptato,permettereconnessionicontelnetimplical'assunzione dinotevolirischiperlasicurezza.Perlanormaleesecuzioneremotadiprogrammiconsigliato SecureSHellossh.Parleremodelmetodosicuropiavantiinquestasezione. Comunquetelnetvieneancorautilizzatoinmolticasi.Quidiseguitocisonoalcuniesempiincui unserverdipostaeunserverwebvengonoprovatiperlerisposte: controllodelfunzionamentodiunserverdiposta:
[jimmy@blob ~] telnet mailserver 25 Trying 192.168.42.1... Connected to mailserver. Escape character is '^]'. 220 m1.some.net ESMTP Sendmail 8.11.6/8.11.6; 200302281626 ehlo some.net 250m1.some.net Hello blob.some.net [10.0.0.1], pleased to meet you 250ENHANCEDSTATUSCODES 2508BITMIME 250SIZE 250DSN 250ONEX 250ETRN 250XUSR 250 HELP mail from: jimmy@some.net 250 2.1.0 jimmy@some.net... Sender ok rcpt to: davy@some.net 250 2.1.5 davy@some.net... Recipient ok

211

IntroduzioneaLinux

data 354 Enter mail, end with "." on a line by itself test . 250 2.0.0 g2MA1R619237 Message accepted for delivery quit 221 2.0.0 m1.some.net closing connection Connection closed by foreign host.

controllocheunserverwebrispondaadelementaririchieste:
[jimmy@blob ~] telnet www.some.net 80 Trying 64.39.151.23... Connected to www.some.net. Escape character is '^]'. HEAD / ;HTTP/1.1 HTTP/1.1 200 OK Date: Fri, 22 Mar 2002 10:05:14 GMT Server: Apache/1.3.22 (UNIX) (RedHat/Linux) mod_ssl/2.8.5 OpenSSL/0.9.6 DAV/1.0.2 PHP/4.0.6 mod_perl/1.24_01 LastModified: Fri, 04 Jan 2002 08:21:00 GMT ETag: "70061683c3565ec" AcceptRanges: bytes ContentLength: 104 Connection: close ContentType: text/html Connection closed by foreign host. [jimmy@blob ~]

Ci perfettamente sicuro perch non dovete dare mai unnome utente e/o una password per ottenereidativoluti,cosicchnessunopuintercettarequelleimportantiinformazionidallarete.

10.4.3. Il sistema X Window


10.4.3.1. Funzioni di X
ComeabbiamogispiegatonelCapitolo7(v.Sezione7.3.3),ilsistemaXWindowarrivadotatodi unserverXcheforniscelagraficaaiclientichenecessitanodiimmagini. E'importantecomprendere ladistinzionetrailserverXeleapplicazioniclientiX.IlserverX controllaloschermodirettamenteedresponsabiledituttol'inputeoutputviatastiera,mousee schermo.D'altrocantoilclienteXnonaccededirettamentealleperiferiched'ingressoed'uscitadei dati:essocomunicaconilserverXchegestiscel'inputel'output.E'ilclienteXchesvolgeillavoro vero,comeilcalcolodeivalori,l'avviodiapplicazioniecosvia.IlserverXapresolodellefinestre pertrattarel'ingressoel'uscitadeidatiperunospecificocliente. Nellenormalicondizionioperative(modalitgrafica)ogniworkstationunserverXdisestesso, anchesefagiraresolodelleapplicazioniclienti.Tutteleapplicazionichestatefacendofunzionare (peresempioGimp,unafinestraditerminale,ilvostronavigatore,lavostraapplicazionedaufficio, lostrumentopersuonareunCD,ecc...)sonoclientidelvostroserverX.Servereclientiinquesto casogiranosullastessamacchina.

212

IntroduzioneaLinux

Questanaturacliente/serverdelsistemaXlorendeunambienteidealeperl'esecuzioneremotadi applicazionieprogrammi.Poichinrealtilprocessosistasvolgendoinunamacchinaremota,c' bisognodiunascarsissimapotenzadellaCPUnell'hostlocale.Talimacchine,agendodaserverper X,vengonochiamateterminaliXedunavoltaeranomoltodiffuse.Maggioriinformazionipossono essererintracciateinRemoteXapplicationsminiHOWTO.

10.4.3.2. Telnet e X
Sevolesteusaretelnetpermostraredelleapplicazionigrafichechestannogirandoinunamacchina remota,dovresteprimaconcederel'accessoversotalemacchinaalvostroschermo(alvostroserver X!) con il comando xhost, digitando un comando simile a quello seguente in una finestra di terminalenellavostramacchinalocale:
davy:~> xhost +remote.machine.com

Dopo di ci, connettetevi all'host remoto editegli dimostrare lagrafica nellamacchina locale impostandolavariabileambientaleDISPLAY:
[davy@remote ~] export DISPLAY="local.host.com:0.0"

Completato questo passo, qualsiasi applicazione avviata in questa finestra di terminale verr mostratanelvostrodesktop,utilizzandolerisorseremoteperl'elaborazione,adesclusionedelle vostrerisorsegrafichelocali(ilvostrosistemaX). QuestaprocedurasupponechevoiabbiateunqualchetipodiserverX(XFree86,X.org,Exceed, Cygwin)giimpostatonellamacchinadovevoletemostrareleimmagini.L'architetturaeilsistema operativodellamacchinaclientenonsonoimportantisenonperchviconsentonodifargirareun serverXinessa. Ricordatecheanchemostrareunafinestraditerminaledallamacchinaremotaconsideratacome un'immagine.

10.4.4. La suite SSH


10.4.4.1. Introduzione
Ora la maggior parte dei sistemi UNIX e Linux fa girare Secure Shell per evitare i rischi di sicurezzaderivantidatelnet.LamaggioranzadeisistemiLinuxusanounaversionediOpenSSH, unaimplementazioneOpenSourcedelprotocolloSSH,cheforniscesicurecomunicazionicriptate fra host non certificati inunarete noncertificata. Nell'impostazione standard leconnessioni X vengonomandateautomaticamente,maanchedelleporteTCP/IParbitrariepossonoessereinviate usandouncanalesicuro. Ilcliente ssh siconnetteesiregistranelnomedell'hostspecificato.L'utentedevefornirelasua identitallamacchinaremotacomespecificatonelfilesshd_config,chenormalmentepuessere trovatoin/etc/ssh.Ilfilediconfigurazionepiuttostoautoesplicanteedabilitadibaselefunzioni picomuni.Seavetebisognodiaiuto,lopotetetrovarenellepaginemandisshd. 213

IntroduzioneaLinux

Quandol'identitstataaccettatadalserver,quest'ultimooesegueilcomandodatooppureregistra nella macchina e concede all'utente una normale shell nella macchina remota. Tutte le comunicazioniconilcomandoolashellremotiverrannoautomaticamentecriptate. Lasessioneterminaquandoilcomandoolashellnellamacchinaremotasiconcludeetuttele connessioniX11eTCP/IPsonostatechiuse. Quandoviconnetteteperlaprimavoltaadunhostusandounoqualsiasideiprogrammichesono inclusi nella collezione SSH, avete bisogno di stabilire l'autenticit di quell'host e di fargli comprenderechevoivoleteconnettervi:
lenny ~> ssh blob The authenticity of host 'blob (10.0.0.1)' can't be established. RSA fingerprint is 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'blob,192.168.30.2' (RSA) to the list of known hosts. Last login: Sat Dec 28 13:29:19 2002 from octarine This space for rent. lenny is in ~

E' importante che battiate "yes", con tre caratteri, e non solo "y". Ci edita il vostro file ~/.ssh/known_hosts(v.Sezione10.4.4.3.). Se volete solo controllare qualcosa in una macchina remota e poi ritornare al proprio prompt nell'hostlocale,potetedareicomandicheintendeteeseguireinremotocomeargomentidissh:
lenny ~> ssh blob who jenny@blob's password: root tty2 Jul 24 07:19 lena tty3 Jul 23 22:24 lena 0: Jul 25 22:03 lenny ~> uname n magrat.example.com

10.4.4.2. Inoltro X11 e TCP


SelavoceX11Forwardingimpostatasuyesnellamacchinabersaglioel'utentestautilizzando delleapplicazioniX,lavariabileambientaleDISPLAYvienedefinita,laconnessionealloschermo X11vieneinoltrataautomaticamenteversoillatoremotoinmodochequalsiasiprogrammaX11 avviatodallashellpasserattraversoilcanalecriptatoelaconnessioneversoilveroserverXsar effettuata dalla macchina locale. L'utente non dovrebbe impostare manualmente DISPLAY. L'inoltro di connessioni X11 pu essere configurato da linea di comando o nel file di configurazionesshd. Ilvalore di DISPLAY, impostato da ssh, punter allamacchina server, maconunnumero di schermo maggiore di zero. Ci normale e succede perch ssh crea un server X proxy nella macchinaserver(chefagirareleapplicazioniclientidiX)perinoltrareleconnessionisulcanale criptato. 214

IntroduzioneaLinux

Cifattocompletamenteinautomatico,cos,quandobatteteilnomediun'applicazionegrafica, essa viene mostrata nella vostra macchina locale e non nell'host remoto. Nell'esempio usiamo xclock dalmomentochesitrattadiunpiccoloprogrammachevienesolitamenteinstallatoed idealeperesperimenti: Figura103.InoltroSSHX11

SSH imposter anche i dati Xauthority automaticamente) nella macchina server. A tale scopo generer un cookie casuale di autorizzazione, lo immagazziner in Xauthority nel server, controllercheogniconnessioneinoltratatrasportiquestocookieelorimpiazzerconquelloreale unavoltaapertalaconnessione.Ilverocookiedautenticazionenonmaiinviatoallamacchina server(enessuncookievieneinviatoinchiaro). L'inoltrodiconnessioniarbitrarieTCP/IPsuuncanalesicuropuesserespecificatoodalineadi comandoonelfilediconfigurazione. IlserverX QuestaprocedurasupponecheabbiateunserverXinfunzionenelclienteincuivolete mostrarel'applicazionedal'hostremoto.Ancheseilclienteavessearchitetturaesistema operativodiversirispettoall'hostremoto,purchquest'ultimosiaingradodifargirare unserverXcomeCygwin(cheimplementaunserverX.orgperclientiMSWindowse altri) o Exceed, dovrebbe essere possibile attivare una connessione remota con qualsiasimacchinaLinuxoUNIX.

10.4.4.3. Autenticazione del server


Ilsistemacliente/serverdisshgestisceecontrollainmodoautomaticoundatabasecontenentegli identificativi di tutti gli host in cui stato utilizzato. Le chiavi degli host sono conservate in $HOME/.ssh/known_hosts nella directory personale dell'utente. Inoltre il file /etc/ssh/ssh_known_hosts viene automaticamente controllato per ricercare host conosciuti. Qualsiasi nuovo host viene aggiunto in modo automatico al file dell'utente. Se l'identificativodiunhostdovessecambiare, sshlosegnalerebbeedisabiliterebbel'autenticazione dellapasswordperevitarecheun"cavallodiTroia"siimpossessidellapassworddell'utente.Un altroscopodiquestomeccanismolaprevenzionedagliattacchi"dell'uomoinmezzo"[maninthe 215

IntroduzioneaLinux

middle] che altrimenti potrebbero essere utilizzati per aggirare il criptaggio. In ambiti dove richiesta un'elevata sicurezza, sshd pu anche essere configurato per prevenire laregistrazione [login]inmacchinelecuichiavidihostsonostatecambiateosonosconosciute.

10.4.4.4. Copia sicura in remoto


La suite SSH offre scp come alternativa sicura al comando rcp che veniva utilizzato quando esistevasolamentersh.scputilizzasshperiltrasferimentodeidati,usalamedesimaautenticazione eforniscelastessasicurezzadissh.Diversamentedarcp,scprichiederpasswordopassphrasese sononecessarieall'autenticazione:
lenny /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/ lenny@blob's password: Schedule.sdc.gz 100% |*****************************| 100 KB 00:00 lenny /var/tmp>

Ogninomedifilepucontenereunadescrizionedettagliatadell'hostedell'utenteperindicarecheil filestaperesserecopiatoin/daquell'host.Lecopietraduehostremotisonopermesse.Guardatele pagineInfopermaggioriinformazioni. Seinvecevoleteusareun'interfacciatipoFTP,utilizzatesftp:


lenny /var/tmp> sftp blob Connecting to blob... lenny@blob's password: sftp> cd /var/tmp sftp> get Sch* Fetching /var/tmp/Schedule.sdc.gz to Schedule.sdc.gz sftp> bye lenny /var/tmp>

CopiasicuraoleGUIdiFTP Nonvisentiteancoraavostroagioconlalineadicomando?Provatelecapacitdi KonquerorperlacopiasicurainremotooppureinstallatePutty.

10.4.4.5. Chiavi di autenticazione


Ilcomando sshkeygen genera,gestisceeconvertelechiavidiautenticazionedi ssh.Pucreare chiaviRSAdausareconilprotocolloSSHversione1echiaviRSAoDSAdaimpiegareconil protocolloSSHversione2. NormalmenteogniutentechevuoleusareSSHconautenticazioneRSAoDSAlofagirareuna voltapercrearelachiavediautenticazionein $HOME/.ssh/identity, id_dsa o id_rsa. Inoltrel'amministratoredisistemapuusarlopergenerarelechiavidihostperilsistema. Disolitoquestoprogrammageneralachiaveerichiedeunfileincuiconservarelachiaveprivata. La chiave pubblica viene tenuta in un file con lo stesso nome ma con l'aggiunta di .pub. Il 216

IntroduzioneaLinux

programmadomandaancheunapassphrase. Lapassphrasepuesserevuotaperindicaredinon serve (le chiavi dihostdevono avere unapassphrase vuota), oppure puessere una stringa di lunghezzaarbitraria. Nonc'mododiricostruireunapassphrasepersa:seinfattiquestavieneperdutaodimenticata, necessariogenerareunanuovachiaveecopiarlatralecorrispondentichiavipubbliche. StudieremolechiaviSSHnegliesercizi.Tutteleinformazionipossonoesseretrovatenellepagine manoInfo.

10.4.5. VNC
VNCoVirtualNetworkComputinginsostanzaunsistemadivisualizzazioneremotacheconsente divedereunambientedesktopnonsolonellamacchinalocaleincuistafunzionando,maancheda qualsiasi punto di Internet e da un'ampia variet di macchine e di architetture, compresi MS WindowsediversedistribuzioniUNIX.Potreste,adesempio,fargirareMSWordinunamacchina dotatadiWindowsNTemostrarel'outputnelvostrodesktopLinux.VNCforniscesiaserverche clienti, cosicch funziona anche viceversa edpercipossibileusarlopermostrare programmi LinuxinclientiWindows.ProbabilmenteVNCilmodopisempliceperavereconnessioniXsu unPC.LeseguenticaratteristichedifferenzianoVNCdaunnormaleserverXodaimplementazioni commerciali:

Lostatononvieneconservatosullatodelvisualizzatore:potetelasciarelavostrascrivaniae riprendere da un'altra macchina, continuando da dove eravate rimasti. Quando avete in funzioneunPCserverXedilPCsibloccaovieneriavviato,tutteleapplicazioniremote,da voifattefunzionare,cesseranno.ConVNCrimarrannoinfunzione. E'piccoloesemplice,nonavendobisognod'installazione,seservepuessereavviatodaun dischetto. IndipendentedallapiattaformaconilclienteJava,girapraticamentesuognisistemache supportiX. Condivisibile:undesktoppuesseremostratoinparecchivisualizzatori. Libero.

Maggiori informazioni possono essere trovate nelle pagine man del cliente VNC (man vncviewer)onelsitowebdiVNC.

10.4.6. Il protocollo rdesktop


PerlagestionesemplicedeglihostMSWindows,lerecentidistribuzionidiLinuxsupportanoil RemoteDesktopProtocol(RDP)cheinseritonelclienterdesktop.Ilprotocollovieneutilizzato dauncertonumerodiprodottiMicrosoft,compresiWindowsNTTerminalServer,Windows2000 Server,WindowsXpeWindows2003Server. Sorprendete i vostri amici (o la dirigenza) con la modalit a tutto schermo, molti tipi di conformazioni ditastiere elamodalitasingolaapplicazione, come sefosseunacosavera. Il manuale man rdesktop fornisce ulteriori informazioni. La pagina iniziale del progetto su 217

IntroduzioneaLinux

http://www.rdesktop.org/.

10.4.7. Cygwin
CygwinforniscesostanzialifunzionalitUNIXsottosistemiMSWindows:aparteglistrumentia lineadicomandoUNIXeleapplicazionigrafiche,puessereusatopermostrareundesktopLinux inunamacchinaMSWindows,utilizzandoXinremoto.DallashellBashdiCygwin,digitateil comando /usr/X11R6/bin/XWin.exequery nomevostramacchinalinux_o_IP Laconnessionenegatacomepreimpostazione.DovetepercicambiarelaconfigurazionediX DisplayManager(XDM)epossibilmentequelladiXFontServer(XFS)perabilitaretalegeneredi connessione con cui otterrete una schermata dilogin sulla macchina remota. In base al vostro gestoredidesktop(Gnome,KDEoaltro)potrestepuredovercambiarequialcuneconfigurazioni. Senonviservefarapparirel'interodesktop,poteteusareSSHconCygwin,propriocomespiegato nellaSezione10.4.4.senzatuttalaconfusionedellemodificheaifilediconfigurazione.

10.5. La sicurezza
10.5.1. Introduzione
Nonappenauncomputervieneconnessoallarete,tuttiigeneridiabusidivengonopossibili,sia questobasatosuUNIXosuqualsiasialtrosistema.Ammettiamochemontagnedicartasonostate sprecatesutaleargomentoechecipotrebbecondurretroppolontanoperdiscutereindettaglioil tema della sicurezza. C' comunque un paio di cose abbastanza logiche che anche un utente principiantepufareperottenereunsistemamoltosicuro,poichmolteintrusionisonoilrisultato diutentiignorantioincuranti. Potrestechiedervisetuttociviriguarda,utilizzandoilvostrocomputeracasaoallavoronel vostroufficiosuundesktopinunambientesufficientementeprotetto.Tuttavialedomandeche dovresteporvidovrebberoesserepiuttostodiquestotipo:

Voleteavereilcontrollodelvostrosistema? Voletepartecipare(involontariamente)adattivitcriminose? Voletecheilvostrosistemasiautilizzatodaqualcunaltro? VoletecorrereilrischiodiperderelavostraconnessioneadInternet? Voleteripristinareilvostrosistemaognivoltachestatocraccato? Voletecorrereilrischiodiperderedatipersonalioaltrui?

Supponendochenonlovogliate,vielencheremorapidamenteipassidaintraprendereperrendere sicuralavostramacchina.InformazioniestesesipossonotrovarenelLinuxSecurityHOWTO.

218

IntroduzioneaLinux

10.5.2. I servizi
L'obbiettivoquellodiavviaremenoservizipossibili.Seilnumerodelleporteapertealmondo esternovienemantenutoalminimo,cimegliopertenerlesottoosservazione.Seiservizinon possonoesserespentiperlaretelocale,tentatealmenodidisabilitarliperleconnessioniesterne. Unaregolaempiricaquellachesenonriconosceteunparticolareservizio,probabilmentenonne avetecomunquebisogno.TenetepureinmentechenonhasensoutilizzarecertiserviziinInternet. Nonfidatevidicichedovrebbeesserefattogirare,verificateconilcomandonetstatqualiservizi sonoinascoltoesuqualeportaTCP:
[elly@mars ~] netstat l | grep tcp tcp 0 0 *:32769 tcp 0 0 *:32771 tcp 0 0 *:printer tcp 0 0 *:kerberos_master tcp 0 0 *:sunrpc tcp 0 0 *:6001 tcp 0 0 *:785 tcp 0 0 localhost.localdom:smtp tcp 0 0 *:ftp tcp 0 0 *:ssh tcp 0 0 ::1:x11sshoffset *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN

Cosedaevitare:

exec,rlogin,rshetelnettantoperstaredallapartesicura. X11nellemacchineserver; nientelpsenessunastampantefisicamentecollegata; senoncisonohostMSWindowsinretenonoccorreSamba; nonpermetteteFTPamenochenonsiarichiestounserverFTP; nonpermetteteNFSeNISsuInternet,disabilitatetuttiirelativiserviziinunainstallazione indipendente. NonavviateunMTA,senonsieteveramenteinunserverdiposta. ...

Fermate i servizi attivi usando il comando chkconfig, gli initscript o modificando i file di configurazionedi(x)inetd.

10.5.3. Aggiornare con regolarit


Ci che fa prosperare Linux la sua capacit di adattarsi rapidamente a qualsiasi mutevole ambiente. Magenera pure lapossibilit chegliaggiornamenti disicurezza sianostatirilasciati anchementrestateinstallandounanuovaversionedimarca,cosicchlaprimacosachedovreste fare(echevaleperquasituttiisistemioperativichevivengonoinmente)dopol'installazione quelladiprocurarvigliaggiornamentialpiprestopossibile.Dopodiciaggiornateconregolarit tuttiipacchetti. Alcuniaggiornamentipossonorichiederedeinuovifilediconfigurazioneeivecchifiledovrebbero 219

IntroduzioneaLinux

essere rimpiazzati. Controllate la documentazione ed assicuratevi che ogni cosa funzioni normalmentedopol'aggiornamento. La maggioranza delle distribuzioni Linux fornisce servizi di mailing list per annunci di aggiornamentidisicurezzaestrumentiperapplicarlialsistema.Ingeneraleiproblemidisicurezza solodiLinuxvengonosegnalati,fral'altro,suLinuxsecurity.com. L'aggiornamento un procedimento continuo, sicch dovrebbe essere un'abitudine quasi quotidiana.

10.5.4. I firewall e le politiche d'accesso


10.5.4.1. Che cos' un firewall?
NellaprecedentesezioneabbiamogimenzionatolecapacitdiunfirewallsottoLinux.Mentre l'amministrazionediunfirewallunodeicompitidelvostroamministratoredirete,voidovreste conoscereunpaiodicosesuifirewall. Firewallunterminevagochepusignificarequalcosachesicomportadabarrieraprotettivatra noi e il mondo esterno, in genere Internet. Un firewall pu essere un sistema dedicato o una specifica applicazione che fornisce tale funzione, oppure pu trattarsi di una combinazione di componenti,compresevariecombinazionidihardwareesoftware.Ifirewallsonorealizzatiinbase a"regole"chevengonousateperdefinirecosapuentraree/ouscireinundatosistemaorete. Dopo la disabilitazione dei servizi non necessari, ora vogliamo limitare i servizi rimasti per permetteresoloilminimorichiestodiconnessioni.Unbuonesempiofunzionadacasa:soltantola specificaconnessionetrailvostroufficioelavostraabitazionedovrebbeesserepermessa,mentrele connessionidaaltremacchinesuInternetdovrebberoesserebloccate.

10.5.4.2. I filtri dei pacchetti


Laprimalineadidifesaunfiltrodeipacchetti(packetfilter),chepuguardaredentroipacchetti IPeprenderedecisioniinbasealcontenuto.IlpicomuneilpacchettoNetfilter,chefornisceil comandoiptables,unfiltrodipacchettidinuovagenerazioneperLinux. Unodeimiglioramentimaggiormentedegnidinotaneikernelpirecentilafunzionedistateful inspection,chenonsolodicequellochec'all'internodiunpacchetto,maanchescopreseun pacchettoappartieneoinrelazioneaunanuovaconnessioneoaquellaesistente. Shorewall Firewall, oShorewall inbreve, unprogramma diinterfaccia allefunzionalit del firewallstandardinLinux. MaggioriinformazionipossonoesseretrovatenellapaginadelprogettoNetfilter/iptables.

10.5.4.3. TCP wrapper


IlwrappingdelTCPforniscemoltideglistessirisultatideifiltridipacchetti,mafunzionainmodo diverso. Il wrapper accetta realmente il tentativo di connessione, poi esamina i file di 220

IntroduzioneaLinux

configurazione edecide seaccettare orespingere larichiesta diconnessione. Esso controlla le connessionialivellodell'applicazionepiuttostocheaquellodirete. ITCPwrappersonotipicamenteutilizzaticon xinetd perfornireilnomedell'hosteilcontrollo dell'accesso basato sull'indirizzo IP. In aggiunta, questi strumenti comprendono capacit di registrazioneedigestionedell'utilizzazionechesonofacilidaconfigurare. IvantaggideiTCPwrappersonocheilclientechesistaconnettendoinconsapevolechevengono usatiiwrapperecheessioperanoseparatamentedalleapplicazionichestannoproteggendo. L'accesso basato sull'host viene controllato nei file host.allow e host.deny. Maggiori informazioni si possono trovare nei file di documentazione del TCP wrapper in /usr/share/doc/tcp_wrappers[-<versione>/] o /usr/share/doc/tcp enelle paginemandedicateaifiledicontrollodell'accessobasatosull'hostchecontengonodegliesempi.

10.5.4.4. I proxy
Iproxypossonosvolgerediversicompiti,dicuinontuttihannomoltaattinenzaconlasicurezza. Mailfattocheessifaccianodaintermediarilirendeunbuonpostoperrafforzarelepolitichedi controllodegliaccessi,limitareleconnessionidiretteattraversounfirewallecontrollarecomela retedietroilproxysiaffacciasuInternet. Solitamenteincombinazioneconunfiltrodipacchetti (maqualchevoltatuttodasoli)iproxy forniscono un livello extra dicontrollo. Maggiori informazioni sipossono trovare nel Firewall HOWTOnelsitowebdiSquid.

10.5.4.5. L'accesso a singole applicazioni


Alcuni server possono avere le loro proprie caratteristiche di controllo degli accessi. Comuni esempi comprendono Samba, XWindow, Bind, Apache eCUPS. Per ogni servizio che volete offrirecontrollatequalifilediconfigurazionesidevonousare.

10.5.4.6. I file di log


Semai,ilmodoUNIXdiregistraretuttiitipidiattivitintuttiigeneridifileconfermache"sista facendo qualcosa". Naturalmente i file di registro dovrebbero essere controllati con regolarit, manualmenteoautomaticamente.Ifirewalleglialtrimezzidicontrollodegliaccessitendonoa crearenotevoliquantitdifiledilog,cosicchiltruccoquellodiprovareediregistraresolole attivitanomale.

10.5.5. La scoperta delle intrusioni


I sistemi di scoperta delle intrusioni (IDS o Intrusion Detection System) sono progettati per intercettarecichepotrebbeaversuperatoilfirewall.Essiopossonoesserestatiideatipercatturare unattivotentativodieffrazioneincorso,oppureperindividuareunariuscitaeffrazionedopoil fatto. Nell'ultimo caso troppo tardi perimpedire unqualche danno, maalmeno abbiamo una precoceconsapevolezzadiunproblema.EsistonoduetipologiebasediIDS:quellicheproteggono leretiequellicheproteggonosingolihost. 221

IntroduzioneaLinux

PergliIDSbasatisuglihostcivienefattotramiteprogrammidiutilitchetengonocontrollatii mutamentinelfilesystem.Ifiledisistemacheinqualchemodosonocambiati,manonavrebbero dovutocambiare,sonounachiaramanifestazionechequalcosanonva.Chiunqueentriedottenga l'accessodirootfar,presumibilmente,dellemodifichealsistemadaqualcheparte.Questadi solito la primissima cosa che viene fatta, o in modo che si possa successivamente ritornare attraversounabackdoor,olanciandounattaccocontroqualcunaltro(nelqualcasosidebbono cambiare o aggiungere filealsistema). Alcuni sistemi sonodotati del sistema dimonitoraggio tripwire,documentatonelsitowebdelProgettoOpenSourceTripwire. Lascopertadelleintrusioniinretegestitadaunmeccanismo cheosserva tuttiiltraffico che superailfirewall(nonattraversogliscannerdelleportechesegnalanoleporteutilizzabili).Snort unesempioOpenSourcedisiffattiprogrammi.Whitehats.commantieneundatabasediscoperta delleintrusioniaperto,arachNIDS.

10.5.6. Ulteriori spunti


Alcunecoseingeneraledatenereinmente:

Nonconsentitelogindiroot.GlisviluppatoriUNIXhannocreatooltrevent'annifasuper unamaggioresicurezza. L'accessodirettoinqualitdiroot[amministratore]semprepericolosoesuscettibiledi erroriumani,siapermettendol'autenticazionediroot,siausandoilcomando su.Piuttosto cheusaresu,moltomeglioricorrereasudopereseguiresoloilcomandocheilqualevi servonoipermessiextraeritornaresubitodopoalvostroambientepersonale. Prendeteseriamentelepassword:utilizzatequelle"shadow".Cambiatelespesso. ProvateadusaresempreSSHoSSL.Evitatetelnet,clientiFTP,dipostaealtriprogrammi clienticheinvianolepasswordinchiarosullarete.Lasicurezzanonriguardasoloilvostro computer,maanchelavostrapassword. Limitatelerisorseusandoquotae/oulimit. Lapostaperrootdovrebbeessereconsegnataa(oalmenolettada)unapersonareale. L'IstitutoSANS hapitrucchiesuggerimenti,ordinatiperdistribuzione,conserviziodi mailinglist. Controllatelaprovenienzadelnuovosoftware,scaricatelodaunluogo/sitofidato.Verificate inuovipacchettiprimadell'installazione. QuandoutilizzateunaconnessioneInternetnonpermanente,chiudetelanonappenanonvi servepi. Fatefunzionareiserviziprivatisuportediversedaquellechesiaspettanoeventualihacker. Comprendeteilvostrosistema.Dopounpo'potretequasiavvertirequandostacapitando qualcosa.

10.5.7. Sono stato attaccato dagli hacker?


Comepotetedirlo?Questaunalistadicontrollodieventisospetti:

222

IntroduzioneaLinux

Portemisterioseaperte,straniprocessi. Utilitdisistema(normalicomandi)chesicomportanoinmodostrano. Problemidiautenticazione. Usoinspiegabiledilarghezzadibanda. Filediregistrodanneggiatiopersi,demonedisyslogchesicomportainmodostrano. Interfacceinmodalitinconsuete. Filediconfigurazionemodificatiinaspettatamente. Stranevocineifiledellostoricodishell. Filetemporaneisconosciuti.

10.5.8. Ripristinare dopo un'intrusione


Inbreve,statecalmi.Poieseguiteleseguentiazioniinquestoordine:

Sconnettetelamacchinadallarete. Tentatediscoprirequantopipotetesulmodoincuilavostrasicurezzastataviolata. Fate unacopia disicurezza dei dati importanti nondisistema. Se possibile confrontate questidaticonlecopiedisicurezzaesistenti,fatteprimacheilsistemafossecompromesso, pergarantirel'integritdeidati. Reinstallateilsistema. Usatenuovepassword. Ripristinatedaibackupdisistemaedeidati. Applicatetuttigliaggiornamentidisponibili. Riesaminateilsistema:bloccateiservizinonnecessari,controllateleregoledelfirewallele altrepolitiched'accesso. Riconnettete

10.6. Sommario
Linuxeleretivannomanonellamano.IlkerneldiLinuxhailsupportopertuttiiprotocollidirete comuni e meno comuni. Gli strumenti standard per le reti UNIX sono in dotazione ad ogni distribuzione.Oltreaquesti,lamaggiorpartedelledistribuzionimetteadisposizionestrumentiper unasempliceinstallazioneegestionedellereti. LinuxbenconosciutocomeunastabilepiattaformaperfargirarevariserviziInternetelaquantit disoftwareperInternetinfinita.ComeUNIX,Linuxpuessereeamministratoalmegliodauna postazioneremota,usandounadellediversesoluzioniperl'esecuzioneremotadeiprogrammi. Abbiamo brevemente toccato l'argomento della sicurezza. Linux un sistema firewall ideale, leggero edeconomico,machepuessere impiegatoinmolteplicialtrefunzioni diretecomei routereiserverproxy. L'aumentodellasicurezzanellaretevieneprincipalmenteottenutoinstallandofrequentementegli aggiornamentieconilsensocomune. Eccoquiunapanoramicadeicomandirelativiallarete: 223

IntroduzioneaLinux

Tabella102.Nuovicomandinelcapitolo10:Reti Comando ftp host ifconfig ip netstat ping rdesktop route scp sftp ssh sshkeygen telnet whois xclock xhost Significato Trasferiscefileversounaltrohost(nonsicuro). Assumeinformazionisuglihostinrete. Mostraleinformazionidell'indirizzoIP Mostraleinformazionidell'indirizzoIP Mostraleinformazionidiinstradamentoelestatistichedirete. Inviarichiestedirispostaadaltrihost. MostraundesktopMSWindowsnelvostrosistemaLinux. Mostraleinformazionidiinstradamento. Copiasicuradeifiledaeversoaltrihost. FTPsicuroperifiledaeversoaltrihost. Creaunaconnessionecriptataversounaltrohost. GeneralechiavidiautenticazioneperSecureSHell. Creaunaconnessionenonsicuraversoaltrihost. Ottieneinformazionicircaunnomedidominio. Applicazionedell'orologioXWindow,utilepertestarelevisualizzazioni inremoto. StrumentoXWindowperilcontrollodegliaccessi.

tracepath/traceroute Riportailpercorsocheunpacchettosegueversounaltrohost.

224

IntroduzioneaLinux

10.7. Esercizi
10.7.1. Le reti in generale

Visualizzateleinformazioni diretedellavostraworkstation:indirizzo IP,instradamenti, serverdeinomi. FingetechenonsiadisponibileilDNS.Cosadovrestefareperraggiungereilcomputerdel vicinosenzadigitareognivoltal'indirizzoIP? Come potreste immagazzinare permanentemente le informazioni del proxy per un navigatoretestualecomelinks? Qualiserverdeinomigestisconoildominioredhat.com? Inviateunmessaggiodipostaelettronicaalvostroaccountlocale.Provateduemodidiversi permandarloeleggerlo.Comepotetecontrollarechearrivatoveramente? LavostramacchinaaccettaconnessionianonimeFTP?Comeuseresteilprogramma ncftp perautenticarviconilnomeutenteelapasswordvostri? La vostra macchina sta facendo girare un server web? Se cos non , fate che lo sia. Controllateifilediregistro!

10.7.2. Connessioni remote

Dalla vostra workstation locale visualizzate un'applicazione grafica (come xclock) sullo schermodelvostrovicino.Dovrannoessereconfiguratigliaccountnecessari.Utilizzateuna connessionesicura! ImpostatelechiaviSSHinmodochepossiateconnetterviallamacchinadelvostrovicino senzadoverinserireunapassword. Fateunacopiadisicurezzadellavostradirectorypersonalein/var/tmponel"serverdi backup"delvostrovicinousando scp.Archiviateecomprimeteprimaditrasferireidati! Connetteteviall'hostremotousandossh,spacchettatelacopiadisicurezzaerimetteteunfile nellamacchinaoriginalericorrendoasftp.

10.7.3. La sicurezza

Redigeteunelencodelleporteaperte(inascolto)nellavostramacchina. Supponendochevogliatefarfunzionareunwebserver,qualiservizidovrestedisattivare? Comepotrestefarlo? Installategliaggiornamentidisponibili. Comepotetevederechiconnessoalvostrosistema? Createunprocessoripetitivocheviricordidicambiare lavostrapasswordognimesee preferibilmenteanchequelladiroot.

225

IntroduzioneaLinux

Capitolo 11. Suoni e video


Questo capitolo si occupa dei seguenti argomenti (brevemente, dal momento che il settoredelsuonoedelvideopiuttostoampio):

configurazionedellaschedasonora; riproduzioneecopiadeiCD: riproduzionedifilemusicali; controllodelvolume; videoetelevisione; registrazionedeisuoni.

11.1. Le basi dell'audio


11.1.1. Installazione
Moltoprobabilmenteilvostrosistemagiinstallatoconidriveraudioelaconfigurazionestata eseguitaalmomentodell'installazione.Allostessomodo,sevoiavestemaibisognodisostituireil vostro hardware audio, la maggior parte dei sistemi fornisce strumenti che consentono una impostazioneeconfigurazionesemplicedeldispositivo.Leattualischedesonoreplugandplaypi diffusedovrebberoesserericonosciuteautomaticamente.Sesieteingradodiascoltaregliesempi chevengonoriprodottidurantelaconfigurazione,premetesoloOKedognicosasarimpostataper voi. Selaschedanonvenisserilevataautomaticamente,potresteessereomaggiatidiunelencodischede sonoree/odiloropropriettracuiscegliere.DopodicidovresteindicarelaportadiI/Oele impostazionidiIRQeDMAcorrette.Informazionisuquesteimpostazionipossonoesseretrovate traladocumentazionedellavostraschedaaudio.SesieteinunsistemaadoppioavvioconMS Windows,taliinformazionipossonoessererinvenuteanchenelPannellodiControllodiWindows. Sel'identificazioneautomaticadellaschedasonorafallisce Selavostraschedasonoranonsupportatainpartenza,avretenecessitdiseguirealtre tecniche:essesonodescrittenelLinuxSoundHOWTO.

11.1.2. I driver e l'architettura


Ingenereesistonoduetipidiarchitetturadelsuono:ilpianzianoOpenSoundSystemoOSS,che funzionacontuttiisistemisimilUNIX,edilpirecenteAdvancedLinuxSoundArchitectureo ALSA,chehaunmiglioresupportoperLinux,comeindicailnomestesso.Alsahapuremaggiori funzionaliteconsenteunosviluppopirapidodeidriver.QuiciconcentreremosulsistemaALSA. Oggigiorno quasi tutti i correnti chipset audio vengono supportati: restano escluse solo alcune soluzioniprofessionalidialtolivelloealcuneschedesviluppatedaproduttorichesirifiutanodi documentarelespecifichedeilorochipset.Unapanoramicadelleperiferichesupportatepuessere 226

IntroduzioneaLinux

rintracciata nel sito di doc/index.php?vendor=All#matrix.

ALSA

in

http://www.alsaproject.org/alsa

La configurazione dei sistemi dotati diALSA sieffettua conlostrumento alsaconf.Inoltre le distribuzionidisolitomettonoadisposizioneipropristrumentiperconfigurarelaschedasonora; talistrumentipotrebberoancheintegrareilvecchioedilnuovomododigestireleperifericheaudio.

11.2. Riproduzione audio e video


11.2.1. Ascolto e copia dei CD
Ilpacchetto cdp contenuto nellamaggioranza delledistribuzioni efornisce cdp o cdplay,un riproduttoreCDinmodalittestuale.Normalmenteigestorididesktopincludonounostrumento grafico(comegnomecdsottoGnome),chepuessereavviatodaunmenu. SiatecertidicomprendereladifferenzatraCDaudioeCDdati.NondovetemontareunCDaudio nelfilesystemperascoltarlo.CiperchidatidiqueltipodiCDnonsonodatidelfilesystemdi Linux;essivengonolettiedinviatialcanaled'uscitaaudiodirettamenteutilizzandounprogramma diriproduzionediCD.SeilvostroCDunCDdaticontenentefile.mp3,primaavretebisognodi montarlonelfilesystemepoidiusareunodeiprogrammichetratteremodiseguitoperriprodurre lamusica.ComemontareiCDnelfilesystemstatospiegatonellaSezione7.5.5. Lostrumento cdparanoia dalpacchettoomonimoleggel'audiodirettamentecomedatidalCD, senzaconversioniinanalogico,escriveidatiinunfileoincanalandoloindifferentiformati,trai qualiilpipopolare,probabilmente,il.wav.Varistrumentiperlaconversioneadaltriformati, come .mp3,sonocontenutiinmoltedistribuzioniosonoscaricabilicomepacchettiseparati.Il progetto GNU fornisce parecchi strumenti perriprodurre, estrarre ecodificare CD, egestori di database;guardatelasezioneFreeSoftwareDirectory,Audioperinformazionidettagliate. LacreazionediCDaudiosemplificata,framoltialtri,dallostrumentokaudiocreatordellasuite KDE.E'dotatodellechiareinformazionidelCentroAiutiKDE. LacreazionediCDtrattatagenericamentenellaSezione9.2.2.

11.2.2. La riproduzione di file musicali


11.2.2.1. I file .mp3
Ilpopolareformato.mp3ampiamentesupportatonellemacchineLinux.Lamaggiorpartedelle distribuzionicomprendemoltiprogrammichepossonoriprodurrequestotipodifile.Fratantealtre applicazioni,XMMS(chevienepresentatonell'immaginequidiseguito)unadellepilargamente diffuse,inparteperchhalostessoaspettoefunzionamentodell'analogostrumentoWindows. Figura111.Ilriproduttore.mp3XMMS

227

IntroduzioneaLinux

ParimentimoltodiffusiperlariproduzionedellamusicasonoAmarok,un'applicazioneKDE,che staguadagnandocostantementepopolarit,eMPlayer,chepuriprodurreanchefilm. Restrizioni Alcune distribuzioni non vi permettono di ascoltare degli MP3 senza modificare la configurazione:cidovutoallerestrizionidellalicenzasuglistrumentiMP3.Potreste averbisognodiinstallaresoftwareaggiuntivoperessereingradodisuonarelavostra musica. Inmodalittestopoteteusareilcomandomplayer:
[tille@octarine ~]$ mplayer /opt/mp3/oriental/*.mp3 MPlayer 1.0pre7RPM3.4.2 (C) 20002005 MPlayer Team CPU: Advanced Micro Devices Duron Spitfire (Family: 6, Stepping: 1) Detected cacheline size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0 Playing /opt/oldopt/mp3/oriental/Mazika_DianaKrozon_SuperStar_EnsaniMa Bansak.mp3. Cache fill: 1.17% (98304 bytes) Audio file detected. Clip info: Title: EnsaniMaBansak.mp3 Artist: DianaKrozon Album: SuperStar Year: Comment: Genre: Unknown ========================================================================== Opening audio decoder: [mp3lib] MPEG layer2, layer3 mpg123: Can't rewind stream by 450 bits! AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000>176400) Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer2, layer3) ========================================================================== Checking audio filter chain for 44100Hz/2ch/s16le > 44100Hz/2ch/s16le... AF_pre: 44100Hz/2ch/s16le AO: [oss] 44100Hz 2ch s16le (2 bps) Building audio filter chain for 44100Hz/2ch/s16le > 44100Hz/2ch/s16le... Video: no video Starting playback... A: 227.8 (03:23:.1) 1.8% 12%

11.2.2.2. Altri formati


Discuteresututtiipossibiliformatiaudioesuimodiperascoltarlicipotrebbecondurretroppo lontano. Ecco una panoramica (incompleta) di altro software comune per la riproduzione e la manipolazionedelsuono:

228

IntroduzioneaLinux

OggVorbis:formatoaudiolibero:guardateladirectoryaudioGNUperglistrumentiessi potrebberoessereinclusianchenellavostradistribuzione.Ilformatostatosviluppatoin quantoMP3soggettoabrevetti. Realaudioevideo:realplaydellaRealNetworks. SoXoSoundeXchange:inrealtunconvertitoredisuoni,sitrovaconilprogrammaplay. Riproduce.wav,.oggevarialtriformati,compresiquellibinarigrezzi. Playmidi:unriproduttoreMIDI(guardateladirectoryGNU). AlsaPlayer: dal progetto Advanced Linux Sound Architecture (guardate il sito web di AlsaPlayer). mplayer:riproducepraticamentetutto,compresiifilemp3.Maggioriinformazioninelsito webMPlayerHQ. hxplay: supporta RealAudio e RealVideo, mp3, audio mp4, Flash, wav e altro ancora. Consultate HelixDNA (non tutti i componenti di questo software sono completamente liberi). rhytmbox:basatosullastrutturadiGStreamer,puriprodurretuttocichevienesupportato daGStreamer,chesivantadiessereingradodiriprodurretutto(dateunosguardoaisitidi RhytmboxediGStreamer).

Controllate la documentazione del vostro sistema e le pagine man per strumenti particolari e dettagliatespiegazionisucomeusarli. Nonhoquesteapplicazioninelmiosistema! Moltideglistrumentiedelleapplicazionitrattatinellesezioniprecedentisonosoftware opzionali.E'percipossibilechetaliapplicazioninonsianostateinstallatedibase,ma chepossiateritrovarlenellavostradistribuzionecomepacchettiaddizionali.Potrebbe anchesuccederemoltofacilmentechel'applicazionechestatecercandononcisiaper niente nella vostra distribuzione: In tal caso dovrete scaricarla dal sito web dell'applicazione.

11.2.2.3. Controllo del volume


aumix e alsamixer sonoduecomunistrumentiacaratteriperlaregolazionedeicomandiaudio. Utilizzateitastifrecciapervariareleregolazioni.alsamixerhaun'interfacciagraficaquandoviene avviatodalmenudiGnomeocomegnomealsamixerdallalineadicomando.Lostrumentokmix falestessecoseinKDE. Tralasciandocosasceglietediascoltarecomemusicaoaltrisuoni,ricordatechecipotrebbeessere altra gente a cui non interessa ascoltare voi o il vostro computer. Provate ad essere cortesi, specialmentenell'ambitodell'ufficio.Usatecuffiediqualitpiuttostoquellepiccoledainfilarenelle orecchie:cimeglioperivostritimpaniecausamenodistrazionipericolleghi.

11.2.3. La registrazione
Anchestavoltasonodisponibilivaristrumentichevipermettonodiregistrarevociemusica.Perla registrazionevocalepoteteusarearecorddalineadicomando:
alexey@russia:~> arecord /var/tmp/myvoice.wav

229

IntroduzioneaLinux

Recording WAVE '/var/tmp/myvoice.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono Aborted by signal Interrups...

Interrupto"Interruzione"significachel'applicazioneharicevutounCtrl+C.Ascoltateilsuono campionatousandoilsemplicecomandoplay. Questaunabuonaprovachepoteteeseguireprimadisperimentareapplicazionicherichiedonoun ingresso vocale come Voice over IP (VoIP). Tenete bene in mente che l'ingresso microfonico dovrebbe essere attivato. Se non sentite la vostra voce, controllate le impostazioni del suono. Spesso succede che ilmicrofono muto oppure che il volume molto basso. Ci pu essere facilmente sistemato usando alsamixer ol'interfaccia grafica delsistema sonorospecifica della vostradistribuzione. SottoKDEpoteteavviareilprogrammadiutilitkrec;Gnomeforniscegnomesoundrecorder(il registratoregnomedelsuono).

230

IntroduzioneaLinux

11.3. Riproduzione video, guardare flussi e televisione


Sonodisponibilisvariatiriproduttori:

xine:unriproduttorevideolibero ogle:riproduttorediDVD. okle:versioneKDEdiogle. mplayer:MoviePlayerperLinux. totem:riproducesiafileaudiochevideo,CDaudio,VCDeDVD. realplay:daRealNetworks. hxplay:unaalternativaaReal,consultateHelixDNA. kaffeine:riproduttorefilemultimedialidiKDE3.

Assaiprobabilmentetrovereteunodiquestineivostrimenugrafici. Teneteinmentechetuttiicodecnecessariperlavisionedeidiversitipidivideopotrebberonon esserestatiinstallatiinizialmentenelvostrosistema.Potrestedoverpercorrereunalungastradaper scaricareiw32codecelibdvdcss. LPD ha rilasciato un documento che molto appropriato per questa sezione: si intitola DVD Playback HOWTO edescriveivari strumenti disponibili perlavisionediDVD inunsistema dotatodilettoreDVD.SitrattadiunabuonaappendiceaDVDHOWTOchespiegal'installazione dellettore. PerguardarelaTVc'dasceglieretraquestistrumenti,oltreamoltialtriperlavisioneelacattura diTV,videoedaltriflussididati:

tvtime:grandeprogrammacongestionedellestazioni,interazioneconiltelevideo,modalit filmemoltoaltroancora. zapping:visualizzatoreTVspecificodiGnome. xawtv:visualizzatoreTVX11.

231

IntroduzioneaLinux

11.4. Telefonia Internet


11.4.1. Che cos'?
LatelefoniaInternet,opicomunemente,VoiceoverIP(VoIP)otelefoniadigitale,consentealle partidiscambiareflussididativocaliinrete.Lagrossadifferenzacheiflussididativiaggianoin unareteadusogenerale, Internet,contrariamente allatelefoniaconvenzionale, cheutilizza reti dedicate di linee di trasmissione vocale. Comunque le due reti possono essere connesse a determinatecondizioni,maperoranonsitrattadiunostandard.Inaltritermini:estremamente probabile che non sarete in grado di chiamare persone che stanno usando un telefono convenzionale. Se nonostante tutto ci possibile, probabile che dobbiate pagare un abbonamento. Sebbeneattualmentesianodisponibilisvariateapplicazionidascaricaregratuitamente,sialibere che proprietarie, esistono alcuni grossi inconvenienti nella telefonia su Internet: tra quelli maggiormentedegnidinota,ilsistemainaffidabile,puesserelentoocipuesseremoltorumore nella connessione e cos certamente non pu venire usato per rimpiazzare la telefonia convenzionale(pensateallechiamated'emergenza).Quantunquealcuniproviderprendanoleloro precauzioni, non esiste alcuna garanzia che voi possiate raggiungere il soggetto che intendete chiamare. Attualmentemolteapplicazioninonusanolacrittografia,percuistateattentichepotenzialmente facile per qualcuno ascoltare di nascosto le vostre conversazioni. Sela sicurezza una vostra preoccupazione,leggeteladocumentazioneallegataalvostroclienteVoIP.Inaggiunta,sestate utilizzandounfirewall,questodovrebbeessereconfiguratoperpermettereconnessionidaqualsiasi provenienza:percil'usodelVoIPimplical'assunzionedirischialivellodellasicurezzadelsito.

11.4.2. Cosa vi serve?


11.4.2.1. Il lato server
Innanzitutto, avete bisogno di un provider che vi offra il servizio. Questo servizio potrebbe integrarelatelefoniatradizionaleepotrebbeesseregratuitoomeno.FraglialtricisonoSIPphone, Vonage, Lingo, AOL TotalTalk e molti altri provider accessibili localmente che offrono il cosiddetto"serviziotelefonicocompleto"[fullphoneservice].IlsoloservizioditelefoniaInternet offertodaSkype,SIPBroker,Googleemoltialtri. Sevolesterealizzareunserverdavoistessi,dovrestedareunocchioadAsterisk.

11.4.2.2. Il lato cliente


Sullatoclienteleapplicazionichepoteteutilizzaredipendonodallaconfigurazionedellavostra rete.SeaveteunaconnessioneInternetdiretta,nondovrebberoesserciproblemi,vistochesapetea qualeservervipoteteconnettereechenormalmenteaveteancheunnomeutenteeunapassword perautenticarvialservizio.

232

IntroduzioneaLinux

Comunque,sevitrovatedietroadunfirewallchefala"traduzionedegliindirizzidirete"(NATo Network Address Translation), alcuni servizi potrebbero non funzionare dal momento che essi vedrebbero solol'indirizzo IPdelfirewall enonquellodel computer, chepotrebbe essere non instradabilesuInternet(peresempioquandosieteinunareteaziendaleeilvostroindirizzoIPinizia con 10., 192.168. ounaltro prefisso disottorete noninstradabile). Ci dipende dal protocollo utilizzatodall'applicazione. Anchelalarghezzadibandadisponibilepotrebbeessereunfattorebloccante:alcuneapplicazioni sonoottimizzateperunridottoconsumodilarghezzadibanda,mentrealtrepotrebberorichiedere connessioniadaltalarghezzadibanda.Cidipendedalcodecutilizzatodall'applicazione. Fra le pi comuni applicazioni ci sono il cliente Skype, che ha un'interfaccia che ricorda i programmidimessaggeriaistantanea,eXLite,laversionegratuitadeltelefonosoftwareXTen,che assomigliaaduntelefonocellulare.Comunque,mentrequestiprogrammisonodisponibileperlo scaricamentogratuitoesonomoltopopolari,essinonsonolibericomelaparolalibera:adottano protocolliproprietarie/osonofornitiesclusivamenteinpacchettibinari,noninformatosorgente. ClientiVoIPgratuitieapertisonoperesempioGizmo,Linphone,GnomeMeetingeKphone. Hardwaredelcliente Sebbene il vostro computer, specialmente se un PC portatile, possa avere un microfono integrato, la resa sarebbe molto migliore collegando delle cuffie con microfono.Sesitrattadiscegliere,optateperdellecuffieUSBinquantofunzionano indipendentemente dall'hardware audio esistente. Usate alsamixer per configurare i livellid'ingressoed'uscitadelsuonoavostropiacimento. Le applicazioni VoIP sono assolutamente un mercato in espansione. Dei volontari tentano di documentarelostatoattualesuhttp://www.voipinfo.org/.

11.5. Sommario
LapiattaformaGNU/Linuxpienamenteabilitataallamultimedialit.Vienesupportataunaampia varietdiperiferichecomeleschedesonore,leschedeTV,lecuffiemicrofoniche,ilettoridiCDe DVD. L'elenco delle applicazioni semplicemente infinito: per questo motivo che abbiamo dovutoridurreilseguenteelencodeinuovicomandielimitarenoistessiaicomandiaudiogenerali. Tabella111.Nuovicomandinelcapitolo11:Audio Comando alsaconf alsamixer arecord aumix Significato ConfigurailsistemasonoroALSA. RegolailivellidiuscitadeldriverALSA. Registrauncampionamentodisuono. Strumentoperilmixeraudio.

233

IntroduzioneaLinux

Comando cdp cdparanoia cdplay gnomealsamixer gnomecd gnomesoundrecorder kaudiocreator kmix krec mplayer play

Significato RiproduceunCDaudio. EstraeletraccedaunCDaudio. RiproduceunCDaudio. ProgrammadiinterfacciaaGnomeALSA. ProgrammadiinterfacciaGnomeperl'ascoltodiCDaudio Programma di interfaccia Gnome per la registrazione di campionisonori. ProgrammadiinterfacciaKDEperlacreazionediCDaudio. ProgrammadiinterfacciaKDEperlaregolazionedelsuono. ProgrammadiinterfacciaKDEperlaregistrazionedicampioni sonori. Riproduttoremultimediale. Strumentoalineadicomandoperl'ascoltodicampionisonori.

11.6. Esercizi
1) DalmenudiGnomeodiKDEapriteilpannellodellaconfigurazionesonora.Accertatevi che gli altoparlanti o le cuffie siano connesse al vostro sistema e trovate un livello di emissione che siaper voi confortevole. Assicuratevi, quando il vostro sistema ALSA compatibile,diusareilpannellogiusto. 2) Seaveteunmicrofono,provatearegistrareuncampionedellavostravoce.Accertateviche ilvolumeiningressononsiatroppoalto,dalmomentochecicomporterebbe tonicon picchielevatimentrecomunicateconaltrioppurelatrasmissionedirumoridisottofondo all'altraparte.Nellalineadicomandopotresteancheusarearecordoaplayperregistrareed ascoltareilsuono. 3) Localizzateifilesonorinelvostrosistemaeprovateadascoltarli. 4) InseriteunCDaudioeprovateadascoltarlo. 5) TrovateuncompagnodichateconfigurateunprogrammaVoIP(dovresteprimainstallarne uno). 6) PoteteascoltareleradioInternet? 7) SeaveteunlettoreDVDeunfilmsudiscoDVD,provateariprodurlo.

234

IntroduzioneaLinux

Appendice A. Dove andare da qui?


Questodocumentooffreunapanoramicadilibriesitiutili.

A.1. Libri utili


A.1.1. Linux in generale

"Linux inaNutshell" diEllenSiever, Jessica P.Hackman, Stephen Spainhour,Stephen Figgins,O'ReillyUK,ISBN0596000251 "Running Linux" di Matt Welsh, Matthias Kalle Dalheimer, Lar Kafman, O'Reilly UK, ISBN156592469X "LinuxUnleashed"diTimParker,BillBal,DavidPitts,Sams,ISBN0672316889 "When YouCan't Find Your System Administrator" diLinda Mui, O'Reilly UK, ISBN 1565921046 Quando acquistate veramente una distribuzione, essa conterr un discreto manuale per l'utente.

A.1.2. Editor

"Learning the Vi Editor" di Linda Lamb e Arnold Robbins, O"Reilly UK, ISBN 1565924266 "GNUEmacsManual"diRichardM.Stallman,iUniverse.ComInc.,ISBN0595100333 "LearningGNU Emacs" diDebra Cameron,BillRosenblatt edEricRaymond,O"Reilly UK,ISBN1565921526 "PerlCookbook"diTomChristianseneNathanTorkington,O'ReillyUK,ISBN156592433

A.1.3. Shell

"UnixShell Programming" diStephenG.KochanePatrickH.Wood,Sams Publishing, ISBN067248448X "Learning the Bash Shell" di Cameron Newham e Bill Rosenblatt, O'Reilly UK, ISBN 1565923472 "Linux and Unix Shell Programming" di David Tansley, Addison Wesley Pubblishing Company,ISBN0201674726 "UnixCShellFieldGuide"dGailePaulAnderson,PrenticeHall,ISBN013937468X

A.1.4. X Window

"GnomeUser'sGuide"dellaComunitGnome,iUniverse.ComInc.,ISBN0595132251 "KDEBible"diDaveNash,HungryMindsInc.,ISBN0764546929 "TheConciseGuidetoXFree86forLinux"diAronHsiao,Que,ISBN0789721821 "TheNewXFree86"diBillBall,PrimaPublishing,ISBN0761531521 "BeginningGTK+andGnome"diPeterWright,WroxPress,ISBN1861003811 "KDE 2.0 Development" di David Sweet e Matthias Ettrich, Sams Publishing, ISBN 235

IntroduzioneaLinux

0672318911 "GTK+/GnomeApplicationDevelopment"diHavocPennington,NewRidersPublishing, ISBN0735700788

A.1.5. Reti

"TCP/IP Illustrated, Volume I: The Protocols" di W. Richard Stevens, AddisonWesley ProfessionalComputingSerie,ISBN02001633469 "DNSandBIND"diPaulAlbitz,CricketLiu,MikeLoukideseDeborahRussell,O'Reilly& Associates,ISBN0696001584 "TheConciseGuidetoDNSandBind"diNicolaiLangfeldt,Que,ISBN0789722739 "ImplementingLDAP"diMarkWilcox,WroxPress,ISBN1861002211 "Understanding and deploying LDAP directory services" di Tim Howes and co., Sams, ISBN0672323168 "Sendmail"diBrianCostaleseEricAllman,O'ReillyUK,ISBN1565922220 "RemovingtheSpam:EmailProcessingandFiltering"diGeoffMulligan,AddisonWesley PublishingCompany,ISBN0201379570 "ManagingIMAP"diDianna&KevinMullet,O'ReillyUK,ISBN059600012X

A.2. Siti utili


A.2.1. Informazioni generali

LinuxDocumentationProject :tuttiidocumenti,lepagineman,gliHOWTO,leFAQ LinuxQuestion.org :forum,scaricamenti,documentiemoltoancora GoogleforLinux :ilmotorediricercaspecializzato Google Groups un archivio di tutti i messaggi dei newsgroup, compresa la gerarchia : comp.os.linux Slashdot :notiziegiornaliere http://www.oreilly.com :librisulsistemaLinuxel'amministrazionedirete,Perl,Java,... POSIX :lostandard LinuxHQ :gestisceundatabasecompletodeisorgenti,dellepezzeedelladocumentazione divarieversionidelkerneldiLinux.

A.2.2. Riferimenti a specifiche architetture


AlphaLinux :LinuxsuarchitetturaAlpha(ades.WorkstationDigital) LinuxMIPS :LinuxsuMIPS(ades.SGIIndy) Linux on the Road istruzioni specifiche per installare e far girare Linux su portatili, : palmari,telefonicellulariecosvia.Filediconfigurazionepersvariatimodelli MkLinux :LinuxsuApple

A.2.3 Distribuzioni

ProgettoFedora :OSsostenutodallacomunitsponsorizzatadaRedHat Mandriva

236

IntroduzioneaLinux

Ubuntu Debian TurboLinux Slackware SuSE LinuxIso.org :immaginidiCDpertutteledistribuzioni Knoppix :distribuzionechegirasuCD;nondoveteinstallarenulladaquest'ultimo DistroWatch.com :scovateunLinuxchevad'accordoconilvostrostile ...

A.2.4. Software

Freshmeat :softwarenuovo,archividisoftware OpenSSH :sitodiSecureSHell OpenOffice :suitedaufficiocompatibileMS KDE :sitodiKDesktop GNU :GNUesoftwareGNU Gnome :ilsitoufficialeGnome RPMFind :tuttiipacchettiRPM Samba :serviziMSWindowsdifileestampa Home of the OpenLDAP Project server/clienti/utilit OpenLDAP, FAQ e altra : documentazione SendmailHomepage :unaapprofonditatrattazionetecnicadellecaratteristichediSendmail, comprendenteesempidiconfigurazione Netfilter :contieneunamiscellaneadiinformazionisuiptables:HOWTO,FAQ,guide,... Sito ufficiale GIMP tutte le informazioni su GNU Image Manipulation Program : [programmaGNUdimanipolazionedelleimmagini] SourceForge.net :sitodisviluppodelsoftwareasorgenteaperto homepagedivIm

237

IntroduzioneaLinux

Appendice B. Comandi DOS contro Linux


InquestaappendiceconfrontiamoicomandiDOSconiloroequivalentiLinux. QualeulterioremezzodiorientamentoperinuoviutenticonesperienzediWindows,latabella seguenteelencadeicomandiMSDOSconilorocorrispondentiinLinux.Teneteinmenteche solitamenteicomandiLinuxhannouncertonumerodiopzioni.LeggetelepagineInfoomansul comandoperscopriredipi. TabellaB1.PanoramicadeicomandiDOS/Linux ComandiDOS <comando>/? cd chdir cls copy date del dir echo edit exit fc find format mem mkdir more move ren time ComandiLinux man<comando>oppurecomando--help cd pwd clear cp date rm ls echo vim(oaltroeditor) exit diff grep mke2fsoppuremformat free mkdir moreoppureless mv mv date

238

IntroduzioneaLinux

Appendice C. Caratteristiche della shell


Questo documento offre una panoramica delle comuni caratteristiche della shell (le stesseinognitipodishell)equelledifferenti(specifichediciascunashell).

C.1. Caratteristiche comuni


Leseguenticaratteristichesonostandardinognishell.Notatecheicomandistop,suspend,jobs,bg efgsonodisponibilisoloneisistemichesupportanoilcontrollodeiprocessi. TabellaC1.Caratteristichecomunidelleshell Comando > >> < << | & ; * ? [] () `` '' \ $var $$ $0 $n $* # Significato Redirigel'output Aggiungealfile Redirigel'input DocumentoQui(redirigel'input) Incanalamentodell'output Esegueilprocessosullosfondo Separacomandisullastessalinea Usaqualsiasicaratterenelnomedelfile Sostituisceunsingolocaratterenelnomedelfile Usaqualsiasicarattereracchiuso Esegueinunasottoshell Sostituiscel'outputdelcomandoracchiuso Apiciparziali(consentel'espansionedivariabiliecomandi) Apicitotali(nessunaespansione) Impediscel'interpretazionedelcaratteresuccessivo Usailvaloreperlavariabile IDdelprocesso Nomedelcomando ennesimoargomento(nda0a9) Tuttigliargomenticomeunasempliceparola Iniziodiuncommento

239

IntroduzioneaLinux

Comando bg break cd continue echo eval exec fg jobs kill newgrp shift stop suspend time umask unset wait

Significato Esecuzionesullosfondo Interruzionedacomandiciclici Cambiadirectory Riavviaunciclodiprogramma Mostral'output Valutadegliargomenti Esegueunanuovashell Esecuzioneinprimopiano Mostraiprocessiattivi Terminaiprocessiinfunzione Cambiaadunnuovogruppo Parametriposizionalidispostamento Sospendeunprocessosullosfondo Sospendeunprocessoinprimopiano Cronometraunprogramma Impostaoelencaipermessideifile Cancellaledefinizionidellevariabiliodellefunzioni Attendechefiniscaunprocessosullosfondo

C.2. Caratteristiche diverse


Latabellaseguentemostraleprincipalidifferenzetralashellstandard(sh),BourneAgainSHell (bash),Kornshell(ksh)elaCshell(csh). Compatibilitdelleshell Dal momento cheBourne Again SHell unsuperinsieme di sh,tutti icomandi sh funzioneranno anche con bash ma non viceversa. bash possiede molte altre caratteristichepropriee,comedimostralaseguentetabella,moltediquestesonostate incorporateprendendoledaaltreshell. PoichlaTurboCshellunsuperinsiemedicsh,tuttiicomandicshfunzionerannocon tcsh,manonilcontrario. TabellaC2.Caratteristichedifferentidelleshell

240

IntroduzioneaLinux

sh
$ >file 2>&1

bash
$ >| &>fileoppure>file2>&1 {}

ksh
$ >| >file 2>&1

csh
% >! >&file {}

Significato/Azione
Promptbasedell'utente Forzalaredirezione Redirige stdout e stderror a file Espande gli elementi in elenco

`comando` $HOME

`comando`oppure$(comando) $HOME ~ ~+,~-,dirs

$(comand o) $HOME ~ ~+,~-

`comand Sostituisce l'output del comandoracchiuso o` $home ~ =-,=N Directorypersonale(home) Simbolo della directory personale Stack della directory di accesso

var=valore

VAR=valore

Assegnazionedivariabile var=valor set e var=val ore export var=val setenv var val Imposta d'ambiente la variabile

exportvar

exportVAR=value

${nnnn} "$@" $# $? $! $ . file "$@" $# $? $! $ sourcefileoppure. file aliasx='y' case done esac exitn for/do case done esac exitn for/do

${nn} "$@" $# $? $! $ . file aliasx=y case done esac exitn for/do source file aliasxy

Possono essere referenziati pidi9argomenti Tutti gli argomenti come paroleseparate $#argv Numerodiargomenti $statu Statodiuscitadelpirecente s comandoeseguito PIDdelprocessomessosullo sfondopidirecente Opzionicorrenti Leggeicomandiinfile Il nome x sta al posto del comandoy

switch o Alternativedellascelta case end endsw Terminauncomandodiciclo Finediswitchocase

Uscitaconunostato exit (expr) foreach Ciclaconlevariabili

241

IntroduzioneaLinux

sh

bash
set-f,seto nullglob|dotglob|nocaseglob| noglob

ksh

csh
noglob

Significato/Azione
Ignora i caratteri di sostituzione per la generazionedelnomedelfile Mostraicomandisottopostia hash(aliastracciati) Ricorda la posizione dei comandi Dimentica la posizione dei comandi Elencaicomandiprecedenti Riesegue il comando precedente Riesegue l'ultimo comando cheiniziaconstr

hash hashcmds hash-r

hash hashcmds hash-r history FrecciaSu+Enteroppure!! !str !cmd:s/x/y/

aliast

hashstat

hash -t rehash cmds unhash history r rstr history !! !str

r x=y !cmd:s/ Sostituiscexconynelpi cmd x/y/ recente comando che inizia concmdepoiloesegue Prova della condizione di if((i==5)) if ((i==5)) esempio fi ulimit pwd read trap2 unalias until while/do while endif limit dirs $< onintr unalias Terminal'istruzioneif Impostailimitidellerisorse Stampaladirectoryinuso Leggedalterminale Ignoraleinterruzioni Rimuoveglialias Iniziaunciclountil Iniziaunciclowhile

if [ $i eq if[$i eq 5] 5] fi ulimit pwd read trap2 until while/do fi ulimit pwd read trap2 unalias until while/do

LaBourneAgainSHellpossiedemoltecaratteristichequinonriportate.Questatabellasoloper darviun'ideadicometaleshellincorporitutteletrovateutilidellealtreshell:noncisonospazi vuotinellacolonnadi bash.Ulterioriinformazionisullecaratteristicheriscontrabilisolamentein BashsipossonorintracciarenellepagineinfodiBash,nellasezione"BashFeatures". Maggioriinformazioni: dovresteleggerealmenounmanuale,quellodellavostrashell.Lasceltapreferibilepotrebbeessere infobash,essendobashlashellGNUelapisempliceperiprincipianti.Stampatelo,portateveloa casaestudiateloognivoltacheavete5minuti. Guardatel'AppendiceBseavetedifficoltadassimilareicomandidellashell.

242

IntroduzioneaLinux

Appendice D. GNU Free Documentation License


D.1. PREAMBLE
ThepurposeofthisLicenseistomakeamanual,textbook,orotherfunctionalandusefuldocument "free"inthesenseoffreedom:toassureeveryonetheeffectivefreedomtocopyandredistributeit, withorwithoutmodifyingit,eithercommerciallyornoncommercially.Secondarily,thisLicense preservesfortheauthorandpublisherawaytogetcreditfortheirwork,whilenotbeingconsidered responsibleformodificationsmadebyothers. ThisLicense isakindof"copyleft",whichmeansthatderivativeworks ofthedocument must themselvesbefreeinthesamesense.ItcomplementstheGNUGeneralPublicLicense,whichisa copyleftlicensedesignedforfreesoftware. We have designed this License in order to use it for manuals for free software, because free softwareneedsfreedocumentation:afreeprogramshouldcomewithmanualsprovidingthesame freedomsthatthesoftwaredoes.ButthisLicenseisnotlimitedtosoftwaremanuals;itcanbeused foranytextualwork,regardlessofsubjectmatterorwhetheritispublishedasaprintedbook.We recommendthisLicenseprincipallyforworkswhosepurposeisinstructionorreference.

D.2. APPLICABILITY AND DEFINITIONS


ThisLicenseappliestoanymanualorotherwork,inanymedium,thatcontainsanoticeplacedby thecopyrightholdersayingitcanbedistributedunderthetermsofthisLicense.Suchanotice grants a worldwide, royaltyfree license, unlimited in duration, to use that work under the conditionsstatedherein.The"Document",below,referstoanysuchmanualorwork.Anymember ofthepublicisalicensee,andisaddressedas"you".Youacceptthelicenseifyoucopy,modifyor distributetheworkinawayrequiringpermissionundercopyrightlaw. A"ModifiedVersion"oftheDocumentmeansanyworkcontainingtheDocumentoraportionofit, eithercopiedverbatim,orwithmodificationsand/ortranslatedintoanotherlanguage. A"SecondarySection"isanamedappendixorafrontmattersectionoftheDocumentthatdeals exclusivelywiththerelationshipofthepublishersorauthorsoftheDocumenttotheDocument's overallsubject(ortorelatedmatters)andcontainsnothingthatcouldfalldirectlywithinthatoverall subject.(Thus,iftheDocumentisinpartatextbookofmathematics,aSecondarySectionmaynot explain any mathematics.) Therelationship could beamatter ofhistorical connection with the subjectorwithrelatedmatters,oroflegal,commercial,philosophical,ethicalorpoliticalposition regardingthem. The"InvariantSections"arecertainSecondarySectionswhosetitlesaredesignated,asbeingthose ofInvariantSections,inthenoticethatsaysthattheDocumentisreleasedunderthisLicense.Ifa 243

IntroduzioneaLinux

sectiondoesnotfittheabovedefinitionofSecondarythenitisnotallowedtobedesignatedas Invariant.TheDocumentmaycontainzeroInvariantSections.IftheDocumentdoesnotidentify anyInvariantSectionsthentherearenone. The"CoverTexts"arecertainshortpassagesoftextthatarelisted,asFrontCoverTextsorBack CoverTexts,inthenoticethatsaysthattheDocumentisreleasedunderthisLicense.AFront CoverTextmaybeatmost5words,andaBackCoverTextmaybeatmost25words. A"Transparent"copyoftheDocumentmeansamachinereadablecopy,representedinaformat whosespecificationisavailabletothegeneralpublic,thatissuitableforrevisingthedocument straightforwardly with generic text editors or (for images composed of pixels) generic paint programsor(fordrawings)somewidelyavailabledrawingeditor,andthatissuitableforinputto text formatters or for automatic translation to a variety of formats suitable for input to text formatters.AcopymadeinanotherwiseTransparent fileformatwhosemarkup,orabsenceof markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent.AnimageformatisnotTransparentifusedforanysubstantialamountoftext.Acopy thatisnot"Transparent"iscalled"Opaque". ExamplesofsuitableformatsforTransparentcopiesincludeplainASCIIwithoutmarkup,Texinfo inputformat,LaTeXinputformat,SGMLorXMLusingapubliclyavailableDTD,andstandard conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparentimageformatsincludePNG,XCFandJPG.Opaqueformatsincludeproprietaryformats thatcanbereadandeditedonlybyproprietarywordprocessors,SGMLorXMLforwhichthe DTD and/or processing tools are not generally available, and the machinegenerated HTML, PostScriptorPDFproducedbysomewordprocessorsforoutputpurposesonly. The"TitlePage"means,foraprintedbook,thetitlepageitself,plussuchfollowingpagesasare neededtohold,legibly,thematerialthisLicenserequirestoappearinthetitlepage.Forworksin formats which do not have any title page as such, "Title Page" means the text near the most prominentappearanceofthework'stitle,precedingthebeginningofthebodyofthetext. Asection"EntitledXYZ"meansanamedsubunitoftheDocumentwhosetitleeitherisprecisely XYZorcontainsXYZinparenthesesfollowingtextthattranslatesXYZinanotherlanguage.(Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications","Endorsements",or"History".)To"PreservetheTitle"ofsuchasectionwhenyou modifytheDocumentmeansthatitremainsasection"EntitledXYZ"accordingtothisdefinition. TheDocumentmayincludeWarrantyDisclaimersnexttothenoticewhichstatesthatthisLicense appliestotheDocument.TheseWarrantyDisclaimersareconsideredtobeincludedbyreferencein thisLicense,butonlyasregardsdisclaimingwarranties:anyotherimplicationthattheseWarranty DisclaimersmayhaveisvoidandhasnoeffectonthemeaningofthisLicense.

D.3. VERBATIM COPYING


You may copy and distribute the Document in any medium, either commercially or noncommercially,providedthatthisLicense,thecopyrightnotices,andthelicensenoticesaying 244

IntroduzioneaLinux

this License applies to the Document are reproduced in all copies, and that you add no other conditionswhatsoevertothoseofthisLicense.Youmaynotusetechnicalmeasurestoobstructor controlthereadingorfurthercopyingofthecopiesyoumakeordistribute.However,youmay acceptcompensationinexchangeforcopies.Ifyoudistributealargeenoughnumberofcopiesyou mustalsofollowtheconditionsinsection3. Youmayalsolendcopies,underthesameconditionsstatedabove,andyoumaypubliclydisplay copies.

D.4. COPYING IN QUANTITY


If you publish printed copies (or copies in media that commonly have printed covers) of the Document,numberingmorethan100,andtheDocument'slicensenoticerequiresCoverTexts,you mustenclosethecopiesincoversthatcarry,clearlyandlegibly,alltheseCoverTexts:FrontCover Textsonthefrontcover,andBackCoverTextsonthebackcover.Bothcoversmustalsoclearly andlegiblyidentifyyouasthepublisherofthesecopies.Thefrontcovermustpresentthefulltitle withallwordsofthetitleequallyprominentandvisible.Youmayaddothermaterialonthecovers inaddition.Copyingwithchangeslimitedtothecovers,aslongastheypreservethetitleofthe Documentandsatisfytheseconditions,canbetreatedasverbatimcopyinginotherrespects. Iftherequiredtextsforeithercoveraretoovoluminoustofitlegibly,youshouldputthefirstones listed(asmanyasfitreasonably)ontheactualcover,andcontinuetherestontoadjacentpages. IfyoupublishordistributeOpaquecopiesoftheDocumentnumberingmorethan100,youmust eitherincludeamachinereadableTransparentcopyalongwitheachOpaquecopy,orstateinor witheachOpaquecopyacomputernetworklocationfromwhichthegeneralnetworkusingpublic hasaccesstodownloadusingpublicstandardnetworkprotocolsacompleteTransparentcopyof theDocument,freeofaddedmaterial.Ifyouusethelatteroption,youmusttakereasonablyprudent steps,whenyoubegindistributionofOpaquecopiesinquantity,toensurethatthisTransparent copywillremainthusaccessibleatthestatedlocationuntilatleastoneyearafterthelasttimeyou distributeanOpaquecopy(directlyorthroughyouragentsorretailers)ofthateditiontothepublic. It is requested, but not required, that you contact the authors of the Document well before redistributinganylargenumberofcopies,togivethemachancetoprovideyouwithanupdated versionoftheDocument.

D.5. MODIFICATIONS
YoumaycopyanddistributeaModifiedVersionoftheDocumentundertheconditionsofsections 2and3above,providedthatyoureleasetheModifiedVersionunderpreciselythisLicense,with theModifiedVersionfillingtheroleoftheDocument,thuslicensingdistributionandmodification oftheModifiedVersiontowhoeverpossessesacopyofit.Inaddition,youmustdothesethingsin theModifiedVersion: GNUFDLModificationConditions 245

IntroduzioneaLinux

A. UseintheTitlePage(andonthecovers,ifany)atitledistinctfromthatoftheDocument, and from those of previous versions (which should, if there were any, be listed in the HistorysectionoftheDocument).Youmayusethesametitleasapreviousversionifthe originalpublisherofthatversiongivespermission. B. ListontheTitlePage,asauthors,oneormorepersonsorentitiesresponsibleforauthorship ofthemodifications intheModifiedVersion,togetherwithatleastfiveoftheprincipal authorsoftheDocument(allofitsprincipalauthors,ifithasfewerthanfive),unlessthey releaseyoufromthisrequirement. C. StateontheTitlepagethenameofthepublisheroftheModifiedVersion,asthepublisher. D. PreserveallthecopyrightnoticesoftheDocument. E. Addanappropriatecopyrightnoticeforyourmodificationsadjacenttotheothercopyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permissiontousetheModifiedVersionunderthetermsofthisLicense,intheformshown intheAddendumbelow. G. PreserveinthatlicensenoticethefulllistsofInvariantSectionsandrequiredCoverTexts givenintheDocument'slicensenotice. H. IncludeanunalteredcopyofthisLicense. I. PreservethesectionEntitled"History",PreserveitsTitle,andaddtoitanitemstatingat leastthetitle,year,newauthors,andpublisheroftheModifiedVersionasgivenontheTitle Page.IfthereisnosectionEntitled"History"intheDocument,createonestatingthetitle, year,authors,andpublisheroftheDocumentasgivenonitsTitlePage,thenaddanitem describingtheModifiedVersionasstatedintheprevioussentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document forprevious versions itwas basedon.These maybeplaced inthe"History" section.Youmayomitanetworklocationforaworkthatwaspublishedatleastfouryears before theDocument itself, oriftheoriginal publisher oftheversion it refers to gives permission. K. ForanysectionEntitled"Acknowledgements"or"Dedications",PreservetheTitleofthe section,andpreserveinthesectionallthesubstanceandtoneofeachofthecontributor acknowledgementsand/ordedicationsgiventherein. L. PreservealltheInvariantSectionsoftheDocument,unalteredintheirtextandintheirtitles. Sectionnumbersortheequivalentarenotconsideredpartofthesectiontitles. M.Delete anysection Entitled "Endorsements". Such asection may notbeincluded in the ModifiedVersion. N. DonotretitleanyexistingsectiontobeEntitled"Endorsements"ortoconflictintitlewith anyInvariantSection. O.PreserveanyWarrantyDisclaimers. IftheModifiedVersionincludesnewfrontmattersectionsorappendicesthatqualifyasSecondary SectionsandcontainnomaterialcopiedfromtheDocument,youmayatyouroptiondesignate someorallofthesesectionsasinvariant.Todothis,addtheirtitlestothelistofInvariantSections intheModifiedVersion'slicensenotice.Thesetitlesmustbedistinctfromanyothersectiontitles.

246

IntroduzioneaLinux

YoumayaddasectionEntitled"Endorsements",provideditcontainsnothingbutendorsementsof yourModifiedVersionbyvariouspartiesforexample,statementsofpeerrevieworthatthetext hasbeenapprovedbyanorganizationastheauthoritativedefinitionofastandard. YoumayaddapassageofuptofivewordsasaFrontCoverText,andapassageofupto25words asaBackCoverText,totheendofthelistofCoverTextsintheModifiedVersion.Onlyone passage of FrontCover Text and one of BackCover Text may be added by (or through arrangementsmadeby)anyoneentity.IftheDocumentalreadyincludesacovertextforthesame cover,previouslyaddedbyyouorbyarrangementmadebythesameentityyouareactingonbehalf of,youmaynotaddanother;butyoumayreplacetheoldone,onexplicitpermissionfromthe previouspublisherthataddedtheoldone. Theauthor(s)andpublisher(s)oftheDocumentdonotbythisLicensegivepermissiontousetheir namesforpublicityforortoassertorimplyendorsementofanyModifiedVersion.

D.6. COMBINING DOCUMENTS


YoumaycombinetheDocumentwithotherdocumentsreleasedunderthisLicense,undertheterms definedinsection4aboveformodifiedversions,providedthatyouincludeinthecombinationall oftheInvariantSectionsofalloftheoriginaldocuments,unmodified,andlistthemallasInvariant Sections ofyourcombined work initslicense notice, andthatyoupreserve alltheir Warranty Disclaimers. ThecombinedworkneedonlycontainonecopyofthisLicense,andmultipleidenticalInvariant Sectionsmaybereplacedwithasinglecopy.IftherearemultipleInvariantSectionswiththesame namebutdifferentcontents,makethetitleofeachsuchsectionuniquebyaddingattheendofit,in parentheses,thenameoftheoriginalauthororpublisherofthatsectionifknown,orelseaunique number.MakethesameadjustmenttothesectiontitlesinthelistofInvariantSectionsinthelicense noticeofthecombinedwork. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled"Endorsements".

D.7. COLLECTIONS OF DOCUMENTS


YoumaymakeacollectionconsistingoftheDocumentandotherdocumentsreleasedunderthis License,andreplacetheindividualcopiesofthisLicenseinthevariousdocumentswithasingle copy that is included in the collection, provided that you follow the rules of this License for verbatimcopyingofeachofthedocumentsinallotherrespects. Youmayextractasingledocumentfromsuchacollection,anddistributeitindividuallyunderthis License,providedyouinsertacopyofthisLicenseintotheextracteddocument,andfollowthis Licenseinallotherrespectsregardingverbatimcopyingofthatdocument. 247

IntroduzioneaLinux

D.8. AGGREGATION WITH INDEPENDENT WORKS


AcompilationoftheDocumentoritsderivativeswithotherseparateandindependentdocumentsor works, in or ona volume ofa storage ordistribution medium, iscalled an"aggregate" if the copyrightresultingfromthecompilationisnotusedtolimitthelegalrightsofthecompilation's usersbeyondwhattheindividualworkspermit.WhentheDocumentisincludedinanaggregate, thisLicensedoesnotapplytotheotherworksintheaggregatewhicharenotthemselvesderivative worksoftheDocument. IftheCoverTextrequirementofsection3isapplicabletothesecopiesoftheDocument,thenifthe Documentislessthanonehalfoftheentireaggregate,theDocument'sCoverTextsmaybeplaced oncoversthatbrackettheDocumentwithintheaggregate,ortheelectronicequivalentofcoversif theDocumentisinelectronicform.Otherwisetheymustappearonprintedcoversthatbracketthe wholeaggregate.

D.9. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under theterms ofsection4.ReplacingInvariant Sections withtranslations requires specialpermissionfromtheircopyrightholders,butyoumayincludetranslationsofsomeorall InvariantSectionsinadditiontotheoriginalversionsoftheseInvariantSections.Youmayinclude a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers,providedthatyoualsoincludetheoriginalEnglishversionofthisLicenseandthe originalversionsofthosenoticesanddisclaimers.Incaseofadisagreementbetweenthetranslation andtheoriginalversionofthisLicenseoranoticeordisclaimer,theoriginalversionwillprevail. Ifasection intheDocument isEntitled"Acknowledgements", "Dedications", or"History", the requirement(section4)toPreserveitsTitle(section1)willtypicallyrequirechangingtheactual title.

D.10. TERMINATION
Youmaynotcopy,modify,sublicense,ordistributetheDocumentexceptasexpresslyprovidedfor underthisLicense.Anyotherattempttocopy,modify,sublicenseordistributetheDocumentis void,andwillautomaticallyterminateyourrightsunderthisLicense.However,partieswhohave receivedcopies,orrights,fromyouunderthisLicensewillnothavetheirlicensesterminatedso longassuchpartiesremaininfullcompliance.

D.11. FUTURE REVISIONS OF THIS LICENSE


TheFreeSoftwareFoundationmaypublishnew,revisedversionsoftheGNUFreeDocumentation Licensefromtimetotime.Suchnewversionswillbesimilarinspirittothepresentversion,but maydifferindetailtoaddressnewproblemsorconcerns.Seehttp://www.gnu.org/copyleft/.

248

IntroduzioneaLinux

EachversionoftheLicenseisgivenadistinguishingversionnumber.IftheDocumentspecifies thataparticularnumberedversionofthisLicense"oranylaterversion"appliestoit,youhavethe optionoffollowingthetermsandconditionseitherofthatspecifiedversionorofanylaterversion thathasbeenpublished(notasadraft)bytheFreeSoftwareFoundation.IftheDocumentdoesnot specifyaversionnumberofthisLicense,youmaychooseanyversioneverpublished(notasa draft)bytheFreeSoftwareFoundation.

D.12. ADDENDUM: How to use this License for your documents


TousethisLicenseinadocumentyouhavewritten,includeacopyoftheLicenseinthedocument andputthefollowingcopyrightandlicensenoticesjustafterthetitlepage: SampleInvariantSectionslist Copyright(c)YEARYOURNAME.Permissionisgrantedtocopy,distributeand/or modify this document under the terms of the GNU Free Documentation License, Version1.2oranylaterversionpublishedbytheFreeSoftwareFoundation;withno InvariantSections,noFrontCoverTexts,andnoBackCoverTexts.Acopyofthe licenseisincludedinthesectionentitled"GNUFreeDocumentationLicense". If you have Invariant Sections, FrontCover Texts and BackCover Texts, replace the "with...Texts."linewiththis: SampleInvariantSectionslist withtheInvariantSectionsbeingLISTTHEIRTITLES,withtheFrontCoverTexts beingLIST,andwiththeBackCoverTextsbeingLIST. IfyouhaveInvariantSectionswithoutCoverTexts,orsomeothercombinationofthethree,merge thosetwoalternativestosuitthesituation. Ifyourdocumentcontainsnontrivialexamplesofprogramcode,werecommendreleasingthese examplesinparallelunderyourchoiceoffreesoftwarelicense,suchastheGNUGeneralPublic License,topermittheiruseinfreesoftware.

249

IntroduzioneaLinux

Glossario
Questasezionecontieneunapanoramicainordinealfabeticodeicomanditrattatinel presentedocumento.

A
a2ps FormattaifileperlastampaconunastampantePostScript(v.Sezione8.1.2.). acroread VisualizzatorePDF(v.Sezione8.1.2.2.) adduser Creaunnuovoutenteoaggiornaleinformazionibasedelnuovoutente. alias Creaunaliasdishellperuncomando. alsaconf ConfiguralaschedasonorausandoildriverALSA(v.Sezione11.1.2.). alsamixer Regolal'uscitadeldispositivosonoroALSA(v.Sezione11.2.2.3.). anacron Esegueperiodicamentedeicomandi,supponendochelamacchinanonfunzionicontinuamente. apropos Cercastringheneldatabasediwhatis(v.Sezione2.3.3.2.). aptget IlprogrammadiutilitperlagestionedeipacchettidiAPT(v.Sezione7.5.3.2.). arecord Registrauncampionesonoro(v.Sezione11.2.3.) aspell Correttoredelleparole at,atq,atrm Accoda,esaminaocancellaprocessiperun'esecuzioneritardata(v.Sezione4.1.2.2.). 250

IntroduzioneaLinux

aumix Regolailmixeraudio(v.Sezione11.2.2.3.). (g)awk Linguaggiodiscansioneedelaborazionedischemi.

B
bash BourneAgainSHell(v.Sezione3.2.3.2.eSezione7.2.5.). batch Accoda,esaminaocancellaprocessiadesecuzioneritardata(v.Sezione4.1.2.2.). bg Esegueunprocessoinsottofondo(v.Sezione4.1.2.1.). bitmap UtilitdielaborazioneeconversionedibitmapperilsistemaXWindow. bzip2 Uncompressoredifileadordinamentodiblocchi(v.Sezione9.1.1.3.).

C
cardctl GestisceleschedePCMCIA(v.Sezione10.2.3.3.). cat Concatenafileelistampanellostandardoutput(v.Sezione2.2.eSezione3.2.4.). cd Cambiadirectory(v.Sezione2.2.). cdp/cdplay UnprogrammainterattivoinmodalittestopercontrollaeriprodurreCDRomaudiosottoLinux (v.Sezione11.2.1.). cdparanoia Un'utilitdiletturadiCDaudiochecomprendecaratteristicheaggiuntivediverificazionedeidati (v.Sezione11.2.1.). 251

IntroduzioneaLinux

cdrecord RegistraunCDR(v.Sezione9.2.2.). chattr Cambiagliattributideifile. chgrp Cambialaproprietdelgruppo(v.Sezione3.4.2.3.). chkconfig Aggiornaoricercainformazionidilivellod'esecuzioneperiservizidisistema(v.Sezione4.2.5.1.). chmod Cambiaipermessidiaccessoalfile(v.Sezione3.4.1.,Sezione3.4.2.1.eSezione3.4.2.4.). chown Cambiailproprietarioeilgruppodiunfile(v.Sezione3.4.2.3.). compress Comprimefile. cp Copiafileedirectory(v.Sezione3.2.2.). crontab Gestisceifilecrontab(v.Sezione4.4.4.). csh ApreunaCshell(v.Sezione3.2.3.2.). cut Rimuovesezionidaognilineadifile(v.Sezione7.2.5.2.).

D
date Stampaoimpostaoraedatadelsistema. dd Converteecopiaunfile(diskdump)(v.Sezione9.2.1.2.). df Riportal'utilizzodeldiscodapartedelfilesystem(v.Sezione3.1.2.3.).

252

IntroduzioneaLinux

dhcpcd DemoneclienteDHCP(v.Sezione10.3.8.). diff Scopreledifferenzetraduefile. dig Inviapacchettidiricercadelnomedidominioaserverdeinomi(v.Sezione10.2.6.1.). dmesg Stampaocontrollailkernelringbuffer. du Stimal'usodispaziodapartedelfile. dump Esegueunsalvataggiodisicurezzadelfilesystem(v.Sezione9.2.5.).

E
echo Visualizzaunalineaditesto(v.Sezione3.2.1.). ediff Traduttoredadiffall'inglese. egrep Extendedgrep. eject Smontaedespellesupportiremovibili(v.Sezione7.5.5.2.). emacs Avvial'editorEmacs(v.Sezione6.1.2.2.). exec Invocasottoprocessi(v.Sezione4.1.5.1.). exit Escedallashellcorrente(v.Sezione2.2.). export Aggiungefunzioniall'ambientedishell(v.Sezione3.2.1.,Sezione7.2.1.2.eSezione7.2.4.2.).

253

IntroduzioneaLinux

F
fax2ps ConverteunfacsimileTIFFinPostScript(v,Sezione8.1.2.). fdformat Formattadischifloppy(v.Sezione9.2.1.1). fdisk GestoreLinuxdellatabelladellepartizioni(v.Sezione3.1.2.2.). fetchmail PrelevalapostadaunserverPOP,IMAP,abilitatoETRNoODMR(v.Sezione10.3.2.3.). fg Portainprimopianounprocesso(v.Sezione4.1.2.1.). file Determinailtipodifile(v.Sezione3.3.1.2.). find Trovafile(v.Sezione3.3.3.3.). firefox Navigatoredirete(v.Sezione10.3.3.2.). fork Creaunnuovoprocesso(v.Sezione4.1.5.1.). formail (Ri)organizzatoredellaposta(v.Sezione10.3.2.3.). fortune Stampaunaprobabilmenteinteressantefraseacaso. ftp Serviziditrasferimentofile(insicuriamenochevengautilizzatol'accountanonimo!)(v.Sezione 10.3.4.2.).

G
galeon NavigatoregraficodellaRete. 254

IntroduzioneaLinux

gdm GnomeDisplayManager(v.Sezione4.2.4.). gedit EditorGUI(v.Sezione6.3.3.3.). (min/a)getty Controllaleperiferichedellaconsole. gimp Programmadielaborazionediimmagini. gpg Codifica,controllaedecodificaifile(v.Sezione9.4.1.2.). grep Stampalelineechecoincidonoconunoschema(v.Sezione3.3.3.4eSezione5.3.1.). groff Emulateilcomandonroffcongroff(v.Sezione8.1.2.). grub Shelldigrub(v.Sezione4.2.3.eSezione7.5.4.). gv UnvisualizzatorePostScriptePDF(v.Sezione8.1.2.2.). gvim Versionegraficadell'editorvIm(v.Sezione6.3.3.3.). gzip Comprimeedespandefile(v.Sezione9.1.1.3.).

H
halt Fermailsistema(v.Sezione4.2.6.). head Restituiscelaprimapartedeifile(v.Sezione3.3.4.3.). help Mostragliaiutiinuncomandointegratonellashell. 255

IntroduzioneaLinux

host UtilitdiDNSlookup(v.Sezione10.2.6.1). httpd ServerApachedelprotocolloditrasferimentoipertestuale(http)(v.Sezione10.3.3.1.).

I
id StampaiveriedeffettiviUIDeGID(v.Sezione3.4.1.). ifconfig Configural'interfacciadireteonemostralaconfigurazione(v.Sezione10.1.2.3.). info LeggeidocumentiInfo(v.Sezione2.3.3.1.). init Inizializzazionedelcontrollodeiprocessi(v.Sezione4.1.5.1.,Sezione4.2.4.eSezione4.2.5.). innsserv Gestiscegliscriptdiinit(v.Sezione4.2.5.1.). iostat MostralestatistichediI/O(v.Sezione4.3.5.4.). ip Mostra/cambialostatodell'interfacciadirete(v.Sezione10.2.3.1.). ipchains AmministrazionedelfirewallIP(v.Sezione10.5.4.2.). iptables AmministrazionedelfiltrodeipacchettiIP(v.Sezione10.5.4.2.).

J
jar StrumentodiarchiviazioneJava(v.Sezione9.1.1.4.). jobs 256

IntroduzioneaLinux

Elencaiprocessiinsottofondo.

K
kdm GestoredesktopdiKDE(v.Sezione4.2.4.). kedit EditorgraficodiKDE(v.Sezione6.3.3.3.). kill(all) Terminaiprocessi(v.Sezione4.1.2.1.). konqueror Gestoredifile,navigatore(aiuti)(v.Sezione3.3.2.1.). ksh ApreunashellKorn(v.Sezione3.2.3.2.). kwrite EditorgraficodiKDE(v.Sezione6.3.3.3.).

L
less moreconmaggioricaratteristiche(v.Sezione3.3.4.2.). lilo LInuxbootLOader(v.Sezione4.2.). links NavigatoreWWWinmodalittesto(v.Sezione10.2.3.2.). ln Creacollegamentitrafile(v.Sezione3.3.5.). loadkeys Caricaletabelleditraduzionedellatastiera(v.Sezione7.4.1.). locate Trovafile(v.Sezione3.3.3.3.eSezione4.4.4.).

257

IntroduzioneaLinux

logout Chiudelashellcorrente(v.Sezione2.1.3.). lp InviarichiestealserviziodistampaLP(v.Sezione8.1.). lpc Programmadicontrollodellastampantedilinea(v.Sezione8.1.). lpq Programmadiverificadellecodediattesadistampa(v.Sezione8.1.). lpr Stampaoffline(v.Sezione8.1.). lprm Rimuovelerichiestedistampa(v.Sezione8.1.). ls Listailcontenutodelladirectory(v.Sezione2.2.,Sezione3.1.1.2.eSezione3.3.1.1.). lynx NavigatoreWWWinmodalittesto(v.Sezione10.2.3.2.).

M
mail Inviaericeveposta(v.Sezione10.3.2.3.). man Leggelepagineman(v.Sezione2.3.2.). mc MidnightCommander,gestoredifile(v.Sezione3.3.2.1.). mcopy CopiafileMSDOSverso/daUnix. mdir MostraunadirectoryMSDOS. memusage Mostral'usodellamemoria(v.Sezione4.3.5.3.).

258

IntroduzioneaLinux

memusagestat Mostralestatistichesull'usodellamemoria(v.Sezione4.3.5.3.). mesg Controllagliaccessiinscritturaalvostroterminale(v.Sezione4.1.6.). mformat AggiungeunfilesystemMSDOSadundiscofloppyformattatoabassolivello(v.Sezione9.2.1.1.). mkbootdisk Creaunfloppydiavvioautonomoperlapartenzadelsistema. mkdir Creaunadirectory(v.Sezione3.3.2.). mkisofs CreaunfilesystemibridoISO9660(v.Sezione9.2.2.). more Filtrapermostraredeltestounoschermoallavolta(v.Sezione3.3.4.2.). mount Montaunfilesystemomostraleinformazionirelativeaifilemontati(v.Sezione7.5.5.1.). mozilla Navigatoreweb(v.Sezione10.2.3.2.). mplayer Riproduttore/codificatoredifilmperLinux(v.Sezione11.2.2.eSezione11.3.). mt Controllaleoperazionirelativeall'unitanastromagnetico. mtr Strumentodidiagnosiperlarete. mv Rinominaifile(v.Sezione3.3.2.).

N
named ServerdeinomididominioInternet(v.Sezione10.3.7.).

259

IntroduzioneaLinux

nautilus Gestoredifile(v.Sezione3.3.2.1.). ncftp Programmanavigatoreperserviziftp(nonsicuro!)(v.Sezione10.3.4.2.). netstat Stampa le connessioni di rete, le tabelle di instradamento, le connessioni mascherate e le appartenenzealmulticast(v.Sezione10.2.5.eSezione10.5.2.). newgrp Iscriveinununaltrogruppo(v.Sezione3.4.2.2.). nfsstat Stampalestatistichesuifilesysteminrete. nice Avviaunprogrammaconlaprioritdiesecuzionemodificata(v.Sezione4.3.5.1.). nmap Strumentodiesplorazionedellareteescannerdellasicurezza. ntpd NetworkTimeProtocolDaemon(v.Sezione7.4.3.). ntpdate ImpostadataeoratramiteunserverNTP(v.Sezione7.4.3.). ntsysv Sempliceinterfacciaperconfigurareilivellidiesecuzione(v.Sezione4.2.5.1.).

O
ogle LettorediDVDconilsupportodeimenuDVD(v.Sezione11.3.).

P
passwd Cambialapassword(v.Sezione2.2.eSezione4.1.6.). pccardctl 260

IntroduzioneaLinux

GestisceleschedePCMCIA(v.Sezione10.2.3.3.). pdf2ps ConvertitoreGhostScriptdaPDFaPostScript(v.Sezione8.1.2.). perl PracticalExtractionandReportLanguage. pg Outputtestualedipagina(v.Sezione3.3.4.2.). pgrep Ricercadiprocessiinbasealnomeodaltriattributi(v.Sezione4.1.4.). ping Inviaunarichiestadiecoadunhost(v.Sezione10.2.6.2.). play Riproduceuncampionesonoro(v.Sezione11.2.3.). pr Convertefileditestoperlastampa. printenv Stampatuttoopartedell'ambiente(v.Sezione7.2.1.). procmail Elaboratoredipostaautonomo(v.Sezione10.3.2.3.). ps Restituiscelostatodeiprocessi(v.Sezione4.1.4.eSezione4.3.5.4.). pstree Mostraunalberodeiprocessi(v.Sezione4.1.4.). pwd StampalaPresentWorkingDirectory,ladirectorydilavorocorrente(v.Sezione2.2.).

Q
quota Mostral'usodeidischiedilimiti(v.Sezione3.2.3.3.).

261

IntroduzioneaLinux

R
rcp Copiainremoto(nonsicuro!). rdesktop ClientediprotocolloRemoteDesktop(v.Sezione10.4.6.). recode Converteifileinunaltroinsiemedicaratteri(v.Sezione7.4.4.). renice Alteralaprioritdiesecuzionedeiprocessi(v.Sezione4.3.5.1.). rlogin Loginremoto(telnet,nonsicuro!)(v.Sezione10.4.2.eSezione10.5.2.). rm Rimuoveunfile(v.Sezione3.3.2.). rmdir Rimuoveunadirectory(v.Sezione3.3.2.2.). roff Uncompendiodelsistemaditypsettingdiroff(v.Sezione8.1.2.). rpm GestoredipacchettiRPM(v.Sezione7.5.2.1.). rsh Shellremota(nonsicura!)(v.Sezione10.4.2.). rsync Sincronizzaduedirectory(v.Sezione9.3.).

S
scp Copiaremotasicura(v.Sezione10.4.4.4.). screen GestoredelloschermoconemulazioneVT100(v.Sezione4.1.2.1.). 262

IntroduzioneaLinux

set Mostra,impostaomodificaunavariabile. setterm Impostagliattributiditerminale. sftp FTPsicuro(criptato)(v.Sezione10.4.4.1.). sh Apreunashellstandard(v.Sezione3.2.3.2.). shutdown Spegneilsistema(v.Sezione4.2.6.). sleep Attendeperuncertotempo(v.Sezione4.4.1.). slocate VersionediavanzatasicurezzadiGNUlocate(v.Sezione3.3.3.3.). slrnn ClienteUsenetinmodalittesto(v.Sezione10.2.6.). snort Strumentodiscopertadelleintrusioniinrete. sort Riordinalelineedifileditesto(v.Sezione5.3.2.). spell Controlloortografico(v.Sezione5.1.2.3.). ssh Shellsicura(v.Sezione10.4.4.). sshkeygen Generazionedichiavediautenticazione,gestioneeconversione(v.Sezione10.4.4.5.). stty Cambiaestampaleimpostazionidellalineaditerminale. su Cambiautente(v.Sezione3.2.1.,Sezione7.5.3.2.eSezione10.4.6.). 263

IntroduzioneaLinux

T
tac Concatenaestampaifilealcontrario(v.cat). tail Restituiscel'ultimapartedeifile(v.Sezione3.3.4.3.). talk Parlareconunutente. tar Utilitdiarchiviazione(v.Sezione9.1.1.1.). tcsh ApreunashellTurboC(v.Sezione3.2.3.2.). telinit Inizializzazionedelcontrollodeiprocessi(v.Sezione4.2.5.). telnet InterfacciautentealprotocolloTELNET(nonsicuro!)(v.Sezione10.4.2.). tex Performattareedimpostaretipograficamenteuntesto(v.Sezione8.1.2.). time Temporizzaunsemplicecomandoorestituiscel'utilizzodellerisorse(v.Sezione4.3.2.). tin Programmadiletturadellenews(v.Sezione10.3.6.). top Mostraiprocessiordinatiinbaseall'occupazionedellaCPU(v.Sezione4.1.4.,Sezione4.3.5.3.e Sezione4.3.5.4.). touch Cambialemarchetemporalideifile(v.Sezione7.1.2.1.). traceroute Stampaipacchettidiinstradamentopresidall'hostdirete(v.Sezione10.2.6.3.). tripwire 264

IntroduzioneaLinux

Unverificatoredell'integritdeifilepersistemiUNIX(v.Sezione10.4.5.). troff Formattadocumenti(v.Sezione8.1.2.). tvtime Un'applicazionetelevisivadialtaqualit. twm TabWindowManagerperilsistemaXWindow.

U
ulimit Controllalerisorse(v.Sezione7.1.2.5.). umask Impostalamascherautentedellacreazionedifile(v.Sezione3.4.2.3.). umount Smontaunfilesystem. uncompress Decomprimefilecompressi. uniq Rimuovelelineeduplicatepartendodaunfileordinato(v.Sezione5.3.2.). up2date AggiornamentodeipacchettiRPM(v.Sezione7.5.3.3.). update Demonedelkernelperripulireibuffersporchiversoildisco. updaterc.d Configuragliscrptdiinizializzazione(v.Sezione4.2.5.1.). uptime Mostradaquantoinfunzioneilsistemaeilcaricomedio(v.Sezione4.1.4.eSezione4.3.5.2.). urpmi AggiornaipacchettiRPM(v.Sezione7.5.3.3.). userdel 265

IntroduzioneaLinux

Cancellaunaccountdiutenteedirelativifile.

V
vi(m) Avvial'editorvi(ovi"improved")(v.Sezione6.1.2.3.). vimtutor IltutorialdiVim. vmstat Riportalestatistichedellamemoriavirtuale(v.Sezione4.3.5.4.).

W
w Mostrachicollegatoecosastafacendo. wall Inviaunmessaggioalterminalediognuno(v.Sezione4.1.6.). wc Stampailnumerodibyte,paroleelineecontenuteneifile(v.Sezione3.2.1.). which Mostral'interopercorsodeicomandi(dishell)(v.Sezione3.2.1.eSezione3.3.3.2.). who Mostrachicollegato(v.Sezione4.1.6.). whoami Stampal'effettivoIDdiutente. whois Interrogaundatabasewhoisodisoprannomi(v.Sezione10.2.6.4.). write Inviaunmessaggioadunaltroutente(v.Sezione4.1.6.).

266

IntroduzioneaLinux

X
xargs Creaedeseguedellelineedicomandoapartiredaunostandardinput(v.Sezione3.3.3.3.). xauth ProgrammadiutilitperifileXauthority. xawtv UnprogrammaX11perguardarelaTV. xcdroast Interfacciagraficadicdrecord(v.Sezione9.2.2.). xclock Orologioanalogico/digitaleperX. xconsole ControllaimessaggidellaconsoledisistemaconX. xdm XDisplayManagerconsupportoperXDMCP,conselettoredihost(v. Sezione4.2.4.e Sezione 7.3.2.). xdvi VisualizzatorediDVI(v.Sezione8.1.2.2.). xedit EditorgraficoXWindow(v.Sezione6.3.3.3.). xfs ServerXdifont. xhost ProgrammaperXdicontrollodegliaccessiaiserver(v.Sezione10.4.3.2.). xine Unlettorevideogratuito(v.Sezione11.3.). xinetd IldemoneestesodiserviziInternet(eXtendedInterNETservicesDaemon)(v.Sezione10.3.1.2.). xload VisualizzazionesottoXdellamediadeicarichidisistema(v.Sezione4.3.5.6.). 267

IntroduzioneaLinux

xlsfonts VisualizzatoreperXdell'elencodeiserverdifont. xmms LettoreaudioperX(v.Sezione11.2.2.1.). xpdf VisualizzatorediPDF(v.Sezione8.1.2.2.). xterm EmulatorediterminaleperX.

Y
yast StrumentodiamministrazionedelsistemacontenutonelNovellSuseLinux. yum AggiornapacchettiRPM(v.Sezione7.5.3.3.).

Z
zapping UnvisoreTVperambienteGnome. zcat Comprimeoespandefile. zgrep Ricercaespressioniregolaripossibilmenteall'internodifilecompressi. zmore Filtroperlavisioneditesticompressi.

Indice

268