Professional Documents
Culture Documents
sistemi Linux
autore
Gavino Mura
anno 2010
2/69
Indice generale
1IsistemiLinux...................................................................................................................................4
1.1CosaunsistemaLinux............................................................................................................4
1.2LimportanzadiLinux...............................................................................................................5
1.3LedistribuzionidiLinux...........................................................................................................6
2Lagestionedelfilesystem.................................................................................................................9
2.1Premessa....................................................................................................................................9
2.2Lepartizionidiundisco..........................................................................................................10
2.3Isistemiinraid........................................................................................................................13
2.4Ilogicalvolume.......................................................................................................................18
2.5Operazionisuifilesystem.........................................................................................................21
2.6Organizzazionedelledirectory................................................................................................23
3InstallazionediunadistribuzioneLinux.........................................................................................25
4Lagestionedeipacchettidiinstallazione........................................................................................28
4.1Idifferentisistemidigestione.................................................................................................28
4.2IlsistemadigestioneApteAptitude.......................................................................................29
4.3IlpacchettoAlien.....................................................................................................................31
4.4IlsistemadigestioneYum.......................................................................................................32
5Lashelldisistema...........................................................................................................................33
5.1Premessa..................................................................................................................................33
5.2Scriptsdiesempio....................................................................................................................34
6Lagestionedellesicurezza..............................................................................................................39
6.1Premessa..................................................................................................................................39
6.2Gliutentidelsistema...............................................................................................................39
6.3Idirittisulfilesystem...............................................................................................................41
6.4AppArmor................................................................................................................................44
7Iservizidibase................................................................................................................................47
7.1Iservizidirete.........................................................................................................................47
7.2Ilservizioditempontp............................................................................................................50
7.3Ilserviziossh...........................................................................................................................53
8L'ottimizzazionedelsistema............................................................................................................56
8.1Premessa..................................................................................................................................56
8.2Iparametridelkernel...............................................................................................................56
8.3Labuffercache........................................................................................................................58
8.4Lacompilazionedelkernel......................................................................................................59
8.5Gliscriptsdiavvioalboot.......................................................................................................61
9Ilbackupdelsistema.......................................................................................................................64
9.1Premessa..................................................................................................................................64
9.2Ilbackupdiunapartizione.......................................................................................................64
9.3Ilbackuptramitetar.................................................................................................................66
9.4Usodellesnapshotdilv...........................................................................................................67
Bibliografia.........................................................................................................................................69
Libri...............................................................................................................................................69
Sitiweb..........................................................................................................................................69
3/69
IsistemiLinux
1.1
CosaunsistemaLinux
Linux unterminechepuassumerepidiunsignificato.Asecondadelcontestoinfattipu
indicareilkernel1originariamentesviluppatodaLinuxTorvalds,oppureilsistemaoperativobasato
sutalekernel.DalmomentocheilsistemaoperativobasatosukernelLinuxincludemoltosoftware
delprogettoGNU2(logo
),laFreeSoftwareFoundation3insistenell'affermarecheper
indicarlo bisognerebbe usareiltermine GNU/Linux,tuttavia l'accezione dellaparola Linux
comenomedell'interosistemaoperativoormaientratadatemponell'usocomune,siainambito
tecnico/scientificocheinambitopopolare.PerindicareilsistemaoperativobasatosukernelLinux,
sipossonoquindiutilizzareindifferentementeiltermineGNU/LinuxoiltermineLinux.
LalicenzaadottatadalsistemaoperativoLinuxlaGPL,ogeneralpubliclicense,chepermette
allutente libert di utilizzo, copia, modifica e distruzione. Se l'utente distribuisce copie del
software,deverenderedisponibileil codicesorgenteaogniacquirente,inclusetuttelemodifiche
eventualmenteeffettuate.
IlprogettodelkernelancoraoggidirettodaTorvalds,mentrealtrepartidelsistema,comele
componentiGNU,sonosviluppateseparatamente.Ilcompitodifornireunsistemaintegrato,che
combina tutte le componenti di base con le interfacce grafiche (come per esempio GNOME 4
oKDE5
,chealorovoltasibasanosullapresenzadell'XWindowSystem6)
econilsoftwareapplicativo,vieneorasvoltodalledistribuzioni.
Nel1996fusceltocomelogoufficialediLinuxunpinguino
disegnatodaLarryEwinge
adessovennedatoilnomediTUXcomeabbreviazionediTorvaldsUniX.Altrefontisostengonosi
trattidell'abbreviazionediTUXedocheininglesesignificailnostro"giaccaecravatta"acausa
dellacolorazionedelcorpodelpinguino.
1
ilkernellelementofondamentalediunsistemaoperativo.Sitrattadiunsoftwareaventeilcompitodifornireai
programmiinesecuzionesull'elaboratoreunaccessosicuroecontrollatoall'hardware.
2
GNUunacronimoesignificaGNUisNotUnix.Eunprogettoperlarealizzazionedisoftware,lanciatonel1983
daRichardStallman,chesibasasuunagestioneparticolaredeidirittid'autore,secondoladefinizionedisoftwarelibero
(contrappostaasoftwareproprietario).
3
FondazioneperilSoftwareLibero,detentricedelcopyrightdelsoftwareGNU.
4
Network Object Model Environment(GNOME)unambientedisviluppoperinterfaccegrafichechepermettedi
usareuncomputertramitel'interazioneconoggettigrafici,comeleiconeelefinestredeiprogrammi.
5
KDesktopEnvironment,comerecitalapaginadibenvenutodellasuadocumentazione,unambientedesktopgrafico
perpostazionidilavoroUnix.
6
XWindowSystem,notoingergocomeXWindowoX11oancorpisemplicementeX,difattoilgestoregrafico
standardpertuttiisistemiUnix.
Universit degli Studi di Sassari CED
4/69
OggiGNU/Linuxrestailsistemaoperativopreferitodamigliaiadiprogrammatorisparsiintuttoil
mondo,usatosoprattuttocomeserverinambientidiproduzioneegodedelsupportodisociet
comeIBM,SunMicrosystems,HewlettPackard,eNovell.Ultimamentehaconosciutoanchelasua
affermazioneinambientedesktopesusistemiembeddedcomecellulariepalmari.
1.2
LimportanzadiLinux
GNU/Linux il prodotto di appassionati indipendenti creato per pura sfida intellettuale, senza
vincolicommerciali.Questohageneratodueimportanticonseguenze:
L'aspetto della libert del programma mette al centro l'utente garantendogli la possibilit di
visionareemodificareicodicisorgenti,lapossibilitdiusareilsoftwareperqualsiasiscopo,la
possibilitdiridistribuirlonelformatooriginarioodaluimodificato.IlsistemaGNU/Linux,anche
seinmodovariabiletralediversedistribuzioni,moltotrasparente,configurabileeadattabilead
ambitidisparati,adifferenzadimoltisistemioperativicommercialichesacrificanoilcontrollodella
macchinainfavoredellafacilitd'uso.Questafilosofiapermetteloscambiodiinformazionitragli
utentieiprogrammatoriehacomerisultatounprodottocherisultaavereprestazionimiglioriin
alcuniambitirispettoagliattualiconcorrenticommerciali.
GNU/Linux meno esposto degli altri sistemi operativi ai virus7 ed in genere ai malware8
informaticipervarimotivi:
l'infezionediunamacchinadisolitolimitataalsingoloutenteequindinoncompromette,
dinorma,l'interosistemaoperativo;
quando viene scoperto un problema in un prodotto di software libero si ha la patch
(correzione)disolitonelgirodipocheoreogiornirendendovanelepossibilitdiunvirus
disfruttaretalefalla;
chi sviluppa software maligno, generalmente, desidera colpire il maggior numero di
macchine possibile: data la diffusione di Windows assai maggiore rispetto a quella di
sistemioperativibasatisuLinux,tendenzialmenteilmalwareincircolazioneprogettato
perinfettaremacchineWindows,quindiincompatibileconLinux(soloraramentei virus
sonomultipiattaforma);
gliutentidiLinuxsonomenonumerosi,mapipreparatitecnicamenteoconosconoperlo
menoalcunedellebasidiunsistemaoperativo,sonoconsapevolidicosastianofacendoe
qualesiailrisultatochevoglionoottenere.
Nellinformaticaunvirusunframmentodisoftwarecheingrado,unavoltaeseguito,diinfettaredeifileinmodo
dariprodursifacendocopiedisstesso,generalmentesenzafarsirilevaredall'utente.
8
Sidefiniscemalwareunqualsiasisoftwarecreatoconilsoloscopodicausaredannipiomenogravialcomputersu
cuivieneeseguito.
7
5/69
1.3
LedistribuzionidiLinux
Nonesisteun'unicaversionediGNU/Linux,maesistonodiversedistribuzioni,solitamentecreate
dacomunitdisviluppatoriosociet,chepreparanoescelgonoipacchettidaincludere.Tuttele
distribuzionicondividonoilkerneldiLinux,mentresidifferenzianotraloroperilcosiddettoparco
software,cioipacchettipreparatie/oselezionatidaglisviluppatoriperladistribuzionestessa,per
ilsistemadigestionedelsoftwareeperiservizidiassistenza/manutenzioneofferti.
EsistonodistribuzionieseguibilidirettamentedaCDoDVDsenzachesiarichiestal'installazione
sulpropriocomputer,perquestosonochiamatedistribuzioniliveepermettonodiprovareun
sistemaoperativoLinuxsenzadovercancellaree/omodificareilsistemaoriginario.
Alcune tra le principali distribuzioni Linux sono:
RehHat
(ocappellorosso,perviadelsuologo),unadistribuzionedipropriet
dellasocietcommercialeRedHatInc.9,chenevendeilsupportosoftware,scaricabilee
usabile in prova, previa registrazione sul sito della societ stessa. E stata la prima
distribuzionediLinuxausareilformatoRPMPackageManager10comesistemadigestione
deipacchetti, cheusaatuttoraintegratoinyum(YellowdogUpdaterModified)11,enel
temposervitacomepuntodipartenzapermoltealtredistribuzioni.
Fedora
unadistribuzioneLinuxcuratadal ProgettoFedora,unprogettoopen
sourcesponsorizzato(manondirettamentesupportato)daRedHatInc.esupportatodalla
community12.
Debian
, creata dal Debian Project, una distribuzione di software libero
largamenteusataesviluppataattraversolacollaborazionedivolontari daognipartedel
mondo.DebianconosciutaperlasuaaderenzaallefilosofiediGNUedelsoftwarelibero,
lerigidepoliticheriguardoallaqualitdeipacchettielerelease,ilmodoapertodisviluppare
etestareilsoftwareelalibertdisceltaconcessaall'utente.Debiansostenutadadonazioni
attraversoSoftwareinthePublicInterest(SPIInc.),unaorganizzazione nonprofitperi
progetti di software libero. Il suo sistema di gestione dei pacchetti software APT
(Advanced Packaging Tool), che integra un sistema di risoluzione delle dipendenze, la
RedHatInc.statalaprimasocietfornitricedisoluzioniopensource(acodiceaperto,ciofornitaconilcodice
sorgente)adesserequotataallaborsadeititolitecnologicidiWallStreet.
10
RPMunsistemadigestionedeipacchetti,utilizzatoperinstallare,verificare,aggiornareedisinstallareipacchettidi
unadistribuzione.
11
YellowdogUpdater,Modified(YUM)unsistemadigestionedeipacchettiopensourcealineadicomandoperi
sistemioperativiLinuxcompatibilicolformatoRPM.
12
Unacomunitvirtualeocomunitonlineuninsiemedipersoneinteressateadundeterminatoargomentocomune
checorrispondonotraloroattraversoInternet.
9
6/69
13
14
Ubuntu
, una distribuzione GNU/Linux nata nel 2004 ebasata su
Debian, che si concentra sulla facilit di installazione e d'uso e sul rilascio regolare
(semestrale) delle nuove versioni. Rispetto a Debian, Ubuntu ha un orientamento pi
spiccato verso l'utilizzo desktop e una maggiore attenzione al supporto hardware dei
portatili. Finanziata dalla societ Canonical Ltd (registrata nell'Isola di Man), rimane
comunqueintuttoepertuttounsoftwarelibero.IlnomederivadaunaanticaparolaZulu
diffusainvariepartidell'Africaechecorrispondeindicativamentealconcettodiumanit
versoglialtri,avoltetradottoancheiosonocichesonopermeritodicichesiamo
tutti.
Slackware
unadistribuzioneGNU/Linuxtralepilongeve.Fucreatada
PatrickVolkerdingquandoancoraeraunostudente,cheutilizzcomebaseladistribuzione
Softlanding Linux System, e venne pubblicata per la prima volta il 16 luglio 1993 sul
newsgroup comp.os.linux. Essendo stata concepita per essere pi unixlike possibile,
Slackware considerata unottimomodoperimparareilfunzionamento di GNU/Linux,
tantocheisuoiestimatoriusanodire:"WhenyouknowSlackware,youknowLinux...when
youknowRedHat,allyouknowisRedHat."("QuandoconosciSlackware,conosciLinux...
quandoconosciRedHat,conoscisoloRedHat").IpacchettidiSlackwaresonoingenere
caratterizzatidall'estensione.tgz.Sitrattadipacchetticompilati,ecompressiinunarchivio,
secondolaloroposizionefinale,unavoltaestrattinelladirectorydiroot(/)delsistema.Vi
siputrovare,avolte,unoscript(doinst.sh)chepermettedieseguirealcuneoperazioniutili
perilcorrettofunzionamentodelpacchettoinstallato.NelChangeLogdell'8maggio2009,
stato introdotto un nuovo formato dei pacchetti Slackware chiamato .txz. Il sistema
impiegatoperlagestionedeipacchettidiinstallazione,pkgtool13, nonpermetteperla
risoluzione delle dipendenze, per questo sono di solito presenti altri strumenti quali
Checkinstall, che permette, una volta installato, di creare pacchetti (tgz, rpm o deb)
direttamentedaisorgentidiunprogramma.
QiLinux
,ladistribuzioneLinuxitaliananataaTorinonel2003erealizzata
completamente da zero ("from scratch") per sistemi desktop, server e enterprise server.
SponsorizzataemantenutadallasocietQiNetdiTorinovienerilasciatasecondolalicenza
GNU.
SUSE
,unadelleprincipalidistribuzioni GNU/Linux edstataprodottain
Germania.RisultamoltosemplicedautilizzareedmirataallastessautenzadiMicrosoft
Windowsinquantol'ambientedesktopuserfriendly14emoltosimilealsistemaoperativo
di casa Microsoft. E di propriet della Novell, che ne vende il supporto software, ma
fornisce anche una versione gratuita chiamata OpenSUSE. Include un programma di
AcronimodiSlackwarePackageTool.
Faciledausarepergliutenti.
7/69
installazioneedamministrazione,YaST215,chegestiscelapartizionedell'harddisk,ilsetup
del sistema, gli aggiornamenti online, la configurazione della rete e del firewall,
l'amministrazionedegliutentieoltre.
15
YetAnotherSetupTool(YaST)unmezzodiconfigurazionedelsistemaoperativo.
8/69
Lagestionedelfilesystem
2.1
Premessa
Inunsistemainformaticosiintendeperfilesystemquelsottosistemachesioccupadellagestione
(organizzazioneearchiviazione)deifileappartenentialsistemastesso.Piformalmentel'insieme
deitipididatiastrattinecessariperlamemorizzazione,organizzazionegerarchica,manipolazione,
navigazioneeaccessoaidati.
Ilfilesystemunaparteintegrantediqualsiasisistemaoperativo.Inizialmentel'unicoverocompito
deisistemioperativierapropriolagestionedeifiles.
I dispositivi di archiviazione, come ad esempio i dischi fissi si presentano infatti al sistema
operativocomeunarraydiblocchididimensionefissa,generalmentechiamatisettori,tipicamente
di512bytel'unoeleoperazionidisponibilisonolaletturaelascritturadiunbloccoarbitrario,o
talvoltadiuninsiemediblocchi.Ilfilesystemsioccupadiinterfacciaretutteleoperazioniinerenti
lagestioneditalisettoriinmodadarenderedisponibilitutteleoperazioniessenzialisuifilesesulle
directory.
Atalescopo,oltreaidativeriepropri,vengonomemorizzatianchedeidatichiamatimetadati
chepermettonodimanteneretracciadialcuneinformazioniutiliallagestioneeorganizzazionedei
datistessi.Talimetadaticontengonoadesempioinformazioniquali:iltimestampdimodificadel
file,iltimestempdicreazionedelfile,ilproprietariodelfile(utenteogruppochesia),idirittidi
accessoalfile,ealtri.
Esistonoinoltrevaritipidifilesystem,ciascunoconlesuespecifichecaratteristiche,sviluppatisisu
differentiambienti,cherispondonoadesigenzechepossonoesseregenericheospecifiche.
Adesempio,unfilesystemditipoNFSrispondeall'esigenzadiimpiegodifilenonlocalizzati
localmentealserverdiappartenenza,masuunamacchinadellaretedati,oilfilesystemISO9660
rispondeall'esigenzadimemorizzazionesusupportiqualiicompactdisk.
Unelenco,nonesaustivo,deifilesystemgestitidaunsistemaLinuxedisponibileeseguendoil
mansulcomandomount:
adfs,affs,autofs,cifs,coda,coherent,cramfs,debugfs,devpts,efs,ext,ext2,ext3,ext4,hfs,
hfsplus,hpfs,iso9660,jfs,minix,msdos,ncpfs,nfs,nfs4,ntfs,proc,qnx4,ramfs,reiserfs,
romfs,smbfs,sysv,tmpfs,udf,ufs,umsdos,usbfs,vfat,xenix,xfs,xiafs
anche se, come gi detto, possibile estendere tale elenco tramite l'installazione di pacchetti
aggiuntiviol'aggiuntadipatchdisistema.
Siprendaadesempioilfilesystemntfschenativamentesupportatoinsolalettura.Nelcasosi
volesseaccedereatalefilesystemancheinscritturanecessarial'installazionedelpacchetto:
9/69
ntfs-3g
Alcunitipidifilesystemsonoinoltredelleevoluzionidifilesystemprecedenti,qualiquellidella
famigliaext,arrivataallaversione4,disponibiledallaversionedikernelLinux2.6.28.Susistemi
impiegati durante il corso tale filesystem non disponibile in quanto la versione di kernel
precedenteaquellacitata.
L'evoluzione dellevarieversionidifilesystem,olanascita dinuovi,haseguitolarichiesta di
implementazionedinuovefunzionalit.Perunelencoditalifunzionalit,operilconfrontodi
questeultimetraivarifilesystemsivedailseguentelink:
http://en.wikipedia.org/wiki/Comparison_of_file_systems
dalle quali si cita brevemente il journaling, come quella funzionalit che permette di tenere
tracciadeicambiamentialfilesystemprimadicommittareeffettivamenteidatisulfilesystem.In
questomodopossibileritornareadunasituazioneconsistentedelfilesystemanchenelcasoaccada
uncrashdelsistemadurantelascritturadeidatisudisco.
Alcunefunzionalitdigestione,qualiquellediestensionediunfilesystemediresiliencediguasti
hardware(riferitiaidischifisici)nonsonoperpresentisullamaggiorpartedeifilesystem.Per
ovviareatalimancanzevengonoimpiegateneisistemioperatividellefunzionalitlegateaquelle
deifilesystemmadaessaindipendenti.Nelcasospecificoperidueproblemidisoprasiimpiegano
ivolumilogicieisistemiraid.
Inquestocapitolotratteremosiaifilesystemcheilogicalvolumeisistemiraid.
2.2
Lepartizionidiundisco
Un filesystem, o un volume logico, o un sistema raid, viene costituito su una zona del disco
chiamatapartizionechevienecreatatramiteappositiprogrammidipartizionamento,qualifdisk
o parted. Il partizionamento di un disco dunque una delle prime operazioni durante
l'installazionediunsistema,inquantosenzadiessanessundatopotresseresalvatosuldisco
stesso.
Esistono vari tipi di partizionamento, differenti a seconda del sistema operativo, quali quello
SolarisSparcequelloi386,cheprendonoilnomedilayoutdeldisco.
Neisistemii386,qualiquellidelcorso,illayoutdatodaunnumerovariabiledipartizioni(anche
solounaperl'interodisco),chepossonoalorovoltaessereprimarieoestese.Ilnumerodipartizioni
primariechepossonoesserecreatesuunostessodiscolimitatoa4,mentreperleestesequesto
valoremoltopialto,inquantounaopipartizioniestesesipossonoappoggiaresullastessa
partizioneprimaria.
E'doverosononeseguireunoverlappingdellepartizioni,inquantopoiciascunadiessesarsede
di un filesystem (o lv o raid) indipendente, e dunque tale operazione compromette i dati che
verrannopoisalvatisudiessi.Sidovrporreattenzioneall'impostazionedeiblocchididiscodi
inizioefinedellepartizioni.
Questepartizionisonounasuddivisioneablocchideldisco,chevienedunquevistodalsistema
comesefossecompostodipiunitlogicheindipendenti.Adesempio,ipotizzandodipartizionare
ilprimodiscodisistemain3partizioni,ilsistemaindividuer4dispositividifferenti:
Universit degli Studi di Sassari CED
10/69
/dev/sda
/dev/sda1
/dev/sda2
/dev/sda3
Vediamoneldettaglioilcomandofdiskpercreatedellepartizionisuldisco.
Digitando:
fdisk /dev/sda
appareilseguentemessaggio:
The number of cylinders for this disk is set to 24321.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Comando (m per richiamare la guida):
edigitandom:
Azione comando
a Cambia bootable flag
b
modifica di bsd disklabel
c
cambia il flag compatibile con il dos
d
cancellazione di una partizione
l
elenco dei tipi di partizione conosciuti
m
stampa di questo menu
n
aggiunta di una nuova partizione
o
creazione di una nuova tabella delle partizioni DOS vuota
p
stampa della tabella delle partizioni
q
uscita senza salvataggio delle modifiche
s
creazione di una nuova disklabel Sun vuota
t
modifica l'id di sistema di una partizione
u
modifica delle unit di visualizzazione/di immissione
v
verifica la tabella delle partizioni
w
scrivi la tabella su disco ed esci
x
ulteriori funzioni (solo per esperti)
Icomandimaggiormenteimpiegatisonop,n,tenaturalmenteilw.
Esempiodioutdelcomandop:
Disco /dev/sda: 250.1 GB, 250059350016 byte
255 testine, 63 settori/tracce, 30401 cilindri
Unit = cilindri di 16065 * 512 = 8225280 byte
Identificativo disco: 0x0009a286
Dispositivo Boot
/dev/sda1
*
/dev/sda2
Start
1
32
End
Blocks
Id System
31
248976
83 Linux
19240
154296292+ 8e Linux LVM
11/69
dovesivedechevisonoduepartizioni,sda1esda2,conlaprimaimpostatacomepartizionedi
boot e tipo Linux (perfilesystem ext3), la seconda, molto pi grande, ditipo lvm (per la
creazionediunlogicalvolumesudiessa).
Nelcasodipartizioniperunsistemainraid,conbootloadergrub,laconfigurazionesarebbead
esempiostata:
fdisk /dev/sda
Device Boot
/dev/sda1
*
/dev/sda2
Start
1
32
End
31
17873
Blocks
248976
143315865
Id
fd
fd
System
Linux raid autodetect
Linux raid autodetect
fdisk /dev/sdb
Device Boot
/dev/sdb1
*
/dev/sdb2
Start
1
32
End
31
17873
Blocks
248976
143315865
Id
fd
fd
System
Linux raid autodetect
Linux raid autodetect
inquantoilprimoraidimpiegatoperilsolofilesystem/boot,mentreilsecondoperillogical
volumesuraid.Vedremomeglioquesticoncettipiavanti.
Sevolessimoestendereunapartizionecomepotremoprocedere?
Perrispondereaquestadomandadovremoprimadituttosaperesecisiaspazioliberodopola
partizionedaestendere,inquanto,ancheseildiscoavessespaziononpartizionatomachenonsi
troviappenadopolafinedellapartizionedaestendere,l'operazionenonsarebbepossibile,inquanto
nonpossibileassegnareallastessapartizioneporzionididiscononcontigue.
Nel caso lo spazio libero sia invece contiguo potremo: avviare con un cd di boot di
amministrazione,cancellarelapartizione,ricrearlapigrande,riavviaresempredacdedeseguire
unaespansionedellogicalvolumeodelfilesystemattestatosullapartizioneprecedentementepi
piccola.
Primadieseguirequesteoperazionisempremegliofaredeibackupdelsistema.
Leoperazionidiestensionediunapartizionedovrebberocomunqueesseremoltorare(tranneche
persistemivirtuali)inquanto,sedisegnatebenedall'inizio,nondovrebbepiessercispaziolibero
suldiscofisico.Dalmomentochel'obbiettivofinalesemprel'espansionedelfilesystem,visono
altrimodiperfarlosenzapassareperlepartizioni.
VediamooraagrandilineeillayoutdiundiscoSolariSparc.
Atitolodiesempiol'outputdelcomandoprtvtocadesempio:
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
Last
12/69
Flags
00
01
01
00
First
Sector
Last
Sector
Count
Sector
0
262144
262143
262144
262144
524287
0 211816448 211816447
524288 211288064 211812351
Mount Directory
/extdsk
dalqualesinotalapresenzadi4partizionioslice,massimo7suSparc,incuilapartizione2di
tag5nonusabileinquanto,comeintuttiisistemiSparcidentifical'interodiscoeoverlappa
tuttelealtrepartizioni.
2.3
Isistemiinraid
Iltermineraidunacronimodiredundantarrayofinexpensivediskso,avolte,diredundant
array of independent disks. Tramite questa tecnologia possibile dividere e/o replicare il
salvataggio deidatisupiharddiskdrives;inquestomodopossibilerisponderealladuplice
richiestadiridondanzaediperformancedeisottosistemididisco.
Lemodalitdilavorodelletecnologieraidsonoindicatedaunnumerocheseguel'acronimoraid
stesso,adesempio:raid0,raid1,,raid5,etc.Ciascunadiquesteoperasulsottosistemadiscoin
manieradaaffrontarelepredetterichieste,cherisultanoinantitesitraloro.
Le modalit con le quali possibile implementare una qualsivoglia tecnologia raid sono due:
hardware(compostaasuavoltadiunaparteanchesoftware)esoftware.Ledifferenzetraqueste
ultime sono date dal costo della soluzione e dalle relative performance che sono in grado di
raggiungere.Infattitramitel'aggiuntadiunsistemainraidhardwarepossibiledemandareadun
processore dedicato il lavoro di gestione delle ridondanze, scaricando di tale incombenza il
processore dello stesso server, inoltre, di solito, un sistema raid hardware presenta anche una
memoriacachecheneaumentaleperformance,inquantoidatinonvengonodirettamentescrittisu
discomasuccessivamenteallarichiesta,scrittisucache,contempidioperativitmoltoinferiori
(questo presuppone l'impiego nel sistema raid hardware di batterie tampone che in caso di
mancanzadellacorrentemantenganoidatidellacachenonancorascrittisudisco).Unsistemadi
dischiesterniadunserver,qualeunodiquellipresentiinsalamacchine,disolitounsistemaraid
hardware.
Inunsistemaraidhardwarevienesalvaguardatal'operativitdelsistemadidischiancheascapitodi
rotturehardwaredeidischistessi,senzainficiareeccessivamentesulleperformance.Perviadella
naturahardwaredelsistemalasoluzionestrettamentedipendentedalsistemastesso.
Lasecondamodalitconlaqualepossibileimplementareunsistemaraidquellasoftware.In
questocasoilprocessoredelserverstessosioccupadellagestionedelraidsecondolapolitica
scelta, diminuendo le performance del sistema stesso. Tale diminuzione pu comunque essere
accettata se si ragiona in termini di costi ridotti della soluzione, se non nulli, e in termini di
conseguenteaumentodirobustezzaaiguasti.Infattiunasuamessainproduzionenecessitsolodi
unaconfigurazioneiniziale.Ilvantaggiodiunasiffattasoluzionedatoanchedallaportabilitdel
datotraambientidifferenti.
13/69
Adonordelveroesisteunaterzaviaintermediaperl'implementazionediunsistemaraid,detta
fakeRaid,eseguitatramiteuncomponetefirmwarepresentenelcontrollerdelleschedemadri.
Questasoluzionenonoffreperdeisignificativiaumentidiperformance,maanzipresentaglistessi
problemidiportabilitdeisistemiraidhardware.Questesoluzionisonodivenutemoltodimodasu
sistemiabassocostoqualiquellidesktop.
Vediamooraneidettaglilemodalitdilavorodelletecnologieraid.
Raid0stripeddisks:idatidasalvarevengonodistribuitisupidischiinmaniera
da aumentare le performance del sistema in quanto vengono impiegate tutte le
meccanichedeidischinelsalvataggio.Questasoluzionenonpresentapernessuna
tolleranzaaiguasti,anzilarotturadiunsolodiscodell'arraypregiudicaidatisalvato
sututtoilsistemaraid.Richiedeunminimodi2dischi,nonpresentanessunaperdita
diefficienzadistorage.
Raid1mirror:idatidasalvarevengonomemorizzatisututtiidischidelraid.In
questomodoognidiscodell'arraycontieneunacopiaconsistentedituttiidati,daqui
ilnomedimirror.Richiedeunminimodi2dischi,l'efficienzadistorageridottaal
50%con2dischi,al33%con3,etc.
Raid3e4stripedwithdedicatedparity:idatidasalvarevengonodistribuitisupi
dischi come nel caso del raid 0. Uno dei dischi impiegato per salvare le
informazionidiparitconlequalipossibilerisalireallarotturadiunodeidischi
dell'array(trannecheperquellodiparit).Nellaversione4idativengonosuddivisi
in chunks di valore prefissato e configurabile in modo da ottenere le migliori
performance possibili. Richiede un minimo di 3 dischi, l'efficienza di storage
ridottaal66%con3dischieal83%con6.Leperformancedelsistemarisultano
penalizzate in presenza di pi operazioni di lettura/scrittura simultanee e
indipendenti.
Raid5:idatidasalvareeleinformazionidiparitperlaricostruzionedeglistessi
vengonodistribuitisututtiidischi.Larotturadiunqualunquediscodell'arraynon
pregiudica ne i dati ne il funzionamento del sistema, le informazioni di parit
presentisuglialtridischipermettonodirisalirealdatocheerastatosalvatosuldisco
degradato(adiscapitoperdiperformancemoltoridotte);nelcasodiunaulteriore
rotturadidiscoidatidell'interoarraysonodefinitivamentecompromessi.Pertale
motivoquestamodalitspessoimpiegataconunulteriorediscodihotspareche
sostituisceilprimodiscorotto;inquestomodoilsistemaingradodifunzionare
anche dopo due rotture contemporanee e su singola rottura le performance
rimangonoinalterate. Richiedeunminimodi3dischi.L'efficienzadistoragecon
hotsparee4dischiridottaal50%eal66%con6dischi.
Raid6: idatidasalvareeleinformazionidiparitvengonodistribuitisututtii
dischi. Rispetto alraid 5la parit ineffetti unadoppia parit, chepermette il
funzionamentodelsistemaancheconduerottureconcomitanti.Richiedeunminimo
di4dischi.
Raid10mirrorandstriped:questamodalitineffettiunacombinazionedelle
precedenti1e0,inprimabattutavieneeseguitounlavorodimirroresuquestoviene
applicato uno striped. Richiede un numero di dischi pari con un minimo di 4,
l'efficienzadistoragesempreridottadel50%.Con6dischivieneeseguitoilmirror
suduegruppidi3dischiciascuno,esuciascungruppovieneeseguitolostripeddei
14/69
dati.Leperformancesonodirettamentedipendentidalnumerodidischi,inquanto
nonvisonoinformazionidiparitdacalcolare.
Lemodalitpiimpiegatesonoquellainraid1,raid5edapochianniraid10.Ilraid1impiegatodi
solitosu2solidischi,quellidisistema,mentreilraid5suidischideidatiutente.Ilcostosempre
minoredeidischifisicihapermessodisostituirespessolamodalitraid5conlaraid10,moltopi
performante.
Dal momento che ogni sistema raid hardware presenta caratteristiche simili, ma differenti da
produttoreaproduttore,tratteremonelproseguodelparagrafolesoletecnologiesoftware(gestite
dalkernelLinux).
Operativamente,ricordandocheilnostroobiettivofinalesempreilfilesystem,necessariocreare
dellepartizioni,ciascunasuundiscodifferente,ditipologiaraidsucuiattestarepoilamodalitdi
raidveraepropria.Inquestocaso,ilsistemaidentificheroltrealclassicidevicesda,sda1,sda2,
etc.undevice:
/dev/md0
/dev/md1
etc.,asecondadelnumerodiraidcostituiti.Ilnumerodopomd nonidentificalamodalitdi
raid.
Sutalidevice,comesusda1,etc.sipotrpoiimplementareunfilesystemveroeproprio,oun
logicalvolume.
Il kernel Linux sioccuper automaticamente delleoperazioni sulraid.Comeadesempio delle
ricostruzioni del volume, leggendo le informazioni del o dei raid direttamente dai dischi. E'
possibilesalvaretaliinformazionianchesulfile/etc/mdadm/mdadm.conf,einquestomodosiha
lapossibilitdiimpiegareicomandimdadmdigestioneeamministrazione delodeiraidin
manierasintetica.
Pervisualizzareleinformazionistatistichedeiraidsiesegua:
cat /proc/mdstat
ilcuioutputincasodinonerrorideltipo:
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
143315776 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
248896 blocks [2/2] [UU]
unused devices: <none>
Nell'esempiodelsistemadisopraidentifichiamodueraid,md0emd1,entrambiditiporaid1,creati
suduepartizionididuedischi:
md0
md1
sda1 + sdb1
sda2 + sdb2
Chesensohannodueraidconduedischi?
Universit degli Studi di Sassari CED
15/69
Sulprimo,moltopiccolo,direttamenteattestatoilfilesystem/bootsulsecondotuttotramite
logicalvolumetuttoilresto/.Questonecessarionelcasochesivogliagestireilsistemavia
logicalvolumeebootloadergrub.Questoultimoinfattinonpermettedieseguireilbootdalv,e
dunquetalefilesystemvatoltodallvmacomunquemessoinraid.
Percreareunraidsuunsistemanecessariodisporredelnumerodidischiminimooccorrentiperil
sistemaraidchesivuolecreare.Crearelepartizionisuidischiditipologiaraid(typefd)epassare
allacostruzioneveraepropriadelraid.
Esempio:creazionediunraid5su4dischi,etestdelleperformancecondd.
mdadm -C /dev/md3 -n 4 -l 5 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
dd bs=1024k if=/dev/zero of=/dev/md3
ilcuioutputdaunaperformancedi20.9MB/s.Lostessocomandodatosuunraid0creatosugli
stessidischiforniscedelleperformancedi53.5MB/s
Perinserireleinformazionidelnostroraidsulfilediconfigurazionemdadm.confsiesegua:
mdadm --detail --brief /dev/md3 >> /dev/mdadm/mdadm.conf
Unaconfigurazionetipoditalefile:
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
ARRAY /dev/md0 level=raid1 num-devices=2
UUID=aadf51fe:21aac6f5:e4288264:1853faa1
ARRAY /dev/md1 level=raid1 num-devices=2
UUID=1b37d161:2d0a695d:44bdc261:95555b41
# This file was auto-generated on Wed, 05 Sep 2007 05:53:59 +0000
# by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $
Diseguitovaricomandiperamministrareunraidgicreato:
mdadmS/dev/md3
stoppailraid(ilkernelalrebootriavviairaid
cheindividuasulsistema)
16/69
mdadmA/dev/md3
assemble,riavviaunraidstoppato.Sela
configurazionedelraidnonstatasalvatasul
filemdadm.confnecessarioindicareanche
tuttiidevicechenefannoparte
mdadm/dev/md3f/dev/sdc1
impostaildevicesdc1fail
mdadm/dev/md3r/dev/sdc1
rimuoveildevicesdc1(nonpossibilese
primanonvieneimpostatoildeviceinfail)
mdadm/dev/md3a/dev/sdc1
aggiungeildevicesdc1alraid
mdadm/dev/md3readd/dev/sdc1
riaggiungeildevicesdc1cheerastato
rimossoalraid
17/69
mdadmQdetail/dev/md3
2.4
visualizzaindettaglioidatidelraidmd3
Ilogicalvolume
estendereiPEsassegnatiadundeterminatoLVinmododarenderlidisponibilial
filesystemsottostante
migrareunLVouninteroVGtradispositivifisicidifferenti
eseguireunasnapshotdiunLVinmododacongelarelasituazionedelfilesystemad
uncerto istante. Sinoti cheleoperazioni sudiessoproseguirannosuunLV si
snapshot assegnato al LV precedente; in questo modo possibile ad esempio
eseguireunbackupdelfilesystemquasiacaldo,accettandountempominimodi
fermodell'applicazionenecessarioperlacreazionedellastrutturadatidisnapshot
estendereiPEsassegnatiadundeterminatoVGtramitel'agiuntadiPVsinmododa
renderedisponibileulteriorespazioliberoperiLVs
CosaoperativamenteunPV?
Nonaltrocheundiscofisico,ounapartizionediundiscosepartizionato,oundispositivoraidse
impiegata taletecnologia. Inquesta ottica sipudasubito osservare cheunsistema raid0
analogoadvolumgroup.
Comeprocediamonell'organizzazionedellostorage?
Creiamodaprimalenostrepartizionisuidischiadisposizionepensandoaifuturiraiddaassestare.
Assestiamosutaliraidilfilesystem/boot(incasosiusigrub)eivolumgroupnecessari.Creiamo
suivolumgroupilogicalvolumeesuquestiirelativifilesystem.Montiamopoiifilesystemsui
relativipuntidimount.
Esempio:duedischiconduesistemiraid,unvolumgroupeunlogicalvolumeperognipuntodi
mountnecessario.
18/69
raid1/dev/md0/boot
/dev/vg00/lv00/
/var
raid1/dev/md1/dev/vg00/usr
Esempiodioutputdelcomandovgdispaly:
--- Volume group --VG Name
vg00
System ID
Format
lvm2
Metadata Areas
1
Metadata Sequence No 48
VG Access
read/write
VG Status
resizable
MAX LV
0
Cur LV
8
Open LV
8
Max PV
0
Cur PV
1
Act PV
1
VG Size
147,14 GB
PE Size
4,00 MB
Total PE
37669
Alloc PE / Size
21944 / 85,72 GB
Free PE / Size
15725 / 61,43 GB
VG UUID
f85wYz-wuPR-tp6U-QXrV-unKD-BLbh-U9Tjjn
dalqualesileggecheilVGha8logicalvolumeassestatisudiesso,unadimensionediPEdi4MB,
unadimensionemassimadi147.14GB,unospazioallocatoailvdi85.72GB,unospazioliberodi
61.43GB.
Esempiodioutputdelcomandopvdisplay:
--- Physical volume --PV Name
/dev/sda2
VG Name
vg00
PV Size
147,15 GB / not usable 3,97 MB
Allocatable
yes
PE Size (KByte)
4096
Total PE
37669
Free PE
15725
Allocated PE
21944
PV UUID
rYD12p-D3RX-52cn-LCy1-sZae-wy3r-oweebr
dalqualesileggecheilPVdirettamenteassestatosullapartizione2delprimodisco,allocatodal
volum group vg00, ha un numero di 37669 PEs occupati e 15725 liberi. Si noti che le
informazionisonoanalogheaquellevisualizzatedalcomandovgdisplay.
EspansionediunVG.
L'espansionediunPVnonhanellamaggiorpartedeicasimoltosenso,inquantoc'dachiedersise
siapossibileaumentarelospaziodiundisco,oquellodiunapartizione,seilpartizionamento
Universit degli Studi di Sassari CED
19/69
statodisegnatobene(maincasocontrarioforseserveunareinstallazionetotale).Potrebbeessere
utileinambientivirtualioincasodistorageesternichepermettanol'espansionedeivolumilogici
(LUNologicalunitnumber)gicostituiti.Inentrambiicasiunostopdelservernecessario,
oltrecheadunbackupdell'interosistema.
SeilPVdaespandereequellosucuiassegnatoilsistemaoperativonecessarioeseguireilboot
dauncddiripristino.Leoperazionidafaresono:
1) spegnimentodelserver
2) aumento dello spazio del disco virtuale o dello spazio sulla LUN dello storage
esterno
3) avviodacddiripristino
4) cancellazionedellapartizione suldiscoallargato (chenonoccupatuttolospazio
disponibile)
5) creazionedellanuovapartizionesuldiscoallargato
6) esecuzionedelcomando:
pvresize -v /dev/sda2
perrenderedisponibiliinuoviPVsdellapartizione
7) spegnimentoeavviodelsistemaprincipale
8) verificadell'aumentodispaziodisponibiletramiteilcomandovgdisplay
Spessoataleoperazione,moltodistruttiva,preferibilelacreazionediunnuovodiscovirtualeodi
unanuovaLUNdellostorageel'assegnazionediquestaultimaalVGpresente.Questaoperazione
nondistruttivaepermetteun'operativitacaldo.
RiduzionediunLV.
Questafunzionalitstrettamentedipendentedallefeaturesdelfilesystem,chesenonpermettono
loshrinkdellostessononsonoapplicabili.
E'semprepossibileeseguireuntardeidati,creareunlvpipiccoloeimportareiltarsulnuovo
filesystem.
Nelcasodifilesystemchelopermettano(qualeext3)lasequenzadicomandilaseguente:
1)
2)
3)
4)
5)
6)
umountdelfilesystem
checkdelfilesystemcone2fsckfdevice
impostazionedellanuovadimensionetramiteresize2fspdevicesize
checkdelfilesystemcone2fsckfdevice
riduzionedellogicalvolumetramitelvreduceLsizedevice
mountdelfilesystem
E'importantissimononimpostareunadimensionedilvinferioreaquelladelfilesystem.
Espansionediunfilesystem.
Ancheinquestocasol'espansionediunfilesystempossibilesedisponibiletralefeaturesdel
filesystem.Ancheseperalcunifilesystempossibileeseguirequestaoperazioneonline,sempre
consigliabilesmontareprimailfilesystem.
Leoperazionisonodunqueleseguenti:
20/69
1)
2)
3)
4)
5)
6)
umountdelfilesystem
checkdelfilesystemcone2fsckfdevice
espansionedelvolumeconlvextendLsizedevice
checkdelfilesystemcone2fsckfdevice
espansionedelfilesystemconresize2fspdevice
mountdelfilesystem
Alcunetipologiedifilesystemnonsonosmontabili,qualilo/var,eillororidimensionamento
distruttivoperilsistema.Inquesticasinecessarioeseguireilridimensionamentotramiteun
sistemadirecovery(cddiboot)eattivareilVGlocaletramiteicomandi:
vgscan
vgchange -ay vg00
Attivazionediunasnapshot.
Unasnapshotnonaltrocheunnuovovolumecollegatoadunvolumegiesistente.Ilcomandoda
usaredunque:
lvcreate -s -L dimensione -n nomeLVsnap deviceLVesistente
Ilvolumedisnapshot,semontatosuunacartella,impiegabileperaccedereallafotografiadeidati
all'instantedicreazionedelvolumestesso,perquestoimpiegatoinoperazionidibackup.
2.5
Operazionisuifilesystem
Unavoltadisegnatoilnostrosistemadistorage,partizioni,e/oraide/olvm,giuntoilmomentodi
creareunfilesystemveroeproprio.Ilcomandodaimpiegare:
mkfs -t fstype device
doveconl'opzionetindichiamoiltipodifilesystemdacreare.Inbaseataleparametroverr
chiamatoilcomandoapposito,es:mkfs.ext3,mkfs.vfat,etc.
Una delle opzioni molto importanti, anche che comunque dimensionata opportunamente anche
come default, e il numero di inode assegnati al filesystem. Questoparametro direttamente
collegatoalnumeromassimodidescrittorideifileedellecartellechepossibilecrearesuun
filesystem.Inquestomodopossibileuntuningchepermettadidefinirel'impiegoveroeproprio
delfilesystem,adesempioinunfsperunservermailnecessariounnumerodiinodemoltoaltose
ognimaildiunutenteunfile(edunquepermoltifilepiccoli),obassosetuttelemaildiunutente
sonocontenutenellostessofile.Questoparametroimpostabilesoloinfasedicreazione.
Universit degli Studi di Sassari CED
21/69
Vediamol'outputdiesempiodelcomandomkfs.ext3/dev/vg00/lvprova:
mke2fs 1.41.9 (22-Aug-2009)
Etichetta del filesystem=
Tipo SO: Linux
Dimensione blocco=4096 (log=2)
Dimensione frammento=4096 (log=2)
65536 inode, 262144 blocchi
13107 blocchi (5.00%) riservati per l'utente root
Primo blocco dati=0
Maximum filesystem blocks=268435456
8 gruppi di blocchi
32768 blocchi per gruppo, 32768 frammenti per gruppo
8192 inode per gruppo
Backup del superblocco salvati nei blocchi:
32768, 98304, 163840, 229376
Scrittura delle tavole degli inode: fatto
Creating journal (8192 blocks): fatto
Scrittura delle informazioni dei superblocchi e dell'accounting del
filesystem: fatto
Questo filesystem verr automaticamente controllato ogni 36 mount, o
180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per
cambiare.
Moltoimportanteelaparterelativaallamemorizzazionedellecopiedelsuperblock,chequel
campodelfilesystemchepermettediavereinformazionidibasesulfilesystemstesso,qualitipodi
fs,dimensione,statoestrutturadeimetadati.Nevengonofattedellecopieperevitarnequantopi
possibilepossibileperdita.
Altricomandimoloutilisono:
fsck
e2fsck
tune2fs
dumpe2fs
controllaeriparaunfilesystem
controlloeriparodifilesystemext2,ext3eext4
permettedimodificareiparametridiunfilesystemperuntuningdello
stesso
esegueundumpdelsuperblockedelleinformazionideiblockgroup
presentisulfilesystem(soloext)
Dopouncrashdelsistema,operviadierrorisulfilesystem,ilcomandofsckvieneusatoper
recuperare i blocchi di filesystem non pi collegati a nessun inode ma che risultano ancora
allocati.Questiblocchivengonosalvatiinunaparticolaredirectorychiamatalost+foundche
presenteinciascunfilesystem.
Se ad esempio abbiamo 3 filesystem, / e /boot e /tmp, avremo 3 cartelle lost+found
precisamentein:
/boot
/boot/lost+found
/
/etc
/
/lost+found
/tmp
/tmp/lost+found
22/69
All'avviodiunsistemaLinuxvengonomontatiifilesystemindicatinelfile/etc/fstabvisualizzato
diseguito:
# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
<dump> <pass>
proc
/proc
proc
defaults
0
0
/dev/mapper/vg00-lv00 /
ext3
defaults,errors=remount-ro 0 1
/dev/sda1
/boot
ext3
defaults
0
2
/dev/mapper/vg00-lv05 /home
ext3
defaults
0
2
/dev/mapper/vg00-lv04 /opt
ext3
defaults
0
2
/dev/mapper/vg00-lv01 /tmp
ext3
defaults
0
2
/dev/mapper/vg00-lv02 /usr
ext3
defaults
0
2
/dev/mapper/vg00-lv03 /var
ext3
defaults
0
2
/dev/mapper/vg00-lvswap none
swap
sw
0
0
/dev/hda
/media/cdrom0
udf,iso9660 user,noauto
0
0
/dev/fd0
/media/floppy0 auto
rw,user,noauto 0
0
# For Oracle
/dev/mapper/vg00-lv06
/oradata
ext3 defaults
0
2
/dev/mapper/vg00-lv07
/backup
ext3
defaults
0
incuisonoindicatiidispositivi,irelativipuntidimount,iltipodifilesystem,leopzionidimounte
l'opzionediprioritperilcomandofsck.
Questofilevienecompilatoautomaticamentedurantelafasediinstallazione,manelcasovengano
successivamente creati nuovi filesystem, affinch il sistema ne esegua il mount all'avvio
necessarioaggiungerliallostesso.
2.6
Organizzazionedelledirectory
L'organizzazionedelledirectorydiunsistemaLinuxvariadadistribuzioneadistribuzione.Visono
peralcunedirectorydiimpiegocomuneintutteledistribuzioni,lacuiorganizzazionesegueuno
schemaUnixlike.Vediamounesempiodiorganizzazione:
/bin
/boot
/dev
/etc
/home
/lib
/mnt
/opt
/sbin
/srv
/usr
/var
adibitaaifilebinari(caricatinelsistema)
adibitaaifiledibootdelsistemaeallaconfigurazionedelbootloader
adibitaaidevicedelsistema
adibitaaifilediconfigurazionedelsistemaedegliapplicativi
adibitaaidatidegliutentidisistema
adibitaaifiledilibreria
adibitaalmontaggiodidispositiviesterni(moltousatainambientiUnix,
menoinLinux)
adibitaalleapplicazioninondisistema(moltousatainambientiUnix,meno
suLinux)
adibitaaifilebinarisicuri(adesecuzionedirooteinsingleuser)
adibitaagliapplicativiserver(usataneisistemiSuse,menoinquelliDebian)
adibitaaidatistatici(applicazioni,manuali,etc.)
adibitaaidatichevarianoneltempo,comeilog,
23/69
Per ciascuna di queste(tranne cheper la/mnt), possibile creare unlogical volume che la
contenga,anchesesolitamentealcunevengonoraggruppateinunicilv.E'utilesepararetralorola
/,/boot,/home,/opt,/srv,/usr,/var.
24/69
InstallazionediunadistribuzioneLinux
Prima di procedere con linstallazione di una distribuzione Linux e bene chiarire alcuni aspetti
fondamentali:
1. sperimentare, prima di ogni installazione vera e propria, un sistema in live (in modo da non
dover cancellare e/o modificare il sistema originario) per verificare le caratteristiche della
distribuzione o versione scelta. In alternativa anche possibile impiegare un sistema
virtuale, che ci permette di utilizzare una distribuzione Linux su un sistema gi presente,
senza modificarlo, a scapito di alcune funzionalit quali quelle grafiche; a tale riguardo
necessario avere anche dell'altro software, quale VMware Server (di libero uso) o Sun
Virtual Box, per creare il sistema virtuale;
2. se possibile impiegare un hard disk libero, cio senza un precedente sistema operativo gi
installato sopra. In caso di installazione sullo stesso hard disk del sistema operativo gi
installato, eseguire prima di tutto un backup del disco o almeno il salvataggio dei propri dati,
in modo da non perderli nel caso di errori durante linstallazione.
In ogni caso vivamente sconsigliato procedere con linstallazione su un sistema gi
funzionante se non si ha padronanza con linstallazione di un sistema operativo.
Come versione Linux di test per il corso stata scelta la distribuzione server Ubuntu 8.04 LTS, per
le sue doti di semplicit, completezza, libero utilizzo e rispondenza ai requisiti del corso. Questa
la stessa tipologia di sistema installata presso i server del Ced, per i quali non sia richiesto un
diverso sistema operativo a fronte di particolari specifiche delle applicazioni.
La scelta di una versione server, come vedremo, non focalizza l'attenzione solo su tale tipologia in
quanto tra una distribuzione server e una desktop variano semplicemente le tipologie di alcuni
pacchetti installati, che comunque possibile installare.
In questi appunti non sono stati inseriti i passi delle fasi di installazione in quanto non necessarie
per la prosecuzione del corso. Tali passi riflettono in ogni caso principalmente gli argomenti trattati
nel capitolo relativo ai filesystem.
Di seguito sono elencate alcune delle principali schermate presentate durante le fasi di installazione:
25/69
26/69
27/69
Lagestionedeipacchettidiinstallazione
4.1
Idifferentisistemidigestione
Unsistemadigestionedeipacchetti uninsiemediprogrammicheautomatizzanoilprocessodi
installazione,aggiornamento,configurazioneerimozionedeipacchettisoftwarediuncomputer.Il
terminepicomunementeutilizzatoinrelazioneasistemiUnixlike(tipoUnix),qualeLinux.Il
loroimpiegoparticolarmenteutileancheinrelazioneall'elevatonumerodipacchettichepossono
essere
presenti
in
ogni
distribuzione.
Intalisistemi,ilsoftwaredistribuitotramitedeipacchetti,generalmenteincapsulatiinunsingolo
file.Ipacchettispessoincludonoanchealtreimportantiinformazioni,comeilnomecompletodel
16
programma,laversione,ilfornitore,ilchecksum
,edunalistadialtripacchetti,conosciuticome
dipendenze,chesononecessariealsoftwareperfunzionarecorrettamente.
I sistemi di gestione dei pacchetti sono incaricati del compito di organizzare tutti i pacchetti
installati in unsistema emantenere la lorousabilit. Questi sistemi raggiungono questoscopo
usandovariecombinazionidelleseguentitecniche:
Verificadelchecksumdeifileperevitaredifferenzetraleversionilocaliedufficialidiun
pacchetto;
Semplicistrumentiperl'installazione,l'aggiornamento,elarimozione;
Gestionedelledipendenzeperladistribuzionedelsoftwarefunzionantedaunpacchetto;
Controllo degli aggiornamenti per fornire le ultime versioni dei software, che spesso
includonoriparazionididifettiedaggiornamentidisicurezza;
Raggruppamentodipacchettiasecondadellafunzioneperaiutarel'utenteadeliminarela
confusionedurantel'installazioneedilmantenimento.
Comeabbiamogianticipatoconledistribuzioni,visonovarisistemidigestionedeipacchetti.I
principalisonodue,ilRPMPackageManagereildpkg,impiegati,adesempio,ilprimonella
distribuzioneRedHateilsecondonellaDebian.Spessopersiricorreasistemipievoluti,chepur
appoggiandosiaiprecedenti,risolvanoautomaticamenteproblemipicomplessi,qualequellodelle
dipendenze.Talisistemisonoadesempioyumeapt.
Infatti se pur vero che all'interno di ciascun pacchetto presente l'elenco dei pacchetti in
dipendenza,ancheverochenerpm,enedpkg,scarichinotalidipendenzeinautomatico.Sesi
volesseadesempioinstallareilpacchettodelserverwebapacheconilsupportossl,siayum
cheaptscaricherebberoeinstallerebberolelibreriesslprimadieseguirel'installazionedel
pacchettoapache.Perpotereseguirequestolavoro,igestoripievoluticontengonounelencodei
repositorysuiqualipossibiletrovareipacchettidiinstallazionedeivarisoftware.
L'obbiettivo dei sistemi di gestione dei pacchetti di semplificare il lavoro dellutente
nellaggiornamentodelsistema,nellinstallazionedinuovipacchettionellarimozionedipacchetti
giinstallati. Lasemplificazioneattuatarispettoalclassicometododiinstallazionetramitela
16
Tradottoletteralmentesignificasommadicontrollo.unasequenzadibitchevieneutilizzataperverificarel'integrit
diundatoodiunmessaggiochepusubirealterazioni.
Universit degli Studi di Sassari CED
28/69
compilazione17deisorgentidiunpacchetto,chevengonodunqueresidisponibilineirepositoryin
base all'architetture del sistema, al tipo di distribuzione, e a volte in base alla versione delle
distribuzione.
Per semplificare ulteriormente il lavoro degli utenti non esperti, tutte le distribuzioni desktop
permettonodieseguirelagestionedeipacchettitramiteinterfaccegrafiche.
4.2
IlsistemadigestioneApteAptitude
L'AdvancedPackagingTool,conosciutoconl'acronimoAPT,ilgestorestandarddipacchetti
softwaredelladistribuzioneDebian.Apthalaparticolaritdisfruttarecontemporaneamentediverse
sorgentiremoteolocalideipacchetti(FTP,HTTP,cdrom,eharddisk),digestireautonomamente
diversedistribuzionidipacchettiedipermetterevelocementel'aggiornamentodelsistemaoperativo
ad una particolare distribuzione. Sotto Debian si hanno tre differenti versioni delle stessa
distribuzionechepossibileimpiegate: stable, testing e unstable,checomevedremoepossibile
sceglieredallaconfigurazionediapt.
Essendostatostudiatoperpoteressereinterfacciatograficamente,sononatidiversistrumentigrafici
chepermettonodigestireilcontenutodelsistemaoperativoattraversounaGUIchepurisultare
piintuitivaall'utenteinesperto.TratuttipossibilesegnalareAptitude(inguitestuale)eSynaptic
(inguigrafica).
Aptsibasasostanzialmentesulfile/etc/apt/sources.list(checontienelalistadellesorgentidacui
attingereipacchetti)esulcomandoaptget.
Esempiodifilesources.list:
#
# deb cdrom:[Ubuntu 9.10 _Karmic Koala_ - Release i386 (20091028.2)]/ karmic main restricted
deb http://it.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://it.archive.ubuntu.com/ubuntu/ karmic main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://it.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb-src http://it.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://it.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://it.archive.ubuntu.com/ubuntu/ karmic universe
deb http://it.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://it.archive.ubuntu.com/ubuntu/ karmic-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://it.archive.ubuntu.com/ubuntu/ karmic multiverse
deb-src http://it.archive.ubuntu.com/ubuntu/ karmic multiverse
deb http://it.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb-src http://it.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
17
Traduzioneinlinguaggiomacchinadelpacchettoapartiredaisorgentidelsoftwarescrittidaiprogrammatori.
29/69
Lerighehannolaseguentesintassi:
deb http://host/debian distribuzione sezione1 sezione2 sezione3
deb-src http://host/debian distribuzione sezione1 sezione2 sezione3
Laprimachiavediogniriga,debodebsrc,indicailtipodiarchivio,ciosecontienepacchetti
binari che sono gi compilati o se l'archivio contiene i pacchetti sorgente che sono il codice
sorgente
originale
del
programma.
Lasecondaparolaindical'indirizzodellasorgente.
Alpostodidistribuzionedeveessereindicataladistribuzionechesivuolegestire(disolitounodei
tre rami di sviluppo stable, testing o unstable, oppure esplicitamente la versione, per esempio
woodyesargeperDebian,okarmicejantyperUbuntu).Lesezioniindicherannoqualipartidella
distribuzione dovranno essere gestite (normalmente si possono trovare main (i pacchetti
completamenteliberi,lamaggioranza),nonfree(ipacchettirilasciatisottounalicenzanonlibera)e
contrib(pacchettilibericheperdipendonodaaltrinonliberi),ecosvia.
Comandidiapt:
apt-get update
apt-get install nomePacchetto
apt-get remove nomePacchetto
apt-get --purge remove nomePacchetto
apt-get autoremove nomePacchetto
apt-get upgrade
apt-get -f install
apt-get --simulate azione
18
Unpacchettononpinecessariosestatoprecedentementeinstallatononsusceltadell'utente,macomedipendenza
diunaltropacchetto,eseilpacchettocheneharichiestol'installazionenonpipresente.Ilsistemaaptverificacheil
pacchetto non sia pi necessario a nessun altro pacchetto del sistema, e non solo al primo che ne ha richiesto
l'installazione
Universit degli Studi di Sassari CED
30/69
Ilcomandoaptitudeesegueunaguitestualeincuipossibilevisualizzarel'interoelencodei
pacchettiinstallatieinstallabili,suddivisisecondovariecategorie.Tramitetalecomandopossibile
visualizzareinmanierasempliceancheleinformazionideipacchetti,conrelativedipendenzee
dipendenti.
Icomandipicomunidiaptitudesono:
u
U
g
+
q
Lostatodeipacchettiindicatodaaptitude:
i
b
c
C
installato
difettoso
non installato ma configurazione ancora presente
semi configurato
Perunelencoesaustivodeicomandiedellostatodeipacchettidiaptitudesivedailmanualein
lineaselezionabilecon?,oilmandelcomando.
4.3
IlpacchettoAlien
Citandoilmandialien:
Universit degli Studi di Sassari CED
31/69
alien is a program that converts between Red Hat rpm, Debian deb, Stampede slp,
Slackwaretgz,andSolarispkgfileformats.Ifyouwanttouseapackagefromanotherlinux
distributionthantheoneyouhaveinstalledonyoursystem,youcanusealientoconvertit
toyourpreferredpackageformatandinstallit.ItalsosupportsLSBpackages.
ciounpacchettochepermettelacodificadiundiunformatodiinstallazioneinunaltroformato,
perunasuccessivainstallazionesudifferentidistribuzioni.
Seadesempiounpacchettofosserilasciatosoloinformatorpm,sarebbepossibileinstallarlosu
unsistemaDebianliketramiteilcomandoalien:
alien -i -d -c nomePacchetto
4.4
IlsistemadigestioneYum
YellowdogUpdater,Modified(YUM)unsistemadigestionedeipacchettiopensourcealineadi
comandoperisistemioperativi Linux compatibilicolformatoRPM.statosvilupptoda Seth
Vidal e da un gruppo di programmatori volontari, ed attualmente mantenuto dal progetto
Linux@DUKE della Duke University. Sebbene yum sia un'utility a linea di comando, ci sono
diversitoolchefornisconoun'interfacciagrafica,comeadesempio:pup,pirut,eyumex.
Yum la riscrittura del suo predecessore, Yellowdog Updater (YUP), e venne sviluppato
inizialmenteinmododaaggiornareegestireisistemiRedHatLinuxusatidaldipartimentodifisica
della Duke University. Da allora, yum venne adottato dalla Fedora Core, CentOS, e da altre
distribuzioniLinux basatesuRPM,tracuilastessa YellowDogLinux,dovesostitul'originale
utilityYUP.
ChipossiedeilgestoredeipacchettidiRedHatEnterpriseLinux,up2date,puutilizzareanchei
repositorydiyumperaggiornareiprogrammi.
Irepositoriessonodeiserversdoveyum(opiingenerale,ilpackagemanager),trovaisoftware.In
distribuzioni con yum i file sono identificati dall'estensione .repo e sono situati in
/etc/yum.repos.d
Icomandipicomunidiyumsono:
yum install nomepacchetto
yum remove nomepacchetto
yum update
Lacreazionedeirepositorydiyumgestitadaunaltrotoolchiamato"createrepo",ilqualegenerai
metadataXMLnecessari.
32/69
Lashelldisistema
5.1
Premessa
Lashelldisistemauninterpretedeicomandichevieneimpiegatacomeinterfacciautenteper
l'amministrazionedelsistemastesso.Esistonovaritipidishell,sh,bash,ksh,rsh,etc,
ciascunaconlepropriecaratteristichepeculiari.Adesempiorsh,acronimodiremoteshell,una
shellcondirittisulsistemaridottiinvirtdellanaturadelcollegamento,remoto,contrappostoa
quello locale. Ciascunashellhaiproprifilediconfigurazione,configurabili anchealivello di
singoloutente.
Allaconnessionediunutentesulsistemavieneverificatosulfile
/etc/passwd
qualeshelleseguire.Adesempiolarigadelprecedentefile:
gvmura:x:1000:1000:,,,:/home/gvmura:/bin/bash
identificalabashcomeshelldell'utentegvmura.Pertanto,oltreaiclassicifile:
/etc/profile
/home/gvmura/.profile
vengonocaricateancheleconfigurazionidelfile:
/home/gvmura/.bashrc
Esistonodegliutenti,comealcuniutentidiapplicazione,chenonnecessitanodiunashelleche
dunquepresentanonelfile/etc/passwdilvalore:
/bin/false
/bin/nologin
Lashelldisistemacontienedellevariabilipreconfigurate,impostateallaconnessione,necessarie
per corretto funzionamento di alcuni programmi del sistema. Ad esempio la variabile
USERNAMEvienecaricatacolvaloredellalogindell'utente,mentrelaPATHconipercorsidi
ricercadeifileeseguibili.Pervisualizzarel'elencoeivaloridellevariabilidell'ambientepossibile
eseguireilcomando:
env
Tramitel'istruzione:
nomeVariabile=valore
possibiledefinirenuovevariabilinell'ambiente,mentreperfareinmodochetalivariabilisiano
impiegabili anche da altri programmi eseguiti dalla shell necessario precedere la precedente
istruzionedallakeyword:
Universit degli Studi di Sassari CED
33/69
export
Dallashellpossibileeseguiresiaiprogrammiprecaricatinelsistemachedegliscriptscostruitiad
hocecontenentiunelencodiistruzioniorganizzatesecondounasequenzalogica.Laprimarigadi
uno script viene interpretata per controllare con quale tipo di shell eseguire lo script stesso.
L'istruzionecheneabilitaquestacaratteristica:
#!
5.2
seguitadallashelldaimpiegare
Scriptsdiesempio
Ilseguentescript,monitorSpaceDiskesegueunaverificasuifilesystemdelsistemacontrollando
chenonsuperinounadeterminataoccupazionedeldisco.Incasoaffermativoinviaunamaildi
allertaagliamministratoriinmododainformarlidelproblemaeregistralostatodiallertasuunfile
diconfigurazione.Nelcasol'allarmecessasseautomaticamente,perviadialtriprocessidipulizia,
inviaunasuccessivamaildicessazionedelproblema:
#!/bin/bash
#
# Script per il monitor dello spazio disco occupato da ciascun filesystem
# e per l'invio di una mail nel caso superasse un certo valore
#
# Nel caso di superamento viene creato il file:
#
monitorSpaceDisk.lock
#
# Se l'allarme rientra il file viene cancellato automaticamente
#
#
SOGLIA=90
MAIL_FILE="/root/tmp/monitorSpaceDisk.mail"
FILE_LOCK="/root/tmp/monitorSpaceDisk.lock"
if [ ! -d /root/tmp ]; then
mkdir /root/tmp
fi
TMP_FILE="/root/tmp/monitorSpaceDisk.tmp"
MAIL_SUBJECT_BRUTTA="WARNING - Superamento soglia del ${SOGLIA}% su filesystem"
MAIL_SUBJECT_BUONA="ALLARME RIENTRATO - Superamento soglia su filesystem"
MAIL_BRUTTA="E' necessaria una verifica del sistema, nel caso l'allarme rientri non
necessario nessun intervento"
MAIL_BUONA="Allarme rientrato"
MAIL_TO="gvmura@uniss.it ... ... ..."
ERRORE=0
date > ${MAIL_FILE}
df -kP | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 "
while read line;
do
uso=$(echo $line | awk '{ print $1}' | cut -d'%' -f1)
part=$(echo $line | awk '{ print $2 }')
if [ ${uso} -ge ${SOGLIA} ]; then
ERRORE=1
echo "${uso}% ${part}" >> ${MAIL_FILE}
fi
done < ${TMP_FILE}
34/69
rm ${FILE_LOCK}
echo ${MAIL_BUONA} >> ${MAIL_FILE}
mail -s "$MAIL_SUBJECT_BUONA" "$MAIL_TO" < $MAIL_FILE
else
if [ $ERRORE -eq 1 ] && [ ! -f ${FILE_LOCK} ]; then
touch ${FILE_LOCK}
echo ${MAIL_BRUTTA} >> ${MAIL_FILE}
mail -s "$MAIL_SUBJECT_BRUTTA" "$MAIL_TO" < $MAIL_FILE
fi
fi
IlseguentescriptcreaSpazioWebimpiegatoperlacreazionediunospazioweb.Tramitequesto
scriptl'operatorepufacilmentecostituireunospaziowebconannessaconfigurazionedelserver
Apache,creazionediundatabaseMysqleassegnazionediunaquotamassimadifilesystemperlo
spazio:
#!/bin/bash
#
# Procedura per la creazione automatica di uno spazio web
# con annesso database mysql se necessario
#
#
# Variabili
#
DIR_APACHE_A="/etc/apache2/sites-available"
DIR_APACHE_E="/etc/apache2/sites-enabled"
DIR_INDEX="/var/www"
FILE_INDEX="index.html"
IP_PORT="......:80"
MAX_QUOTA=1500
COMMENTO="Amministratore sito web"
UTENTI_WEB=......
SHELL="/bin/false"
DIR_HOME="/home"
DIR_APACHE_LOG="/var/log/apache2"
CNF_FILE="/root/.my.cnf"
MYSQL_ROOT_PASS="......"
#
# Funzioni
#
crea_utente_sistema() {
echo "Creazione utente $AMMIN..."
useradd -s $SHELL -c "$COMMENTO" -d $DIR_HOME/$AMMIN -m -k /dev/null -G "$UTENTI_WEB"
$AMMIN
passwd $AMMIN
mkdir $DIR_HOME/$AMMIN/web
chown $AMMIN.$AMMIN $DIR_HOME/$AMMIN/web
setquota -g $AMMIN $SOFT_QUOTA $HARD_QUOTA 0 0 -a >/dev/null
}
crea_cnf() {
touch $CNF_FILE
chmod 600 $CNF_FILE
echo "[client]" >$CNF_FILE
echo "password=\"$MYSQL_ROOT_PASS\"" >>$CNF_FILE
}
crea_virtual_host() {
echo "Creazione virtual host..."
cat /dev/null >${DIR_APACHE_A}/${NOME_WEB}
echo "<VirtualHost ${IP_PORT}>" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
ServerAdmin $EMAIL" >>${DIR_APACHE_A}/${NOME_WEB}
35/69
echo "
DocumentRoot ${DIR_HOME}/${AMMIN}/web" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
ServerName ${NOME_WEB}" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
ServerAlias www.${NOME_WEB}" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
DirectoryIndex index.html index.htm index.php" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
<Directory ${DIR_HOME}/${AMMIN}/web>" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
Options -Indexes FollowSymLinks MultiViews" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
AllowOverride All" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
Order allow,deny" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
allow from all" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
</Directory>" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
ErrorLog ${DIR_APACHE_LOG}/${NOME_WEB}_error.log" >>${DIR_APACHE_A}/$
{NOME_WEB}
echo "
LogLevel error" >>${DIR_APACHE_A}/${NOME_WEB}
echo "
CustomLog ${DIR_APACHE_LOG}/${NOME_WEB}_access.log combined" >>$
{DIR_APACHE_A}/${NOME_WEB}
echo "
ServerSignature On" >>${DIR_APACHE_A}/${NOME_WEB}
echo "</VirtualHost>" >>${DIR_APACHE_A}/${NOME_WEB}
ln -s ${DIR_APACHE_A}/${NOME_WEB} ${DIR_APACHE_E}/${NOME_WEB}
cp ${DIR_INDEX}/${FILE_INDEX} ${DIR_HOME}/${AMMIN}/web/${FILE_INDEX}
chown $AMMIN.$AMMIN ${DIR_HOME}/${AMMIN}/web/${FILE_INDEX}
}
#
# Inizio
#
clear
USCITA=0
while [ $USCITA -eq 0 ]
do
echo
echo "Inserisci il nome dello spazio web (senza www, es: ......)"
echo "o premi <INVIO> per uscire..."
read NOME_WEB
if [ "$NOME_WEB" == "" ]; then
exit 0
fi
wget -q -O /dev/null $NOME_WEB
if [ $? -eq 0 ]; then
echo "-- Errore -- il nome del sito esiste gi"
echo "
vuoi proseguire comunque? (s/n)..."
read SCELTA
if [ "$SCELTA" == "s" ] || [ "$SCELTA" == "S" ]; then
USCITA=1
else
exit 1
fi
else
USCITA=1
fi
done
USCITA=0
while [ $USCITA -eq 0 ]
do
echo "Inserisci l'account per l'amministratore (es: ......)..."
read AMMIN
finger $AMMIN 2>/dev/null | grep "Login: $AMMIN" >/dev/null
if [ $? -eq 0 ]; then
echo "-- Errore -- l'utente esiste gia'"
else
USCITA=1
fi
done
USCITA=0
while [ $USCITA -eq 0 ]
do
36/69
37/69
USCITA=1
fi
done
if [ -s $CNF_FILE ]; then
echo "Il file .my.cnf esiste gi e non verra' modificato."
echo "Per creare il database e assegnare i privilegi eseguire:"
echo "
create database $DATABASE character set utf8 collate utf8_general_ci;"
echo "
grant all privileges on $DATABASE.* to '$AMMIN'@'localhost';"
echo "
set password for '$AMMIN'@'localhost' = password('$MYSQL_AMMIN_PASS');"
echo "
flush privileges;"
else
echo "Creazione database e assegnazione privilegi..."
crea_cnf
echo "create database $DATABASE character set utf8 collate utf8_general_ci;" |
mysql
echo "grant all privileges on $DATABASE.* to '$AMMIN'@'localhost';" | mysql
echo "set password for '$AMMIN'@'localhost' = password('$MYSQL_AMMIN_PASS');" |
mysql
echo "flush privileges;" | mysql
rm $CNF_FILE
fi
fi
crea_virtual_host
/etc/init.d/apache2 reload
fi
38/69
Lagestionedellesicurezza
6.1
Premessa
LasicurezzadiunsistemaLinux,comediunqualsiasisistemainformatico,nonlasemplice
applicazionediunaseriediregole,maunametodologiadiprogettazionecheabbiacomeobiettivo
la messa in sicurezza del sistema nel suo complesso. Troppo spesso infatti vengono messe in
sicurezzasoloalcuneporzionidelsistemadimenticandosi,volutamenteoinvolutamente,dialtre
cherendononelsuocomplessoilsistemainsicuro.
Adesempio,seinunsistemalepassworddegliutentisonosalvatesecondoalgoritmialtamente
sicuri,mapoipermessoagliutentidiimpostareunapasswordidenticaalloronomeutente,o
facilmenteindividuabileinbaseainformazionidell'utentestesso,ilsistemasaraltamenteinsicuro.
Inquestocapitolotratteremosolounapartedeiproblemirelativiallasicurezza,erelativialsolo
sistemaoperativo.Nonvadimenticatopercheognisistemanonfineasestesso,echespessole
suerealifunzionivannoaldiladelsistemaoperativo.
Sipensiinfattiallecredenzialidiaccesso,erelativinumeridicartadicredito,degliutentidiun
negozio diecommerce. Sicuramente tali dati nonrisiederanno sulsistema operativo masu un
database gestito dall'applicazione web di vendita online. La loro compromissione distruttiva
quantoopidiquelladelsistemaoperativo.
6.2
Gliutentidelsistema
LeinformazionirelativeagliutentidiunsistemaLinuxsonocontenutenelfile/etc/passwd,che
perquestorisultaleggibiledaqualsiasiprocessocheneabbiabisogno,edunquedachiunque.
In esso contenuto l'indicazione del nome di login dell'utente, il gruppodi appartenenza, il
percorsodelladirectorypersonale,lashelldaimpiegareallogin,etc.
Questo file pucontenere anche lepassworddegliutenti, ancheseormaitutte ledistribuzioni
privilegianounsistemachiamatodelleshadowpassword,chesalvalepassworddegliutentiinun
altrofile,il/etc/shadow,leggibilesolodalsistemaodall'amministratore,acuigliutentinon
accedono liberamente ma per via di chiamate di sistema. In questo modo nessun utente pu
visualizzarelapassworddinessunaltro,anchesequest'ultimarisultacriptata.
Lostessovieneapplicatoallepassworddeigruppi,chesonocontenutenelfile/etc/gshadow.
Ilfile/etc/passwdcontienesiagliutentirealidelsistemachegliutentidiapplicazioneimpiegati
per l'esecuzione di particolari processi. Ad esempio, il demone del server web Apache viene
eseguitocomeutentewwwdataneisistemiDebianecomeutentehttpneisistemiRedHat.
Esempiodi/etc/passwd:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
39/69
Esempiodi/etc/shadow:
root:*:14555:0:99999:7:::
daemon:*:14555:0:99999:7:::
bin:*:14555:0:99999:7:::
sys:*:14555:0:99999:7:::
gdm:*:14555:0:99999:7:::
gvmura:
$6$SC/qDM.Z$x9FQtwfkVJfPAT4tMAssvB12PEdiKJyCLCd6R2sbhDZf8ohKeHWW.cZzsw0L6oQ2XP8F
hiSDFrDPXRMz/4fJh1:14555:0:99999:7:::
dacuisivedecheilsoloutentegvmuracontieneunapassword.
Agliutentiprividipasswordvienenegatol'accessoalsistema,manonl'esecuzionedeiprocessi.
Comepossibiledunqueeseguireunprocessosenzaaccedervi?Unaltroutente,ilsuperuserroot,
mandainesecuzioneiprocessicomesefossealloroposto.Questometodomoltousatointuttii
sistemiLinuxeUnixingenerale.Operativamentevieneimpiegatoilcomandosu,es:
su - www-data -c apachectl status
cheeseguecomeutentewwwdatailcomandoapachectlcolparametrodiinputstatus.
In un sistema Linux i compiti dell'amministratore sonoda sempre stati demandati all'utente di
sistemaroot,chespessononidentificavaununicoutenterealemapiutenti,cheloimpiegavano
pereseguireivaricompitidilorocompetenza.Perovviareatalesovrapposizionediimpiegoeal
contempoperrispettarelanormativavigenteinmateriadiprotezionedeidatipersonali,gliutenti
amministratoripossonoimpiegareilcomando:
sudo
pereseguireicompitiamministrativiadessiassegnati.Intalmodol'accountrootprivodi
passwordedunqueinibitoall'accesso.
Ilfilediconfigurazionedisudo:
/etc/sudoers
nel quale possibile indicare il nome account degli amministratori, o gli scripts che i non
amministratori siano in grado di eseguire. E' dunque possibile pilotare compiti amministrativi
tramite scripts preorganizzati dall'amministratore e far eseguire tali scripts da utenti non
amministratori,comeselosiano.
Unarigadiesempioditalefilelaseguente:
%admin ALL=(ALL) ALL
nella quale si specifica che tutti gli utenti del gruppo admin sono abilitati ad eseguire ogni
compitoamministrativo.
Siabbiaparticolarecuranellamodificadelfile/etc/sudoers
inquantounasuamodifica,seerrata,
inibiscel'esecuzionedialtrieventualicompitiamministrativi,comeanchelacorrezionedell'errore
sutalefile.Siconsigliadunquedimanteneredueshellattive,incuiunasiaquelladirootel'altra
40/69
quelladitestdelfunzionamentodisudo,inmodochesuerroridaquelladitestlashelldirootne
permettailrimedio.Macomepossibileaprireunashelldiroot?Colcomando:
sudo -i
Altricomandiutili:
6.3
adduser
aggiuntadiunutentealsistema
usermod
modificadiunutentedelsistema
passwd
modificadellapassworddiunutente
deluser
cancellazionediunutente
finger
visualizzazionedelleinformazionidiunutente
Idirittisulfilesystem
Ognioggettodiunfilesystem,siaessofile,directoryodevicehadeidiritticheneabilitanoomeno
l'operativitdapartedegliutenti.Questidirittipossonoesseredi:
lettura
scrittura
esecuzione
doveciascunodiessipuessereapplicatoa:
l'utenteproprietario
ilgruppoproprietario
chiunquealtro
E'possibilevisualizzaretalidirittitramitelaprimacolonnadeloutputdelcomandolsla,es:
drwxr-xr-x 14 root
drwxr-xr-x 16 root
drwxr-xr-x 2 root
drwxr-xr-x 2 root
-rw-r--r-- 1 root
-rw-r----- 1 syslog
-rw-r----- 1 root
drwxr-xr-x 2 root
-rw-r----- 1 syslog
-rw-r----- 1 root
drwxrwx--T 2 root
drwxr-xr-x 3 root
-rw-r--r-- 1 root
-rw-r--r-- 1 root
-rw-r----- 1 syslog
-rw-rw-r-- 1 root
-rw-r----- 1 syslog
root
root
root
root
root
adm
adm
root
adm
adm
gdm
root
root
root
adm
utmp
adm
4096
4096
4096
4096
0
1398
31
4096
29966
40071
4096
4096
0
61553
59947
292292
48312
2010-03-21
2010-01-01
2009-10-17
2010-03-04
2010-03-15
2010-03-21
2009-11-07
2010-03-21
2010-03-21
2010-03-21
2010-03-21
2009-11-07
2009-11-11
2009-11-11
2010-03-21
2010-01-01
2010-03-21
18:52
18:19
06:40
20:41
09:12
19:17
12:47
17:10
19:29
18:52
18:52
13:13
21:27
21:27
18:53
17:53
18:53
.
..
apparmor
apt
aptitude
auth.log
boot
cups
daemon.log
dmesg
gdm
installer
jockey.log
jockey.log.1
kern.log
lastlog
messages
41/69
Ilprimocampoidentificasesiafileodirecotiryd.Glialtricampi,agruppidi3sonoper
l'utente,ilgruppoetuttiglialtriother,incuiperciascungruppoilprimovalorepuessereo
rchestaperlettura,ilsecondoowperscritturaeilterzooxperesecuzione.Quando
ilcampovuoldirecheilrelativodirittonondato.
Adesempio,ilfileauth.logdisopraleggibileescrivibiledall'utentesyslog,leggibiledal
gruppoadmenessunaltrodirittopermessoperaltriutenti.
Notasulledirectory:
Unadirectorynonaltrocheunfileincuisonocontenuteleinformazionidialtrifile,echedunque
lacontengono.Ildirittodiletturasuunadirectorypermettelaletturadelsolofiledirectory(la
lista dei file), manonlavisualizzazionedell'elencodeifileinessacontenuti.Infattiperavere
indicazionisuifilediunadirectorynecessarioancheildirittodiesecuzionesulladirectorystessa.
Esempio:
lsla/tmp/prova
condirittisuotherdirx
lsla/tmp/prova
condirittisuotherdix
lsla/tmp/prova
condirittisuotherdir
Permodificareidirittisuunfilesiimpiegailcomando:
chmod
nelqualepossibilespecificareuperuser,gpergruppoeoperaltri,seguitodaun+oun
(perdareotogliere)edaldirittoassociator,wox.Es,peraggiungereidirittidiletturae
scritturaperutenteegruppoadunfile:
chmod ug+rw nomeFile
questononmodificaeventualidirittigiassegnatialfile.
E'anchepossibileimpostaretuttiidirittisuunfileinunaunicasoluzione.Atalescopoi3possibili
gruppididirittivengonosuddivisitraloroeinterpretaticomecifrebinarieconpotenzadi2,es:
- - 22 21 20
- - 22 21 20
- - 22 21 20
42/69
emettendoassiemeilnumerorisultantedegliaccesisiottieneilvaloredaassegnare,es:
chmod
chmod
chmod
chmod
chmod
750
644
777
333
007
nomeFile
nomeFile
nomeFile
nomeFile
nomeFile
rwxrx
rwrr
rwxrwxrwx
wxwxwx
rwx
sipufare?SI
Comeassegnol'utenteeilgruppopadronediununfile?
Permodificarel'appartenenzadiunfileadunutenteoadungrupposiusailcomando:
chown utente.gruppo nomeFile
conilnomedell'utenteedelgruppoacuiassegnareilfile.
Lostickybit
E'unparticolarebitfacentepartedeidirittidiunadirectorychepermettedirisolvereunproblema
particolare.Sipensiadunacartellacondivisadapiutenti,incuiglistessipossanoscriveree
dunquecreareecancellarefile.Secondoquantoabbiamovistounutentepotrebbe,anchesenzai
dirittidiscrittura,cancellareifilediunaltroutenteinquantohaidirittidiscritturasullacartella,e
questosarebbedaevitare.Perovviareataleproblemasiimpostasullacartellalostickbitothe
restricteddeletionflagcheprimadellacancellazionedelfileverificaoltreaidirittisullacartella
ancheidirittisulfile.
Questobitmoltousatonellecartellecondivisequalila/tmpesiindividuatramiteilcampodi
esecuzionediotherdelladirectorychenonvarrpiox,maotoT,es:
-rwxr-xr-t
-rwxr-xr-T
esecuzioneperotherestickybitimpostato
solostickybitimpostato
Perimpostarlosuunacartellasipueseguireunodeiduecomandi:
chmod +t /tmp
chmod 1777 /tmp
esempioperla/tmp
''''
Ilsetuidesetgid
L'acronimosetuidindicatopersetuserideanalogamenteilsetgidindicatopersetgroup
id.Contaleimpostazione,daassegnareadunfile,unutentevieneabilitatoadeseguireundato
programmaconleautorizzazionidell'utentee/odelgruppoproprietariodelfilestesso.Questoun
altroutilemeccanismoperpermetterel'esecuzionediprogrammioscriptsaltrimentinonpermessi
adutentinonamministratori.Unesempiodiimpiegoditalemodalitdatadalcomandopasswd
cheservepercambiarelapassworddiunutenteopercambiarsilapassword:
ls -la /usr/bin/passwd
-rwsr-xr-x 1 root root 41292 2009-07-31 15:55 /usr/bin/passwd
43/69
comesivededall'esempio,vienesegnalatoconunasalpostodelcampoesecuzione,perindicare
cheilfiledeveessereeseguitocondirittidiroot.Infattiilcomandopasswddevepotermodificare
ilfile/etc/shadow,altrimentiinibitopergliutenti.
Taleimpostazioneputrovarsisiasulcampodell'utenteowner(setuid)chesulcampodelgruppo
owner(setgid).
Affinchfunzioninecessariocheilfilesystemsiamontatoinmodalitasuid
(comeavvienedi
default).
6.4
AppArmor
AppArmor, acronimo di Application Armor uno strumento per la protezione del sistema
sviluppatoconl'obbiettivodifornireunambientedisviluppoperlasicurezza,dalleprestazioni
elevateedalfacileimpiego.Questoproteggeilsistemaoperativoeleapplicazionidaminacce
interneoesterneancheimpedendochesianosfruttatideidifetti,anchenonancoraconosciuti,delle
applicazionistesse.LeimpostazionidisicurezzadiAppArmor,chiamateprofiles,definiscono
precisamente a quali risorse di sistema e con quali privilegi possano accedere le singole
applicazioni. Inquestaottica adogniapplicazioneassociatounprofilodiesecuzione, chene
controllatuttigliaspetti.
L'installazione su Debian di AppArmor presenta gi dei profili predefiniti che blindano anche
applicazioniqualimysql.E'anchepossibileutilizzareinAppArmorstrumentidianalisistatiche
avanzateestrumentidiapprendimento,inmododaconfinareapplicazioniperlequalinonsono
disponibilideiprofilipredefiniti.Inaltreparole,possibileimpostarloinmodalitapprendimento,
eseguire l'applicazione, in tutti i suoi aspetti, e generare il profilo voluto. Una volta generato,
possibilibachiomalfunzionamentidell'applicazionevengonobloccatidaAppArmor.
IlsuofunzionamentodirettamentegestitodalkernelLinux.
Es.diprofilodidefaultpermysql/etc/apparmor.d/usr.sbin.mysqld:
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/mysql>
capability dac_override,
capability setgid,
capability setuid,
/etc/hosts.allow r,
/etc/hosts.deny r,
/etc/group
/etc/passwd
m,
m,
/etc/mysql/*.pem r,
/etc/mysql/conf.d/ r,
/etc/mysql/conf.d/* r,
Universit degli Studi di Sassari CED
44/69
/etc/mysql/my.cnf r,
/usr/sbin/mysqld mr,
/usr/share/mysql/** r,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
PerverificarelostatodiAppArmorsiesegua:
sudo apparmor_status
ilcuioutputadesempio:
apparmor module is loaded.
1 profiles are loaded.
1 profiles are in enforce mode.
/usr/sbin/mysqld
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode :
/usr/sbin/mysqld (4267)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
Siproviagenerareunprofiloperilprogrammaping,conlamodalitdiapprendimento:
sudo aa-genprof /bin/ping
dopolarichiestadiaccessoadunrepositoryinlinedeiprofili,siselezioniL(later),siselezioniS
perunoscandeglieventidisistema,sieseguainuna'altrashellilprocesso,siabiliticonAaivari
eventichegenererilprocesso,esivisualizziallafineilprofilogenerato,chepuessereinserito
neiprofilidaanalizzare/etc/apparmor.d/conilsalvataggioS.Profilogeneratobin.ping
# Last Modified: Wed Mar 24 18:47:41 2010
#include <tunables/global>
/bin/ping flags=(complain) {
#include <abstractions/base>
#include <abstractions/nameservice>
capability net_raw,
capability setuid,
network inet raw,
}
Perricaricaretuttiiprofiliassegnatisiesegua:
sudo /etc/init.d/apparmor reload
Altricomandiutili:
45/69
aa-logprof
46/69
Iservizidibase
7.1
Iservizidirete
Quandosiparladiservizidirete,opiprecisamentedelLinuxnetworkingsubsystem,siintendono
tutti queiservizichepermettonosialacomunicazionedelserverconilmodoesterno,esiala
comunicazionestessadeiprocessiinternitraloro(interprocessnetworking)eseguitatramiteunix
socket.
Inquestocorsofocalizzeremol'attenzionesolosuiservizidicomunicazioneesterni,dandodivolta
involtadegliaccennialsistemadiinterprocess.
Durantel'installazionedelservervienerichiestodiinserirelaconfigurazioneIPdellostesso,che,
come nel nostro caso stata rimandata. Questa avrebbe precompilato per noi dei file di
configurazionechepermettonoalsistemailcollegamentoconlaretelocale,secollegata.Ipassi
necessaripereseguireunataleconfigurazione,nelcasodisistemiDebianlike,sono:
compilazionedelfile/etc/hosts
''''/etc/networks
''''/etc/network/interfaces
riavviodelserviziodirete
Vediamoneldettaglioivaripassi.
IlfiledihostscontienealsuointernogliindirizziIPdellamacchinautiliperlamappaturastessa
delnomehostdelserverconilrelativoindirizzo,es:
127.0.0.1
localhost
192.168.50.20 prova.uniss.it
prova
posta
in questo il sistema associa al nome localhost e al nome posta l'indirizzo 127.0.0.1 che un
particolare indirizzo impiegato ad esempio negli unix socket. All'indirizzo IP di comunicazione
verso l'esterno viene invece associato un nome completo a dominio e lo stesso nome host breve.
Il file networks contiene informazioni sulle reti di appartenenza, es:
default
loopback
link-local
localnet
0.0.0.0
127.0.0.0
169.254.0.0
192.168.50.0
Il file interfacescontienelaconfigurazioneditutteleinterfaccedirete,es:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
Universit degli Studi di Sassari CED
47/69
analizzandolosipossonotrarreleseguentiinformazioni:
laretelo(diloopback)vieneavviataalbootinautomatico
la rete eth0 presenta una configurazione statica, dove cio vengono assegnati tutti i
parametriqualil'IP,lanetmask,ilgateway,etc,evieneavviataalboot
lareteeth1presentaanch'essaunaconfigurazionestaticaqualel'altra,manonviene
avviataalboot.
Perquantoriguardainvecel'avvio,stopeilriavviodeiserviziodirete,loscriptincaricatoditale
compitoilseguente:
/etc/init.d/networking
cheparserizzaifilediconfigurazione(conparticolareriguardoperinterfaces)edesegueirelativi
comandidiavvio,stopostart.
Unesempiodeicomandichepossibileimpiegaredashellperlaconfigurazionedeiserviziretee:
ifconfig
ifup
route
Ilcomandoifconfigpermette,tralealtrecose,dimodificarel'indirizzofisicoMACdellaschedadi
rete,es:
ifconfig eth0 hw ether nuovoMAC
evaeseguitoprimadell'avviodellascheda.Naturalmentealbootvieneripristinatoilprecedente
valore,perrenderlopersistentenecessario,adesempio,ilsuoinserimentonelloscriptdiavviodei
servizidirete.
Visonopoideitoolsdivisualizzazione,analisiemodificadialtriparametriancorapispecifici,
quali:
Universit degli Studi di Sassari CED
48/69
ethtool
netstat
Soffermiamocisulcomandonetstat.
Tramitequestopossibilevisualizzaretutteleportedireteapertesulsistema,siachesitrattidi
portediascolto(server)oclient,tcpoudp,unixsocketodirete,attiveoinchiusura,etc.
Esempiodinetstatln:
ActiveInternetconnections(onlyservers)
ProtoRecvQSendQLocalAddressForeignAddressState
tcp000.0.0.0:1100.0.0.0:*LISTEN
tcp000.0.0.0:800.0.0.0:*LISTEN
tcp000.0.0.0:220.0.0.0:*LISTEN
tcp000.0.0.0:250.0.0.0:*LISTEN
tcp000.0.0.0:4430.0.0.0:*LISTEN
udp00192.168.50.20:1230.0.0.0:*
udp00127.0.0.1:1230.0.0.0:*
udp000.0.0.0:1230.0.0.0:*
ActiveUNIXdomainsockets(onlyservers)
ProtoRefCntFlagsTypeStateINodePath
unix2[ACC]STREAMLISTENING11293public/cleanup
unix2[ACC]STREAMLISTENING11300private/tlsmgr
unix2[ACC]STREAMLISTENING11304private/rewrite
Esempiodinetstatln:
ActiveInternetconnections(w/oservers)
tcp00192.168.50.20:25192.168.51.20:39137TIME_WAIT
tcp00192.168.50.20:443192.168.50.253:58771ESTABLISHED
tcp00192.168.50.20:25192.168.51.20:39216TIME_WAIT
tcp00192.168.50.20:110172.16.34.96:2555TIME_WAIT
tcp00192.168.50.20:110192.168.50.253:40373TIME_WAIT
ActiveUNIXdomainsockets(w/oservers)
ProtoRefCntFlagsTypeStateINodePath
unix2[]DGRAM6141@/com/ubuntu/upstart
unix2[]DGRAM6273@/org/kernel/udev/ude
vd
unix36[]DGRAM10934/dev/log
unix3[]STREAMCONNECTED21163263private/rewrite
unix3[]STREAMCONNECTED21163262
unix3[]STREAMCONNECTED21163258private/proxymap
Le diciture eth0, o eth1, impiegate nei precedenti fili di configurazione sono dei nomi logici
assegnatialleschedefisichedalkernelalmomentodelboot.Ilfiledimappaturailseguente:
/etc/udev/rules.d/70-persistent-net.rules
dove, nel caso siaggiungesse una scheda, anche di sostituzione aduna gi presente, il kernel
aggiungerebbeunulteriorenomelogico.Perevitarlopossibilecancellareilnomelogicodella
schedadasostituireprimadellospegnimentodelserverperlasostituzione.
49/69
NotesusistemiRedHat.
NeisisteminonDebianlike,qualiRedHat,illavorosvoltodalfileinterfacessvoltodaunfile
perognischedaconfigurata,anchenelcasodisubinterfacce.
Ilnomediunodiquesti,nell'esempiodellaschedaeth0ilseguente:
/etc/sysconfig/networkscripts/ifcfgeth0
econtienealsuointernoinformazionianaloghedelfileinterfaces:
DEVICE=eth0
IPADDR=192.168.50.20
NETMASK=255.255.255.0
NETWORK=192.168.50.0
BROADCAST=192.168.50.255
BOOTPROTO=none
ONBOOT=yes
nelqualepossibileinserireancheinformazioniriguardoalgatewaydaimpiegarepertalescheda.
Ingeneraleinveceilgatewayinseritonelfile:
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=
GATEWAY=192.168.50.1
7.2
Ilservizioditempontp
Il NetworkTimeProtocol (ntp)unsistemaperlasincronizzazionedeltempodiorologiodei
calcolatoriattraversolareteInternet,sviluppatoprincipalmentepressol'universitdel Delaware
negliStatiUniti.Nesonostatedefinite3versioni:la1nel1988,la2nel1989ela3nel1992.La
versionecorrentela3checompatibileconleprecedenti.Perfacilitarel'usodiNTPsuipersonal
computerstatadefinitalaversionesemplificataSimplifiedNTP(SNTP1995).
Leprincipalicaratteristichedelserviziontpsono:
completamenteautomaticoemantienelasincronizzazioneinmodocontinuativo;
adattoallasincronizzazionesiadiunsolocalcolatore,siadiintereretidicalcolatori;
progettatoperessereresistenteaglierroriesiautoconfiguradinamicamente;
diffondeiltempoUTC,quindiindipendentedaifusiorariedalleorelegali;
laprecisionedisincronizzazionearrivafinoad1millisecondo.
Unserverprimariontp,dettoanchedistrato1,uncalcolatorecollegatoadunorologiodialta
precisioneedotatodiun software ntp.Altricalcolatori, dettidistrato2,dotatidiun software
similare,chiedonolasincronizzazionedelpropriotempodisistemaalserverprimariocherisponde
condeimessaggidisincronizzazione.Icalcolatoridistrato2possonoalorovoltasincronizzare
altricalcolatori,dettidistrato3,ecosviafinoa16strati.Manmanochecisiallontanadallostrato
1laprecisionedellasincronizzazionediminuisce.Inquestastruttura,ciascuncalcolatorepuessere
contemporaneamenteserverperlemacchinedistratoinferiorechesisincronizzanosudiessoe
Universit degli Studi di Sassari CED
50/69
clientperlamacchinadistratosuperioredacuiessostessosisincronizza.Ogniserverpuavere
alcunecentinaiadiclient,quindiilnumerodimacchinesincronizzabiliindirettamentedaunsingolo
serverprimariopraticamenteillimitato.Perrendereilsistemapiaffidabile,unclientpuavere
pi di un server di strato superiore. In questo caso, il software ntp misura continuamente le
caratteristiche di stabilit e precisione dei possibili server, scegliendo di volta in volta come
riferimentoquelloconlemiglioricaratteristiche.
Inbaseaquantodetto,ilprocessochesvolgelefunzionidiserverdelserviziolostessochesvolge
lefunzionidiclient.Ladifferenzarisiedenelleconfigurazionidelprocessocheabilitanoomenola
richiestadeltempoalserverstesso.
Loscriptchesioccupadiavviareilservizioilseguente:
/etc/init.d/ntp
elasuaconfigurazionememorizzatanelfile/etc/ntp.conf.Unesempiodellaconfigurazione
clientilseguente:
tinkerpanic0
driftfile/var/lib/ntp/ntp.drift
#Enablethisifyouwantstatisticstobelogged.
#statsdir/var/log/ntpstats/
statisticsloopstatspeerstatsclockstats
filegenloopstatsfileloopstatstypedayenable
filegenpeerstatsfilepeerstatstypedayenable
filegenclockstatsfileclockstatstypedayenable
#YoudoneedtotalktoanNTPserverortwo(orthree).
#serverntp.ubuntu.com
serverntp1.ammin.uniss.it
#Bydefault,exchangetimewitheverybody,butdon'tallowconfiguration.
restrict4defaultkodnotrapnomodifynopeernoquery
restrict6defaultkodnotrapnomodifynopeernoquery
#Localusersmayinterrogatethentpservermoreclosely.
restrict127.0.0.1
restrict::1
nelqualelerighechenedefinisconolecaratteristicheclientenonserversonoirestrictallequery.
Lostessofile,perunaconfigurazioneserverinvecediquestotipo:
#Prohibitgeneralaccesstothisservice.
restrictdefaultnotrustnomodifynoquerynotrap
#Permitallaccessovertheloopbackinterface.Thiscould
#betightenedaswell,buttodosowouldeffectsomeof
#theadministrativefunctions.
restrict127.0.0.1
restrict127.127.0.0mask255.255.0.0#internalclocks
...
restrict193.204.201.0mask255.255.255.0nomodifynoquerynotrap
restrict193.204.205.0mask255.255.255.0nomodifynoquerynotrap
restrict192.168.50.0mask255.255.255.0nomodifynoquerynotrap
Universit degli Studi di Sassari CED
51/69
...
serverntp1.inrim.it
serverntp2.inrim.it
serverntp.metas.ch
servertempo.cstv.to.cnr.it
serverntp.myinbox.co.uk
serverclock.isc.org
#serverntpcup.external.hp.com
serverswisstime.ethz.ch
serverntp1.cs.mu.OZ.AU
serverntp0.cs.mu.OZ.AU
servertick.usask.ca
servertock.usask.ca
serverntps10.unierlangen.de
serverntps11.unierlangen.de
serverntps12.unierlangen.de
serverntps13.unierlangen.de
server127.127.1.0#localclock
fudge127.127.1.0stratum10
driftfile/var/lib/ntp/drift
logfile/var/log/ntp/ntpd.log
statisticsloopstatspeerstatsclockstats
filegenloopstatsfileloopstatstypedayenable
filegenpeerstatsfilepeerstatstypedayenable
filegenclockstatsfileclockstatstypedayenable
nelqualelerighechenedefinisconolecaratteristicheserversonoilgrandenumerodiserver,che
sarebbemegliofosserodistratum1o2,elerestrictsulleretiabilitate.
Perdisabilitaredidefaultl'inviodell'orarioaiclientlarestrictdausare:
restrict default ignore
E' importante che tra i server, magari con un valore di stratum alto (es: 10), ci sia l'indirizzo
127.127.1.0chespecificoperilclockdelbiosdisistema.Inquestomodo,nelcasotuttiiserver
sianoirraggiungibili,ilservizioabilitatoaprenderel'orarioanchedalBIOSinterno.
Infattidoverosoricordarechefinoaquandoilserviziononriescaastabilizzarel'orario,anchese
giattivo,nonlodiffondeaiclient.
Nelcasovisiaunagrandedifferenzatral'orarioimpostatonelclientel'orarioriportatodalserver
(pi di 12 ore) la sincronizzazione non avviene, ed necessario un intervento dell'utente. Per
questo,primadiavviareilserviziontpconsigliabileeseguireilcomando:
ntpdate nomeServer
cheallineal'orariointernoconquellodelserverindicato.
Ilprotocollontpimpiegaperloscambiodiorariotraclienteserverdeipacchettiudpecometali
senzaconnessione.Laportastandarddicomunicazionesucuisiattivailserviziola123.
Lognetstatln|more:
52/69
udp00192.168.51.5:1230.0.0.0:*
udp00127.0.0.1:1230.0.0.0:*
udp000.0.0.0:1230.0.0.0:*
7.3
Ilserviziossh
Ilserviziosshosecureshellunprotocollodiretecheabilitaloscambiodiinformazionitra
dispositivi impiegando un canale di comunicazione sicuro (criptato). Uno dei suoi impieghi
principaliquellodicollegamentoallashell(dacuiprendeilnome)diunsistemaperpermetterne
l'amministrazionedaremoto,eintalsensohasoppiantatoilservizioditelnetchenonpermettelo
scambiodidatisucanaleprotetto.
Comeavvieneloscambiodeicertificati?
Perfareinmodocheidativenganoinviatisullareteinmanieracrittografataclienteserversi
scambianodellechiavidicrittografiasecondounamodalitchiamataCrittografiaAssimetricao
Crittografia a chiave pubblica e privata, che si basano su dimostrazioni matematiche molto
complesse.Noinevedremosoloilfunzionamento:
1.
Ilclientrichiedeilservizioalserverssh.
2.
IlservercomunicaalclientchelaconnessioneavverrinSSLeperquestogliinviail
suocertificatopubblico.
3.
Ilclientsshpucontrollarepressounenteterzo(menzionatonelcertificatopubblico)
cheilcertificatopubblicodelserversiavalido.Perfarequestoinviaquelcertificatoad
una Certificate Authority (autorit di certificazione, C.A.), che gli da conferma o
menodellautenticitdelcertificatopubblicodelserver;
4.
5.
Daquestomomentoinpoiidatisonoinviatiinmanieracrittografata.
Ilclientinviaidaticrittografandoliconilcertificatopubblicodelservereilserverinvia
idaticrittografandoliconilcertificatopubblicodelclient.
Ilserverdecrittografaidatiricevuticonilsuocertificatoprivato,infattiquestieranostati
crittografati dal client con il certificato pubblico del server. Stessa cosa fa il client,
impiegandoperilsuocertificatoprivato.
53/69
1
client
2
5
3server
C.A.4
Perchnessunopuleggereidatiscambiatitraidue?
Si evidenziato il fatto che sia quasi impossibile decrittografare dati senza la corrispondente
chiaveprivataperchadesempioconunachiavea128bitsiahanno3,4x1038combinazioni.Anche
conlapotenzadeicomputerdioggisistimachecivoglianoparecchianniperpoterlofare.
Anche se qualcuno tentasse limpresa, avrebbe dei dati vecchi di molti anni, che i server non
accetterebberopi.
Importanteilruolodellesocietdicertificazione,perchsenzadiquesteunosipotrebbefingere
qualcunaltrosenzaaverbisognodelcertificatoprivatodichisifingediessere.
Questemetodologiestannoancheallabasedellafirmadigitale.
L'installazione del servizio avviene tramite la scelta del pacchetto opensshserver. Durante
l'installazione viene auto prodotto un certificato che verr usato dal demone ssh per le
comunicazioniprotette.
Tramitel'usodeicertificatipossibilefareinmodochel'autenticazionealserversshavvenganon
soloviapasswordmaanche,osolo,viacertificati,inmododarestringereulteriormentel'accessoal
server.
Perdisabilitarel'accessotramitepassworddisistemavaimpostatosulfile:
/etc/ssh/sshd_config
ilparametro:
PasswordAuthentication no
54/69
Perabilitarel'accessotramitecertificativannoimpostatinelfilediprimaiparametri:
PubkeyAuthentication
AuthorizedKeysFile
yes
%h/.ssh/authorized_keys
e compilato il file indicato in AuthorizedKeysFile con le chiavi pubbliche degli utenti che
voglianoconnettersi.
Un'altrafunzionalitmoltousatodeldemonesshquelladiportforwardingotunnelingdelle
connessioni, che permette di impiegare il canale protetto per altre comunicazioni quali quelle
grafichedeldemoneXserver.Infattinonraropoterveicolareunterminalegraficosullasolaporta
ssheinmanieracriptata.Perfarequestonecessarioimpostarenelfilediconfigurazionedisoprail
parametro:
X11Forwarding yes
E' possibile configurare il comportamento anche del client ssh tramite i parametri del file di
configurazione:
/etc/ssh/sshd_config
55/69
L'ottimizzazionedelsistema
8.1
Premessa
InquestocapitolotratteremovariargomentiinerentiunsistemaLinux,ancheditipologiamolto
differente tra loro, ma che presentano degli aspetti legati all'ottimizzazione e dunque alle
performancedelsistema.
8.2
Iparametridelkernel
IlkernelilcuorediunsistemaoperativoGNU/Linux.Esistonovarietipologiedikernel,trale
altre,a32oa64bit,ditiposerveromeno,etc.Ladifferenzatraquestinellefeaturescaricatee/o
alvaloredellaconfigurazionedellestesse,chepermettedimodificarespessoanchesostanzialmente
ilfunzionamentodelsistemastesso.Questemodifichepossono,asecondadeicasi,individuarsicon
l'installazionediunpacchettokerneldifferenteoconlamodificadialcuniparametridellostesso.
Asecondadeltipodiparametropossibilelamodificaancheasistemaoperativogiavviato,o
tramiteilpassaggiodirettodallarigadiavviodelkernel.
E'possibilevisualizzareilvaloredeiparametridifunzionamentodelkerneltramitedifferentivie,
tralequalivisonolerichiesteeseguitesulfilesystem/procoicomandidisysctl.Ilfilesystem
/procunparticolarefschevienecreatonelsistemaproprioatalescopo.Traglialtriinquesto
filesystemsonocaricateleinformazionidituttiiprocessiattivisulsistema.
Vediamoalcuniesempidichiamatealfilesystem/proc.
Visualizzazionedelleinformazionidellacpucat/proc/cpustat:
processor
:
vendor_id
:
cpu family :
model
:
model name :
stepping
:
cpu MHz
:
cache size :
fdiv_bug
:
hlt_bug
:
f00f_bug
:
coma_bug
:
fpu
:
fpu_exception
cpuid level :
wp
:
flags
:
0
GenuineIntel
6
13
Intel(R) Pentium(R) M processor 1.70GHz
6
600.000
2048 KB
no
no
no
no
yes
: yes
2
yes
fpu vme de pse tsc msr mce cx8 apic mtrr pge mca cmov
clflush dts acpi mmx fxsr sse sse2 ss tm pbe up bts est tm2
bogomips
: 1196.02
clflush size
: 64
Universit degli Studi di Sassari CED
56/69
power management:
Visualizzazionedelleinformazionisulloswapimpostatonelsistemacat/proc/swaps:
Filename
/dev/sda5
Type
partition
Size
514040
Used
0
Priority
-1
Visualizzazioneeimpostazionedelparametrodelgestoredellamemoriavirtuale(vm)relativoalla
probabilitdiimpiegodelloswapdapartedelsistema:
cat /proc/sys/vm/swappiness
echo 0 > /proc/sys/vm/swappiness
60,valoredidefaultdelkernel
0,valoreconsigliatopermacchine
virtuali
Visualizzazioneeimpostazionedelparametrodelkernelrelativoallamassimadimensionedella
sharedmemory,moltoutileinambientididatabaseserver:
cat /proc/sys/kernel/shmmax
echo 1073741824 > /proc/sys/kernel/shmmax
33554432,valoredidefault
1GB
Lostessotipodioperazionieseguitesulfilesystem/procsonopossibilitramiteilcomandogi
menzionatosysctl,ilcuiusoilseguente:
usage:
sysctl
sysctl
sysctl
sysctl
Lamodificadiquestiparametri,viafs/procoviasysctlnonvieneconservataalsuccessivo
riavviodelsistema.Atalescopoutilel'impiegodelfile:
/etc/sysctl.conf
nelqualepossibileinserireiparametriconilnuovovaloreassociato.Leimpostazionidiquesto
filevengonocaricatealboot.Perindividuareilnomeesattodelparametrochenecessarioinserire
all'internodelfilepossibileeseguireunaricercasuloutputdelcomandosysctla.
Per alcuniparametripi utile, onecessario,eseguirnelamodifica afreddo,ciopassando il
relativovaloredirettamentedallarigadicomandodelbootdelkernel.Ilfilechepermetteunatale
impostazione dunquequellodiconfigurazionedelbootloader.Nelcasodigrubilfilein
questione/boot/grub/menu.lst,dicuisialleganodellerighediesempio:
title
Ubuntu 8.04.3 LTS, kernel 2.6.24-26-server
root
(hd0,0)
kernel
/vmlinuz-2.6.24-26-server root=/dev/mapper/vg00-lv00 ro quiet
splash clocksource=acpi_pm elevator=noop
initrd
/initrd.img-2.6.24-26-server
quiet
57/69
NOTA:SullaversioneUbuntuDesktop9.10ilpacchettogrubsostituitodalpacchettogrubpc
chenoncontemplapiilfilemenu.lst.Leconfigurazionidiquestoultimodevonodunqueessere
eseguitesulfile/etc/default/grubereseattivetramiteilcomando:
update-grub
affinchsianocaricatenellaconfigurazionedelbootloader.
8.3
Labuffercache
Labuffercachequellaporzionedellamemoriacentralecheimpiegatapersalvaretuttele
informazionichedevonoesserescambiateconidispositividimemoriadimassaechevienegestita
dalsistemadiprocessidellavirtualmemory.Ilsuoutilizzodibasilareaiutoperl'ottimizzazione
delleperformancediunsistema,inquantolamemoriacentralerisultamoltopivelocediquelladi
massa,eunimpiegoottimalechemappipartideidispositividimemoriadimassainmemoria
centralerendel'accessoaidatimoltopiveloce.
Sipensialcasoincuisiautileleggeredadiscounacertaquantitdidati,echepartedeltemposia
persoinattesacheildispositivosiposizionisulletraccecontenentiidatidaleggere.Sepocodopo,
il sistema dovesse richiedere altri dati, conseguenti ai precedenti (caso molto probabile), si
dovrebbeattendereancoradeltempoperilposizionamentodelletestinedeidispositivi.Seinvece
fossepossibilerichiederealdiscounaquantitdidatimaggiore,dasalvareinunadataporzionedi
memoria,l'esecuzionedeiprocessinerisulterebbeaumentata.
Questapoliticadigestioneimpiegataintuttiqueisistemiincuivisiaunoscambiodidatitra
dispositivicheoperanoavelocitmoltodifferentetraloro,quali:
cpumemoriacentrale
memoriacentralesistemididisco
Unastessapoliticaimpiegataanchealivelloapplicativoadesempionell'ambientedeidatabase,
neiqualipartedeldbsalvatosudiscovienemappatoinunaporzionedimemoriacentralededicata.
Inquestisistemil'impiegodellabuffercachedisistemaoperativocontroproducente,inquantosi
vieneacreareundoppiolivellodicachechenonneaumentaleperformance,maanzineduplicale
informazioni.Inquesticasiutileimpiegaredeifilesystemdedicatipersalvareifilesimpiegatidal
database,emontarequestiultimiinmododanonimpiegarelabuffercacheodaimpiegarlain
manieraappropriata.Asecondadelsistemaoperativoedeifilesystemlemodalitdiapplicazione
sonodifferentitraloro.
L'impiegodellabuffercacheutileanchenelcasodidatimodificatirispettoalcorrispettivovalore
suldicoeinattesadiesserescritti.Inquestocasolapoliticadigestioneattuataconl'obbiettivo
dell'incremento delle performance di scrittura. In tali casi si parla di write cache. Uno dei
parametripiimportantidellawritecache:
/proc/sys/vm/dirty_ratio
chedefiniscelamassimapercentualedibuffercachecheimpiegataperidatiinattesadiscrittura
sudisco,daquil'indicazionedisporchi.
Universit degli Studi di Sassari CED
58/69
InlineadimassimaunsistemaLinuximpiegatuttalaquantitdiramdisponibile.Questosignifica
chespessounsistemaLinuxpresentatuttalaramoccupataancheinpresenzadiunpiccolocaricodi
sistema.Ilconcetto,latoserver,risultamoltooculato,inquantononcisarebbemotivopernon
impiegare tutta la memoria che l'hardware rende disponibile al sistema. Ma chi impiega tale
memoriaseiprocessinonlofanno?Labuffercache.Echedatisonomemorizzatisudiessa?
Porzionideidatisudisco.
Esempio:sivedapartedell'outputdelcomandotopsuunsistema:
top - 18:59:39 up 1:15, 3 users, load average: 0.79, 0.49, 0.22
Tasks: 131 total,
2 running, 129 sleeping,
0 stopped,
0 zombie
Cpu(s): 2.0%us, 0.7%sy, 0.0%ni, 95.5%id, 1.5%wa, 0.2%hi, 0.0%si, 0.0%st
Mem:
2061088k total,
539292k used, 1521796k free,
33768k buffers
Swap:
514040k total,
0k used,
514040k free,
265852k cached
PID
1374
2002
1750
2800
16
708
1
USER
root
gvmura
gvmura
gvmura
root
messageb
root
PR
20
20
20
20
15
20
20
S %CPU %MEM
S 1.0 1.4
S 0.7 0.6
S 0.5 4.9
R 0.5 0.1
S 0.2 0.0
S 0.2 0.1
S 0.0 0.1
TIME+
1:38.17
0:12.69
2:28.63
0:00.22
0:01.09
0:01.18
0:00.93
COMMAND
Xorg
gnome-terminal
soffice.bin
top
ata/0
dbus-daemon
init
esivedalostessooutputdopol'esecuzionedelcomandogreprprova/:
top - 19:12:50 up 1:29, 3 users, load average: 0.03, 0.33, 0.33
Tasks: 131 total,
2 running, 129 sleeping,
0 stopped,
0 zombie
Cpu(s): 1.0%us, 0.7%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:
2061088k total, 1981716k used,
79372k free,
34860k buffers
Swap:
514040k total,
1152k used,
512888k free, 1707456k cached
PID
2949
1374
1750
34
1016
2002
1
USER
gvmura
root
gvmura
root
root
gvmura
root
PR
20
20
20
15
20
20
20
TIME+
0:00.05
1:47.99
2:53.82
0:02.64
0:02.35
0:15.03
0:00.93
COMMAND
top
Xorg
soffice.bin
scsi_eh_1
hald-addon-stor
gnome-terminal
init
dalqualesiosservachelamemorialiberadelsistemapassada1.5GBa79MBelamemoria
cachedda266MBa1.7GB.
8.4
Lacompilazionedelkernel
IlkernelLinux,comeabbiamogidetto,ilcuoredelsistemaoperativo.Alsuointernosono
presentituttelestrutturedatinecessarieperilfunzionamentodelsistema.Perquestomotivonegli
annidivenuto semprepigrande,dacuilarecente frasedello stessoLinus Torvalds cheha
dichiaratocheilkernelLinuxdivenutoHuge And Bloated(enormeegonfio).Lamotivazione
dataprincipalmentedall'aumentodellefunzionalitedall'aumentodelleperiferichericonosciute.
Le varie distribuzioni rilasciano differenti kernel per differenti ambienti operativi (es: server o
desktop), proprio per permettere di avere performance mirate ai differenti ambienti operativi.
Universit degli Studi di Sassari CED
59/69
Questopupernonbastareperlarichiestadituningdegliamministratoridisistema,epertanto
disponibilelafunzionalitdicompilazionedelkernelconisolimodulinecessari.
Peresempio, nelcasocheilpropriosistemanoncontemplidelleperiferiche audio,possibile
compilareunkernelprivoditalifunzionalit,epertantopipiccoloesnello.
Naturalmente questa scelta diminuisce la versatilit del sistema, e necessita diunaumento del
lavoro diamministrazione incasodiaggiornamenti delkernelstesso,chedovrasempreessere
ricompilatoaparte.
Ipassilogiciperl'esecuzionedellavorodicompilazionedelkernelsono:
1)
2)
3)
4)
installazionedeipacchettipropedeuticinecessariedeisorgentidelkernel
configurazionedeiparametri
compilazionedelkernelveroeproprio
installazioneetestdelnuovokernel
Vediamoneidettagliivaripassi.
Installazionedeipacchettipropedeutici:
apt-get install buildessential fakeroot linux-source kernel-package ccache
libncurses5-dev
Perlaconfigurazionedeiparametriutilepartiredaivalorigiimpostatinelkernelattualmente
avviato,chepossibiletrovarenelfileconfigpresentenellacartella/boot,es:
/boot/config-2.6.31-20-generic
copiandolocome.confignelladirectorydeisorgentidelkernel,eseguitepoiilcomando:
make oldconfig
Lamodificadeiparametripotraquestopuntoavvenireoandandodirettamenteamodificarei
valoripresentiall'internodelfile.configotramiteilcomando:
make menuconfig
E'orapossibilepassareallacompilazioneveraepropriatramiteilcomando:
make-kpkg buildpackage -rev=test1 initrd kernel_image kernel_headers
A fine compilazione sar possibile installare i due pacchetti .deb generati dal processo di
compilazioneconilcomando:
dpkg -i pacchettoKenel pacchettoHeaders
Ilprocessodiinstallazionedovrebbeinstallareinautomaticoilnuovokernelnelladirectory/boot
eaggiornareilbootloadergrubconlanuovarigadistart.
Perfiniresidovrtestareilbootdelsistematramiteilriavviodellostesso.Nelcasovifosserodegli
erroril'avviodelsistemasifermerconunkernelpanicepotressereutileanalizzarelerighe
pocoprimadiquestapercapirecomerisolvereilproblema,alqualedovrseguireunasuccessiva
compilazionedelkernel.
Universit degli Studi di Sassari CED
60/69
8.5
Gliscriptsdiavvioalboot
All'avvio del sistema operativo il kernel si occupa di eseguire gli scripts che trova in alcune
directoryparticolaridelsistema,inmodoche,dopoilboot,ilsistemasiaprontoperfunzionarecos
comerichiestodall'amministratore.Seadesempioilsistemaimpiegatocomeserverwebpotrebbe
esserenecessarioavviareilservizioApache,oildemonesshperunaamministrazionedelserverda
remoto.Questocompitoeseguitodaldemoneinitcheperquestoindicatocomeilpadreditutti
glialtriprocessi.
InunsistemaLinux,maancheinungenericoUnix,visono5diversilivellidilavoro,numeratida1
a5,eperquestosidicechevisiano5diversilivellidiinit.Inunparticolaistanteilsistemasi
troverinunodiquestilivelli.Nontuttiilivellisonoperimpiegatieffettivamente.Adesempio,i
livelliusatiinunsistemaDebiansonoil1eil2,mentreinunsistemaRedHatsonoil1,il3eil
5.Ladifferenzatraquestilivellidatasolodaunaconvenzione.Adesempio,unsistemaarigadi
comandosuDebianusaillivello2,mentresuRedHatillivello3,anchesegliscriptsall'internodi
questilivellipossonoessereancheidentici.UnsistemagraficosuDebianusacomunqueillivello2,
mentresuRedHatillivello5.Sicapiscedunquechequestilivellidifferisconosolopergliscripts
cheavvianoalboot,infattimoltisoftwareinserisconoilloroscriptdiavviointuttiilivellidi
sistema,inmodochevengaavviatoqualunquesiaillivellodiboot.
Illivello1chiamatolivellodisingleuserinquantovengonoavviatisoloiprocessidisistema
indispensabili(comunqueunaconvenzione).E'usatoadesempiodall'utenterootperrisolvere
problemidelsistema.
Pervedereinchelivellosiaunsistemasiesegua:
who -r
mentrepercambiarelivello:
init numeroNuovoLivello
Duranteilcambiodiunlivello,primadiavviaregliscriptsdistartdellivellodidestinazione,
vengono eseguito gli scripts di stop del livello di acui ci sitrova, e che sitrovano anch'essi
all'internodellivello,maconunformatodifferentedaquellidistart.
Ilkernelinfatti,quandoentrainunlivello,eseguetuttigliscriptscheinizianoperSequandoesce
daunlivello(perpassareadunaltro)eseguetuttigliscriptscheinizianoperK.L'ordinedi
esecuzionedatodaunnumerocheseguelaletteraSoK.
Dovesitrovanogliscriptsdiunlivello?
Gliscriptsdiciascunlivellositrovanoinparticolaridirectory,sottola/etcchiamatercN.d,
doveNindicailnumerodellivello.Adesempio:
/etc/rc1.d/...
/etc/rc2.d/...
61/69
Esempiodioutputdelcomandolsla/etc/rc2.d/:
drwxr-xr-x
2 root root 4096 2010-03-17 18:00 .
drwxr-xr-x 139 root root 12288 2010-03-20 15:15 ..
-rw-r--r-1 root root
677 2009-11-10 10:44 README
lrwxrwxrwx
1 root root
20 2009-11-07 13:07 S20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx
1 root root
27 2009-11-07 13:07 S20speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx
1 root root
17 2010-03-17 18:00 S20vboxdrv -> ../init.d/vboxdrv
lrwxrwxrwx
1 root root
19 2009-11-07 13:06 S25bluetooth -> ../init.d/bluetooth
lrwxrwxrwx
1 root root
14 2009-11-07 13:03 S50cups -> ../init.d/cups
lrwxrwxrwx
1 root root
20 2009-11-07 13:09 S50pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx
1 root root
15 2009-11-07 13:05 S50rsync -> ../init.d/rsync
lrwxrwxrwx
1 root root
15 2009-11-07 13:08 S50saned -> ../init.d/saned
lrwxrwxrwx
1 root root
19 2009-11-07 13:05 S70dns-clean -> ../init.d/dns-clean
lrwxrwxrwx
1 root root
18 2009-11-07 13:05 S70pppd-dns -> ../init.d/pppd-dns
lrwxrwxrwx
1 root root
24 2009-11-07 13:06 S90binfmt-support -> ../init.d/binfmt-support
lrwxrwxrwx
1 root root
22 2009-11-07 13:05 S99acpi-support -> ../init.d/acpi-support
lrwxrwxrwx
1 root root
21 2009-11-07 13:12 S99grub-common -> ../init.d/grub-common
lrwxrwxrwx
1 root root
21 2009-11-07 13:05 S99laptop-mode -> ../init.d/laptop-mode
lrwxrwxrwx
1 root root
18 2009-11-07 12:47 S99ondemand -> ../init.d/ondemand
lrwxrwxrwx
1 root root
18 2009-11-07 12:47 S99rc.local -> ../init.d/rc.local
dacuisicapiscechenelsistemadell'esempiononcisonoscriptsdistopdellivello2einoltreche
taliscriptssonodeilinkascriptschesitrovanonellacartella:
/etc/init.d
nientevietacomunquediinserirescriptsveriepropri;questainfattisolounaconvenzione.
DisolitounoscriptS,diavviodiunservizio,identicoalloscriptKdistopdellostesso
servizio.InfattiilkernelpassailparametrostartagliscriptsSeilparametrostopaquelli
K.Sedunquelostessoscripteseguelostartdelserviziovolutoallaricezionedistartelostop
allaricezionedistop,nonsihal'esigenzadiscriptsdifferenti.
Esempiodiscriptdistartostop/etc/init.d/ntp:
#!/bin/sh
### BEGIN INIT INFO
# Provides:
ntp
# Required-Start: $network $remote_fs $syslog
# Required-Stop:
$network $remote_fs $syslog
# Default-Start:
2 3 4 5
# Default-Stop:
0 1 6
# Short-Description: Start NTP daemon
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
. /lib/lsb/init-functions
NAME=ntp
DAEMON=/usr/sbin/ntpd
PIDFILE=/var/run/ntpd.pid
test -x $DAEMON || exit 5
if [ -r /etc/default/$NAME ]; then
. /etc/default/$NAME
fi
if [ -e /etc/ntp.conf.dhcp ]; then
NTPD_OPTS="$NTPD_OPTS -c /etc/ntp.conf.dhcp"
fi
62/69
RUNASUSER=ntp
UGID=$(getent passwd $RUNASUSER | cut -f 3,4 -d:) || true
case $1 in
start)
log_daemon_msg "Starting NTP server" "ntpd"
if [ -z "$UGID" ]; then
log_failure_msg "user \"$RUNASUSER\" does not exist"
exit 1
fi
start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas
$DAEMON -- -p $PIDFILE -u $UGID $NTPD_OPTS
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping NTP server" "ntpd"
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
log_end_msg $?
rm -f $PIDFILE
;;
restart|force-reload)
$0 stop && sleep 2 && $0 start
;;
try-restart)
if $0 status >/dev/null; then
$0 restart
else
exit 0
fi
;;
reload)
exit 3
;;
status)
pidofproc -p $PIDFILE $DAEMON >/dev/null
status=$?
if [ $status -eq 0 ]; then
log_success_msg "NTP server is running."
else
log_failure_msg "NTP server is not running."
fi
exit $status
;;
*)
echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
exit 2
;;
esac
UnsistemaDebianlike,primadieseguiregliscriptsSdellivellodilavoro(es:2),eseguedurante
ilbootgliscriptsScotenutinelladirectory:
/etc/rcS.d
inquest'ultimadirectorysonoinfattipresentiscriptsgenericicheandrebberoeseguitiinognifasedi
boot,aprescinderedallivellodilavoroeffettivo.
63/69
Ilbackupdelsistema
9.1
Premessa
Conilterminebackupsiintendel'insiemedelleprocedureatteallasalvaguardiadeidatidiun
sistemainformatico.Spessoalpostodiindicareilpianodibackupdiunsistema,impiegatoil
temine dipianodidisaster recovery,chespecifica tutti ipassinecessariperilripristino dei
servizi,nelqualelaparterelativaallasalvaguardiadeidatisifondamentalemanonl'unicapresa
inesame.Unpianodidisasterrecoverydeveanalizzaretuttiqueiprocessichepossanoconsentire
diriattivareilservizioancheafrontediunveroepropriodisastro,oalpeggioanchesolovalutareil
costoaccettabileafrontediundatoeventodisastroso.
Peresempio,sesivolesseanalizzarelasicurezzadeidatidiunasalamacchinecontroognitipologia
dieventi,andrannovalutatiaspettinonsoloinerentiisistemiinformaticiinquantotali,maanche
tuttigliaspettialcontorno,qualiubicazionedellasede(peresempioinzonasismicaomeno),
prevenzioneincendi,possibilitdifurti,attivandalici,ecosvia.Apianoultimatosipotrpoi
decidere quali rischi siano accettabili o meno in base ai costi necessari per la loro messa in
sicurezza,inmododaavereunquadrocompletodianalisidapresentarealmanagementdecisionale.
Letipologiediesecuzionediunbackupsonovarieedipendentidallescelteoperatealivellodi
pianodirecovery.Adesempio:
disalvaguardiadeisolidatiodeidatiedelleapplicazioni;
eseguite a caldo, cio con l'applicazione attiva, o a freddo, cio con l'applicazione
stoppata;
completeoincrementali;
Lasceltadellamodalitpiopportunaspessodipendentedallivellodiserviziorichiesto,inmerito
allapossibilitdifermodellostessooaitempiaccettabiliperunarimessainoperativitincasodi
guastoodisastro.Inoltre,lapossibilitdibackupacaldospessodipendentedall'applicazione
stessa,oinaltreparoledeveessereeseguitaconl'integrazionedicomandidell'applicazione.
Per esempio, il backup di un database a caldo necessita dell'impiego di comandi specifici
dell'applicazionedatabase,inmodocheidatisalvatisianoconsistenti.
9.2
Ilbackupdiunapartizione
Una delle possibili soluzioni per l'esecuzione di un backup quella del salvataggio dell'intera
partizione.Questasoluzionesalvadatieapplicazioni,dalmomentochenondifferenzialatipologia
deidatidasalvare;naturalmenteun'operazionedibackupfreddo,inquantolapartizionenon
deveessereimpiegataduranteilsalvataggio,edditipononincrementaleinquantononvengono
controllatibackupprecedentiperconsiderareisolidatimodificati.Selapartizionedasalvare
quellaincuirisiedonopartidelsistemanonsmontabili(peresempiola/),necessarioeseguire
Universit degli Studi di Sassari CED
64/69
l'operazionetramitel'avviodiuncddiboot,inoltre,all'aumentaredelladimensionedellapartizione
dicuifareilbackup,comenelcasoattualedidischimoltocapienti,l'impiegodiquestatecnica
risultapocovantaggioso.
Iprogrammichepermettonoilsalvataggiodiunapartizionesonovari.Inquestotestoprenderemo
inconsiderazioneisoliddepartimage;lalorodifferenzasostanzialerisiedenelfattochenel
primovengonosalvatituttiiblocchidellapartizione,senzaanalizzaresesianoomenoutilizzatidal
filesystem,mentrenelsecondosoloiblocchiimpiegatidalfilesystem.
Ilcomandodd
.
E'uncomandochecopiaunaseriediblocchidaundispositivoadunaltro,incuiidispositivi
possonoesseresiaditipodisco(omdolv)chefile.E'possibilespecificareladimensionedel
bloccodacopiaree/oilnumerodiblocchi.Tramitequestocomandopossibilecopiareunaintera
partizione su un file, e per questo motivo la partizione non deve essere utilizzata (filesystem
smontato).
Esempio di backupdella partizione 3delprimodiscosuunfile chenondovrrisiedere sulla
partizione3:
dd bs=512k if=/dev/sda3 of=/backup/part3.dd
Ladimensionedelfilesaridenticaalladimensionedellapartizione.
Ilrecoverydeidatidovravveniresecondolastessamodalit,invertendolaparteifconlaofe
specificandolastessadimensionedelbloccobs
Ilcomandopartimage
.
E'uncomandodallagraficatestualeancheessoimpiegatoperilsalvataggiodiunapartizionesuun
file.Ancheinquestocasoilfiledibackupnondevetrovarsisullapartizionedasalvare.Verranno
inoltresalvatiisoliblocchieffettivamenteutilizzatidalfilesystem,einunformatocompresso,
questo permette di avere dimensioni del file di backup molto inferiori alle dimensioni della
partizione.
Esempiodigraficadipartimage:
Ilrecoverydeidatipotravveniresecondolastessamodalit,specificandoperchesitrattadiuna
operazionediripristino.
65/69
9.3
Ilbackuptramitetar
IlcomandotaruncomandomoltoutiledeisistemiUnixlike,chepermettedicrearecopiedi
backupdifileodiinterecartelle.Tramitequestocomandopossibilecrearevaritipidibackup,
completioincrementali,compressiononcompressi,preservandoladatadimodificadeifile,oi
dirittisuifile,etantealtreopzionicherendonomoltopotentel'usodelcomando.
Inoltreilcomandotar
permettelascrittura(econseguentelettura)direttadelfilediarchiviosu
cassettarimovibile.
La limitazione pi importante del comando rimane quella della sola esecuzione di backup a
freddo,edunqueadapplicazionestoppatapertuttoiltemponecessarioperilbackup.
Iparametripiusatidelcomandosono:
-f
-x
-c
''
''
creazione dell'
''
-t
''
''
lista
''
-z
''
''
compressione o decompressione
''
-g
-p
--atime-preserve
nonmodificaladatadiaccessoaifilesucuiesegueilbackup
(moltoutileincasotaledataservaperaltriscopi)
Esempio,savataggiodellacartella/homesull'archiviocompresso/backup/home.tgz:
tar -cvzf /backup/home.tgz /home
Esempio,ripristinodell'archiviodisopra:
tar -xvzf /backup/home.tgz
l'archiviovieneesplosoapartiredalladirectorydilavorodacuisiesegueiltar.Seper
esempioilprecedentecomandofossestatoeseguitodalla/prova,afinecomandoavremo
trovatointaledirectoryla:
/prova/home/...
Notesulbackupincrementale.
Creazione:
Universit degli Studi di Sassari CED
66/69
Allaprimaesecuzioneilfiletgzconterrtuttiifilecontenutidallacartella/home;laseconda
voltaconterrsoloifilenuoviomodificati,ecosvia. Perquestoilfile
tgz
nondeveessere
sempre lo stesso, in quanto altrimenti ogni precedente backup sarebbe sovrascritto dall'ultimo
creato.Ilfilehome.listunfilebinariochevieneimpiegatoperriconoscereinuovifileoi
modificati.Ilripristinodeidatinecessitadell'estrazionedituttiifiletgzsecondol'ordinedella
loro creazione. Per eseguire un nuovo backup completo sufficiente cancellare il file di log
home.list.
Notesulproprietariodeifileripristinati.
Nella fase di estrazione vengono assegnanti ai file ripristinati gli id dell'utente e del gruppo
proprietaricoscomeestrattidalsistemadipartenza.Seilsistemadidestinazionelostessodel
sistemadipartenzal'utenteaventetaleiddovrebbeesserelostesso(senonvienecambiatoper
qualchemotivonelfrattempo).Seinveceilsistemadidestinazionediverso,moltoprobabileche
gli id non corrispondano, o che non vi sia un utente con tale id. In questo caso viene
visualizzatononunnomemaunvalorenumerico:
sistemadipartenza
ls -la /tmp/cartella/
drwxr-xr-x 2 gvmura gvmura 4096 2010-03-28 20:55 .
drwxrwxrwt 15 root
root
4096 2010-03-28 21:40 ..
-rw-r--r-- 1 gvmura gvmura
3 2010-03-28 20:55 file
sistemadidestinazione(nonaventel'iddelsistemadipartenza):
ls -la /tmp/cartella
drwxr-xr-x 2 gvmura gvmura 4096 2010-03-28 20:55 .
drwxrwxrwt 15 root
root
4096 2010-03-28 21:40 ..
-rw-r--r-- 1
1001
1001
3 2010-03-28 20:55 file
oppure(dovel'idcorrispondeadunaltroutente):
ls -la /tmp/cartella
drwxr-xr-x 2 gvmura gvmura 4096 2010-03-28 20:55 .
drwxrwxrwt 15 root
root
4096 2010-03-28 21:40 ..
-rw-r--r-- 1 rossi rossi
3 2010-03-28 20:55 file
In questi casi puessere utile salvare anche l'elenco degli id del sistema di partenza, che
possibilereperireadesempiodalfile/etc/passwd
9.4
Usodellesnapshotdilv
L'impiego dei logical volume utile anche nell'esecuzione dei processi di backup. Infatti,
accettandounpiccolotempodistopdell'applicazione,possibileeseguireunasnapshotdelvolume
dicuisivuolefareilbackupeoperarecomesecisitrovasseinunasituazionedisalvataggioa
caldo.Sequenzalogica:
Universit degli Studi di Sassari CED
67/69
arrestodell'applicazione
creazionediunasnapshotsulvolumedell'applicazione(tempomoltoridotto)
riavviodell'applicazione
mountdelvolumedisnapshot
backup(peresempiotramitetar)delladirectoryrelativaallasnapshot
arrestodell'applicazione
cancellazionedellasnapshot(tempodipendentedallaquantitdidatichel'applicazioneha
modificatodallacreazionedellasnapshot)
8) riavviodell'applicazione
1)
2)
3)
4)
5)
6)
7)
Iltempototaledistopdell'applicazionefissatoprincipalmentedallafase7).Seilbackupviene
eseguitoduranteunafasedibassolavorodell'applicazione,peresempiodurantelanottenelcasodi
processiaziendali,anchelafase7)avruntempodiesecuzioneridotto,simulandoilcasodiun
backupacaldo.
68/69
Bibliografia
Libri
EduardoCilentoLinuxPerformanceandTuningGuidelines,TakechikaKunimasa,Byron
Braswell,2008IBMRedPaper
David Deeths Using NTP to Control and Synchronize System Clocks , 2001 Sun
Microsystems
MendelCooperAdvancedBashScriptingGuide,2005MendelCooper
MichaelJangUbuntuServerAdministration,ElizabethZinkann,2009McGrawHill
SandervanVugtProUbuntuServerAdministration,SamuelCuella,2009Apress
SandervanVugtBeginningUbuntuServerAdministration,CurtisSmith,2008Apress
Sitiweb
http://www.gnu.org/home.it.html
http://torvaldsfamily.blogspot.com
http://www.redbooks.ibm.com/
http://kbase.redhat.com/faq/en
http://en.wikipedia.org/wiki/Main_Page
http://wiki.ubuntuit.org/Documentazione/Indice
http://www.vmware.com/products/server/
http://www.virtualbox.org/
http://tldp.org/HOWTO/SoftwareRAID0.4xHOWTO.html
http://sourceware.org/lvm2/
http://www.ntp.org/
http://www.openssh.org/
http://www.sysresccd.org/Main_Page
http://www.partimage.org/Main_Page
69/69