Sistema operativo unix

52

Transcript of Sistema operativo unix

Page 1: Sistema operativo unix
Page 2: Sistema operativo unix

Il primo sistema «Unix» è stato messo a punto da Ken Thompson nei laboratori Bell AT&T a Murray nel New Jersey negli USA a partire dal 1965.

Lo scopo di Ken Thompson era di mettere a punto un sistema operativo interattivo semplice, detto "Multics" (MultiplexedInformation and Computing System) per far girare un gioco che aveva creato (space travel, una simulazione del sistema solare).

Page 3: Sistema operativo unix

Intorno a Multics si formerà un consorzio composto da MIT (Massassuchetts Institue of Technology), da GeneralElectric Co. e da Bell Lab se forma ainsi autour de Multics.

Nell'aprile del 1969 i laboratori AT&T decidono di usare il sistema GECOS (General Electric ComprehensiveOperating System ) al posto di Multics.

A questo punto Ken Thompson e Dennis Ritchie che si erano uniti alla squadra ebbero bisogno di far funzionare il gioco space travel su un terminale più piccolo (un DEC PDP-7, Programmed Data Processor che aveva unicamente 4K di memoria per far funzionare i programmi degli utenti), ragione per cui riscrissero il sistema per creare una versione ridotta di Multics detta UNICS (UNiplexed Information and Computing Service), rapidamente abbreviata in UNIX.

Page 4: Sistema operativo unix

Il primo gennaio 1970 è considerata come data di nascita del sistema Unix, ciò spiega perché tutti gli orologi di sistema dei sistemi operativi Unix cominciano partendo da questa data.

Page 5: Sistema operativo unix

Parallelamente a queste attività, D.Ritchie parteciperà ampiamente alla definizione del linguaggio C (viene considerato come uno dei suoi fondatori insieme a B.W.Kernighan), così tutto il sistema fu interamente riscritto in linguaggio C nel 1973 e battezzato Unix Time-Sharing System (TSS).

Quando il sistema passò alla versione 7 nel 1979, l'evoluzione sarà accompagnata da modifiche importanti come :

l'eliminazione dell'impedimento legato alla dimensione dei file;

una portabilità migliore del sistema (funzionamento su numerose piattaforme hardware);

l'aggiunta di numerose utilities.

Page 6: Sistema operativo unix

Nel 1973 si iniziarono a distribuire i codici sorgente di UNIX nelle università per fini educativi.

Dal 1977 i ricercatori dell'Università della California risvilupparono una versione di Unix partendo dai codici sorgente forniti da AT&T per far funzionare il sistema sulle proprie piattaforme VAX e lo battezzarono BSD per Berkeley Software Developpement.

Da qui in poi verranno sviluppate moltiplicinuove versioni di Unix.

Page 7: Sistema operativo unix

Il progetto GNU (GNU is Not Unix) nacque nel 1984 con l’obiettivo di sviluppare un sistema operativo Unix-like che fosse software libero (free software). Infatti UNIX è OPEN SOURCE.

Page 8: Sistema operativo unix

Il concetto di software libero sta dunque alla base di questo progetto e “si riferisce alla libertà dell’utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software”, secondo QUATTRO tipi di LIBERTA’ riportati nel manifesto di GNU ufficiale:

Libertà(0) di eseguire il programma, per qualsiasi scopo; Libertà(1)di studiare come funziona il programma, e

adattarlo alle proprie necessità; Libertà(2)di ridistribuire copie in modo da aiutare il

prossimo; Libertà(3) di migliorare il programma, e distribuirne

pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.

Quindi, un’applicazione software, può essere ritenuta libera se aderisce contemporaneamente ai quattro punti di libertà.

Page 9: Sistema operativo unix

La Licenza di distribuzione attraverso la quale viene distribuito il software libero prende il nome di GNU GPL.

Esistono due categorie fondamentali che identificano il software libero in GNU GPL:

1. Software libero CON PERMESSO D’AUTORE;

