Nei capitoli precedenti abbiamo visto quale sia la filosofia di
linux, quali sono i comandi principali e cosa succede al bootstrap.
Quindi adesso sappiamo che agetty
chiamata dal processo init
(che legge le informazioni dal file /etc/inittab
),
inizializzerà tutti i terminali e li renderà pronti a lavorare.
Esattamente dopo il bootstrap, il nostro sistema visualizzerà qualcosa del genere:
Welcome to Linux 1.3.56.
darkstar login:
Che cosa significa? Cosa vuole?
In pratica sappiamo che linux è un sistema multiutente e multimacchina, in questo momento il sistema ci chiede di identificarci, in modo che lui sappia se abbiamo accesso a lavorare e che tipo di accesso abbiamo.
In un sistema Unix ci sono molti tipi di utenti, per semplificare un po' le cose, dividiamoli momentaneamente in superuser e utenti normali.
Il superuser è il gestore del sistema, colui che detta le regole e che si occupa dell'amministrazione del nostro OS, un utente normale invece è un utente che ha accesso al sistema ma con alcune restrizione dettate proprio dal superuser, restrizioni che possono essere di vario tipo, ovvero un utente normale può accedere solo a certe directory e a certe altre no, può eseguire solo certi comandi e certi no, può accedere in lettura a certe dir ma non in scrittura e viceversa, tutte queste regole sono dettate dal superuser.
Appare ovvio che almeno inizialmente (prima di ogni altra configurazione) il sistema riconoscerà come utente solo il superuser, poi sarà quest'ultimo a creare i permessi e gli accessi per gli altri utenti e regolare la vita del proprio sito (preferisco chiamarlo cosi perché in realtà qualunque utente linux ha potenzialmente sottomano la gestione di un sito o comunque di un server di rete), per cui alla domanda
Welcome to Linux 1.3.56.
darkstar login:
risponderemo ``root
'' (senza le virgolette) che è il
nome con cui tipicamente si indica il superuser.
A questo punto se tutto è andato bene saremo entrati nel nostro bravo, nuovo e fiammante sistema linux. Ma subito lo sconforto, digitiamo il nostro primo comando per vedere la directory in cui siamo, e ci accorgiamo ad esempio che la tastiera italiana non funziona e che quindi per digitare
ls -l
(che come abbiamo visto serve a vedere l'elenco in formato lungo delle directory) devo andare a cercare il tasto - nascosto dietro chissà quale tasto della tastiera italiana, una volta compiuta tale operazione rimarremo sconcertati dal risultato:
ls -l
total 2
lrwxrwxrwx 1 root root 8 Jan 4 22:01 INSTALL -> /var/adm/
lrwxrwxrwx 1 root root 14 Jan 4 22:01 linux -> /usr/src/linux/
Che roba è questa?
Compaiono solo due dir
INSTALL
e linux
, e le altre?
Tutto il mio sistema è concentrato in queste due dir ?
E perché non vedo il path di dove mi trovo?
Non vi scoraggiate, un passo alla volta e troveremo una facile spiegazione a tutto ciò.
Cominciamo subito col dire che ci troviamo nella home dir del superuser.
Ricordate che abbiamo detto che linux adotta un file system gerarchico? Bene allora ciascun utente del sistema sarà dotato di una propria directory proprietaria in cui fare tutto ciò che gli riguarda. Questa directory proprietaria viene indicata con il termine home dir, dopo il login l'utente si troverà all'interno della propria home dir pronto per lavorare.
Attualmente quindi ci troveremo nella home dir del superuser
che fisicamente sull'hardisk è situata in /root
.
dato che il superuser può fare di tutto, ci spostiamo nella
directory gerarchicamente superiore, con il comando
cd /
facciamo un bel
ls -l
e la situazione che ci si presenta è più o meno questa:
total 58
drwxr-xr-x 2 root bin 2048 Jan 10 16:30 bin/
drwxr-xr-x 2 root root 1024 Jan 4 21:36 boot/
drwxr-xr-x 3 root root 11264 Jan 15 14:37 dev/
drwxr-xr-x 12 root root 2048 Jan 15 15:04 etc/
drwxr-xr-x 7 root root 1024 Jan 15 12:42 home/
drwxr-xr-x 2 root root 1024 Jan 10 17:14 lib/
drwxr-xr-x 2 root root 12288 Jan 4 21:33 lost+found/
drwxr-xr-x 2 root root 1024 Sep 4 20:32 mnt/
dr-xr-xr-x 3 root root 0 Jan 15 14:37 proc/
drwxr-x--x 4 root root 1024 Jan 15 15:03 root/
drwxr-xr-x 2 root bin 2048 Jan 4 21:54 sbin/
drwxrwxrwt 2 root root 2048 Jan 15 15:10 tmp/
drwxr-xr-x 17 root root 1024 Jan 8 16:45 usr/
drwxr-xrwx 13 root root 1024 Jan 8 16:45 var/
Bene, sarà il caso di spiegare brevemente che cosa contengono queste directory.
/bin
Contiene i comandi essenziali per la gestione del sistema. L'accesso e' garantito sia al superuser che agli utenti normali, i comandi in essa contenuti sono tipicamente eseguibili da tutti. Non contiene sottodirectory.
/boot
Contiene alcuni file necessari al boot loader. Praticamente tutto il necessario per il bootstrap, eccetto i file di configurazione. Ovvero tutti i file che non devono essere editati a mano
/dev
Contiene i file speciali, a carattere o a blocco (vedi I capitolo)
che indicano i dispositivi fisici del sistema.
Contiene anche il comando MAKEDEV
che serve a creare nuovi file
per i dispositivi, ove ci fosse bisogno.
/etc
Contiene tutti i file di configurazione per il proprio sistema. Gran parte dei funzionamenti della macchina possono dipendere dai file contenuti in questa directory.
/home
Tipicamente contiene le home dir dei vari utenti del sistema.
Esclusa ovviamente la home dir del superuser che invece è
contenuta nella directory /root
.
/lib
Contiene le shared libraries ovvero le librerie del sistema che vengono condivise da molte applicazioni.
/sbin
Tipicamente contiene comandi per la gestione del sistema, utilizzabili solo dall'amministratore e da nessun altro.
/mnt
Tipicamente è vuota, si usa per montare file system temporanei sul proprio hard disk.
/proc
Contiene informazioni sui processi in corso. In realtà si tratta di una directory virtuale che non occupa nessuno o pochissimo spazio fisico sull'hd. Tutti i file contenuti in questa directory sono creati dal kernel o da chiamate al kernel, è caldamente sconsigliabile smanettarci dentro, a meno che non si sa esattamente quello che si sta facendo.
/root
È la home dir dell'amministratore di sistema
/tmp
È una directory che contiene file temporanei creati dai processi che runnano nel sistema.
/usr
La directory /usr
è la directory che contiene la maggior
parte delle informazioni e dei programmi relativi al
sistema operativo.
Contiene moltissime sottodirectory, tra cui quelle
relative alle librerie dei singoli programmi, la directory
che contiene i programmi veri e propri del sistema,
la directory contenente i file d'aiuto etc etc.
L'analisi della directory /usr
richiederebbe molto tempo,
pertanto si consiglia per maggiori informazioni, la
lettura di fsstnd-1.2.txt
dal primo cd della slackware di
novembre.
/var
La directory /var
contiene anch'essa un elevatissimo
numero di informazioni.
A differenza della /usr
dove comparivano comandi di
sistema e informazioni piu o meno fisse, nella /var
compaiono per la maggior parti informazioni dinamiche,
come i log di sistema o per esempio la base messaggi
del point e cosi via, cosi come per la /usr
, si
consiglia la lettura di fsstnd-1.2.txt
.
L'utilità delle home dir è varia e molteplice. Come gia detto linux è un sistema multiuser, per cui una prima forma di protezione dei dati è sicuramente quella di assegnare a ciascun utente una propria directory dove poter lavorare, directory che può essere accessibile solo all'utente che la possiede e se l'utente lo desidera anche dal gruppo di lavoro con cui magari in quel momento sta sviluppando un certo progetto e a nessun altro eccetto, naturalmente, il superuser che ha il controllo e la responsabilità diretta di tutto il sistema.
Non solo ma l'esistenza di una home dir propria di ciascun utente fa sì che i progetti, i programmi o i dati personali di un user non vengano confusi con quelli di chiunque altro.
Sull'hard disk possono esistere 10 file chiamati progetto.comeon
,
ma il fatto che ciascun file appartenga ad una home dir diversa,
di per sè ne diversifica e il contenuto e il proprietario.
Inoltre la peculiarità del file system di linux che è quella di essere gerarchico viene in questo modo ulteriormente rispettata. Alcuni potrebbero interpretare questa delle directory strutturate gerarchicamente come una costrizione, in realtà non lo è affatto, anzi è un agevolazione.
Non è una costrizione perché in ogni caso il superuser può
stabilire ad esempio che 5 utenti condividano la stessa home
dir e può stabilire che questa home non sia situata nella
directory /home/nomeutente
ma in un qualunque altro posto,
(per quanto questo possa sembrare strano alcune volte è
utile) ed è un agevolazione perché per il programmatore
è più facile sviluppare programmi in una situazione di
file system gerarchico, è infatti indubbio che è più
facile scrivere un programma usando una struttura del tipo
/-----------
|
|____home/
+----jaco/
+mioprogramma/
+------/bin
+------/lib
+------/doc
+------/etc
+------/var
+------/src
che scrivere un programma in una situazione in cui tutto è di tutti e non esiste una strutturazione dei dati.
Molti a questo punto diranno: ``Io sono l'unico proprietario del mio sistema, sul mio computer ci lavoro solo io, dove sta l'utilita' di avere un sistema multiuser?''
È una domanda tutto sommato che potrebbe sembrare ben posta, in realtà la risposta è semplice ed univoca: nella filosofia di Unix che prevede che ciascuna cosa sia specializzata a fare una ed una sola cosa con il massimo grado di specializzazione possibile.
Anche in questo caso questa regola è valida, anche se siamo solo noi ad utilizzare il nostro sistema, è necessario creare utenti specializzati alla risoluzione di un certo problema.
Esisterà l'utente dedicato alla lettura della posta, quello dedicato alla programmazione e quello dedicato ai collegamenti ad internet, quello dedicato alla gestione dei database, e quello dedicato all'utenza dei wordprocessor e cosi via; si possono, anzi è intrinseco nella filosofia del sistema, dover creare utenti specializzati alla risoluzione di un problema.
Nel prossimo capitolo vedremo come fare.