file - Canoa Club San Donà

Transcript

file - Canoa Club San Donà
1
• Prerequisiti
– Networking
• Lezioni
– Dal 23 febbraio al 9 aprile (14 lezioni)
– Dal 19 aprile al 21 maggio (10 lezioni)
– Ogni lunedì dalle 16 alle 18
– Ogni venerdì dalle 9 alle 11
2
• Laboratorio?
• Microsoft
– http://www.dsi.unive.it/servizi/ced/msdn/msdn.html
• Ricevimento
– Via email
• [email protected][email protected]
– Al lunedì dopo la lezione
3
• Prova scritta
• Non sono previsti orali
• Validità: 1 anno dalla data esame
• Voto??
• http://www.dsi.unive.it/~ammsis
4
5
6
• Fornire le basi necessarie per gestire un sistema
• Non solo!
• Amministratore di Sistema != Amministratore di
Rete
• Amministratore di Sistema != Responsabile IT
• ….anche se
• ????? Non di sicurezza ma solo dei vari aspetti
della gestione
7
1.
2.
3.
4.
5.
6.
Panoramica sui SO disponibili sul mercato
Strutture di storage
Sistemi ad Alta Disponibilità
Windows Server 2003
Linux
Configurazione e gestione di servizi
particolari
7. Sicurezza
http://www.dsi.unive.it/~ammsis
8
9
1.
2.
3.
4.
conoscere l’hardware
conoscere gli strumenti del SO
gestire degli utenti
Sicurezza! Sicurezza! Sicurezza!
– Gestire gli accessi al sistema
– sicurezza dei dati
5. Occuparsi del backup e restore dei dati
6. Sorvegliare le prestazioni del sistema
10
…
11
• Gli amministratori e il personale del supporto
tecnico generalmente hanno una relazione di
odio/amore con gli utenti. Senza le continue
chiamate vivrebbero nella noia.
Gli utenti riescono a fare le cose più strane ai
loro PC…e poi sono colpiti da sorprendente
amnesia quando segnalano il problema
Bisogna proteggere gli utenti da se stessi!
12
Le responsabilità degli utenti riguardano:
• l'
uso e l’abuso delle risorse
• la condivisione e la segretezza dei dati personali, in particolare
delle informazioni di autenticazione
• l’integrità e la disponibilità dei dati personali, in particolare il
regolare svolgimento dei backup
• la rivelazione non autorizzata di informazioni riservate
• lo scambio di posta elettronica con forum o gruppi di discussione
controversi
• le regole di buona condotta e l’atteggiamento consapevole
nell’uso della posta elettronica
• la navigazione in Internet di siti controversi
I diritti degli utenti dei sistemi informatici essenzialmente
riguardano:
• la riservatezza dei dati personali
• la riservatezza della posta elettronica
13
1.
2.
3.
4.
CONOSCERE L’HARDWARE
conoscere gli strumenti del SO
gestire degli utenti
Sicurezza! Sicurezza! Sicurezza!
– Gestire gli accessi al sistema
– sicurezza dei dati
5. Occuparsi del backup e restore dei dati
6. Sorvegliare le prestazioni del sistema
14
•
•
•
•
•
•
•
•
•
rehosting delle applicazioni mainframe
unificazione dei server
applicazioni HPC
applicazioni data center / mission-critical
OLTP e database, data warehousing, data mining
consolidamento dei server
applicazioni di supporto decisionale
Web server, portal server
web hosting, e-mail (SMTP/POP3/IMAP), directory
service, DNS, DHCP
• streaming media server, server FTP
• hosting di contenuti dinamici (Java, ASP, XML)
• Servizi business intelligence (BI) e ERP (Enterprise
Resource Planning)
15
• Sun
– Netra
– Fire
• IBM
– zSeries
– pSeries
– iSeries
• HP AlphaServer
• Intel
IBM xSeries, Compaq, HP, Dell
16
Gestione del carico
Alta Disponibilità
Disaster Recovery
17
Le cause principali di indisponibilità sono:
Hardware: mancanza di corrente, guasto di componenti
Software: bug, upgrade/patch
Sovraccarico
Errore umano
Calamità naturale
Attacco hacker/terroristico
L’alta disponibilità viene realizzata attraverso:
A) Minori interruzioni possibili
B) Adattamento al carico di lavoro (scalabilità)
18
Percentuale di tempo in cui un sistema è in grado di
eseguire un lavoro produttivo rispetto al tempo
globale
Ad esempio se un sistema è disponibile 100 ore per settimana, la sua disponibilità è
100/168 = 59,52%. Il valore al quale tutti mirano è chiaramente il 100%
La percentuale di tempo in cui un sistema è disponibile è data dalla
seguente formula:
1-pn
Dove n è il numero di server e p è la probabilità di failure di ogni server.
Per esempio se 5% è la probabilità di fail di ogni server e ci sono 2 server la
disponibilità risulta:
1-0,052= 1-0,0025= 99,75%
19
Livello
di disponibilità
95,0%
99,0%
99,5%
99,9%
99,99%
99,999%
99,9999%
Tempo fermo macchina
annuale
18 giorni e 6 ore ca
3 giorni e 16 ore ca
43,8 ore ca
8,8 ore
53 minuti
5 minuti
1 minuto
20
La replicazione è la chiave per fornire servizi fault
tolerant e ad alta disponibilità.
In conclusione per fornire la continuità di servizio si
deve creare un equilibrio fra i vari componenti:
Hardware: server, network, storage;
Software: applicativi, database, sistemi
operativi.
21
• Soluzione inizialmente semplice.
• Non molto scalabile.
• Può utilizzare in ordine di scalabilità
– ASMP
– SMP
– MPP
– NUMA
• Hardware cruciale (SPOF)!!!
22
Insieme di computer (nodi) interconnessi tra loro in una rete di
comunicazione ad alta velocità
Un nodo:
E’ a processore singolo o SMP.
Dispone di propria memoria principale.
Dispone di proprie periferiche.
Esegue una copia del sistema operativo.
Le prestazioni di un cluster dipendono da:
Velocità della rete.
Gestione della concorrenza per l’accesso sui dischi condivisi.
Efficienza degli algoritmi di load balancing.
Corrispondenza tra le applicazioni ed i singoli nodi.
23
Il load balancing è la divisione del carico di lavoro fra due o più computer
A livello hardware: un server riceve le richieste dall'
esterno e le distribuisce
verso i nodi (es. DNS).
A livello software: il software presente sui nodi tramite degli algoritmi
distribuisce il carico di lavoro (noi analizzeremo questo caso).
Una combinazione hardware e software.
Perché load balancing? Eventi possibili:
Utilizzo limite della CPU.
Insufficiente spazio su disco.
Memoria RAM insufficiente per l'
applicazione.
Saturazione dell'
I/O (in un database).
Elevato traffico di rete su un segmento specifico.
Degrado delle performance generali di sistema.
Guasto di una o più componenti che compongono il cluster.
Al verificarsi di un evento il bilanciamento automatico del carico viene realizzato
attraverso la riconfigurazione via software delle strategie di failover di tutti i gruppi
nell'
ambito del cluster.
24
L'
amministratore di sistema può modificare le strategie di failover dei gruppi.
Ciascun server controlla se riceve i segnali di controllo dall'
altro sistema tramite
rete consentendo la massima affidabilità nella rilevazione dei guasti.
Se un segnale di controllo risulta mancante, il software rileva l'
anomalia e inizia
il failover delle applicazioni sul sistema funzionante. Il sistema di backup deve
prendersi carico dei dischi del sistema guasto e deve assumerne l'
identità sulla
rete.
Limiti:
In caso di failover, N sistemi devono reggere il carico di N + 1 sistemi
complessivi
diminuzione prestazioni.
Uso di sistemi in standby che però sono inattivi
spreco.
Vantaggi:
Trasparenti all’utente (unica macchina all’utente).
Applicabili in rete estese come LAN-WAN.
Load balancing
Prestazioni elevate (accesso a file o DBMS)
Utilizzo di IP virtuale (configurare dinamicamente l'
interfaccia di rete del
server con un numero di indirizzi pari a tutti i servizi che vengono eseguiti
sulla macchina stessa).
Scalabilità maggiore rispetto soluzioni singolo server.
25
!
• SCSI
• RAID
• ATA, ATAPI, IDE, EIDE, Firewire, USB
ecc. ecc.
26
• RAM, HDD, Schede di rete, schede video
• Processori, RAM, HDD, Chipset
• Ad ogni architettura hardware il proprio SO
27
"
• Anche in informatica esistono delle unità di
misura che quantificano e misurano eventi e
particolari operazioni
• bit/Byte
capacità di memorizzazioni
• Baud / bps
velocità di trasmissione
• Hertz
velocità nell’elaborazione
• MIPS
numero di istruzioni eseguite in un
secondo
• DPI
risoluzione di stampa
28
• Deriva da Heinrich Rudolf Hertz, fisico tedesco, che alla fine
del 1800 produsse delle onde elettromagnetiche con un
oscilloscopio.
• 1 Hz = un oscillazione al secondo
• Nel computer esiste un quarzo che sollecitato elettricamente
compie milioni di oscillazioni al secondo (MHz)
• Il MHz risulta essere la misura più diffusa anche se è relativa
• Quindi possiamo utilizzare il MHz per misurare la velocità di
processori della stessa famiglia.
• La velocità di un PC dipende anche dal Bus e dalla velocità di
trasferimento dalla memoria al processore.
29
#
• L'hard disk è costituito da un insieme di piatti sottili
ricoperti di materale magnetico. Questi dischi ruotano ad
alta velocità (costante) all'
interno di un contenitore
metallico.
• I dati binari sono scritti e letti su questi piatti magnetici
mediante testine (Head) progettate per scorrere su di un
cuscinetto microscopico di aria, senza toccare la superficie
dei piatti stessi. Sono poi proprio queste testine che
possono registrare dei bit dalla superficie magnetica che
corre sotto di esse.
• I bracci che contengono le testine guidano il loro
movimento interno/esterno più o meno uguale ad un
vecchio piatto per dischi di vinile. Il movimento sincrono
viene garantito da un dispositivo elettro-meccanico
chiamato attuatore.
30
#
• Le testine sono senza dubbio i componenti
più costosi del nostro hard disk, infatti esse
sono incredibilmente piccole e in dispositivi
moderni, galleggiano sopra la superficie
magnetica a distanze comprese tra i 10 e i
30 micron (milionesimi di metro).
• Quando il ns. PC viene spento le testine
vengono parcheggiate in una zona
specifica del disco in modo tale che non
possano subire danni durante un eventuale
trasporto o urto accidentale.
31
$
• I bit sono immagazzinati in microscopici magneti
(chiamati domini) sulla superficie del disco rigido. I bit
vengono scritti nel seguente modo: prima di registrare i
dati, le testine orientano i domini in una piccola regione
cosicché i poli magnetici puntino tutti nella stessa
direzione; quindi, un’inversione di polarità viene
interpretata come 1, mentre una polarità inalterata
come 0 binario.
• Ad es., leggendo i micro-magneti da sinistra verso
destra potremmo vedere il numero binario
100010011011 registrato su di una superficie di un hard
disk come riportato in figura:
32
• La superficie magnetica del disco viene suddivisa
in traccie (Tracks) concentriche le quali a loro volta
sono divise in porzioni fisse di dati chiamate settori
(Sectors) contenente tipicamente 512 byte.
Di solito il numero dei settori
è lo stesso per tutte le
tracce, ma in alcuni hard
disk ci sono più tracce nei
settori più esterni (tutti i
settori sono delle stesse
dimensioni fisiche, quindi
nelle tracce più esterne ce
ne entrano di più).
33
34
• Ciascuna testina descrive una traccia
distinta sul piatto abbinato. Poiché
l’insieme di tutte le tracce esistenti ad una
data posizione dell’attuatore delle testine
forma idealmente un cilindro solido,
questa pila verticale di tracce è chiamata
cilindro.
35
• Per poter leggere o scrivere qualsiasi cosa su un
disco occorre specificare una posizione sul disco
stesso per esempio indicando il numero del settore
o del blocco.
• Se il disco è SCSI il numero del settore viene
passato al controller SCSI ed è capito dal disco.
• Per un disco con C cilindri, H testine e S
settori/traccia si hanno due notazioni:
• CHS (c,h,s)
• LBA c*H*S + h*S + (s-1)
– (la sottrazione di una unità è legata al fatto che
nella notazione come terna i settori sono contati
a partire da 1 e non da 0).
36
%
• http://xoomer.virgilio.it/nitorqua/pcbootstrap/daddr.html
37
&
• SCSI é un acronimo derivato dalle parole inglesi
Small Computer Systems Interface, dove con
“small” si intendevano oggetti diversi dai
mainframe.
• identifica una speciale interfaccia ad alte
prestazioni per le comunicazioni fra il computer e
le sue periferiche, ad esempio dischi rigidi, unità
CD-ROM, oppure i masterizzatori.
• Nato per permettere un accesso veloce alle
periferiche sgravando la CPU
38
• Presentato nel lontano 1979 dalla Shugart
• Viene presentato all'
ANSI nel 1981 come SASI
(Shugart Associates System Interface).
• Diventa uno standard ufficiale nel 1986, quando il
comitato ANSI X3T9.2 definisce le specifiche di
SCSI-1 nel documento X3.131-1986.
• Viene formalizzato con un set di comandi (CCS Common Command Set)
• Grazie alle sue caratteristiche avanzate, SCSI
soppianta rapidamente le vecchie interfacce
39
&
• SCSI è stato sottoposto a numerose revisioni per
mantenere aggiornato il sistema alla crescente
richiesta di prestazione ed affidabilità dell'
utenza e
questo a dato origine a diverse "famiglie"
successive, aumentando la velocità e la sicurezza
della comunicazione.
• La filosofia di SCSI, comunque, è sempre stata
quella della compatibilità all'
indietro.
40
'
&
• SCSI
–
–
–
–
Connessione di tipo parallelo,
a bus,
gestita da un set di comandi,
gestiti da un controller;
• Le periferiche sono collegate a catena su questo
cavo.
– I dati sono trasferiti in modo asincrono, alla velocità
massima possibile per la lunghezza del cavo e le
caratteristiche dei dispositivi collegati.
41
&
• parallelo: i bit che costituiscono il dato (o il
comando) sono inviati ognuno su un proprio
conduttore contemporaneamente, per cui,
ad esempio, per trasmettere 8 bit
occorreranno 8 conduttori
• i segnali sono trasferiti tra le varie unità
attraverso un cavo multipolare, dotato di
terminazioni che ne stabilizzano il
funzionamento alle alte frequenze di lavoro.
42
&
• bus: sul cavo possono essere collegati più
dispositivi, ognuno dei quali è individuato da
un proprio numero identificativo (ID). Lo
standard prevede 8 dispositivi per connessioni
a 8 bit e 16 dispositivi per connessioni a 16 bit.
• le connessioni sul bus sono effettuate con
connettori standard, da 50 o 68 poli, di cui
esistono diverse varianti meccaniche
43
&
• La struttura prevede la presenza di un controller.
– A rigor di termini, anche il controller è, per il bus SCSI,
un dispositivo, ma si tratta di un dispositivo particolare,
che governa la comunicazione tra gli altri vari dispositivi
e tra questi e l'
unità centrale del sistema che ospita la
catena .
– Il controller è una vera e propria CPU, spesso in
tecnologia RISC, dotata di BIOS e RAM propri, che
colloquia con il sistema in DMA.
• il bus è gestito, oltre che da segnali hardware, da
un set di comandi.
44
&
• I comandi possono essere accodati
(queuing): le periferiche risponderanno
appena possibile, mentre il controller può
procedere ad inviare altre richieste ad altre
periferiche . Inoltre le periferiche possono
colloquiare fra di loro sul bus.
• Questo sistema a comandi richiede una
certa "intelligenza" da parte delle interfacce
delle periferiche, ma sgrava quasi
totalmente la CPU del sistema.
45
'
• le periferiche sono collegate sul cavo in
cascata (daisy chain)
– per questo si parla anche di "catena SCSI".
• Possono essere inserite periferiche in
numero dipendente dalle caratteristiche
dell'
interfaccia (massimo 16, compreso il
controller, nelle soluzioni Wide).
• E’ possibile installare piú di un controller,
creando così più catene SCSI.
46
&
&
• Un elemento molto importante dei dispositivi SCSI è
l'
indirizzo, detto ID.
• Poiché SCSI è un bus, deve esistere un sistema che
permette di assegnare ad ogni dispositivo collegato
una posizione ben specifica e riconoscibile dal
sistema di controllo.
• Ad ogni bus SCSI, a seconda della tipologia, si
possono connettere 8 o 16 dispositivi;
• l'
ID permette al controller di organizzare e
riconoscere i dispositivi collegati, che posso essere
installati in qualsiasi posizione e ordine sul cavo, ma
devono avere ognuno un indirizzo diverso.
47
&$
• Solitamente il dispositivo con ID piú alto ha la
priorità maggiore, quindi il controller del bus ,
anch'
esso un dispositivo, é posizionato di default
all'
ID 7
• I primi 8 dispositivi (tipici di una catena a 8 bit
(narrow)) hanno priorità maggiore dei successivi 8
(tipici della catena a 16 bit(Wide))
• salvo diverse configurazioni , la priorità é
nell'
ordine {7,6,5,4,3,2,1,0, 15,14,13,12,11,10,9, 8}
• Nota: la numerazione parte da 0 e va a 7 per i
primi 8 dispositivi e da 8 a 15 per i successivi 8
48
&$
Poiché l'
assegnazione dell'
ID può essere
fonte di problemi, alcuni costruttori hanno
introdotto una struttura detta SCAM (SCSI
Configured AutoMatically) in cui il controller
assegna in modo dinamico l'
ID ai dispositivi
collegati; ovviamente è necessario che
questi dispositivi supportino pienamente il
metodo.
49
"( )
"
(
*
• Fa riferimento alla possibilità dei dispositivi
SCSI di essere composti da parti multiple;
• Questo consente di espandere ancora di più
il numero dei dispositivi collegabili alla
catena SCSI.
• Normalmente, però, i dispositivi correnti sono
singoli, per cui dispongono di un solo ID e
hanno LUN=0.
• La gestione di LUN multipli richiede un
controller adeguato.
50
&+,
• Lo standard SCSI-1 era decisamente limitato rispetto a
quelli attuali e definiva solo le caratteristiche basilari e i
transfer mode.
• Le periferiche utilizzavano un ristretto bus ad 8 bit con
una velocità massima di trasferimento di 5MB/s.
• Erano supportate unicamente trasmissioni “singleended” (cioè in cui un segnale positivo era l’1 logico e
un’assenza di segnale indicava lo 0 logico) con
terminazione passiva.
• C’erano anche delle difficoltà associate
all’accettazione dello standard stesso in quanto molti
produttori implementavano proprie versioni e questo
anche a causa del fatto che le periferiche non sempre
supportavano gli stessi comandi e non c’erano
garanzie sulla compatibilità delle une con le altre.
51
&+,
• Lo SCSI-1 è ora obsoleto e lo standard è stato
archiviato dall’ANSI. Le periferiche esistenti,
generalmente, possono essere utilizzate con altre
e con controller che usano transfer rate più elevati
o il più avanzato protocollo SCSI-2 ma,
ovviamente, lavorano alla velocità originale.
• Note: Le periferiche SCSI-1 sono single-ended e
possono causare un degrado nelle prestazioni se
inserite in un bus multimode LVD (Low Voltage
Differential). Se si vuole continuare ad utilizzare le
periferiche LVD alla loro massima velocità si deve
evitare di utilizzarle con periferiche single-ended.
52
&+• Lo SCSI-2 è un ampliamento dello SCSI originale. Il set di
comandi è stato ampliato rimuovendo contestualmente
alcune opzioni. In più lo standard definisce le importanti
caratteristiche aggiuntive riepilogate come segue:
• Fast SCSI: E’ il protocollo ad alta velocità che raddoppia la
velocità del bus a 10MHz il che significa avere un transfer
rate di 10MB al secondo (con un normale cablaggio a 8 bit)
o anche maggiore se utilizzato con il Wide SCSI.
• Wide SCSI: L’ampiezza del bus SCSI originario è stato
portata a 16 bit (o spesso a 32) permettendo un maggiore
trasferimento dati con la stessa velocità di bus.
• Più periferiche per bus: Sui bus Wide SCSI sono
supportate 16 periferiche (sullo SCSI solo 8).
• Ampliamento dei cavi e dei connettori: lo SCSI utilizza
diverse tipologie di cavi e connettori. Lo SCSI-2 definisce
nuovi connessioni ad alta densità estendendo il classico
connettori a 50 pin dello SCSI-1.
53
&+• Trasmissione differenziale del segnale (Differential
Signaling): Per permettere lunghezze maggiori dei cavi
viene introdotto il sistema di trasmissione dei segnali
differenziale.
• Coda dei comandi: Uno dei punti di forza dello SCSI-2 è
la possibilità di consentire richieste multiple e
contemporanee tra le periferiche sul bus. Set di comandi
aggiuntivi: con lo SCSI-2 sono stati introdotti nuovi set di
comandi per il supporto di più periferiche quali CD-Rom,
Scanner, e supporti removibili. Il vecchio set, infatti, era
dedicato agli hard disk.
• Nota: Lo SCSI-2 non è uguale all’Ultra2 SCSI che è molto
più recente ed ha perfomance maggiori.
54
&+.
• Il lavoro sul nuovo standard SCSI,
chiamato SCSI-3, ebbe inizio nel 1993.
• Quando iniziò il lavoro, lo standard SCSI-2
era “vecchio” di 8 anni e non era stato
ancora formalmente rilasciato.
• Il termine SCSI-3 definisce diversi
standard, ognuno riguardante un differente
aspetto dello SCSI.
55
&+.
• L’architettura dello SCSI-3 e le novità introdotte possono
essere raggruppate come segue:
• Comandi: Questi sono gli standard che definiscono
specifici set di comandi per ogni periferica SCSI o per
particolari categorie di periferiche.
• Protocolli: Questi standard formalizzano le regole
secondo le quali diverse periferiche comunicano e
condividono le informazioni consentendone l’utilizzo
contemporaneo. Questi standard sono chiamati, a volte,
livelli di trasporto (transport layers) dell’interfaccia.
• Interconnessioni: Sono gli standard che definiscono i
dettagli dell’interfaccia quali i metodi di trasporto dei
segnali a livello elettrico e i modi di trasferimento stessi.
Sono chiamati a volte standard a livello fisico.
56
%
http://www.dsi.unive.it/~ammsis/hwsw/scsi/tab1.gif
http://www.dsi.unive.it/ ~ ammsis/hwsw/scsi/tab2.gif
57
&
&$
• costo
• la possibilità di installare più dei 4 dispositivi
che costituiscono il limite dell'
interfaccia IDE
• la possibilità di gestire dispositivi esterni al
PC, cosa non possibile per la limitata
lunghezza del cavo IDE
• il minor carico sulla CPU: infatti, il bus SCSI
può lavorare in modo del tutto asincrono dalla
CPU.
58
&
&$
• Le possibilità date dai comandi SCSI e la
gestione contemporanea di molteplici
richieste forniscono prestazioni elevate nel
movimento di grosse masse di dati su
diverse unità, come nel caso di RAID, senza
che di questo si faccia carico la CPU del
sistema, in quanto il controller della catena
SCSI è una vera e propria CPU.
59
%
& 0
$
/
# )% &$*
• La tecnologia Raid è nata per ovviare a 3
problemi specifici (tutti in funzione del
costo):
– Capacità
– Sicurezza
– Velocità
60
% &$
• I ragazzi dell'
Università di Berkeley (1986)
• La tecnologia RAID permette di utilizzare più
supporti di memorizzazione integrandoli tra
loro.
• Dimentichiamoci quindi il concetto di
controller E-IDE che è sulle nostre schede
madri: il RAID permette l'
utilizzo di 4
periferiche che sono però indipendenti tra
loro e senza nessun legame.
61
'
1
• Un drive array è una collezione di hard disk raggruppati
assieme.
• Quando parliamo di RAID c’è spesso una distinzione tra
i drive fisici, gli array ed i drive logici.
• Gli array fisici possono essere divisi o raggruppati
insieme per formare uno o più array logici. Questi
possono essere divisi in drive logici visibili dal sistema
operativo.
• I drive logici sono trattati con singoli hard disk e possono
essere partizionati e formattati insieme.
• Questi concetti risultano un po’ ostici ma la realizzazione
di un sistema RAID è relativamente semplice in
implementazioni piccole.
62
• Mirroring
• Parità
– La parità nel RAID rappresenta un concetto similare
alla parità nella memoria (RAM), quindi operazioni di
XOR.
• Striping
– Lo striping aumenta le performance dell’array
distribuendo il dati su tutti i drive.
– Il principio basilare dello striping è il parallelismo.
– byte level e block level.
63
% &$ 2
64
% &$ 2
65
% &$ 2
!
"! #
$
%
&
66
% &$ 21
• Spanning
• 2 o più dischi visti come un unico volume
67
% &$ ,
'
(
(
(
'
)
)
*
68
% &$ ,
!
"! +
,
69
% &$ ,
(
((
(
70
% &$ .
.
!
/
/
)
))
71
% &$ .
0
)
1
))
!
2
!
"! 2
72
% &$ .
(
(1
73
% &$ 3
• Ottimizzazione del RAID 3.
• In questo sistema non viene utilizzato un disco
dedicato alle stringhe di parità, però queste
vengono ordinatamente distribuite in tutti i
dischi presenti.
• In questo modo si avrà la capacità pari a:
((n-1)*C) GByte dove n è il numero di dischi
presenti e C è la loro singola capacità.
74
% &$ 3
2
5
!" ! 7
8
34%
534%
634%
34%
"! 2
2
!
"! 7
)
75
% &$ 3
(
(
(.
,
8
(1
"! #
"! +
76
% &$ ,2
"!
"! + "! #
*
"! +
'
9
"! #
3
9
77
% &$ ,2
,
)
! " ! +#
"! 7
;
:
,
9
78
% &$ ,2
5
!
" ! +#
79
% &$ ,2
(
(
("
)
)
,
(
(
80
81
% &$,+2
2+,1
• La differenza consiste nel livello di fault
tolerance….quindi parliamo di una cosa teorica.
• RAID 0+1 (stripe of mirrors)
– I dati sono distribuiti su insiemi di dischi in
duplice copia
• RAID 1+0 (mirror of stripes)
– I dati sono distribuiti su un insieme di dischi che
viene completamente duplicato su uno o più
insiemi di dischi.
82
% &$ .2
• Un sistema di questo tipo necessita di un minimo
di sei dischi, due gruppi di tre dischi configurati in
RAID 3 e l’insieme di questi raggruppati in RAID 0.
• Grazie all’accoppiata dei due sistemi avremo un
sistema sicuro e prestante.
• Questo sistema è in grado di rigenerare i dati
anche in presenza di rotture in più dischi
mantenendo buone prestazioni.
• Il RAID 30 rispetto al RAID 10 risulta meno
costoso (ma rimane meno prestante), in quanto a
parità di capacità necessita di un disco in meno.
83
% &$ .2
• Come nel RAID 3 ha il suo collo di bottiglia
nell’usare un disco dedicato per le
informazioni di parità ogni sottogruppo del
sistema.
• Questo sistema necessita di un minimo di 6
dischi.
• l sistema RAID 30 viene utilizzato in grossi
sistemi dove si necessita di velocità e una
buona sicurezza dati con costi meno alti
rispetto al RAID 10.
84
% &$ .2
(
(
("
)
)
,
85
% &$ 32
*
"! 7
9
"! #
)
.
6
!
" ! 7#
)
" ! +# !
86
% &$ 32
(
(
("
)
)
(<
,
)
(*
" ! +#
87
% &$
• JBOD - Mylex RAID 7
JBOD é acronimo di Just a Bunch of Disks (solo
un grappolo di dischi).
Mylex lo qualifica come RAID 7.
E’ la condizione in cui i dischi sono collegati al
controller RAID senza sfruttare la gestione di
alcun livello specifico; in sostanza il controller è
usato come fosse un controller SCSI ordinario.
Non viene implementata alcuna sicurezza, ma si
ottiene un miglioramento delle prestazioni in
quanto i controller RAID hanno solitamente potenti
processori e una certa quantità di cache a bordo.
88
% &$
• RAID 6
– Raddoppiando il sistema di paritá di RAID
5 si ottiene un incremento della sicurezza.
Questo sistema é scarsamente impiegato.
89
% &$
• RAID Level 2
– RAID-2 divide (stripes) i dati in gruppi di dischi (2 o piú)
usando un codice Hamming per ogni strip di dati. Questo
codice può rivelare e correggere errori e permette il
recupero dei dati senza una totale duplicazione.
– RAID 2 combina i benefici di RAID-1 e 0, con prestazioni e
sicurezza: può essere realizzato in funzione di entrambe le
richieste. Un tipico array RAID 2 è composto da un gruppo
di dischi di cui alcuni sono dedicati alla memorizzazione
delle informazioni relative all'
Error Checking and
Correction (ECC). Siccome la maggior parte dei dischi
implementa già controlli ECC interni piú o meno sofisticati,
RAID 2 non offre significativi vantaggi rispetto
all'
architettura RAID 3 o 5, che vengono preferite.
– Attualmente non viene impiegato, né consigliato.
90
%
•
•
•
•
•
http://www.dsi.unive.it/~ammsis/hwsw/raid.html
http://www.storagereview.com/guide2000/ref/hdd/perf/raid/index.html
http://www.scsilibrary.com
http://it.promise.com/product/product_ita.asp
http://www.ofb.net/~jheiss/raid10/
91
$
92
• Pit e Land
• 1-Il laser della testina (B) proietta un
raggio di luce infrarossa che viene
intercettato da una lente la quale
provvede a focalizzarlo(C).
• 2-Il raggio penetra sulla superficie
riflettente del disco (A): se incontra
una zona non modificata (land),
riflette la luce verso il rilevatore della
testina che la invia verso un
fotodidodo.
• 3-Il segnale luminoso che colpisce un
pit non viene riflesso (“off”).
93
4
•
•
•
•
•
•
/
&
5662
Formato 8.3
Maiuscole dalla ‘A’ alla ‘Z’
Numeri da ‘0’ a ‘9’
Carattere di underscore ‘_’
Non più di 8 livelli di profondità delle cartelle
Altri elementi:
– Primary Volume Descriptor (PVD)
– Path table (PT)
– Root Directory File (FD)
– Directory File (DF)
94
$7$
95
&
•
•
•
•
Singolo lato, Singolo Strato (DVD-5) = 4,7 GB
Singolo lato, Doppio Strato (DVD-9) = 8,5 GB
Doppio lato, Singolo Strato (DVD-10) = doppio del DVD-5
Doppio lato, Doppio Strato (DVD-17) = 17 GB
96
4
/
"$4
• Universal Disk Format
ISO 13346
• Il file system utilizzato
per i DVD e’ l’UDF
Bridge Format, una
combinazione di UDF
(Universal Disc
Format) e ISO 9660
per supportare una
compatibilità con i cd
rom.
97
4
'
• Fibre Channel è una tecnologia di interconnessione
ad un gigabit (i primi prodotti a 2 Gbps sono già
presenti sul mercato) che permette una
comunicazione concorrente tra workstation e
sistemi di storage utilizzando i comuni protocolli
quali ad esempio SCSI e IP
• Obiettivi
–
–
–
–
Banda elevata
Topologia Flessibile
Distanza
Supporto per
• diverse velocità di trasmissione
• Diversi tipi di media, vari connettori
98
%
• La comunicazione dati avviene normalmente per mezzo di
un canale o della rete.
• Fibre Channel prova a combinare i benefici delle due
tecnologie
• CANALE (hardware-intensive)
I canali sono comunemente utilizzati per connettere
dispositivi periferici come dischi, stampanti, workstation,
…ecc. I protocolli più utilizzati sono SCSI (Small Computer
System Interface) e HIPPI (High Performance Parallel
Interface)
• RETE (software-intensive)
Le reti non hanno una struttura ben definita e sono capaci di
supportare un ampio numero di nodi connessi. Molte
decisioni (routing, gestione del flusso e della congestione)
vengono prese via software che fa si che le reti siano meno
“performanti” del canale (Ethernet – Token Ring …)
99
'
•
•
•
•
Fibre Channel è full-duplex
Elevate velocità di trasmissione
Basso overhead
Hot-pluggable
100
4
'
• Un’installazione Fibre Channel ha un minimo di
un collegamento tra due nodi. I dati fluiscono tra
entità hardware chiamate N_Ports
• Fibre Channel permette un intelligente schema di
interconnessione definito Fabric. Il Fabric è molto
spesso uno switch (od una serie di switch) che ha
la principale funzione di routing.
• Le porte di un fabric sono definite F_Ports. Tutti i
nodi Fibre Channel devono gestire una semplice
connessione point-to-point tra se stessi (N_Port)
e il Fabric (F_Port)
101
• Vi ricordo che switch = Fabric
• Il collegamento è composto da due fibre
unidirezionali che trasmettono in opposte
direzioni.
• Fibre Channel definisce tre topologie:
– Point-to-point
– Arbitrated-loop
– Fabric
102
+
+
• 2 dispositivi connessi direttamente
• No condivisione del mezzo
103
• Connessione sino a 127
dispositivi
• Condivisione del mezzo
• Per trasmettere si deve
ottenere il controllo del
loop (segnale ARBx)
• Se due dispositivi
richiedono il controllo allo
stesso istante?
• Algoritmo di equità
104
4
• Collegamenti:
connessione
bidirezionale
• Alte prestazioni
• Efficiente
condivisione della
banda
105
&
106
&
• FC-0
Basi del collegamento fisico (fibra, connettori, parametri
ottici/elettrici)
• FC-1
Codifica/decodifica dei dati
Caratteri speciali
Controllo degli errori
• FC-2
Offre il meccanismo di trasporto
Funzioni di framing
Controllo flusso, congestione
Gestione errori
107
&
• FC-3
Comuni servizi
– Striping
– Hunt group
– Multicast
• FC-4
Interfaccia verso le applicazioni
Protocolli : SCSI, IPI, HIPPI, ATM, FC-LE, ….
108
• Node Port (N_Port) qualsiasi porta di un nodo che è
sorgente/destinazione di information unit (IU)
• Loop Port (L_Port) La porta base in un fibre channel
arbitrated loop ( FC_AL)
• Node Loop Port (NL_Port) Una N_Port connessa ad un
FC_AL
• Fabric Port (F_Port) Una porta di uno switched fabric (FC
switch)
• Fabric Loop Port (FL_Port) Una F_Port collegata ad un
FC_AL
• Exspansion Port (E_Port) Una F_Port collegata ad
un’altra F_Port
109
Se un dispositivo riceve più frame di quanti effettivamente
riesca ad elaborarli, è costretto a perderli
• In FC: Un dispositivo può trasmettere frame ad un altro
solo quando l’altro dispositivo è pronto ad accettarli.
• Prima di poter inviare dati agli altri dispositivi, ognuno
deve autenticarsi. Una delle cose che vengono effettuate
in fase di login è quella di stabilire il credito. Il credito si
riferisce al numero di frame che un dispositivo è in grado
di ricevere alla volta.
110
• FC utilizza due tipi di controllo
• Buffer-to-buffer :
le porte del collegamento si scambiano valori relativi a quanti frame
alla volta sono in grado di ricevere dall’altra porta. Questo valore
diventa il BB_Credit dell’altra porta e rimane costante fino a quando le
porte sono connesse. Ogni porta tiene inoltre traccia del
BB_Credit_CNT che è inizializzato a 0. Per ogni frame trasmesso
BB_Credit_CNT viene incrementato di 1. Decrementato se riceve un
RDY. Se BB_Credit_CNT raggiunge BB_Credit (buffer ricevente
pieno) significa che la porta non può trasmettere fino a quando non
riceve un R_RDY.
(ordered set)
• End-to-End
Quando due N_Ports effettuano il login dichiarano quanti buffer di
ricezione sono disponibili per l’altra porta. Questo valore diventa
EE_Credit. EE_Credit_CNT è inizializzato a 0 dopo il login e
incrementato di 1 per ciascun frame trasmesso all’altra porta. Esso
viene decrementato in seguito alla ricezione di un ACK da quella porta
111
• Fibre Channel definisce diverse strategie di comunicazione
chiamate “Classi di servizio”.
• Classe 1:
– viene stabilita una connessione dedicata tra due N_Ports.
Una volta stabilita, le due porte devono comunicare usando
la completa banda della connessione; I frame sono
consegnati alla porta di destinazione nello stesso ordine in
cui sono trasmessi
• Classe 2
– La classe 2 è un servizio senza connessione che permette la
condivisione della banda. Nel caso di congestione viene
inviato alla sorgente un Busy Frame che indica al mittente di
riprovare la trasmissione
• Classe 3
– La classe 3 è paragonabile alla classe 2 eccetto per il fatto
che la ricezione di un frame non è confermata (no ack)
112
&
• Fibre Channel utilizza tre byte come
identificativo d’indirizzo, assegnato
dinamicamente durante il login
• Gli indirizzi nell’intervallo 0xFFFFF0 –
0xFFFFFE sono riservati a dispositivi come
Fabric, Multicast Server, …ecc
• Prima del Fabric Login, S_ID dell’N_Port
non e’ definito: 0x000000
• 0xFFFFFF è riservato per il broadcast
113
• Distinguiamo due procedure di login:
• Fabric Login
– Ciascun nodo (N_Port) invia un frame Fabric
Login (FLOGI) all’indirizzo conosciuto del Fabric
0xFFFFFE. La risposta sarà un frame Accept
(ACC) dal Fabric alle N_ports.
• N_Port login
– N_Port può inviare un frame PLOGI alla porta di
destinazione. La risposta normale è un frame
ACC.
114
4
115
8
0 '
• SEQUENCE
– Una sequenza Fibre Channel è una serie di uno o più frame
trasmessi in una sola direzione da una porta all’altra. Tutti i
frame devono essere parte di una sequenza. Frame senza la
stessa sequenza hanno lo stesso campo SEQ_ID
nell’header. Il campo SEQ_CNT identifica frame singoli
senza un determinata sequenza. Per ogni frame trasmesso in
una sequenza, SEQ_CNT è incrementato di 1
• EXCHANGE
– Un exchange Fibre Channel è una serie di uno o più
sequenze non concorrenti tra due porte. Tutte le sequenze
devono essere parte di un exchange. Il generatore di un
exchange assegna il campo OX_ID. Il ricevente assegna il
campo RX_ID
116
(
)(
!
#
'
*
• In una rete aziendale la flessibilità è molto importante:
poter espandere la capacità di storage al crescere della
rete senza però intervenire sui dispositivi già installati
può essere un problema.
• Anni fa: aggiunta di nuovi server => una spesa elevata
in hardware e questo risultava essere particolarmente
penalizzante per le organizzazioni più piccole
• Ora: tecnologia Nas: appliance plug-and-play che
aggiungono capacità condivisa alla rete
117
é
(
1
• E’ un computer a tutti gli effetti:
–
–
–
–
una CPU
una scheda madre
Memoria
hard disk (naturalmente di grande capacità e più di
uno, altrimenti verrebbe meno la sua funzione di
storage)
– un sistema operativo (Linux/Windows) il quale può
risiedere su Ram o Disco rigido a seconda delle
implementazioni.
118
(
• IBM TotalStorage NAS 100
Prezzo
5.000
ca
processore
Intel PIII 1,26 Ghz
Ram (MB)
512
Dischi rigidi
(numero x
capacità )
4 * 120
Sistema
Operativo
Locazione SO
File System
supportati
Windows 2000
Advanced Server +
Sak
Disco rigido
FAT32, NTFS
119
(
• Snap Guardian 4400
Prezzo
4.000
ca
processore
Intel PIII 1,26 Ghz
Ram (MB)
512
Dischi rigidi
(numero x
capacità )
4 * 160
Sistema
Operativo
Locazione SO
File System
supportati
Linux / Guardian OS
Disco rigido
XFS
120
9
1
• I prodotti Nas si dividono in due fasce:
– Entry-level: con costo inferiore a 10.000 euro
– Fascia alta: capacità di diversi terabyte, architetture multiprocessore e
funzioni che in molti casi li rendono indistinguibili dai più costosi San
(Storage Area Network), apparecchiature che di solito si trovano spazio
solamente nelle imprese più grandi
• Che sistema operativo? Unix o Windows?
– le prime generazioni si basavano su di un kernel Unix => le rendeva
difficili da configurare per gli amministratori di reti non esperti in tale
ambiente
– ora anche Microsoft introducendo il Sak (Server Appliance Kit), un
prodotto progettato per un utilizzo immediato di Windows 2000 Server
come sistema operativo all’interno dei Nas.
• Il pacchetto Windows 2000 Server con Sak è oggi presente come sistema
operativo nel 25% delle apparecchiature Nas sul mercato.
121
• Linux: il sistema operativo risiede su flash memory o su una
partizione del disco rigido, fuori dalla portata dell’utente finale.
Dal punto di vista della semplicità e della sicurezza, questo
approccio lascia poco spazio al rischio di configurazioni errate e
riduce la possibilità di guasto del dispositivo.
• Windows 2000 Server con Sak: scalabilità e il fatto che si tratti
di un sistema operativo completo. Sak nasconde la complessità
di un sistema operativo sotto una semplice interfaccia di
appliance. Ma il cuore è una versione completa di Windows
2000 Advanced Server. Per questo, un’apparecchiatura Nas
basata su Sak è immediatamente scalabile. Utilizzando
Microsoft Distribuited File System (Dfs), più unità di storage
Windows possono essere riunite in un’unica entità logica. Il
prezzo da pagare per una tale scalabilità è il rischio di eventuali
errori di configurazione da parte dell’utente.
122
(
Backup su nastro
Windows
client
Macintosh
client
Unix
client
NAS appliances
Volume A (ripartito
su entrambi i Nas)
Volume B (su un unico Nas)
Sales share
Human resource
share
Marketing share
Accounting share
123
(
!
#
• Queste soluzioni altamente professionali sono adottate da
quasi tutte le compagnie di grosse e medie dimensioni.
• Il loro ruolo è quello di sostituire quelli che sono i sistemi più
tradizionali di storage come per esempio i DAS (Direct
Attacched Storage) o SAS (Server Attacched Storage).
• Si propone come un qualcosa di diverso rispetto ai NAS
(Network Attacched Storage).
• Semplificando al massimo può essere pensata come una
LAN dedicata unicamente allo storage, che è affiancata alle
LAN aziendali per non impattare sulle prestazioni di
quest’ultime.
• Tuttavia per capire quali siano le sue potenzialità e
apprezzarne le qualità è indispensabile farne un confronto
con le architetture tradizionali di storage/backup
124
'
• Tutti i dispositivi di storage sono collegati direttamente ai server, i
quali condividono le informazioni con gli altri sistemi sulla LAN.
125
'
PROBLEMATICHE:
– Difficile gestione dell’accesso e della condivisione di informazione
– La LAN rappresenta il primo collo di bottiglia: il data transfer rate è tipicamente
limitato a 100 Megabit/sec.
– I server sono un altro importante collo di bottiglia: sono costantemente coinvolti
nelle operazioni di trasferimento dati
– Formato dati vincolato dalla piattaforma a cui è connesso il device
CONSEGUENZE:
– Prestazioni di server e device non sono pienamente sfruttati
– Degrado eccessivo delle prestazioni globali della rete a seguito di un forte I/O
(tutti i dati transitano sulla LAN!)
– Inefficienza nel far fronte alle richieste concorrenti di applicazioni e utenti
– Eccessivo spreco di banda, cicli macchina e memoria: ogni volta bisogna
negoziare i parametri della connessione e della trasmissione dati
126
4
'
(
• Collegare i dispositivi di
storage direttamente al
server può appesantirlo
qualora più clienti sulla rete
vogliano accedervi
contemporaneamente.
• Questo significa che anche
la LAN, al quale i server
sono collegati, dovrà
sopportare un grande
carico dovuto al traffico
sulla rete.
127
4
'
(
• Implementando
una SAN
usando Fibre
Channel il
traffico è portato
ad un’altra rete
che attenua il
traffico sulla
LAN.
128
&
( 4 +:
•
CARATTERISTICHE:
– Data Transfer Rate: 100 Megabyte/sec in modalità single connection e 200 Megabyte/sec
in modalità full-duplex
– Le informazioni sono direttamente prelevabili dai dispositivi all’interno della SAN
– Visione centralizzata dei dati aziendali
– Aggiunta/Rimozione dei device senza interrompere il servizio
– Possibilità di raggiungere maggiori distanze tra dispositivi di memorizzazione e server
– Gestione e monitoraggio facilitati dall’uso di tool appositamente studiati
– Elevate performance nel backup dei dati con utilizzo minimo della banda della LAN
– Elevati transfer rate anche con moli di dati dell’ordine dei Terabyte.
•
RISULTATI:
– Fault Tolerance
– Alta Disponibilità
– Scalabilità
– Facilità di gestione
– Elevata connettività
– Incremento della banda passante
129
4
•
•
•
•
+
à
L’architettura SAN è una struttura in grado di adattarsi bene alle evoluzioni future di una azienda.
Le risorse vengono via via collocate dove servono.
La SAN è il risultato di un grosso lavoro di progettazione.
Possibilità di aggiungere ampiezza di banda, memoria di massa e connettività laddove servono e quando
servono senza la necessità di interrompere il funzionamento del sistema.
130
•
•
DIMENSIONE:
– DOMANDA: “Quanto grande sarà la SAN che vogliamo implementare?”
– RISPOSTA: Le dimensioni vanno calcolate in base alle immediate esigenze ma pensando
anche ad una possibile crescita futura!
– Una possibile soluzione (di dimensioni ridotte) prevede magari un’architettura FC-AL che
sfrutti un hub o un router in configurazione fissa.
OSSERVAZIONI: Basso costo ma basso grado di scalabilità.
– Una soluzione switched prevede invece l’uso di switch (fino a 32 porte) o director (fino a 256
o 512 porte), apparati che forniscono oltre ad un elevato grado di scalabilità anche un buona
tolleranza ai guasti.
OSSERVAZIONI: Elevata scalabilità, possibilità di percorsi alternativi tra server e dispositivi
in caso di guasti. Costo piuttosto elevato.
MANAGEMENT DELLA SAN:
– Molto spesso è meglio scegliere software dello stesso produttore della maggior parte dei
dispositivi hardware dell’azienda.
– Un buon software deve essere in grado consentire:
• Monitoraggio
• Configurazione e programmazione
• Reporting delle performance
• Logging
Il tool di management deve essere quindi in grado di intervenire su qualsiasi aspetto della
SAN e deve visualizzare in maniera semplice e intuitiva i vari nodi della rete. E’ opportuna
che il tutto sia gestibile da un’unica console…una sorta di mmc (Microsoft Management
Console).
131
•
•
•
STORAGE VIRTUALE:
Questa tecnica permette di operare in maniera molto flessibile in ambienti eterogenei. I diversi devices
(disk array, tape library, etc.) vengono condivisi fra diversi sistemi operativi. In pratica i dispositivi
vengono suddivisi in volumi, i quali vengono poi assegnati a seconda delle esigenze ai vari server.
OSSERVAZIONI: questa tecnica permette di massimizzare l’uso dello spazio di storage evitando
sprechi inutili e permettendo di rispondere in maniera adeguata a improvvise richieste di memoria. E’
una soluzione molto più flessibile rispetto alla preallocazione delle risorse.
DISLOCAZIONE GEOGRAFICA:
Quando la struttura aziendale si estende ben oltre il semplice edificio allora bisogna considerare come
affrontare il problema di interconnettere SAN anche molto distanti fra loro. Ne parleremo meglio quando
vedremo il tema dello “storage su IP”.
DISPOSITIVI DI STORAGE:
DOMANDA: “Quali storage-devices è meglio scegliere?”
RISPOSTA: “Due soluzioni: concentrare o distribuire”
1) Concentrare: sistemi di storage di grosse dimensioni costano molto però portano a vantaggi in
termini di prestazioni non trascurabili quando si lavora con database o applicativi che richiedono
dimensioni di memoria spropositate.
2) Distribuire: molto dispositivi (di dimensioni ridotte) distribuiti su tutta la SAN rappresenta una
soluzione più economica ma che a lungo andare può non essere in grado di garantire le adeguate
performance.
132
:
(
VANTAGGI:
1.
FATTORE E-BUSINESS: fenomeni come il commercio elettronico e l’ebusiness hanno portato alla necessità di lavorare sempre di più con grandi
moli di dati. Questi dati devono spesso essere immagazzinati per essere
successivamente consultati. La SAN costituiscono la soluzione ottimale
quando lo storage dei dati è un fattore cruciale nel successo dell’azienda.
2.
COSTI DELLO STORAGE: il costo dei sistemi di storage è andato via via
diminuendo, ecco perché molte aziende hanno cominciato ad affacciarsi
al mercato delle SAN.
3.
DISPONIBILITA’ DI DATI E APPLICAZIONI: l’importanza di garantire un
costante accesso dati anche durante le fasi di replicazione e backup è un
fattore chiave dell’architettura SAN.
4.
SERVERLESS BACKUP: il serverless backup o anche lan-free backup è
forse il punto forte del mondo SAN. Il fatto che la maggior parte dei dati
non transitino sulla LAN aziendale è significativo in termini di prestazioni.
La possibilità di effettuare spostamenti di dati da un dispositivo ad un altro
o di effettuare backup senza intasare la rete locale è importantissimo.
Tutte queste sono cose che le architetture di storage tradizionali non sono
in grado di garantire.
133
:
(
SVANTAGGI:
1.
COSTI E COMPLESSITA’: la diffusione capillare delle SAN (che inizialmente si
prospettava) è stata fortemente rallentata dal fatto che molte aziende ci pensavano due
volte prima di adottare una tecnologia nuova, poco conosciuta e ad alto costo. Da non
sottovalutare poi il problema che era difficile individuare figure professionali in grado di
progettare e gestire una tecnologia neo-nata. Al giorno d’oggi tuttavia la situazione è
decisamente migliorata.
2.
INTEROPERABILITA’: un problema molto sentito è quello del corretto funzionamento
tra i diversi prodotti (dei vari vendor) che il mercato offre. Gli standard ufficiali o de facto
non sono tuttavia vincolanti. Non esiste infatti uno standard vero e proprio per realizzare
una SAN! Altro problema molto grosso è quello dell’integrazione del software di
gestione con la SAN. Una architettura teoricamente corretta in pratica potrebbe non
funzionare o non essere gestita correttamente.
Alcune tra le alleanze di mercato più importanti sono: la FCA(Fibre Channel Alliance) e
la SNIA (Storage Networking Industry Association).
3.
TESTING DELLA COMPATIBILITA’: le grosse aziende e i vari vendor proprio per il
problema di cui abbiamo parlato sopra hanno sentito il crescente bisogno di creare dei
laboratori in cui venissero effettuati approfonditi test di compatibilità fra i vari dispositivi
e prodotti software.
Il fatto è che non tutti possono permettersi questo tipo di strutture, così molto spesso le
scelte di acquisto si concentrano su un unico vendor e i suoi partner dove (almeno in
linea teorica) è garantito un corretto funzionamento di tutte le parti del sistema.
134
(
&
1
• Vediamo attraverso un grafico riassuntivo quali sono secondo gli IT
manager i motivi per cui il fenomeno SAN non ha avuto quella
iniziale diffusione che tutti avevano ipotizzato.
135
(
(
Molto spesso viene proposto il
confronto tra questa due diverse
tecnologie. Nonostante si tratti di due
soluzioni di storage che in un certo
senso possono essere viste come
“rivali”, la realtà è che esse si
rivolgono a target di acquirenti
diversi. In particolare i NAS si
rivolgono a quelle aziende che per
possibilità economica e per esigenze
non hanno interesse di adottare la
soluzione SAN.
136
• Le alternative alla tecnologia Fibre
Channel
– iSCSI
– iFCP
– FCIP
137
'
8
• SCENARIO POSSIBILE: Una grossa azienda è
organizzata in diverse filiali distribuite su un territorio
molto vasto. Le diverse LAN sono interconnesse fra loro
da una struttura WAN.
• Le eventuali SAN possono essere dislocate anche a
centinaia di km di distanza l’una dall’altra.
• DOMANDA: Cosa si può fare?
• RISPOSTA: Esistono diverse alternative, che a seconda
dei casi possono essere o meno praticabili…
138
$
;
• PRIMA SOLUZIONE: Conservare l’infrastruttura di tipo
Fibre Channel e usare hardware dedicato per estendere
l’interconnessione.
• OSSERVAZIONI: Questa soluzione può essere presa in
considerazione solamente quando la distanza che
separa due SAN non supera le poche decine di km. I
costi per realizzare tutto ciò non vanno sottovalutati!
• SECONDA SOLUZIONE: Usare uno degli standard che
implementano il cosiddetto “storage over IP”
• OSSERVAZIONI: Soluzioni altamente efficienti e a costi
più contenuti. E’ importante scegliere la tecnologia in
base alle esigenze e al contesto aziendale.
139
&
• iSCSI: è un protocollo basato su TCP/IP che permette (dopo aver
stabilito una connessione) di gestire i vari dispositivi posti anche a
grandi distanze, oltrepassando quindi il limite fisico delle SAN
stesse. Detta in parole povere i comandi standard SCSI vengono
veicolati attraverso il protocollo TCP/IP.
• iFCP: anche quest’ultimo è un protocollo basato su TCP/IP. Questo
protocollo consentirebbe di interconnettere dispositivi di storage
Fibre Channel o SAN Fibre Channel utilizzando una infrastruttura IP
al posto di una infrastruttura FC. Niente più router, switch, hub FC
ma i normali dispositivi di switch e routing utilizzati nelle reti TCP/IPbased.
• FCIP: si tratta sostanzialmente di una tecnica che permette di
incapsulare Fibre Channel su IP. In pratica per connettere isole SAN
FC-based attraverso IP viene adottata la tecnica del tunneling:
questo permette di far arrivare, in modo trasparente i dati da una
SAN all’altra. E’ evidente che anche questo è un protocollo basato
su TCP/IP.
140
&
141
&
•
•
•
•
&
I tradizionali comandi SCSI vengono trasportati su una rete IP.
La figura mostra l’incapsulamento di un pacchetto dati iSCSI all’interno di un
tipico frame Ethernet. L’header iSCSI è di fondamentale importanza perché
fornisce le indicazioni su come leggere i comandi e i dati SCSI.
Concetto di fondo: l’architettura SCSI viene veicolata su TCP/IP
Complicazioni che sorgono dovute ad un ambiente (di transito) come la rete
IP
– Problemi di autenticazione e sicurezza
– Problemi di naming/addressing di initiator e target
– Incapsulamento di SCSI su IP (vedi sopra)
•
iSCSI poiché sfrutta TCP è un protocollo orientato alla connessione.
Prima di poter comunicare scambiandosi i dati, tra initiator e target vengono
stabilite una o più connessioni TCP, sulle quali vengono effettuate eventuali
operazioni di login.
142
&
•
•
•
&
ASPETTO SICUREZZA: i dati passano attraverso la rete esterna (non più la
SAN o LAN interne) e quindi è molto sentita l’esigenza di garantire la
sicurezza e l’integrità dei dati.
Diverse modalità di accesso alle risorse di un target:
–
–
–
Accesso senza autenticazione
Autenticazione initiator-target
Certificazione e cifratura
–
Quelle ottenute su reti Gigabit Ethernet sono paragonabili a quelle ottenute su
FC a 1Gbps.
Alto costo computazionale dovuto all’incapsulamento di iSCSI su IP
Possibilità di implementare la gestione dell’incapsulamento via hardware per
ottenere migliori prestazioni.
ASPETTO NAMING/ADDRESSING: al momento di stabilire delle
connessioni ci troviamo ad interagire in un ambiente distribuito. Dobbiamo
essere in grado di identificare correttamente target e initiator di una
sessione.
Soluzione: viene utilizzato il protocollo iSNS(Internet Storage Name Server)
che può essere pensato come una sorta di DNS. Ogni initiator e target
dovranno avere un loro “iSCSI qualified name” o iqn che li identifichi
univocamente.
ASPETTO PRESTAZIONI:
–
–
143
&
4
'
• Protocollo gateway-to-gateway
• Obiettivo: dispositivi di storage FC e elementi di switching e routing
di tipo TCP/IP
• I devices comunicano con la rete IP grazie ai gateway iFCP
• Mapping dei servizi trasporto FC sui servizi trasporto TCP
• iFCP mappa ogni indirizzo FC in un indirizzo IP e una sessione TCP
144
&
4
'
• Modello di funzionamento di iFCP
145
&
4
'
• Obiettivi:
– Permettere a chi dispone di una grande varietà di dispositivi FC, di
sfruttare la flessibilità di una rete IP per interconnetterli
– Permettere di rimpiazzare, a fronte di un notevole taglio dei costi,
gran parte di un SAN-FC con un struttura IP-based
• Risultati:
– Uso di dispositivi altamente performanti quali quelli FC
– Uso della flessibilità e scalabilità offerte da una rete IP-based
come mezzo di trasporto
• Anche iFCP fa uso del protocollo iSNS per il discovery dei
devices e dei servizi
• Impiego tipico di iFCP:
– Estensione di SAN-FC based
– Collegamento di SAN FC sfruttando le topologie LAN,WAN e MAN
– Integrazione fra iSCSI e Fibre Channel
146
4
'
&
• I frame FC vengono incapsulati in pacchetti IP
•
•
•
Possibilità di collegare fra loro isole FC poste a grandi distanza fra loro
Trasparenza della comunicazione:
– SAN remote e locali non si rendono conto di quello che succede,
perché per loro è come comunicare usando il protocollo FC.
– La rete LAN/MAN/WAN intermedia che trasporta i frame FC incapsulati
comunica usando unicamente IP
Vediamo come funziona in pratica FCIP e cerchiamo di capire perché esso
viene spesso definito come “storage su backbone”.
147
4
'
&
• Idea di fondo: sfruttare le grosse backbone aziendali per trasportare
i pacchetti FC incapsulati…ecco come:
148
<
149
<
Non avendo punti fissi, per un certo periodo si è
tentato di dare una definizione in base ad un aspetto
particolare:
“UN MAINFRAME E’ TUTTO CIO’ SU CUI SI
RIESCE A FAR GIRARE SISTEMI OPERATIVI
QUALI OS/390, z/OS, MVS, VM, VSE”
SBAGLIATO!!! Posso far girare OS/390 anche su un
veloce processore INTEL, grazie a un simulatore!!!
Questi tentativi falliti di definire propriamente i
mainframe hanno portato nel tempo alla concezione
che fosse il caso di metterli in soffitta e affidare tutto al
paradigma Client-Server, “Il modello di calcolo del
futuro”…
Niente di più scorretto…
150
"
Al giorno d’oggi possiamo distinguere due tipologie di
definizione
La prima asserisce che
“UN MAINFRAME E’ UNA PIATTAFORMA GENERAL
PURPOSE IN CONTINUA EVOLUZIONE, CHE
INCORPORA NELLA SUA DEFINIZIONE
ARCHITETTURALE LE FUNZIONALITA’
ESSENZIALI RICHIESTE DALLE SUE
APPLICAZIONI TARGET” (tratto da Mainframes.com)
…della serie “Ho detto tutto ma non ho detto niente”…
151
ù
…
I Mainframe sono imponenti macchine,
tipicamente costruite da grandi compagnie
(IBM, Hitachi, Amdhal), mirate ad eseguire
applicazioni commerciali che richiedono
continuità di servizio e a soddisfare esigenze di
computazione a larga scala:
1.
2.
3.
4.
Ricerca scientifica
E-commerce
Home banking
…
Non vengono mai spenti o riavviati, salvo rare
eccezioni
Possono ospitare più aziende e più ambienti
152
$
Laboratori scientifici
Banche
Assicurazioni
Istituti di ricerca
Centri di Outsourcing
Stazioni meteo
Non è facile vederli in ambienti domestici o in piccole
aziende, non tanto a causa delle dimensioni (ormai
ridotte rispetto al passato), ma per i costi di acquisto e
le spese di gestione tecnica.
153
'
Tutte le parti hardware sono sempre state oggetto di
rapidissimi cambiamenti
Molte soluzioni alle richieste dei clienti sono
implementate direttamente in hardware
Per molto tempo i Mainframe sono stati dei veri e
propri bachi di prova di versatilità hardware
Alcune soluzioni venivano vendute come offerte
limitate
Altre venivano integrate per sempre nell’architettura
Esempio: HAAF (High Accuracy Arithmetic Facility)
154
Rispetto ai computer commerciali:
Prestazioni superiori
Scalabilità superiore
Maggior sicurezza
Adattabilità alla criticità dell’input
Collaborazione con l’utente per
Risolvere i problemi
Prezzo molto maggiore
155
Massima performance per i job Singlethreaded: alcune operazioni richiedono di
essere atomiche (transazioni su database,
ordinamenti e bilanciamenti di strutture dati)
ma possono rischiare di bloccare il sistema;
Massima connettività di input/output: possono
essere collegate moltissime periferiche
(specialmente hard disk);
Massima larghezza di banda di input/output: le
tantissime periferiche sono connesse in modo
da minimizzare i colli di bottiglia e i
rallentamenti in caso di I/O molto massiccio.
156
'
Ogni architettura è una collezione di compromessi
I Mainframe sono più costosi perché i
compromessi non ci sono!
Spesso le prestazioni non sono esorbitanti (in
MIPS), alla velocità si preferisce l’affidabilità
Elementi chiave nella progettazione sono anche
l'
High Availability e la tolleranza ai guasti.
157
<&
$
I Minicomputer e le Workstation sono stati studiati per
velocizzare il più possibile la computazione, ma sono
piuttosto fiacchi nella manipolazione dei dati
Un solo collegamento tra processore e memoria
Uno solo tra memoria e dischi
I Mainframe sono specifici per lavori dataintensive: dai 5 ai 10 Gigabytes di dati per
MIPS, contro 1 scarso dei normali PC
In ambito commerciale, la quantità di dati
gestibili è più importante della velocità di
esecuzione di addizioni e sottrazioni!
158
&/
Sono stati pensati dei canali di
comunicazione speciali per la
comunicazione tra le varie unità di
elaborazione.
ESCON
FICON
BUS&TAG
159
&:<
/.52
1990 l’IBM annuncia la famiglia System/390
18 processori Enterprise System/9000
Il più potente computer mai prodotto da IBM fino
ad allora
Attualmente il sistema 390 copre ancora una
vasta area di mercato
Offre una ampia gamma di modelli
Sistema operativo proprietario: OS/390
Affidabile e potente
160
/
'
=22
522
La z/Architecture si compone di
Registri a 64 bit
Nuove istruzioni intere a 64 bit
Indirizzamento a 64 bit sia per operatori che
per istruzioni ed anche per indirizzamento
fisico o virtuale
Generazione di indirizzi a 64 bit
Registri di controllo a 64 bit
Archittetura Floating Point a 64 bit
z/OS
161
&%$
Un'
esclusiva dell'
architettura IBM z/Architecture è
l'
Intelligent Resource Director,
Director una funzione che
ottimizza l'
utilizzo dei processori e dei canali di I/O
tra le Logical Partitions basandosi sulle priorità dei
carichi di lavoro.
L'
IRD usa il concetto di cluster di LPAR, il
sottoinsieme di sistemi z/OS in un cluster Parallel
Sysplex che girano come LPAR sullo stesso server
z900.
162
&%$ –
Le tre funzionalità principali dell'
IRD
sono:
LPAR CPU Management
Dynamic Channel Path Management
Channel SubSystem Priority Queuing
163
%
"
Permette al WLM di lavorare in modo globale sul
sistema per gestire il carico di lavoro dei
processori e i processori logici attraverso i cluster
di LPAR.
Le risorse di CPU sono spostate automaticamente
sulle LPAR che ne hanno più bisogno bilanciando
il carico delle diverse partizioni.
Il WLM, inoltre, controlla la disponibilità dei
processori aggiustando la quantità di CP (Central
Processor) logici assegnati a ciascuna LPAR.
164
$/
'
'
<
Nelle altre architetture i path di I/O sono definiti
con una corrispondenza precisa tra processori e
device.
Con z/OS e z900, questi path possono essere
assegnati automaticamente alle unità per
supportare il carico di I/O.
Questa funzionalità viene implementata per i
canali ESCON e FICON.
165
'
/
/
9
Quando un processo ad alta priorità è in esecuzione in
un cluster di LPAR le sue richieste di I/O avranno una
priorità maggiore e saranno, quindi, inviate al
corrispondente dispositivo di I/O prima di richieste fatte
da processi che hanno una priorità più bassa: questa è
l'
idea che sta alla base del Channel Subsystem Priority
Queuing.
Questa funzionalità porta con se due evidenti vantaggi:
Condivisione dei canali (di I/O) con conseguente
riduzione dei costi
I processi con maggior priorità migliorano le proprie
prestazioni
166
/
#
Gli HyperSocket sono una funzionalità
unica dei server zSeries, essi consentono
di creare una "rete TCP/IP nel server"
che permette connettività ad alta velocità
tra i vari server virtuali che girano sullo
stesso z900 senza la necessità di aver
alcun cablaggio fisico.
167
&:<
522
Offre 42 modelli che utilizzano dai 3 ai 20
processori.
I server z900 si basano sull'
architettura
z/Architecture.
Assegna le risorse attraverso l'
Intelligent
Resource Director (IRD) che combina i
pregi di tre tecnologie
Workload Manager
Logical Partitioning
Parallel Sysplex
168
4 >
+
'
Questa casa produttrice fornisce diversi modelli di
Mainframe tra i quali la famiglia di server Millenium
2000, il più vecchio 1032 Model 5 Director e l'
Omniflex
1000.
Ora, andremo a vedere in dettaglio una particolare
famiglia di server: i server Millenium 2000A: sono
macchine versatili e ad elevate prestazioni; offrono
una vasta scelta tra più di 50 modelli scalabili in
diverse configurazioni permettendo così, di fare la
miglior scelta tra le proprie necessità e le capacità del
server.
169
<
-222
Il modello base è il GS201AA, con una capacità di 30
MIPS (1 CPU) e si estende fino al GS2128 che ha 12
CPU e una capacità di 914 MIPS.
I server di questa serie possono essere impiegati come
sistemi System/390, o in ambiente Parallel Sysplex e in
sistemi aperti/distribuiti. Le configurazioni sono facili da
cambiare, migliorare o convertire ad altri usi. I server
possono essere configurati in diverse modalità locali,
remote o automatizzate.
170
<
-222
+ &/
Offrono canali ESCON, paralleli, Amdahl Fast Hiperlinks
e Amdahl OSA. Tutti i server di questa famiglia hanno
almeno 32 canali e ne possono avere fino a 512 (se
sono tutti ESCON). Quelli di seguito elencati sono le
quantità massime dei canali supportati:
512 canali ESCON
192 canali paralleli
64 Amdahl Fast Hiperlink
64 Coupling Link
64 canali Amdahl OSA
171
1. Conoscere l’hardware
2. CONOSCERE GLI STRUMENTI DEL
SO
3. gestire degli utenti
4. Sicurezza! Sicurezza! Sicurezza!
– Gestire gli accessi al sistema
– sicurezza dei dati
5. Occuparsi del backup e restore dei dati
6. Sorvegliare le prestazioni del sistema
172
• Serie di programmi che agiscono come
intermediari tra l’utente e l’hardware
Obiettivi:
• Fornire un ambiente nel quale un utente sia in
grado di eseguire dei programmi.
• Controllare e coordinare in maniera efficiente
l’utilizzo dell’hardware da parte dei programmi.
• Rendere conveniente l’utilizzo del computer
173
174
&
&:<
• PC-DOS
– http://www-3.ibm.com/software/os/dos/
• AIX
– http://www-1.ibm.com/servers/aix/
• OS/2 Warp
• OS/2 Warp for Server
• OS390
– http://www-1.ibm.com/servers/s390/os390/
• OS400
• VM/ESA
• VSE/ESA
– http://www-1.ibm.com/servers/eserver/zseries/os/vse/
• z/OS
– http://www-1.ibm.com/servers/eserver/zseries/zos/
• z/VM
175
Uno dei piu conosciuti OS per mainframe
è l'
MVS poi divenuto OS/390 ed oggi
aggiornato e rinominato in z/OS
176
&:<
OS/360
MFT
MVT
SVS
MVS
OS/390
z/OS
- Uno dei primi os di IBM
- Multitasking with Fixed Number of
Task
- Multitasking with a Variable num.
Of task
- Single Virtual Storage
- Multiple Virtual Storage
- supporto unix
- supporto 64 bit
177
<7
Viene definito uno dei piu complessi
sistemi operativi creati.
Nato alla fine degli anni '
70
178
/.52
Definito da IBM come “flagship of operative system”.
Nato nel 1994 è giunto alla versione 2 Release 10, è ancor
oggi utilizzato.
Conforme alle specifiche X/Open Company'
s Single UNIX,
conosciute anche come “UNIX 95”
Funzionalità di “base” (cosi come specificato da IBM):
Supporto crittografico
Supporto per filesystem distribuiti (OSF DCE, NFS e SMB)
HCD (Hardware Configuration Definition)
IBM Comunication Server (TCP/IP e SNA)
IBM Http Server
Supporto per compilatori C/C++
179
/
Per IBM “z” sta ad indicare “Zero down time”.
Creato come sistema operativo “generalpropouse”, in grado di mantenere un buon
compromesso tra potenza di calcolo e velocità di
I/O
Provenendo da OS/390 e'anchesso conforme alle
specifiche UNIX/95
Questo sistema trae i maggiori benefici con la
z/Architeture, integrando il supporto per:
Storage a 64 bit
IRD (Intelligent Resource Director)
HyperSocket
PCICA (PCI Cryptographic accelerator)
180
/
Per la prima volta IBM introduce un applicazione
“mysys” con cui è possibile configurare
/mantenere il sistema attraverso dei wizards,
questo per ridurre costi di addestramento del
personale e manutenzione del sistema.
Adatto anche a imprese di media struttura
Supporta anche:
LDAP
SSL
Kerberos V5
181
/7<
z/VM è un nuovo sistema operativo
espressamente pensato per sfruttare a
pieno le possibilità della z/Architeture a 64
bit
z/VM e'un sistema “ibrido” in grado di far
girare più e diversi OS al suo interno, “vm”
infatti stà ad indicare Virtual Machine
182
/7<
IBM consiglia questo tipo di sistema a:
chi deve testare sistemi operativi
chi ha esigenze di eseguire più istanze di un sistema
operativo
A differanza di altri OS di IBM z/Os implementa
queste funzionalità:
System Management API
Virtual Ficon Channel-to-channel
Extended HiperSocket Support dove è stato aggiunto
il supporto per:
broadcast tra i sistemi guest
VLAN
Guest Lan Simulation
183
/7<
184
7
/
Questo sistema operativo giuto alla
versione 2 release 7 include supporto
per:
Hiper Sockets
PCICA
WebServices in grado di sfruttare tecnologie
quali XML e SOAP
185
4
Transaction Progessing Facility è un sistema creato appositamente per
la gestione di grossi volumi di transazioni.
Secondo IBM,il produttore, questo OS è unico nel suo genere.
Originariamente chiamato ACP (Airlines control packages) è
una piattaforma business-critical, adatta a ricoprire compiti
come ad esempio:
gestione del traffico aereo
gestione di servizi ferroviari
servizi finanziari o governativi
TFP è stato progettato per cooperare con più di 10 mainframe
IBM,che possono essere visti come un unico sistema TFP
IBM "concede" i sorgenti del sistema, affinche l'
acquirente possa
sfuttare al massimo le capacita'di questo sistema operativo
186
/
0
IBM fornisce il sistema con kernel 2.2 o
2.4 con il supporto per l'
hardware
z/Architeture.
Acluni del tool forniti sono :
gcc 3.2
glib 2.2.5
187
&:<
/?22
Nel 1988 la IBM introdusse Application
System 400 (AS/400) una nuova
famiglia di server progettati per le
piccole medie imprese
Introdusse un pacchetto software
comprensivo di circa 1000 programmi
Nuovo sistema operativo OS/400
188
&:<
/?22
Caratteristiche:
Dischi da 18 GB a 14 TB
Memoria da 256 MB a 16 GB
Adottava le soluzioni
tecnologiche dei S/38
Vendute nel mondo
500.000 unità
(50.000 in Italia)
189
&@
•
•
•
•
IBM
Architettura RISC
KDE e GNOME compatibile
Buon livello di management attraverso il
System Mangement Interface Tool
• Scalabilità verticale
190
&@
• Alcune caratteristiche:
–
–
–
–
–
–
–
–
Hardware supportato: PowerPC
Max numero di processori: 24 (nel modello S80)
Kernel a 64 bit
Tipo di OS: UNIX-based
Certificato POSIX
JFS
User interface: Motif, CDE
Ultima versione: 5.2
191
&
&@
• Advanced Interactive eXecutive è il
sistema UNIX basato su System V
sviluppato dall’ IBM.
• Prima versione risale al lontano 1986
• Ultima ver : AIX 5L Version 5.2
• AIX gira solamente sui server IBM della
pSeries spinti dai processori Power
(architettura RISC )
192
&@
193
• AIX gestisce la memoria similarmente a
tutti gli altri sistemi UNIX
• VMM Virtual Memory Manager si occupa
di gestire la memoria virtuale
• Supporta sia gli indirizzi a 32 bit che a 64
bit
194
7
<
/ <
• I segmenti di memoria virtuali sono
partizionati in unità di dimensione fissa
chiamate pagine
• La dimensione coincide con le pagine
della memoria reale: 4096 byte
• Il VMM deve gestire trasparentemente uno
spazio di dati più grandi della memoria
fisica ( RAM )
195
&@ + 4
/
• Il file system nativo di AIX è il JFS ( ora
disponibile anche la seconda versione )
• Supporta anche il Virtual Shared Disk e il
Network Shared Disk.
• New Entry: GPFS ( General Parallel File
System )
196
4
• GPFS è un file system distribuito su più
macchine, dove i dispositivi di
memorizzazione ( dischi ) sono condivisi
tra tutti gli utenti.
• L’ insieme di macchine che possono
accedere al GPFS forma il cluster.
197
4
• GPFS si attiene alle specifiche dei FS standard di UNIX
e incrementa la scalabilità del sistema provvedendo
anche al failure recovery tra i vari file system dei diversi
nodi.
198
%
• LPAR divide le risorse HW del sistema per
formare più sistemi logici.
• Con AIX 5.2 possono essere definite fino a
32 partizioni logiche ( LP ) mentre AIX 5.1
arriva a 16 LP
• In ogni partizione può girare una diversa
immagine del sistema operativo ( e anche
SO diversi )
199
%
200
$
%
• Con LPAR è possibile cambiare
configurazione solo dopo il reboot
• Dynamic LPAR permette di spostare le
risorse ( CPU, memoria, slot I/O ) tra le
varie ripartizioni on-line tramite il Dynamic
Reconfiguration ( /usr/sbin/drmgr )
• Ogni partizione è isolata dalle altre
partizioni ed esegue la propria istanza di
sistema operativo
201
"
• AIX mette a disposizione dell’ utente parecchie
utilità per gestire il sistema:
• SMIT ( System Management Interface Tool )
• WLM ( WorkLoad Manager )
• CUoD ( Capacity Upgrade on Demand )
• CSM ( Cluster Systems Management )
• VIPA (Virtual IP Address )
202
<&
• Un'
interfaccia per l'
amministrazione del
sistema completa, che rende poco
frequenti interventi diretti su file o altri
programmi di configurazione.
• Si può utilizzare con il classico prompt, ma
anche con un’ interfaccia grafica
utilizzando il mouse
203
A
#
<
• WLM consente di definire un criterio di
allocazione delle risorse che risponda
dinamicamente alle esigenze delle applicazioni
• Si può accedere facilmente a WLM grazie
all’interfaccia grafica intuitiva del System
Manager basato sul Web, tramite il tool SMIT
(System Management InterfaceTool) oppure
utilizzando i comandi AIX.
204
" $
• CUoD consente di installare su un sistema un
numero maggiore di processori di quanti richiesti
inizialmente e di attivarli solo quando
necessario.
• Con CUoD viene aumentata la disponibilità del
sistema: se un processore raggiunge una soglia
di errore, si attiva in modo trasparente un
processore disponibile sostituendo quello
malfunzionante, finchè non viene riparato.
205
&
<
• DOS
• Windows 9x
• Windows NT
• Windows 2000
• Windows XP
•Windows Server 2003
• Windows CE
206
• DR-DOS
– http://www.drdos.com
• BeOS
– http://www.beincorporated.com/
• AmigaOS
– http://os.amiga.com/
207
…
• 1975
Altair della MITS (Model Instrumentation Telemetry
Systems) basato su INTEL 8080
• Gates, Allen e Davidoff scrivono un interprete BASIC per
l’Altair
• La Microsoft vende alla MITS il BASIC
• 1977
MITS viene venduta alla Pertec
• Battaglia legale tra Microsoft e Pertec per la proprietà del
BASIC
• 1980
Microsoft ha già 40 dipendenti
• Nel 1980 IBM cominciò a cercare nel mercato un sistema
operativo per il futuro PC-IBM. Essa inizialmente cercò di
usare il CP/M della Digital Reseach, il sistema operativo
industriale standard di allora, a quei tempi potevi lanciare un
BASIC con funzioni per il disco, il sistema operativo di
qualcun'
altro o il CP/M.
208
• Ci sono varie storie che raccontano gli attriti tra DR e
IBM.
• L'
IBM allora si recò dalla Microsoft, azienda che forniva
interpreti per linguaggi. Bill Gates e Paul Allen avevano
scritto un BASIC, fornito su nastri perforati o dischi.
Microsoft non aveva sistemi operativi per 8086 da
vendere
Gates acquista per 50 k$ la licenza di uso
• Agosto 80
non esclusivo del Q-Dos di Tim Paterson della Seattle
Computer Products
• In seguito Gates acquista la Seattle Computer Products
e assume Paterson
• La Microsoft stipula con IBM un contratto di consulenza
per la fornitura di un SO (86-DOS)
• 12 agosto 1981 esce il primo PC di IBM basato su Intel
8086 con SO MS-DOS 1.0
209
…
•
•
•
•
•
•
•
•
•
•
•
•
:
Marzo 83
DOS v 2.0
Agosto 84
DOS 3.0
20 nov 85
Windows 1.0
Gennaio 86
DOS 3.25
2 aprile 87
annunciati DOS 3.3, MS-OS/2, Windows 386
e Windows 2.0
DOS 4.0
Luglio 88
22 maggio 90
win386+win2 = Windows 3.0
Giugno 91
DOS 5.0
MS-OS/2 si evolve in NT (beta)
Nov 92
6 aprile 92
Windows 3.1
30 marzo 93
DOS 6.0
windows 3.11 for Workgroups e DOS 6.2
8 Novembre 93
210
:
•
•
•
•
•
•
•
Marzo 94
DOS 6.22
Settembre 94
NT 3.5
24 agosto 95
Windows 95
24 agosto 96
NT 4.0
25 giugno 98
Win98
17 febbraio 2000
Windows 2000
25 ottobre 2001
Windows XP
211
"
0
• Laboratori Bell non producevano HW
• Indipendenza da HW
linguaggio C
• Bell aveva una causa per violazione di
monopolio che portò a distribuire
inizialmente UNIX con codici sorgenti
• Rapidissima diffusione su sistemi
eterogenei
• Miglioramento del sistema
212
"
0
• Unix
tutti i sistemi di questo tipo
• UNIX
marchio registrato da USL (Unix
System Laboratories) della Novell
• Nel 1965 il progetto Multics di Bell (AT&T)
213
"
0
• 1969 Il principio della storia di UNIX ha inizio nel 1969, quando
Ken Thompson, Dennis Ritchie ed altri cominciano a lavorare
su un PDP- 7
• 1971 La Prima edizione aveva un assembler per un PDP-11/20, un
file system, il fork(), roff e ed. Veniva usato per la elaborazione di
testi dei documenti di brevetto.
• 1973 La Quarta Edizione fu riscritta in C. Questo la rese portabile e
cambiò la storia dei Sistemi Operativi.
• 1975 La Sesta Edizione viene rilasciata. Chiamata
comunemente anche Version 6, questa è la prima largamente
disponibile fuori dai Bell Labs.
– La prima versione BSD (1.x) fu derivata dalla V6.
• 1979 La Settima Edizione fu "un miglioramento sia per i precedenti
che per gli Unix successivi". Aveva il C, UUCP e la Bourne Shell.
• 1980 Xenix: Microsoft presenta Xenix. 32V e 4BSD sono introdotti.
214
"
0
• 1982 System III: UNIX System Group (USG) di AT&T rilascia System III, la
prima versione pubblica esterna ai Bell Laboratories.
• 1983 System V: Computer Research Group (CRG), UNIX System Group
(USG) ed un terzo gruppo si fondono per divenire UNIX System
Development Lab. AT&T annuncia System V
• 1984 4.2BSD: L'
Università della California a Berkeley rilascia il 4.2BSD.
• 1984 SVR2: Viene presentato System V versione 2. In questo anno ci
sono 100.000 UNIX installati in tutto il mondo.
• 1987 SVR3: System V versione 3 che comprende STREAMS, TLI, RFS. A
questo punto ci sono 750.000 UNIX installati in tutto il mondo.
• 1988 Viene pubblicato POSIX.1. Vengono create la Open Software
Foundation (OSF) e UNIX International (UI).
• 1989 AT&T forma UNIX Software Operation in preparazione del distacco
di USL.
215
• 1989 SVR4: unificando System V, BSD e Xenix viene
rilasciato UNI X System V versione 4.
• 1990 XPG3: X/Open lancia il marchio XPG3.
• 1991 UNIX System Laboratories (USL) diventa una società
con maggioranza controllata da AT&T.
• 1992 SVR4.2: USL rilascia UNIX System V versione 4.2
(Destiny). A ottobre X/Open lancia il marchio XPG4. Il 22
dicembre Novell annuncia la sua intenzione di acquisire
USL.
• 1993 4.4BSD: la versione finale di BSD 4.4BSD viene
rilasciata da Berkeley. Il 16 giugno Novell acquisisce USL
216
• Ultimi mesi del 1993 SVR4.2MP: Novell trasferisce i diritti del
marchio registrato "UNIX" e la Single UNIX Specification a
X/Open. A dicembre Novell rilascia SVR4.2MP, la versione
finale USL OEM di System V.
• 1995 UNIX 95: X/Open presenta il branding programme di
UNIX 95. Novell vende UnixWare business a SCO.
• 1996 The Open Group si forma dalla fusione di OSF e X/Open.
• 1997 Single UNIX Specification, versione 2, The Open Group
presenta la versione 2 della Single UNIX Specification, questa
include il supporto per il realtime, i threads e per i processori a
64-bit e superiori.
• 1998 UNIX 98: The Open Group presenta la famiglia di marchi
UNIX 98, che comprende Base, Workstation and Server
217
218
%
• http://www.levenez.com
• http://www.microsoft.com/windows/WinHistoryIntro.mspx
• http://www.windoweb.it/servizi.htm
219
&
: $
• NetBSD
• con lo scopo di portare un ambiente omogeneo su ogni piattaforma
hardware, dalla workstation all'
Atari.
• http://www.openbsd.org/
• OpenBSD
• con l'
obiettivo di fornire un sistema operativo estremamente sicuro
ed immune da ogni tipo di attacco.
• http://www.openbsd.org/
• FreeBSD
• prima ottimizzato per architettura Intel x86 ora già disponibile anche
per processori Alpha.
• http://www.openbsd.org/
• PicoBSD
• derivato dal progetto precedente, è una versione adattata per i
sistemi embeded.
• http://www.openbsd.org/
220
&
•
•
•
: $
BSDi
• ovvero una distribuzione BSD orientata al business dotata dall'
inizio di
supporto tecnico commerciale e con una marcia in più per il porting di
applicativi commerciali. Nel gennaio 2000 è stata annunciata un percorso
di unione tra i progetti FreeBSD e BSDi grazie ad una fusione tra Walnut
Creek e la società BSDi.
TrustedBSD
• è un nuovo progetto, annunciato nell'
aprile 2000, mirato a rafforzare la
sicurezza partendo dalla distribuzione del FreeBSD. Molto del proprio
codice è destinato ad essere reintegrato nella distribuzione originale
quando sarà maturo.
Darwin
• ultimo nato tra le braccia della Apple, si basa su microkernel Mach 3 e
sulla distribuzione FreeBSD 3.2, eredita l'
esperienza del NextStep (mitico
sistema operativo per il computer Next ideato una decina d'
anni fa dallo
stesso Steve Jobs) ed è il cuore dell'
imminente Mac OS X.
221
• "Qual’è l’ultima versione di Linux?"
oppure
• "Quale versione devo installare?"
222
9
0
• http://www.linuxbase.org
• http://www.unitedlinux.com
223
9
0 – %
http://www.redhat.com
RedHat. Questa distribuzione, che è alla base di
moltissime altre distribuzioni, sembra essere una
delle più complete nel panorama Linux anche se,
per ciò che molti chiamano "commercializzazione",
sembra che l’eccessiva fretta nel rilasciare nuove
versioni con software aggiornato porti spesso ad un
numero troppo alto di bug che risultano molto
fastidiosi soprattutto all’utente finale.
224
9
0 + $
http://www.debian.org
Debian è la distribuzione che meglio incarna la filosofia
del software open source. I cd ufficiali, infatti, contengono
solamente software protetto da licenza GPL o equivalente.
Debian, oltre che un’ottima distribuzione è la
dimostrazione di come con il solo software libero sia
possibile allestire server completi e, negli ultimi periodi,
anche avere un’ottima stazione di lavoro per i compiti di
tutti i giorni.
Un elemento penalizzante è la presenza di un tool di
installazione giudicato troppo complesso e la mancanza di
strumenti che rendano facili l’amministrazione del sistema.
La versione completa contiene più di 4000 programmi
225
9
0 +
http://www.suse.de
SuSE: buona distribuzione corredata dal maggior
numero di applicazioni. Inoltre, cosa non di poco
conto, è corredata di un tool (YAST, acronimo per
’Yet Another Setup Tool’, ossia “l’ennesimo tool di
setup”) che permette sia una facile installazione
agli utenti poco esperti che una veloce
amministrazione agli utenti più smaliziati, che
comunque sembrano sempre preferire il lavoro
fatto a mano.
226
9
0 +
#!
http://www.slackware.com
Slackware: la preferita dai più esperti per la
mancanza quasi totale di tools di
configurazione: tutto il lavoro deve essere
svolto manualmente, un vero incubo!
Il lato positivo è comunque che, se si sa
come agire per configurare il sistema, si
avrà sempre tutto sotto il massimo controllo.
227
•
•
•
•
•
•
SUN Microsystem
Molti prodotti SUN sono già compatibili con LINUX
Chiamate API identiche a LINUX
Porting immediato tra i due sistemi
Prossimo supporto a Gnome2
Server della famiglia “Cobalt”:
228
• Alcune caratteristiche:
–
–
–
–
–
–
–
Hardware supportato: SPARC, INTEL, Cyrix, AMD
Max numero di processori: 64
Kernel a 64 bit
POSIX compatibile
UFS
Emulatore per Digital UNIX
Tipo di OS: proprietario System V, Release 4based
– Versione descritta: 8
– Ultima versione: 9
229
&
•
•
•
•
0
Silicon Grafics (OpenGL)
Dedicato alla grafica
Architettura MIPS
Workstation più famose: Origin, Octane
230
&
0
• Alcune caratteristiche:
Max numero processori: 128
Fino a 256 GB di memoria condivisa
Fino a 80 GB/s di I/O bandwidth
Kernel a 64 bit
XFS
Interfaccia grafica: IRIX Interactive Desktop
Ultima versione: 6.5
Certificazione della Open Group UNIX 95.
Include alcune caratteristiche UNIX 98
Continua a basarsi sul UNIX System V relase 4
IRIX 6.5 è certificato per POSIX 1003.1, e 1003.3
Open GL 1.1
231
&
0
IRIX e’ un sistema operativo basato su UNIX
System V Relase 4, per tutte le piattaforme
Silicon Graphics®, introdotto nel 1994 .
Questo sistema è particolarmente conosciuto in
ambito creativo (animazione 3D), medicale e
in tutti quegli usi "mission-critical", dove dalla
potenza e stabilità dei sistemi dipendono
spesso le rese economiche e delle volte la
sicurezza delle persone.
232
'
Architettura del kernel derivata dal "System V", migliore rispetto a
Solaris nel supporto di tecnologie multimediali quali streaming web
(in caso di uso come server) ed accelerazione OpenGL.
Principali linguaggi di programmazione supportati con relativi
compilatori sempre molto aggiornati (anche dal sito SGI)
capacità totale di multitasking (gestione di più processi
contemporaneamente in maniera uniforme) e supporto a sistemi di
visualizzazione avanzati (multimonitor e sistemi particolari come i
visualizzatori per simulazioni 3D che SGI produce);
Supporto dei vari protocolli di rete e possibilità di utilizzare in
diretta (via scheda PCI) adattatori per le reti in fibra ottica aziendali
(ideali lavori pesanti come rendering e simulazioni in clustering)
Supporto al clustering, si riescono a gestire senza troppi sforzi
grossi insiemi di Workstation.
233
!
IRIX gira solamente su macchine SGI
Costo dell'
hardware è elevato
Di particolare interesse sono le “schede
grafiche” se così si può chiamarle, dalle
capacità fenomenali nell'
applicazione di
complessi effetti in "tempo reale" su filmati,
animazioni 3d etc... tutto rigorosamente
senza compressione, vista la grandiosa
capacità delle WS SGI di lavorare
tranquillamente su file di 10 GB o più.
234
SMP(Symmetric MultiProcessing) tramite il
supporto di 128 processori. Attraverso l’uso
di: scheduling innovativo, aumento della
memoria virtuale.
Il SO di Silicon Graphics non ha rivali in
quanto a grandi performance e soluzioni
scalabili. L’efficienza dei processi paralleli, la
grande larghezza di banda in I/O, e le alte
prestazioni in ambito grafico sono gli elementi
essenziali di queste prestazioni in scalabilità.
235
4
/
XFS:filesystem a 64-bit. XFS garantisce fast recovery e
l’integrità del filesystem attraverso la tecnologia di
journaling (letteralmente, giornale di bordo).
XFS supporta:
Filesystem virtualmente illimitato e grandezza dei file
provata ad oggi sulle centinaia di terabyte, la capacità
di espansione è di un fattore cento volte superiore a
quello provato.
Milioni di file in una singola directory.
Blocchi logici di grandezza tra 512 byte e 64KB.
Immagazzinamento e restore parallelo.
I/O rate garantito, abilitazione a riservare una certa
quantità di banda per o da il filesystem.
Scalable Hierarchical Storage Management (HSM), il
quale amministra oltre un petabyte o più di dati in uso.
236
à
• Numero di processori:
– IRIX: 128
– HP-UX: 128
– SOLARIS: 64
– OS/2: 64
– MAC OS X: 32
– AIX: 24 (nel modello S80)
237
238
239
240
241
%
• Ogni sistema ha i suoi punti di forza:
– IRIX
• Il più omogeneo
• Dedicato alla grafica
• Miglior scalabilità orizzontale
– AIX
• In parità se si considera la scalabilità verticale e il costo
complessivo dei sistemi e non solo degli OS
• Migliori caratteristiche per la rete
– SOLARIS
• Supporto multi-architetture (l’unico che potrebbe girare su un
PC di casa)
• Molti comandi di amministrazione
242
• Difetti:
– IRIX
• Il peggiore dei tre per i servizi internet
• Dedicato ad applicazioni grafiche, quindi un po’ meno
performante in altri campi
– AIX
• La peggior scalabilità orizzontale nonostante sia prodotto da
IBM (che comunque sopperisce con la scalabilità verticale)
– SOLARIS
• Il peggior supporto ai File System
• Prodotto meno legato dei tre all’hardware su cui gira, lo si
vede anche dal prezzo del sistema operativo
243
<
:
%
)<:%*
• Tutte le utility che preparano un HD per la
definizione di dischi logici, scrivono un
settore di dati, chiamato Master Boot
Record (MBR) sul primo settore di un HD,
cioè quello che ha come indirizzo:
cilindro 0, testa 0, settore 1
244
<:%
• MBR 512 byte
• Nei primi 448 byte, un codice eseguibile (cioè
un piccolo programma), e successivamente
una tabella di quattro record, ciascuno da 16
byte - totale 64 byte.
• Questa tabella contiene i dati relativi alle
partizioni create sull’HD, definisce la
locazione della partizione primaria, quella da
cui il PC si può avviare.
245
:
• Quando un PC si avvia, il primo codice,
programma, che viene eseguito è il BIOS.
• Questo chip di memoria prende poi il nome di
Eprom, Flash Eprom, perché è una “erasable
programmable read only memory”, cioè un chip di
memoria riscrivibile con adatti programmi che
permettono l’upgrade del BIOS.
• Dopo le routine di base del BIOS si ha come
istruzione quella di puntare al:
cilindro 0, testa 0, settore 1
del primo HD presente sul computer
246
:
• quindi al MBR; allora il BIOS legge il contenuto
del MBR e trasferisce il controllo al codice
scritto nella prima parte del MBR (i 448 bytes
di cui abbiamo parlato prima).
• Il codice scritto nel MBR effettua uno scan
della tabella delle partizioni, costituita dai 4
record da 16 byte e localizza la prima
partizione primaria marcata con la flag di
partizione avviabile
247
:
• Appena il codice dell’MBR trova una
partizione così marcata, viene letto in memoria
il primo settore di tale partizione ed eseguito il
codice presente in questo settore che
costituisce alla fine il boot sector, cioè il
settore di boot vero e proprio, quello che in
definitiva provvede ad avviare il Sistema
Operativo presente
248
249
'
?1
• Sono quattro perché la struttura iniziale del DOS,
prevedeva un numero massimo di quattro
partizioni primarie possibili da impostare.
• Nella struttura del MBR sono previsti solo quattro
record ciascuno da 16 byte per la descrizione delle
partizioni.
• Per aderire strettamente alle regole delle chiamate
dell’INT 13 del BIOS. Questo significa che le
indicazioni esatte del MBR sono limitate alle
condizioni dei 1024 cilindri, 256 teste, 63
settori/traccia, cioè in pratica all’indicazione di una
capacità pari a:
1024*256*63*512=8.064 MB=7,87 GB.
250
'
?1
• Il BIOS fornisce le routine di I/O su disco
attraverso l'
INT13 che prevedono come
ingresso la terna (c,h,s)
• Tale terna viene codificata su tre byte in cui 10
bit sono per il numero dei cilindri, 8 per le
testine e 6 per il numero dei settori (numerati da
1 a 63). Da ciò risulta come il numero dei cilindri
possa variare da 0 a 1023 e come il BIOS non
sia in grado di indirizzare più di 1024 cilindri.
251
:
•
•
•
•
•
•
•
Per superare questo problema il controller degli hard disk mente sulla geometria e
traduce gli indirizzi dati dal computer in qualcosa di adatto
L'
indirizzamento lineare astrae completamente dalla struttura a dischi e testine perchè il
dispositivo viene visto semplicemente come una sequenza lineare di settori. Un settore è
identificato per mezzo di una sola coordinata. Il concetto di geometria è assente e il
sistema di indirizzamneto si applica bene a qualsiasi dispositivo di memoria di massa
perchè è indipendente dalla tecnologia. Come nel caso del CHS, il software (sistema
operativo) può fare l'
accesso diretto all'
hardware, o tramite BIOS.
Alla tipica interfaccia hardware questo indirizzo è lungo 28 bit, con valori da 0 fino a 2281, permette di indirizare fino a 228 = 268435456 settori e quindi supporta capacità del
disco fino a 128 GiB ~ 137 GB.
I dischi più grandi di 137 GB hanno interfacce hardware a 48 bit. Queste supportano
indirizzi da 0 fino a 248-1, possono indirizare fino a 248 settori e quindi supportano
capacità del disco fino a 128 PiB ~ 144 PB.
L'
interfaccia BIOS estesa supporta teoricamente un indirizzo di 64 bit, con valori da 0 fino
a 264-1, permette di indirizzare fino a 264 settori e quindi supporta capacità del disco fino
a 8192 EiB ~ 9445 EB.
L'
indirizzamento LBA è necessario per sfruttare per intero i dischi più grandi di 8.5 GB e
deve essere supportato anche dal sistema operativo.
Gli indirizzi LBA più lunghi di 28 bit non sempre sono supportati al livello di sistema
operativo. In questi casi non si potrà sfruttare l'
intera capienza di un disco più grande di
137 GB.
252
$
! "
253
• Ad ogni carattere (simbolo) dobbiamo
assegnare una sequenza binaria
• Questo dipende dal codice utilizzato:
– ASCII (American Standard Code for
Information Interchange)
• Standard (7 bit)
• Esteso (8 bit)
– EBCDIC (Extended Binary Coded Decimal
Interchange Code) 8 bit
– UNICODE (UNIversal CODE) 16 bit
254
4
/
• Il file system è il modo con cui il sistema
operativo gestisce la memorizzazione e
organizza i dati sui dischi e sui vari
supporti di memoria di massa.
• L’organizzazione di questo dipende dalla
sua struttura interna che dipende dal
tipo di FS.
• La struttura interna di organizzazione dei
dati (data) viene chiamata meta-data.
255
&
• Abbiamo detto che un settore contiene 512 byte e
che il settore è la più piccola unità della superficie di
un disco rigido. Però, molto spesso, un settore è
“troppo piccolo” per essere gestito nel filesystem.
• Ad esempio, il DOS aveva un filesystem a 16 bit e
quindi poteva utilizzare 216 unità di disco alla volta.
• Una unità di disco può però essere un settore o un
insieme (cluster) di settori. Ciò vuol dire che il DOS
poteva gestire 65536 (216) "oggetti" i quali a loro volta
possono essere costituiti da 2 o più settori fisici di
disco. Appare evidente che affinché il DOS potesse
gestire i cluster di settori, da qualche parte doveva
esser scritta la relazione tra questi ed il numero di
settori fisici del disco che vi appartengono.
256
$
Frammentazione interna
– Il blocco logico è la più piccola unità di allocazione
presentata dal file system tramite chiamate di sistema. Ciò
significa che scrivere in un file meno byte di quanto potrebbe
contenere un blocco logico porta alla allocazione dell'intero
blocco.
Quindi se la dimensione del file non è un multiplo esatto di
quella del blocco:
(dimensione file MOD dimensione blocco != 0), il file system
alloca un nuovo blocco che non sarà usato completamente,
causando quindi uno spreco di spazio. Questo spreco di
spazio è detto frammentazione interna. Si noti che in
genere più grande è il blocco logico, maggiore è la
frammentazione interna.
257
$
Frammentazione esterna
– La frammentazione esterna è la situazione in cui
i blocchi logici allocati per un particolare file
sono sparsi su tutto il disco, rendendo più lente
le operazioni su quel file dal momento che si
rendono necessari più spostamenti della testina
dell'hard disk.
258
4
•
•
•
•
•
•
•
•
/
FAT16 – FAT32 - VFAT
NTFS
HPFS
Ext2
ReiserFS
Ext3
JFS
XFS
259
&
B
• write-cache: parte della RAM usata come
buffer per rendere più veloci le operazioni di
I/O.
• Un problema si presenta nel caso in cui il
sistema vada in crash nell'intervallo tra la
scrittura nel buffer e l'
aggiornamento del
disco: ciò causerebbe incoerenze al riavvio.
• Pensate ad un file che appare cancellato
nella cache, ma che rimane ancora nel disco.
260
>
• Questa è la ragione per cui file system e database
devono avere un modo per riportare il sistema di
nuovo in uno stato di coerenza. Sebbene i
database abbiano sviluppato da anni tecniche di
recover rapide, i file system in generale e quelli
derivati dall'
UFS in particolare tendono a
necessitare di tempi di recover che crescono con
la crescita delle dimensioni.
• Questa è la ragione principale per la quale si ha la
necessità che i file system ereditino la tecnologia di
recover dei database.
261
4
• La FAT venne inventata da Bill Gates e Marc
McDonald nel 1977 come metodo di gestione
dello spazio su disco per il Microsoft Disk Basic
• Deriva sia dai primi linguaggi di programmazione
prodotti da Microsoft sia dal sistema operativo
CP/M scritto in origine da Digital Research per i
microcomputer basati su 8080 e Z80.
Da entrambi i progenitori ha ereditato
caratteristiche che si sono via via tramutate in
difetti all'
approssimarsi di questa nuova era
caratterizzata da multitasking, modalità protetta,
memoria virtuale ed enormi dischi fissi.
262
4
• La FAT si basa sulla Tabella di Allocazione
dei File, da cui prende il nome.
Ogni volume logico ha la sua FAT che
svolge due importanti funzioni:
– contiene le informazioni sull'
allocazione di ogni
file del volume sotto forma di liste collegate di
unità d'
allocazione (cluster di settori, multipli di
potenze di due)
– indica quali unità d'
allocazione sono disponibili
per la creazione di un nuovo file o l'
estensione
di uno esistente
263
4
• La FAT, quando venne concepita, era un metodo
intelligente di gestione dei dischi, soprattutto
perché i floppy su cui era utilizzata difficilmente
avevano una dimensione superiore al megabyte
• Troppo grande per i dischi
• Frammentazione dei file
• I nomi dei file (File Control Blocks)
• La FAT usa liste lineari, per cui la ricerca di un
file, che abbia successo o meno, prevede sempre
il dover scorrere tutta la lista.
264
4
,6
• Poiché gli elementi della FAT sono di lunghezza fissa,
pari a 16 bit, non è possibile indirizzare più di 65535
cluster e poiché un cluster non può essere maggiore di
32768 byte, il filesystem ha un limite massimo superiore
di 2 Gbytes per la dimensione della partizione.
• La dimensione del cluster (che deve essere un multiplo
intero della dimensione del blocco fisico con
moltiplicatore pari ad una potenza di due) viene scelta
pari alla minima dimensione che consenta un numero di
cluster non superiore a 65535 ed è fissata al momento
della formattazione.
265
4
,6
• Quindi, poiché il filesystem non è in grado di gestire la
frammentazione di cluster, come invece avviene nel
filesystem ext2, all'
aumentare della dimensione delle
partizioni corrisponde una dimensione del cluster maggiore
e di conseguenza una sempre minore efficienza di uso
dello spazio, in quanto l'
ultimo cluster di ogni file è in
genere solo parzialmente utilizzato (in media resta
inutilizzato uno spazio pari alla metà della dimensione del
cluster per ogni file).
• Le due limitazioni citate hanno portato all'
introduzione, a
partire dalla seconda release del sistema operativo
Windows 95 (e in quelli successivi), della versione a 32 bit
della FAT (FAT32) che sostanzialmente mantiene la stessa
struttura, ma utilizza elementi a 32 bit, anziché a 16,
consentendo di definire cluster non superiori a 4 Kbyte
anche per dischi di grandi dimensioni.
266
( 4
• Questo filesystem venne studiato per
risolvere i problemi con le precedenti
versioni FAT16 e FAT32:
– Nessuna protezione di accesso ai file
– Limitazione nella dimensione massima del
volume
– Frammentazione interna
– Spreco di spazio
267
(
4
/
• Stabile e veloce
• Nessun settore particolare come in FAT e
HPFS
• Viene mantenuto un registro sulle transazioni
effettuate sul file system
• Esistono copie multiple del Master File Table
• Supporta standard POSIX
• Sconsigliato per capacità inferiori ai 500 MB
268
( !
'
/ 4
)( 4 *
/
• Supporta FAT e HPFS
• supporta un sistema di sicurezza a livello di file e
directory molto granulare
• lo schema di allocazione di NTFS può
indirizzare efficacemente dischi rigidi di notevoli
dimensioni
• supporta la codifica Unicode per gli ambiti
internazionali
(16 bit)
• ha caratteristiche per prevenire la corruzione di
file e del file system in caso di guasto
• Tutti i file system Windows dividono le partizioni
dei dischi in unità logiche dette cluster
269
( !
'
/ 4
)( 4 *
/
• capacità di supportare autonomamente la
crittazione dei dati
– NTFS non fa direttamente la codifica.
– EFS (Encrypting File System). Quando un
utente vuole crittare un file, NTFS passa i dati
a EFS che usando il DES crittografa il file.
• supporta nativamente la gestione delle
quote per singolo utente
270
( 4
• FAT usa 16 bit per indirizzare cluster,
216
o 65536 cluster diversi
• I cluster possono variare in dimensione a
seconda della dimensione del disco, ma
cluster molto grandi possono portare come
risultato a un problema di frammentazione.
• Un disco NTFS invece indirizza i cluster con
un indirizzamento a 64 bit.
271
&
( 4
• In NTFS è presente un sistema di logging
di transazioni: quando una modifica deve
essere effettuata, NTFS ne tiene traccia in
un file speciale di log. Se il sistema va in
crash, NTFS può esaminare il file di log e
usarlo per riportare ad uno stato
consistente il sistema con il minimo
possibile di dati persi.
272
( 4
• Le informazioni associate al disk management
(spazio libero/usato, cluster utilizzati/danneggiati
ecc) sono registrate all’interno del disco come file
speciali.
– I dati registrati all’interno di questi file e tutte le
informazioni inerenti all’NTFS all’interno dei file utente e
delle directory vengono detti metadata.
• Quando si inizializza un disco con file system
NTFS, vengono creati 11 metadata file.
273
&
$MFT
Master File Table
$MFTMIRR
Copia dei primi 16 record di MFT
$LOGFILE
File di transizione per il logging
$VOLUME
Numero seriale del volume, ora di creazione
$ATTRDEF
Contiene informazioni sugli attributi
.
Root directory
$BITMAP
Mappa dei cluster del drive
$BOOT
Il boot record del drive
$BADCLUS
Elenca i cluster danneggiati
$QUOTA
Informazioni per la quota dell'
utente
$UPCASE
Tabella Uppercase Unicode
274
&
• la struttura interna di NTFS è organizzata come
un B+Tree per:
– garantire che la distanza tra la radice dell’albero e le
foglie sia minore o al massimo uguale a logn
– eliminare il costo della riorganizzazione della struttura
– all’interno dell’albero della struttura, ogni nodo
directory mantiene copia di alcuni attributi della master
file table per ottimizzare le operazioni di listing
275
0
• insiemi di blocchi logici contigui utilizzati da
alcuni file system
• Migliorano la gestione dello spazio di
memorizzazione, in quanto tutti i blocchi
all'
interno di un extent sono contigui
• Migliori tempi di accesso, poiché si rendono
necessari meno movimenti della testina
• Forniscono anche un modo di organizzare
efficientemente grandi quantità di spazio
libero contiguo
276
• ecco come potrebbe apparire un disco appena
formattato con NTFS.
• oltre allo spazio lasciato libero, vi sono tre aree che
vengono occupate subito dopo la formattazione dal
file boot, dal file $mft ed un’area more meta data
277
<
4
)<4 *
• E’ una sequenza di file record da 1 kB
• Analoga alla FAT, mappa tutti i file e le
directory sul disco, inclusi i metadata file
dell’NTFS stesso.
• Infatti, i primi 16 record mappano i metafile
di sistema
• MFT è un file che NTFS mappa usando dei
record all’interno della MFT stessa. Questa
struttura lascia la possibilità alla MFT di
espandersi oppure di restringersi.
278
<4
• Dato che la MFT è un file residente su
volume NTFS esso può ingrandirsi e
rimpicciolirsi e quindi frammentarsi.
• Per evitare la frammentazione, NTFS crea
una regione di cluster attorno alla fine
della MFT dove file e directory normali non
possono essere memorizzati.
279
&
<4
• piccola intestazione (header) che contiene
informazioni di base sul record, seguite da uno o
più attributi che descrivono le caratteristiche del
file o della directory che corrispondono al record
• I dati presenti nell’header includono:
– numeri di sequenza che NTFS usa per una verifica di
integrità
– un puntatore al primo attributo nel record
– un puntatore al primo byte libero nel record
– il numero del record di base della MFT del file in esame,
se il record esaminato non è il primo.
280
&
C<4 <&%%
• Il file $MFTMIRR è un file di complemento, in
caso di disastri al file system, per la
prevenzione di perdita di dati. Esso contiene la
copia dei primi 16 record della MFT.
• NTFS lo registra a metà del disco circa mentre
la MFT è all’inizio dello stesso. Se NTFS ha un
problema nella lettura di MFT, esso si riferisce
al duplicato.
• La locazione della MFT e della sua copia sono
registrate nel boot record del disco
281
• NTFS usa gli attributi per immagazzinare
tutte le informazioni sui file e sulle
directory
• Sul disco gli attributi sono divisi in due
componenti logiche:
– un header
– parte dati
• Un attributo si dice residente quando la
parte dati è memorizzata all’interno del
record della MFT
282
&
• Un file è definito come un insieme di
attributi.
• Il contenuto è un attributo
• Se un file possiede molti attributi
oppure è di dimensioni elevate
vengono utilizzate una o più
estensioni contigue su disco puntate
da un puntatore da uno o più record
memorizzati nella MFT
283
• Se un file ha troppi attributi che non possono essere
registrati all’interno di un singolo record della MFT:
– NTFS alloca record addizionali
– registra la lista degli attributi nel record base.
– La lista degli attributi punta alla locazione degli
attributi nei record addizionali e consiste di un
valore per ogni attributo.
• Se NTFS deve memorizzare la parte dati di un
attributo al di fuori della MFT:
– l’header dell’attributo contiene informazioni che
localizzano le informazioni sul disco
284
•
•
•
•
•
•
•
•
•
•
•
•
•
•
$STANDARD_INFORMATION
$ATTRIBUTE_LIST
$FILE_NAME
$VOLUME_VERSION
$SECURITY_DESCRIPTOR
$VOLUME_NAME
$VOLUME_INFORMATION
$DATA
$INDEX_ROOT
$INDEX_ALLOCATION
$BITMAP
$SYMBOLIC_LINK
$EA_INFORMATION
$EA
285
• In caso di errore in lettura NTFS
– identifica il cluster come danneggiato
– procede alla rilocazione dei dati presenti su quel cluster
– aggiorna il metadata file $BADCLUS in modo tale da
evitare di riutilizzare lo stesso cluster in futuro.
• Il metadata file $BITMAP è un grande array di bit in
cui ogni bit corrisponde a un cluster sul disco.
– Off: il cluster risulta libero
– On: in uso
• Questo file è mantenuto per tener traccia dei cluster
liberi su disco per l’allocazione di nuovo spazio.
286
/
• Una directory per NTFS è un indice di attributi di
file.
• Quando queste informazioni posso essere
contenute interamente in un record della MFT,
l’index root, (un tipo di attributo: $INDEX_ROOT)
descrive la locazione dei valori nel record.
Quando una directory cresce, le informazioni
necessarie a descriverla possono superare il
record della MFT assegnato.
– In questo caso, NTFS alloca un index buffer per
memorizzare informazioni addizionali. L’header
dell’attributo indice specifica la locazione di un buffer.
287
&
• Dato che file e directory (inclusi i file di metadati NTFS)
cambiano, NTFS scrive delle informazioni nei file log del
volume (Redo e Undo).
• REDO
– memorizza le informazioni riguardanti modifiche che devono
essere rifatte in caso di guasto al sistema e i dati modificati non
sono sul disco.
• UNDO
– fa un roll back delle modifiche fatte che non erano state completate
quando è capitato il crash
• La dimensione dei due file di log è basata sulla dimensione del disco e
comunque varia fra i 2MB e i 4MB.
• NTFS fa un reset delle informazioni contenute nei due file
di log una volta ogni 5 secondi.
288
# $
$
$%
$
& '
289
<
• Installable File System Kit (IFS)
– http://www.microsoft.com/whdc/ddk/IFSkit/default.mspx/
• Grazie a terzi sono presenti nel mercato
vari driver che portano a Windows 2000 il
supporto per vari file system (ext2, HPFS,
ecc)
290
"(&@ 4
/
)"4 *
Il nome del file system che SCO, System V e
qualche altro UNIX usavano in principio.
La maggior parte degli Unix continua ad usare
UFS, migliorato dai rispettivi proprietari.
291
0
• Nel kernel versione 2.6 sono supportati oltre 30 file
system.
• Non supporta ancora EFS di Microsoft
• Per garantire la sicurezza dei dati memorizzati
esistono vari supporti:
– Steganografico: VS3FS
– Crittografico: CFS, SFS CryptFS e TCFS
• uno strumento da un linguaggio di alto livello che
permette di descrivere il comportamento di file
system
– http://www.filesystems.org/
292
7
4
/
)74 *
• livello del kernel che provvede una interfaccia di
programmazione unificata per i servizi del file
system, in maniera trasparente rispetto al tipo di
file system in cui il file risiede.
• Tutte le implementazioni di filesystem (vfat,
ext2fs, jfs, etc) devono quindi fornire al VFS
alcune routine di accesso per essere utilizzabili
sotto Linux.
• VFS è il livello del kernel che rende i programmi
capaci di comprendere tanti diversi file system.
293
4
/
"
0
• Ogni partizione UNIX contiene un file system.
• Nei file system UNIX, il blocco 0 è il blocco di avvio e il
blocco 1 è il superblocco, che contiene informazioni sul file
system (numero totale di blocchi, numero di i-node, lista
blocchi liberi…).
• Seguono quindi gli i-node, che descrivono un file mediante
i metadati e i puntatori ai blocchi dati.
294
struct ext2_super_block {
__u32 s_inodes_count;
/* Inodes count */
__u32 s_blocks_count;
/* Blocks count */
__u32 s_r_blocks_count;
/* Reserved blocks count */
__u32 s_free_blocks_count; /* Free blocks count */
__u32 s_free_inodes_count; /* Free inodes count */
__u32 s_first_data_block; /* First Data Block */
__u32 s_log_block_size;
/* Block size */
__s32 s_log_frag_size;
/* Fragment size */
__u32 s_blocks_per_group; /* # Blocks per group */
__u32 s_frags_per_group;
/* # Fragments per group */
__u32 s_inodes_per_group; /* # Inodes per group */
__u32 s_mtime;
/* Mount time */
__u32 s_wtime;
/* Write time */
__u16 s_mnt_count;
/* Mount count */
__s16 s_max_mnt_count;
/* Maximal mount count */
__u16 s_magic;
/* Magic signature */
__u16 s_state;
/* File system state */
__u16 s_errors;
/* Behaviour when detecting errors */
__u16 s_pad;
__u32 s_lastcheck;
/* time of last check */
__u32 s_checkinterval;
/* max. time between checks */
__u32 s_creator_os;
/* OS */
__u32 s_rev_level;
/* Revision level */
__u16 s_def_resuid;
/* Default uid for reserved blocks */
__u16 s_def_resgid;
/* Default gid for reserved blocks */
__u32 s_reserved[235];
/* Padding to the end of the block */
};
295
#
• Si può notare che in esso sono contenuti tre tipi
fondamentali di informazioni:
– Caratteristiche del filesystem (dimensioni, struttura, magic
number, ecc.)
– Parametri modificabili (maximal mount count, error behaviour,
ecc.)
– Variabili di stato (file system state, free blocks, mount count, ecc.)
• Le caratteristiche del filesystem, che ne descrivono la
struttura logica, sono stabilite al momento della creazione
e non possono in seguito più essere modificate, per
esempio la dimensione dei blocchi, il numero di blocchi, il
numero di inode.
• Una delle caratteristiche non modificabili è ovviamente la
dimensione dei blocchi. Il default è 1024 byte, ma può
essere conveniente in certi casi utilizzare una dimensione
maggiore.
296
#
• Per esempio utilizzando blocchi da 4096 byte si riduce il
numero di blocchi aggiuntivi necessari ad indirizzare i
blocchi di dati dei file, ma si aumenta lo spazio medio non
utilizzato nell'
ultimo blocco di ciascun file
(frammentazione interna).
• Una scelta in questo senso può essere vantaggiosa se il
filesystem deve contenere file abbastanza grossi, per
esempio un server di streaming, oppure se viene
utilizzato da una applicazione come Postgres, un
database relazionale, che legge e scrive sempre pagine
di 8192 byte. In tal caso è conveniente adottare una
dimensione del blocco di 4096 byte, più vicina alla
dimensione della pagina.
297
#
• I parametri modificabili possono invece venire
cambiati dal superuser con il programma
tune2fs, che permette di variare per esempio
il numero massimo di volte che il fs può
essere rimontato prima di forzare un fsck
automatico, oppure il comportamento in caso
di errore.
• Un interessante parametro modificabile è la
percentuale di spazio che può essere
riservata ad un utente privilegiato,
normalmente root.
298
/
• Il filesystem ext2 è suddiviso logicamente in più parti, dette
cylinder group, che vengono gestite come entità separate
ed autonome pur facendo parte dello stesso fs.
• Lo scopo di questa suddivisione è duplice.
– fare sì che se alcuni dati di un cylinder group risultano corrotti il
danno resti limitato all'
interno del cylinder group stesso e non si
propaghi a tutto il fs.
– Il secondo motivo è invece la tendenza a localizzare i file
nell'
intorno delle loro directory per ridurre i tempi di accesso, cosa
che viene ottenuta cercando di allocare inode e blocchi nello stesso
cylinder group delle directory.
• Per ridurre ulteriormente le possibilità che un intero
filesystem venga corrotto a causa di eventuali errori, sia il
super_block che le group descriptor table vengono duplicati
in ogni cylinder group
299
&+
• Un i-node è la struttura usata da UFS ed ext2fs per
conservare le informazioni relative a ogni file.
Nell'
i-node sono mantenuti i permessi di accesso
al file, il tipo file ecc.
• Il problema di questa tecnica di indirizzamento è
che con file di dimensioni sempre maggiori si
devono usare appunto puntatori di primo, secondo
e anche terzo livello: in tal modo l'uso di puntatori
indiretti comporta un maggior numero di accessi al
disco, dal momento che sono necessari più blocchi
di controllo per raggiungere i blocchi contenenti i
dati richiesti.
300
"4
0 -
301
302
'
1
• Perché gli ideatori dell'
ext2fs non hanno usato solo
puntatori diretti, dal momento che si sono rivelati
essere più veloci?
• Il motivo principale è che gli i-node hanno una
dimensione fissa
• L’uso esclusivo di puntatori diretti avrebbe reso
necessari i-node di dimensioni tali da poter
contenere il numero massimo di blocchi che si
sarebbero potuti usare per un singolo file,
comportando un notevole spreco di spazio per file
di piccole dimensioni.
303
$
/
• Una directory è un file come tutti gli altri, con l'
unica
differenza che i dati in esso contenuti sono le informazioni
sui file nella directory, e viene pertanto gestito in modo
particolare dal filesystem e dal kernel.
• Ciascuna entry di directory è costituita da un record di
lunghezza variabile allineata alla word (4 byte) contente
solamente il nome del file ed il numero di inode
corrispondente.
• Tutte le altre informazioni sul file non hanno niente a che
fare con la directory in cui esso è contenuto e sono
pertanto memorizzate nel suo inode.
• La directory serve solo a collegare il nome del file col suo
i-node
304
(
0 -
• La massima dimensione di un dispositivo a
blocchi limita la dimensione di un file
system a 2TB
• Esisteva un limite di 2GB nel VFS per la
dimensione dei file
305
…
0 .1
• Ext3fs non è file system di nuova concezione.
• Introdotto dal kernel 2.4.16
• Si basa su ext2fs, quindi non supporta nessuna
delle nuove tecniche
• Tramite Ext3fs si è dotato ext2fs di supporto per
il journaling, mantenendo la compatibilità
all'
indietro.
306
&
#
• Nel boot di un sistema Linux, fsck fa un controllo
di tutti i file system installati
• Dopo uno shutdown i file system vengono
smontati correttamente
• Se avviene un crash i metadati potrebbero
trovarsi in uno stato inconsistente
– Fsck inizia scansione esaustiva e ricostruttiva dei metadati
– Sistema inutilizzabile finché non termina la scansione
– Inefficiente (40 GB -> 20 minuti)
307
0
• Tux2 ( http://people.nl.linux.org/~phillips/tux2 )
– Scritto a partire da ext2
– fornisce un metodo alternativo basato su
algoritmo chiamato "phase tree", che permette
di eliminare il degrado di prestazioni innescate
dal doppio processo di scrittura dei dati, tipico
dei file system journaled. Per riuscirvi, dati e
meta-dati sono immagazzinati in una struttura
ad albero che, solo una volta riempita, sarà
scritta su disco attraverso un unico blocco
308
%
4
– Progettato da Hans Reiser e dal suo
team dell’azienda software Namesys
– Completato ed inserito nella
distribuzione SuSe
– Primo file system journaled a
raggiungere una certa stabilità
– Usa una struttura B*Tree
– Efficiente nella gestione di piccoli file
309
• Fornire un recupero veloce in seguito ad un
guasto
– Aggiornamento transazione dei meta-dati
• Garantire ottime prestazioni nel caso di
gestione di grosse quantità di file di piccoli
dimensioni
– Tecnologia tail-packing
• Diminuire la frammentazione interna
– Memorizzazione dei tail assieme agli inode
310
'
•
•
•
•
•
Dimensioni blocchi da 4 a 64 K (default 4 K)
Allineamento dei limiti dei file ai blocchi
Allocazione dinamica degli inode
Struttura B*tree con tail-packing
Journaling dei soli meta-dati con schema
write ahead
311
'
• ReiserFS allinea i limiti dei file con i blocchi
– Permette di scrivere sul disco l’esatta dimensione del
file evitando di allocare spazio in più
• Vantaggi
– Riduzione del numero di blocchi in cui un file è
esteso
• Riduzione FRAMMENTAZIONE ESTERNA
– Blocchi totalmente occupati
• Riduzione FRAMMENTAZIONE INTERNA
– Non serve ottimizzare il packing dei nodi
312
• ReiserFS alloca gli inode dinamicamente
– Creati al momento della creazione dei file,
non al momento della creazione del file
system
• Vantaggi
– Non c’è un numero fisso di inode
– File system più flessibile
– Vantaggi sull’occupazione dello spazio
313
:
:*
– ReiserFS è basato su B*Tree (tecnologia derivata da
DB)
– Ogni informazione del file system è memorizzata nei
nodi dell’albero
– Progettati con un insieme di chiavi
• Scopo: ottimizzare la ricerca con queste chiavi
• Mappatura chiave-nodo al posto di n° inode-file
– Obiettivi
• Accedere e organizzare i dati in modo veloce e scalabile
• Ottimizzare la località di riferimento
• Packing degli oggetti per una gestione efficiente dello spazio
314
:
:*
• L’albero ha tre tipi di nodi
– Nodi Interni
– Nodi Formattati
-> puntatori ai sottoalberi
-> metadati e puntatori ai nodi non
formattati
– Nodi non Formattati -> corpo dei file
• Contenuto dei nodi interni e formattati
ordinati in base alle loro chiavi
• Nodi non formattati non contengono chiavi
315
"
;
9
)
&
;
*
!
&
&
<
<
• Ricerca parte dalla radice: in base alla chiave si
determina sottoalbero da esaminare
• Tutti i percorsi dalla radice alle foglie sono uguali in
lunghezza
• Albero sempre ben bilanciato: prestazioni elevate
316
(
4
>
=
? %#
;
#
&
? %+
;
+
? %&
;
&
.
1)
@
• Non contengono nessun dato relativo ai file
• Hanno l’unica funzionalità di ripartire i dati in
modo bilanciato per garantire una ricerca
efficiente
• La chiave che precede un puntatore ad un
sottoalbero è un duplicato della prima chiave del
primo nodo formattato di quel sottoalbero
317
(
4
>
=
!
>
#
!
>
4
+
!
>
&
.
1)
!
&
!
+
!
#
• Possono essere considerati le foglie dell’albero
bilanciato
• Punto di arrivo di un algoritmo di ricerca
• Gli elementi memorizzati sono divisi in una parte
di intestazione (head) e nel corpo dell’elemento
(item)
318
(
4
• Possono contenere 4 tipi di elementi:
– Elementi diretti, indiretti, di directory e data-stat
(metadati)
• Elementi diretti
– Tail di dimensione minore a quella di un blocco
• Elementi indiretti
– Puntatori ai nodi non formattati (e quindi a corpo del file)
• Elementi di directory
– Chiave della prima entry di directory seguita dal numero
di entry
• Dati-stat
– Tutti i metadati del file (tempo di accesso, permessi…)
319
(
4
--------------------------------C orpo del file----------------------------------
• Contengono tutti i dati effettivi dei file, tranne i tail
• Non contengono strutture particolari, possono
sembrare vuoti dall’esterno
• Costituiscono l’ultimo livello dell’albero bilanciato,
ma non sono coinvolti nelle operazioni di
bilanciamento
– Concettualmente non appartengono al B*Tree
320
– Tail = File o porzioni di file di dimensione minore di un
blocco del file system (default 4K)
– Tail non possono essere allineati ai blocchi
• Memorizzati assieme ad altri tail o oggetti del filesystem
– Tail risiedono nei nodi formattati (elementi diretti)
• Nello stesso nodo dei metadati (elementi dati stat)
corrispondenti
– Se un tail aumenta di dimensione deve essere spostato
in un nodo non formattato
321
• Vantaggi
– Tail memorizzati in modo adiacente ai rispettivi metadati
-> possono essere letti con una singola operazione di I/O su disco
– Possibilità di memorizzare più tail in un unico nodo foglia (tailpacking) salvando tantissimo spazio
– Un file system ReiserFS può memorizzare il 6% di dati in più
rispetto all’equivalente ext2.
• Problemi
– Tail-packing porta ad un degrado delle prestazioni in quanto
costringe ReiserFS al repacking dei dati quando i file vengono
modificati
– Tail-packing può essere disabilitato: scelta all’amministratore
322
'
• ReiserFS ricorre alla bitmap per registrare i blocchi
liberi
• Sequenza di bit: ogni bit corrisponde ad un blocco
logico all’interno della partizione
• Bit=1 significa che il blocco corrispondente è in uso
• Bit=0 significa che il blocco corrispondente è libero
• Problemi
– Crescita della bitmap proporzionale alla crescita del file system
– Con algoritmo sequenziale il tempo per la ricerca di un blocco libero
aumenta linearmente
323
%
4
• Crescita dei tail può portare ad un ribilanciamento
– Degrado delle prestazioni in caso di frequenti appends
• Una coda può essere estesa su 2 nodi
– Località di riferimento scarsa
• La separazione della coda dal corpo del file
aumenta la frammentazione esterna
– Peggioramento I/0
• Gestione di file di grandi dimensioni
• Registrazione blocchi liberi con bitmap
324
%
4
• ReiserFS risulta essere una buona scelta
per la gestione di grandi quantità di piccoli
file
– Esempio: migliaia di file di 1K
– Efficienza tail-packing
• B*Tree permettono una ricerca più
efficiente
– A scapito di saltuarie operazioni di ribilanciamento più
o meno onerose
325
B
4
/
– JFS è stato realizzato da IBM
– E’ un file system scalabile e robusto
– Prima apparizione si ha nel 1995
– Nel febbraio del 2000 viene rilasciato il primo
codice
– Progettato per sistemi orientati alle transazioni
326
'
– Assicura che se il sistema fallisce nessuna
transazione viene lasciata in uno stato
inconsistente
– Ogni transazione che modifica i meta-dati
viene registrata nel log
– Assicura il recupero della partizione in pochi
secondi
– Non garantisce che tutti i dati siano
completamente aggiornati dopo un crash
327
'
– Usa i B+tree
– Usa gli extent
– File system a 64 bit
– Non supporta i floppy disk come dispositivo di
base
– La dimensione minima è 16MByte
– La dimensione massima è compresa tra 512
TByte e 4 Pbyte
– La dimensione massima di un file dipende dal
VFS
328
$
• JSF permette agli utenti di ottimizzare
l’utilizzo dello spazio impostando la
dimensione del blocco
• Blocchi piccoli diminuiscono la quantità di
frammentazione interna
• La dimensione di blocco predefinita è 4096
Byte
329
4
$
/
• File
– Rappresentato da un inode
– Utilizzo di Extent
– Uso dei B+tree
– Supporta i file sparsi
• Directory
– Contiene entry che indicano gli oggetti contenuti
330
• JFS si separa dalla nozione di spazio di
allocazione del disco e usa il termine
aggregate.
• Ogni partizione può contenere un solo
aggragate che la rappresenta.
331
• Caratterizzato da:
– Grandezza dei blocchi
– 32KB di area riservata
– Primary e Secondary Aggragate Superblock
• Contengono informazioni sulle caratteristiche dell’aggregate
– Primary e Secondary Aggregate Inode Table
• Contiene gli inode che descrivono la struttura dell’aggregate
– Primary e Secondary Aggregate Inode Map (IAG)
• Contiene informazioni sull’allocazione degli inode aggregati
– Block Allocation Map
• Descrive la struttura di controllo per i blocchi liberi o allocati
– Working Space per fsck
– In-Line Log
• Spazio utilizzato per il logging dei cambiamenti ai meta-data
332
333
4
•
•
•
•
•
Struttura che gestisce un insieme di file e directory
Unità montabile indipendente
Completamente contenuto in un aggregate
Un aggregate può contenere più di un fileset
Composto da:
– Una Fileset Inode Table
• Contiene un array di Inode che descrivono la struttura di
controllo del fileset
– Una Fileset Inode Allocation Map
• Contiene le informazioni riguardanti lo stato di allocazione dei
nodi del fileset
334
4
335
B4
&
• Permette di rappresentare un oggetto,
come un file o una directory
• Occupa 512 Byte e contiene quattro
informazioni essenziali
– Attributi POSIX dell’oggetto JFS
– Attributi aggiuntivi per l’oggetto JFS
• Informazioni specifiche dell’ambiente OS
• intestazione B+tree
– Descrittori allocazione degli extent
• 8 strutture xad
– Attributi estesi, descrittori dell’allocazione
degli extent aggiuntivi
336
&
• Gli Inode vengono allocati dinamicamente:
– Vantaggi:
• Inode posizionati in qualsiasi indirizzo del disco, si
possono spostare facilmente
• Elimina la necessità di allocare lo spazio prima di
utilizzarlo
• Permette l’allocazione contigua dei dati
– Svantaggi:
• Servono strutture separate per la gestione delle
allocazioni (mapping degli inode)
• Le strutture di mapping sono critiche per l’integrità di
JFS, introducono overhead (replicazione)
337
• Inode Allocation Map
• Risolve il problema della ricerca in avanti
• La AG Free Inode List
• Risolve il problema della ricerca inversa
• La IAG Free List
• Risolve il problema della ricerca del numero di inode libero
• La AG Free Inode Extent List
• Struttura di supporto per problemi di ricerca
• La IAG Free Next
• Struttura di supporto per problemi di ricerca
• Access Contro List (ACL)
• Rappresenta i metodi di accesso agli oggetti di JFS
• Rappresenta permessi, identità di utenti e gruppi
• Extended Attribute (EA)
• Meccanismo di salvataggio e accesso a dati allegati ad un oggetto
JFS
338
– Ecco la lista delle operazioni che modificano i meta-data
del file system, provocandone la scrittura sul file di log:
•
•
•
•
•
•
•
•
•
Creazione di un file (create)
Linking (link)
Creazione di una directory (mkdir)
Creazione di nodi (mknod)
Rimozione di un link (unlink)
Rinomina (rename)
Rimozione di directory (rmdir)
Link simbolici (symlink)
Troncamento di file
– La grandezza del log è lo 0,4% della grandezza
dell’aggregate, con un massimo di 32MByte.
339
@4
• Log Manager: registra in modalità
seriale tutte le modifiche ai metadati.
• Buffer Cache Memory: una cache utile
per i file system di una macchina.
• Lock Manager: implementa il vincolo
dei file utente.
allocazione
• Space Manager: gestisce l'
dello spazio su disco all'
interno di un
file system.
• Attribute Manager: implementa le
operazioni relative agli attributi del file
system.
• Name Space Manager: implementa le
operazioni di denominazione del file
system, con conversione del percorso
in riferimenti a file.
340
•
•
Ciascun sottovolume dei dati è suddiviso in gruppi di
allocazione.
Ogni gruppo di allocazione è costituito da:
– Un superblocco nella posizione di byte zero;
– Un’intestazione del gruppo di allocazione, nel primo
blocco logico;
– I dati puntati dall’intestazione del gruppo di allocazione:
1.
2.
3.
4.
Numero magico dell’intestazione del gruppo di allocazione;
Numero di versione dell’intestazione del gruppo di allocazione;
Numero sequenziale del gruppo di allocazione;
Se si utilizza lo schema di allocazione a bitmap: la posizione e la
dimensione della bitmap dei blocchi liberi e le informazioni
riepilogative;
5. Se si utilizza lo schema di allocazione a due B-tree: la posizione di
ciascuna radice dei B-tree.
6. Posizione dell’inode contenente la tabella degli inode.
341
'
):
*
• Una bitmap effettua il monitoraggio di tutti i blocchi logici
presenti nel gruppo di allocazione, comprese le
informazioni dell’intestazione e la bitmap stessa.
• La bitmap è un singolo extent di blocchi logici.
• I suoi bit sono impostati per i blocchi liberi, e sono
disattivati per i blocchi allocati.
• Nella bitmap vengono memorizzate informazioni per la
ricerca di extent liberi di una certa dimensione.
• La bitmap si sposta solo se il file system viene ampliato
o compattato.
342
'
):+
•
•
•
•
*
Le informazioni di allocazione sono mantenute in una
coppia di B-Tree per ogni gruppo di allocazione.
Entrambi i B-Tree contengono le coppie come dati
(blocco libero iniziale, conteggio blocchi liberi) per tutti
gli extent liberi.
Un B-Tree è indicizzato dal blocco libero iniziale, l’altro
dal numero di blocchi liberi.
Fasi per l’allocazione di blocchi:
1.
2.
3.
4.
Ricerca di un B-Tree;
Aggiornamento di entrambi i B-Tree nel buffer;
Registrazione su log delle modifiche;
Rilascio del buffer e scrittura su disco.
343
• Gli inode sono indicizzati tramite un B-Tree per ogni
gruppo di allocazione.
• Il B-Tree rappresenta un “file” contenente tutto lo spazio
degli inode (per il gruppo di allocazione) e contiene il
riferimento al primo inode libero.
• Il B-Tree è indicizzato dal numero di inode.
• Gli inode sono collegati tra di loro tramite un campo
dell’inode.
• Gli inode vengono allocati in modo contiguo.
• Il numero di inode è diviso in due campi: numero del
gruppo di allocazione e numero di inode all’interno del
gruppo di allocazione.
344
%
4 D B4
Max dimensione
del file system
ReiserFS
JFS
XFS
4 giga di blocchi,
cioè max 256
Terabyte
@4
Dimensione
dei blocchi
Max dimensione di
un file
Fino a 64KB
4 GB, 2^10 petabyte
in ReiserFS (3.6.xx)
Con blocchi di 512
byte: 4 petabyte
Con blocchi di 4
KB: 32 petabyte
512, 1024,
2048, 4096
byte
18 mila petabyte
(18*10^18 byte )
Da 512 byte
fino a 64 KB
Con blocchi di 512
byte: 512 Terabyte
(512* 10^12 byte)
Con blocchi di 4KB:
4 petabyte
9 mila petabyte
345
%
4 D B4
@4
File
system
Gestione
dei
blocchi
liberi
Usa
extent
per lo
spazio
libero
?
Usa Btree
per gli
elementi di
directory?
Usa Btree
per
indirizzare
i blocchi
dei file?
Usa Extent
per
indirizzare
i blocchi
dei file
Conserva i
dati dei file
piccoli
all’interno
dell’inode?
Usa
allocazione
dinamica
degli
inode?
Usa
strutture
dinamiche
di
registrazio
ne degli
inode?
E’ dotato
di
support
o per i
file
sparsi?
ReiserF
S
Basata
su
Bitmap
Non
ancora
suppor
tata
Si
All’interno
dell’albero
principale
del file
system
Previsto
con la
versione 4
Si
Si
B*Tree
Si
JFS
B-Tree +
Binary
Buddy
No
Si
Si
Si
No
Si
B-Tree di
extent di
inode
Si
XFS
B-Tree o
Bitmap
Si
Si
Si
Si
Si
Si
B-Tree
Si
346
%
• http://e2fsprogs.sourceforge.net/ext2.html
• http://www.namesys.com/ (ReiserFS)
• http://oss.sgi.com/projects/xfs
• http://www-124.ibm.com/developerworks/opensource/jfs/
• http://penguin.cz/~mhi/fs/ (file system howto)
• http://aeschi.ch.eu.org/efs/
347
(
!
#
• Soprattutto nelle piccole aziende
l’amministratore di sistema è anche
l’amministratore di rete
• L’amministratore di sistema deve essere
anche un po’ amministratore di rete
348
(
!
#
• LAN, MAN, WAN
• Modello ISO/OSI
–
–
–
–
–
–
–
L1
L2
L3
L4
L5
L6
L7
Fisico
Datalink
Networking
Transport
Session
Presentation
Application
• Bridge, router, switch, hub, repeater
349
=2-E.
• Laboratori della Xerox ’72-’76
• Non è necessariamente la migliore delle
tecnologie possibili, ma si à dimostrata la
più economica e la più facile da utilizzare
• 1983 IEEE 802.3
• Limiti della rete
• VLAN
350
%B?3
• Diritto
1.
2.
3.
4.
5.
6.
7.
8.
Bianco-arancio
Arancio
Bianco-verde
Blu
Bianco-blu
Verde
Bianco-marrone
marrone
• Incrociato
1.
2.
3.
4.
5.
6.
7.
8.
Bianco-verde
verde
Bianco-arancio
Blu
Bianco-blu
arancio
Bianco-marrone
marrone
351
Router
Switch
Hub
352
(
!
#
• Gli indirizzi IP versione 4, sono composti da
una sequenza di 32 bit, suddivisi
convenzionalmente in quattro gruppi di
8 bit, e rappresentati in modo decimale
separati da un punto.
• All'
interno di un indirizzo del genere si
distinguono due parti: l'
indirizzo di rete e
l'
indirizzo del nodo particolare
353
(
#
• Il meccanismo utilizzato per distinguere la
parte dell'
indirizzo che identifica la rete è
quello della maschera di rete o netmask.
• La maschera di rete è un indirizzo che viene
abbinato all'
indirizzo IP da analizzare con
l'
operatore booleano AND, per filtrare la
parte di bit che interessano.
354
• 1.0.0.0 – 126.255.255.255
(127.0.0.0 indirizzi di loopback)
• 128.1.0.0 – 191.254.255.255
• 192.0.1.0 – 223.255.254.255
• 224.0.0.0 –239.255.255.255
• 240.0.0.0 – 254.255.255.255
355
• Classe A
• Classe B
• Classe C
N.H.H.H
N.N.H.H
N.N.N.H
356
&
•
•
•
•
•
0.0.0.0
default route
127.0.0.1
loopback, nodo immaginario
Classe A
10.0.0.0 – 10.255.255.255
Classe B
172.16.0.0 – 172.31.255.255
Classe C
192.168.0.0 – 192.168.255.255
357
(
• Classe A
• Classe B
• Classe C
#
255.0.0.0
255.255.0.0
255.255.255.0
358
(
#
BINARIO
DECIMALE
10 00 00 00
128
11 00 00 00
192
11 10 00 00
224
11 11 00 00
240
11 11 10 00
11 11 11 00
11 11 11 10
11 11 11 11
248
252
254
255
359
(
#
• AND
• Quando si fa l'
AND di qualsiasi byte
(numero) con 255, si ottiene
semplicemente lo stesso numero.
• Se prendiamo l'
indirizzo esemplificativo
classe A, 10.0.1.23 e facciamo l'
AND con
la sua netmask di default, si ottiene
10.0.0.0.
• Che cosa è 10.0.0.0? È l'
indirizzo di rete
360
"
• Se si ha a disposizione una completa serie di indirizzi
di classe B con l'
indirizzo di rete 141.162.0.0, che
cosa si può fare con questi indirizzi?
• Si ricordi che le reti di classe B hanno la forma N.N.H.H
• Ciò porta ad ottenere una rete con 216 -2 indirizzi per gli
host.
• Il -2 deriva dal fatto che 121.122.0.0 è l'
indirizzo della rete
e quindi non può essere assegnato ad un host;
• l'
ultimo indirizzo sulla rete, 121.122.255.255, invece si
usa per i broadcast, e quindi nemmeno questo può
essere assegnato ad un host.
• Questa sarebbe una rete molto estesa (65.534 indirizzi
per gli host), di gran lunga troppo grande per risultare
pratica.
361
(
#
• Un approccio molto semplice consiste nel "prendere
a prestito" il valore di un byte di indirizzi per gli host e
assegnarli quali indirizzi di rete.
• Ciò porterebbe a 28 -2 = 254 reti con 254 host per
ciascuna. Anche in questo caso si tratta di reti molto
grandi.
• In questo caso, si userebbe la sub-netmask
255.255.255.0, che è la netmask di default per la classe
C. Di conseguenza abbiamo preso una rete di classe B e
l'
abbiamo trasformata in 254 reti di classe C.
• Se si fa l'
AND tra 121.123.25.100 e 255.255.255.0, si
ottiene l'
indirizzo di rete 121.123.25.0
362
"
• Se abbiamo a disposizione una completa serie di
indirizzi di classe C, per esempio con 201.160.99.0
quale indirizzo di rete.
• Si ha la possibilità di assegnare gli indirizzi agli
host (l'
ultimo byte) a proprio piacimento.
• Se si usa la netmask di default classe C
255.255.255.0, si possono assegnare su una
singola rete 254 indirizzi.
• Anche se ciò risulta ovviamente fattibile, si ha
l’esigenza di suddividere la rete in un modo più
logico, magari varie reti da 25 host ciascuna.
363
4
• Proviamo ad usare quattro bit per gli host,
saranno sufficienti? 24 -2 = 14: non sono
sufficienti.
• Usiamo quindi cinque bit per gli host: 25 -2 = 30.
Perfetto.
• Cmq, abbiamo 8 bit nell'
ultimo byte per gli host e
quindi prendiamo a prestito tre bit per le sottoreti;
• Ottimo, ma quante sottoreti abbiamo?
• Forse 23 -2 = 6? Abbiamo quindi sei subnetwork
con 30 indirizzi per gli host ciascuna.
364
…
• Ma 6x30 sono 180 indirizzi;
• che cosa è successo agli altri?
• Si noti che ciascun indirizzo avrà la forma
di 201.160.99.ultimo-byte, e la netmask
avrà la forma di 255.255.255.ultimo-byte.
• Lavoriamo semplicemente con l'
ultimo
byte. Ricordo che 5 sono per gli host e 3
per la rete.
• Quindi la netmask sarà 255.255.255.224
365
%
1+7
2+6
3+5
4+4
5+3
6+2
7+1
8
10 00 00 00
11 00 00 00
11 10 00 00
11 11 00 00
11 11 10 00
11 11 11 00
11 11 11 10
11 11 11 11
128
192
224
240
248
252
254
255
366
9
•
•
•
•
•
•
•
•
•
1
L’ultimo byte è suddiviso in 3+5 bit
000 00000
0
ip subnet zero
001 00000
32
201.160.99.32
010 00000
64
201.160.99.64
011 00000
96
201.160.99.96
100 00000
128
201.160.99.128
101 00000
160
201.160.99.160
110 00000
192
201.160.99.192
111 00000
224
ip all-ones subnet
367
"
• Per prima cosa, abbiamo 6 sottoreti, ognuna delle quali
è caratterizzata da 2 indirizzi: uno di rete e uno di
broadcast. Di conseguenza qui vanno persi 6*2=12
indirizzi.
• Successivamente si perdono altri 32 indirizzi (0-31), dal
momento che sono al di sotto di qualsiasi sottorete
valida.
• Poi si perde il 224, dal momento che è la maschera di
rete.
• Infine si perdono gli indirizzi al di sopra di 224, in altre
parole 225-255, che sono 31.
• Il conteggio è quindi di 12+32+1+31=76. Sottraendo 76
a 256 si ottiene 180, il numero magico.
368
(
• CIDR Classless Interdomain Routing, RFC
1518 e 1519
• <Indirizzo> / <Numero di bit di prefisso>
369
%
• Il programma BIOS è scritto in una memoria
permanente in sola lettura e tra le varie cose
controlla la prima fase del processo di avvio.
• Il BIOS testa il sistema, cerca e controlla le
periferiche e poi cerca un'
unità da utilizzare per
avviare il sistema
• il BIOS cerca un Master Boot Record (MBR) nel
primo settore del primo disco fisso, ne carica il
contenuto in memoria e gli passa il controllo del
processo.
370
%
• Il codice di questo MBR cerca la prima
partizione attiva
• legge il record di avvio contenente le
istruzioni su come caricare il boot loader di
avvio.
• L'
MBR carica poi il boot loader, che
assume il controllo del processo (se il boot
loader è installato sull'
MBR).
371
&
)!
*
• Attenzione! Durante la sua installazione
Windows 2000 inserisce alcuni file
fondamentali nel primo settore del disco
rigido MBR fra i quali il BOOT.INI che
riveste enorme importanza per l'
avvio del
sistema.
372
• Il processo di boot loader viene svolto dal file
NTLDR che controlla il processo di selezione del
sistema operativo e il rilevamento dell'
hardware
prima dell‘inizializzazione del kernel.
• NTLDR può visualizzare un menu da cui si può
selezionare il sistema operativo. La videata è
basata sulle informazioni che si trovano nel file
BOOT.INI
• boot.ini è un semplice file di testo nascosto e a
sola lettura
373
!
• La finestra che consente di intervenire sulle impostazioni per il
dual boot è raggiungibile, da Windows 2000/XP, cliccando su
Start, Impostazioni, Pannello di Controllo, Sistema, quindi sulla
scheda Avanzate ed infine sul pulsante Avvio e ripristino...
• - BOOT.INI
- NTLDR
- NTDETECT.COM
- BOOTSECT.DOS
Se utilizzate un controller SCSI è possibile sia presente anche il
file NTBOOTDD.SYS
In caso di problemi (ad esempio qualora qualcuno di questi file
dovesse danneggiarsi), potrete agevolmente ripristinare tutti i file
necessari per il coretto avvio dei vari sistemi operativi
direttamente dal vostro floppy.
374
E
• Il file boot.ini segue le regole di formato di tutti gli
altri file con estensione ini utilizzati in Windows.
• Ciò significa che i contenuti vengono organizzati
sotto forma di sezioni ed ogni sezione ha il
proprio "titolo" racchiuso tra parentesi quadre.
Boot.ini fa uso di due sezioni:
– [boot loader]
– [operating systems]
375
E
• La sezione [boot loader] contiene, a sua
volta due dati:
– timeout
– Default
• timeout permette di specificare dopo quanti
secondi, all'
avvio del personal computer, la
procedura di boot dovrà automaticamente
lanciare il sistema indicato mediante il dato
default.
376
E
– La sezione [operating systems] ospita, invece,
le informazioni relative al percorso di ricerca del
sistema operativo o dei sistemi operativi
installati
– i dati qui inclusi permettono di specificare, in
quale partizione è presente un certo sistema
operativo.
– Il testo racchiuso tra le virgolette rappresenta
l'
etichetta che verrà visualizzata nel menù di
avvio all'
accensione del personal computer.
377
&
E
• Le informazioni circa la "posizione" dei vari
sistemi operativi installati, seguono le specifiche
ARC (Advanced RISC Computing) e si dividono in
tre gruppi:
– multi syntax
– SCSI syntax
– signature syntax
Multi syntax. E'la sintassi normalmente utilizzata per
gestire i dischi fissi IDE. L'
uso della multi syntax
indicata al boot loader di Windows 2000/XP che deve
seguire il BIOS per il caricamento dei file di sistema.
378
E
• La sitassi multi syntax assume la forma seguente:
multi(A)disk(B)rdisk(C)partition(D)
A è il numero ordinale dell'
adattatore di avvio. Il
primo adattatore, che di solito è l'
adattatore di
avvio, è 0. Ogni scheda madre mette a
disposizione almeno due canali IDE ai quali
possono essere collegati dischi fissi e CD ROM
IDE. Al primo canale IDE viene associato
l'
identificativo 0, al secondo 1.
379
&
E
• multi(A)disk(B)rdisk(C)partition(D)
• B fornisce alcune informazioni sui dischi. In ambito
multi syntax è uguale a 0.
• C è un numero ordinale che permette di specificare
il disco collegato all'
adattatore: può assumere
valori compresi tra 0 e 3, a seconda del numero di
unità disco presenti sull'
adattatore (canale IDE).
• D specifica il numero di partizione che "ospita" il
sistema operativo da avviare: il primo
numero possibile è 1.
380
&
E
• SCSI syntax
• Se si fa uso di dispositivi SCSI è possibile che il
boot loader faccia uso della SCSI syntax. Invece
che dipendere dal BIOS, l'
avvio dei sistemi
operativi installati su dischi SCSI, si appoggia su un
driver necessario per far funzionare il controller
SCSI installato all'
interno del PC.
• Il file che presiede al funzionamento del controller
SCSI si chiama ntbootdd.sys ed è collocato nella
directory radice della partizione di sistema.
381
E
• Una riga SCSI syntax si presenta nel modo
seguente:
• scsi(A)disk(B)rdisk(C)partition(D)
• A indica il numero ordinale dell'
adattatore
(controller) SCSI collegato
• B specifica l'
ID SCSI associato al disco fisso
connesso al controller SCSI
• C è il LUN SCSI contenente la partizione di avvio
• D è il numero della partizione su disco fisso SCSI
contenente il sistema da rendere avviabile
382
E
• Signature() syntax è usata solo se:
• Il BIOS o il controller della partizione di
boot non supportano le estensioni
dell’INT13
• Il BIOS del controller SCSI è disabilitato
383
#
•
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q99743
•
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q102873
384
&
0
• LILO
• GRUB
• LoadLin
• LiLO
(LinuxLOader) è il kernel loader di Linux ed è
composto da due parti: una avviabile e una che
provvede ad installarlo. La parte che provvede
ad installare Lilo si appoggia sul file lilo.conf.
385
E
• append: su questa riga sono indicati alcuni
parametri generici da passare al kernel
• boot: su questa riga viene indicata la partizione in
cui montare Lilo (é in grado di avviarsi dal mbr o
anche da un boot sector secondario);
Se è omessa questa parola chiave, il boot sector è
letto (e possibilmente scritto) dal dispositivo che
attualmente è montato come root.
• vga: specifica la risoluzione da adottare al
momento del boot;
386
E
• read-only: questa riga serve a prevenire
la scrittura accidentale delle partizioni;
• image: è specificata la directory che
contiene il kernel;
• root: partizione da montare come root;
• label: etichetta della partizione da inserire
al momento del prompt del boot;
387
E
• backup=backup-file
• Copia il boot sector originale in backup-file (che
può essere anche un device, p.es. /dev/null)
invece che in /boot/boot.NNNN.
• compact
• Prova a fondere le richieste di lettura di settori
adiacenti in una singola richiesta di lettura. Ciò
riduce drasticamente il tempo necessario per il
caricamento e mantiene la mappa più piccola.
L'
uso di `compact'è raccomandato specialmente
quando si fa il boot da un floppy disk.
388
E
• default=nome
• Usa l'
immagine specificata come immagine di boot
di default. Se ‘default’ è omesso è usata
l'
immagine che appare per prima nel file di
configurazione.
• delay=dsec
• Specifica il numero di decimi di secondo che il
boot loader dovrebbe attendere prima di fare il
boot con la prima immagine. Ciò è utile su sistemi
che fanno il boot immediatamente da disco fisso
dopo aver abilitato la tastiera. Il boot loader non
attende niente se `delay'è omesso o settato a
zero.
389
E
• disk=nome-device
• Definisce i parametri non standard per il
disco specificato.
• disktab=disktab-file
• Specifica il nome della tabella dei parametri
del disco. L'
installatore della mappa (map
installer) cercherà /etc/disktab se è omesso
`disktab'
. L'
uso di disktab è scoraggiato.
390
E
• install=boot-sector
• Installa come nuovo boot sector il file specificato. Se è
omesso `install'
, di default è usato /boot/boot.b.
• Copia il loader di Lilo nel settore di boot.
• map=map-file
• Specifica la posizione del file di mappa. Se è omesso `map'
,
è usato il file /boot/map.
• Mappa dei settori del disco occupati dal kernel
• prompt
• forza l'
ingresso nel prompt di boot senza aspettare che sia
prima premuto un tasto. Reboot incustoditi sono impossibili
se `prompt'è settato ma non lo è `timeout'
.
391
E
• restricted
• L'
opzione `restricted'per un immagine (vedere sotto)
applicata a tutte le immagini
• timeout=dsec
• setta un tempo limite (timeout, in decimi di secondo) per
l'
ingresso dalla tastiera. Se non è premuto alcun tasto nel
tempo specificato, è bootata automaticamente la prima
immagine. Similmente, il prompt per la password è
terminato se l'
utente non fa niente per troppo tempo. Il
tempo limite di default è infinito.
• verbose=livello
• Causa un sacco di reporting sul lavoro. Numeri più alti
aumentano la prolissità dell'
output. Se -v è specificato
nella riga di comando di lilo, il livello è incrementato. Il
massimo livello è 5.
392
$
# $
&
393
initrd=/boot/initrd-<versione>.img
indica l'
immagine del disco ram iniziale
utilizzata all'
avvio per inizializzare i
dispositivi che rendono possibile l'
avvio del
kernel.
Il disco ram iniziale è costituito da una
serie di driver necessari per mettere in
funzione il disco fisso e tutti i dispositivi
che servono per caricare il kernel.
394
&
• è una configurazione software del sistema che
permette l'
esistenza solo di un gruppo
selezionato di processi.
• Più semplicemente, un runlevel è uno stato del
sistema in cui possono venire compiute solo
determinate operazioni
• I runlevel sono sette, enumerati da 0 a 6,
sebbene esistano anche il 7, l'
8 ed il 9 che però
Unix e Linux generalmente non utilizzano
395
• SysV init è il processo standard nel mondo
Linux per controllare l'
esecuzione del
software all'
avvio. Questo perché è più facile
da usare ma anche più potente e flessibile
dell'
init BSD tradizionale.
• Il kernel cerca init nella directory /sbin.
• init avvia lo script /etc/rc.d/rc.sysinit
• rc.sysinit gestisce quasi tutti i processi del loader di
avvio ed esegue rc.serial (se presente)
• init esegue tutti gli script per il runlevel di default
• init esegue /etc/rc.d/rc.local
396
• Il kernel individua init nella directory /sbin e lo
esegue. init poi coordina la fase restante del
processo di avvio.
• Quando init viene eseguito, diventa il padre di tutti i
processi che si avviano automaticamente sul
sistema. Innanzitutto esegue lo script
/etc/rc.d/rc.sysinit che imposta il percorso, attiva lo
swapping, controlla i filesystem e così via.
• In sostanza, rc.sysinit si occupa di tutti i processi che
vanno eseguiti all'
inizializzazione del sistema.
397
• In seguito, init esegue lo script /etc/inittab, che
descrive il modo in cui il sistema va configurato
per ogni runlevel ed imposta il runlevel di default
• A questo punto init avvia tutti i processi di
background necessari al sistema per funzionare
cercando nella relativa directory rc il runlevel
(/etc/rc.d/rc<x>.d, dove <x> è un numero da 0 a 6).
init termina tutti gli script kill (il loro nome
comincia con una K), poi inizializza tutti gli script
start (il loro nome comincia per S) nella directory
di runlevel idonea
398
• Dopo che init ha percorso tutti i runlevel, lo script
/etc/inittab crea un processo figlio getty per
ciascuna console virtuale (prompt di login) di ogni
runlevel (i runlevel da 2 a 5 dispongono di sei
console; il runlevel 1, in modalità a utente singolo,
dispone di un'
unica console; i runlevel 0 e 6 non
ne ottengono nessuna).
• In sostanza, getty apre delle linee tty, ne imposta
la modalità, visualizza il prompt di login, riceve il
nome dell'
utente e poi inizializza il processo di
login per quell'
utente. Ciò permette all'
utente di
autenticarsi al sistema e di cominciare a usarlo.
399
#
# inittab
This file describes how the INIT process should set up
#
the system in a certain run-level.
#
# Author:
Miquel van Smoorenburg, <[email protected]>
#
Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
400
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Things to run in every runlevel.
ud::once:/sbin/update
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
401
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
402
• descrive quali processi sono avviati all'
avvio e
durante le normali operazioni
<id:runlevel:azione:processo>
Respawn: Il processo sarà riavviato quando termina
Wait: Il processo sarà avviato quando si entra nel
runlevel specificato e init attenderà la sua
terminazione.
Once: Il processo sarà eseguito solo una volta
quando si entra nel runlevel specificato.
Boot:Il processo sarà eseguito durante il boot del
sistema. Il campo runlevel è ignorato.
403
Bootwait: Il processo sarà eseguito durante il boot
del sistema, mentre init aspetta la sua terminazione
(p.es. /etc/rc). Il campo runlevel è ignorato.
Off: Non fa niente.
Initdefault: Una voce initdefault specifica il runlevel
nel quale si dovrebbe entrare dopo il boot del
sistema. Se non ne esiste nessuna, init chiederà in
console un runlevel. Il campo processo è ignorato.
Sysinit: Il processo sarà eseguito durante il boot del
sistema. Sarà eseguito prima di qualsiasi voce
boot o bootwait. Il campo runlevel è ignorato.
404
Powerwait: Il processo sarà eseguito quando init
riceve il signal SIGPWR, che indica che c'
è
qualcosa che non va nell'
alimentazione. Init
aspetterà che il processo finisca prima di
continuare.
Powerfail: Come powerwait , ma init non aspetterà
la terminazione del processo.
Ctrlaltdel: Il processo sarà eseguito quando init
riceve il signal SIGINT. Ciò significa che qualcuno
nella console del sistema ha premuto la
combinazione di tasti CTRL-ALT-DEL .
Tipicamente si vuole eseguire un qualche tipo di
shutdown o portare il sistema in single-user level
oppure rebootare la macchina.
405
• Quando Linux viene avviato, il kernel si prende
cura di avviare il processo iniziale, Init, a partire
dal quale vengono poi generati tutti gli altri
processi.
• Init, avvia i processi contenuti in /etc/inittab
• /etc/inittab, a sua volta fa riferimento a una
serie di script contenuti normalmente all'
interno
di una directory che dipende dalla
distribuzione.
406
Quando lo script di shell /etc/initscript esiste, viene utilizzato
da Init per avviare i processi indicati all'
interno del file
/etc/inittab.
•In Debian si ha:
•si::sysinit:/etc/init.d/rcS
•/etc/init.d
•rcX.d stanno /etc
•In Red Hat invece:
•si::sysinit:/etc/rc.d/rc.sysinit
•/etc/rc.d/init.d/<daemon>
•rcX.d sono in /etc/rc.d
407
/
• Il file inittab include le istruzioni che eseguono
/sbin/getty
• getty è un programma che apre un device di
terminale, imposta i driver del terminale, ed esegue
/bin/login per far partire una sessione di login.
• È necessario specificare l’argomento porta per
collegarsi al dispositivo /dev/port
– Se si specifica “–” getty leggerà dallo standard
input
408
• Richiede lo username e la password
• In caso di successo login:
–
–
–
–
aggiorna i file adeguati,
imposta le variabili d’ambiente,
avvisa l’utente nel caso ci sia posta,
ed esegue i file di avviamento della shell.
• Se l'
utente non è root, e se esiste /etc/nologin, il
contenuto di questo file è stampato sullo
schermo, ed è terminato il login.
Ciò è usato tipicamente per prevenire il login
quando il sistema sta per essere spento.
409
/
/
• Il file /etc/securetty elenca il nome delle tty
dove root ha il permesso di loggarsi.
– Se il file non esiste, root può loggarsi su
qualsiasi tty.
• Il file /etc/usertty specifica restrizioni
aggiuntive sull'
accesso di particolari utenti.
– Se questo file non esiste, non è imposta
nessuna restrizione addizionale
– Ci sono tre tipi possibili di sezioni: CLASSES,
GROUPS e USERS
410
• Se esiste il file .hushlogin, allora è effettuato
un login "quiet"
– (disabilitando la verifica della mail, la stampa
della data dell'
ultimo login e il messaggio del
giorno).
• Se esiste /var/log/lastlog, è stampata la data
(e l'
ora) dell'
ultimo login (ed è registrato il
login corrente).
411
• settaggio dello UID e del GID della tty e
delle varie variabili d’ambiente
• Viene poi lanciata la shell dell'
utente.
– Se non è specificata nessuna shell per
l'
utente in /etc/passwd, allora è usata
/bin/sh.
– Se non c'
è nessuna home specificata in
/etc/passwd, allora è usata /
412
…
• login si occupa di autenticare l'
utente (cioè
di assicurarsi che il nome dell'
utente e la
password combacino), di configurare un
ambiente iniziale impostando i permessi per
la linea seriale e di inizializzare la shell.
413
• syslogd Demone per l'
annotazione nel registro del
sistema.
• /etc/syslog.conf Configurazione di syslogd.
• logger Aggiunge delle annotazioni nel registro del
sistema.
• login Permette l'
accesso a un sistema.
• /etc/passwd Tabella delle caratteristiche salienti degli
utenti.
• /etc/group Tabella delle caratteristiche salienti dei
gruppi.
• /etc/shadow Tabella delle password quando non sono in
/etc/passwd.
414
• /var/run/utmp Elenco degli accessi in corso.
• /var/log/wtmp Elenco degli accessi trascorsi.
• /etc/motd Messaggio di apertura o messaggio del
giorno.
• /etc/nologin Messaggio di impedimento all'
accesso.
• /etc/securetty Elenco dei terminali da cui è consentito
l'
accesso all'
utente root.
• /var/mail/* Messaggi di posta elettronica degli utenti.
• ~/.hushlogin Accesso rapido.
• /var/log/lastlog Data e orario dell'
ultimo accesso.
415
• Gli utenti collegati in ogni momento sono
elencati in /var/run/utmp.
• Questo file è valido solo finché il sistema
non viene riavviato o spento e viene ripulito
quando il sistema si avvia;
• elenca ciascun utente ed il terminale (o la
connessione di rete) che sta usando,
insieme ad altre informazioni utili.
• I comandi who, w ed altri simili controllano
in utmp per vedere chi è collegato.
416
4
• Tutti i login che hanno avuto successo sono
registrati in /var/log/wtmp. Questo file
crescerà senza limite, quindi deve essere
ripulito regolarmente
• Il comando last legge in wtmp.
• Sia utmp che wtmp sono in formato binario
(consultate la pagina man di utmp);
sfortunatamente non conviene esaminarli
senza usare programmi speciali.
417
• Linux version 2.4.2-2 ([email protected]) (gcc version 2.96
20000731 (Red Hat Linux 7.1 2.96-81))
– Una delle più importanti, poiché ci dice la
versione del kernel che stiamo utilizzando
(2.2.18), la versione del compilatore (gcc, il
nome del compilatore, versione 2.95.2) e la
data di compilazione del kernel.
• Console: colour VGA+ 80x25
– ci dice che stiamo lavorando in una console
VGA di 25 righe e 80 colonne,
418
Memory: 255244k/262128k available (1492k kernel code, 6488k reserved, 106k
data, 220k init, 0k highmem)
Dentry-cache hash table entries: 32768 (order: 6, 262144 bytes)
Buffer-cache hash table entries: 16384 (order: 4, 65536 bytes)
Page-cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode-cache hash table entries: 16384 (order: 5, 131072 bytes)
ci viene presentato lo stato della memoria, quanta
ne abbiamo installata e quanta disponibile, con
tanto di dicitura di "chi usa la memoria e quanta ne
usa"; tenete presente quel “220k", lo vedremo
anche in seguito!
419
• Rilevazione hardware e assegnazione IRQ
• IP Protocols: ICMP, UDP, TCP, IGMP
• Freeing unused kernel memory: 220k
freed
420
• halt
– Arresta il sistema
• init
– Cambia il runlevel
• reboot
– Arresta il sistema e poi lo riavvia
• runlevel
– Stampa il runlevel di sistema
• shutdown
– Arresta il sistema in modo sicuro
• telinit
– Modifica il runlevel corrente
• uptime
– Visualizza il tempo di funzionamento del sistema
421
• Man pages
–
–
–
–
–
–
–
–
–
–
lilo
lilo.conf
Init
inittab
runlevel
hdparm
login
wtmp
utmp
last
422
9
A
!
-2221
• Professional
– Supporta fino a 2 processori
• Server
– supporta da 1 a 4 processori e fino a 4 gigabyte.
• Advanced Server
– supporta da 1 a 8 processori e fino a 8 gigabyte.
– fornisce cluster a due nodi, bilanciamento del carico di
rete (Network Load Balancing) con 32 nodi
• Datacenter Server
– Scalabile da 1 a 32 processori e fino a 64 gigabyte.
– Massima affidabilità e disponibilità - fornisce cluster a
quattro nodi, bilanciamento del carico di rete (Network
Load Balancing) con 32 nodi
423
9
• Home edition
• Professional
• 64-bit edition
A
!
@
????
424
9
A
!
-22.
• Standard edition
– Funzionalità di rete avanzate quali IAS (Internet Authentication
Service), Network Bridge (bridge di rete) e ICS (Internet
Connection Sharing).
– SMP (Symmetric Multiprocessing) bidirezionale.
– 4 GB di RAM.
• Enterprise edition
– supporta fino a otto processori.
– Supporta il clustering su otto nodi e fino a 32 GB di memoria.
– È disponibile per computer con processore Intel Itanium.
– Sarà disponibile per piattaforme a 64 bit in grado di supportare 8
processori e 64 GB di RAM.
• Datacenter edition
– Supporta elaborazioni SMP con 32 processori e 64 GB di RAM.
– Offre servizi di clustering su 8 nodi e di bilanciamento del carico
come funzionalità standard.
– Sarà disponibile per piattaforme a 64 bit in grado di supportare 32
processori e 128 GB di RAM
425
• Il problema del DNS
426
1.
2.
3.
4.
Sicurezza dei dati
Sicurezza dell’applicazione
Sicurezza del sistema
Sicurezza fisica
427
• Identificazione
– Significa farsi riconoscere dal sistema.
– Username o Smartcard
– Badge (tesserino magnetico)
• Autenticazione
–
–
–
–
Dimostrazione di essere chi si sostiene di essere
Tesserino con foto
Password
Certificati con smartcard
• Autorizzazione
– Se il sistema consente di attraversare qualsiasi
perimetro di sicurezza
428
A
-#
• Il modello di sicurezza si basa sui concetti di
autenticazione e autorizzazione:
• l’autenticazione identifica l’utente durante il logon e
l’accesso a servizi di rete;
– Supporta 3 protocolli: NTLM, Kerberos e SSL/TLS
• l’autorizzazione, invece, è il meccanismo che si
preoccupa di controllare l’accesso alle risorse, sulla
base dei permessi stabiliti.
– Controlli di accesso attraverso l’uso di ID univoci per
user e group
– Permessi di utilizzo attraverso elenchi di controllo allegati
alle risorse
429
• LM
• NTLM
– utilizza una password a 14 byte. Se la password è più
piccola di 14 byte, ad essa vengono concatenati degli
zeri. Altrimenti viene troncata al 14°byte.
– La password viene convertita in lettere maiuscole e
divisa in due metà di sette byte ciascuna.
• Kerberos
• SSL/TLS
– Utilizzato principalmente per autenticare le smart card
degli utenti e per proteggere le connessioni o le reti
insicure
– Utilizzato insieme ai certificati X.509
430
7
F
• È uno standard (RFC1510)
• Tempi di connessione al server più brevi
• Basato sul reciproco sospetto
– Chiavi private condivise
• Quindi deve esistere una posizione in cui tener
traccia e distribuire le chiavi
• KDC (key distribution center)
• Autenticazione delegata
431
• L’unità fondamentale del modello di
sicurezza di Windows 2000 è rappresentata
da un oggetto.
• Per contenere i permessi di accesso per
ogni oggetto vengono utilizzate le ACL
(Access Control List).
• Ogni ACL è una sequenza di zero o più
ACE (Access Control Entry), che
rappresenta la singola voce di controllo
dell’accesso.
432
• Esistono due tipi di ACL:
– DACL (Discretionary Access Control List)
• che identifica gli utenti o i gruppi a cui e'permesso o
negato l'
accesso all'
oggetto.
– SACL (System Access Control List).
• che specifica come il sistema deve tenere traccia dei
tentativi di accesso all'
oggetto. In questo caso, ogni
ACE specifica il tipo di accesso, da parte di un
utente, che debba essere loggato dal sistema.
433
&$
• Una volta garantita la protezione sugli oggetti,
bisogna identificare gli utenti che tentano di
accedere alle risorse e verificare che abbiano i
relativi permessi.
• Ad ogni utente viene assegnato univocamente un
valore alfanumerico detto Security ID (SID) che
viene generato al momento della creazione
dell’account;
• Microsoft garantisce che un SID sarà sempre
univoco e mai riutilizzabile
• Non solo gli utenti ma anche i gruppi
434
/
#
)
*
• Dopo che l’utente è stato autenticato,
durante la fase di logon, viene creato un
oggetto chiamato Security Access Token
che serve come “autorizzazione” per poter
usare le risorse e viene associato a tutti i
processi dell’utente.
• Contiene il SID dell’utente i SID di tutti i
gruppi a cui appartiene e l’ACL dell’utente
435
&
• Ad ogni processo lanciato viene assegnato il SAT
dell’utente che ha fatto logon. Il processo quindi
gira nel sistema operativo nel contesto di
sicurezza dell’utente che lo sta utilizzando.
• In Windows nessun processo può girare senza un
utente e la sicurezza sulla risorse viene impostata
per utenti o gruppi.
• Quando un processo vuole accedere ad una
risorsa viene controllato che il SAT a lui
assegnato (quello dell’utente che lo ha lanciato)
possa effettivamente accedere a quella risorsa.
436
• Ad ogni oggetto viene assegnato un SD (Security
Descriptor), in cui vengono inseriti:
–
–
–
–
il SID del proprietario dell’oggetto
il SID del gruppo di appartenenza
il DACL
il SACL
• Nel SD sia il DACL che il SACL possono essere vuoti, cioè
contenere zero ACE.
• Nel caso in cui l'
oggetto non abbia una DACL, il
sistema garantisce l'
accesso a chiunque (gruppo
Everyone).
• Nel caso in cui invece la DACL non abbia ACE,
l'
accesso all'
oggetto viene negato a tutti.
• se il SACL è vuoto, non viene eseguito nessun controllo.
437
$
• Abbiamo detto che a ciascun oggetto è
associato un insieme di informazioni sulla
protezione, o descrittore di protezione
• Parte del descrittore di protezione specifica i
gruppi o gli utenti che possono accedere a un
oggetto e i tipi di accesso (autorizzazioni)
concessi a tali gruppi o utenti.
• Questa parte del descrittore di protezione è
nota come elenco di controllo dell'
accesso
discrezionale (DACL, discretionary access
control list)
438
• Oltre a contenere le informazioni sulle autorizzazioni, un
descrittore di protezione di un oggetto contiene anche le
informazioni sul controllo.
• Queste informazioni sul controllo sono note come elenco di
controllo accesso di sistema (SACL, system access control
list)
• Più in particolare, in un elenco SACL sono specificate le
seguenti informazioni:
– Gli account di gruppo o utente da controllare durante
l'
accesso all'
oggetto.
– Gli eventi di accesso da controllare per ciascun gruppo
o utente. Un evento di accesso è rappresentato ad
esempio dalla modifica di un file.
– L'
attributo Operazioni riuscite oppure Operazioni non
riuscite per ciascun evento di accesso, in base alle
autorizzazioni concesse a ciascun gruppo e utente
nell'
elenco DACL dell'
oggetto.
439
&
• SRM (Security Reference Monitor): E'un
processo in modalità kernel che si occupa del
monitoraggio dell’accesso agli oggetti, garantendo
che l’accesso ad un determinato oggetto sia
coerente con il Security Descriptor associato.
• Nel momento in cui un’applicazione tenta di
accedere ad un oggetto, l’SRM analizza il DACL
dell’oggetto per verificare che l’applicazione abbia i
permessi di accesso. In particolare ciascuna ACE
viene esaminato secondo un ordine preciso, e se il
SID contenuto nell’ACE corrisponde ad SID
contenuto nel token, allora l’ACE viene elaborato,
per verificare i diritti di accesso.
440
%<
• Se tutti i diritti di accesso richiesti dal chiamante
possono essere garantiti, l’accesso all’oggetto
secondo le modalità richieste ha esito positivo;
altrimenti, se uno di essi non può essere garantito,
l’accesso fallisce
• I messaggi di audit relativi al successo o al
fallimento di un accesso vengono scritte da LSA
su opportuni files di log.
• Per motivi di efficienza, i controlli di accesso
vengono eseguito al momento della creazione
dell’handle di un oggetto.
441
• LSA (Local Security Authority): E’ un processo in
modalità utente che si occupa di garantire che
l’utente abbia accesso al sistema. In particolare:
– Autentica gli utenti durante la fase di logon: in tale fase i
dati di accesso dell’utente vengono consegnati ad Active
Directory o al SAM.
– Generare il token di accesso
– Gestire la politica di sicurezza: l’ SRM interroga LSA per
avere informazioni sugli accessi, informazioni che LSA
verifica utilizzando il Security Policy Database.
– Vigila sulla politica di controllo.
– Aggiorna il registro degli eventi i dati di audit forniti dal
SRM.
• LSA (Local Security Authority, lsass.exe)
– E`conosciuto anche con il nome di Security Subsystem
(Sottosistema di Sicurezza).
442
<
)
/
<
*
Il database SAM viene utilizzato da
Windows 2000 per memorizzare le
informazioni
sugli
account
utente.
Interagisce con LSA durante la fase di
autenticazione di un utente, confrontando
le informazioni ricevute da LSA con le
informazioni memorizzate, e in caso di
corrispondenza esatta ritorna il SID
dell’utente e quello dei gruppi di cui è
membro.
443
• Quando un utente Windows esegue l’operazione di logon:
• riceve un Security Access Token che contiene il SID (Security
Identifier) dell’utente e l’elenco dei gruppi a cui l’utente appartiene
• associa al token i privilegi che trova nella sua ACL, e agisce in base
ad essi.
444
$
!
1
• Da nessuna parte. Windows NT/2k (come
anche UNIX) non immagazzina le password,
bensì un hash
– valore numerico calcolato in base alla password,
dal quale non si può risalire alla stringa originale,
in quanto è solo un numero.
• Per crackare gli hash si può utilizzare il
programma PWDUMP
• L’elenco di hash si trova in:
• \winnt\system32\config c‘è un file chiamato
SAM.
445
<
• E’ leggibile da tutti gli utenti (a meno che
Administrator…)
• comunque non si può leggere in quanto
bloccato (via sharing) perché è in uso dai
componenti di sistema.
• durante l'
installazione, una copia del SAM
viene posta in \WINNT\REPAIR.
446
• Windows NT/2k dispongono di tre strutture
di rete:
• Workgroup
• Dominio
• Albero di domini
447
A
#
• E’ un raggruppamento logico di computer che
consente la localizzazione di risorse nella rete
(stampanti, file, CD-ROM, modem) in quanto
Rende possibile la visualizzazione delle directory
condivise di ogni altro membro del workgroup
tramite servizi di browsing .
• Ogni macchina in esso funziona come server
stand-alone per cui:
– Possiede il proprio database contenente informazioni su
account utenti e gruppi e non divide tali informazioni con
gli altri computer del workgroup.
– L’amministratore (proprietario) del computer decide
quali risorse condividere nel workgroup e con chi.
448
!
#
• Gestione onerosa della rete.
• Necessità di più account per avere
accesso alle risorse dell’intera rete
• Necessità di sottoporsi a più processi di
logon.
• Necessità di ricordare più password
449
$
/
• Insieme (gerarchico) di informazioni su
oggetti in qualche modo in relazione tra loro
• Un servizio di directory identifica in modo
univoco gli utenti e le risorse su una rete,
offrendo un modo per accedere e
organizzare gli utenti e le risorse.
450
&
• Una directory è un database di oggetti di rete a cui
è possibile fare riferimento in modi diversi.
Memorizza le informazioni relative alla risorsa e
quali servizi rende disponibile
• Un servizio di directory fornisce i mezzi per gestire
e semplificare l’accesso alle risorse di un sistema
di computer in rete. P. es. rende possibile la
ricerca di un oggetto in base ai propri attributi
451
$
!
!
-222
• È un raggruppamento logico di computer in
rete che condividono un database directory
centralizzato che in windows 2000 è la
parte database dei servizi chiamati Active
Directory.
• Un controller di dominio è un server che
gestisce tutte le interazioni dominio-utente
collegate alla sicurezza e ne centralizza la
gestione.
452
/
• Active Directory rappresenta una delle funzioni
più innovative introdotte da Windows 2000.
• In buona sostanza è un luogo centrale per
memorizzare, in maniera gerarchica, informazioni
circa gli utenti, l’hardware, le applicazioni e i dati
sulla rete, in modo da facilitare la loro ricerca e il
loro recupero.
• Inoltre, memorizza le informazioni di
autorizzazione e autenticazione richieste per
assicurare che solo gli utenti appropriati
accedano alle risorse di rete.
453
/
• Sicurezza. Si può definire il controllo dell’accesso su tutti
gli oggetti della directory e si possono definire le politiche
di sicurezza da applicare ad un intero dominio.
• Standard aperto. Active Directory è X.500 compatibile,
quindi può dialogare con altre directory o applicazioni.
• Scalabilità. E’ in grado di memorizzare una grande
quantità di oggetti e relative informazioni, grazie alla
struttura di database su cui si basa.
• Compatibilità. Supporta il precedente schema di directory
in Windows NT (3.5x e 4.0) Detta mixed mode.
• Disponibilità. Active Directory è dotato di un meccanismo
di replica multimaster, che consente a tutti gli utenti, a
prescindere da dove accedono fisicamente alla rete, di
accedere a un database aggiornato.
454
/
• I servizi di active directory utilizzano il sistema DNS per l’assegnazione
dei nomi e sono in grado di scambiare informazioni con le applicazioni
e le directory che utilizzano il protocollo LDAP (Lightweight Directory
Access Protocol, è uno standard che definisce le operazioni che un
client può eseguire per interrogare o modificare gli oggetti in una
directory.
• identifica gli oggetti tramite:
– distinguished name (CN=Antonio
Taschin,OU=System,DC=DSI,DC=UNIVE.IT) e
– relative distinguished names (CN=Antonio Taschin)
DC= Domain Component
OU=Organizational Unit
CN=Common name
• Un esempio tipico di URL LDAP è il seguente :
LDAP://server1.dsi.unive.it /CN=Antonio Taschin
Hall/CN=Users/DC=dsi/DC=unive.it
455
• Come tutti i servizi di directory anche Active
Directory è uno Spazio dei nomi.
• Lo spazio dei nomi è un’area di binding in
cui un nome può essere risolto.
• un insieme strutturato di informazioni in cui i
nomi posso essere usati per la
rappresentazione simbolica di tipi di
informazione diversi
456
• La struttura di Active Directory è gerarchica. Al
livello più alto della gerarchia troviamo una
foresta di alberi di domini. Un albero di
dominio è composto da un dominio radice e
una serie di domini figli, ognuno dei quali a sua
volta può avere altri domini figli.
457
"
• Ogni dominio contiene al suo interno dei particolari
contenitori, detti unità organizzative (OU),
all’interno delle quali possono essere collocate altre
unità organizzative e gli oggetti del dominio, ovvero
utenti, gruppi, computer. Un'
unità organizzativa non
può contenere oggetti provenienti da altri domini.
• Le unità organizzative sono molto utili, poiché ci
consentono di creare, all’interno di un dominio, una
rappresentazione
delle
strutture
logiche
gerarchiche presenti nell'
organizzazione; questo
approccio consente di gestire la configurazione e
l'
utilizzo di account e risorse in base al modello
della propria organizzazione, semplificandone
l’amministrazione.
458
459
&
• Il controllo amministrativo di ciascuna unità
organizzativa può essere delegato a determinati
utenti: esse rappresentano l'
ambito più piccolo a
cui sia possibile delegare l'
autorità amministrativa
(gli altri sono i siti e i domini). Questo consente di
delegare l'
amministrazione locale di utenti e
risorse.
• In
questo
modo
possiamo
distribuire
l'
amministrazione
del
dominio
tra
vari
amministratori, in una maniera tale che le
responsabilità amministrative che vengono gestite
risultino
molto
simili
alle
responsabilità
organizzative assegnate nella gerarchia aziendale. 460
• Alle unità organizzative (così come ai siti e ai
domini) è possibile assegnare oggetti Criteri di
gruppo (GPO).
• Un oggetto Criteri di gruppo è insieme di
impostazioni, che consentono di definire e
controllare il funzionamento dei programmi e delle
risorse di rete per utenti e computer all’interno di
un’organizzazione. L’applicazione di un Criterio di
gruppo ad un particolare utente o computer è
determinata
dall’appartenenza
ad
un’unità
organizzativa, ad un dominio o a un sito.
461
/
• Active Directory include nella sua struttura anche i gruppi.
• I gruppi sono oggetti Active Directory che possono
contenere utenti, computer e altri gruppi. Si differenziano
dalle OU in quanto queste ultime consentono di creare una
gerarchia che rispecchia la struttura dell’organizzazione,
mentre i gruppi sono utilizzati per gestire l'
accesso di utenti
e computer a risorse condivise.
• Infatti, le unità organizzative non sono elementi principali di
protezione: la funzione che svolgono è unicamente quella
di organizzare e contenere gli oggetti di Active Directory.
L'
appartenenza ai gruppi viene utilizzata per filtrare gli
oggetti criteri di gruppo che influiranno sugli utenti e i
computer inclusi nel sito, nel dominio o nell'
unità
organizzativa.
462
'
• Tutto ciò che Active Directory contiene (utente,
OU, computer, stampante, ect..) è un oggetto
che viene memorizzato con un insieme di
attributi caratteristici dell’oggetto. Ciascuno di tali
oggetti è una istanza di una classe.
• Le classi di oggetti, insieme con gli attributi e le
regole che devono essere seguite per la loro
gestione, formano un gruppo detto SCHEMA.
• In particolare, per ogni classe, lo schema
definisce la classe genitore, gli attributi, gli
attributi aggiuntivi che gli oggetti devono avere, e
memorizza tutte queste informazioni.
463
'
• Come qualsiasi altro DB anche AD
possiede uno schema
• Lo schema di AD è una versione ridotta
dello schema X.500
• Lo schema definisce i tipi di oggetti che
possono esistere nella directory, gli
attributi che possono avere, la sintassi di
ogni attributo ecc ecc
464
• La gestione efficiente di tutti gli oggetti di Active Directory
richiede l’utilizzo di un qualche meccanismo che consente
di recuperare velocemente le informazioni sugli oggetti e
sugli attributi memorizzati.
• Il meccanismo utilizzato da Active Directory è
rappresentato dal Catalogo globale.
• Il catalogo globale è un indice che contiene tutti gli oggetti
Active Directory con un numero limitato di attributi di
ciascuno di essi, in altre parole gli attributi più usati nelle
procedure di ricerca, come il nome utente, l’indirizzo di
posta elettronica.
• Anche se Active Directory viene divisa per domini, il
catalogo globale fornisce una vista degli oggetti a
prescindere dal dominio; in questo modo un utente può
recuperare le risorse dalla rete, a prescindere dal punto in
cui si trovino.
465
• Possiamo individuare le due funzioni principali che il
catalogo globale esegue:
• Accesso: tutti gli oggetti che vengono autenticati in
Active Directory devono fare riferimento al catalogo
globale, per cui deve essere possibile accedere ad
esso.
• Interrogazione: questa funzione è importante, visto
che la ricerca delle informazioni non è facile, specie
quando abbiamo più controller.
466
• Comunque, che la maggior parte del
traffico
verso
Active
Directory
è
rappresentato da interrogazioni con cui gli
utenti richiedono informazioni sugli oggetti
nella directory.
• Nel caso in cui si disponga di più
controller di dominio, per ottenere una più
equa distribuzione del carico, è opportuno
avere più server di catalogo.
467
• un sito è una o più subnet di IP che sono
connesse tra di loro da un collegamento
veloce, un raggruppamento di computer logico
e non fisico.
I siti vengono creati per 2 ragioni:
• ottimizzare il traffico
• permettere ad un utente di collegarsi ad un DC
utilizzando la connessione piu’ veloce.
468
• semplificano l’assegnazione delle permission agli
utenti , questo perché si possono semplicemente
assegnare le permission ad un gruppo.
• un utente puo’ essere membro di piu’ gruppi. si
possono nidificare, inglobare l’uno nell’altro. Un
gruppo eredita le permission del gruppo di cui e’
membro (solo in modalità nativa).
• Un gruppo puo’ avere max 5000 utenti, superata
questa soglia si puo’ aggiungere in un altro per
sommare gli account e superare questo limite
• Esitono 2 tipi di gruppi in AD:
• Security Group
• Distribution Group
469
&
• In entrambi i gruppi esistono altri 3 sotto-gruppi:
• Glogal Group:
– In mixed mode: possono contenere account dello stesso dominio ed
essere membri di domain local group.
In native mode: possono contenere account e global group dello stesso
dominio ed essere membri di global group dello stesso dominio e
universal e domain local di qualsiasi dominio.
• Domain Local Group:
– In mixed mode: possono contenere account e global group di qualsiasi
dominio e non possono essere membri di nessun gruppo di nessun
dominio.
– In native mode: possono contenere account , global group e universal
group di qualsiasi dominio e domain local group dello stesso dominio.
Possono essere membri di domain local group dello stesso dominio
• Universal Group:
– In mixed mode: Esistono solo in native mode .
– In native mode: possono contenere account, global group e universal
group di qualsiasi dominio ed essere membri di domain local e universal
group sempre di qualsiasi dominio.
470
&
(
• Trust monodirezionali
• Limite di 40MB del SAM
• Protocolli di autenticazione
471
• Active Directory utilizza un modello per la replica
di informazioni in essa contenute, modificando il
ruolo dei DC.
• In Windows NT, le informazioni di dominio erano
distribuite tra un PDC (Primary Domain
Controller) che possedeva solo la copia di
lettura delle informazioni, e un BDC (Backup
Domain Controller) che possedeva solo la
copia di scrittura.
472
• In Windows 2000 i DC non sono né primari
né di backup, ma sono semplici controller di
domini; grazie a questa innovazione
possiamo:
– si può essere convalidati e si possono ricevere
tutti i privilegi necessari a cercare le risorse
disponibili nella rete, dovunque ci si trovi;
– aggiornare la directory da qualsiasi DC e tale
modifica viene estesa a tutti gli altri DC.
473
%
• Il meccanismo della replica in Active Directory
consente di mantenere copie delle informazioni
sul dominio tra tutti i controller (DC).
• Tale meccanismo è in grado poi di garantire che
una singola modifica non venga replicata varie
volte sullo stesso dominio da svariati insiemi di
connessioni, perché altrimenti arriveremmo ad un
processo di replica infinita, con conseguente calo
della rete. Ciò viene ottenuto tenendo traccia sia
degli attributi modificati di un determinato
oggetto, sia del numero di volte con cui si sono
verificate tali modifiche.
474
%
• Il meccanismo della replica è implementato da una
particolare servizio, detto KCC (Knowledge
Consistency Checker), che opera nel contesto del
LSA e non è visualizzato nel Task Manager. Dopo
che il KCC ha stabilito le connessioni tra i controller di
dominio, la propagazione degli aggiornamenti delle
informazioni al vari DC viene eseguita dal DRA
(Directory Replication Agent).
• Le connessioni tra DC viene detta topologia di
replica. Active Directory tenta di avere almeno due
connessioni per ciascun DC, al fine di garantire la
replica anche in caso di fallimento di una
connessione: infatti in caso di fallimento, la replica
può comunque essere effettuata tra gli altri DC,
utilizzando l’altra connessione.
475
%
• Active Directory è il servizio di directory incluso in
win2k server
• Consente la gestione centralizzata di tutte le
risorse pubblicate: file, periferiche, connessioni
host, database, accessi al web, utenti, servizi ecc
• Usa DNS, LDAP
• Organizza gli oggetti in una gerarchia di OU
• Consente la connessione di più domini a una
struttura gerarchica
• Tutti i controller di dominio sono peer
476
%
• Lo SCHEMA Active Directory contiene una
definizione formale dei concetti e della struttura
dell’archivio Active Directory (classi, proprietà
delle classi e attributi)
• L’installazione di Active Directory sul primo
controller di dominio di una rete crea uno schema
predefinito.
• Questo schema contiene le definizioni delle
proprietà e degli oggetti più comuni, come utenti,
computer, stampanti e gruppi.
• Lo schema è flessibile. Cioè è possibile definire
nuovi attributi e tipi di oggetto.
477
%
• Il catalogo globale è l’archivio centrale
delle informazioni sugli oggetti di una
struttura di dominio o un’insieme di
strutture.
• quando si installa active directory sul
primo controller di dominio, quest’ultimo è
per impostazione predefinita, un server
del catalogo globale.
478
%
$
1) raccolta delle credenziali , user, password , dominio
2) il local security subsystem (LSA) usa il dns per trovare un domain controller
nel dominio specificato dall’utente . Il security subsystem contatta il servizio
Kerberos sul DC chiamando il Key Distribution Center (KDC) che gira sul DC
e richiedendo un token per far si che l'utente comunichi con il servizio
Kerberos. Il servizio Kerberos chiede ad AD di autenticare l’utente e di
contattare un Global Catalog Server per ottenere l’appartenenza di gruppo dell’
utente. Una volta ottenute tutte queste informazioni il servizio Kerberos ritorna
un “token” al computer client contenente il SID dell’utente, il gruppo di
appartenenza e il dominio; In questo modo il local security subsystem ottiene un
token per l’utente.
3) il LSA contatta di nuovo il servizio Kerberos sul DC richiedendo un altro token
per autorizzare l’utente ad avere accesso ai servizi Workstation sul computer
client per completare così il processo di logon.
4) Il servizio Kerberos autentica l’utente richiedendo ad AD e il Global Catalog di
verificare le informazioni contenute nel token dell’utente e costruisce un token
workstation per l’utente , contenente le informazione validate del token
originario e restituisce un session token al computer client.
In questo modo l’ LSA ottiene un token per il computer dal servizio Kerberos.
5) L’ LSA che gira sul computer client estrae dal token appena spedito le
informazioni ( SID, gruppo …) e costruisce il token d’accesso aggiungendo il
SID per il gruppo locale a cui appartiene l’utente ed i diritti assegnati.
6) Il token d’accesso servirà per accedere alle risorse e seguirà sempre l’utente.
479
'
• È un programma che gestisce la comunicazione
tra l’utente e il sistema operativo
• Interpreta i comandi
• La shell è un vero e proprio ambiente di
programmazione, oltre che un interprete di
comandi, con cui è possibile realizzare script per
automatizzare operazioni anche complesse e
ripetitive ed è altamente configurabile.
480
'
Le shell dispongono ognuna di un proprio set di
comandi e di regole sintattiche non sempre simili e
compatibili, dispongono di operatori, istruzioni di
selezione e di ciclo.
Bourne shell (sh)
• E'la shell originale di UNIX, scritta da Steve Bourn
dei Bell Labs. Disponibile su tutti i sistemi UNIX,
non possiede le agevolazioni interattive fornite da
shell più recenti come C e Korn. La Bourne shell
fornisce un semplice linguaggio per la sua
programmazione.
481
'
• C shell (csh) E'stata scritta all'
università di
Berkley, California. Come indica il nome, il suo
linguaggio di programmazione è molto simile al C.
• Korn shell (ksh) E'stata scritta da David Korn dei
Bell Labs. Fornisce le stesse prestazioni della C e
TC shell unitamente a un linguaggio di
programmazione simile a quello della Bourne shell.
• Bourne Again Shell (bash) E'stata scritta dalla
Free Software Foundation come shell di pubblico
dominio. Ampliamente usata in ambienti
accademici, fornisce tutte le stesse prestazioni
della C e Korn shell, con un linguaggio compatibile
con la Bourne.
482
'
• Public Domain Korn Shell (pdksh) Data l'
enorme
popolarità della Korn shell fra gli utenti Unix, ne è stata
sviluppata questa versione per Linux. La pdksh non
supporta tutte le caratteristiche della Korn, ma solo le
principali, aggiungendone di nuove.
• TC Shell (tcsh)
• E'una versione modificata della C shell, con cui è
interamente compatibile, introducendo però nuove
caratteristiche che ne rendono più agevole l'
interazione con
l'
utente. I maggiori miglioramenti rispetto alla csh sono
nell'
area dell'
editing della linea di comando.
• Le shell presenti nel nostro sistema sono elencate
nel file '
/etc/shells'
483
'
'
'
'
Simbolo/Comando Significato/Azione
>
>>
<
<<
|
&
;
*
?
Reindirizza l’output
Aggiunge l’output in coda al file
Reindirizza l’input
Passa un intero documento (reindirizza
l’input)
Effettua un piping dell’output
Esegue il processo in background
Separa più comandi scritti sulla stessa linea
di comando
Corrisponde a un o più caratteri qualsiasi in
un nome di file
484
'
'
'
'
Simbolo/Comando Significato/Azione
!n
[]
()
‘‘
““
\
Ripete il comando numero n
Corrisponde a uno qualsiasi dei caratteri
racchiusi tra le parentesi
Viene eseguito in una subshell
Sostituisce l’output del comando
racchiuso tra apici
Quoting parziale (permette l’espansione
delle variabili e dei comandi)
Quoting del carattere che segue
485
'
'
'
'
Simbolo/Comando
$var
$$
$0
$n
$*
#
bg
break
cd
continue
Significato/Azione
Utilizza il valore per la variabile
ID del processo
Nome del comando
N-simo argomento 0 < n <= 9
Tutti gli argomenti
Segnala l’inizio di un commento
Esecuzione in background
Break di istruzioni di ciclo
Cambia la directory corrente
Ripristina un ciclo di programma
486
'
'
'
'
Simbolo/Comando Significato/Azione
echo
eval
exec
fg
jobs
kill
newgrp
shift
stop
Visualizza un output
Valuta gli argomenti
Esegue un comando
Esecuzione in primo piano
Mostra i job attivi
Termina un processo in esecuzione
Cambia gruppo
Effettua uno shift
Sospende un processo in
background
487
'
'
'
'
Simbolo/Comando
Significato/Azione
suspend
umask
Sospende un processo in primo piano
Imposta o elenca le autorizzazioni sui file
che verranno creati
Cancella una variabile o la definizione di
una funzione
Attente che un processo in background
termini
unset
wait
488
'
1. cerca il file "/etc/profile" e, se esiste, lo
elabora.
2. Poi cerca il file "$HOME/.bash_profile“
3. Se non esiste, allora cerca
"$HOME/.bash_login".
4. Se non esiste neanche questo, allora
prova con "$HOME/.profile".
489
'
• Il file .profile è un file di configurazione
generale contiene la definizione delle
variabili d’ambiente
• .bashrc contiene comandi, alias e
dichiarazioni di ulteriori variabili.
490
• I
file
/etc/profile
e
~/.bash_profile
contengono le configurazioni per una shell
di login
• $HOME/.bashrc per quelle non di login.
• In pratica i primi file vengono letti ed
eseguiti solo per la prima shell che si apre,
e non per le successive le quali eseguono
ogni volta i .bashrc
491
4
•
•
•
•
•
•
/etc/profile
/etc/bashrc
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_logout
$HOME/.bash_history
492
'
• La shell è in grado di ricordare i comandi immessi
dall'
utente e normalmente sono salvati nel file
~/.bash_history
• Questo comportamento può essere modificato
configurando le variabili:
• HISTSIZE
– numero massimo dei comandi da memorizzare nel file
• HISTFILE
– Indica il file che deve essere usato per contenere i
comandi digitati normalmente il valore preimpostato è
~/.bash_history
• HISTFILESIZE
– Determina la grandezza fisica massima che può avere il
file.
493
;
&
Separatore di comandi
Esecuzione in background
()
Raggruppamento di comandi (attiva
una subshell)
Blocco di comandi
{}
|
><&
*?[]~!
Pipe
Reindirizzamento
Caratteri jolly per i file e comandi
494
:
'
•
•
•
•
•
•
•
•
comando &
comando1 ; comando2
(comando1 ; comando2)
comando1 | comando2
comando1 ‘comando2’
comando1 || comando2
comando1 && comando2
comando1 $ (comando2)
495
'
•
•
•
•
•
•
(date; who; pwd) > logfile
sort file | pr –3 | lp
emacs ‘grep –l ifdef *.c’
egrep ‘(yes|no)’ $(cat list)
grep XX file && lp file
grep XX file || echo “non esiste”
496
'
%
File
descriptor
Nome
Abbreviazione
comune
Default
0
Standard
input
stdin
Tastiera
1
Standard
output
stdout
Terminale
2
Standard
error
stderr
terminale
497
:
'
%
Reindirizzamento
Funzione
< file
Prende lo standard input dal file
> file
Dirige lo standard output nel file
>> file
Dirige lo standard output nel file
aggiungendo in coda se il file esiste già
<< testo
Legge lo standard input fino a una riga
identica al testo.
>| file
Forza la scrittura dello standard output nel
file anche se noclobber è impostato
n>| file
Forza la scrittura del file descriptor n nel file
anche se noclobber è impostato
<> file
Utilizza il file sia come stdin che come
stdout
498
:
'
%
Reindirizzamento
Funzione
n< file
Associa al file il file descriptor n
n> file
Dirige l’output proveniente dal file descriptor n
nel file
>&n
Duplica lo standard output nel file descriptor n
<&n
Duplica lo standard input dal file descriptor n
&>file
Dirige lo standard output e lo standard error nel
file
<&-
Chiude lo standard input
>&-
Chiude lo standard output
n>&-
Chiude l’output proveniente dal file descriptor n
n<&-
Chiude l’input proveniente dal file descriptor n
499
Sintassi
cmd1 | cmd2 |&
read –p var
print –p stringa
cmd <&p
cmd >&p
Effetto
La shell crea una pipe a doppio senso,
permettendo il reindirizzamento sia di
stdin che stdout
Legge l’input dal coprocesso dalla
variabile var
Scrive la stringa nel coprocesso
Ottiene l’input per il comando dal
coprocesso
Invia l’output del comando dal
coprocesso
500
• lanciare uno o più comandi come processi in
background.
• Questi processi sono chiamati coprocessi e sono
utilizzati per comunicare con un programma. Un
coprocesso si crea mettendo l'
operatore |& dopo un
commando.
• Entrambi stdin e stdout del commando sono piped verso
lo script. Un coprocesso deve incontrare le seguenti
restrizioni:
• Includi un new-line alla fine di ogni messaggio
• Manda ogni messaggio di output allo standard output
• Pulisce il suo stdout dopo ogni messaggio
• Il comando '
print -p'ti permette di scrivere verso il
coprocesso. Per leggere dal coprocesso, lancia il
comando '
read -p'
.
501
'
• Le variabili di ambiente sono quelle variabili create
autonomamente dal sistema operativo e normalmente sono
definite nel file '
/etc/profile', come per esempio SHELL, PS1,
PS2 .
• Le variabili locali sono quelle variabili definite dall'
utente e sono
generalmente definite nel file ~/.bashrc che si trova nella home
dell'
utente.
• La definizione di una variabile avviene in un modo intuitivo e
elementare
nome_variabile=valore_variabile
• Una volta definita la variabile la possiamo rendere disponibile ai
programmi che l'
utente usa con il comando export:
export nome_variabile
• Per accedere al valore di una variabile cioè per recuperarne il
valore dobbiamo far precedere al nome variabile il suffisso "$".
502
:
'
7
• Il carattere $ come prefisso
• Possono essere racchiuse tra { }
• Si assegna un valore utilizzando il carattere =
– Non vi devono essere spazi ne a dx ne a sx
• Generalmente le variabili sono visibili sono
all’interno della shell stessa. Per passare variabili
ad altri programmi chiamati all’interno della shell
si deve utilizzare il comando export.
• Se racchiuse da [ ] sono considerate come
variabili di array
503
:
Variabile
$var
$0
${n}
$#
$*
$@
$$
$?
$!
'
Significato
Il valore della variabile
Il nome del programma
Singoli argomenti nella riga di comando 1<= n <=9
Numero di argomenti nella riga di comando
Tutti gli argomenti nella riga di comando
Come $*, ma il contenuto viene suddiviso in parole
quando la variabile è racchiusa tra virgolette
Numero di processo della shell corrente
Indica lo stato dell’ultimo comando
Elabora il numero dell’ultimo comando in background
emesso
504
• ${variabile:-valore}
– Se la variabile esiste e non è nulla, restituisce il suo
valore, altrimenti restituisce il valore
• Restituire un valore di default nel caso la variabile non sia
definita
• ${variabile:=valore}
– Come sopra ma con valore NULL, inoltre imposta
• Impostare una variabile ad un valore di default nel caso non
sia definita
• ${variabile:?messaggio}
– Se la variabile esiste e non ha valore NULL, restituisce
il suo valore, altrimenti stampa il nome della variabile
seguita dal messaggio. Abbandona il
programma/script.
• Intercettare errori dovuti a variabili non definite
505
• ${variabile:+valore}
– Se la variabile esiste e non è nulla, restituisce
il suo valore, altrimenti restituisce NULL
• Si utilizza principalmente per verificare l’esistenza di
una variabile
• Verificate cosa restituisce
${variabile}
${#variabile}
506
#!shell
utilizzato nella prima riga dello script per
invocare una determinata shell.
o
source file
. file
legge ed esegue le righe di comando
contenute nel file che non deve essere
necessariamente un file eseguibile, ma
deve risiedere in una directory compresa
tra quelle presenti in PATH
507
• for x [in lista] do
comandi
done
Assegna ogni parola della lista a x e per ogni parola
assegnata esegue i comandi. Se l’argomento lista viene
omesso, allora vengono utilizzati i parametri posizionali
$@
for $file in *
do
rm –f $file 2> log.txt
done
508
&
• test <condizione> oppure [condizione]
– Valuta la condizione e se il suo valore è vero
restituisce zero; altrimenti restituisce un valore diverso
da zero. La condizione deve essere costruita così:
-d il file esiste ed è di tipo directory
-e il file esiste
-r il file esiste ed è leggibile
-s il file esiste ed ha una dimensione maggiore di zero
-w il file esiste ed è scrivibile
-x il file esiste ed è eseguibile
-L il file esiste ed’ è un link simbolico
f1-ef f2 i file f1 e f2 sono linkati
509
&
f1 –nt f2
f1 –ot f2
il file f1 è più nuovo del file f2
il file f1 è più vecchio dle file f2
-n s1 la stringa s1 ha una lunghezza diversa da zero
-z s1 la stringa s1 ha lunghezza zero
s1 == s2
le stringhe s1 e s2 sono identiche
s1 != s2
le stringhe s1 e s2 sono diverse
s1<s2 la stringa s1 è inferiore nell’alfabeto
s1>s2 la stringa s1 è superiore nell’alfabeto
n1 –eq n2
n1 –ge n2
n1 è uguale a n2
n1 è maggiore o uguale a n2
510
&
•
•
•
•
n1 –gt n2
n1 –le n2
n1 –lt n2
n1 –ne n2
n1 è maggiore di n2
n1 è minore o uguale a n2
n1 è minore di n2
n1 è diverso n2
OR
-o
AND
-a
NOT
!
511
&
if <condizione>
then <comandi>
else <comandi>
fi
elif
else if
La condizione può essere un comando
if [ $# -eq 0 ]; then
echo “Usa $0 files”
exit 1
fi
512
• while condizione; do comandi; done
– Il ciclo while `e quello solito, i test sono come per la if
• until condizione; do comandi; done
– il ciclo until prosegue finché il valore ritornato dal test è
non nullo cioè falso
• case stringa in regex) comandi esac
– questo comando implementa una scelta a più rami. La
cosa interessante è che il valore di stringa viene
testato confrontandolo con i pattern dati in maniera
simile a test che effettua la shell nell'
espansione dei
nomi dei file.
513
•
•
•
•
•
break e continue
echo stringa
eval comando argomenti
exec comando
let espressione
– let i=i+1
– let “i = i + 1”
• printf stringa
• read variabili
514
• readonly variabili
• shift n
• suspend
515
&
•
select v [ in items; ] do comandi; done
•
Permette all'
utente di selezionare una delle parole listate in items
stampandole sullo standard output associate ognuna ad un numero.
Se la lista items non viene fornita viene utilizzata la lista dei parametri
in input $0, ... , $9. Dopo la stampa viene stampato sullo schermo il
prompt definito dalla variabile PS3 e viene acquista la risposta
dell'
utente. Si distinguono 4 casi:
se la risposta corrisponde ad uno dei numeri stampati alla variabile v
viene assegnato l'
elemento corrispondente in items
se la risposta dell'
utente è una riga vuota la domanda viene riproposta
se la risposta corrisponde al carattere di fine file (^D) il comando
termina
in qualsiasi altro caso alla variabile v viene assegnato il valore nullo.
1.
2.
3.
4.
516
&
• La linea digitata dall'
utente viene memorizzata nella
variabile REPLAY. I comandi compresi tra do e done
vengono eseguiti ripetutamente riproponendo all'
utente
ogni volta la scelta. Per uscire dal ciclo è necessario
usare il comando return o break
517
• trap
– -l elenca i segnali
– trap “comandi” segnali
– Esegue i comandi se riceve uno dei segnali
trap “rm –f log.txt; exit” 0 1 2 15
518
4
'
'
$HOME/.cshrc o $HOME/.tcshrc
$HOME/.login
$HOME/.logout
519
'/
Reindirizzamento
'
%
Funzione
< file
Prende lo standard input dal file
> file
Dirige lo standard output nel file
>> file
Dirige lo standard output nel file aggiungendo in coda
se il file esiste già
<< testo
Legge lo standard input fino a una riga identica al testo.
>! file
Forza la scrittura dello standard output nel file anche se
noclobber è impostato
>>! file
Dirige lo standard output nel file aggiungendo in coda
se il file esiste già anche se noclobber è impostato
520
'/
'
Reindirizzamento
%
Funzione
cmd >& file
Dirige stdout e stderr nel file
cmd >&! file
Dirige stdout e stderr nel file anche se noclobber
è impostato
cmd >>& file
Aggiunge in coda al file lo standard output e lo
standard error
cmd >>&! file
Aggiunge in coda al file lo standard output e lo
standard error anche se noclobber è impostato
cmd1 |& cmd2
Effettua una pipe della combinazione dello
stderr e dello stdout
(cmd > f1) >& f2
Cmd | tee files
Invia stdout a f1 e stderr a f2
Invia stdout sia nel dispositivo standard sia ai
file
521
'/
Variabile
'
Significato
$var
$0
${n}
$*
$$
${?var}
$?0
Il valore della variabile
${var[i]}
Dove i può essere un intervallo m-n, -n, m-, *
Il nome del programma
Singoli argomenti nella riga di comando 1<= n <=9
Tutti gli argomenti nella riga di comando
Numero di processo della shell corrente
Restituisce 1 se var è impostato, altrimenti 0
Restituisce 1 se il nome del file in input è noto, 0 in caso
contrario
sort $argv[3-] > tmp.$$
522
<
:r
Restituisce la radice della variabile (ovvero la porzione che
precede l’ultimo punto)
:e
Restituisce l’estensione della variabile
:h
Restituisce l’intestazione della variabile (la porzione relativa alla
directory)
:t
Restituisce la coda della variabile (la porzione dopo l’ultimo
carattere slash /)
:gr
Restituisce tutte le radici
:ge
Restituisce tutte le estensioni
:gh
Restituisce tutte le intestazione
:gt
Restituisce tutte le code
:q
Effettua il quoting di una variabile contenente una lista di parole,
mantenendo separati gli elementi
:x
Effettua il quoting di un pattern
523
set k=(/progrs/num.c /book/chap.ps)
echo $k
/progrs/num.c /book/chap.ps
echo $k[2]:r
/book/chap
echo $k[2]:h
/book
echo $k[2]:t
chap.ps
echo $k[2]:e
ps
echo $k:r
/progrs/num /book/chap.ps
echo $k:gr
/progrs/num /book/chap
echo $k:h
/progrs /book/chap.ps
echo $k:gh
/progrs /book
echo $k:t
num.c /book/chap.ps
echo $k:gt
num.c chap.ps
echo $k:e
c /book/chap.ps
524
• Quelli del C
• =
• += -= *= /= %=
– riassegnamento dopo un’operazione
• &= ^= |=
– riassegnamento dopo un’operazione logica
• ++
– incremento
• -– decremento
525
• ls
• ls .
• ls *
• grep main.* *.c
• grep ‘main.*’ *.c
526
• cmp file1 file2
– Confronta due file, byte per byte
-c stampa i file differenti come caratteri
-i num ignora i primi num byte
-s lavora in silenzio, senza stampare alcun mesg
• 0 i file sono identici
• 1 i file sono differenti
• 2 i file sono inacessibili
• cmp –s old new && echo ‘Nessuna modifica’
527
• comm file1 file2
– Confronta le righe comuni a due file ordinati e
produce un output su tre colonne: righe presenti
su file1, righe presenti su file2 e righe in comune.
-num sopprime la stampa della colonna num
• Esempio
– comm –12 log1.dat log2.dat
528
• diff file1 file2
– Confronta due file di testo, linea per linea.
Restituisce le righe differenti tra i due file.
• -a tratta tutti i file come file di testo.
– Utile per verificare se file binari sono identici.
• diff3 file1 file2 file3
– Confronta 3 file restituendo:
•
•
•
•
==== i tre file sono differenti
====1 il file1 è differente dagli altri due
====2 il file2 è differente dagli altri due
====3 il file3 è differente dagli altri due
529
• cat
– Legge uno o più file e li scrive sullo standard output.
– Nel caso non venga specificato alcun file, legge dallo
standard input
– E’ possibile utilizzare gli operatori > e >>
• Esempio
– cat file1
• Visualizza il file file1
– cat file1 file2 file3 > all
• Concatena più file memorizzandoli su all
– cat file4 >> f5
• Aggiunge in coda a f5
– cat > temp1
• Crea un file a partire dall’input di terminale terminato con EOF
– cat > temp2 << STOP
• Crea un file a partire dall’input di terminale terminato con uno STOP
530
• cp [opzioni] file1 file2
• cp [opzioni] file directory
– Copia file1 in file2 oppure copia uno o più file su file
con gli stessi nomi nella directory directory.
-a preserva gli attributi dei file originali
-b effettua un backup dei file che altrimenti verrebbero
sovrascritti
-i visualizza un prompt prima di sovrascrivere i file di
destinazione
-p preserva tutte le informazioni inclusi il proprietario, il
gruppo, i permessi, data/ora.
-r copia ricorsivamente le directory
-u non copia un file nel caso in cui la destinazione contenga
già un file con lo stesso nome e data/ora modifica più
531
recente
&
• I permessi dei file sono memorizzati in una sequenza di
9 bit, dove ogni gruppetto di tre rappresenta i permessi per
una categoria di utenti (il proprietario, il gruppo, gli altri).
• Assieme a questi 9 bit ne esistono altri tre, posti all'
inizio,
che permettono di indicare altrettante modalità:
– SUID (Set User ID)
– SGID (Set Group ID)
– Sticky bit (Save Text Image)
• Si tratta di attributi speciali che riguardano prevalentemente
i file eseguibili. Solitamente non vengono usati e per lo più
gli utenti comuni ignorano che esistano.
532
"&$
&$
• SUID: serve per specificare che il
programma su cui è definito deve essere
eseguito con il nome utente del creatore
(OWNER) e non di colui che l’ha lanciato.
– E’ utilizzato nei programmi che richiedono “alti
diritti” anche se eseguiti da utenti che non ne
godono.
• SGID: simile a SUID, ma specifica il
gruppo con il quale dovrà essere eseguito
un programma
533
&
#/
• se impostato su un eseguibile, durante
l'
esecuzione salva una copia del programma
nella memoria virtuale;
– Viene usato per programmi di uso frequente (editor,
compilatori, ecc).
• Se impostato per una directory, significa che solo
il proprietario del file o della directory può
rimuovere il file dalla directory (
– solitamente usato in directory come /tmp scrivibili da
chiunque
– Quindi previene la cancellazione del file da parte di chi
non ne è il proprietario.
• Lo sticky bit non è descritto in POSIX.
534
(
• L'
indicazione della presenza di questi bit attivati
può essere vista anche nelle rappresentazioni in
forma di stringa.
• SUID = 4 = --s --- --• SGID = 2 = --- --s --• Sticky = 1 = --- --- --t
• Questa indicazione prende il posto del permesso
in esecuzione. Nel caso in cui il permesso in
esecuzione corrispondente non sia attivato, la
lettera (s o t) appare maiuscola.
535
'
• Modifica gli attributi di accesso di uno o più file
• chmod [opzioni] modo file
• Modo può essere un valore numerico o un’espressione
della forma:
<chi opcode permesso>
Le opzioni:
-c stampa informazioni riguardo i file che vengono modificati
-R attraversa le sottodirectory in modo ricorsivo, applicando i
cambiamenti richiesti
-v descrive dettagliatamente le informazioni su ogni file.
Indipendentemente dal fatto che siano state o meno modificate.
536
'
• Modo:
– Chi
•
•
•
•
u
g
o
a
utente
Gruppo
Altri
tutti (default)
– Opcode
•+
••=
aggiunge un permesso
rimuove un permesso
assegna un permesso rimuovendo i permessi
non specificati
537
'
• Modo:
– Permesso
•
•
•
•
•
•
r
w
x
s
t
u
• g
• o
lettura
scrittura
eseguibile o accessibile per le directory
impostazione dello UserID o del GroupID
sticky bit;
attribuisce all'
eseguibile in funzione i privilegi
dell'
utente a cui appartiene;
attribuisce all'
eseguibile in funzione i privilegi del
gruppo a cui appartiene;
permesso altri presente
538
'
• Modo:
– In alternativa è possibile usare i permessi tramite un
numero ottale (0-7)
• La prima cifra seleziona gli attributi set user ID, set group
ID, e sticky bit
– 4 imposta lo userID
– 2 imposta il GroupID
– 1 imposta lo sticky bit
• La seconda indica i permessi del proprietario
• La terza i permessi del gruppo
• La quarta i permessi di chiunque altro
– 4 lettura
– 2 scrittura
– 1 esecuzione
539
'
•
•
•
•
•
•
•
chmod u+x file
chmod 751 file
chmod u=rwx,g=rx,o=x file
chmod =r file
chmod 444 file
chmod a-wx,a+r file
chmod 4755 file
540
7
"&$
&$
• Facciamo una copia dell'
eseguibile touch nella propria
directory personale.
• gigio$ cd [Invio]
• gigio$ pwd[Invio]
/home/john
• gigio$ cp /bin/touch .[Invio]
• gigio$ ls -l touch[Invio]
• -rwxr-xr-x 1 gigio gigio 33156 Mar 2 08:46 touch
• Si deve agire temporaneamente come utente root per
cambiare la modalità dei permessi e la proprietà di questo
eseguibile.
• Come root cambiamo le proprietà del file.
• root# chown root.root touch[Invio]
• root# ls -l touch[Invio]
• -rwxr-xr-x 1 root root 33156 Mar 2 08:46 touch
541
"&$
&$
• Si attribuisce la modalità SUID.
• root# chmod u+s touch[Invio]
• root# ls -l touch[Invio]
• -rwsr-xr-x 1 root root 33156 Mar 2 08:46 touch
• Si può quindi ritornare allo stato precedente, lasciando i
privilegi di root. Proviamo a creare un file utilizzando
l'
eseguibile touch su cui è stato attivato il bit SUID.
• gigio$ ./touch superfile[Invio]
• gigio$ ls -l superfile[Invio]
• -rw-rw-r-- 1 root gigio 0 Mar 2 09:03 superfile
• Si può osservare che il file creato appartiene a root,
pur essendo stato creato da un utente comune.
542
• cksum
– Calcola la checksum
• chsh (-l -s)
– Cambia la shell di login
• file
– Determina il tipo di un file
• csplit
– Spezza i file in posizioni specifiche
• split
– Suddivide i file in modo uniforme
543
#
• mkdir [opzioni] [directories]
Crea una o più directory. E’ necessario avere i permessi di scrittura
sulla directory padre.
Opzioni
-m imposta la modalità di accesso per le nuove directory.
-p crea le directory padre intermedie nel caso non esistano
Esempio
mkdir user1; cd user1
mkdir tmp; cd tmp; mkdir tmp.old
Può essere sostituito da:
mkdir –p user1/tmp/tmp.old
544
• Elenca il contenuto di una o più directory.
• Opzioni
-a elenca tutti i file inclusi quelli nascosti o il cui nome inizia
con un punto
--color colora i nome dei file a seconda del relativo tipo di file
-i elenca l’inode di ogni file
-k elenca le dimensioni dei file in kilobyte
-l presenta un elenco in formato lungo (include i permessi,
proprietario, il gruppo, la data di modifica ecc)
-r elenca i file in ordine inverso
545
-t ordina i file in base alla data/ora di modifica
-u ordina i file in base dalla data/ora di ultimo
accesso
-F contrassegna i file aggiungendo /alle directory,
* ai file eseguibili, @ ai link simbolici, | alle
FIFO e = alle socket
-R elenca ricorsivamente tutte le sotto directory
-S ordina i file per dimensione dal più grande al
più piccolo
546
• sort
– Ordina le righe di uno o più file
• merge
– Unisce diversi file
• more, less
– Visualizza i file una schermata alla volta
• mv
– Sposta o rinomina file o directory
• wc
– Visualizza le informazioni sul numero di caratteri, di
parole e di righe di uno o più file.
547
• uniq file1 file2
– Rimuove le righe duplicate dal file1 e le invia a file2
• rm [opzioni] file
– Cancella uno o più file.
• rmdir
– Cancella uno o più directory vuote
• head [opzioni] [file]
– Mostra le prime linee di un file (10 di default)
• tail
– Visualizza le ultime linee di un file (10 di default)
• touch
– Aggiorna tara/ora di accesso e di ultima modifica di uno o
più file
548
• find [percorsi] [azione/condizione]
• Un comando particolarmente utile per cercare file.
• Il percorso di default è la directory corrente.
• Le condizioni possono essere:
–
–
–
–
raggruppate racchiudendole tra \( \)
Negate con ! ( In C shell utilizzare \! )
Fornite come alternative con l’opzione –o
Ripetute fornendo restrizioni di matching
549
• Condizioni e azioni
• -atime +n|-n|n
– Trova tutti i file per i quali l’ultimo accesso si è verificato più di n o
meno di n o esattamente n giorni prima della data corrente
• -ctime +n|-n|n
– Trova tutti i file modificati più di n o meno di n o esattamente n
giorni prima della data corrente
• -exec comando {}\;
– Esegue il comando su ogni file per il quale find ha rintracciato una
corrispondenza desiderata. All’esecuzione del comando,
l’argomento { } sostituisce il file corrente. L’intera sequenza deve
essere seguita da ;
550
• -follow
– Segue i link simbolici e tiene traccia delle directory visitate
• -group gruppo
– Cerca i file che appartengono al gruppo gruppo.
• -links n
– Cerca tutti i file con n link
• -name pattern
– Trova i file i cui nomi contengono una corrispondenza con
il pattern. E’ possibile utilizzare caratteri jolly, ma devono
essere forniti in sequenza di escape o tra apici.
• -ok comando {}\;
– Come per –exec ma richiede all’utente l’esecuzione del
comando
• -inum num
551
– Cerca i file il cui inode è num
• -perm nnn
– Cerca i file per i quali i flag dei permessi corrispondono
esattamente al numero ottale. Se si utilizza un segno
meno davanti al numero ottale si effettuerà una ricerca
“jolly”. Es. –perm –600 ricercherà tutti i file di tipo:
- rw- *** ***
• -user utente
– Cerca i file il cui proprietario è l’utente
• -path pattern
– Trova i file i cui nomi contengono una corrispondenza con
il pattern. E’ possibile utilizzare caratteri jolly, ma devono
essere forniti in sequenza di escape o tra apici. Accetta
percorsi completi a partire dalla directory di partenza
552
• -name –path –regex
• Esempi
– find /home –name log.txt
– find /home –name ‘*.mp3’ –user pippo
– find . \! –name ‘[A-Z]*’ –exec rm {}\;
553
• Esempi
– find /home –name log.txt
• Elenca tutti i file chiamati log.txt nella directory /home
– find /home –name ‘*.mp3’ –user pippo
• Elenca tutti i file mp3 di pippo a partire dalla directory /home
– find . \! –name ‘[A-Z]*’ –exec rm {}\;
• Cerca nella directory corrente tutti i file che NON iniziano con
una lettera maiuscola e li cancella
554
&
-c
Stampa il numero di righe per le quali è stata rintracciata una
corrispondenza. Vedere anche -v
-f file
Accetta un elenco di pattern da un file
-i
Ignora la differenza tra caratteri maiuscoli e minuscoli
-l
elenca i nomi dei file contenenti le corrispondenze.
-r
Legge ricorsivamente tutti i file delle sottodirectory
-s
Sopprime i messaggi di errore relativi ai file non esistenti o illeggibili
555
• fgrep [opzioni] string [file]
• Ricerca in uno o più file le righe per le quali è rintracciabile
una corrispondenza con la stringa string. l'
espressione può
essere solo una normale stringa e non un'
espressione
regolare.
• grep [opzioni] pattern [file]
• Ricerca in uno o più file le righe per le quali è rintracciabile
una corrispondenza con l’espressione regolare pattern.
• egrep [opzioni] [regexp] [file]
• Ricerca in uno o più file le righe per le quali è rintracciabile
una corrispondenza con l’espressione regolare pattern. Non
supporta le espressioni regolari \(, \), \n, \<, \>, \{, \}, ma
supporta le altre espressioni compreso il set +, ?, |, e ( ). E’
importante ricordare di racchiudere questi caratteri tra apici.
556
(
• I metacaratteri utilizzati nel pattern matching sono differenti da quelli
utilizzati per l’espansione dei nomi di file. Quando si impartisce un
comando, i caratteri speciali vengono prima letti dalla shell e poi dal
programma
• Quindi i metacaratteri non sottoposti a quoting vengono interpretati dalla
shell per l’espansione dei noi di file. Per esempio:
• grep [A-Z]* cap[12]
• Potrebbe essere espanso dalla shell in:
• grep Array.c Bug.c Compare.txt cap1 cap2
• E quindi cercare la stringa Array.c in Bug.c Compare.txt ecc
• grep “[A-Z]*” cap[12] oppure grep ‘[A-Z]*’ cap[12]
557
&
Simbolo
e
d
vi
sed
awk
grep
egrep
azione
.
si
si
si
si
si
si
Qualsiasi carattere
*
si
si
si
si
si
si
Zero o più occorrenze di ciò
che lo precede
^
si
si
si
si
si
si
Inizio della riga o stringa
$
si
si
si
si
si
si
Fine della riga o stringa
\
si
si
si
si
si
si
Effettua l’escape del carattere
che lo segue
[]
si
si
si
si
si
si
Uno dei caratteri dell’elenco o
dell’intervallo
\( \)
si
si
si
no
no
no
Memorizza il pattern per un
uso successivo
\n
si
si
si
no
no
no
Riutilizza il testo memorizzato
nell’nsimo \( \)
558
&
Simbolo ed
vi
sed awk grep egrep
Azione
{}
no no
no
si
no
no
Serie di istanze
\{ \}
si
si
si
no
si
no
Serie di istanze
\< \>
no
si
no
no
no
no
L’inizio o la fine della
parola
+
no no
no
si
si
si
Una o più occorrenze di
ciò che lo precede
?
no no
no
si
si
si
Zero o una occorrenza di
ciò che lo precede
|
no no
no
si
no
si
Separa le scelte possibili
per la corrispondenza (or)
()
no no
no
si
no
si
Raggruppa le espressioni
di corrispondenza
559
• [^ ]
– Corrisponde a qualsiasi carattere tranne quelli racchiusi
tra le parentesi
• \{n,m\} oppure {n,m}
– Corrisponde a un numero di occorrenze del carattere
che lo precede compreso in un intervallo numerico. Il
carattere che precede può anche essere
un’espressione regolare.
– \{n\} corrisponde esattamente a n occorrenze del
carattere che precede
– \{n,\} corrisponde ad almeno n occorrenze
– \{n,m\} corrisponde ad un numero di occorrenze
compreso tra n e m.
560
‘x?var’
‘[a-b]?[0-9]’
‘80[23]?86’
‘0\{5,\}’
‘bar’
‘^bar’
‘bar$’
‘B[aeiou]h’
‘B[^aeiou]h’
‘^…$’
‘^\.’
‘^\.[a-z]\{2\}’
‘kilo*’
‘compan(y|ies)
‘[A-Z] \{6\}[0-9]\{2\}’
‘(xy)+’
561
8
• Espansione: La shell di UNIX, prima di eseguire
una linea di comando, interpreta le variabili ed i
simboli speciali, sostituendoli (espandendoli)
con quanto “rappresentano”.
• Quoting: Meccanismi di “quoting” permettono di
inibire l’espansione e quindi di interpretare in
modo “letterale” simboli che altrimenti avrebbero
un significato speciale.
• Al termine del procedimento di espansione i
simboli di quoting sono rimossi in modo che non
ne resti traccia ad un eventuale programma che
riceva questi dati in forma di argomenti.
562
• apropos
– Cerca argomenti nelle pagine di manuale
• strings
– Cerca pattern di testo nei file binari
• whereis
– Comando di ricerca
563
#
# '
• Nei sistemi Unix i collegamenti sono molto
importanti e vengono usati di frequente. Si
distinguono due tipi di questi:
– collegamenti simbolici (symbolic link)
– collegamenti fisici (hard link).
• Attraverso il collegamento fisico si creano dei
riferimenti a dati esistenti in modo non
distinguibile da quelli originali;
• i collegamenti simbolici sono dei file speciali e
per questo distinguibili dai file originali.
564
&
• Un soft link è praticamente un nome diverso che si
da allo stesso file. Non occupa spazio su disco (se
non per un inode).
• Un hard link è praticamente una copia fisica del file
con il più il fatto che ogni cambiamento che fai
all'
originale (o alla copia) verrà fatta anche sulla
copia (o sull'
originale).
• Se si ha un link soft e si cancella l'
originale, il file
viene perso;
• se il link è hard resterà il link (ed il contenuto viene
mantenuto).
565
'
#
• In pratica, due voci nella stessa directory, o in
directory differenti, possono puntare allo stesso file.
• Quando si cancella un file, si elimina il riferimento al
suo inode dalla directory che lo contiene
formalmente. Quando un inode non ha più
riferimenti, viene considerato libero, e può essere
riutilizzato per un altro file. In altre parole, se si
utilizzano i collegamenti fisici, un file viene
cancellato effettivamente quando sono stati
eliminati tutti i riferimenti a questo.
566
• ln [opzioni] nome_sorgente nome_destinazione
• Crea dei link (pseudonimi) per i file permettendo di accedervi
con nomi differenti.
• Opzioni
-b effettua un backup dei file prima di rimuovere gli originali
-d permette di creare link “hard” verso le directory
-f forza la creazione del link (non chiede conferma prima di
sovrascrivere)
-i chiede conferma prima di rimuovere i file
-s crea un link simbolico
567
#
# ln -s /home/file.txt /tmp/primolink
– Link simbolico
$ ls -l
lrwxrwxrwx 1 gigio gigio 27 Mar 2 10:16 primolink ->
/home/file.txt
– La lettera che appare all'
inizio dei permessi, «l», indica
esplicitamente che si tratta di un collegamento simbolico. Alla fine,
viene indicato anche a chi punta il collegamento: .
– Si può osservare inoltre che i permessi di un collegamento simbolico
non esistono. Formalmente vengono mostrati come attivi tutti i
permessi degli ultimi 9 bit (lettura, scrittura ed esecuzione per tutti gli
utenti), perché quelli che contano sono in realtà i permessi del file (o
della directory) cui effettivamente punta il collegamento simbolico.
568
'
#
touch mio
$ ls -l mio
-rw-rw-r-- 1 ataschin ataschin 0 Mar 25 10:48 mio
$ ln mio tuo
$ ls -l mio tuo
-rw-rw-r-- 2 ataschin ataschin 0 Mar 25 10:48 mio
-rw-rw-r-- 2 ataschin ataschin 0 Mar 25 10:48 tuo
• Come si vede, con questa serie di operazioni si è giunti ad avere due
file, apparentemente indipendenti, ma se viene modificato il contenuto
di uno si vedono le modifiche anche sull'
altro.
• Si può osservare il numero che appare dopo i permessi: due. Indica
quanti riferimenti ha l'
inode corrispondente. In pratica, quel numero
indica quante voci puntano a quello stesso file. Non si può sapere
facilmente quali siano gli altri riferimenti. Si può solo conoscere il
numero dell'
inode.
569
'
#
$ ls -l -i mio tuo
223398 -rw-rw-r-- 2 ataschin ataschin 0 Mar 25 10:48 mio
223398 -rw-rw-r-- 2 ataschin ataschin 0 Mar 25 10:48 tuo
• Come si vede, i due file hanno lo stesso inode (il
numero che appare prima dei permessi), quindi
sono lo stesso file.
570
• Viene definito “scripting” un
qualunque linguaggio in cui il
codice viene interpretato al
momento da un sistema
integrato, invece di essere
compilato e/o interpretato da
un apposito programma.
571
'
•
•
•
•
•
•
•
•
•
•
•
call
choice
echo
endlocal
for
goto
if
pause
rem
setlocal
shift
572
A
!
• Fin dall'
introduzione di Windows, quello che è
sempre mancato ai programmatori ed agli utenti
più avanzati è stato un vero linguaggio di scripting
integrato nel sistema.
• Tutti i sistemi “moderni” hanno almeno un sistema
di scripting che consente ad un utente o ad un
programmatore di automatizzare passaggi
ripetitivi, creare piccoli programmi di utilità
quotidiana o dei veri e propri programmi.
• Unix è stato il primo sistema ad integrare un
esteso sistema di scripting interpretato
direttamente dalla shell, in grado di gestire cicli,
varibili, annidamenti (if) ecc. ecc.
573
A
!
• Il DOS aveva i file .BAT che, per quanto molto
meno efficienti (e la documentazione al riguardo
era molto confusa) svolgevano egregiamente
molti compiti.
• Windows non è mai stato dotato di un proprio
sistema di scripting, potevano essere
utilizzati dei file .BAT anche all'
interno di
Windows, ed è tutt'
ora così, ma un suo
linguaggio non lo ha mai avuto.
574
>
#
• L'
architettura OLE-COM-ActiveX è composta da un insieme di
tecnologie software che, sostanzialmente, hanno tutte il
medesimo scopo di consentire una maggiore interazione tra
programmi software differenti residenti, o meno, su di una
medesima macchina.
• La prima versione dell'
architettura OLE, era basata su dei
meccanismi atti a creare ed a manipolare dei documenti
composti.
• La successiva introduzione della seconda versione, oltre ad
essere un arricchimento della precedente nella creazione e
gestione dei documenti composti attraverso le tecniche di
collegamento ed incorporamento, come suggerisce il nome, ha
creato le potenzialità per un nuovo modo di concepire
l'
interazione tra software di qualsiasi tipo.
575
>
<
• L'architettura COM ha stabilito uno standard per l'interazione tra
software di qualsiasi tipo: librerie, applicazioni, software di
sistema, ed altro ancora.
• Virtualmente ogni tipo di tecnologia software può essere implementata
seguendo l'
approccio che COM ha definito, rendendone tangibili i
benefici in termini sia di prestazioni che di fruizione.
• Agli inizi del 1996 la Microsoft ha aggiunto a questo potente insieme di
tecnologie, un nuovo termine ActiveX, tale termine, nelle sue prime
apparizioni veniva associato con tecnologie correlate ad Internet ed
alle applicazioni che si sviluppano intorno ad essa, come il World Wide
Web. In breve tempo, dopo essere stata riferita al termine OLE, la
tecnologia ActiveX ha "usurpato" sempre più del territorio
tradizionalmente OLE, fino al punto che i diversi insiemi di tecnologie
costruite su COM, già raggruppate sotto il termine di OLE vengono ora
raggruppate sotto il termine di ActiveX, relegando nuovamente il
termine OLE alla precedente tecnologia di creazione di documenti
composti.
576
<
• Per comprendere l'architettura COM, è fondamentale
tenere in mente, che la tecnologia COM non è un
linguaggio orientato agli oggetti, ma uno standard.
• COM è lo standard binario che definisce un mezzo per le
applicazioni per interagire con tutto l'
insieme delle
tecnologie standard di OLE ed attualmente di ActiveX.
• COM non specifica come debba essere strutturata
un'
applicazione, i cui dettagli implementativi sono lasciati
al programmatore, ma specifica un modello ad oggetti e
le condizioni che permettono a tali oggetti di interagire
con altri oggetti.
• L'
unica condizione sul linguaggio di programmazione che
l'
architettura COM richiede è che il codice generato sia in
grado di creare strutture di puntatori e, esplicitamente o
meno, chiamate di funzione tramite puntatori.
577
<
•
Consideriamo la situazione in cui una parte di un programma ha
bisogno di accedere ai servizi forniti da un'
altra parte di software di
qualsiasi natura (una libreria, un'
applicazione, ecc...), la modalità in
cui ciò può avvenire dipende dal tipo di software in questione:
1.
un'
applicazione può collegarsi ad una libreria, e quindi ottenerne i
servizi tramite delle chiamate di funzioni in essa contenute.
un'
applicazione deve accedere ai servizi di un'
altra applicazione, la
quale viene eseguita interamente in un processo separato, in tal caso
i due processi comunicano tipicamente usando un meccanismo di
comunicazione inter-process, il quale normalmente richiede la
definizione di un protocollo tra le due applicazioni
un'
applicazione che voglia usufruire dei servizi offerti dal sistema
operativo. (syscall)
un'
applicazione necessiti dei servizi di un software che è in
esecuzione su di una macchina completamente differente,
accessibile via rete.
2.
3.
4.
578
<
• In generale un oggetto software è composto da
un insieme di dati e funzioni che manipolano i
dati.
• Un oggetto COM è caratterizzato dal fatto che
l'
accesso ai suoi dati è ottenuto esclusivamente
attraverso l'
uso di uno o più insiemi di funzioni
correlate. Tali insiemi vengono chiamati
interfacce, e le funzioni che ne fanno parte
vengono dette metodi.
• L'
unico modo per ottenere l'
accesso ai metodi di
un'
interfaccia sia quello di ottenere un puntatore a
tale interfaccia.
579
$
<
<+
• La soluzione proposta da Microsoft per
l’automazione delle applicazioni in ambiente
Windows, inizialmente denominata Component
Object Model (COM), si è successivamente
evoluta, diventando DCOM (Distributed
Component Object Model), per consentire la
costruzione di applicazioni distribuite, e quindi è
diventata COM+, integrandosi con l’architettura
Windows DNA Distributed InterNet Applications .
580
A
!
• Microsoft ha spostato il linguaggio di scripting dal Sistema
Operativo al singolo Applicativo: tutti i programmi più o meno
sofisticati esistenti in Windows hanno un loro, personale,
linguaggio di scripting con il quale si automatizzano le
operazioni che in DOS ed in Unix si fanno a livello di Sistema
Operativo.
• Oltre a creare una grande confusione e ad essere assai poco
pratico questo sistema è anche assolutamente non-portabile: il
linguaggio di Excel è diverso da quello di Word, che e'diverso
da quello di Lotus... e cosi'via.
• Per non parlare poi del fatto che, in moltissimi casi, questi
linguaggi risentono anche della nazionalizzazione dei vari
applicativi, per cui uno script (o macro) sviluppato dalla casamadre tedesca della nostra società, portato sul nostro Excel in
Italiano magari non funziona.
581
7
:
8
;
• Finalmente nel 1997, Microsoft si rese conto di questa
situazione, ed iniziò una campagna allo scopo di unificare
tutti i linguaggi di scripting dei suoi applicativi, portandoli
tutti ad un livello di unicità con l'
allora disponibile motore di
Visual Basic.
• Questa operazione non è ancora terminata, e gli unici
motivi per cui si muove con così tanta lentezza sono il
costo necessario per acquisire il motore di Visual Basic da
integrare nella propria applicazione e la necessità di
inserire nel proprio codice una vera e propria montagna di
richiami a tale motore per consentirne il funzionamento.
Insomma passare a VBScript per una società che ha già un
prodotto, non è per niente semplice.
582
A
!
• Un effetto collaterale di questo tipo di
azione, fu il rilascio, da parte di Microsoft
di una cosa denominata Windows
Scripting Host o WSH. Il WSH altro non
e'che il motore di Visual Basic, spogliato
di tutta la grafica e ridotto al mero
interprete del linguaggio, ed un minimo di
codice intorno per permettere il richiamo di
DLL standard.
583
A
!
• Nel caso del Windows Scripting Host, abbiamo il
supporto di due linguaggi: VBScript, cioè Visual Basic
Scripting Edition e JScript, la versione di JavaScript
implementata da Microsoft.
• Per creare uno script è possibile usare un qualunque
editor in grado di produrre file ASCII, il volgare Notepad
va'benissimo, il file deve avere estensione .VBS se è
VBScript e .JS se è JavaScript.
• Per eseguire lo script è sufficiente farci doppio click
sopra con il mouse.
• La differenza fondamentale tra un file .BAT ed un file di
Scripting, è che il file di Scripting è integrato nel sistema.
Un file di Scripting può avviare Word e '
pilotarlo'usando
le chiamate DDE o OLE, un file BAT non può farlo.
584
"
• Uno script WSH può accedere al registro di configurazione di
Windows, leggere e/o modificare delle chiavi del registro, può
accedere ad un file Excel usando Excel stesso attraverso l'
OLE
• Un semplice esempio Questo che segue e'un semplice esempio di
VBScript, se sul vostro sistema e'installato WSH potete provarlo e
verificarne l'
efficienza.
' Esempio di Windows Scripting Host
'
Dim userName
userName = InputBox( "Immetti il tuo nome", "Titolo della
finestra1" )
MsgBox "Ecco il tuo primo programma " & userName, vbOkOnly + _
vbInformation, "Titolo della finestra2"
' fine del programma
585
B
7:
• JavaScript (o JScript) è case-sensitive, quindi maiuscolo e
minuscolo fanno differenza, VBScript no
• Le istruzioni JScript devono essere concluse con ; (non
necessariamente pero'
), quelle VBScript no.
• Le variabili JScript si dichiarano con var, quelle VBScript con Dim
• Gli "oggetti" in JScript si creano usando new ActiveXObject(), in
VBScript si utilizza CreateObject()
• In JScript esistono solo "funzioni" che possono tornare o no un
valore, in VBScript abbiamo la separazione tra Function che
ritornano valori e Sub che non lo fanno.
• Attenzione: all'
interno dello script non c'
e'niente che specifichi se
lo script deve essere interpretato come VBScript o JScript, solo
l'
estensione del file lo identifica, quindi se mettiamo dei comandi
VBScript dentro un file con estensione .JS il "motore" ci segnalera'
un sacco di errori anche se i comandi sono sintatticamente corretti.
586
A
• Il WSH inizia ad interpretare lo script dalla prima linea di codice che
trova che non sia dentro una funzione o procedura, e procede una
linea alla volta all'
interno dello script fino ad arrivare in fondo. A
questo punto si interrompe.
• Non c'
e'nessun bisogno quindi di funzioni o procedure particolari
che siano eseguite, il WSH non cerca ne'"main" ne'altro.
Semplicemente cerca una istruzione eseguibile.
• In tutti i linguaggi di programmazione si comincia scrivendo un
programmino che scrive "Ciao Mondo", noi non facciamo differenza.
Il programmino in questione e'il seguente:
• MsgBox "Ciao Mondo" Scriviamo questa semplicissima riga dentro
un file, chiamiamo questo file ciao.vbs ed eseguiamolo facendoci
sopra doppio click. Il risultato sara'la comparsa di una finestrella
con sopra scritto "Ciao Mondo", esattamente come atteso. Abbiamo
appena imparato come visualizzare un messaggio in VBScript.
587
A
• Per fare domande all'
utente abbiamo la funzione
InputBox, mentre per memorizzare i dati abbiamo le
variabili.
• Le variabili in VBScript si dichiarano con l'
istruzione Dim,
tutte le variabili di Script sono di tipo variant, cioè sono
prive di un tipo fisso e possono essere convertite da un
tipo all'
altro senza problemi. Nella stessa variabile
possiamo memorizzare stringhe, caratteri, numeri ed altro
senza preoccuparci troppo.
• Lo script completo che esegue la nostra operazione è il
seguente:
• Dim nomeUtente nomeUtente = InputBox("Immettere il
proprio nome") MsgBox nomeUtente & " è il tuo nome"
588
A
• Le variabili devono essere dichiarate prima di
usarle
• Ogni comando o istruzione deve stare su una
linea a se stante
• Le linee bianche e gli spazi in eccesso sono
ignorati
• Le funzioni (che ritornano un valore) richiedono
le parentesi ()
• Le procedure (che non ritornano valori) non
richiedono parentesi
589
A
• WSH implementa tutti i normali calcoli matematici (+ - * /)
più le principali funzioni SIN, COS, ATN, LOG, SQRT
(SQuare RooT = Radice quadrata), conversione in
valore assoluto (ABS) e le funzioni di conversione tra i
vari numeri: INT per convertire un numero in intero,
Round per arrotondarlo.
• Cicli e controlli Fino ad ora abbiamo visto come il WSH
esegua le istruzioni una dopo l'
altra, ovviamente non
sempre vogliamo che lui esegua le cose in sequenza, di
tanto in tanto ci occorre che vengano eseguiti dei cicli o
che vengano valutate delle condizioni ed in base a
questo si faccia qualche cosa.
590
A
• WSH implementa tutti i principali meccanismi di controllo
dell'
esecuzione:
• If condizione Then istruzioni [Else istruzioni ] End If
Consente di verificare una condizione e di eseguire un gruppo di
operazioni piuttosto che un altro gruppo. La clausola If può essere
nidificata fino ad un massimo di 32 If una dentro l'
altra.
• Do....Loop Until condizione
Questo tipo di ciclo verifica la condizione di ripetizione al termine delle
operazioni, quindi il "corpo" del ciclo viene eseguito almeno una volta.
• Do While condizione ... Loop
Questo tipo di ciclo verifica la condizione di ripetizione prima delle
operazioni, quindi il "corpo" del ciclo può non essere mai eseguito.
• For variabile = valore_iniziale To valore_finale Step incremento ...
Next
Questo tipo di ciclo incrementa una variabile ad ogni ciclo, fino a che
la variabile non raggiunge un certo valore. Ottimo quando si sa in
anticipo quante volte occorre eseguire il ciclo
591
"
Dim
Dim
Dim
Dim
frase
lettera
contatore
fraseInversa
Do
frase = InputBox("Immettere una frase di almeno 10 caratteri")
Loop Until Len( frase ) > 10
fraseInversa = ""
For contatore = Len( frase ) To 1 Step -1
lettera = Mid( frase, contatore, 1 )
fraseInversa = fraseInversa & lettera
Next
MsgBox fraseInversa
592
4
• WSH consente di creare Funzioni e Procedure, queste
permettono di strutturare uno script in modo molto
sofisticato, e di riutilizzare parti di uno script in altri script
con molta facilità. La differenza fondamentale tra una
Funzione ed una Procedura è che la prima ritorna un
valore, mentre la seconda no.
• Per definire una Procedura si utilizzano le istruzioni:
Sub nome_procedura( [ variabile [, variabile ] )
corpo della procedura...
End Sub
• In cui nome_procedura è un nome univoco che identifica la
procedura stessa.
593
4
• Per definire una Funzione si utilizza:
Function nome_funzione( [ variabile [, variabile ]
)
corpo della funzione... nome_funzione =
valore_di_ritorno
End Function
• L'
istruzione nome_funzione =
valore_di_ritorno ci permette di ritornare un
valore con la funzione stessa.
• Per richiamare una funzione si utilizza
variabile = nome_funzione( [parametro [,
parametro...] )
594
"
Dim frase
frase = ""
Do
frase = InputBox("Immettere una frase di almeno 10 caratteri")
Loop Until Len( frase ) > 10
MsgBox InvertiFrase( frase )
Function InvertiFrase( frase )
Dim lettera
Dim contatore
Dim fraseInversa
For contatore = Len( frase ) To 1 Step -1
lettera = Mid( frase, contatore, 1 )
fraseInversa = fraseInversa & lettera
Next
InvertiFrase = fraseInversa
End Function
595
&
A
Append
Arp
Assoc
At
Atmadm
Attrib
Break
Buffers
Cacls
Call
Chcp
Chdir (cd)
Chkdsk
Chkntfs
Cipher
Cls
Cmd
Codepage
Color
Comp
-22.
Debug
Del (Erase)
Device
Devicehigh (dh)
Devinfo
Dir
Diskcomp
Diskcopy
Cluster
Cluster group
Cluster node
Cluster
netinterface
Cluster network
Cluster resource
Cluster
resourcetype
Diskperf
Dos
Doskey
Dosonly
Driveparm
Echo
Echoconfig
Edit
Edlin
Endlocal
Evntcmd
Exe2bin
Exit
Compact
Convert
Copy
Country
Date
596
&
A
Loadfix
Loadhigh (lh)
Findstr
Finger
For
Forcedos
Format
Ftp
Ftype
Goto
Graftabl
Graphics
-22.
Ipxroute
Irftp
Label
Lastdrive
Libpath
Help
Hostname
If
Install
Ipconfig
597
&
A
Lpq
Lpr
Mem
Mkdir (md)
Mode
More
Mountvol
Move
Nbtstat
Netsh
Print
Prompt
Protshell
Pushd
QBasic
-22.
Net accounts
Net computer
Net config
Net config
server
Net config
workstation
Net continue
Net file
Net group
Expand
Fastopen
Fc
Fcbs
Files
Find
Net help
Net helpmsg
Net localgroup
Net name
Net pause
Net print
Net send
Net session
Net share
Net start
Net statistics
Net stop
Net time
Net use
Net user
Net view
598
&
A
Vol
Winnt
Winnt32
Xcopy
Netstat
Nlsfunc
Nslookup
Ntcmdprompt
Path
PathPing
Sospendi
Pax
Pentnt
Ping
Popd
Portuas
Shell
Shift
Sort
Stacks
Start
Subst
Switches
Tcmsetup
Tftp
Time
Title
Tracert
Tree
Type
Ver
Verify
-22.
Rcp
Recover
Redirection
Rem
Rename (ren)
Replace
Rexec
Rmdir (rd)
Route
Rsh
Runas
Set
Setlocal
Setver
Share
599
&
• Il Registro di sistema di Windows è un database
che contiene le informazioni sulla configurazione
del sistema operativo.
• Occorre premettere che il registro rappresenta il
cuore stesso del sistema ed ogni incauta
manipolazione, può ingenerare il blocco secco di
Windows, con il conseguente rifiuto di ripartire.
• I dati sono memorizzati in gruppi logici di chiavi.
Non necessariamente nell'
ordine che vengono
presentati da regedt32.exe
• user.dat e system.dat
600
&
• HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
Cofigurazione del PC
Dati associati alle estensioni ed
applicazioni
HKEY_CURRENT_USER
Dati relativi all'
utente
corrente
HKEY_USERS
Dati di tutti gli utenti loggati
HKEY_CURRENT_CONFIG Dati della configurazione
attualmente in uso
• Meglio usare regedt32 perché certi pezzi di registry non sono
accessibili al regedit.
Però regedit ha la possibilità di effettuare ricerche.
• Le modifiche effettuate sotto CurrentControlSet necessitano il
reboot, quelle ad HKCU necessitano il logoff e logon.
601
&
• Subkeys HKLM :
\HARDWARE Contiene l'
inventario fisico. Viene
ricreato ad ogni boot
\SAM
Contiene utenti, gruppi e
computer del dominio
\SECURITY Contiene le security locali, come i
diritti utente
\SOFTWARE Contiene i parametri del software
installato
\SYSTEM
Contiene i parametri del software di
sistema, servizi, boot
602
&
• L'
accesso da remoto viene controllato dalla chiave:
HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
• Subkeys HKLM\SYSTEM\CurrentControlSet:
– i dati correnti del sistema
\Control
\Enum
\Hardware Profile
\Services
le impostazioni di boot di 2000, tra
cui l'
ampiezza del registry
I dati di P'
n'
P
Definisce configurazioni
mlutiple
Contiene tutti i servizi di
2000, i device driver e i file
system.
603
A-#
;
'
– netsh –c interface dump > rete.txt
;
– netsh –f rete.txt
– http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q242468&
604
4
) 4
*
• Questo tipo di servizio non richiede alcuna
identificazione; in pratica, è quasi come se si
condividesse il file system.
• Questo servizio viene utilizzato ancora per
consentire l'
utilizzo di sistemi senza disco
(diskless), che attraverso questo protocollo
ottengono ciò che gli serve per avviare il sistema
operativo.
• Utilizzato anche per caricare gli IOS dei router
• È importante sapere che questo tipo di servizio
esiste.
605
7
• È il comando inviato dai client ftp al server
per indicare che si intende usare la modalità
passiva per il trasferimento dei file.
• Il protocollo FTP richiede due connessioni:
– CONTROL
– DATA
606
7
• Nell’FTP attivo il client si collega alla porta 21
(CONTROL) del server. Per trasferire i file il
server si collega al client attraverso una
porta random negoziata in precedenza.
• Quando il client richiede la modalità passiva
il server gli risponde con la porta e l’indirizzo
ip al quale il client deve collegarsi per
ricevere i file.
607
[
][
]
-c <commento> imposta il campo comment
-d <directory> imposta la home directory (nome utente di
default)
-e <MM/DD/YYYYY> data di scadenza dell’account
-f <giorni> disabilita permanentemente l’account dopo n giorni
dalla scadenza della password
-g <gruppo> nome del gruppo iniziale o GID
-m crea la directory home dell’utente nel caso non esista già
-s <shell>
-u <uid>
• userdel –r account
• usermod [opzioni] utente
608
/
/
!
• È un elenco di utenti, password, directory home
(directory personali nel caso si utenti umani), shell
e altre informazioni personali. La struttura dei
record (righe) di questo file è molto semplice:
utente:password:UID:GID:dati_personali:directory_home:shell
• utente
– È il nome utilizzato per identificare l'
utente logico che accede al
sistema.
• password
– È la password cifrata. Se questa indicazione manca, l'
utente può
accedere senza indicare alcuna password. Se questo campo
contiene un asterisco (*) l'
utente non può accedere al sistema.
609
/
/
!
• UID
– È il numero identificativo dell'
utente (User ID).
• GID
– È il numero identificativo del gruppo a cui appartiene l'
utente
(Group ID).
• dati_personali
– Di solito, questo campo contiene solo l'
indicazione del nominativo
completo dell'
utente (nome e cognome), ma può contenere anche
altre informazioni che di solito sono inserite attraverso chfn.
• directory_home
– La directory assegnata all'
utente.
• shell
– La shell assegnata all'
utente.
610
/
/
• È l'
elenco dei gruppi di utenti. La struttura delle
righe di questo file è molto semplice.
• gruppo:password:GID:lista_di_utenti
• gruppo
– È il nome utilizzato per identificare il gruppo.
• password
– È la password cifrata. Di solito non viene utilizzata e di
conseguenza non viene inserita. Se è presente una password,
questa dovrebbe essere richiesta quando un utente tenta di
cambiare gruppo attraverso newgrp.
• GID
– È il numero identificativo del gruppo.
• lista_di_utenti
– È la lista degli utenti che appartengono al gruppo. Si tratta di un
elenco di nomi di utente separati da virgole.
611
&
!
nomeutente:passwd:UID:GID:nome_completo:directory:shell
Il file
contiene le seguenti informazioni:
612
9
•
Abilitare il kernel
–
•
Editare il file /etc/fstab
–
•
Inserire dove necessario usrquota e/o grpquota
Eventualmente inserire un controllo in un file di script di
sistema
–
–
•
quotacheck –avug
quotaon –avug
Creare quota.user e quota.group
–
–
–
–
•
Menù filesystem
touch <path>/quota.user
touch <path>/quota.group
chmod 600 <path>/quota.user
chmod 600 <path>/quota.group
Editare la quota con edquota –u <user>
613
9
• Editor di default vi
– Alcuni comandi
•
•
•
•
•
•
a
aggiunge dopo il cursore
ESC
esce dalla modalità di inserimento
i
inserisce prima del cursore
X
cancella un carattere all’indietro
x
cancella un carattere sotto
:wq
salva ed esce
614
4
• http://www.wu-ftpd.org
– v2.6.1
v.2.6.2
• Compilazione (tenere conto delle opzioni)
•
•
•
•
-enable-quota
-disable-dns
-enable-passwd (coppia passwd/shadow)
-enable-chmod
• File di configurazione
– Debian
/etc/wu-ftpd
– Red Hat e Slackware
/etc
• Abilitare il daemon
– /etc/init.d/xinetd.conf
– In Red Hat /etc/xinetd.d/ftp o wu-ftpd
615
&
service ftp
{
disable
socket_type
wait
user
server
server_args
log_on_success
log_on_failure
nice
}
= no
= stream
= no
= root
= /usr/sbin/in.ftpd
= -l -a
+= DURATION USERID
+= USERID
= 10
616
'
• cat > bin/ftpsh << EOF
#!/bin/sh
trap "/bin/echo NON PUOI ENTRARE; exit 0" 1 2 3 4
5 6 7 8 9 10 15
/bin/echo "PUOI USARE SOLO CLIENT FTP"
exit 0
EOF
•chmod a+x /bin/ftpsh
•Aggiungere /bin/ftpsh a /etc/shells
617
'
/
• In /etc/passwd
• User:*:uid:gid::/home/./user:/bin/ftpsh
618
'
•
•
•
•
•
•
•
•
•
•
•
•
•
•
/
cd /ftproot
mkdir etc bin lib
chown root.root etc bin lib
chmod 111 etc bin lib
cp /bin/ls bin
chown root.bin bin/ls
chmod 111 bin/ls
cd lib
cp /lib/ld-2.1.1.so .
cp /lib/libc-2.1.1.so .
ln –s ld-2.1.1.so ld-linux.so.2
ln –s libc-2.1.1.1.so libc-so.6
chmod 111 ld-2.1.1.so
chmod 555 libc-2.1.1.so
619
( '
)
620
4
• kwuftpd
• Modulo via web
• ACCESSO
• /etc/ftpaccess
• /etc/ftpusers
tutti gli utenti a cui verrà negato
l’accesso via ftp
• /etc/ftphosts
lista di host che possono o non
possono accedere al server ftp ma sarebbero
sufficienti /etc/hosts.deny e /etc/hosts.allow
621
4
• Ci sono 3 possibili metodi di collegamento
(classi) ad un server FTP linux (wu-ftpd)
– Anonymous
• User: anonymous password: email
– Real
• Accesso di un utente reale del sistema. Molto
pericoloso e sconsigliato in quanto permette di
spostarsi in tutto il sistema
– Guest
• Particolare forma di utente real.
622
• Per prima cosa è necessario definire delle
classi utenti
• class nome tipo address
• Es:
– class tutti guest *
– class lan real,anonymous 192.168.*
– class anon anonymous *
• Perché più classi?
623
•
•
•
•
limit
limit
limit
limit
lan 100
anon 20
anon 50
all 100
Any /msg.toomany
Any0800-1800 /msg.toomany.gio
Any /msg.toomany
Any /msg.toomany
624
/
• Opzione in compilazione –enable-ratios
• ul-dl-rate X classe
– Dove X va sostituito con un numero intero e indica il
rapporto 1/X che deve essere mantenuto tra i byte
inviati e quelli ricevuti (se uploado 1 MB ne posso
scaricare X)
• dl-free <path> classe
• dl-free-dir <path> classe
625
#
• umask maschera_ottale
– i file e le directory create non avranno i
permessi specificati
– Attenzione però quando si crea un file
utilizzando open o creat (parametro mode)
• mode & ~umask
626
• delete no anonymous,real
• rename no anonymouse
• overwrite no anonymous
• defumask 027
– (corrisponde a –rwxr-x---) oppure
• defumask 077 lan
– solo ai membri della classe lan
• Se dobbiamo permettere l’upload è bene configurare dove
si può fare:
• upload /home * no
• upload /home/pub/in yes <user> <group>
<permessi000> <dirs/nodirs>
627
!
• noretrieve <dir>
628
• Limite sui nomi dei file uploadati
• path-filter guest /msg.badname regexp
• Es di regexp:
• ^[-A-Za-z0-9_\.]*$ ^\. ^-
629
• log security anonymous,real
– salva tutti i comandi con cui gli utenti hanno
tentato di violare il sistema
• log transferts real inbound
• log commands anonymous
630
• timeout data 120
• timeout idle 900
631
'
• compilare con –enable-virtual
• dopo aver assegnato altri indirizzi IP alla vostra
scheda di rete creare il file ftpservers
• <ind_IP1> /etc/ftpd/dominio1
• <ind_IP2> /etc/ftpd/dominio2
• ci saranno i file di configurazione per quei server
• Ricordarsi di inserire in ftpaccess
– root <path>
– logfile <path>
632
%
• http://www.wu-ftpd.org/
633
• 1983: Nasce NetBIOS
– sviluppato dalla Sytec Inc. (oggi Hughes LAN System),
– commissionato dall’IBM per PC LAN
– per la sua PC LAN, una rete a banda larga capace di connettere fino a 72
dispositivi.
– Requisiti: interfaccia di rete piccola, semplice e veloce
• 1985: l’IBM sviluppò la nuova rete Token-Ring
– capace di connettere fino a 260 dispositivi per anello e di collegare
più anelli con dei bridges.
– NetBEUI (NetBIOS Extended User Interface), un’estensione di
NetBIOS.
• 1986: la Novell rilasciò l’Advanced NetWare v. 2.0 che
includeva NetBIOS come interfaccia di comunicazione.
• 1987: l’IBM lanciò il PC LAN Support Program per PC PS/2,
che includeva NetBIOS come driver.
• Nel marzo del 1987 fu pubblicato l’RFC 1001, che
descriveva “il protocollo standard per i servizi di NetBIOS su
trasporto TCP/UDP”.
634
• L'
obiettivo era quello di creare un protocollo su
misura per le LAN di dimensioni contenute (fino
a circa 200 nodi), quindi doveva essere piccolo,
semplice, veloce e doveva permettere di
assegnare nomi "umani" alle risorse, invece dei
"complessi" indirizzi usati dal TCP/IP. Inoltre
NetBIOS è stato progettato perchè usasse
intensamente i broadcast (messaggi uno a tutti),
piuttosto che interrogare un'
entità centralizzata.
635
(
:&
• NetBEUI
NetBios Extended User Interface
• NetBIOS
Network Basic Input Output System
• SMB
Server Message Block
636
…8
• Più che un protocollo, il NetBIOS, che lavora al livello
Sessione, è un'
API, cioè un'
interfaccia di programmazione
che, attraverso un set di comandi standard, unisce l'
SMB
con i protocolli di trasporto ed instradamento sottostanti,
come TCP/IP o IPX/SPX.
• NetBEUI è invece un protocollo, ed ingloba in modo nativo
sia l'
interfaccia NetBIOS, sia una semplice funzionalità di
trasporto, cioé formalizza il frame NetBIOS e lavora
direttamente su pacchetti 802.2.
• Il livello di trasporto del NetBEUI implementa il protocollo
OSI LLC2.
• Quindi, mentre il NetBIOS può lavorare solo se è abbinato
ad un protocollo di trasporto, NetBEUI non ha bisogno ne
di protocolli di trasporto ne di interfacce verso SMB.
637
<
…
• Per essere più precisi, l'
implementazione del
NetBEUI nei sistemi Microsoft differisce dalle
ultime versioni del NetBEUI standard (NetBEUI
3.0) per alcuni aspetti, pur preservandone la
compatibilità. Ad esempio, il NetBEUI di
Microsoft, chiamato NBF (NetBIOS Frame),
Frame)
presenta alcune migliorie rispetto al protocollo
standard, ed invece di interfacciarsi con i livelli
superiori tramite il consueto NetBIOS, utilizza
un'
altra interfaccia più flessibile, chiamata TDI,
Transport Driver Interface, cioè interfaccia del
dispositivo di trasporto.
638
<:
<
:
#
• Creato dall'
IBM a metà dagli anni 80 e successivamente
adottato e modificato dalla Microsoft, si tratta di un importante
protocollo, la cui implementazione è presente in quasi tutti i
sistemi Windows.
• Si tratta del protocollo di più alto livello, al di sotto del quale si
può trovare il NetBEUI oppure il NetBIOS
• Il suo funzionamento è client-server, del tipo richiesta-risposta,
dove il server è quel sistema che rende disponibili le proprie
risorse condivise al client.
• Essenzialmente il lavoro di questo protocollo è quello di
rendere possibile la condivisione di file e stampanti,
stampanti incluse
tutte le operazioni che comunemente vengono fatte su queste
risorse
• SMB è anche il responsabile del tanto comodo quanto
problematico "browsing" delle risorse di rete.
• Fa anche parte del protocollo SMB quel particolare elemento
che permette di disporre delle risorse remote come se fossero
locali. Il nome di questo componente è "redirector".
639
(
(
:&
• Il nome NetBIOS è l’identificatore del
computer sulla rete.
– Max. 16 caratteri; è permesso qualunque
carattere.
– Spesso il 16° carattere è riservato.
• I nomi non sono gerarchici: è impossibile
effettuare routing!
• Nomi unici e nomi di gruppo.
640
%
• Il sistema di nomi NetBIOS non è compatibile col DNS.
• Per questo si introduce il concetto di Scope NetBIOS.
• Lo scope è un sottodominio che include computer in
grado di comunicare con NetBIOS.
• I nomi NetBIOS di 16 byte vengono mappati su nomi
DNS di 32 caratteri.
• Una stazione può rivolgersi a un NetBIOS Name Server
(NBNS) per chiedere di risolvere un nome NetBIOS al
suo indirizzo IP.
• In Windows, il NBNS si chiama WINS (Windows Internet
Naming Service).
641
• Unicità dei nomi
• Non è possibile in routing
• I router non supportano il bradcast
• Quindi non scala!
642
&
<
• LMHOSTS è un file contenente una serie di nomi e il
corrispondente indirizzo IP.
• utile se non non si dispone di nessun server WINS e non si
riesce a risolvere un nome remoto tramite broadcast perché
il nodo è al di la di uno o più router. In realtà LMHOSTS può
tornare utile anche se il destinatario risiede nella stessa rete
locale. Infatti, per non essere obbligati a subire una marea
di broadcast sulla propria rete, è possibile precaricare le
associazioni del file LMHOSTS più usate nella cache.
• Sotto Windows, è possibile usare alcune ‘direttive’ per
modificare il funzionamento di LMHOSTS.
– #PRE indica di caricare nella cache un’associazione all’avvio.
– #INCLUDE indica di utilizzare un file LMHOSTS aggiuntivo. Spesso
usato per condividere un file LMHOSTS su tutta la rete.
643
(
• nbtstat fornisce informazioni sullo stato di
NetBIOS.
– nbtstat –a nome_remoto visualizza la
tabella dei nomi del computer remoto.
– nbtstat –c visualizza la cache locale dei
nomi.
– nbtstat –R svuota la cache e la ricarica.
– nbtstat –RR rilascia tutti i nomi registrati, e
poi li registra nuovamente.
644
&4
+
4
&
/
• CIFS definisce un protocollo standard per
l’accesso a un file system remoto, da usare su
Internet, facendo sì che gruppi di utenti possano
lavorare insieme e condividere risorse attraverso
Internet o all’interno di intranet aziendali. CIFS è
una tecnologia open e multipiattaforma, basata
sui protocolli di file sharing sviluppati su
Microsoft Windows e vari altri sistemi operativi
• CIFS si affianca a HTTP fornendo una
possibilità di condivisione e trasferimento dei file
più sofisticata dei precedenti protocolli, ad es.
FTP
645
• Condivisione di file (DFS) e di stampanti
• Gestione del processo di browsing della rete
• Autenticazione dei client che si loggano nel
Dominio.
• Risoluzione dei nomi come server WINS.
Per realizzare ciò SAMBA utilizza due demoni:
SMBD e NMBD
646
&
<:$
• Fornisce i servizi di condivisione di file e
stampanti per i clienti SMB (che possono
essere macchine MS-Windows o altre
macchine GNU/Linux).
• Si occupa della gestione delle sessioni di
comunicazione e delle autenticazioni
necessarie all'
accesso alle risorse che
vengono offerte in condivisione dal servente.
(N.B. il demone avvia una copia di se stesso per ogni
richiesta di servizio da soddisfare).
647
$
1. Condivisione a livello di risorsa
•
una password è assegnata alla risorsa che
si vuole condividere, questa verrà poi diffusa
a tutti coloro che avranno la necessità di
utilizzare tale risorsa.
2. Condivisione a livello utente
•
concetto di Dominio Windows NT (ogni
utente possiede un username ed una
password; accesso alla risorsa in base ai
privilegi assegnati ad ogni singolo utente)
648
&
(<:$
• Gestisce la risoluzione dei nomi NetBios in
indirizzi IP.
• Fornisce ai client la distribuzione
dell'
elenco delle risorse condivise
(browsing della rete).
• Fornisce servizi di rete come WINS server.
649
!
<:
1. Pacchetto strumenti lato servente
(NMBD, SMBD, smbstatus, ecc.)
2. Pacchetto strumenti lato cliente
(smbclient, smbmount, smbumount, ecc.)
3. Programmi indispensabili per il
funzionamento sia del servente che del
cliente (smbpasswd, smb.conf, ecc. )
650
&
<:
• Sezione [global]
• Sezione [homes]
651
&
<:
• Sezione [printers]
652
&
• SMBCLIENT
<:
smbclient –L
(per avere la lista delle risorse condivise dal servente)
smbclient
-U
(per connettersi alla risorsa nome_servizio (ad esempio
//serversamba/public)).
Risultato = un'
interfaccia testuale del tutto simile a quella
del programma ftp tradizionale, dove si possono eseguire
più o meno gli stessi comandi (get, put, cd, pwd, ecc.).
Un'
opzione importante è “-I” seguita da un numero IP,
con la quale si può appunto indicare il numero IP del
servente a cui ci si vuole connettere.
653
&
• SMBMOUNT
smbmount
<:
-o
# smbmount //serversamba/public /mnt/dirsamba -o
username=tizio%
smbumount
/etc/fstab
//serversamba/public /mnt/dirsamba smbfs
username=nomeutente%parola_d'
ordine
654
<:
• Master Browser (mantiene la lista delle macchine
attive per una sola sottorete e la aggiorna continuamente
per poi inviarla alle macchine che ne fanno richiesta)
• Master Browser di dominio (mantiene la lista
delle macchine attive per tutta la rete locale e raccoglie le
liste d’ogni sottorete per poi metterle a disposizione dei
master browser locali)
Si diventa Master Browser locale in base ad una
“elezione”. SAMBA può essere configurato per
vincere sempre questa “elezione”.
655
<:
$4
• Il DFS, introdotto con MS-Windows 2000, permette di
organizzare le condivisioni di rete in una struttura ad
albero svincolando gli utenti di tali risorse dalla
conoscenza della reale collocazione delle stesse sui
vari serventi
• MS Distributed File System
– redirige le richieste di un client verso una share su altri server.
– la comunicazione passa sempre attraverso il server samba.
– supporta nativamente:
• Windows 98/ME
• Windows NT 4.0
• Windows 2000
656
$(
• ad ogni risorsa TCP/IP può essere assegnato un
nome simbolico
• Sono necessari:
– un metodo per associare il nome simbolico di una
macchina all’indirizzo (o agli indirizzi) IP: risoluzione
diretta
– un metodo per associare ad un indirizzo IP al nome
simbolico della macchina: risoluzione inversa
• Domain Name System (DNS)
– definito presso ISI - USC 1984
– RFC 882, RFC 883 (obsolete)
– RFC 1034, RFC 1035 e successivi
657
&
• Ci sono due metodi per trasformare un
nome in un indirizzo IP e viceversa:
– elenco contenuto nel file hosts
– l'
uso di un DNS
• etc/network
• Windows Internet Naming Service (WINS)
• NetBEUI (NetBIOS Extended User Interface)
• NetBIOS (Network Basic Input Output System)
658
$
(
/
• Il DNS è un database distribuito basato sul
modello client/server che traduce il nome
di una macchina in un indirizzo Internet e
viceversa.
659
$(
• il DNS permette ad ogni organizzazione
che ha accesso ad Internet di:
– amministrare la relazione tra nomi ed
indirizzi del proprio dominio in maniera
autonoma ed indipendente
– risolvere i nomi fuori del proprio dominio
accedendo alle informazioni gestite da
altre organizzazioni
660
'
• database distribuito
• basato sul modello client/server
• tre componenti principali:
– spazio dei nomi e informazioni associate (Resource
Record - RR)
– nameserver (application server che mantiene i dati)
– resolver (client per l’interrogazione del nameserver)
661
• lo spazio dei nomi è organizzato secondo il
modello gerarchico:
– il database del DNS ha una struttura logica “ad
albero rovesciato”
– ciascun nodo dell’albero rappresenta un dominio
– ogni dominio può essere suddiviso in altri
domini: sottodomini
– ogni nodo ha una etichetta che lo identifica
rispetto al padre
– La radice dell'
albero è unica, e la sua etichetta è
vuota. Si indica anche come “.”
662
• il “domain name” di ogni nodo è composto dalla
sequenza delle etichette dal nodo “.“ (root),
separate da “.” (punto).
• un nome a dominio assoluto è detto anche “fullyqualified domain name” o FQDN
• il ”Distributed Information Tree” (albero dei nomi)
definisce una gerarchia dei nomi che rende ogni
nome a dominio completamente qualificato
univoco in tutto l’albero
• ai nodi sono associate le informazioni relative a
quel nome a dominio (RR)
663
&
$
(
• lo spazio dei nomi di Internet, per “tradizione”
(rfc1591), è strutturato secondo un modello misto
organizzazionale-geografico
• i Top-Level-Domain sono
– domini generali “storici” di tipo organizzazionale (gTLD):
•
•
•
•
•
•
•
com: organizzazioni commerciali
edu: università e ricerca USA
gov: organizzazioni governative USA
mil: organizzazioni militari USA
net: provider, centri di interesse per l’Internet, ..
org: organizzazioni non governative
int: organizzazioni internazionali, trattati, ...
– domini nazionali, rappresentati dai codici ISO 3166 di 2
lettere (ccTLD)
– il dominio arpa
664
• la decentralizzazione della responsabilità
amministrativa è ottenuta attraverso il
meccanismo della delega
• ogni dominio è amministrato da una autorità che
è responsabile:
– per le regole di naming valide all’interno del dominio
– per delegare la gestione dei domini figli (sotto-domini)
• il gestore del dominio “.” è InterNIC (per conto
dello IANA/ICANN), che delega l’autorità per la
gestione dei TLD
• ogni sotto-dominio può essere delegato
665
$
• le informazioni sono mantenute nei nameserver
– un nameserver mantiene i dati di una parte dello spazio
dei nomi: la zona
– ogni zona può comprendere vari domini
– su una porzione dell’albero non disgiunta
– un nameserver può gestire più zone disgiunte
– il dominio padre contiene solo puntatori alla sorgente
dei dati dei suoi sottodomini
• ciascuna zona contiene i nomi a dominio e i dati
appartenenti ad certo dominio, esclusi i nomi e i
dati dei sottodomini delegati ad altri
666
• la struttura gerarchica dello spazio dei nomi si
riflette nella relazione tra i nameserver
• il meccanismo della delega di autorità si basa sui
seguenti principi:
– ogni nameserver di un dominio, per essere conosciuto
nel DNS, deve essere stato registrato dal nameserver
del dominio di livello superiore. Questo crea la delega
– una volta delegata l'
autorità su una zona il nameserver
“padre” perde ogni possibilità di modificare le
informazioni dei domini contenuti nella zona delegata
– i nameserver delegati possono essere più d'
uno (è
consigliato averne almeno due, in alcuni casi è
addirittura obbligatorio), ma uno solo è quello che
possiede la vera autorità perché gestisce i files
contenenti le informazioni
667
668
(
• il nameserver è un processo che gira su una
macchina IP ed è in grado di fornire “risposte
autoritative” ad interrogazioni sui nomi a dominio
appartenenti ai domini per cui è autoritativo
• ogni programma che utilizza nomi a dominio usa il
resolver per accedere al nameserver. Le sue
funzioni sono:
– interrogare il nameserver
– interpretare la risposta (un RR o un errore)
– restituire l’informazione al programma richiedente
669
&
• L’applicazione chiede al name server di
default chi è www.dsi.unive.it
• Query per www.dsi.unive.it a root name
server (che risponde “referral NS .it”)
• Così via
670
&
• i root-server sono i nameserver della “.“ (radice).
• sono essenziali al funzionamento del DNS
perchè:
– contengono le informazioni sui Top-Level-Domain e sui
relativi nameserver ai quali ne delegano la gestione
– contengono le informazioni per la risoluzione inversa
(risoluzione Indirizzonome)
• ogni nameserver deve conoscere nomi ed
indirizzi dei root-server
• la lista aggiornata dei root-server è mantenuta da
InterNIC
671
(
• un nameserver si definisce autoritativo
quando è “in possesso dei dati” per una
determinata zona dell’albero dei nomi
• per un dominio vi possono essere più
nameserver autoritativi
– per avere una maggiore affidabilità è
fortemente consigliato averne più di uno
672
(
• un nameserver si definisce primario quando
possiede i file delle informazioni (“file di zona”).
Per ogni zona ci può essere un solo nameserver
primario
• un nameserver si definisce secondario quando
acquisisce in maniera automatica (mediante una
procedura denominata “zone-transfer”) i dati
relativi alla zona.
– i parametri che regolano il funzionamento della
procedura sono contenuti in uno specifico record del
nameserver primario
• il nameserver primario ed il/i nameserver
secondario/i sono chiamati nameserver autoritativi
673
'
• ogni nameserver mantiene traccia di tutte le
informazioni di cui è venuto a conoscenza
• tali informazioni sono utilizzate durante il processo
di risoluzione dei nomi
• le risposte date dal nameserver sulla base della
cache sono “not authoritative”
• le informazioni nella cache di un nameserver
rimangono valide per un tempo limitato (Time-ToLive, TTL)
– può dare luogo a “temporanee” inconsistenze
– aumenta la performance del sistema
674
:&($ ):
#
/ &
(
*
$
– è l’implementazione di nameserver più diffusa
su Internet
– sviluppata per Unix BSD, ne esistono porting
per altri ambienti
– BIND 9.2.2
675
&
• il file named.boot
– Configurazione di bind v 4.x.y
• Il file named.conf
– Configurazione di bind v 8.x.y
•
•
•
•
il file named.local
il file named.root
i file per la risoluzione diretta
i file per la risoluzione inversa
676
%
'
• tutto quello che si trova dopo il carattere “;” è un
commento
• il carattere “@” è sinonimo del dominio dichiarato
nella istruzione primary/master del file
named.boot/named.conf
• il carattere “*” è una wildcard
• tutti i nomi degli host specificati in un RR (eccetto
i PTR)
• possono essere scritti in notazione assoluta (con
il punto “.” finale) oppure in notazione relativa
(appende al nome della macchina quanto
dichiarato nella istruzione primary/master del file
named.boot/named.conf
677
E
• il file named.boot è il file di configurazione
principale per il funzionamento del processo
nameserver nella versione 4.x.y
– definisce la directory in cui si trovano gli altri file
necessari al funzionamento del nameserver (directory)
– definisce l’ordine con cui verranno restituiti gli indirizzi
delle singole macchine (sortlist)
– definisce quali sono i nameserver che possono
prelevare le zone per cui il nameserver è autoritativo
(xfernets)
– definisce l’interfaccia locale della macchina su cui il
processo nameserver è attivo
– definisce i domini per i quali il nameserver è autoritativo
(primary e secondary)
– definisce i riferimenti ai root nameserver (cache)
678
E
– definisce la directory in cui si trovano gli altri file necessari al
funzionamento del nameserver (directory)
– definisce la raccolta dei dati statistici relativi al processo
nameserver (statisticsinterval)
– definisce l’ordine con cui verranno restituiti gli indirizzi delle
singole macchine (topology)
– definisce quali sono i nameserver che possono prelevare le
zone per cui il nameserver è autoritativo (allow-transfer)
– definisce il livello e la distribuzione dei “log” prodotti dal
processo nameserver senza dover necessariamente il syslog
del sistema (logging/channel/category)
– definisce l’interfaccia locale della macchina su cui il processo
nameserver è attivo
– definisce i domini per i quali il nameserver è autoritativo
(master e slave)
– definisce i riferimenti ai root nameserver (hint)
– La sintassi ….è diversa dalla vecchia versione (/* */, //, # invece di ;)
679
&
• il file per la risoluzione diretta contiene i riferimenti
necessari all’associazione tra i nomi delle macchine
appartenenti ad una zona ed i loro indirizzi IP
• l’associazione è fatta mediante specifici record che
descrivono le caratteristiche e le funzionalità del dominio e
delle macchine che gli appartengono
• I più importanti ed utilizzati sono:
– SOA
– NS
– MX
–A
– CNAME
– HINFO
– TXT
680
&
• il record SOA (Start Of Authority) definisce qual’è la
macchina su cui è attivo il nameserver primario per il
dominio ed alcuni “parametri di funzionamento” dei
nameserver secondari
• La sintassi con cui deve essere scritto è la seguente:
<dominio> IN SOA <host> <e-mail dns manager> (
<numero progressivo> ;file Version
<tempo in secondi> ;Refresh
<tempo in secondi> ;Retry
<tempo in secondi> ;Expire
<tempo in secondi> ;Default
)
681
@ IN SOA nameserver dns-adm.nameserver (
19950308;file Version # yyyymmddv
86400
;Refresh = 1 day
1800
;Retry = 30 minutes
608400 ;Expire = 7 days
86400
;Default TTL = 1 day
)
682
&
(
• i record NS (NameServer) definiscono quali sono i
nameserver autoritativi per il dominio (è
fortemente consigliato averne almeno due per
ogni dominio, in certi casi è obbligatorio)
• devono essere specificati sia il nameserver
primario che tutti i nameserver secondari
• La sintassi con cui deve essere scritto è la
seguente:
• <dominio> <ttl> <classe> NS <nameserver host>
683
&
<@
• il record MX (Mail eXchanger) definisce
qual’è il Mail eXchanger per il dominio o per
la singola macchina
• è possibile avere più record MX sia per il
dominio che per una singola macchina
• La sintassi con cui deve essere scritto è la
seguente:
<dominio/host> <ttl> <classe> MX <preferenza>
<mail-gateway host>
684
&
• il record A (Address) definisce qual’è
l’indirizzo IP (numerico) per la singola
macchina
• La sintassi con cui deve essere scritto è la
seguente:
• <host> <ttl> <classe> A <indirizzo IP>
685
&
&(4
• il record HINFO (Host INFOrmation) fornisce
le informazioni relative all’hardware (cpu) ed
al sistema operativo della macchina a cui è
riferito
• La sintassi con cui deve essere scritto è la
seguente:
• <host> <ttl> <classe> HINFO <cpu> <sistema
operativo>
686
&
@
• il record TXT (TeXTual Information)
fornisce informazioni testuali (es:
dislocazione della macchina, servizi attivi,
ecc)
• La sintassi con cui deve essere scritto è la
seguente:
• <host> <ttl> <classe> TXT <testo>
687
&
( <
• il record CNAME (Canonical NAME)
definisce un nome alternativo con cui può
essere identificata la stessa macchina
• La sintassi con cui deve essere scritto è la
seguente:
• <alias> <ttl> <classe> CNAME <host>
688
&
• il file per la risoluzione inversa contiene i riferimenti
necessari all’associazione tra gli indirizzi IP delle
macchine ed il loro nome
• l’associazione è fatta mediante specifici record che
descrivono le caratteristiche e le funzionalità del
dominio e delle macchine che gli appartengono
• I più importanti ed utilizzati sono:
–
–
–
–
SOA
NS
PTR
(CNAME)
689
&
%
• il record PTR (PoinTeR) definisce la
corrispondenza tra l’indirizzo IP della
singola macchina ed il suo nome a domini
• La sintassi con cui deve essere scritto è la
seguente:
• <indirizzo IP> <ttl> <classe> PTR <host>
690
options {
directory "/var/named";
forward first;
forwarders {
<ip DNS1>;
<ip DNS2>;
};
};
zone "." IN {
type hint;
file "conf/named.cachingonly";
};
# Local Host
zone "localhost" IN {
type master;
file "conf/named.localhost";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "conf/named.local";
};
# rete
zone “ammsis.it" IN {
type master;
file "conf/named.ammsis.it";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "conf/named.net";
};
691
%
• il file di configurazione
– named.boot (Configurazione di bind 4.x.y)
– named.conf (Configurazione di bind 8.x.y)
•
•
•
•
il file named.local
il file named.root
i file per la risoluzione diretta
i file per la risoluzione inversa
692
$/
)$
*
• standard TCP/IP per la semplificazione della gestione delle
configurazioni IP.
• Estensione del protocollo BOOTP
• Attraverso il protocollo DHCP, i client possono ricevere una
serie di informazioni utili a definire la loro collocazione nella
rete circostante. Il minimo indispensabile di tali informazioni
è costituito normalmente dall'
indirizzo IP e dalla maschera
di rete. Dipende dalle caratteristiche del server la possibilità
di offrire informazioni aggiuntive. L'
elenco seguente è solo
un esempio delle informazioni che potrebbero essere date:
–
–
–
–
–
–
–
l'
indirizzo IP e la maschera di rete;
l'
indirizzo broadcast;
il nome del nodo e il dominio relativo;
l'
indirizzo del router predefinito;
l'
indirizzo del server DNS;
l'
indirizzo del server di stampa;
il dominio NIS.
693
$
• DHCPDISCOVER
– messaggio di broadcast per la richiesta di un server
DHCP. Utilizza 0.0.0.0 come indirizzo di origine e
255.255.255.255 come destinazione. Il messaggio
contiene il MAC Address e il nome computer per
identificare chi ha inviato la richiesta
• DHCPOFFER
– messaggio di broadcast con:
• mac address client
• indirizzo IP offerto con relativa maschera
• durata dell’indirizzo
• indirizzo IP del server
694
$
• DHCPREQUEST
– il client invia un messaggio di broadcast per
informare che ha accettato l’offerta. All’interno
del messaggio l’indirizzo IP del server DHCP.
• DHCPACK
– ACK per il DHCPREQUEST
• DHCPNACK
– NACK per il DHCPREQUEST
695
A
!
-222
$
• backup ogni 60 minuti del DB di DHCP
• winnt\system32\dhcp\backup
• se vogliamo modificare l’intervallo di backup:
– HKLM\system\CurrentControlSet\Services\DHC
PServer\Paramenters\BackupInterval
• in winnt\system32\dhcp troviamo:
– dhcp.mdb
DB del DHCP
– tmp.edb
DB temporaneo
– J50*.log
tutte le transazioni del DB
696
&
0
• Questo server si compone del demone dhcpd, il
quale si avvale della configurazione contenuta nel
file /etc/dhcpd.conf, inoltre utilizza il file
/etc/dhcpd.leases per annotare gli indirizzi
concessi ai vari clienti, finché questi restano
validi. Quest'
ultimo file, /etc/dhcpd.leases, deve
esistere (vuoto) prima che il server possa essere
avviato la prima volta.
• Il problema di organizzazione del server si limita
quindi alla configurazione del file /etc/dhcpd.conf
697
'
E
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.149;
range 192.168.1.200 192.168.1.249;
default-lease-time 604800; # una settimana
max-lease-time 2592000;
# 30 giorni
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1,
192.168.1.2;
option domain-name "brot.dg";
}
698
&
• I dati rappresentano la principale ricchezza di
un'
azienda e sono una componente critica per il
business.
• Ovviamente la criticità è di diverso tipo a secondo
delle aziende, ma tutte dovrebbero attuare
un'
accurata politica di protezione e backup delle
proprie informazioni.
• Il backup dei dati rappresenta quindi una delle
applicazioni principali delle risorse di storage;
l'
importanza di effettuare copie dei dati per la loro
protezione e archiviazione è evidente e non
richiede ulteriori commenti.
699
:
#
• I dati sono preziosi.
• Vi costerebbe tempo ricrearli e questo costa denaro
soprattutto in un’azienda.
• Quindi protezione e provvedimenti per evitare di
perderli.
• Ci sono principalmente quattro ragioni per cui si
possono perdere dei dati:
–
–
–
–
–
guasti all'
hardware
bachi del software
azione umana
Disastri vari
Perciò riteniamoci fortunati se funziona qualcosa
700
#
• In precedenza le risorse di storage erano connesse
direttamente a un server e l'
unico modo per effettuare il
backup all'
interno della rete prevedeva che i dati venissero
trasferiti all'
unità di backup attraverso la LAN. Questo tipo
di approccio presenta diversi inconvenienti.
• Per esempio, dato che il traffico di backup transita sulla
LAN, ne compromette le prestazioni generali occupando
banda, tanto più nei casi in cui vi sono limitate finestre
temporali libere per le attività di backup e ci si trova a
dovere effettuare operazioni di trasferimento di grandi
quantità di dati. Inoltre, in questo approccio al backup, il
server è collocato direttamente nel percorso dei dati e si
consumano perciò risorse server in termini di lavoro della
CPU, bus di sistema e utilizzo della memoria.
701
#
• Le tecnologie a nastro rappresentano ancora
quelle preferite e più economiche per questo tipo
di applicazione, ma acquista sempre più
consensi la tecnologia ottica, specialmente negli
ambienti dove risulta necessario un rapido
ripristino dei dati.
• Nell'
ultimo triennio il modo di effettuare il backup
è cambiato profondamente con l'
avvento dei
concetti di NAS e SAN.
– SAN (Storage Area Network)
– NAS (Network Attached Storage)
– DAS (Direct Attached Storage)
702
:
#
• La paranoia è un requisito richiesto per il
responsabile del backup!
•
•
•
•
E il backup del backup
E il backup del lettore di backup
E se il pc va in crash finché fa il backup?
E’ compito dell’amministratore di sistema
pensare a tutte queste cose.
• La ridondanza dell’hardware e del software
703
:
#
• La decisione più importante sui backup è la
scelta del mezzo: dovrete considerarne
– il costo, l'
affidabilità, la velocità, la disponibilità
e l'
utilizzabilità.
DAT, CDROM, FLOPPY, HD, DVD, Nastri.
704
#
• Di cosa fare il backup
• Con cosa fare il backup
– Hw/sw
• Quando fare il backup
• Tipo di backup
– Normale
– Copia
– Differenziato
– Incrementale
– Giornaliero
705
&
• syslogd
Demone per l'
annotazione nel
registro del sistema.
• /etc/syslog.conf
Configurazione di syslogd.
• logger
Aggiunge delle annotazioni nel
registro del sistema.
• klogd
Demone per la registrazione dei
messaggi del kernel.
706
4
• Registro del sistema
• Il registro del sistema (syslog) è la procedura
di registrazione degli eventi importanti
all'
interno di un cosiddetto file di log, ovvero
un file delle registrazioni.
• Questa procedura è gestita principalmente
dal demone syslogd, che viene configurato
attraverso /etc/syslog.conf. Altri programmi o
demoni possono aggiungere annotazioni al
registro inviando messaggi a syslogd.
707
/
• /etc/syslog.conf
• È il file di configurazione utilizzato da syslogd per definire
in che modo devono essere gestiti i messaggi da
registrare. Se si vogliono apportare modifiche a questo file
è necessario fare in modo che venga riletto da syslogd.
(segnale SIGHUP)
kill -HUP PID_di_syslogd
• La sintassi per l'
utilizzo di questo file di configurazione è
relativamente semplice.
• Le righe vuote e quelle che iniziano con il simbolo # sono
ignorate.
• Le altre sono record composti da due campi:
– selezione
– azione
708
/
• Il campo che definisce la selezione, serve a
indicare per quali eventi effettuare un'
annotazione
attraverso l'
azione indicata nel secondo campo.
• Questo primo campo si divide in due sottocampi,
uniti da un punto singolo (.), e questi si riferiscono
ai servizi e alle priorità.
• I servizi sono rappresentati da una serie di parole
chiave che rappresentano una possibile origine di
messaggi
• Le priorità sono altre parole chiave che identificano
il livello di gravità dell'
informazione.
709
/
• Le parole chiave riferite ai servizi possono essere:
–
–
–
–
–
–
–
–
–
–
–
–
auth;
authpriv;
cron;
daemon;
kern;
lpr;
mail;
news;
syslog;
user;
uucp;
da local0 a local7.
710
/
• Volendo identificare tutti i servizi si può usare l'
asterisco
(*), mentre per indicarne un gruppo se ne può inserire un
elenco separato da virgole (,).
• Le parole chiave riferite alle priorità possono essere quelle
seguenti, elencate in ordine di importanza crescente, per
cui l'
ultima è quella che rappresenta un evento più
importante:
– debug;
– info;
– notice;
– warning;
– err;
– crit;
– alert;
.
711
/
• In linea di massima, l'
indicazione di una parola
chiave che rappresenta una priorità implica
l'
inclusione dei messaggi che si riferiscono a quel
livello, insieme a tutti quelli dei livelli superiori. Per
indicare esclusivamente un livello di priorità,
occorre fare precedere la parola chiave
corrispondente dal simbolo =. Si possono indicare
assieme più gruppi di servizi e priorità, in un solo
campo, unendoli attraverso un punto e virgola (;).
Si possono escludere delle priorità ponendo
anteriormente un punto esclamativo (!).
712
/
• Il secondo campo, quello che definisce l'
azione,
serve a indicare la destinazione dei messaggi
riferiti a un certo gruppo di servizi e priorità, come
definito dal primo campo. Può trattarsi di un file o
di altro, a seconda del primo carattere utilizzato per
identificarlo. Segue l'
elenco.
• /
Se il primo carattere è una barra obliqua
normale, si intende che si tratti dell'
indicazione di
un percorso assoluto di un file destinatario dei
messaggi. Può trattarsi anche di un file di
dispositivo opportuno, come quello di una console
virtuale.
713
/
• |
Se il primo carattere è una barra verticale, si
intende che la parte restante sia l'
indicazione del
percorso assoluto di una pipe con nome, ovvero di
un file FIFO
• @
Se il primo carattere è il simbolo @, si
intende che la parte restante sia l'
indicazione di un
elaboratore remoto, che ricevendo tali messaggi li
inserirà nel proprio sistema di registrazione.
• Elenco di utenti
Se il primo carattere non è
scelto tra quelli elencati fino a questo punto, si
intende che si tratti di un elenco di utenti (separati
da virgole) a cui inviare i messaggi sullo schermo
del terminale, se questi stanno accedendo in quel
momento.
714
/
• *
Se il primo e unico carattere è un
asterisco (*), si intende che i messaggi
debbano essere inviati sullo schermo del
terminale di tutti gli utenti connessi in quel
momento.
• Gli stessi messaggi possono essere inviati
anche a destinazioni differenti, attraverso più
record in cui si definiscono le stesse coppie
di servizi e priorità, oppure coppie differenti
che però si sovrappongono.
715
/
•
•
•
•
•
•
*.=info;*.=notice
*.warning
*.=debug;*.=info
*.=notice;*.=warning
*.=err;*.=crit
*.=alert;*.=emerg
/var/log/messages
/var/log/syslog
/dev/tty9
/dev/tty10
/dev/tty11
/dev/tty12
• Invia i messaggi info e notice nel file
/var/log/messages, i messaggi da warning in su nel
file /var/log/syslog, quindi suddivide nuovamente i
livelli di priorità e li invia a quattro diverse console
virtuali, da /dev/tty9 a /dev/tty12.
716
(
!
# 4
/
• Quando si vuole condividere una medesima
porzione di filesystem fra due o più macchine
connesse in rete, la soluzione più diffusa, pratica e
performante consiste nel ricorso al Network File
System.
• Introdotto da SUN per i sistemi diskless è diventato
ben presto il meccanismo standard con cui tutti i
sistemi Unix condividono lo spazio disco su una
rete.
• NFS è basato su una architettura client-server,
quindi il server “esporta” il contenuto di una
porzione di filesystem rendendolo accessibile ai
vari client
717
%
• Tutto ciò viene ottenuto grazie ad una tecnologia
(anch’essa sviluppata da SUN) l’RPC, Remote
Procedure Call
• RPC fornisce una serie di procedure che un client
può invocare inviando una specifica richiesta la
server.
• Affinché lo scambio di dati possa avvenire anche
tra architetture differenti, i dati vengono convertiti
in un apposito formato chiamato:
– XDR (EXternal Data Representation)
• Molto vulnerabile
718
%
• Ciascuna delle procedure offerte dal un
server rpc viene chiamata programma e
viene identificata da un program number.
• /etc/rpc
lista dei program number
• Ogni programma, inoltre, nel momento in
cui viene invocato acquisisce un version
number, a partire da 1 e viene
incrementato ad ogni nuova richiesta
719
• Gli autori di RPC non hanno voluto ricorrere a
porte privilegiate.
• Come fanno, i client a conoscere su quale porta è
mappato un program number?
• Un demone chiamato portmapper
(/sbin/rpc.portmap) registra tutte le porte che può
allocare (sia dal lato client che server)
• Quindi quando un client deve stabilire una
connessione, chiede tramite il proprio portmapper
a quello del server quali porte TCP e/o UDP
debbano essere riservate alla comunicazione.
720
• Portmapper
porta 111 (TCP e UDP)
• Per conoscere quali programmi RPC e in quante
versioni siano disponibili su un server si può
usare (come root) il comando:
– rpcinfo –p <nomeserver>
• ATTENZIONE: questo comando si può eseguire
da qualsiasi pc che sia in grado di comunicare col
server stesso
– Quindi grossa vulnerabilità
• /etc/host.deny
• /etc/host.allow
portmap: ALL
portmap: 127.0.0.1, ind1, ind2
721
(4
• Per accedere ad un filesystem esportato via
NFS si dovrà montarlo.
• mount –t NFS <indirizzo>:<il percorso che
punta alla directory sul server da cui inizia
la porzione del filesystem da montare>
• Spesso throughput non ottimale
– NFSv2
1024 buffersize
– NFSv3
2048 buffersize
– È bene portare a 8192
• Più sono i client più dovrà essere il buffer
722
• mount –o rsize=<byte>, wsize=<byte>
– Buffer di lettura e scrittura
• mount –o nolock
– Disabilita il locking delle transazioni
723
(
…
• Un demone /usr/sbin/rpc.mountd gestisce le
richieste di mount
• Questo demone legge il file /etc/exports che
contiene la lista dei punti di mount autorizzati
e degli host che vi possono accedere
• Dal kernel 2.2.x mountd legge da
/var/lib/NFS/estab cmq /etc/exports resta il
file di amministrazione NFS
724
• Se la richiesta è valida il server comunica al client
un magic cookie, un numero causale che
identifica quella particolare richiesta di mount
• Il flusso di dati viene gestito nel server dal
demone /usr/sbin/rpc.nfsd <num thread>
• Sia sul client che sul server gira lockd che
gestisce il locking degli accessi ai singoli file.
• Attenzione alle architetture 64bit – 32 bit
725
/
/ 0
• Sintassi:
– <path> <nome host o indirizzo>(opzioni)
• Esempio:
– /home 192.168.1.*(rw,no_root_squash)
• Normalmente i file che appartengono a root
vengono rimappati su nobody l’opzione
no_root_squash lo evita
• Altre opzioni
– ro, rw
726
%
• Demoni
–
–
–
–
rpc.mountd
rpc.nfsd
rpc.quotad
rpc.statd
attiva il Network Status Monitor
meccanismo di lock recovery in caso di crash
• Comandi
– NFSstat
statistiche erogazione servizio
quali client montano nfs
– Showmount
– rpcinfo
• File
– /etc/exports
– /var/lib/NFS/etab
727
A
! 1
728
F
•
Il kernel è il cuore del sistema operativo, il quale si
occupa di svolgere le funzionalità più importanti come la
gestione del multitasking, l’interfaccia con l’hardware e
le chiamate di sistema.
•
Tutti gli altri programmi utilizzano quindi le funzioni
fornite dal kernel e in questa maniera non devono
colloquiare direttamente con l'
hardware.
•
Su Linux il kernel puo essere costituito da un unico file
solitamente chiamato vmlinuz, o
o
oppure alcune parti possono essere compilate in moduli
separati caricabili e scaricabili dalla memoria in maniera
dinamica, ottimizzando così l'
uso della RAM.
729
F
• Linux ha due versione del kernel che viaggiano su
binari paralleli, una versione è quella stabile, ed ha
numerazione pari dove per pari si intende la
seconda parte del numero.
• Mentre la versione in corso di sviluppo ha la
seconda parte dispari. Le versioni sperimentali
sono destinate a tutti coloro che collaborano allo
sviluppo del kernel di Linux.
730
#
•
•
Procurarsi i sorgenti
Decomprimere i sorgenti
– Come root in /usr/src
– cd linux
•
ora:…
731
– È l'
operazione più delicata attraverso la quale
si definiscono le caratteristiche e i componenti
del kernel che si vuole ottenere.
– Ogni volta che si esegue questa operazione
contenente la
viene riutilizzato il file
configurazione impostata precedentemente, e
alla fine la nuova configurazione viene salvata
nello stesso file.
• make config
732
• make dep
• make clean oppure make mrproper
– Serve a eliminare file e collegamenti vecchi
che potrebbero interferire con una nuova
compilazione
– mrproper elimina il file .config
• make bzImage
• /usr/src/linux/arch/i386/boot/bzImage
733
&
• Cos'
è un modulo?
• E’ un pezzo del codice del kernel non incluso
direttamente nel kernel.
• Si può compilare separatamente e inserirlo e
toglierlo da un kernel in esecuzione praticamente
in qualsiasi momento.
• Grazie a questa flessibilità, questo è ora il modo
preferito per programmare certe caratteristiche del
kernel.
• Molti device driver popolari, come i driver PCMCIA
e il driver per dispositivi a nastro, sono moduli
caricabili.
734
<
• I moduli sono generalmente file che terminano con
l'
estensione .o e si collocano al di sotto della
directory /lib/modules/versione/, dove la versione si
riferisce al kernel per il quale sono stati predisposti.
• Per esempio, /lib/modules/2.2.16/, si riferisce ai
moduli del kernel 2.2.16.
• insmod, rmmod, ksyms, lsmod, genksyms,
modprobe e depmod
735
&
• Per facilitare l'
individuazione dei moduli, e quindi
anche il loro caricamento, viene creato
generalmente un file, modules.dep, nella directory
iniziale di questi, attraverso il programma depmod.
• depmod -a
• Generalmente questo comando viene inserito nella
procedura di inizializzazione del sistema, in modo
da aggiornare automaticamente questo file.
• Il file contiene l'
elenco dei moduli presenti, con
l'
indicazione precisa delle dipendenze.
736
&
• insmod
– Carica manualmente i moduli del kernel.
• rmmod
– Scarica manualmente i moduli del kernel.
• lsmod
– Elenca i moduli caricati nel kernel.
• depmod
– Rigenera il file delle dipendenze tra i moduli.
• modprobe
– Carica un modulo rispettando le dipendenze.
• /etc/conf.modules o /etc/modules.conf
– Configurazione dei moduli utilizzati.
• kerneld
737
• Il file /etc/conf.modules permette di configurare il
comportamento di modprobe. Le righe vuote e
quanto preceduto dal simbolo # viene ignorato.
• Le righe di questo file vengono interpretate
attraverso una shell, e questo permette di
utilizzare le tecniche di sostituzione fornite
comunemente da queste; per esempio con i
caratteri jolly o con la sostituzione di comando.
• Questo file di configurazione può contenere diversi
tipi di direttive;
738
&
I compiti principali di un routing:
– Determinazione del percorso ottimale
– Trasporto delle informazioni tra 2 reti diverse
• Autonomous System (AS): gruppi di network
controllati e gestiti da un'
unica entità:
– Interior Router: Router che instradano i messaggi
all'
interno dello stesso AS.
• Scambiano informazioni di instradamento tramite un IGP
(Interior Gateway Protocol)
• All'
interno di un AS si usa lo stesso IGP su tutti i router.
– Exterior Router: router che instradano i messaggi tra
AS diversi.
• Scambiano informazioni di instradamento tramite un EGP
(Exterior Gateway Protocol)
739
• Statici o dinamici:
– STATICI: le tabelle di routing vengono compilate da una persona (Network
Administrator), i valori di tali tabelle non cambiano per nessun motivo fin
quando il Network Administrator non li cambia.
• Se un collegamento viene interrotto gli altri router non si accorgono (grosso
svantaggio in grandi reti)
• Per reti piccole è la soluzione migliore (poche cadute di rete e topologia non a
più percorsi)
• Aggiunta di nuove reti implica la modifica delle tabelle di routing dei router
• Minore carico di elaborazione
• Nessun sovraccarico della rete dovuto alla sincronizzazione dei router
– DINAMICI: le tabelle vengono continuamente automaticamente aggiornate
e cambiate a seconda dei cambiamenti della rete (caduta di una network,
inserimento di una network)
• A percorso singolo o multiplo:
– alcuni algoritmi supportano più percorsi per una stessa destinazione.
• Gerarchici:
– Suddivisione di più nodi in gruppi logici chiamati domain, AS o aree
– Solo alcuni di questi router possono interagire con ulteriori router di altri
domain
– Altri possono interagire con router appartenenti allo stesso dominio.
740
• Tra gli algoritmi dinamici i più importanti sono:
– Link State:
• ogni router si crea una tabella con la distanza dai router adiacenti
• periodicamente ogni router manda questa tabella a tutti gli altri router
• I router possono ricavarsi l'
intera topologia della rete dalle tabelle
ricevute
– Distance Vector:
• ogni router mantiene una tabella con tutti i router della rete
• verificano la distanza per i soli router adiacenti
• periodicamente ogni router manda tutta la propria tabella ai soli router
adiacenti
• Ogni router può modificare la propria tabella in base a quelle ricevute.
• Metrica: serve per selezionare il miglior percorso (se > 1)
– Diversi criteri di scelta: lunghezza del percorso, affidabilità del link,
ritardo, banda passante, carico di rete, ecc.)
– Gli unici due parametri universalmente accettati sono:
• HOPS: numero di salti effettuati lungo il cammino
• COSTO: somma dei costi di tutte le linee attraversate
– il costo di una linea è inversamente proporzionale alla sua velocità
741
•
RIP (Routing Information Protocol)
•
OSPF (Open Shortest Path First)
•
–
–
–
–
–
–
Protocollo relativamente semplice (di tipo “distance vector”)
Il protocollo IGP (Interior Gateway Protocol) maggiormente utilizzato oggi su Internet
Tipicamente viene utilizzato per le reti di piccole dimensioni
È il protocollo di routing IP più vecchio ancora in uso.
L'algoritmo distance vector è stato sviluppato da Bellman, Ford e Fulkerson nel lontano 1969
L’algoritmo è buono ma è molto lento nell’adattamento perché la topologia della rete non è nota a
priori
–
–
Di tipo Link State
Utilizza il concetto di gerarchia, quindi permette di gestire reti di dimensioni notevoli
–
–
È utilizzato su Internet (è il protocollo raccomandato dalla IAB in sostituzione di RIP)
Progettato per:
•
•
Un AS viene suddiviso in aree
Ogni area contiene un gruppo di reti contigue.
•
•
•
•
Separare hosts e routers
Utilizzo su reti broadcast, quali Ethernet, Token Ring o FDDI
Utilizzo su reti non broadcast, quali X.25 o ATM
Suddividere grandi reti in aree
IGRP (Interior Gateway Routing Protocol)
–
–
–
–
Si basa sull'
algoritmo distance vector
Sviluppato dalla CISCO a metà ’80 (inizio ’90 e'stata sviluppata la versione "Enhanced " (EIGRP))
Il protocollo IGRP permette il routing all’interno dell’Autonomous System
Molto piu'efficiente di RIP:
•
•
•
•
Metriche piu'sofisticate
Supporto del multipath routing
Migliore stabilita'
utilizza una frequenza di update delle route inferiore (90 s)
742
• È la connettività tra il computer locale e Internet cosicché
si possano condividere le risorse o le funzioni della rete
remota
• Il servizio di accesso remoto consente questo tipo di
operazione tramite modem dal pc di casa alla macchina
remota in cui gira il RAS.
• Di solito lo forniscono i provider
• Se siamo già connessi possiamo attivare il RAS sul nostro pc e
connetterci a nostra volta con un modem dial up da qualsiasi
località.
• Aumento di richieste di questo tipo di accesso negli ultimi
anni di richieste da parte di
• Utenti mobili
• Filiali
• Telelavoratori
743
•
•
Per piattaforme NT esiste il RAM (Remote Access
Manager)
È in grado di gestire più server contemporaneamente
Può utilizzare un numero illimitato di policies di controllo delle
connessioni
Esiste un modulo supplementare ICM (ISDN Call Mangement)
che consente di abilitare funzioni dell’ISDN come
l’identificazione del chiamante o Callback.
Questa soluzione spesso è completata dall’ RCM
(Remote Client Manager ) tool attraverso cui gli
amministratori di rete possono
Controllare la configurazione del client
Istallare software da remoto
esistono configurazioni software sia per connessioni normali che
per VPN
744
• Sviluppo anche su piattaforme non NT per
garantire compatibilità
Utilizzo di Radius (Remote Authentication
Dial-In User Service).
745
&
• SLIP(Serial Line Internet Protocol) protocollo di
comunicazione, (definito dall'
RFC 1055) che consente le
connessioni con protocolli IP tramite linee seriali.
• Risale al 1984
• Non prevede né gestione né correzione egli errori
• Supporta solo IP
• Richiede anticipatamente l’indirizzo IP della controparte
• No assegnazione dinamica IP
• Non è prevista alcuna forma di autenticazione
• Esistono varie versioni di slip incompatibili tra di loro
746
&
• Nelle prime implementazioni di questo
protocollo non era neppure prevista la
compressione de dati
Introdotta con il CSLIP ossia lo SLIP a cui
è stato aggiunto l’algoritmo di
compressione di Van Jacobson.
maggiore velocità di trasmissione.
747
&
• SLIP è solitamente utilizzato da server di
accesso remoto UNIX- like
• Macchine che utilizzano Windows 20002003 server non possono né gestire né
essere configurate per supportare la
funzione di accesso remoto RAS.
748
• PPP (Point-to-Point Protocol ) nasce per la
gestione di connessioni punto a punto,cioè per
consentire la connettività host-host o routerrouter.
• Si pone come evoluzione diretta dello SLIP ed è
stato sviluppato come estensione dell’HDLC.
• Si è cercato di risolvere tutti quei problemi a cui
SLIP andava incontro e di sopperire alle
limitazioni di HDLC .
749
Supporta oltre molti protocolli tra cui IP, IPX
Comprime automaticamente i dati
È dotato di meccanismi di autenticazione quali
CHAP e PAP
Fornisce un meccanismo di controllo e gestione
degli errori
Garantisce un metodo non ambiguo per la
suddivisione e incapsulamento dei datagrammi.
750
PAP (Password Authentication Protocol): Il
modulo base di autorizzazione - nome utente e
password - viene trasferito sulla rete e confrontato
con una tabella delle coppie nome-password che
risiede nel server.
PROBLEMA: La password attraversa la rete in
chiaro
PAP non offre grandi garanzie di sicurezza e viene
sempre più sostituito con il protocollo CHAP.
751
• CHAP(Challenge Authentication Password Protocol):
l’autenticatore invia, dopo aver stabilito la connessione, una stringa
numerica all’utente che chiede di essere autenticato. L’utente usa la
stringa numerica per calcolare un codice, con uno speciale algoritmo,
che dovrà corrispondere a quello calcolato dall’autenticatore.
MS-CHAP: un protocollo di autenticazione implementato da Microsoft,
basato su password crittografata non reversibile.
- L’autenticatore manda al client remoto una richiesta di decodifica composta
da un identificatore di sessione, e una stringa arbitraria da decodificare.
- Il client risponde con nome utente, password, identificatore di sessione e
una crittografia non reversibile della stringa da identificare.
- La risposta viene controllata e se valida, le credenziali dell’utente vengono
autenticate.
752
• Possiamo definire PPP come un multiprotocollo
perché utilizza altri due protocolli: LCP e NCP.
LCP(Link Control Protocol) Stabilisce, configura
e testa la connessione, cioè determina se la
connessione deve rimanere attiva o terminare.
NCP(Network Control Protocol) Stabilisce e
configura i differenti protocolli di strato.
es: decide se a livello network la connessione
utlizzerà IP o IPX.
753
• PPP è il protocollo utilizzato comunemente
da Costruttori DSL e Service Provider.
• Se un programma rispetta gli standard PPP può
essere usato per ricevere chiamate e fornire
l’accesso a internet (come avviene in Windows
2000/2003 server)
• Viene abbondantemente utilizzato lungo reti
Ethernet e ATM, da qui gli acronimi PPPoE e
PPPoA.
754
&
• PLIP (Parallel Line Internet Protocol) è un protocollo che
permette di avere una connessione TCP/IP su un cavo
null-modem parallelo, permettendo quindi di mettere in
rete due computer con Linux con una spesa veramente
minima.
• Simile al più noto SLIP
• Sfrutta il parallelismo della connessione per inviare più di
permette quindi velocità molto
un bit alla volta
maggiori di un collegamento seriale
• Grazie alla sua velocità (fino anche a 40K/s) su una
connessione plip possono essere usati tutti i servizi
tcp/ip, compreso l'
nfs.
755
&
L'
unico requisito per il funzionamento di una
connessione PLIP è che le porte parallele del
laptop e del computer a cui questo si collegherà
abbiano la possibilità di essere poste in modalità
bidirezionale.
• Per aggiungere un'
interfaccia PLIP al nostro
sistema dobbiamo solamente inserire l'
indirizzo
IP locale, l'
indirizzo IP remoto, ed il Netmask.
756
$
• HDLC (High-Level Data Link Control)
Protocollo bit oriented operante appunto al
livello Data Link. Permette collegamenti
full-duplex con velocità di trasferimento
comprese tra i 2400 e 48000 bps. Questo
protocollo è noto in Europa come X.25 ed
offre un servizio affidabile.
757
• EAP (Extensible Authentication Protocol) è un'
estensione del protocollo
PPP (Point-to-Point Protocol)è stato sviluppato in risposta alla
crescente richiesta di un sistema di autenticazione di utenti che
accedono da un sistema remoto che consentisse di utilizzare altri
dispositivi di protezione
• Fornisce un meccanismo standard per il supporto di metodi di
autenticazione aggiuntivi nell'
ambito delle connessioni PPP
• È possibile aggiungere il supporto per altri schemi di autenticazione tra
cui:
Token card
Password temporanee
Autenticazione di chiavi pubbliche tramite smart card
Certificati
• La tecnologia EAP, insieme ai metodi di autenticazione EAP, è un
componente essenziale per garantire connessioni protette su reti
private virtuali che offre un elevato livello di protezione da
Tentativi di accesso non autorizzato
Individuazione delle password superiore a qualsiasi altro metodo di
autenticazione (compreso CHAP)
758
è
7 (1
VPN è l'
acronimo di Virtual Private Network
Una VPN permette a due reti private locali (LAN) di
essere connesse tra loro in maniera sicura attraverso reti
pubblicamente accessibili come Internet. Pertanto una
VPN è un'
estensione di una rete privata su
un'
infrastruttura pubblica.
L'
utilizzo di una rete pubblica per trasmettere
informazioni private, però, ha portato alla luce alcune
interessanti problematiche principalmente legate
all'
aspetto della sicurezza.
759
7 (1
Le reti VPN hanno il vantaggio di essere molto
versatili e, quindi, di essere adattabili a numerose
situazioni e ambienti molto diversi tra loro. Infatti
si possono costituire diversi tipi di VPN: si parla di
VPN “HOST to LAN” quando un singolo utente si
collega tramite VPN ad una LAN privata per
usarne le risorse in maniera sicura, di VPN “LAN
to LAN” cioè le reti virtuali che collegano LAN
distinte e geograficamente distanti e di VPN
“HOST to HOST” derivate dalle precedenti.
Raramente sarà possibile classificare reti private
virtuali in queste categorie perché
frequentemente vengono utilizzate soluzioni
ibride.
760
• PPTP(Point to Point Tunnelling Protocol). Protocollo
ideato da Microsoft, US Robotics e altri produttori. Si
tratta di un sistema facile da configurare, rapido e
supportato da tutti i prodotti e i sistemi operativi presenti
sul mercato.
•
L'
implementazione Microsoft è presente a partire da Windows
NT4 Server e da Windows 98 SE.
• Non richiede hardware particolare.
• Il meccanismo di cifratura è molto semplice e garantisce una
sicurezza limitata.
• Manca un meccanismo solido di verifica delle credenziali e
generalmente si usano il log-in del sistema operativo.
761
• L2TP(Layer Two Tunnelling Protocol).
Protocollo derivato dalla fusione di PPTP e
di L2F di Cisco. Una sorta di sintesi delle
caratteristiche migliori con meccanismi
avanzati di cifratura e autenticazione.
Supportato in Windows 2000 e in Linux.
762
&
• IP Sec(Internet Protocol Security). Sviluppato da IETF
è certamente il miglior protocollo VPN disponibile. E'in
grado di cifrare i dati e gli header dei pacchetti attraverso
una chiave pubblica. La chiave è scambiata con un
meccanismo evoluto di autenticazione tramite certificati
digitali.
•
•
Supportato a partire da Windows 2000 e in Linux.
Se vi è molto traffico IP Sec potrebbe essere necessario
l'
acquisto di hardware specifico preposto alle operazioni di
cifratura e apertura dei pacchetti.
• Complesso da installare.
763
Utilizzo: route [opzioni]
Opzioni più utilizzate:
–
–
–
–
–
–
–
–
–
–
add : Inserisce una nuova riga nella tabella di instradamento
del : Elimina una riga preesistente dalla tabella di instradamento
-n : Mostra solo indirizzi numerici invece di tentare di determinare i nomi simbolici dei nodi e delle
reti (utile quando si ha difficoltà ad accedere a un servizio di risoluzione dei nomi o quando si
vuole avere la situazione completamente sotto controllo)
-net destinazione : L'
indirizzo indicato nella destinazione fa riferimento a una rete. L'
indirizzo può
essere indicato in forma numerica o attraverso un nome di dominio (in base al file /etc/networks).
-host destinazione : L'
indirizzo indicato nella destinazione fa riferimento a un nodo. L'
indirizzo
può essere indicato in forma numerica o attraverso un nome simbolico.
Netmask maschera_di_rete : Specifica la maschera di rete quando si sta facendo riferimento a
un indirizzo di rete. In questo caso se non viene inserito si assume il valore predefinito che
dipende dalla classe a cui appartiene l'
indirizzo indicato.
Gw router : Fa in modo che i pacchetti destinati alla rete o al nodo per il quale si sta indicando
l'
instradamento, passino per il router specificato. Per questo, occorre che l'
instradamento verso
l'
elaboratore che funge da router sia già stato definito precedentemente in modo statico.
Normalmente, l'
indirizzo utilizzato come router riguarda un'
interfaccia collocata in un altro nodo.
Eventualmente, per mantenere la compatibilità con Unix BSD, è possibile specificare
un'
interfaccia locale, intendendo così che il traffico per l'
indirizzo di destinazione deve avvenire
utilizzando quella interfaccia.
Metric valore_metrico : Permette di definire il valore metrico dell'
instradamento e viene utilizzato
dai demoni che si occupano dell'
instradamento dinamico per determinare il costo di una strada, o
meglio per poter decidere il percorso migliore.
reject : Permette di impedire l'
utilizzo di un instradamento.
[dev] interfaccia : Permette di definire esplicitamente l'
interfaccia da utilizzare per un certo
instradamento. Solitamente, questa informazione non è necessaria perché il kernel riesce a
determinare l'
interfaccia in base alla configurazione delle stesse. È importante che questa
indicazione appaia alla fine della riga di comando, in questo modo, il parametro dev, che precede
il nome dell'
interfaccia, è solo facoltativo.
764
route [-v] [-n]
• Generalmente utilizzato senza argomenti
• Visualizza semplicemente (attraverso lo standard output) la tabella di instradamento.
• -v : Genera un output il più dettagliato possibile
• -n : Mostra solo indirizzi numerici invece di tentare di determinare i nomi simbolici dei
nodi e delle reti (utile quando si ha difficoltà ad accedere a un servizio di risoluzione
dei nomi o quando si vuole avere la situazione completamente sotto controllo)
• Nell’output del comando:
–
–
–
–
–
–
–
–
–
Nome: Descrizione
Destination: La rete o il nodo di destinazione.
Gateway: Il router. Se appare un asterisco (*) o l'
indirizzo 0.0.0.0 significa che non si tratta di
un instradamento attraverso un router.
Genmask: In linea di massima corrisponde alla maschera di rete; in particolare, se è un
instradamento verso un nodo appare 255.255.255.255, se invece è l'
instradamento
predefinito appare 0.0.0.0 (default).
Metric: La distanza o il costo della strada (espressa solitamente in hop o salti)
Ref: Il numero di riferimenti all'
instradamento. Questa informazione non viene utilizzata dal
kernel Linux e, di conseguenza, l'
informazione appare sempre azzerata.
Use: Conteggio del numero di volte in cui la voce è stata visionata.
Iface: Il nome dell'
interfaccia da cui partono i pacchetti IP.
Flags: Indica diversi tipi di informazioni utilizzando lettere o simboli.
•
•
•
•
•
•
•
U: L'
instradamento è attivo.
H: L'
indirizzo indicato fa riferimento a un nodo.
G: Viene utilizzato un router.
R: Instradamento reintegrato (instradamento dinamico).
D Instradamento installato dinamicamente da un demone o attraverso redirezione.
M Instradamento modificato da un demone o attraverso redirezione.
! Instradamento impedito (opzione reject).
765
%
route [-v] add [-net|-host] destinazione [netmask maschera_di_rete] [gw router]
[altre_opzioni] [[dev] interfaccia]
• Inserimento di una nuova voce (host o rete) nella tabella di instradamento
• Indicazione della destinazione da raggiungere.
• gw router : Fa in modo che i pacchetti destinati alla rete o al nodo indicato, passino
per il router specificato. (L'
instradamento verso il router deve essere già stato definito
precedentemente in modo statico)
• Esempi:
–
route add -host 127.0.0.1 dev lo
–
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
–
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.254
–
route add default gw 192.168.1.254
–
route add 10.0.0.0 netmask 255.0.0.0 reject
Attiva l'
instradamento verso l'
interfaccia locale loopback.
Attiva l'
instradamento della rete 192.168.1.0 che utilizza la maschera di rete 255.255.255.0, specificando che riguarda
l'
interfaccia di rete eth0.
Attiva l'
instradamento della rete 192.168.2.0 che utilizza la maschera di rete 255.255.255.0, attraverso il
router 192.168.1.254 per il quale era già stato definito un instradamento precedentemente.
Attiva l'
instradamento predefinito (nel caso che non siano disponibili altre possibilità) attraverso il router
192.168.1.254. La parola default fa automaticamente riferimento all'
indirizzo IP 0.0.0.0.
Definisce un instradamento il cui accesso deve essere impedito.
route [-v] del [-net|-host] destinazione [netmask maschera_di_rete] [gw router]
[altre_opzioni] [[dev] interfaccia]
• Eliminazione di una voce della tabella di instradamento
• Voce identificata dall'
indicazione della destinazione che prima veniva raggiunta.
766
Scopo: raggiungere una destinazione che non si trova a
essere connessa con la rete fisica a cui si accede
•
Una rete locale potrebbe essere articolata in sottoreti in
modo da evitare di congestionare il traffico in un'
unica
rete
•
c'
è bisogno di un intermediario: router (elaboratore
connesso alla rete locale in grado di inoltrare i pacchetti
alle destinazioni richieste)
•
Router spesso è erroneamente chiamato gateway
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.7.0 netmask 255.255.255.0 gw 192.168.1.254 dev eth0
route add -net 192.168.77.0 netmask 255.255.255.0 gw 192.168.1.254 dev eth0
route add -net default gw 192.168.1.254 dev eth0
route -n
Kernel IP routing table
Destination
Gateway
192.168.1.0
0.0.0.0
192.168.7.0
192.168.1.254
192.168.77.0
192.168.1.254
0.0.0.0
192.168.1.254
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
0.0.0.0
Flags
U
UG
UG
UG
Metric
0
0
0
0
Ref
0
0
0
0
Rete locale
Rete adiacente via router
Rete non adiacente
Router predefinito
Use
1
0
0
0
Iface
eth0
eth0
eth0
eth0
767
&
.
.
%
%
.
)
/
+
01
2
1
*$
!"
#$
!"
#$
!"
*$
!"' #$
!"'
,
!"
+
1
%
%
%
6
.
2 %
78
/
(
(
(
(
!" #$ % & ## ## ##
!" #$ % & ## ## ##
!"' #$
!"'
%
!"
% & ## ## ##
!"
% & ## ## ##
!"'
)
!"' #$ )
4
)
)
(
(
(
!"
!"
!"'
(
(
!"
3
/
)
!"'
!"'
3
/
)
(
(
(
!" 0
% & ## ## ##
)
% & ## ## ## 3
3
!" #$
0
% & ## ## ##
)
!" #$
5
%
#$ )
)
!"' #$
!"
#$
0
768
<
7 %
)
2
%
+
%
+
!" #$ *$/
(
!"
% & ## ## ##
(
!" #$
(
!"
)
% & ## ## ##
% & ## ## ##
+
!"
% & ## ## ##
(
!" #$
(
!"
9
:
;
#$
!" #$
0
!" #$
+
!"
#$
)
% & ## ## ##
% & ## ## ##
!"
=
=
(
*$
!" #$
)
3
!"
!"
)
3
)%
:
*$
!" #$
;
769
&
&
(
>?> 3 &
,? ,
0
%
/
)
) 0
.
?
)
> ?*
,?
.
%
/
> ?*
, ?0
.
.
7%
8
/
!"
,
!"
!"
*!
> ?*
,?
@
*
% )
%
/)
%
>
%
%
%
)
)
> ?*
,?
%
%
> ?*
,?
0
A
/ 3 0
770
&
B
B
+
>
B
<
,
/
&
$C0
%
3
!
)
% /
0
5%
,)
!
%
D
E
)
)
iptables [-t tabella] opzione_di_comando punto_di_controllo [regola] [obiettivo]
%
%
%
5
2
1
1
8
1
1
!
#
%
"
)
%
-
1
1
>,-?
FG H
%
G-?,-?
%
%
7
+,?
G, %
+I
+ ?%
%
4,
2
)
%
.
.
.
)/
0
5%
7
%
.
/
)
0
%
)
/
"0
771
(
•
Sola gestione NAT/PAT, cancelliamo eventuali regole esistenti per il firewall
–
–
–
–
–
–
•
•
iptables
iptables
iptables
iptables
iptables
iptables
-t
-t
-t
-t
-t
-t
filter
mangle
nat -F
filter
mangle
nat -X
-F
-F
-X
-X
Definiamo una politica predefinita (policy), comportamento normale per i comandi successivi:
–
•
/
iptables -P FORWARD ACCEPT
(accetta il passaggio dei pacchetti in transito tra le interfacce)
Definiamo come inoltrare i pacchetti tra le interfaccie (eth0 è collegata all’esterno):
–
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
–
Ovvero: nella tabella nat aggiungi in coda una nuova regola in cui ogni pacchetto (dopo che è stata presa la
decisione di dove indirizzarlo) deve essere immesso nell’interfaccia eth0 mascherandone l’indirizzo IP con
quello definito per quell’interfaccia (mascheramento anche per connessioni con ip dinamici).
Verifica:
–
–
–
iptables -t filter -L –n
iptables -t mangle -L –n
iptables -t nat -L -n
(Non dovrebbe esserci nulla)
(Non dovrebbe esserci nulla)
Chain PREROUTING (policy ACCEPT)
target prot opt source
destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source
destination
MASQUERADE all -- 0.0.0.0/0
0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source
destination
772
(
/
• Se tutto è andato bene, inserire i comandi all'
interno dei file per l'
inizializzazione
(/etc/rc.d/rc.local):
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
/sbin/iptables
-t
-t
-t
-t
-t
-t
-P
-t
-t
-t
-t
filter -F
mangle -F
nat
-F
filter -X
mangle -X
nat
-X
FORWARD ACCEPT
nat -A POSTROUTING -o eth0 -j MASQUERADE
filter -L -n
mangle -L -n
nat
-L -n
• I comandi mostrati per l'
inoltro IP non fanno riferimento a interfacce di rete specifiche,
ma solo a indirizzi di rete.
• Perché il router NAT/PAT sappia da che parte inoltrare i pacchetti, è necessario che
gli instradamenti siano stati definiti correttamente.
• Questo tipo di configurazione del router NAT/PAT ignora tutte le considerazioni sulla
sicurezza
• Descrizione del funzionamento di iptables può essere reperita nella pagina di manuale
iptables(8).
773
•
Lo schema essenziale di funzionamento del
sistema di trasferimento dei messaggi di posta
elettronica è basato sul protocollo SMTP (Simple
Mail
Transfer
Protocol),
e
utilizza
fondamentalmente due componenti:
1. MTA (Mail Transport Agent)
– MDA (Mail Delivery Agent)
2. MUA (Mail User Agent)
•
Il primo dei due è il sistema che si occupa del
trasferimento e della consegna dei messaggi,
mentre il secondo è il programma che viene
utilizzato per comporre i messaggi e passarli
all'
MTA.
774
I messaggi consistono in un certo numero di intestazioni, una linea
bianca
e quindi il corpo del messaggio. Ogni campo dell’intestazione consiste in
una linea di testo ASCII contenente il nome del campo,un due punti, e
un
valore.
Alcuni campi importanti sono:
• To: Indirizzo/i elettronici per destinatario/i primario/i
• Cc: Indirizzo/i elettronici per destinatario/i secondario/i
• Bcc: Indirizzo/i elettronici per copie carbone trasparenti
• From:Persona o persone che hanno creato il messaggio
• Sender: Indirizzo elettronico del mittente attuale
• Received:Linea aggiunta da ogni agente di trasferimento messaggi
lungo la strada
• Return-path:Può venire usato per individuare una strada all’indietro
verso il mittente
775
"
…
• Un messaggio di posta elettronica è composto da
due parti fondamentali: l'
intestazione e il corpo.
Quest'
ultimo è quella parte che contiene il testo
del messaggio, mentre l'
intestazione contiene
informazioni amministrative di vario genere,
compreso l'
oggetto (subject).
• All'
interno dell'
intestazione, si distingue in
particolare la busta o envelope, cioè quelle
informazioni
amministrative
necessarie
al
trasporto del messaggio; queste appaiono nella
parte superiore e si espandono mano a mano
che il messaggio attraversa i vari MTA necessari
a raggiungere la destinazione.
776
&
•
Received: from smtp4.libero.it (193.70.192.54) by ims1b.libero.it
(6.5.015)
id 3CDDAA8C000829BA for [email protected]; Mon, 13 May
2002 19:00:01 +0200
Received: from arianna.cineca.it (130.186.1.53) by
smtp4.libero.it (6.5.021)
id 3CD647650151B6EA for [email protected]; Mon, 13 May
2002 18:59:46 +0200
Received: from hydrus.cc.uniud.it (hydrus.cc.uniud.it
[158.110.1.2])
by arianna.cineca.it (8.12.1/8.12.1/CINECA 5.0-MILTER)
with ESMTP id g4DGxvgc001431;
Mon, 13 May 2002 18:59:58 +0200 (MET DST)
Received: from CONVERSION-DAEMON by HYDRUS.CC.UNIUD.IT (PMDF
V5.2-33 #36709)
id <[email protected]>; Mon, 13 May 2002
18:59:53 MET-DST
Received: from labcorsi.cc.uniud.it ([158.110.1.59])
by HYDRUS.CC.UNIUD.IT (PMDF V5.2-33 #36709)
with SMTP id <[email protected]>; Mon,
13 May 2002 18:59:50 +0200 (MET-DST)
Received: from 158.110.1.59 ([158.110.1.59])
by labcorsi.cc.uniud.it (WinRoute Pro 4.1) with SMTP; Mon,
13 May 2002 18:59:49 +0200
777
&
• L'
MTA di origine, o comunque quello utilizzato come
distributore di origine (relay), deve identificare l'
MTA più
adatto a ricevere il messaggio per ottenere la consegna di
questo all'
utente destinatario.
• Generalmente, il problema si riduce alla trasformazione
del nome di dominio dell'
indirizzo di posta elettronica del
destinatario in un numero IP, e nel tentativo successivo di
contattare tale nodo con la speranza di trovare un MTA
pronto a rispondere.
• La realtà è spesso più complessa, e può darsi benissimo
che l'
MTA competente per ricevere la posta elettronica di
un certo utente sia un nodo diverso da quello che appare
nell'
indirizzo di posta elettronica.
• Per pubblicizzare questo fatto nella rete si utilizzano i
record MX nella configurazione dei DNS.
778
<
• SMTP è un semplice protocollo ASCII in
ascolto sulla porta 25
• Trasmette con codifica di 7bit per byte
• Il trasferimento e l’autenticazione sono in
chiaro
– L’autenticità degli host e degli utenti non è
garantita
• SMTP non garantisce nulla ma, con un
meccanismo a livello utente può ottenere
sicurezza rispetto all’identità e alla
privacy: PGP e certificati X.509.
779
• Anche POP3, come SMTP, non dà nessuna
garanzia di identità (permette password in
chiaro sulla rete)
• Un protocollo di trasmissione più sofisticato è
IMAP
• L’idea di base è che il server della posta debba
conservare un deposito centrale che sia
accessibile da qualsiasi macchina. A differenza
di POP3, IMAP non copia la posta sulla
macchina personale dell’utente
780
-3
•
•
•
•
•
•
•
•
•
•
•
•
telnet mail.myserver.it smtp
oppure
telnet mail.myserver.it 25
HELO myserver.it
MAIL From: <[email protected]>
RCPT to: <[email protected]>
DATA
354 Enter mail, end with "." on a line by itself
Subject: Saluti.[Invio]
Ciao Antonio,[Invio]
come stai?[Invio]
.[Invio]
QUIT[Invio]
781
&
/
• Un problema importante che si incontra quando
si configura il proprio servizio SMTP è quello del
filtro rispetto al relay, cioè all'
attività di
ritrasmissione dei messaggi.
• Solitamente si consente il relay senza alcuna
limitazione ai messaggi provenienti dai nodi
della propria rete locale, mentre lo si impedisce
quando il messaggio è di origine esterna a tale
rete e in più la stessa destinazione è esterna
alla rete locale.
782
,,2
•
•
•
•
•
•
•
•
•
telnet mail.myserver.it pop-3
oppure
telnet mail.myserver.it 110
USER ataschin
PASS mypass
LIST
RETR 2
DELE 2
QUIT[Invio]
783
4
!
• Il file ~/.forward può essere preparato da un utente (nella
propria directory personale) per informare il sistema di
consegna locale della posta elettronica (MDA) di fare
proseguire (rinviare) i messaggi verso altri indirizzi. Il file si
compone di una o più righe, ognuna contenente un
indirizzo di posta elettronica alternativo; i messaggi giunti
per l'
utente in questione verranno fatti proseguire verso tutti
gli utenti elencati in questo file.
• È importante ricordare che non rimane copia dei messaggi
per l'
utente in questione. Si presume che questo utente
riceva la posta elettronica attraverso uno degli indirizzi
elencati nel file
.
• Per esempio:
[email protected]@smtp.dsi.unive.it
784
0…
• Ce ne sono veramente tanti disponibili,
basta solo scegliere; tra i più diffusi
ricordiamo:
– Mutt, Pine, KMail, Evolution
• Nonostante la tendenza sia quella di
spostare tutte le vecchie applicazioni da
shell in un ambiente grafico come X, un
buon amministratore di sistema non può
esimersi dal conoscere i programmi di
posta sotto shell più famosi.
785
<
• Dopo aver scaricato il pacchetto .deb in
questione procediamo all’installazione con il
comando apt-get install mutt
• Da non dimenticare gli aliases del MUA che
sono una specie di rubrica degli indirizzi
• Per mutt per esempio possiamo creare il file
.mail_aliases che ha la seguente struttura:
alias nome_corto Vero Nome
<[email protected]>
• Per personalizzare le proprie e-mail è
sicuramente utile ricordarsi del file signature
posizionato in ~/.signature.mutt
786
<
•
•
•
Di solito è buona norma che la firma non superi le 4
righe, 72 caratteri per riga
Attenzione: in .muttrc esiste la chiave “set sig_dashes”
che serve a mettere il delimitatore “ --“ in automatico.
L’alternativa è mettere il delimitatore direttamente nel
file segnature e impostare “sig_dashes=no”
Mutt può interfacciarsi direttamente con il server IMAP,
basta scrivere la propria mailbox come:
{hostname} mailbox
Dove “hostname” è il nome del server IMAP, e “mailbox” è
il nome della
propria mailbox sul server IMAP
787
'
•
•
Dopo averlo installato si procede alla configurazione editando il file
~/.fetchmailrc
Per esempio potrebbe essere così strutturato:
poll pop.tiscali.it with proto POP3 timeout 60
user “utente_posta” there with password “password” is utente_sistema
here
options keep
poll popmail.libero.it with proto IMAP timeout 60
user “utente_posta” there with password “password” is utente_sistema
here
•
E’ necessario poi dare i seguenti permessi al file:
chmod 600 .fetchmail
•
Ora per “scaricare la posta” basta semplicemente lanciare:
fetchmail –v
788
+>
•
•
•
un amministratore di sistema desidera che la maggior parte delle cose
venga in maniera automatica…
Per questo si fa ricorso ai cron-job per schedulare l’esecuzione di
script o programmi in certi intervalli di tempo
Potremmo per esempio voler automatizzare il controllo della posta
quando la connessione è attiva:
-----/etc/ppp/scarico_posta----#!/bin/bash
TEST1=’/sbin/ifconfig|grep ppp0’
if [ “$TEST1”=”” ];then
echo “connessione non attiva”
exit 0;
else
su postfix –c ‘fetchmail –a’
fi
exit 0;
#attiva
#cerco una connessione ppp0
#eseguo fetchmail
789
+>
•
Ora diamo i seguenti permessi al file:
chmod 770 /etc/ppp/scarico_posta
•
Ora procediamo alla schedulazione dello script:
crontab –e
editando il file e inserendo le seguenti righe:
MAILTO=””
0-55/5 * * * * /etc/ppp/scarico_posta
• Con la riga “MAILTO” si disattiva l’invio di una mail contenente il
risultato delle operazioni
• Nella seconda riga si comunica a cron di eseguire lo script ogni 5
minuti
• Per eseguire il download della posta ad ogni connessione basta
inserire il comando su postfix –c ‘fetchmail –a’ nel file /etc/ppp/ipup.local. Se non esiste bisogna crearlo e dargli i permessi di
esecuzione
790
•
•
•
•
•
•
Un alias è un modo per impostare un indirizzo fittizio che
semplicemente diriga la posta ad un altro indirizzo (unico)
Per creare alias MTA si modifica un file di sistema, solitamente, ma
non sempre, /etc/aliases
Attraverso il file /etc/aliases è possibile configurare una serie di alias
per facilitare l’invio di messaggi di posta elettronica. Gli alias
stabiliscono appunto a chi debbano essere recapitati i messaggi
In generale non è conveniente che l’utente root possa ricevere dei
messaggi, per questo, un alias potrebbe rimandare la sua posta
elettronica verso il recapito corrispondente all’utente comunque
riferito a quella stessa persona
Inoltre è importante che gli utenti fittizi (bin, daemon, etc) non
possano ricevere messaggi poiché ciò potrebbe servire per sfruttare
qualche carenza nel sistema di sicurezza dell’elaboratore locale
Infine è molto importante che vengano definiti degli alias usati
comunemente per identificare il responsabile del servizio SMTP
presso il nodo locale.
791
• Inoltre, è importante che gli utenti di sistema ( ,
,
ecc.) non possano ricevere messaggi: prima di tutto non
esistono tali persone, e poi ciò potrebbe servire per
sfruttare qualche carenza nel sistema di sicurezza
dell'
elaboratore locale.
• Infine, è molto importante che vengano definiti degli alias
usati comunemente per identificare il responsabile del
servizio SMTP presso il nodo locale
è un collegamento a
. Quando
viene avviato con questo nome, genera un
a partire dal sorgente
nuovo file
.
• Quindi, ogni volta che si modifica il file
, occorre
avviare
.
792
&
•
•
•
Capita spesso che quando siamo in ferie non abbiamo la possibilità
di controllare spesso la nostra casella di posta elettronica. Si rende
così indispensabile utilizzare la cosiddetta "risposta automatica" sul
nostro server
Dopo aver scaricato i sorgenti da http://vacation.sourceforge.net/, si
procede all’installazione come segue:
tar xzvf vacation-1.2.6.1.tar.gz
cd vacation
make install
A questo punto, occorre creare, nella home directory dell'
utentemailbox in questione (ad esempio “user1"), un file .vacation.msg in
cui deve comparire il subject, e il testo del messaggio automatico
separati da una riga vuota. Infine va inizializzato il programma con il
comando “vacation -I user”
793
<
0
• In passato, parlare di mail server linux era
equivalente a parlare di Sendmail, il più noto e
diffuso software SMTP per Unix
• non si può certo dire che Sendmail godesse di
buona fama in quanto a sicurezza
• Fu questa fama di "mail server bacato" che, in
passato, spinse alcuni virtuosi a scrivere da zero
dei nuovi software SMTP, interamente pensati in
funzione della sicurezza
• E fu così che nacquero Postfix e Qmail
l'
idea che sta alla base è avere un programma di facile configurazione e
amministrazione, con potenti funzionalità di sicurezza e filtri antispamming, stabile e veloce
794
•
•
•
•
•
Il pregio di Sendmail è la sua estrema configurabilità
Il suo difetto è lo stesso pregio: l'
estrema configurabilità implica
un'
estrema complessità
Sendmail viene distribuito già configurato in modo standard
Per l'
attivazione del servizio SMTP, viene avviato normalmente come
demone indipendente dal supervisore dei servizi di rete, aggiungendo
l'
opzione -bd (che viene comunque fatta automaticamente all’avvio del
sistema)
Per l'
invio di un messaggio, è sufficiente avviare sendmail, fornendogli
il messaggio attraverso lo standard input, avendo cura di separare con
una riga vuota l'
intestazione dal testo
$ cat | /usr/sbin/sendmail [email protected][Invio]
From: [email protected][Invio]
Subject: ciao ciao[Invio]
[Invio]
Prova prova prova prova[Invio]
[Ctrl+d]
795
•
•
•
•
La configurazione di Sendmail è a dir poco “terribile” e si attua
attraverso il file etc/sendmail.cf
Per modificare la configurazione di Sendmail, si evita generalmente di
intervenire direttamente nel file /etc/sendmail.cf, utilizzando piuttosto
dei linguaggi macro in grado di costruirne uno con meno fatica
Comunque è consigliabile non modificare il file di configurazione se
non si abbastanza esperti da farlo
Ricordiamo solo alcuni parametri che possono essere modificati
anche a mano:
# "Smart" relay host (may be null)
DS
e la si trasforma in:
# "Smart" relay host (may be null)
DSsmtp.tiscali.it
796
• E’ necessario poi riavviare sendmail:
# /etc/rc.d/init.d/sendmail restart
# /etc/init.d/sendmail restart
• Come già ricordato non è una buona idea usare
la posta da root, una soluzione (non troppo
sicura) sarebbe quella di creare un link simbolico
a sendmail nella directory dell’utente:
# ln -s /usr/sbin/sendmail /home/utente/bin/
• La soluzione di certo non è delle più sicure, ma
di certo è molto veloce e non è certamente
peggio che aprire una shell di root
797
0
•
•
•
Postfix è stato interamente progettato, sin dall'
inizio, per
essere sicuro e veloce: esso è costituito da numerosi
demoni, ognuno dei quali si occupa di un processo ben
definito. Solo uno di essi, master, è eseguito con privilegi
"elevati", tutti gli altri possono essere facilmente eseguiti
con bassissimi privilegi per garantire maggior sicurezza e
velocità
Lo scopo di Postfix è quello di sostituire interamente
Sendmail, mantenendone però in tutto e per tutto la
compatibilità: ciò significa che migrare un server da
Sendmail a Postfix risulterà completamente trasparente
ad ogni altra applicazione
Per l’installazione:
apt-get install postfix
798
# appending .domain is the MUA'
s job.
append_dot_mydomain = no
# QUEUE AND PROCESS OWNERSHIP
mail_owner = postfix
#il possessore di processi postfix,utente #con privilegi minimi
default_privs = nobody
#i privilegi dell’agente di smistamento locale
# INTERNET HOST AND DOMAIN NAMES
myhostname = nb-taschin
mydomain = toshiba
# SENDING MAIL
myorigin = $mydomain
relayhost =smtp.tiscali.it
#nome pc
#dominio
#il server per il relay
# RECEIVING MAIL
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $mydomain
# TRUST AND RELAY CONTROL
mynetworks = 192.168.0.0/24,127.0.0.0/8 #aggiungo le reti che possono accedere
# ALIAS DATABASE
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
notify_classes = resource, software, bounce, protocol
# DELIVERY TO MAILBOX
mail_spool_directory = /var/spool/mail
mailbox_command = /usr/bin/procmail
mailbox_size_limit = 0
recipient_delimiter = +
#dimensione della mailbox
#- Se si vuole un backup TOTALE di tutto quello che passa attraverso Postfix,
#- togliete il commento dalla riga seguente e modificate l'
indirizzo email.
#- L'
indirizzo indicato riceverà in copia nascosta (BCC) tutte le email!
#always_bcc = [email protected]
799
0
•
•
•
•
•
La configurazione riportata si basa sulla creazione di un server di posta
funzionante nella intranet locale
La configurazione di postfix è in /etc/postfix/main.cf
myorigin: Questo parametro specifica quale dominio apparirà nelle email che sono inviate su questa macchina. Di default si usa il nome della
macchina stessa ($myhostname) a meno che non si abbia un piccolo
dominio, nel qual caso bisognerà cambiare il valore in $mydomain. E’
importante notare che “myorigin” specifica anche il nome di default che
verrà aggiunto ad un qualsiasi destinatario non qualificato
mydestination: Questo parametro specifica quali destinatari verranno
considerati locali,quindi gestiti localmente invece che essere spediti ad
un'
altra macchina. Si possono inserire uno o più domini separati da
virgole.
mynetworks: Le reti che sono autorizzate da postfix sono definite in
questo parametro. Di default sono autorizzati tutti gli IP nella sottorete
dove la macchina sulla quale è installato postfix si trova.
800
0
•
notify_classes: Gli alias servono anche per recapitare a chi di
dovere le mail contenenti i report di problemi avvenuti durante
la spedizione o ricezione dei messaggi.
Tramite questo parametro è possibile selezionare sotto quali
condizioni si riceveranno i report relativi a malfunzionamenti.
Di default si ha: notify_classes = resources, software
Esistono anche i seguenti parametri:
–
–
–
–
–
bounce: invia al postmaster le copie dei messaggi non consegnati. Per garantire la
privacy la copia del messaggio non consegnato che viene inviata al postmaster viene
troncata dopo gli headers.
delay: informa il postmaster di mail ritardate. In questo caso il postmaster riceve solo gli
headers dei messaggi.
protocol: Informa il postmaster di errori nel protocollo (o del server o del client). Il
postmaster riceve un log di tutta la sessione SMTP.
resource: Informa il postmaster di mail non consegnate a causa di problemi dovuti alle
risorse (per esempio un errore di scrittura nel file delle code)
software: come il precedente con la differenza che l’errore è dovuto ad un problema
software.
801
0
•
•
•
myhostname: descrive completamente il nome del dominio della
macchina su cui è avviato Postfix. Il valore di default è $myhostname
mydomain: specifica il dominio “padre” di $myhostname. Di default è
derivato da $myhostname togliendo la prima parte (per esempio,
local.domain)
mynetworks_style: Questo parametro elenca tutte le sottoreti che sono
ritenute affidabili. Questo serve per permettere di decidere quali hosts
hanno il permesso di inviare mail tramite postfix.
Di default si ha: mynetworks_style = subnet; però si possono impostare
anche altri valori:
–
–
–
class: Considera affidabili i clients nelle classi A/B/C alle quali Postfix è connesso.
subnet: Ritiene affidabili i clients facenti parte della sottorete alla quale Postfix è connesso
host: Ritiene affidabile solo la macchina locale
In alternativa si possono specificare le networks elencandole “a mano”, in
questo caso Postfix ignorerà mynetworks_style. La sintassi da usare è
semplice:
mynetworks = 127.0.0.0/8, etc , ect.
802
0
• Terminata la configurazione è necessario
far partire Postfix con i comandi:
/etc/init.d/postfix reload
/etc/init.d/postfix start
803
0
•
Cosa si può fare contro lo spam tramite Postfix? Grazie al file di configurazione
possiamo intervenire in questo senso per eliminare o quantomeno ridurre lo
spam:
#- anti-spam! Confronta gli header delle email con quelli riconosciuti come
#spammers,e in tal caso scarta l'email. Rallenta leggermente il processo! La
#prima riga definisce i server usati per il controllo, la seconda e la terza
#impongono delle restrizioni, la quarta definisce un file aggiuntivo in cui
#inserire delle espressioni regolari tramite le quali scartare a priori email
#potenzialmente pericolose, come il famoso virus I-Love-You. La quinta richiede
#che l'MTA invii un comando HELO per stabilire la connessione, cosa che i
#software di spam di solito non fanno, mentre gli MTA veri fanno quasi sempre!
maps_rbl_domains = blackholes.mail-abuse.org, dialups.mailabuse.org,rbl.maps.vix.com, dul.maps.vix.com
smtpd_client_restrictions = permit_mynetworks, reject_maps_rbl,
reject_unknown_hostname
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
#header_checks = regexp:$config_directory/header_checks
smtpd_helo_required = yes
804
0
•
•
•
•
Ricordiamo che per garantire una maggior sicurezza,
durante l’installazione di Postfix è assolutamente
indispensabile settare un gid alla directory maildrop
In questa maniera la directory non sarà world-writeable
La directory maildrop entra in gioco solo nel caso di invio
locale di posta: quando un utente invia una mail in locale,
viene scritto un file che contiene il messaggio proprio nella
directory maildrop. A questo punto il demone pickup
preleva il messaggio e lo inserisce nella coda della mail in
arrivo, pronto per essere processato.
Assegnare un GID alla directory maildrop significa che
questa non sarà più scrivibile da tutti, ma solo dal demone
di posta
805
.
•
•
•
•
Per configurare il server con il servizio POP3, si può ricorrere al
pacchetto ipopd. Quindi.
apt-get install ipopd
Non è necessario apportare modifiche particolari per rendere attivo
il server
A questo punto siamo quasi alla conclusione della configurazione
del server di posta locale, basta solo creare gli account di posta sul
server e poi informare i client che vogliono scaricare la posta di
queste impostazioni
Sui client è necessario settare i seguenti parametri:
indirizzo di posta elettronica: nome_utente@dominio
utente: nome_utente
password: password per l’utente in questione sul server
Server POP3: ip del server creato
Server SMTP: ip del server creato
806
0
•
•
Problema utenti di sistema = account di posta, visibilità all’esterno di
utenti di sistema con relativi problemi di sicurezza
Una possibile scelta per evitare questi inconvenienti si basa sul file
/etc/aliases, che permette di "mappare" un indirizzo e-mail virtuale a un
account di sistema operativo:
#Alias per la ditta
nonna.papera:
gatto.silvestro:
zio.paperone:
wilie.coyote:
daffy.duck:
user00
user01
user02
user03
user04
Dove user00,etc etc sono utenti di sistema.
• Per recuperare la posta tramite POP3 basterà configurare il programma
di posta utilizzando lo username "user00" (e non "nonna.papera"): in
questo modo, solo gli utenti interni conosceranno l’username reale,
tutto il resto del mondo vede solo un alias che non può essere utilizzato
per accedere al sistema
807
0
• Una delle prime cose che un amministratore di
sistema sa, è che lo spazio disco non è mai
abbastanza
• E’ possibile, sempre tramite il file di
configurazione di Postfix, limitare lo spazio
dedicato alle caselle di posta e limitare la
dimensione dei messaggi:
Dei valori appropriati possono essere i
seguenti:
mailbox_size_limit = 10240000 #10Mb
message_size_limit = 2048000
#2Mb
808
0
•
•
Esaminiamo ora un caso più interessante. Lo scenario è il
seguente: un ipotetica azienda ha un solo indirizzo di
posta elettronica (all’esterno), ad esempio
[email protected]
Supponiamo che l’azienda abbia un indirizzo di posta
generale: [email protected]. Nell'
azienda ci sono due
dirigenti che hanno il proprio indirizzo di posta Internet.
Supponiamo che si chiamino Luigi Verdi e Valeria
Bianchi, con indirizzi [email protected] e
[email protected].
Il resto dei dipendenti riceverà mail solo dall'
indirizzo
generale dell'
azienda, ossia [email protected]. Supponiamo
che i dipendenti siano tre: Mario Rossi, Antonio Giallo e
Alessandra Neri. Mario Rossi è anche la persona
incaricata per la lettura della mail generale dell'
azienda
809
0D
•
-
Supponiamo che Mario
Rossi spedisca una mail
con destinatari Valeria
Bianchi e un cliente
esterno Giorgio Quadro.
Il suo indirizzo di
spedizione è
mario.rossi@s_azienda.it
.
Il server di posta interno
riconosce che la mail ha
due indirizzi, di cui uno è
interno, l'
altro è esterno,
e "spezza in due" la mail:
la parte interna viene
gestita dal modulo local,
mentre la mail esterna
dal modulo smtp
810
0D
•
-
supponendo che Giorgio Quadro
voglia rispondere a Mario Rossi
con un replay, di fatto risponde a
[email protected]. Con i programmi
di posta attuali, comunque, il
nome Mario Rossi rimane nel
campo To della mail.
Il server di posta "scarica" le mail
da internet attraverso uno script
lanciato ad intervalli regolari che
esegue fetchmail come utente
postfix. Le impostazioni di
procmail per l'
utente postfix
riconoscono che nella parte To
della mail è presente il nome
"Mario Rossi" e redirigono la mail
all'
utente
mario.rossi@s_azienda.it, che
quindi riceverà la mail come
personale
811
0D
•
•
-
C’è un problema degli indirizzi di posta elettronica interni (non
validi all’esterno) quando la mail viene spedita ad un destinatario
esterno.
La soluzione consiste nella modifica dei sorgenti di Postfix:
Al termine è necessario ricompilare i sorgenti:
make
make install
Successivamente si edita il file di configurazione di postfix
apportando le seguenti modifiche:
# INTERNET HOST AND DOMAIN NAMES
myhostname = interno.s_azienda.it
mydomain = s_azienda.it
# SENDING MAIL
myorigin = $mydomain
812
0D
-
•
In questo modo gli indirizzi di posta interna saranno del
tipo: <nome_utente>@s_azienda.it
•
Per quanto riguarda l'
esempio preso in esame, il file
/etc/postfix/sender_canout conterrà le seguenti righe:
luigi.verdi@s_azienda.it|dott. Luigi <[email protected]>
valeria.bianchi@s_azienda.it|ing. Valeria Bianchi
<[email protected]>
mario.rossi@s_azienda.it|dott. Mario Rossi <[email protected]>
antonio.giallo@s_azienda.it|dott. Antonio Giallo <[email protected]>
alessandra.neri@s_azienda.it|dott. Alessandra Neri <[email protected]>
•
A questo punto basta eseguire Postfix:
/usr/bin/postfix start
813
•
Attraverso Procmail si possono impostare delle regole per
"consegnare" le e-mail ad un utente o ad un altro, a seconda di quali
caratteristiche delle e-mail in arrivo vengono prese in
considerazione
• Le regole devono essere inserite nel file nascosto .procmailrc che
deve essere creato nella home directory dell'
utente che riceve le
mails su cui si dovranno poi applicare le regole
• Esempio
• Un contenitore è una parte del file .procmailrc. Esso inizia con il set
di simboli “:0” (due punti zero) e finisce dove inizia un nuovo
recipiente o alla fine dello stesso file
• • Al set di simboli :0 possono seguire dei particolari flag
Alcuni flag sono:
–
–
–
–
– c - Processa il messaggio senza spostarlo dallo spool di entrata
– B - La regola si applica al corpo del messaggio
– H - (default) La regola si applica all’intestazione del messaggio
– D - La regola è case sensitive
814
• • Dopo :0 segue la regola
La regola inizia sempre per * e contiene un
espressione regolare da confrontare con il
contenuto del messaggio (l’intestazione e/o
il corpo, a seconda del flag attivato)
–
–
–
–
– Il carattere “^” “apice” significa all’inizio della riga
– Il carattere “.” significa qualsiasi carattere
– Il carattere “*” significa che l’ultimo carattere specificato può
essere contenuto anche più volte
Il carattere “!” serve a reindirizzare i messaggi che verificano la
regola nella casella di posta indicata
815
A
! 1
• SMTP
• POP3
816
<
0 '
AB
.
)
)
-222
9
)
)
1
%
%
)
C
'
)
)
)
)
)
.-D;
;E;2 !
- ;5
-!
-A
)
F
) =F
817
<
0 '
-222
E
,
9
G
)
818
0 '
-222
"
'
,
###'
H
I
%
!
9
,
AB
H
I
%
###
.
AB
###
!
9
3
!
AB
9
###
9
819
0 '
-222
AB
###
A9
9
AB
###
)
.
D
A
B
AB
)
.
D
AB
%
820
0 '
-222
0
0
!"
# $$ %
$&"'
3
"
%
)
3
%
9
9
9
9
G
J
)B
) BF
)
9
K
)B
- AB
)B
9
%
)B
AB
9 )
9
.
9
9
%
9
9AB
)B
9
.
9
AB
821
0
'
!
9
)B
AB
AB
77 !
9
###
"-
)B
19 )
!
9
!
)
,
)B
)
822
7
.
-!
-A
)
I
!
E
AB
###
=AB
)
AB
(
) =F
'
)
$
F
$
)
###
AB
) =F
AB
G
F
F
)
) !
;
) =F
L
)
$
>DD;.-D;;E;
!
;
!
- ;
" ! 0G
$
.-D;
$
%
823
'
• Apache, (scritto da un team di volontari, noti come l'
Apache
Group) è nato come rimpiazzo per il webserver httpd 1.3
sviluppato dal NCSA (National Center for Supercomputing
Applications), inglobandone le caratteristiche, risolvendone
i problemi ed implementando nuove caratteristiche.
• Apache è un webserver per il protocollo HTTP, designato
per poter girare come un processo standalone, senza cioè
chiedere l'
appoggio ad altre applicazioni o direttamente
all'
utente. Per poter fare ciò, Apache, una volta avviato,
crea dei sottoprocessi per poter gestire le richieste: questi
processi, comunque, non potranno mai interferire con il
processo maggiore, ma può succedere l'
opposto:
mandando un segnale di stop a questo, anche i children
saranno terminati.
824
'
• lanciamo lo script ./configure, per preparare la
compilazione dei sorgenti; tale script accetta varie
opzioni:
• --prefix=<dir> E'la directory nella quale volete installare
Apache (è consigliata /usr/local)
• --add-module=FILE Serve per copiare il sorgente di un
modulo nell'
albero dei sorgenti di Apache;
• --activate-module=FILE Aggiunge al volo un'
entry per un
modulo al file di configurazione di Apache
• --enable-module=NAME Serve per fare in modo di
abilitare (o disabilitare, utilizzando --disable-module) un
modulo particolare
• --with-perl=FILE Serve per impostare l'
interprete perl
utilizzato da Apache (anche se di solito Apache cerca da
solo l'
interprete)
825
'
• Ovviamente la opzioni da passare a
./configure non sono tutte qui.
• Per conoscere tutte le opzioni, lanciate
./configure --help
• make
• make install
826
'
• A questo punto Apache è installato ma non
ancora attivo.
• lanciamo
<dirApache>/sbin/apachectl start
e dovremmo poter richiedere ad Apache il
primo URL, che sarà http://localhost.
• Se volete fermare Apache, lanciate
<dirApache>/sbin/apachectl stop
• questo è tutto per quanto riguarda
l'
installazione partendo dai sorgenti.
827
'
• il file principale è
/etc/apache/httpd.conf
• Se si è compilato apache magari sta da
qualche altra parte
• In definitiva, cercatelo.
• File ampiamente commentato
– dalla RedHat 7.3 sta in /etc/httpd/conf
828
'
• Le voci più significative sono:
• ServerType
Impostatelo su '
standalone'
,
dovrebbe bastare.
• Port
porta
• HostnameLookups
Logga i nomi dei client (on)
o solamente il loro numero IP (off);
• ServerAdmin
indirizzo email amministratore
• ServerRoot
La directory dove Apache conserva
i log, gli errori e i file di configurazione;
solitamente è la directory dove è presente il file
httpd.conf
829
'
• LoadModule
Importante: indica ad
Apache quali moduli caricare;
• ErrorLog
Il file dove Apache scrive gli
errori. /var/log/apache/error.log
ServerName
Il nome del server. Se non
è impostato, sarà localhost.localdomain ma,
siccome è scomodo, lanciare (da root)
hostname e cambiate il nome al vostro host
830
'
• Un altro file importante è srm.conf, che dovrebbe essere
nella stessa directory di httpd.conf. Generalmente viene
consigliato di lasciarlo vuoto
• DocumentRoot
La directory nella quale mettere i file html
per la pagina locale. Solitamente /var/www : quindi se in
tale directory mettete un vostro index.html.
• DirectoryIndex
Il nome della pagina che verrà
visualizzata come indice; solitamente index.html
ecco i CGI: conviene impostare tale voce
• ScriptAlias
come : ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ . Cosa significa?
semplicemente, che potete inserire i CGI in /usr/lib/cgi-bin/,
ma questi saranno chiamati tramite http://localhost/cgibin/nome_cgi.cgi
• Se qualcosa fosse andato storto, leggete la
documentazione inclusa nell'
archivio che avete scaricato ed
eventualmente cercate la cartella /usr/doc/apache
831
'
• In generale le porte al di sotto della 1024 sono
"di sistema", nel senso che i normali utenti non
possono farne uso. Quindi, è necessario che
apache sia fatto partire dall'
utente root nel caso
si utilizzi la porta 80;
• Prima di essere pronto ad accettare le richieste,
l'
esecuzione di Apache sarà "spostata" all'
utente
definito nella direttiva User nel file httpd.conf: in
questo modo, tutti i processi children saranno su
porte il cui numero è maggiore di 1024.
832
'
• la direttiva "User".
• Per utilizzare tale direttiva, è necessario che l'
utente che ha
avviato Apache SIA root. Il nome dell'
utente può essere
specificato come il nome a caratteri oppure tramite il suo ID
numerico preceduto dal simbolo # (ad esempio, # 1002).
• Questo utente non dovrebbe avere troppi privilegi sul
sistema, come ad esempio la possibilità di leggere
importanti file di sistema, lanciare eseguibili che non hanno
a che fare con httpd e simili. La cosa migliore da fare è
quella di creare un nuovo utente ad hoc per l'
esecuzione di
Apache
• Evitare l’uso di nobody
• Ovviamente, inoltre, è fortemente sconsigliato specificare
"root" nella direttiva "User".
833
'
• Assieme ad "User", inoltre, dovrete
specificare anche un nome di gruppo
per la direttiva "Group": se avete creato
un nuovo utente (supponiamo "prova")
per far girare Apache, potrete inserire
"prova" anche per il gruppo, a meno che
abbiate la necessità di utilizzare un
Group differente.
834
%
• Scorrendo il file httpd.conf, ci imbatteremo presto nella
direttiva "ServerRoot": in questa directory saranno
contenuti i file di configurazione di Apache, gli errori ed i
log, se non specificato differentemente.
• Evitate che tale directory sia visibile dal web, piuttosto
scegliete una directory come /etc/apache oppure
/var/log/apache.
• Bisognerà anche fare attenzione ai permessi da dare a
questa directory: i file che essa contiene, infatti, sono
alquanto importanti e possono modificare radicalmente il
comportamento del server: evitate quindi che altri utenti al
di fuori dell'
amministratore possano leggere e scrivere al
suo interno. Inoltre, per lo stesso discorso, fate lo stesso
anche con le directory ed i file di log.
835
$
%
• Passiamo poi alla direttiva "DocumentRoot": in questa
directory saranno presenti i documenti visualizzabili dal
web, in poche parole il sito principale associato al
webserver. Per essere ancora più chiaro, se il nome del
vostro host è "www.myserver.it", se un utente digiterà dal
browser l'
indirizzo "www.myserver.it" appariranno proprio
le pagine presenti in "DocumentRoot".
• Poco sotto a DocumentRoot c'
è la direttiva
"DirectoryIndex”. Provate a digitare nel browser l'
indirizzo
di un qualsiasi server e notate che non inserite alcun
nome del file che abbia estensione html. Se questo
accade, è grazie alla direttiva "DirectoryIndex“.
836
$
/&
0
• specificando ad esempio "index.html" come
valore della direttiva, saremo sicuri che, se in
una directory è presente un file chiamato
"index.html", Apache farà in modo che non sia
necessario digitare nomedirectory/index.html
perchè sia visualizzato tale file, ma solamente
nomedirectory.
• Un'
ultima cosa relativa a DirectoryIndex è il
fatto di poter indicare diversi nomi di pagine,
non solo index.html: i più significativi possono
essere "index.shtml", "index.htm" ecc,
l'
importante è che questi siano separati da
spazi.
837
'
• Veniamo ora alla directory UserDir, impostata di
default su /home/*/public_html
• I file presenti nella directory
/home/nomeutente/public_html sono
visualizzati quando, dopo il nome di dominio, sia
specificato anche ~nomeutente
• Ovviamente, ogni utente deve avere un account
sulla macchina.
838
'
• L'
avvio al boot è determinato da un semplice
script presente in /etc/init.d (oppure /etc/xinetd.d)
: il nome dello script è:… apache!
• Quindi apache start
• Oppure apache restart per un riavvio nel
caso per esempio abbiamo modificato la
configurazione
• apache stop
839
$
• Per impostare un dominio virtuale, si deve
modificare il file
• Oltre a questa modifica si deve avere a
disposizione un servizio di risoluzione dei nomi.
sono le
• Le modifiche da apportare al file
seguenti:
NameVirtualHost IP_macchina
<VirtualHost dominiovirtuale>
ServerAdmin amministratore@macchina
DocumentRoot /usr/local/httpd/dominiovirtuale/htdocs
ServerName dominiovirtuale
ErrorLog log/dominiovirtuale.error.log
CustomLog log/dominiovirtuale.custom.log
</VirtualHost>
840
$
• Se l'
indirizzo della macchina è 127.0.0.1 ed il suo nome è
localhost, il file /etc/hosts si presenterà circa così:
• 127.0.0.1 localhost Si dovrà semplicemente aggiungere
un'
altra riga relativa al dominio virtuale:
127.0.0.1 localhost
127.0.0.1 dominiovirtuale
• Potrebbe essere necessario permettere l'
accesso alla
directory contenente i file del dominio virtuale. In tal caso si
dovrà modificare il file access.conf che generalmente è
presente nella directory /etc/apache/ o in /etc/. La modifica
consisterà nell'
aggiunta delle seguenti righe al file:
•
•
•
•
•
•
<Directory /usr/local/httpd/dominiovirtuale/htdocs>
Options Indexes SymLinksIfOwnerMatch
AllowOverride None
order deny,allow
allow from all
</Directory>
841
• Per permettere l'
accesso ad alcune pagine HTML
solo a chi ha la password occorre inserire le
seguenti
direttive
nel
file
/etc/apache/access.conf
<Directory /directory/da/proteggere>
AuthType Basic
AuthName Nome_della_struttura_di_appartenenza
AuthGroupFile /file/dei/gruppi
AuthUserFile /file/degli/utenti
<Limit GET POST>
require valid-user
</Limit>
</Directory>
842
A
!
• IIS
843
4
&
&
• Un filtro ISAPI è un programma che risponde a
degli eventi durante una elaborazione HTTP.
– Possibilità di richiamare funzioni direttamente da una
DLL residente sul server limitando e rendendo più
efficiente il passaggio dei parametri.
– Due tipi:
• Estensioni: DLL che risponde solo ad una specifica richiesta da
parte del client
• Filtro: DLL che viene richiamata automaticamente all’avvio del
server
• Possibilità di:
– Creazione, modifica cancellazione filtri
– Ordinamento importanza filtri (solamente con filtri che
hanno la stessa priorità)
– Abilitare / Disabilitare un filtro
844
– Non esiste una definizione precisa o
unicamente accettata. Ciascun produttore
propone la propria, arricchendola di
caratteristiche e opzioni anche molto diverse tra
loro.
– Un Application Server è una piattaforma
integrata di sviluppo e installazione software per
gli ambienti Internet/Intranet. Consente la
realizzazione di applicazioni web dinamiche e
siti interattivi risolvendo problematiche di
sicurezza, prestazioni ed usabilità.
845
• Indipendentemente dalle specifiche caratteristiche di
ogni prodotto, un Application Server fornisce metodi
già predisposti per:
– La definizione e riutilizzo di template grafici associati
ad ogni tipologia di oggetto, separando struttura da
informazioni e dalla loro rappresentazione.
– La gestione degli utenti e dei rispettivi diritti di
accesso ad aree e funzioni riservate.
– La gestione di archivi di immagini e documenti.
– La disponibilità di un motore di ricerca integrato
– La definizione di sistemi di workflow con cui
organizzare le fasi di lavoro.
846
7
• Vantaggi nelle attività di sviluppo:
– Semplificazione delle attivita’ di sviluppo.
– Supporto di vari linguaggi, strumenti e piattaforme.
– Riusabilità del codice.
• Per quanto riguarda invece le fasi di
elaborazione:
–
–
–
–
–
–
Gestione delle richieste e delle transazioni.
Scalabilita’.
Alte prestazioni.
Sicurezza.
Estensibilita’.
Robustezza.
847
&:<
1) WebSphere Express :
Non è compatibile a pieno con J2EE, supporta solo
applicazioni su jsp e Servlet,
non gestisce EJB.
2) WebSphere Application Server :
Supporta pienamente J2EE 1.3, Xml e Web service,
possibilità di interfacciarsi con oggetti Com+ e convertirli in
EJB,
gestione bean di tipo message-driven attraverso JMS.
3) WebSphere Application Server for developers :
Edizione per sviluppatori,
Licenza per il DB2,
È piattaforma su cui è possibile eseguire l’intero ciclo di
sviluppo e test di applicazioni.
848
&:<
• 4) WebSphere Application Server Network
Deployment :
– Versione dedicata al clustering,
– funzioni avanzate di bilanciamento del carico e fail over,
– server dedicato al caching e strumenti estesi per l’analisi
delle prestazioni.
– È disponibile anche un server UDDI ed un proxy server
per i web service.
• 5) WebSphere Application Server Enterprise
Edition :
– Include strumenti per la modellazione e il workflow di web
service,
– un framework per lo sviluppo e la gestion di logiche
applicative.
849
• VANTAGGI:
–
–
–
–
Ottima console di amministrazione.
Estremamente orientato allo sviluppo.
Buoni strumenti di monitor per le prestazioni.
Proxy server per i webservice(versioni fascia alta).
• SVANTAGGI:
– Approccio conservativo.
– Non è fornita la possibilità di sperimentare le versioni
avanzate dei tool(non sono scaricabili in prova)
850
:
A
Risponde alle richieste delle applicazioni per l’e-commerce
• JMS Java Messaging Service
• EJB Enterprise Java Beans
• Standard J2EE
• Completa implementazione degli standard EJB
• Lo sviluppo e la distribuzione di pagine web dinamiche
grazie al supporto JSP
• La consegna garantita dalle funzioni Store-and-forward
o Point-to-point offerte da JSP
• L’accesso e l’aggiornamento dei Database da ogni punto
della rete grazie all’utilizzo dei driver JDBC Multipler
• La connessione nativa Database Java verso Oracle,
Informix, Sybase e SQL Server
851
'
•
L’innovativa architettura di WebLogic Server integra la
parte di gestione delle risorse e i servizi di ottimizzazione
presenti in un Application Server tramite i protocolli RMI,
JNDI, EJB e JDBC.
• JNDI fornisce dinamicamente le informazioni sulla
locazione e disponibilità dei componenti applicativi,
distribuiti a loro volta tramite i Controller EJB
• Il Framework RMI
• fornisce le connessioni automatiche
• il Pooling delle sessioni
• il bilanciamento dei carichi di lavoro attraverso un
Cluster di Application Server.
852
• Supporto a standard
consolidati
• Integrazione con
applicazioni BEA e terze
parti ai massimi livelli
• Supporto al Clustering
completo e semplicità di
gestione dei nodi
• Oneroso in termini di
carico macchina
• Richiede amministratori
di sistema specializzati
per ottenere le massime
prestazioni
853
<
B%
• Certificato J2EE 1.3
• Supporta EJB, JSP, Servlet, JMS, JDBC
• Riduce il numero di applicazioni installate
e lascia al sistemista l’onere
dell’integrazione
• Le risorse di sistema richieste sono
logicamente inferiori alla media
854
B%
B
• Si basa sulla dinamicità della tecnologia di
rete Jini per fornire soluzioni di clustering
J2EE potenti
• Grazie all'
utilizzo di Jini, JRun ha creato
un meccanismo basato sui peer per i
servizi come Enterprise JavaBeans che
possono collaborare tra di loro.
855
• Buon rapporto qualità
prezzo
• Semplicità di utilizzo
• Buona console di
amministrazione
• Buona integrazione con
prodotti Macromedia
• Poche applicazioni
supplementari installate
• TAG proprietari che
richiedono una curva di
apprendimento superiore
alla media nella
programmazione
856
:
•
•
•
Web :essenzialmente un web server e
poco più
Visibroker :il motore CORBA per
applicazioni distribuite
AppServer :l’application server J2EE
857
•
•
•
•
•
Viene introdotto il supporto all’J2EE 1.4
Gli standard supportati: EJB, Servlet, JSP,
JMS, Xml e Soaop
E’ possibile installare oltre al server: il client, la
console di amministrazione, lo strumento di
amministrazione remota
Sul fronte sicurezza i protocolli supportati sono
molteplici:JSSE, JAAS, JCE, SSL e X.509
Si ricorre sempre ai ruoli per poter distribuire
policy su più applicazioni
858
• Scalabilità
• Semplicità di utilizzo
• Ottimo interfacciamento
con Jbuilder
• Gestione completa di
oggetti Corba
• Gestione dei dati non
all’altezza dei concorrenti
• Il forte legame con
Visibroker lo orienta a
progetti di nicchia
859
•
Da IIS 4 ad IIS 5, l'
architettura di Internet Information Services è basata integralmente sul
concetto isolamento del processo: le applicazioni web girano in un'
area di memoria
condivisa in base al livello di isolamento che è stato impostato nella console di gestione.
•
Esistono tre diversi profili ai quali associare un sito web (o un'
applicazione virtuale):
–
–
–
•
•
•
Low: è il livello di isolamento più basso. In questo caso l'
applicazione girerà nello stesso spazio di
memoria di IIS.
Medium: è il livello intermedio e quello di default. Tutte le applicazioni condividono questo spazio di
memoria, ma IIS ne ha uno separato.
High: è il livello di isolamento più alto, che isola del tutto l'
applicazione rispetto alle altre ed allo
stesso web server.s
Nel caso in cui un'
applicazione ha problemi di stabilità, in genere si utilizza la modalità
"High isolation", che fa sì che eventuali crash dell'
applicazione non influenzino le altre, che
in genere si trovano in una modalità di isolamento intermedia.
Nonostante questo isolamento, ogni applicazione potenzialmente scritta male, sia per
sbaglio che volontariamente, può portare al blocco totale del web server, per via della
particolare architettura di IIS 5, che ha il servizio che controlla lo stato delle applicazioni
all'
interno dello stesso eseguibile (e quindi nello stesso processo) del web server.
In parole povere, un'
applicazione malfunzionante non solo bloccherà sé stessa, ma con
ogni probabilità bloccherà tutte le altre e lo stesso web server, proprio perché il servizio
che è preposto al controllo delle applicazioni web gira nello stesso processo del web
server, ovvero inetinfo.exe. Quindi se il servizio va in crash, inevitabilmente il processo
farà la stessa fine, rendendo di fatto impossibile riavviare automaticamente il servizio.
860
&&
6
•
Tenendo a mente questi difetti, il dev team di IIS ha praticamente riscritto da
zero il web server, riprogettando dunque l'
architettura perché tenga a mente due
requisiti indispensabili per le applicazioni moderne: security e availability.
•
IIS 5 ha una struttura dei pool di esecuzione differente, e comunque non
paragonabile come elasticità di configurazione a quella di IIS 6, che permette di
impostare n applicazioni all'
interno di un pool particolare, e di isolarne delle altre.
•
Questo, oltre a consentire l'
isolamento di applicazioni che per qualche motivo
hanno problemi, permette di configurare in maniera dettagliata tutta una serie di
funzionalità, tra cui la memoria massima (virtuale e fisica) che l'
applicazione può
consumare, così come la CPU massima occupata, ed eventuali politiche di
riciclaggio del processo, in base ad esempio ad una data ora, ad un numero
massimo di richieste soddisfatte. Si parla di riciclaggio e non riavvio del processo
perchè IIS 6 infatti non necessita di riavvii per scaricare la memoria, ma può
riciclare i processi in maniera automatica o al verificarsi di problemi particolari. Il
riciclare anziché riavviare permette di evitare il down time dovuto al riavvio
stesso, perché in pratica si migliora la disponibilità del server, rendendo inutile il
riavvio fisico del processo stesso, tranne in casi davvero rari. Il riciclaggio infatti
è molto semplice: il servizio web rimane sempre in attesa, ciò che fa è chiudere
un particolare processo e crearne uno nuovo, a cui andranno indirizzate le
richieste future. In questo modo non si perde nemmeno una richiesta per strada.
861
'
• IIS 6 si basa dunque su
una nuova architettura,
completamente rivista
rispetto alle versioni
precedenti. I
componenti principali in
gioco ora sono tre:
W3SVC, http.sys e
W3Core.
862
A.
• W3SVC è il pezzo meno visibile e pubblicizzato della nuova
architettura ma non per questo è il meno utile, anzi. E'il servizio che
crea e monitora i worker process (i processi che fanno girare le
applicazioni web) in base alle informazioni contenute nel metabase, il
file di configurazione.
• Il parente più vicino di questo servizio è l'
amministrazione di IIS 5, che
però è parte integrante di inetinfo.exe e quindi è più soggetto a
problemi: se inteinfo.exe va in crash, come già detto, l'
amministrazione
che è parte integrante dello stesso servizio fa la stessa fine, rendendo
impossibile il riavvio del processo e bloccando quindi tutte le richieste
al servizio web.
• Nella versione 6 W3SVC opera come processo indipendente e fa una
cosa molto semplice: verifica che ogni applicazione funzioni ed in
caso contrario provvede al riavvio.
• Visto che non c'
è codice che gira in questo processo, non è possibile
che vada in crash e di conseguenza è sempre possibile riavviare
applicazioni in stallo. E'proprio questo il servizio su cui si basa la
possibilità di riavviare gli application pools in maniera programmatica,
attraverso le impostazioni che preferiamo.
863
'
E /
• http.sys è invece il più pubblicizzato tra le novità dell'
architettura di IIS
6, perché è alla base delle migliorate performance del web server. E'
un driver che risiede nel kernel mode e processa le richieste HTTP in
arrivo dal web server.
• Per capire cosa voglia dire funzionare nel kernel mode, è necessario
fare un'
analogia con IIS 4 e 5. Questi ultimi girano nello user mode, che
è quello poi che il sistema operativo utilizza per tutte le applicazioni,
che tra le altre cose non ha accesso diretto all'
hardware.
• Come conseguenza si basa su procedure particolari (le API) per avere
funzionalità specifiche, come lavorare sui driver di rete, salvare un file,
o inviare il risultato attraverso le schede di rete stesse. Il cambio di
stato, da kernel a user mode, di una esecuzione è operazione assai
dispendiosa in termini di consumo di risorse.
• Utilizzando un driver nel kernel mode, IIS 6 ha accesso diretto alle
funzionalità di rete, senza bisogno di passare attraverso questo switch
di contesto per utilizzare Winsock. Con alti carichi questo piccolo tempo
necessario a cambiare il contesto si traduce in un'
ottimizzazione della
velocità di risposta del web server.
864
'
E /
• IIS 6 continua a girare nello user mode (più sicuro perché, per l'
appunto,
in grado di avere meno privilegi) ma dipende da http.sys che invece è
nel kernel mode e che si occupa di ricevere le richieste, decidere a quale
worker process girarle e quindi restituire la risposta.
• Ovviamente il driver è fatto in modo tale da evitare che un utente possa
farci girare codice in grado di provocare un crash nel driver stesso,
rendendo quindi impossibile fermare IIS 6 in questo modo.
• Tra le altre funzionalità che http.sys ha in carico c'
è la gestione dei logs.
In questo modo il driver scrive i logs in maniera più veloce e previene
"scontri" tra più worker process che tentano contemporaneamente di
scrivere sullo stesso file di log, rendendo più inoltre veloce l'
operazione.
Tra l'
altro http.sys è in grado di registrare errori particolari in un file
specifico, httperr.log, che è utile ad esempio quando il driver non è in
grado di contattare il worker process, perché quest'
ultimo è andato in
crash, è in riciclo, oppure quando un utente invia una richiesta parziale
al server stesso. In questo modo è possibile dare un'
occhiata a questo
log per ottimizzare il servizio.
865
4
• La sicurezza è soggettiva!
• Nella scelta delle misure di sicurezza
diamo priorità a quelle che soddisfano le
nostre paure individuali.
• Tendiamo ad ignorare tutto il resto che
potrebbe essere invece più importante
866
• Sistemi di controllo degli accessi
• Di intercettazione ed allarme (antifurto,
videoregistrazione, vigilanza,
segnalazione)
• Di protezione degli impianti di produzione
867
•
•
•
•
•
•
•
•
Controllo degli accessi
Logging e relativa storicizzazione
Accounting e relativa storicizzazione
Tecniche di storage
Techiche di backup
Tecniche di disaster recovery
Tecniche di business continuity
Ecc ecc
868
•
•
•
•
Sicurezza e igiene sul lavoro
Uso di standard e metodologie
Conformità a leggi e norme
Formazione!
869
'
!
'J
K
J
K
A
'
(
(
870
1
,
)
'
' 9
*
(
)
'
=
,
G
(
'
9
'
9
871
'
1
)
'
+
*
+
+
&
*
)
I
=
872
&
• Un amministratore dovrà necessariamente controllare
minuziosamente tutti i dati resi disponibili da chi fornisce il
software ed implementare una buona politica per la
gestione degli utenti e delle password.
• Controllare sempre la configurazione di default è il primo
passo per rendere sicuro il sistema.
873
'
1
,
$ )
'
,' $
,' $
-
=
G
=
)
$ )
'
M
874
<
(
;
,
)
)
9
A
.
.
875
;
.
)
'
<
;
0
9
'
:
8
)
.
-
876
;
I
'
=
0 9
0
0
4
0
=
I
N D "
877
0
9
.
;
<
.
A
878
4
# *
*
. (
'
$
(
*
*
'
$
879
4
(
*#
'
&.
/ *
(
*
*
'
880
/
'
0
$
(
%/'
9
=
881
*
*
/
/12#/'
J
-
882
*
.
D
*
'3
'
=D0;
"<0
&
4
'J
(
,'
% )* +*
) #
%
/
J
)
K
!
"# $ % &%'
%,,-'
.K J /
0
0
0
'
K
883
*
*
#
(
*
* B
884
'
&
I
* 0'
I
I
5 )
*
03!
#
)
'
8
)
*
'
+
*
*
'
B
I )
)
I )
J 8K
)
885
'
'
6 +*
G
9
'
/
0
I
)
'
,'
/
3
D0;
I
G
I
'
B
'
=
886
• Tipicamente un computer analizza e processa solo
i pacchetti che hanno come IP di destinazione il
proprio o che sono pacchetti di broadcast. Per
poter sniffare tutti i pacchetti che transitano sulla
propria scheda di rete, è necessario attivare il
“promiscuous mode”
• Se il traffico sniffato contiene dati non crittati, è
molto semplice ottenere informazioni private (ad
esempio login e password)
– Un esempio è l'
insicurezza del client/server telnet: tutto
ciò che si comunica non viene crittato
887
• In genere si possono avere due tipi di reti:
A bus comune: tutti gli host della rete locale
ricevono tutti i pacchetti, anche quelli non
destinati a loro (rete ad anello con cavo
coassiale o rete a stella con un hub centrale)
Con switch: ogni host riceve solo i pacchetti
di broadcast o quelli destinati al proprio IP
(rete a stella con uno switch al centro)
888
&
)
&
$
889
!
!
;'
I =
19 !
;
!
;
$
$
*
!
;
=
G
890
! D0;
)
7
F
'
=
)
891
• Non-Blind Spoofing: quando si è sulla stessa subnet della
vittima:
– si sniffano i sequence e acknowledgement numbers.
– si ristabilisce la connessione, prendendo il posto di uno
dei due host.
• Blind Spoofing: se non si hanno i sequence e
acknowledgement numbers, bisogna predirli!
• Man in the middle: entrambi i precedenti tipi di spoofing
sono utili ad attuare questa comune violazione di sicurezza
– L'
host “falso” prende il controllo del flusso di
comunicazione ed accede ai dati scambiati
– L'
hacker si può così sostituire all'
host che ha particolari
permessi di accesso verso l'
altro host
892
$
.
)
$
0
'
')
>
D
893
'
##
8#
)
#
$$
9'
,
894
A$
J
I
!
..> + >DD;.
; I
E.
K
'
I
>
;
)
=
.
&.
;;D;
895
(
A$
%
$
$
)
!
$
)
A
896
$
12
30
04
5 0 0
6
4
2
7
897
…
"J
A
J
%
>
%
…
%
K
L
A
8
) 5
%
%
5 )
)
)%
%
A
$%%
%
%
5
A%
3
898
"
…
• La maggior parte dei computer sulla rete di
un’azienda si arrestano.
• L'
attività lavorativa viene ritardata con un
grande costo per l’azienda.
• Dopo opportune indagini si scopre che è
stato diffuso un virus sulla rete attraverso un
particolare account.
• Interrogando il proprietario dell'
account, egli
nega di avere distribuito virus, ma…
899
'
'
0
)
9
19
O
)
O
.
)
O
900
• Occorre stabilire un compromesso tra i
diritti degli utenti e quelli dell’azienda
• In particolare tra il diritto alla riservatezza
e la necessità che ha un amministratore di
sistema di raccogliere informazione
sufficiente per diagnosticare i problemi.
901
• La politica e i regolamenti di
un'
organizzazione ed inoltre il quadro
normativo nel cui ambito questi sono definiti
dovrebbero specificare
a quale livello di dettaglio gli amministratori
di sistema possono esaminare le
informazioni personali degli utenti e quali
sono i diritti degli utenti.
902
Alcune delle domande cui bisogna
rispondere sono:
• gli amministratori possono monitorare i
file degli utenti per una qualsiasi
ragione?
• quali sono gli obblighi e le
responsabilità degli amministratori?
• gli amministratori hanno il diritto di
esaminare il traffico di rete?
903
• L. 547 del 23/12/1993
– Modificazioni ed integrazioni alle norme del codice penale e del
codice di procedura penale in tema di criminalità informatica
• L. 675 del 31/12/1996
– Tutela delle persone e di altri soggetti rispetto al trattamento dei
dati personali
• D.Lgs. 171 del 13/05/1998
– Tutela della vita privata nel settore delle telecomunicazioni
• D.P.R. 318 del 28/07/1999
– Regolamento recante norme per l'
individuazione delle misure di
sicurezza minime per il trattamento dei dati personali a norma
dell'
articolo 15, comma 2, della legge 31 dicembre 1996, n. 675
• L. 325 del 03/11/2000
– Disposizioni inerenti all'
adozione delle misure minime di sicurezza
nel trattamento dei dati personali previste dall'
articolo 15 della
legge 31 dicembre 1996, n. 675
904
• D.Lgs. 196 del 30/06/2003
– Codice in materia di trattamento di dati
personali
905
!!
art. 420 c.p. - Attentato a impianti di pubblica utilità
Chiunque commette un fatto diretto a danneggiare o distruggere
impianti di pubblica utilità, è punito, salvo che il fatto costituisca
più grave reato, con la reclusione da uno a quattro anni.
La pena di cui al primo comma si applica anche a chi commette
un fatto diretto a danneggiare o distruggere sistemi informatici o
telematici di pubblica utilità, ovvero dati, informazioni o
programmi in essi contenuti o a essi pertinenti.
Se dal fatto deriva la distruzione o il danneggiamento
dell'
impianto o del sistema, dei dati, delle informazioni o dei
programmi ovvero l'
interruzione anche parziale del
funzionamento dell'
impianto o del sistema, la pena è della
reclusione da tre a otto anni
906
!!
art. 615-ter c.p. - Accesso abusivo a un sistema
informatico o telematico
Chiunque abusivamente si introduce in un sistema
informatico o telematico protetto da misure di
sicurezza ovvero vi si mantiene contro la volontà
espressa o tacita di chi ha il diritto di escluderlo, è
punito con la reclusione fino a tre anni.
907
!!
art. 615-ter c.p. - Accesso abusivo a un sistema
informatico o telematico
La pena è della reclusione da uno a cinque anni:
1) se il fatto è commesso da un pubblico ufficiale o da un
incaricato di un pubblico servizio, con abuso dei poteri o
con violazione dei doveri inerenti alla funzione o al
servizio o da chi esercita anche abusivamente la
professione di investigatore privato, o con abuso della
qualità di operatore del sistema;
2) se il colpevole per commettere il fatto usa violenza sulle
cose o alle persone, ovvero se è palesemente armato;
908
!!
art. 615-ter c.p. - Accesso abusivo a un sistema
informatico o telematico
La pena è della reclusione da uno a cinque anni:
3) se dal fatto deriva la distruzione o il danneggiamento
del sistema o l'
interruzione totale o parziale del suo
funzionamento, ovvero la distruzione o il
danneggiamento dei dati, delle informazioni o dei
programmi in essi contenuti.
Qualora i fatti di cui ai commi primo e secondo
riguardino sistemi informatici o telematici d'
interesse
militare o relativi all'ordine pubblico o alla sicurezza
pubblica o alla sanità o alla protezione civile o
comunque di interesse pubblico, la pena è,
rispettivamente, della reclusione da uno a cinque anni e
da tre a otto anni.
909
!!
art. 615-quater c.p. - Detenzione e diffusione abusiva di
codici di accesso a sistemi informatici o telematici
Chiunque, al fine di procurare a sé o ad altri un profitto o di
arrecare ad altri un danno, abusivamente si procura,
riproduce, diffonde, comunica o consegna codici, parole
chiave o altri mezzi idonei all'
accesso a un sistema
informatico o telematico, protetto da misure di sicurezza, o
comunque fornisce indicazioni o istruzioni idonee al predetto
scopo, è punito con la reclusione sino a un anno e con la
multa sino a lire 10 milioni.
La pena è della reclusione da uno a due anni e della multa da
lire 10 milioni a 20 milioni se ricorre taluna delle circostanze di
cui ai numeri 1) e 2) del quarto comma dell'
art. 617-quater.
910
!!
art. 615-quinquies c.p. - Diffusione di programmi diretti a
danneggiare o interrompere un sistema informatico
Chiunque diffonde, comunica o consegna un programma
informatico da lui stesso o da altri redatto, avente per scopo o
per effetto il danneggiamento di un sistema informatico o
telematico, dei dati o dei programmi un esso contenuti o a esso
pertinenti, ovvero l'
interruzione, totale o parziale, o l'
alterazione
del suo funzionamento, è punito con la reclusione sino a due
anni e con la multa sino a lire 20 milioni.
911
!!
art. 617-quater c.p. - Intercettazione, impedimento o interruzione illecita
di comunicazioni informatiche o telematiche
Chiunque fraudolentemente intercetta comunicazioni relative a un sistema
informatico o telematico o intercorrenti tra più sistemi, ovvero le impedisce o
le interrompe, è punito con la reclusione da sei mesi a quattro anni.
Salvo che il fatto costituisca più grave reato, la stessa pena si applica a
chiunque rivela, mediante qualsiasi mezzo d'
informazione al pubblico, in
tutto o in parte, il contenuto delle comunicazioni di cui al primo comma.
Tuttavia si procede d'
ufficio e la pena è della reclusione da uno a cinque
anni se il fatto è commesso:
1) in danno di un sistema informatico o telematico utilizzato dallo stato o da
altro ente pubblico o da impresa esercente servizi pubblici o di pubblica
necessità;
2) da un pubblico ufficiale o da un incaricato di un pubblico servizio,
con abuso dei poteri e con violazione dei doveri inerenti alla funzione o
al servizio, ovvero con abuso della qualità di operatore del sistema;
3) da chi esercita anche abusivamente la professione di un investigatore
privato.
912
!!
art. 617-quinquies c.p. - Installazione di apparecchiature atte a
intercettare, impedire o interrompere comunicazioni informatiche
o telematiche
Chiunque, fuori dai casi consentiti dalla legge, installa
apparecchiature atte a intercettare, impedire o
interrompere comunicazioni relative a un sistema
informatico o telematico ovvero intercorrenti tra più
sistemi, è punito con la reclusione da uno a quattro
anni.
La pena è della reclusione da uno a cinque anni nei casi
previsti dal quarto comma dell'
art. 617-quater.
913
"
#
!"
!!"
$ $" $$
914
#
!"
$ $"
$$
art. 31 - Obblighi di Sicurezza
1. I dati personali oggetto di trattamento sono
custoditi e controllati, anche in relazione alle
conoscenze acquisite in base al progresso
tecnico, alla natura dei dati e alle specifiche
caratteristiche del trattamento, in modo da ridurre
al minimo, mediante l'
adozione di idonee e
preventive misure di sicurezza, i rischi di
distruzione o perdita, anche accidentale, dei dati
stessi, di accesso non autorizzato o di trattamento
non consentito o non conforme alle finalità della
raccolta.
915
#
!"
$ $"
$$
art. 15 - Danni cagionati per effetto del trattamento di dati
personali
Chiunque cagiona danno ad altri per effetto del trattamento
di dati personali è tenuto al risarcimento ai sensi dell'
articolo
2050 del codice civile.
art. 2050 c.c. - Responsabilità per l'esercizio di attività
pericolose.
Chiunque cagiona danno ad altri nello svolgimento di
un'
attività pericolosa, per sua natura o per la natura dei
mezzi adoperati, è tenuto al risarcimento se non prova di
avere adottato tutte le misure idonee a evitare il danno
916
……
.
&0>A .E1E 00! A&D 1-A&DA
917
#
!"
$ $"
$$
art. 36 - Omessa adozione di misure necessarie alla
sicurezza dei dati
1. Chiunque, essendovi tenuto, omette di adottare le misure
necessarie a garantire la sicurezza dei dati personali, in
violazione delle disposizioni dei regolamenti di cui ai commi 2
e 3 dell'
articolo 15, è punito con l'
arresto sino a due anni o con
l'
ammenda da lire dieci milioni a lire ottanta milioni.
918
Il quadro normativo che si va delineando è dunque il
seguente:
1.
2.
3.
L’amministratore del sistema informativo ha il dovere
di ridurre al minimo i rischi di distruzione o perdita
accidentale dei dati
L’amministratore deve prevenire accessi non
autorizzati al sistema
per far ciò l’amministratore deve adottare misure di
sicurezza adeguate all'
importanza dei dati custoditi e
in linea con le conoscenze acquisite in base al
progresso tecnologico.
919
…
&
&
G
G
'
$
#7#
$
2+
+P6
!
D.A0
11000:
:
: ,1
1
1
1
:
920
%
.,
art. 31 - Sicurezza dei dati
1. I dati personali oggetto di trattamento sono custoditi e controllati, anche
in relazione alle conoscenze acquisite in base al progresso tecnico,
alla natura dei dati e alle specifiche caratteristiche del trattamento, in
modo da ridurre al minimo, mediante l'adozione di idonee e
preventive misure di sicurezza, i rischi di distruzione o perdita,
anche accidentale, dei dati stessi, di accesso non autorizzato o di
trattamento non consentito o non conforme alle finalità della raccolta.
•Ma quali sono le misure minime di sicurezza?
•E se non sono sufficienti per la legge?
921
%
,3
2. Le misure minime di sicurezza da adottare in via
preventiva sono individuate con regolamento
emanato con decreto del Presidente della
Repubblica, ai sensi dell'
articolo 17, comma 1,
lettera a), della legge 23 agosto 1988, n. 400,
entro centottanta giorni dalla data di entrata in
vigore della presente legge, su proposta del
Ministro di grazia e giustizia, sentiti l'
Autorità per
l'
informatica nella pubblica amministrazione e il
Garante
922
# %&
'
' $
!!!
• Capo I: Principi generali
• Capo II: Trattamento dei dati personali effettuato con
strumenti elettronici o comunque automatizzati
– Trattamento dei dati personali effettuato mediante elaboratori
non accessibili da altri elaboratori o terminali
– Trattamento dei dati personali effettuato mediante elaboratori
non accessibili in rete
– Trattamento dei dati personali effettuato per fini esclusivamente
personali
• Capo III: Trattamento dei dati personali con strumenti
diversi da quelli elettronici o comunque automatizzati
923
# %&
'
' $
!!!
Art. 1 - Definizioni
1. Ai fini del presente regolamento si applicano le definizioni elencate
nell’articolo 1 della legge 31 dicembre 1996, n. 675, di seguito
denominata legge. Ai medesimi fini si intendono per:
a) "misure minime": il complesso delle misure tecniche, informatiche,
organizzative, logistiche e procedurali di sicurezza, previste nel presente
regolamento, che configurano il livello minimo di protezione richiesto in
relazione ai rischi previsti dall’art. 15, comma 1, della legge;
b) "strumenti": i mezzi elettronici o comunque automatizzati con cui si
effettua il trattamento;
c) "amministratori di sistema": i soggetti cui è conferito il compito di
sovrintendere alle risorse del sistema operativo di un elaboratore o di un
sistema di base dati e di consentirne l’utilizzazione.
924
# %&
'
' $
!!!
Art. 2 - Individuazione degli incaricati
Salvo quanto previsto dall’articolo 8, se il trattamento dei dati personali è
effettuato per fini diversi da quelli di cui all’articolo 3 della legge mediante
elaboratori non accessibili da altri elaboratori o terminali, devono essere
adottate, anteriormente all’inizio del trattamento, le seguenti misure:
a) prevedere una parola chiave per l’accesso ai dati, fornirla agli incaricati del
trattamento e, ove tecnicamente possibile in relazione alle caratteristiche
dell’elaboratore, consentirne l'
autonoma sostituzione, previa comunicazione ai
soggetti preposti ai sensi della lettera b);
b) individuare per iscritto, quando vi è più di un incaricato del trattamento e
sono in uso più parole chiave, i soggetti preposti alla loro custodia o che hanno
accesso ad informazioni che concernono le medesime.
(Stand alone)
925
# %&
'
' $
!!!
Art. 4 - Codici identificativi e protezione degli elaboratori
1. Nel caso di trattamenti effettuati con gli elaboratori di cui
all’articolo 3, oltre a quanto previsto dall’articolo 2 devono
essere adottate le seguenti misure:
a) a ciascun utente o incaricato del trattamento deve essere
attribuito un codice identificativo personale per l'
utilizzazione
dell’elaboratore; uno stesso codice, fatta eccezione per gli
amministratori di sistema relativamente ai sistemi operativi
che prevedono un unico livello di accesso per tale funzione,
non può, neppure in tempi diversi, essere assegnato a
persone diverse;
926
# %&
'
' $
!!!
Art. 4 - Codici identificativi e protezione degli elaboratori
b) i codici identificativi personali devono essere assegnati e
gestiti in modo che ne sia prevista la disattivazione in caso
di perdita della qualità che consentiva l’accesso
all’elaboratore o di mancato utilizzo dei medesimi per un
periodo superiore ai sei mesi;
c) gli elaboratori devono essere protetti contro il rischio di
intrusione ad opera di programmi di cui all’articolo 615quinquies del codice penale, mediante idonei programmi,
la cui efficacia ed aggiornamento sono verificati con
cadenza almeno semestrale.
2. Le disposizioni di cui al comma 1, lettere a) e b), non si
applicano ai trattamenti dei dati personali di cui è consentita la
diffusione.
927
# %&
'
' $
!!!
Art. 6 - Documento programmatico sulla sicurezza
• 1. Nel caso di trattamento dei dati di cui agli articoli
22 e 24 della legge 675 (dati sensibili) effettuato
mediante gli elaboratori indicati nell’articolo 3,
comma 1, lettera b), deve essere predisposto e
aggiornato, con cadenza annuale, un
documento programmatico sulla sicurezza dei
dati per definire, sulla base dell'
analisi dei rischi,
della distribuzione dei compiti e delle responsabilità
nell’ambito delle strutture preposte al trattamento
dei dati stessi:
928
# %&
'
' $
!!!
Art. 6 - Documento programmatico sulla sicurezza
…
• a) i criteri tecnici e organizzativi per la protezione delle aree e dei
locali interessati dalle misure di sicurezza nonché le procedure
per controllare l’accesso delle persone autorizzate ai locali
medesimi;
b) i criteri e le procedure per assicurare l’integrità dei dati;
c) i criteri e le procedure per la sicurezza delle trasmissioni dei
dati, ivi compresi quelli per le restrizioni di accesso per via
telematica;
d) l'
elaborazione di un piano di formazione per rendere edotti gli
incaricati del trattamento dei rischi individuati e dei modi per
prevenire danni.
2. L’efficacia delle misure di sicurezza adottate ai sensi del comma
1 dev’essere oggetto di controlli periodici, da eseguirsi con
cadenza almeno annuale.
929
6'#
'* *
Art. 1. - Disposizioni inerenti all'
adozione delle misure minime di
sicurezza nel trattamento dei dati personali previste dall'
articolo 15
della legge 31 dicembre 1996, n. 675
1. In sede di prima applicazione della disciplina contenuta nell'
articolo 15 della legge
31 dicembre 1996, n. 675, le misure di sicurezza di cui al decreto del Presidente
della Repubblica 28 luglio 1999, n. 318, possono essere adottate entro il 31
dicembre 2000 dai soggetti che documentino per iscritto le particolari esigenze
tecniche e organizzative che rendono necessario avvalersi di un termine più ampio di
quello previsto dall'
articolo 41, comma 3, della medesima legge n. 675 del 1996.
2. Il documento di cui al comma 1 deve essere redatto entro un mese dalla data di
entrata in vigore della presente legge con atto avente data certa e deve contenere
una esposizione sintetica delle informazioni necessarie, da cui risultino:
a) gli accorgimenti da adottare o già adottati e gli elementi che caratterizzano il
programma di adeguamento, nonché le singole fasi in cui esso è
eventualmente ripartito;
b) le linee-guida previste per dare piena attuazione alle misure minime di
sicurezza, la cui inosservanza è sanzionata ai sensi dell'
articolo 36 della legge 31
dicembre 1996, n. 675, nonché alle più ampie misure di sicurezza previste dal
comma 1 dell'
articolo 15 della medesima legge n. 675 del 1996.
930
•
•
•
•
•
•
•
•
Commercio elettronico
Dati personali e privacy
Diritto d’autore
Disciplina giuridica dell’Internet
Firma digitale
L’informatica nella PA
Telecomunicazioni
Tutela dei minori, disabili, consumatori
931
%
'8
8
III
'8
8
III
'8
8
III
'8
8
III
'8
8
III
'8
8
III
J0
B
M
I
%
8
9!
K
0
A !
;.E
!
.4& QQF +RF+5PQF7
8
(D
932
<
.
4
H
A
D
.
.
3
9
F
'
0
I &D D.A D
H
I ###
0
9
'
"
933
4
• L’elaborazione delle applicazioni, l’esecuzione e
l’archiviazione dei dati avviene sul Server.
• Uso di diverse macchine Client
– Pc obsoleti.
– Computer con processori Alpha
– WBT (Windows Based Terminals): terminali basati sul sistema
operativo Windows CE.
– Palmari.
– Workstation Macintosh o Unix.
• Supporto per molti accessi
– LAN
– Internet
– Collegamento remoto tramite modem.
• Adatto al telelavoro.
934
4
• Sessioni di accesso
simultanee al server.
• Controllo remoto di
sessione (shadowing).
• Supporto per la
messaggistica.
• Amministrazione Remota.
• Sicurezza:
– Crittografia dei dati.
– Restrizioni di sicurezza.
935
'
• Architettura Client – Server basata su sessioni di lavoro.
• Cartella temporanea separata per ogni sessione.
• Due protocolli:
– Microsoft RDP:
• Versione 4: in Windows NT TSE.
• Versione 5: in Windows 2000 Server.
• Versione 5.1 in Windows 2003 Server.
– Citrix ICA:
• Metaframe Xps: senza supporto per Load Balancing.
• Metaframe Xpa: con supporto per Load Balancing.
• Metaframe Xpe: sono presenti i servizi di Resource Management e
Installation Management.
936
#/
#
0
H
;
0
2++ H P7 H
H &DH 8
.
H &DH 8
.
H
###;
(
#/ <
.T
.T
.T
.T
.T
.T
&
&
.T
4 I
&
.T S
.T
D0;8
!
;
.T
.T
.T
!
;U .;U & )
&
&
.T
1 &
.T
.T
.T
&
&
.T
&
.T
.T
.T
.T
.T
&
.T
.T
&
.T S
&
&
.T S
.T S
H
I 0AF)
0
* B-
PQ
27+
5#
8
.
N
H &
C ".
.
0
H
!
8
8
1
S
I F)
)
D
)
#/ ;
%
;
D
H4D
I
937
;
.
D
)
) '
+ D. 0 1
1
;
2 01
5 !
H
D
I
-
4 =E
0
###.
.
0
H
I
H
I
###
###
938
*
.
D. 0 1 D
.
1
;
01
H
4 =E
&
D
'
0
H
I
I
###
###
'
939
–
• Componente di tutte versioni di Windows 2000 Server,
utilizzabile solo nella modalità Application Server.
• Permette ai Servizi Terminal di ottenere e gestire i propri
token CAL per le periferiche che si connettono al server
terminal, possono gestire i client privi di licenza, i client
con licenze temporanee, i client con licenze CAL e
inoltre supportare sia il licensing ordinario per le CAL sia
il licensing per Internet Connector.
• Ne consegue che le attività di gestione delle licenze
assegnate all’amministratore di sistema vengono
estremamente semplificate e al tempo stesso è possibile
definire in modo più preciso il numero di licenze che
l’organizzazione deve acquistare.
940
–
Le licenze supportate sono:
• Licenze di Accesso Client (CAL) per Servizi
Terminal.
• Licenze Terminal Services Internet Connector.
• Licenze predefinite.
• Licenze temporanee.
941
– &
Microsoft
Customer
Microsoft
Certificate Authority &
License
Clearinghouse
Windows 2000 Server +
Terminal Services Licensing
(a.k.a. License Server)
Windows 2000 Server +
Terminal Services
Clients
942
– &
• Il servizio Licenze Servizi terminal è
completamente
distinto
dai
Servizi
terminal.
• Nei sistemi di grandi dimensioni il server
delle licenze viene in genere implementato
in un server separato.
• Il License Server deve trovarsi in una
posizione facilmente individuabile dai
server terminal.
943
– &
Posizioni del Server delle Licenze:
• Controller di dominio
in un dominio di
Windows 2000
• Server paritetico
in un gruppo di lavoro
o in dominio Windows NT 4.0
944
&
• Installabili con Windows 2000
Server oppure in un secondo
momento da Pannello di
Controllo.
• Durante l’installazione è
possibile scegliere la modalità
di utilizzo: strumento di
amministrazione o Application
Server.
• Al termine dell’installazione è
necessario riavviare il sistema.
I tools per i servizi Terminal
saranno disponibili nella
sezione Strumenti di
Amministrazione.
945
• Il servizio viene
configurato utilizzando
Terminal Services
Configurator presente in
Administrative Tools.
• Per ogni connessione si
possono settare le
impostazioni riguardanti
logon, controllo remoto,
permessi, sessioni, client,
sicurezza, prestazioni.
946
•
•
•
Terminal Services Manager
permette di monitorare utenti,
sessioni e processi attivi sul
Server. Automaticamente viene
configurata una connessione
TCP/IP che permette ai client di
aprire una sessione di logon.
Sul lato sinistro si trovano i
domini, i server terminal e le
sessioni di rete.
È possibile visualizzare i processi
attivi in ciascuna sessione, inviare
messaggi agli utenti, prendere il
controllo delle sessioni remote e
visualizzare informazioni di
sessione totali per tutti i server
terminal in domini trust.
947
• Il Terminal Services Client Creator permette di ottenere i dischetti per
l’installazione del Thin client su macchine Win16 (4 floppy), Win32
con processori Alpha o x86 (2 floppy).
• Inoltre, è necessario installare il supporto RDP lato-client disponibile
nella cartella
%SYSTEMROOT%/SYSTEM32/CLIENTS/TSCLIENT/NET.
• Per l’installazione di Client su sistemi diversi sono necessari prodotti
di terze parti.
948
–
0
Un client Terminal Services per Unix/Linux è
rdesktop.
• Installazione semplice
redy@lucilla rdesk $ ls
rdesktop-1.2.0.tar.gz
redy@lucilla rdesk $ tar -xzf rd*.gz
redy@lucilla rdesk $ cd rd*
redy@lucilla rdesktop-1.2.0 $
redy@lucilla rdesktop-1.2.0 $ ./configure
rdesktop build configuration script
X Window System:
includes /usr/X11R6/include
libraries /usr/X11R6/lib
OpenSSL:
includes /usr/include
libraries /usr/lib
configure complete - now run make
redy@lucilla rdesktop-1.2.0 $ make
gcc -DKEYMAP_PATH=\"/usr/local/share/rdesktop/keymaps/\“
-Wall -O2 -I/usr/X11R6/include -DWITH_OPENSSL -o rdesktop.o
redy@lucilla rdesktop-1.2.0 $ su
Password:
root@lucilla rdesktop-1.2.0 # make install
mkdir -p //usr/local/bin
install rdesktop //usr/local/bin
strip //usr/local/bin/rdesktop
chmod 755 //usr/local/bin/rdesktop
mkdir -p //usr/local/share/rdesktop/keymaps/
cp keymaps/?? keymaps/??-?? //usr/local/share/rdesktop/keymaps/
cp keymaps/common //usr/local/share/rdesktop/keymaps/
cp keymaps/modifiers //usr/local/share/rdesktop/keymaps/
chmod 644 //usr/local/share/rdesktop/keymaps//*
mkdir -p //usr/local/man/man1
cp doc/rdesktop.1 //usr/local/man/man1
chmod 644 //usr/local/man/man1/rdesktop.1
root@lucilla rdesktop-1.2.0 # exit
949
–
0
redy@lucilla rdesktop-1.2.0 $ rdesktop
rdesktop: A Remote Desktop Protocol client.
Version 1.2.0. Copyright (C) 1999-2003 Matt Chapman.
See http://www.rdesktop.org/ for more information.
Usage: rdesktop [options] server[:port]
-u: user name
-d: domain
-s: shell
-c: working directory
-p: password (- to prompt)
-n: client hostname
-k: keyboard layout on terminal server (us,sv,gr,etc.)
-g: desktop geometry (WxH)
-f: full-screen mode
-b: force bitmap updates
-e: disable encryption (French TS)
-m: do not send motion events
-C: use private colour map
-K: keep window manager key bindings
-T: window title
-D: hide window manager decorations
redy@lucilla rdesktop-1.2.0 $
redy@lucilla root $ rdesktop -u TServices -p – 157.138.22.10
Password:
950
• Due strumenti di connessione:
– Terminal Services Client:
semplice e rapido modo per
connettersi al Server. Consente
solamente di scegliere il server al
quale connettersi e la dimensione
in pixel della finestra.
– Client Connection Manager:
impostazioni avanzate, wizard per
creare nuove connessioni,
possibilità di esportare le proprietà
di connessione in un file con
estensione cns (dimensione
~1Kb).
951
…
• La sessione Terminal è attiva
all’interno di una finestra sul
desktop.
• Per abilitare una sessione è
necessario completare la fase di
logon.
• Una sessione rimane aperta e
la directory temporanea sul
server non viene cancellata fino
a quando non si effettua il
logout.
• Se si utilizzano i Servizi
Terminal via Internet, la
connessione avviene dal
browser.
952
• Disponibili per RDP 5 e
ICA.
– Taglia – incolla di testo
ed immagini.
– Taglia – incolla di files e
diretories (solo RDP 5).
– Invio messaggi dal server
agli utenti.
953
• In remoto possiamo
utilizzare anche le unità
del Server come lettori
cd-rom e floppy.
• Dal client è possibile
installare applicazioni sul
Server.
• Le impostazioni di
sicurezza possono
limitare queste
operazioni.
954
'
Esistono altri sistemi di gestione
remota, ad esempio:
• VNC
• PC Anywhere
Ma non sono potenti come
Terminal Services in quanto
non supportano sessioni
multiple e richiedono molte più
risorse.
955
7
•
•
•
•
Rapida distribuzione: Terminal Services permettono di distribuire
rapidamente Windows 2000 su macchine senza i requisiti hardware minimi.
Inoltre, è necessaria un’unica installazione di un’applicazione perché essa
possa essere fruibile da tutti i client ed è facilmente e velocemente
aggiornabile.
Amministrazione Remota: gli amministratori di sistema possono
configurare e controllare in remoto il sistema per interventi più veloci e
aggiornamenti più frequenti.
Ridotta manutenzione: i client contengono minime informazioni e non
salvano localmente i dati, perciò la loro manutenzione è quasi nulla. L’unica
macchina da configurare ed aggiornare è il server che può servire numerosi
client.
Riduzione TCO (Total Cost of Ownership): la spesa totale per l’acquisto,
la gestione e la manutenzione di un sistema basato su terminal services è
molto ridotto rispetto ad un sistema tradizionale equivalente in quanto i costi
per i terminali risultano molto bassi e perciò permettono di espandere
facilmente il sistema.
956
•
•
Configurazione applicazioni: soprattutto nei primi tempi dopo l’uscita sul
mercato dei terminal services (con Windows NT TSE), le applicazioni non
erano state progettate per funzionare in questo ambiente, quindi per alcune
c’era la necessità di perdere molto tempo per la configurazione e la messa a
punto ed alcune di esse potrebbero non essere compatibili.
Risorse elevate per il server: per usufruire di tutte le potenzialità messe a
disposizione dai servizi terminal bisognerebbe installare sul server Windows
2000 Server. Questo sistema necessita di molte più risorse rispetto a
Windows NT soprattutto in termini di quantità di ram. Un terminal server
dovrebbe avere a disposizione almeno 512 MB di memoria ram, un valore
arbitrario che varia molto in funzione al numero di utenti
contemporaneamente presenti. Tuttavia è stato verificato con varie prove che
ogni sessione utente necessita di circa 12 MB di memoria ram sul server.
957
• Le prestazioni di un sistema indicano quanto le risorse disponibili
riescono ad adempiere al compito per il quale sono designate
• Caratteristiche:
– latenza: fatta una richiesta quanto impiego ad ottenere la
risposta?
– throughput: quante operazioni nell’unità di tempo sono
soddisfatte?
– utilizzo: quanto riesco a sfruttare una risorsa?
– un utilizzo del 100% e’ un utilizzo ottimale?
– efficienza = throughput / utilizzo
• Obiettivo: minimizzare la latenza e massimizzare gli altri tre
parametri
958
<
• E’ un processo che richiede di osservare le attività del sistema e di
fare delle variazioni sulle diverse componenti (hardware o software)
basandosi sui dati raccolti al fine di eliminare i colli di bottiglia e
quindi ottenere le performance adeguate agli obiettivi che ci si è
preposti.
• E’ quindi un processo che comporta anche:
– pianificare le performance ottimali in relazione a ciò per cui il
sistema è stato preposto;
– scelta dei tool per misurare le prestazioni;
– diagnosticare i problemi in base alle misurazioni fatte;
– impostare parametri del sistema operativo e applicazioni;
– eventualmente cambiare l'
hardware.
959
…
• Monitoraggio e ottimizzazione in pratica, ecco i passi da seguire:
1: misura le prestazioni correnti
2: trova il collo di bottiglia
3: eliminalo
4: misura nuovamente le prestazioni
5: se non hai ottenuto le performance volute torna al passo 1
6: fine
• Quand’è che una risorsa e’ un collo di bottiglia?
Una risorsa è un collo di bottiglia quando la dimensione delle
richieste eccede le risorse disponibili. Ciò e’ dovuto
all'inadeguatezza dell'hardware o del software o all'organizzazione
del sistema stesso. Però può essere difficile da trovare a causa
dell’influenza reciproca delle varie componenti.
960
• Per poter realizzare il passo 1 abbiamo bisogno di strumenti che
stimino le prestazioni. Essi sono forniti dal sistema operativo oppure
possono essere aggiunti successivamente
• Quando si utilizzano questi tool e’ bene ricordarsi che:
– I tool aggiungono carico al sistema
scegliere quello che
minimizza l’uso delle risorse
– Le varie parti del sistema si influenzano reciprocamente
monitorare solo un’area alla volta e cambiare un solo parametro
alla volta
– Ogni tool ha il suo overhead e i suoi difetti
utilizzare più di un
test tool
– Il carico del sistema non e’ costante ma e’ in continuo
cambiamento
monitorare il sistema per un periodo di tempo
elevato
961
• Ottimizzare i demoni
Probabilmente la vostra distribuzione vi ha installato molti
demoni che non userete mai, perciò inutili ma che consumano
risorse comunque essendo sempre attivi.
Regola della minimalità: togliere tutto ciò che non serve
– disinstallare tutti i demoni inutili
– di quelli rimanenti togliere le funzionalità superflue
• Gestire i servizi in avvio
E’ inutile avere tutti i servizi sempre attivi che consumano
risorse.
Lanciare i servizi solo quando ne abbiamo bisogno
disattivare tutti i servizi e solo quando necessari lanciarli
tramite script o utilizzando inetd
Cos’è inetd?
962
•
Ottimizzare i programmi chiave
E’ bene che i programmi che si utilizzano, soprattutto quelli
cpu-intensive o almeno quelli che consumano più risorse,
siano compilati per l’architettura più vicina a quella in uso,
quindi:
– installare gli eseguibili già compilati per quell’architettura
– oppure ottenere i sorgenti e ricompilarli
• Ricompilare il Kernel
Ricade nel caso precedente, ed essendo il kernel il programma
più incisivo sulle prestazioni del sistema, ricompilarlo è quasi
un obbligo
963
• Ottimizzazione dell’ hardDisk
Il comando fondamentale per regolare e ottimizzare il driver del
kernel che comunica con l'HardDisk e'hdparm. Spesso il disco è
settato con parametri molto conservativi.
Se lanciato senza parametri mostra la configurazione attuale.
• Opzioni più utili:
– -i : per ottenere le specifiche del proprio disco.
– -c n: Regola l'
accesso a 32bit sull'
HD (n=0 16bit, n=3 32bit )
– -d : Attiva/disattiva il supporto DMA sull'
HD
– -m n: Setta il numero di accessi simultanei sull'
HD. Dare il valore
letto di MaxMultSect (ricavato con l’opzione -i)
– -u n: Setta una modalita'di accesso (maskering IRQ) piu'rapida
ma non sicura
– -a n: regola il buffer di lettura sequenziale dell'
HD
Esempio:
hdparm -m 32 -u 1 -c 3 -a 4
964
• UPTIME
– E'un modo veloce per sapere qual‘è il carico medio presente nel
sistema
– Il carico medio è il numero medio di processi in coda per utilizzare
la cpu in un intervallo di tempo.
• Esempio:
$uptime [invio]
9:21am up 48 min,
3 users,
load average: 0.86, 0.40, 0.34
965
•
•
"FREE"
Il comando free ci offre una veloce panoramica sia sulla quantità complessiva di memoria
fisica e di swap libera e usata nel sistema, sia sulla memoria condivisa e i buffer usati dal
kernel.
E’ un modo veloce per vedere se il sistema ha mancanza di memoria in un certo istante.
Esempio:
$free [invio]
total
Mem:
255020
-/+ buffers/cache:
Swap:
1188768
used
235448
81288
27972
free
19572
173732
1160796
shared
0
buffers
14664
cached
1394960
966
Se…
l'ammontare di memoria libero e'basso
la quantita'di area di swap utilizzata e'grande
Allora probabilmente il sistema non ha abbastanza memoria
Ecco un esempio di sistema con memoria insufficiente:
total
used
Mem:
30184
29488
-/+ buffers/cache:
14828
Swap:
66456
59172
free
696
15356
7284
shared
buffers
cached
4
3520
11140
967
8
à
Non esiste una regola generale che possa andare sempre bene.
Ciò che si può fare, però, e’ cercare di ipotizzare le applicazioni che
gireranno nel sistema.
Si utilizzano poi i comandi ps o top per sapere quanta memoria
richiedono queste applicazioni.
Poi si stima un numero ragionevole di utenti che saranno collegati
al sistema nei momenti di maggior carico.
Si puo’ a questo punto calcolare la memoria necessaria
ricordandosi di aggiungere anche la memoria che sara’ richiesta dal
sistema per girare.
968
!
Ma stimare la quantità di memoria necessaria non è sufficiente per
ottenere prestazioni ottimali.
E’ necessario inoltre configurare correttamente anche l’area di
swap.
Dimensione dell’area di swap:
Ci sono svariate regole che indicano quanto estesa debba essere
l’area di swap. Di solito si parla di valori compresi tra quattro volte la
dimensione della ram e la meta’ della memoria stessa. Seguite la
regola che preferite ma dopo averla impostata e’ importante
monitorate l’uso della swap e se ci si accorge che viene usata
spesso piu’ della meta’ della sua dimensione allora si dovrebbe
pensare ad aumentarla. I dischi costano poco, risparmiare sull’area
di swap puo’ solo recare problemi.
969
!
Dove crearla?
La soluzione migliore consiste nell’avere un’area di swap dedicata
su dischi multipli.
Non è una soluzione sempre applicabile.
Almeno evitare di:
Metterla su dischi lenti
Metterla su dischi acceduti tramite controller lenti
Metterla su dischi veloci ma che hanno un carico elevato
Avere piu’ aree di swap su un solo disco
970
• "TOP"
Top riporta moltissime informazioni, tra cui le stesse di uptime e
free, e le aggiorna ogni secondo. Tra le informazioni troviamo:
– Il numero totale di processi in esecuzione e relativo stato(sleeping,
running, stopped ecc.)
– La percentuale del tempo di CPU speso in user mode, system
mode, niced task, e inattivita’
– Statistiche sull'
uso della memoria e dell’area di swap
– Da quanto tempo il sistema è attivo, e il carico medio del
sistema
– Informazioni sui processi in esecuzione, tra cui la memoria
utilizzata,
lo stato, il tempo di cpu utilizzato, la dimensione ecc. ecc.
971
$top [invio]
3:07pm up 58 min, 3 users, load average: 0,12, 0,06, 0,10
64 processes: 61 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 4,5% user, 2,1% system, 0,0% nice, 93,2% idle
Mem:
255020K av, 188996K used,
66024K free,
0K shrd,
Swap: 1188768K av,
0K used, 1188768K free
PID
1503
1374
2001
1965
1472
1
2
3
4
5
6
USER
luca
root
luca
luca
luca
root
root
root
root
root
root
PRI
19
19
11
10
10
8
9
9
19
9
9
NI SIZE RSS SHARE STAT %CPU %MEM
0 12752 12M 10956 S
3,3 5,0
0 81396 22M 1852 R
2,3 8,9
0 1060 1060
836 R
0,5 0,4
0 8732 8732 7968 R
0,3 3,4
0 11060 10M 9392 S
0,1 4,3
0
520 520
452 S
0,0 0,2
0
0
0
0 SW
0,0 0,0
0
0
0
0 SW
0,0 0,0
19
0
0
0 SWN
0,0 0,0
0
0
0
0 SW
0,0 0,0
0
0
0
0 SW
0,0 0,0
TIME
0:05
1:46
0:02
0:01
0:11
0:06
0:00
0:00
0:00
0:00
0:00
10040K buff
68400K cached
COMMAND
kdeinit
X
top
kdeinit
kdeinit
init
keventd
kapm-idled
ksoftirqd_CPU0
kswapd
kreclaimd
972
"
• In una situazione ideale il processore dovrebbe spendere l’80% del
tempo di computazione in processi utente, il 15% del tempo in
kernel mode e circa il 5% di inattività.
• Problemi:
– Se la cpu ha un tempo di inattività nullo probabilmente e’ troppo
poco potente per l’uso che ne vogliamo fare.
– Un altro segno che il processore e’ un collo di bottiglia e’ il fatto
di avere una coda elevate di processi in attesa di utilizzare la
cpu (sar -q) per un periodo di tempo elevato.
– Lento tempo di risposta della applicazioni.
– Inoltre se il tempo di cpu in stato kernel e’ molto elevato
potrebbe esserci un problema in un’altra parte del sistema. Per
esempio una eccessiva paginazione
973
&/
• "IOSTAT"
Il comando iostat viene utilizzato per vedere le statistiche sull’
input/output del sistema.
Ha due modi di funzionamento a seconda che venga attivata
l’opzione
“-x” oppure no.
• Senza opzione. I dispositivi vengono mostrati tramite major e
minor number.
$iostat [invio]
Linux 2.4.7-10enterprise (localhost.localdomain)
avg-cpu: %user
%nice
%sys
%idle
8,47
0,01
2,52
89,01
Device:
dev2-0
dev3-0
tps
0,01
4,24
Blk_read/s
0,02
61,54
Blk_wrtn/s
0,00
56,97
Blk_read
84
259568
Blk_wrtn
4
240288
974
&/
• "IOSTAT“, opzione –x. I dispositivi vengono mostrati con il nome
che hanno nella directory /dev.
$iostat -x [invio]
Linux 2.4.7-10enterprise (localhost.localdomain)
avg-cpu:
Device:
hda
hda1
hda5
hda6
hda7
%user
6,95
%nice
0,01
rrqm/s wrqm/s
4,11
4,28
0,00
0,00
0,00
0,00
4,11
4,28
0,00
0,00
%sys
2,05
r/s
1,70
0,00
0,00
1,69
0,00
w/s
1,76
0,00
0,00
1,76
0,00
29/04/2003
%idle
91,00
rsec/s
46,40
0,01
0,01
46,39
0,00
wsec/s avgrq-sz avgqu-sz
48,66
27,45
1,17
0,00
1,30
0,00
0,00
1,30
0,00
48,66
27,53
1,17
0,00
8,00
0,00
await
337,90
81,48
51,85
338,66
250,00
svctm %util
79,93
2,77
81,48
0,00
51,85
0,00
79,95
2,76
250,00 0,00
975
!
#
“NETSTAT”
Questo è un comando diagnostico molto utile ed estremamente
complesso, che permette di visualizzare una grande quantità di
informazioni relative alla rete, come le connessioni di rete, tabelle di
routing, statistiche sulle interfacce…
Per i nostri scopi e’ sufficiente l’opzione –i che riporta per ciascuna
interfaccia di rete le statistiche sui pacchetti trasmessi e ricevuti.
E’ anche utile lanciare il comando senza opzioni. Verranno
visualizzate le informazioni sui socket aperti. Poiché sono presenti
anche i socket interni al sistema che non hanno nulla a che vedere
con la rete si possono utilizzare le opzioni –t e –u per vedere
solamente i socket TCP e UDP rispettivamente.
976
• "SAR" (System Activity Reporter)
– Il comando sar non viene utilizzato solo per la rete, infatti è forse
il comando piu’ completo poiché specificando la relativa opzione
si possono avere informazioni su qualunque componente del
sistema. Per esempio:
-u uso della cpu;
-r uso della memoria e dell'
area di swap
-b INPUT/OUTPUT su disco
-n statistiche sulla rete
– Inoltre uno dei maggiori vantaggi che si ha nell'
utilizzare sar
piuttosto di altri programmi e’ il fatto che esso salva i dati rilevati
in un file binario. Si possono registrare quindi le attività del
sistema e visionarle in un secondo momento.
977
!
#
• Puo’ risultare utile anche il comando sar con l’opzione –n:
Sintassi: sar –n DEV | EDEV | SOCK | FULL:
– Specificando DEV vengono mostrate informazioni sui dispositivi di
rete, come il numero di pacchetti/byte spediti/ricevuti per ogni
interfaccia di rete
– Specificando EDEV vengono mostrate informazioni sugli errori di
trasmissione dei dispositivi di rete. Es. numero di collisioni,
pacchetti persi, pacchetti scartati ecc. ecc.
– Specificando SOCK vengono mostrate informazioni sui socket in
uso.
– Con l’opzione FULL vengono mostrate tutte le informazioni
precedenti.
978
•
"VMSTAT"
E’ un altro comando molto utile che puo’ essere utilizzato per avere
informazioni sui processi, sulla memoria, sulla paginazione, sull’I/O,
i trap e l'attività della CPU.
•
"PS"
ps mostra un'istantanea dei processi correnti. Inoltre fornisce una
descrizione per ogni processo dell'
uso della cpu, della memoria,
nome della funzione del kernel sulla quale il processo e' in sleep, lo
stato del processo e tantissime altre informazioni che possono essere
ottenute con le varie opzioni del comando.
•
Se si vuole avere una visualizzazione grafica delle prestazioni allora si
possono utilizzare i comandi tload, xload e xosview. Tload e la sua
versione grafica a finestra visualizzano un grafico del carico medio
mentre xosview visualizza molte piu’ informazioni tra cui l’uso della
cpu, della memoria, l’area di swap, gli interrupt ecc. ecc.
979
A
!
-222
• Il sistema operativo Windows 2000 è un sistema operativo
“self-tuning”, si adatta quindi automaticamente alle
caratteristiche dell’ambiente su cui è installato.
• Come per tutti i sistemi operativi, rimane comunque
fondamentale la scelta dell’hardware in quanto questa è un
punto critico per il raggiungimento delle massime prestazioni.
• Risulta di cruciale importanza comprendere quali sono gli
ostacoli che possono gravare sul raggiungimento delle
prestazioni ottimali del sistema. A tale proposito si
analizzeranno i colli di bottiglia del sistema.
980
Alcuni consigli utili per l’ installazione del sistema operativo:
•
Nuova installazione: è consigliato installare Windows 2000 in una
nuova partizione formattata, usando l’appropriato file system (FAT,
FAT32 o NTFS). In tal caso il processo di installazione di Windows
2000 ottimizza automaticamente la locazione dei file e non è
necessario eseguire la deframmentazione del disco.
•
Upgrade: il processo di upgrade spesso porta a file spalmati lungo
l’intera partizione, è quindi consigliata la deframmentazione del disco.
In questo modo il numero di operazioni di I/O richieste viene ridotto,
migliorando le prestazioni.
•
Conversione del file system: se si decide di cambiare il file system
dopo l’installazione (per esempio da FAT a NTFS) è raccomandata le
deframmentazione del disco per ottenere prestazioni adeguate.
•
System page file: se la configurazione prevede due o più hard disk, è
raccomandato usare per il system page file un disco diverso da quello
dove è installato il sistema operativo.
981
<
• Attraverso il Monitor di Sistema è possibile monitorare le
prestazioni del nostro computer e/o degli altri computer
presenti nella rete.
• E’ possibile raccogliere e visualizzare dati relativi all’utilizzo
delle risorse hardware e alle attività dei servizi di sistema dei
computer che si stanno amministrando attenendosi alle
seguenti procedure:
– Tipo di dati
– Origine dei dati (computer locale o altri computer in rete)
– Parametri di campionamento (campionamento manuale o
automatico)
982
983
984
985
Attraverso questo strumento è possibile raccogliere in modo
automatico dati relativi alle prestazioni da computer locali o remoti. Le
funzioni di cui dispone Avvisi e registri di prestazioni sono:
•
La possibilità di raccogliere i dati in formato CSV o TSV per importarli
facilmente in fogli di calcolo.
•
È possibile visualizzare i dati dei contatori raccolti sia durante la
raccolta che quando è terminata.
•
È possibile definire i tempi di avvio e di arresto, i nomi dei file, le
dimensioni dei file e altri parametri per la generazione automatica di
registri.
•
È possibile gestire contemporaneamente più sessioni di registrazione
da un'unica finestra della console.
•
È possibile definire un avviso per un contatore, definendo un
messaggio da inviare, un programma da eseguire o un registro da
avviare quando il valore del contatore selezionato supera o scende al
di dei valori impostati.
986
&
987
&
Soglia per
l’allarme
Frequenza di
registrazione
Tempo di
monitoraggio
Impostazione evento
988
&
989
E’ possibile monitorare prestazioni di un server:
•
•
real time con System Monitor;
nel tempo impostando un Performance log.
990
991
Frequenza di
registrazione
Nome e tipo
del file
Impostazione
della durata del
monitoraggio
992
7
<
993
Risorsa
Oggetto\ Contatore
Processore
Processore\ %
Tempo processore
Processore
Processore\
Interrupt/sec
Soglia consigliata
Commenti
85%
Individuare il processo che sta utilizzando una
percentuale elevata del tempo del processore.
Passare a un processore più veloce o installare un
processore aggiuntivo
Dipende dal
processore.
Un notevole incremento del valore di questo
contatore senza un corrispondente aumento
dell'attività del sistema indica un problema di
hardware. Identificare la scheda di rete che causa
gli interrupt.
Server
Server\ Mancanze di
voci di lavoro
3
Se il valore raggiunge questa soglia, si consiglia di
regolare le voci InitWorkItems o MaxWorkItems nel
Registro di sistema nella chiave
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl
Set\Services\LanmanServer.
Server
Code di lavoro del
server\ Lunghezza
coda
4
Se il valore raggiunge questa soglia è possibile
che si verifichi un collo di bottiglia a livello del
processore. Questo è un contatore istantaneo,
quindi si consiglia di osservarne il valore per vari
intervalli
Sistema\ Lunghezza
coda processore
2
Questo è un contatore istantaneo, quindi si
consiglia di osservarne il valore per vari intervalli.
Processori
multipli
994
Componente
Memoria
Aspetto delle
prestazioni da
controllare
Utilizzo
Memoria
Soglia consigliata
Meno di 4 MB
20
Server\ Dim.
massima pool
paginato
Memoria\ Byte disponibili
Memoria\ Byte nella cache
Memoria\ Pagine/sec
Memoria\ Letture pagine/sec
Memoria\ Errori in transizione/sec
Memoria\ Byte del pool di paginazione
Memoria\ Byte del pool di non
paginazione
Anche se non si tratta specificamente di
contatori dell'oggetto Memoria, per
l'analisi della memoria possono essere
utili anche i seguenti oggetti:
Colli di bottiglia o
problemi
Server
Contatori da controllare
File di paginazione\ % in uso (tutte le
istanze)
Cache\ Mappe dati trovate %
Byte del pool di paginazione e
Server\Byte del pool non di paginazione
Quantità di RAM
fisica
Questo valore è un indicatore della
dimensione massima del file di
paginazione e della quantità di memoria
fisica
995
<
%
#
• Creare più paging files
• Determinare la dimensione corretta dei paging files
• Assicurarsi che la configurazione della memoria sia corretta
• Portare la quantità di RAM al di sopra del minimo richiesto
996
$
'
• N.B. Quando si testano le performance di un disco assicurarsi che il log
avvenga in un altro disco o computer per non interferire con il disco che
si sta testando.
• I dati dei contatori dei dischi logici non vengono memorizzati dal
sistema operativo.
• Se si vuole ottenere i dati relativi alle unità logiche o ai volumi di
archiviazione sarà necessario digitare dal prompt di comando diskperf –
yv.
• Per i dati relativi ai dischi fisici digitare diskperf –yd.
997
$
'
+ <
• I contatori necessari per monitorare le attività del disco
sono:
–
–
–
–
–
–
–
–
Disco fisico\ Letture disco/sec e Scritture disco/sec
Disco fisico\ Media secondi/trasf
Disco fisico\ Media byte/trasf
Disco fisico\ Byte da disco/sec.
Disco fisico\ Byte a disco/sec.
Disco fisico\ Lunghezza corrente coda del disco
Disco fisico\ %Tempo disco
Disco logico\ % Spazio disponibile
998
$
'
– <
• Per equilibrare i carichi di lavoro sui server di rete è
necessario analizzare i dati presenti nel contatore Disco
fisico\ % Tempo disco, che indica la percentuale del
tempo in cui il driver è attivo. Se tale valore supera il
90% controllare il contatore Disco fisico\ Lunghezza
corrente coda del disco per verificare il numero di
richieste in attesa di accesso al disco.
• Se i valori di questi due contatori sono particolarmente
elevati si consiglia di cambiare unità o spostare alcuni
files in un altro disco o in un altro server.
999
$
Risorsa
'
Oggetto\ Contatore
– <
Soglia
consigliata
Commenti
Disco
Disco fisico\ %Tempo
disco
90%
Disco
Disco fisico\ Letture
disco/sec, Disco
fisico\ Scritture
disco/sec
Dipende dalle
specifiche del
produttore
Controllare la velocità di trasferimento del disco
indicata per accertarsi che non superi i valori indicati
nelle specifiche. I dischi Ultra Wide SCSI generalmente
possono gestire 50 operazioni di I/O al secondo.
Disco
Disco fisico\
Lunghezza corrente
coda del disco
Numero di
alberini più 2
Questo è un contatore istantaneo, quindi si consiglia di
osservarne il valore per vari intervalli. Per un tempo
medio globale, utilizzare Disco fisico\ Lunghezza media
coda del disco.
1000
$
'
%
#
Consigli per la rimozione dei colli di bottiglia:
• Passare ad un disco più veloce o aggiungere altri dischi.
• Sui server utilizzare Gestione disco per creare volumi con striping su più
dischi fisici. In questo modo si aumenterà la velocità effettiva in quanto i
comandi di I/O potranno essere eseguiti contemporaneamente.
• Distribuire i programmi tra i server. È possibile utilizzare File system
distribuito (Dfs, Distributed File System) per equilibrare il carico di
lavoro.
• Isolare le operazioni che utilizzano pesantemente l'
I/O dei dischi su
dischi fisici o controller del disco separati.
• Utilizzare Utilità di deframmentazione dischi per ottimizzare lo spazio su
disco.
1001
%
• Ogni server in uso oggigiorno è connesso ad una rete, come questa
venga utilizzata dipende dai tasks che il server deve effettuare.
TCP/IP è diventato lo standard de facto per il networking e quindi ci
concentreremo su di esso e sui relativi servizi.
• In un ambiente server l’obiettivo è quello di spedire sulla rete più
dati possibili con tempi di risposta accettabili, consumando il meno
possibile delle risorse di sistema: CPU, memoria, ecc.
• Per questo motivo la metrica più usata per misurare le prestazioni
della rete è il throughput, solitamente misurato in megabit per
secondo (Mbps) o gigabit per secondo (Gbps).
• Per ottenere buone prestazioni non basta avere un buon stack
TCP/IP: la CPU, le schede di rete e i drivers hanno un grosso
impatto sul throughput.
1002
'
!
• CPU: è necessario assicurarsi che ci siano sufficienti risorse di CPU
per la gestione della rete che si sta testando (maggiore sarà la
velocità della rete, maggiori dovranno essere le performance della
CPU); inoltre processori con un maggiore quantitativo di L2 cache
offriranno prestazioni più elevate.
• Memoria: anche se la memoria non ha un impatto così elevato sulle
prestazioni è importante come questa è “disposta”: per ottenere i
migliori risultati tutti i banchi di memoria devono essere occupati
(ottimizza l’interleaving della memoria).
• PCI bus : per gestire adeguatamente reti ad alta velocità può essere
necessario avere più bus PCI. In tal caso è da ricordare che non
sempre distribuire le schede di rete su bus diversi è la soluzione
migliore, si consiglia di testare le varie possibilità per trovare la più
efficiente.
1003
'
!
• Schede di rete : per ottenere le massime
prestazioni della rete con Windows 2000 si
raccomanda di usare schede di rete in
grado di sgravare il sistema da alcune
operazioni TCP.
• Avendo a disposizione non una ma più
schede di rete, se ci sono sufficienti
risorse di CPU, possono migliorare
significativamente le prestazioni.
1004
• MTU Window size : con MTU di dimensione
maggiore, tenendo presente i vincoli imposti dal
tipo di rete e di adattatore usati, è possibile
spedire dati in un numero minore di pacchetti in
modo che il sistema debba eseguire meno lavoro
per l’invio e la ricezione. In Windows 2000 l’MTU
size può essere settata alla dimensione standard
del frame di 1.5 KB (Ethernet) ma si può arrivare
a dimensioni di 9 KB.
1005
%
• TCP Windows size : questo parametro determina la
dimensione massima della finestra di ricezione di TCP.
Generalmente una finestra maggiore aumenta le
prestazioni su reti con alto delay e larga banda; tuttavia
se la dimensione è troppo grande in una rete non
affidabile questo provocherà un eccessivo numero di
ritrasmissioni. Per una migliore efficienza la dimensione
della finestra deve essere un multiplo dell’MSS
(Maximum Segment Size).
• Schede di rete : ogni scheda di rete ha diverse opzioni
da settare, queste possono influenzare il throughput
della rete, si consiglia quindi di fare riferimento alle
caratteristiche della propria scheda.
1006
<
I contatori interessati al controllo della rete sono:
• Livello collegamento dati. Comprende la scheda di rete. Utilizzare i
contatori dell'
oggetto Interfaccia di rete:
– Byte totali/sec
– Byte inviati/sec
– Byte ricevuti/sec
• Livello rete. Utilizzare i contatori dell'
oggetto IP:
– Datagrammi inoltrati/sec
– Datagrammi ricevuti/sec
– Datagrammi/sec
– Datagrammi inviati/sec.
1007
<
•
Livello trasporto. Varia a seconda del protocollo di rete in uso. Per il
protocollo TCP/IP, utilizzare i contatori dell'
oggetto TCP:
– Segmenti ricevuti/sec
– Segmenti ritrasmessi/sec
– Segmenti/sec
– Segmenti inviati/sec.
•
Livello programma/presentazione. Tale livello presenta due categorie di
contatori:
– Server
– Redirector
•
Utilizzare i contatori dell'
oggetto Server se si sta controllando un server
oppure i contatori dell'
oggetto Redirector se si sta controllando il computer
client di un utente.
1008
<
•
– Redirector\ Comandi correnti
– Redirector\ Errori di rete/sec
– Redirector\ Letture negate/sec
– Redirector\ Scritture negate/sec
– Redirector\ Sessioni server bloccate
– Server\ Fine sessioni per errore
– Server\ Mancanze di voci di lavoro
– Server\ Dim. massima pool paginato
– Server\ Errori in pool non paginato
Se il valore del contatore Mancanze di voci di lavoro aumenta, si consiglia
di modificare i valori del Registro di sistema InitWorkItems o MaxWorkItems
in
MN+OP6
G 6
P4 M >+Q<O<?+4Q
< Q< )
Q6 % < )
1009
<
• Valori anomali dei contatori di rete indicano la
presenza di alcuni problemi nella memoria, nel
processore o nei dischi di un server. A tale
proposito si consiglia di abbinare il controllo dei
contatori di rete con i contatori del processore (
Processore\ %Tempo del processore), del disco
( Disco\ %Tempo disco) e memoria ( Memoria\
Pagine/sec).
1010
<
Risorsa
Rete
Oggetto\ Contatore
Segmenti di rete\
Perc. utilizzazione
rete
Soglia
consigliata
Commenti
Dipende dal
tipo di rete
È necessario determinare la soglia in base al tipo di
rete. Per le reti Ethernet la soglia consigliata è ad
esempio il 30%.
Se la somma di Byte totali/sec per tutti i server è
approssimativamente uguale alla velocità massima
di trasferimento della rete, potrebbe essere
necessario segmentare la rete.
Rete
Server\ Byte
totali/sec
Rete
Segmenti di
rete\frames di
broadcast ricevuti/sec
Dipende
dalla rete
Dato che ogni computer processa ogni broadcast,
alti livelli di broadcast comportano un
abbassamento delle performance.
Rete
Segmenti di
rete\frames totali
ricevuti/sec
Dipende
dalla rete
Potrebbero esserci problemi per i bridge e i router
1011
#
• Se la temperatura della CPU rientra nella normalità (inferiore
ai 60°), per forzare un po'le prestazioni del processore, si può
inserire nel registro di Windows la chiave
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Service
s\VxD\BIOS
dentro la quale mettere la DWORD "CPUPriority" (senza le
virgolette) e assegnarle il valore 00000001
1012
#
•
Inoltre per fare in modo che Windows riconosca il giusto quantitativo di memoria cache L2 (di
secondo livello) integrata all'interno della vostra CPU, bisognerà accedere alle chiavi
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryM
anagement
e
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\MemoryMa
nagement
impostando per entrambe la DWORD "SecondLevelDataCache" con un valore pari a quanta
cache L2 ha la vostra CPU
1013