2. Software libero SENZA PERMESSO D’AUTORE.

Page 10: Sistema operativo unix

Il software con permesso d’autore è software libero le cui condizioni di distribuzione non permettono ai ridistributori di porre alcuna restrizione addizionale all’atto di ridistribuire o modificare il software.

Questo significa che ogni copia del software, anche se modificata, deve essere software libero.

Un software libero con permesso d’autore può quindi essere utilizzato da chiunque, per qualsiasi scopo e deve essere corredato di codice sorgente completo.

Queste precondizioni, unite alla possibilità di ridistribuzione del programma stesso, permettono un ampio grado di libertà e modifica del software.

Chiunque ha la possibilità di modificare, migliorando, il programma e distribuirne pubblicamente i miglioramenti

Page 11: Sistema operativo unix

L’autore di software libero senza permesso d’autore concede il permesso di ridistribuire e modificare il programma, e anche di aggiungervi ulteriori restrizioni.

Se un programma è software libero ma non ha permesso d’autore, è possibile che alcune copie, con o senza modifiche, non siano libere.

Page 12: Sistema operativo unix

UNIX è un sistema a strati (OGNI STRATO E’BASATO SUGLI STRATI INFERIORI e OFFRESERVIZI AGLI STRATI SUPERIORI).

Il sistema operativo(kernel) comunicadirettamente con l’hardware e fornisce servizi dilivello basso alla shell che viene usata dall’utente.

Molti programmi utente corretti sonoindipendenti dall'hardware sottostante, e ciò lirende facilmente trasportabili su nuovi sistemi.

Page 13: Sistema operativo unix

FILE SYSTEM

INTEFARCCIA

KERNEL

(Hardware)

(System call)

Page 14: Sistema operativo unix

Il kernel ha il compito di mantenere ogni processo ed ogni utente separato e regolare l’accesso alle risorse del sistema senza conflitti.

Quindi la sua funzione principale è la gestione della memoria, il controllo dell’accesso al computer, la gestione di errori ed interrupt..

Page 15: Sistema operativo unix

I programmi utente interagiscono con il kerneltramite “system call”(chiamate di sistema) standard. Queste system call chiedono dei servizi, serviziche saranno forniti dal kernel.

Così i servizi possono: 1. aprire, chiudere, leggere, scrivere un file, creare

un link o eseguire un file;2. creare o aggiornare degli account (informazioni

relative ad un utente come nome, password, ecc.);3. cambiare il proprietario di un file o di una

directory; 4. spostarsi in una nuova directory; 5. creare, sospendere o terminare un processo.

Page 16: Sistema operativo unix

La SHELL è un’interprete di comandi ed al tempo stesso può diventare un potente linguaggio di programmazione.

I comandi che richiama la shell (strumenti) possono essere utilizzati separatamente oppure combinati tra di loro nello svolgimento di operazioni anche complesse.

Page 17: Sistema operativo unix

UNIX è un sistema operativo multi-user(multi-utente) e multi-tasking (multi-processo).

Si possono avere molti utenti «loggati» simultaneamente nel sistema (multi-user), ognuno dei quali esegue alcuni programmi (multi-tasking).

È compito del kernel mantenere ogni processo e ogni utente separato e regolare l'accesso all'hardware di sistema, inclusa la cpu, la memoria, il disco e altri dispositivi di I/O.

Page 18: Sistema operativo unix

Su un sistema UNIX lavoranocontemporaneamente più processi (multitasking), che condividono la CPU, utilizzandola a turno per brevi periodi (timesharing).

Lo scheduling della CPU, ovvero l'attività che organizza e garantisce l'accesso alla CPU ed alle risorse del sistema, è uno dei compiti più importanti del sistema operativo ed è fondamentale per un efficiente funzionamento del computer.

Page 19: Sistema operativo unix

Un sistema UNIX, inoltre, essendo realizzato in C, garantisce un ALTO GRADO DIPORTABILITA' ed è quindi disponibile su un gran numero di piattaforme hardware, anche molto diverse l'una dall'altra.

