Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduzione a Linux
Una guida pratica
Machtelt Garrels
Garrels.be
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.
10
IntroduzioneaLinux
LaguidastatatradottainHindida:
AndreaMontagnerhatradottolaguidainitaliano.
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!
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.
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
IntroduzioneaLinux
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
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.
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.
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.
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:
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.
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
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.
23
IntroduzioneaLinux
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
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.
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:
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?
IntroduzioneaLinux
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]
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.
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.
32
IntroduzioneaLinux
aproposstringa cercaneldatabasewhatislastringa
IntroduzioneaLinux
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
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.
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.
IntroduzioneaLinux
comando.ImpiegateQperuscire.Ilprogrammainfohamaggioriinformazioni.
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.
39
IntroduzioneaLinux
--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>.
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!
Verificatesestatelavorandoinmodalittestoografica. Stolavorandoinmodalittesto/grafica(barratequellasbagliata)
42
IntroduzioneaLinux
2.5.2. Password
Autenticatevinuovamenteconivostrinomeutenteepassword.
CambiatelapasswordinP6p3.aa!ebatteteiltastoInvio. >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 >Cosaaccade?
Ripeteteduevolteilpasso2. >Cosaaccade?
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.
Leggetels--helpesperimentate.
45
IntroduzioneaLinux
IntroduzioneaLinux
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).
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:
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:
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:
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.
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
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/
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.
/var
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:
L'unica informazione noninclusa inuninode ilnome delfileedella directory. Questi sono conservatiinspecialifiledidirectory.Confrontandoinomideifileeinumeridiinode,ilsistema ingradodicostruireunastrutturaadalberocomprensibileperl'utente.Gliutentipossonovederei numeridiinodeutilizzandol'opzione-iconls.Gliinodedispongonodiunpropriospazioseparato neldisco.
IntroduzioneaLinux
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.
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/
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
3.2.3.2.3. Quale shell sto usando? Senonsapetequaleshell stateutilizzando, potete siacontrollare lalineadelvostroaccountin /etc/passwd,siadareecho$SHELLcomecomando.
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.
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
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).
X11
xinetd.*oinetd.conf
Nelcorsodiquestaguidaimpareremodipisuquestifileenestudieremoalcuniindettaglio.
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.
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
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
Oct 30 1999 Radio/ Jan 7 2001 index.html Oct 20 17:32 Singles/ Dec 4 23:22 gene/ Dec 21 11:40 Albums/
IntroduzioneaLinux
Maggioriindicazionisitrovanonellapaginaman.Neiprimitempilestesseinformazioni[sultipo difile]venivanorappresentateapplicandodeisuffissiadogninomedifilenonstandard.Perl'usoin monocromatico(comelastampadiunelencodidirectory)eperunaleggibilitgenerale,ancora utilizzatoquestoschema: Tabella36.Schemabasedeisuffissiperls Carattere nessuno / * @ = | Tipodifile filenormale directory fileeseguibile collegamento socket namedpipe
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.
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.
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
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.
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'
IntroduzioneaLinux
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
Permantenereilpercorsopibrevepossibile,inmodotalecheilsistemanondebbacercaretroppo alungoognivoltacheunutentevuoleeseguireunprogramma,aggiungeremo/usr/local/bin alpercorsoenonlealtredirectory,contentisolamenteifilebinaridiunospecificoprogramma, mentre/usr/local/bincontienealtriutiliprogrammi. Dinuovo:unadescrizionedellefunzionalitcompletedi find edi locate possonoesseretrovate nellepagineInfo.
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
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
headfunzionainmodosimile.Ilcomandotailhaunautilefunzionedimostrareincontinuazionele ultime n linee diun file che cambia costantemente. Tale opzione -f viene spesso usata dagli amministratoridisistemapercontrollareifiledilog(maggioriinformazionisitrovanoneifiledi documentazionedelsistema).
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
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.
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
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
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.
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)
83
IntroduzioneaLinux
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
85
IntroduzioneaLinux
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.
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
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
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?
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?
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?
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.
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.
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
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
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
IntroduzioneaLinux
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
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
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
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.
IntroduzioneaLinux
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.
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
23 23 23 20
tty
L'utentejennyricevequestosulsuoschermo:
Message from joe@lo.callhost.org on ptys/1 at 12:36 ... hey Jenny, pranziamo assieme? EOF
102
IntroduzioneaLinux
GRUBfornisceunveroambientepreSistemaOperativo,basatosucomandi, per macchinex86checonsentelamassimaflessibilitnelcaricaresistemioperativicon certeopzionionelraccogliereinformazionisulsistema. GRUBsupportalamodalitdiindirizzamentologicodeiblocchi(LBAo Logical blockAddressing),necessariaperaccedereamoltidischifissiIDEeatuttiquelli SCSI.PrimadiLBAidischifissipotevanoandareincontroallimitedelcilindro 1024oltrealqualeilBIOSpotevanontrovareunfile. IlfilediconfigurazionediGRUBvienelettodaldiscoognivoltacheilsistemasi 103
IntroduzioneaLinux
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.
# 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
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.
108
IntroduzioneaLinux
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:
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.
IntroduzioneaLinux
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.
IntroduzioneaLinux
deglieventi). Evitare al sistema lo svolgimento di lavoro non necessario: fermate demoni e programminonutilizzati,usatelocatealpostodiunpesantefind,... Avviategrossijobconunaprioritbassa
Retesovraccarica: la quantit di dati trasportati sulla rete maggiore della sua capacit, con conseguenteesecuzionelentadiqualsiasioperazionediretepertuttigliutenti.Cisi
112
IntroduzioneaLinux
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.
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).
IntroduzioneaLinux
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-
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.
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.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
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.
IntroduzioneaLinux
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
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.
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
121
IntroduzioneaLinux
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
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
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.
Il comando date scriverebbe sull'ultima linea sullo schermo: adesso invece la aggiunge al file listadesideri.
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
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
126
IntroduzioneaLinux
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.).
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
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
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.
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
6.1.2.1. ed
L'editoredorientatoallalineaeutilizzatopercreare,mostrare,modificareemanipolareinaltri modiifiletestuali,siainmanierainterattivasianell'usocongliscriptdishell. 131
IntroduzioneaLinux
edl'originaleeditorditestodellemacchineUNIXeperciampiamentedisponibile.Comunque permoltiscopistatosuperatodaglieditoratuttoschermocomeemacsevi(v.sotto).
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.
IntroduzioneaLinux
Normalmentepossibilemuoversineltestoconitastifreccia.Secosnonfosse,provate:
SHIFTGspostailcursoreallafinedeldocumento.
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
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.
135
IntroduzioneaLinux
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.
IntroduzioneaLinux
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
l'organizzazionedelvostroambiente ifilenormalidiconfigurazionedellashell laconfigurazionedellashell laconfigurazionedelprompt laconfigurazionedell'ambientegrafico leapplicazionesonoreevideo igestoridelvideoedellefinestre ilfunzionamentodelsistemaclientserverdiX leimpostazionidellalinguaedeifont l'installazionedinuovosoftware l'aggiornamentodeipacchettiesistenti
Createunadirectorybinperivostrifileescript. Organizzateifilenoneseguibiliindirectoryappropriateediquestecreateneapiacimento: peresempiocreatedirectorydistinteperleimmagini,idocumenti,iprogetti,ifilescaricati, ifoglielettronici,ifilepersonali,ecosvia. Rendeteprivateledirectoryconilcomandochmod700 nomedirectory. Dateaivostrifilenomisensati,come Lamentela al primo ministro 050302, piuttostodilettera1.
IntroduzioneaLinux
Lanciateilcomandoquotavpervederequantospaziorimasto.
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
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
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.
IntroduzioneaLinux
affinch i programmi che ricercano un nome non restino bloccati ma vengano indirizzati al corretto/correntenomedellelibreriedicuihannobisogno.
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.
141
IntroduzioneaLinux
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.).
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.
IntroduzioneaLinux
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.
Tutti gli script di shell leggibili dalla directory /etc/profile.d vengono letti ed eseguiti. Questisvolgonoazionicomeabilitarecolorls,crearel'aliasviavim,impostarelevariabililocali, ecc.Lavariabiletemporanea ivienedisattivataperimpedirechedisturbiilcomportamentodella shellpitardi.
Questo file molto chiaro istruisce la vostra shell a leggere per prima cosa ~/.bashrc e poi ~/.bash_login.Trovereteilcomandointernoallashellsourceregolarmentequandolavoratein unambientedishell:siusaperapplicareicambiamentidellaconfigurazioneall'ambientecorrente.
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.
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
Diamoun'occhiatapiapprofonditaacomefunzionanoquestiscriptnellaprossimasezione.Tenete infobashaportatadimano.
Cambiandoorailprompt,dandoperesempioilcomandoPS1="->",potremosempreritornarea quello originario con il comando PS1=$MYPROMPT. Naturalmente, lo ritroverete anche alla riconnessione tuttelevoltechevigingillerete appenaconilpromptnellalineadicomando ed eviteretediinserirloinunfilediconfigurazionedellashell.
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.
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.
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
150
IntroduzioneaLinux
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.
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.
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
IntroduzioneaLinux
Questodibase.Peradeguarloallevostreimpostazionilocali,modificatelosostituendoilvaloretra le virgolette con uno qualsiasi dei nomi elencati nelle sottodirectory della vostra directory keymaps.Senonriusciteatrovarelemappaturedeitasti,provateafarapparirenelvostrosistema 155
IntroduzioneaLinux
alfile/etc/bash.
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.
IntroduzioneaLinux
serbo,slovacco,sloveno,spagnolo,thaieturco.
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
Osservatecheladisinstallazionedibasenonquella"verbosa":normalechenonvediatemoltodi cichestasuccedendo.Incasodidubbi,usatedinuovorpm-qaperverificarecheilpacchettosia statorimosso. RPM pu fare molto dipidella coppia difunzioni elementari che abbiamo trattato inquesta introduzione:RPMHOWTOcontieneulterioriinformazioni. 159
IntroduzioneaLinux
MaggioriinformazionisipossonotrovarenellepagineInfodedicateadpkg.
IntroduzioneaLinux
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.
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.
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.
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
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
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
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
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
Qual'lostatodella/emia/estampante/i? lpstat-p
davy:~> lpstat -d printer blob now printing blob253. enabled since Jan 01 18:01
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
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).
IntroduzioneaLinux
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.
171
IntroduzioneaLinux
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
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:
174
IntroduzioneaLinux
Glieserciziseguentipossonoesseresvoltisenzastampanteoaccessodiroot.
175
IntroduzioneaLinux
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.
-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".
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
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.
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.
180
IntroduzioneaLinux
Dopocheildischettostatoformattato,possibilemontarlonelfilesystemedutilizzarlocomeuna 181
IntroduzioneaLinux
182
IntroduzioneaLinux
Max brk space used 37e84 166768 extents written (325 Mb)
Ora,asecondadelvostromasterizzatore,aveteiltempoperfumare,mangiareunsalutarepezzodi fruttae/obereuncaff.Alterminedelprocessootterreteunmessaggiodiconferma:
Track 01: Total bytes read/written: 341540864/341540864 (166768 sectors).
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.
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.
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.
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.
IntroduzioneaLinux
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
IntroduzioneaLinux
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.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
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:
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:
193
IntroduzioneaLinux
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.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
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.
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
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.
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.
IntroduzioneaLinux
ParleremoinquestasezionesoltantodialcunicomunistrumentitestualidiUNIX/Linux.
Similiinformazionipossonoesserevisualizzateusandoilcomandodig,chednozioniaggiuntive sucomeirecordvengonoregistratinelserverdeinomi.
Inalcunisistemitraceroutestatorinominatotracepath.
IntroduzioneaLinux
IntroduzioneaLinux
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
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.
pumanipolareiflagpersistentidellostatodeimessaggi; pusiaconservarealmeglioimessaggidipostacoscomeridistribuirli;
202
IntroduzioneaLinux
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.
IntroduzioneaLinux
Amaya ilnavigatore diW3C. Opera unnavigatore commerciale, compatto erapido. Molti gestorididesktopoffronofunzionidinavigazionewebneilorogestoridifile,comenautilus. Fraidiffusinavigatoribasatisultestocisonolynkelinks.Potresteaverenecessitdiinstallaredei serverproxynellavostrashellimpostandolevariabiligiuste.Inavigatoritestualisonovelocie maneggevoliquandonondisponibileunambientegrafico,comequandosiusanonegliscript.
Peresempio:
exporthttp_proxy=http://willy:Appelsi3ntj3@proxy:80
Senonviservedareunnomeutenteeunapassword,escludetesemplicementeognicosaprimadel segno@compreso.
IntroduzioneaLinux
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.).
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).
IntroduzioneaLinux
abbiagiavutoivostriproblemi,abbiatrovatounasoluzione,poipostatainunodeinewsgroup.
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.
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
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.
212
IntroduzioneaLinux
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.
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
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.
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.
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.
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:
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:
Fermate i servizi attivi usando il comando chkconfig, gli initscript o modificando i file di configurazionedi(x)inetd.
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.
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.
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.
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.
222
IntroduzioneaLinux
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!
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
225
IntroduzioneaLinux
IntroduzioneaLinux
ALSA
in
http://www.alsaproject.org/alsa
La configurazione dei sistemi dotati diALSA sieffettua conlostrumento alsaconf.Inoltre le distribuzionidisolitomettonoadisposizioneipropristrumentiperconfigurarelaschedasonora; talistrumentipotrebberoancheintegrareilvecchioedilnuovomododigestireleperifericheaudio.
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%
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.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
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:
231
IntroduzioneaLinux
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
"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
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
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.
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
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
238
IntroduzioneaLinux
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
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
`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
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
aliast
hashstat
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
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.
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.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.
IntroduzioneaLinux
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.
248
IntroduzioneaLinux
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
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
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
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
Y
yast StrumentodiamministrazionedelsistemacontenutonelNovellSuseLinux. yum AggiornapacchettiRPM(v.Sezione7.5.3.3.).
Z
zapping UnvisoreTVperambienteGnome. zcat Comprimeoespandefile. zgrep Ricercaespressioniregolaripossibilmenteall'internodifilecompressi. zmore Filtroperlavisioneditesticompressi.
Indice
268