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
Documenti analoghi
Diapositiva 1 - “E. De Giorgi” – Università del Salento
Guasti: permette il mascheramento dei guasti in modo che gli utenti possano completare le
operazioni richieste anche se occorrono guasti hw e/o sw
Mobilità: permette di spostare risorse senza influ...