Proprio per questo stretto legame sussistente tra il sistema operativo UNIX e il linguaggio di programmazione C è possibile trovare un ambiente di sviluppo per programmi scritti in C in ogni sistema UNIX-like.

Page 20: Sistema operativo unix

Inoltre in UNIX, i dispositivi fisici del sistema come il monitor, la tastiera, la stampante…vengono trattati come comuni file: si può infatti leggere o scrivere su di essi come se fossero un qualsiasi altro file.

Page 21: Sistema operativo unix

Su un sistema Unix i FILE sono suddivisi in DIRECTORY (cartelle).

Le directory sono organizzate gerarchicamente in una struttura ad albero che prende il nome di filesystem.

La directory radice è indicata con il simbolo / e prende il nome di root directory (da non confondere con l'utente root, amministratore del sistema).

Ad ogni utente viene assegnata una directory personale (HOME DIRECTORY).

A differenza dei sistemi Windows, UNIX non utilizza il concetto di unità (C:\,D:\ …) per stabilire la propria radice. La directory radice è assoluta in un sistema UNIX e comprende di dischi o dispositivi diversi.

Page 22: Sistema operativo unix

Un file o una directory vengono specificate tramite il loro “path-name” ( percorso del nome del file): i pathname possono essere assoluti o relativi alla posizione corrente.

Un percorso assoluto per un qualsiasi file inizia con una directory root “/”.

Page 23: Sistema operativo unix
Page 24: Sistema operativo unix

In Unix ogni file system viene gestito in modo separato per mezzo di un super-block e di una serie di i-node (nodi indice).Ad ogni file è associato un i-node (Un inode viene letto dal kernel e specifica i permessi del file, il proprietario, la data di creazione e di ultimo accesso e naturalmente la posizione fisica dei blocchi di dati sul disco).

Gli i-node vengono identificati tramite un numero chiamato i-number con il quale è possibile identificare univocamente un file all’interno del file system. Allo stesso i-number possono poi essere associati diversi nomi di file, attraverso il meccanismo di link: in questo modo più pathname corrispondono al contenuto di un solo file registrato su disco.

Page 25: Sistema operativo unix

In Unix tutto si può definire un file.

I tipi di file sono: 1. file ORDINARI: sono un insieme di byte e

possono essere documenti, archivi di dati, codice sorgente di programmi, file binari eseguibili e programmi;

2. DIRECTORY: che servono a raggruppare in modo logico i file.Una directory è un file contenente una tabella che elenca i file in essa contenuti. Ciascun file in lista ha i suoi numeri di inode;

1. file SPECIALI: per la rappresentazione delle periferiche quali hardisk , floppy, stampanti, dispositivi multimediali.

Page 26: Sistema operativo unix

Una volta che l'utente si è collegato a un sistema Unix, gli viene chiesto di inserire un login username (nome utente) e una password (codice segreto).

Il login username è il nome univoco dell'utente sul sistema. La password è un codice modificabile conosciuto solo dall'utente.

Unix è un sistema case sensitive (fa distinzione tra caratteri minuscoli e maiuscoli). Quindi sia il login username che la password devono essere inseriti esattamente come sono stati creati.

Page 27: Sistema operativo unix

Quando viene assegnato il proprio account, si riceve una password iniziale. Questa password è importate sia per la sicurezza del sistema sia per una sicurezza personale, perciò la password per il proprio account può essere cambiata a propria scelta.

Il comando per cambiare una password è passwd(1). Verrà chiesto di inserire sia la propria vecchia password, sia la nuova password desiderata, quest'ultima due volte.

Alcuni amministratori di sistema hanno programmi che verificano l'accuratezza di una password (che deve essere sufficientemente criptica per assicurare una certa sicurezza al sistema). Un cambiamento di password può essere rifiutato da questi programmi.

Page 28: Sistema operativo unix

Ctrl+D - indica la fine di un flusso di dati, può fa uscire dal sistema un utente.

Ctrl+C - interruzione.

logout(1) - rilascia il sistema.

exit(1) - rilascia la shell.

Page 29: Sistema operativo unix

L’accesso alle periferiche è gestito tramite file speciali (special device file), che sono i nomi simbolici utilizzati nelle operazioni di I/O sulle periferiche (device) del sistema di elaborazione.

I file speciali, risiedono nella directory, hanno nomi prefissati per le periferiche standard, e possono essere:

A BLOCCHI (caratterizzati dalla lettera b iniziale nella lista)

A CARATTERI (indicati con la lettera c iniziale nella lista).

Page 30: Sistema operativo unix

In quelle a BLOCCHI, le operazioni di I/O utilizzano i buffer del sistema per i trasferimenti di dati tra le unità del sistema;

In quelle a CARATTERI,non vengono usati buffer di I/O.Tipici file speciali a caratteri sono i file associati alle stampanti e ai terminali, mentre per i dischi sono disponibili entrambi i tipi di file speciali.

Gli altri tipi di file speciali riguardano la gestione di lettori e masterizzatori di CD, memorie stick, unità a nastro (streamer o cartridge), schede di rete e modem.

Page 31: Sistema operativo unix

La gestione dello spool sulla stampante è affidata al sottosistema lp , che crea e gestisce le code delle richieste di output sulla stampante.

Lo smaltimento delle stampe in coda (coda di spool) viene realizzata dal programma di schedulazione IPSCHED (scheduler dello spool), che è uno dei processi attivati dal processo init in fase di bootstrap e che resta attivo fino allo spegnimento del sistema.

Page 32: Sistema operativo unix

I file e le directory sono protetti da operazioni non autorizzate di altri utenti fissando gli attributi di protezione, che possono riguardare la lettura, la scrittura e l’esecuzione dei file. I valori dei permessi possono essere visualizzati con il comando ls-l.

Page 33: Sistema operativo unix

I permessi del file system di sistemi Unix sono definiti e influenzano tre categorie di utenti.

1. L'utente che è il proprietario del file (u).

2. Gli altri utenti del gruppo a cui appartiene il file (g).

3. Tutti gli altriutenti (o) a cui ci si riferisce anche con i termini "mondo" e "tutti".

Page 34: Sistema operativo unix

Per un FILE, a ciascun permesso corrispondono le seguenti azioni.

• Il permesso di lettura (r) permette al proprietario di esaminare il contenuto del file.

• Il permesso di scrittura (w) permette al proprietario di modificare il file.

• Il permesso di esecuzione (x) permette al proprietario di eseguire il file come comando.

Page 35: Sistema operativo unix

Per una directory, a ciascun permesso corrispondono le seguenti azioni.

• Il permesso di lettura (r) permette al proprietario di elencare il contenuto della directory.

• Il permesso di scrittura (w) permette al proprietario di aggiungere o rimuovere file dalla directory.

• Il permesso di esecuzione (x) permette al proprietario di accedere ai file nella directory. In questo caso il permesso di esecuzione su una directory non solo significa poter leggere i file in quella directory ma anche poterne vedere gli attributi, come la dimensione e la data di modifica.

Page 36: Sistema operativo unix

I comandi piu importanti per gestire i permessi sui file sono CHMOD e UMASK

Page 37: Sistema operativo unix

Il comando CHMOD modifica gli attributi di un file o di una directory per i permessi in lettura, scrittura ed esecuzione (rwx).

Chmod ha una duplice sintassi:

1) SINTASSI SIMBOLICA;

