Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Tesina - Premio maturità 2008
Titolo: Gnu/linux e le reti tcp/ip
Autore: Francesco Ceccarelli
Descrizione: descrizione e configurazione all'interno di una rete tcp/ip del sistema operativo gnu/linux
Materie trattate: informatica, sistemi, elettronica e telecomunicazioni
Area: tecnologica
Sommario: Al giorno d'oggi abbiamo quasi tutti a che fare, in molteplici situazioni, con il software libero. Talvolta anche inconsapevolmente. Penso però che pochi sappiano cos'è e cosa caratterizza il software libero. E' perciò necessaria una premessa generale, che ci faccia capire bene di cosa stiamo parlando, prima di addentrarci nei meandri del maggior esponente di questa vera e propria corrente filosofica dell'informatica odierna: il sistema operativo GNU/Linux. FILOSOFIA Quando una persona compra o
Ogni comando così dato in Linux non fa altro che richiamare un programma
eseguibile presente, come vedremo, in cartelle apposite. Se vogliamo eseguire
però un programma che non è presente in queste cartelle non dobbiamo
specificarne solo il nome, ma anche il percorso completo in cui esso si trova
all'interno del file system. Ad esempio se abbiamo compilato un programma
prova e questo si trova nella cartella /home allora dobbiamo digitare nella shell:
/home/prova
e quando spingeremo il tasto Invio questo verrà eseguito.
Possiamo inoltre specificare delle opzioni, ovvero quell'insieme di modi in cui
può funzionare un programma. Esse quando sono specificate sono quasi sempre
precedute da un – e spesso vogliono essere seguite da uno o più parametri.
Un parametro è un informazione che passiamo al programma per eseguire il suo
lavoro. Può essere ad esempio il nome di un file su cui salvare l'output oppure,
in un applicativo di rete, l'indirizzo di un computer.
I principali comandi della shell sono:
logout, che esce dalla shell, tornando alla fase di login;
man <parametro>, che visualizza la pagina di manuale del comando o del
file di sistema specificato come parametro; contiene informazioni utili su
come utilizzare programmi e loro file di configurazione;
pwd, che restituisce il punto del file system in cui ci troviamo;
cd <cartella>, che ci permette di muoverci all'interno del file system,
specificando la cartella in cui vogliamo spostarci;
ls <cartella>, che stampa a video il contenuto della cartella specificata.
Se eseguito senza parametri stampa il contenuto della cartella corrente;
cp <file> <nuova posizione>, che consente di copiare un file dalla
posizione in cui ci troviamo ad un'altra; se vogliamo copiare un file che
non si trova nella nostra posizione allora dobbiamo specificarne tutto il
percorso;
mv <file> <nuova posizione>, che funziona allo stesso modo del
comando precedente, ma permette di spostare il file; se nel secondo
parametro al posto di una cartella è specificato un nuovo nome il file
viene rinominato;
rm <file>, che permette di eliminare un file del sistema. Attenzione, i file
rimossi non sono più recuperabili!
mkdir <nome>, che consente all'utente di creare, dove ne ha i permessi,
una nuova cartella col nome specificato;
rmdir <cartella>, che elimina la cartella specificata nel parametro;
more <file di testo>, che stampa a video il contenuto di un file ASCII;
vim <file di testo>, che ci permette di editare o creare un file di testo, nel
caso il nome specificato non esista.
Nelle distribuzioni orientate all'uso desktop però un'interfaccia a caratteri non
può bastare. E' così stata sviluppata all'interno di ogni sistema un'architettura
client-server che prevede un processo server, detto X, che viene avviato
all'accensione del sistema e che fornisce tutti gli strumenti per disegnare
finestre sullo schermo e accedere alle system call. Il server X però da solo non
serve a molto. Ecco dunque che gli vengono affiancati dei client, ovvero un
insieme di programmi che sfruttano i servizi messi a disposizione dal server X
per creare un'interfaccia grafica (GUI). Questo insieme di programmi è detto
Desktop Manager e trova le sue più famose implementazioni in KDE e GNOME.
CECCARELLI Francesco Pagina 10 di 56 sabato 5 luglio 2008
Riassumiamo dunque con uno schema:
Nel proseguire dell'esposizione faremo però uso quasi esclusivamente
dell'interfaccia a caratteri, poiché meglio si presta alla configurazione del
sistema. FILE SYSTEM
Il file system è quel particolare meccanismo con cui il sistema operativo
organizza i dati sulle memorie di massa. In GNU/Linux il file system è gestito
secondo lo standard Unix per cui everything is a file; ciò vuol dire che ogni
periferica, ogni processo, e ogni qualsiasi altra risorsa è vista dal sistema
operativo come un banale file. Per far ciò, a livello di kernel, ogni file system
comunica con un'interfaccia software detta Virtual File System (VFS), che ha
come unica cartella radice la / e ha il compito di rendere Linux indipendente dal
reale tipo di file system a cui accediamo. Da un punto di vista logico, nella root
del VFS verranno poi montati ricorsivamente, uno dentro l'altro, tutti i reali file
system (ext2, nfs, fat32...) di ogni partizione, che saranno in seguito visibili,
all'interno della radice, come sue sottocartelle.
Tipicamente GNU/Linux necessita di due partizioni per lavorare correttamente:
una, non formattata e che quindi non viene montata, detta swap, al fine di
allocare le pagine di memoria virtuale. L'altra, formattata per lo più con file
system Ext3, che contiene invece tutte le subdirectory della radice. All'interno
di essa verranno poi montate ricorsivamente anche tutte le partizioni contenute
in chiavi usb, hard disk esterni, floppy, CD o altre partizioni dello stesso hard
CECCARELLI Francesco Pagina 11 di 56 sabato 5 luglio 2008
disk interno.
Ecco qua le piu' importanti directory di un tipico file system di GNU/Linux; la
partizione principale è montata nella cartella radice, che a sua volta contiene:
bin/, per gli eseguibili di sistema;
boot/, per i file che interessano il boot loader, immagine del kernel
compresa;
dev/, per i file che rappresentano le periferiche, le porte e gli altri
dispositivi del PC;
etc/, che contiene due parti fondamentali del sistema:
gli script di avvio, che contengono tutti i programmi in esecuzione
automatica (demoni), necessari all'avvio dei vari servizi;
i file di configurazione del sistema e dei programmi applicativi: essi non
sono scritti in un linguaggio universale, ma è importante sapere che in
tutti possiamo decidere commenti anteponendo ad essi il carattere #,
proprio come nei linguaggi di programmazione ad alto livello;
home/, che contiene le subdirectory in cui sono montate le partizioni con i
dati degli utenti;
lib/, con le principali librerie e i moduli del kernel che si possono caricare
in run-time;
mnt/, che contiene le directory dove solitamente sono montati i supporti
rimovibili;
proc/, che contiene le immagini dei processi
root/, per i file dell'utente amministratore;
sbin/, per gli eseguibili riservati all'amministratore;
sys/, per file necessari al corretto funzionamento del sistema operativo;
tmp/, per i file temporanei, creati dai vari applicativi;
usr/, per le librerie e gli eseguibili installati nel sistema;
var/, per alcuni dati variabili, come cache e spool directory.
Inoltre Linux, contrariamente ad altri sistemi operativi concorrenti, è in grado di
leggere sulla maggior parte dei file system in circolazione, garantendo la
massima compatibilità fra file system tipici di sistemi operativi diversi.
Le partizioni degli hard disk interni sono solitamente montate in automatico
all'avvio del sistema, poiché sono contenute nel file /etc/fstab. Per tutte le altre
però è necessario il montaggio e lo smontaggio logico, da effettuare
manualmente. Il comando per montare partizioni è mount:
mount <device> <mount point>
dove dobbiamo specificare:
il dispositivo da montare, che troviamo nella cartella /dev;
il mount point, che rappresenta la sottocartella in cui andrà montato
logicamente il dispositivo;
Per smontare un dispositivo si utilizza invece il comando umount, nella sintassi:
umount <device>
Entrambi i comandi necessitano dei privilegi di root.
UTENTI E PERMESSI
Quando fu sviluppato Linux il mondo era molto diverso da oggi. Il PC non era lo
standard assoluto che oggi conosciamo, ma tutta l'informatica del tempo
ruotava attorno ai grandi microcomputer, la cui potenza era divisa fra più
CECCARELLI Francesco Pagina 12 di 56 sabato 5 luglio 2008
terminali stupidi, che permettevano a più utenti di lavorare simultaneamente.
GNU/Linux quindi, derivando da Unix, non poteva che essere un sistema
operativo multiutente. Infatti in GNU/Linux esistono due tipi di utenti:
l'utente root, che rappresenta l'amministratore e che possiede qualsiasi
tipo di permesso su tutto il sistema; non è dunque consigliato utilizzare
questo utente per la normale attività, ma solo per le operazioni di
manutenzione, poiché un programma applicativo eseguito come root avrà
la possibilità di accedere a tutti i file dell'hard disk, anche quelli di
sistema;
tutti gli altri utenti, che avranno privilegi inferiori a quello di root, ma che
proprio per questo assicureranno una maggior protezione contro
programmi con scopi malevoli.
Il primo problema che però si presenta allo sviluppatore di un sistema
multiutente è certamente quello della gestione dei permessi di accesso alle
risorse. I permessi possono essere di tre tipi:
in lettura (r);
in scrittura (w);
in esecuzione (x).
Ogni file inoltre ha un proprietario e solo esso, assieme all'onnipotente utente
root, può deciderne i relativi permessi da shell.
Oltretutto tutti gli utenti del sistema operativo sono organizzati in gruppi.
Questo comporta l'aumento del numero di permessi che il sistema operativo
deve gestire, che per ogni risorsa diventano:
tre bit (rwx) per decidere i permessi che il proprietario ha su di essa.
Infatti l'utente root se volesse potrebbe benissimo decidere di prendere
controllo della risorsa e negargli l'accesso;
tre bit (rwx) per i permessi che hanno gli altri componenti del gruppo a cui
fa parte il proprietario;
tre bit (rwx) per i permessi che hanno tutti gli altri.
Il comando usato per modificare i permessi di un file è chmod, che interpreta i
permessi come una combinazione tra numeri ottali; in particolare valgono le
seguenti corrispondenze:
NUMERO PERMESSI DESCRIZIONE
OTTALE
0 Nessuna autorizzazione
1 Esecuzione
x
2 Scrittura
w
3 Scrittura ed esecuzione
w x
4 Lettura
r
5 Lettura ed esecuzione
r x
6 Lettura e scrittura
r w Tutti i permessi: lettura,
7 r w x scrittura ed esecuzione
La sintassi del comando è la seguente:
chmod <permessi> <nome file>
dove per permessi si intende una combinazione di tre numeri ottali, che
esprimono in ordine i permessi del proprietario, del gruppo e di tutti gli altri.
CECCARELLI Francesco Pagina 13 di 56 sabato 5 luglio 2008
Per assegnare ad un file un nuovo proprietario o un nuovo gruppo dobbiamo
invece utilizzare il comando chown, nella sintassi:
chown <utente>:<gruppo> <nome file>
mentre per visualizzare permessi e proprietari dei file di una cartella utilizziamo
il comando ls, affiancato dall'opzione -l.
Per quanto riguarda invece la gestione degli utenti e dei gruppi, l'utente root
può: aggiungere un nuovo utente, con il comando adduser <nome>;
rimuovere un utente, con deluser <nome>;
aggiungere un nuovo gruppo, con il comando addgroup <nome>;
rimuovere un gruppo, con delgroup <nome>.
Possiamo aggiungere invece utenti ai gruppi editando il file /etc/group e
accodando alla riga del gruppo gli utenti che vi vogliamo aggiungere, separati
da una virgola. Se la modifica coinvolge un utente che ha già effettuato
l'accesso al sistema, egli deve pero' necessariamente ripetere la procedura di
login, se vuole che le modifiche siano applicate.
Inoltre ogni utente ha una password associata. Questa può essere modificata
tramite il comando:
passwd <username>
Da ricordare che mentre l'utente root può cambiare qualsiasi password senza
sapere la precedente, gli altri utenti possono cambiare solo la propria password
e solo inserendo prima quella vecchia.
Abbiamo dunque descritto la gestione degli utenti in GNU/Linux: una gestione
abbastanza semplice, ma che permette all'amministratore di sistema di rendere
invulnerabile l'elaboratore da malintenzionati e da software indesiderati. Infatti
senza disporre dei permessi di root un ipotetico virus potrà solo accedere alle
risorse dell'utente che ha eseguito (anche inavvertitamente) il programma
maligno, con il solo inconveniente della possibile perdita di dati; inconveniente
irrisorio ai fini della stabilità del sistema.
GESTIONE DEL SOFTWARE
Una delle differenze chiave tra distribuzioni sta nella gestione dei pacchetti
software installati. La distribuzione che utilizziamo per la dimostrazione pratica
è Kubuntu, di derivazione Debian, perciò sarà qui descritto il sistema APT. APT è
il gestore standard dei pacchetti in Kubuntu, scelto per merito della sua estrema