2)SINTASSI OTTALE.

Page 38: Sistema operativo unix

Consente di assegnare diversi permessi al proprietario, al gruppo ed agli altri utenti.

La sintassi è la seguente: chmod a=rwx nomefile

A sinistra del simbolo uguale (=) abbiamo l'assegnatario del permessi, a destra i permessi assegnati.

L'assegnatario viene identificato attraverso una lettera: a (tutti); u (utente proprietario) ; g (gruppo) ; o (altri utenti).

I permessi, invece, sono identificati dalle tre lettere r, w e x che abbiamo già visto in precedenza.

Page 39: Sistema operativo unix

Con questa sintassi i permessi vengono assegnati a tutti i livelli simultaneamente. Al posto delle lettere rwx si utilizzano 3 numeri.

In questa sintassi i tre numeri definiscono i permessi dei tre livelli: il primo numero riguarda l'utente proprietario, il secondo il gruppo, il terzo gli altri utenti.

Di seguito una tabella dei valori numerici e del loro significato: 7 corrisponde a rwx ; 6 corrisponde a rw; 5 corrisponde a rx; 4 corrisponde a r; 3 corrisponde a wx; 2 corrisponde a w; 1 corrisponde a x; 0 negato ogni accesso.

Page 40: Sistema operativo unix

Stabilisce o modifica la maschera predefinita dei permessi per i file.

Quando si crea un nuovo file, esso appartiene all’utente proprietario e al gruppo dell’utente stesso. Esso inoltre acquista i permessi in base a una maschera predefinita (umask).

Per i file, di solito, la maschera predefinita è 666 che corrisponde ai permessi: rw-rw-rw- ;Per le directory, è 777 che corrisponde ai permessi: rwxrwxrwx.

Umask (user mask) è un comando e una funzione in ambienti POSIX che imposta la modalità della maschera di creazione del file del processo in corso che limita le modalità di autorizzazione per i file e le directory create dal processo. Un processo può cambiare la modalità di creazione del file con la maschera umask e il nuovo valore viene ereditato dai processi figli.

Page 41: Sistema operativo unix

La shell è il programma che interpreta i comandi inviati al sistema, fornendo l'interfaccia fra l'utente ed il sistema operativo

Page 42: Sistema operativo unix

Gli SHELL SCRIPT, cioè testi contenenti comandi della shell che diventano a loro volta comandi eseguibili, vengono scritti con diverse modalità.

In particolare si fa riferimento alla programmazione nella shell standard, la Bash shell.Bash sta a indicare che questa shell deriva direttamente, con qualche variante, dalla shell di Bourne che è sempre stata, fin dalle prime versioni di Unix, la shell standard del sistema operativo.

La Bash shell è un interprete di linguaggio di comandi rappresentato con il nome bash, che si trova nella directory /bin. Il suo pathname è quindi /bin/bash

Page 43: Sistema operativo unix

Le variabili sono usate dalla shell per memorizzare e modificare stringhe di caratteri o numeri.

Una variabile della shell inizia con una lettera e può contenere lettere, cifre e carattere _ (underscore).

Le variabili possono essere quelle definite dall’utente oppure le variabili predefinite (o di sistema).

Page 44: Sistema operativo unix

L'evoluzione grafica delle shell a caratteri è costituita dalle GUI (Graphical User Interface.

Le GUI consentono anche ad utenti decisamente inesperti di utilizzare il computer.

La comunicazione fra l'utente ed il sistema operativo avviene tramite un sistema di finestre, icone e menù che consente di effettuare operazioni complesse con un semplice click del mouse.

Le GUI inoltre, presentano la possibilità di sfruttare in maniera immediata le potenzialità del multitasking.

Page 45: Sistema operativo unix
Page 46: Sistema operativo unix

Quando alcuni file contengono informazioni riservate e’ possibile utilizzare algoritmi di crittografazione che alterano il contenuto dei file in modo da renderli non comprensibili.In tal modo un eventuale accesso non autorizzato al sistema non consente comunque la lettura dei dati. L’utilizzo della crittografia dei dati e’ di particolare

importanza per quei file che debbono essere trasferiti su canali di comunicazione non sicuri; se i dati sono crittografati, ad un utente che "ascolta" i messaggi in rete non sara’ possibile accedere ai dati.

Unix fornisce alcuni semplici comandi per effettuare la crittografazione: crypt e decrypt.

Page 47: Sistema operativo unix

Unix utilizza lo spazio cloud.Il cloud computing è un nuovo modo di erogare servizi alle aziende, che permette di archiviare, memorizzare ed elaborare informazioni, sfruttando risorse software ed hardware distribuite geograficamente o centralizzate in un un'unica struttura, e virtualizzate in remoto secondo l'architettura client-server. Le infrastrutture di cloud computing sono grandi data center che consentono all'utilizzatore di poter disporre delle risorse (storage, applicativi, programmi, servizi) di cui necessita, con la formula del pagamento a consumo; Si dà vita così ad un nuovo modello aziendale che permette alle aziende di ridurre considerevolmente il proprio potere informatico interno per acquisirlo, esternamente, in base alle esigenze del momento.

Quindi, da una parte il fornitore che offre servizi di hardware-software fruibili, in qualsiasi momento, da ogni luogo e con qualsiasi dispositivo; dall'altra il cliente che può, on demand e pagamento secondo utilizzo, accedere, in remoto, ai servizi senza l'assillo dell'installazione, aggiornamento e backup o della manutenzione dell'infrastruttura.

Page 48: Sistema operativo unix

Nel caso di computer collegati in rete locale (LAN) o geografica(WAN) la possibilità di elaborazione/archiviazione/recupero può essere estesa ad altri computer e dispositivi remoti dislocati sulla rete stessa.

Sfruttando la tecnologia del cloud computing gli utenti collegati ad un cloud provider possono svolgere tutte queste mansioni,anche tramite un semplice internet browser.

Possono, ad esempio,utilizzare software remoti non direttamente installati sul proprio computer e salvare dati su memorie di massa on-line predisposte dal provider stesso (sfruttando sia reti via cavo che senza fili).

Page 49: Sistema operativo unix

Le utenze Unix corrispondono alle autorizzazioni presenti sul sistema. Ogni utente viene assegnato ad uno o piu’ gruppi, in tal modo e’ possibile la condivisione di dati altrimenti riservati, tra utenti dello stesso gruppo.

Generalmente la presenza di una utenza consente il collegamento al sistema mediante una shell (un interprete di comandi) che e’ configurabile dall’Amministratore.

Ad ogni utente e’ associata una home-directory su cui ha i necessari diritti e su cui l’utente viene posto al momento del collegamento.

Page 50: Sistema operativo unix

Sul sistema Unix vengono mantenuti diversi file di log. Tali file possono essere utilizzati per DEBUGGIN, per

ACCOUNTING e per effettuare verifiche sulla sicurezza del sistema.

Il file utmp riporta gli estremi degli utenti connessi al sistema. Il file wtmp riporta i dati storici di tutte le connessioni

avvenute.

Il contenuto dei due file puo’ essere analizzato con i comandi finger, who, e con programmi realizzati ad hoc.

Il file lastlog riporta le date delle ultime connessioni dei vari utenti.Il contenuto viene generalmente utilizzato dal comando

finger.

Page 51: Sistema operativo unix

Su Unix e’ disponibile un servizio di accounting che consente la raccolta di dati sull’utilizzo del sistema.

L’accounting registra su log ogni comando Unix attivato, l’utente che lo ha attivato, la quantita’ di CPU e memoria utilizzati, ... e le loro aggregazioni per utente/periodo. Oltre che per ragioni di accounting tali log possono essere utilmente sfruttati per analizzare eventuali attivita’ anomale presenti sul sistema (ad esempio un numero elevato di processi login indica una serie di tentativi di accesso falliti).

La presenza di piu’ meccanismi di accounting/raccolta dati di sistema consente eventuali controlli incrociati utili per analizzare le situazione piu’ complesse.

Page 52: Sistema operativo unix

Le attivita’ di backup del sistema, dei programmi e dei dati svolgono un ruolo fondamentale per la sicurezza del sistema.

Oltre a proteggere i dati/programmi da malfunzionamenti, consentono di ripristinare in modo "sicuro" un sistema dopo che e’ stato oggetto di un "attacco".