16.1. Cosa c'entra Unix con Internet?
- N E V
Uno dei fattori che rende Internet così affascinante e popolare è che consente di colloquiare con chiunque, a prescindere dalla particolare macchina o dal particolare ambiente operativo che si utilizza. Però...
Però, non si può parlare di Internet così a lungo come noi stiamo facendo senza almeno accennare a Unix, se non altro per ragioni storiche. I motivi del connubio tra Unix e Internet sono più di uno: ne accenneremo solo ad alcuni, e neanche ai più importanti...
Naturalmente, in questa sede ci limitiamo a pochi concetti, rimandando ad altre guide o a corsi specifici per eventuali approfondimenti.
Unix non è nè una ditta di computer, nè un programma, nè un singolo sistema operativo, ma piuttosto un nome che indica una famiglia di sistemi operativi di produttori diversi e progettati per computer diversi; questi sistemi sono tra loro non uguali, ma comunque simili per modalità di funzionamento e comandi implementati. Non esiste pertanto lo Unix, ma ogni utente si troverà a fare i conti con il proprio Unix, quello installato sulla macchina con cui lavora. Per questo motivo non è possibile dare indicazioni assolutamente generali, anche se ciò che si dirà nel seguito vale praticamente per qualsiasi sistema Unix.
Il tipico Unix è molto potente, molto sicuro, molto ben funzionante e molto complicato da usare. Dimenticatevi icone, mouse, eccetera: lo Unix è esclusivamente testuale e funziona a riga di comando, proprio come MS-DOS (anche se da qualche anno è stato introdotto X-Windows, che sta a Unix come Windows sta a MS-DOS, e permette di lavorare con un'interfaccia grafica). Del resto, Unix è nato nel 1972 (difatti, MS-DOS è una pallida copia di Unix).
Proprio perchè "Unix" vuol dire in realtà un grande numero di sistemi e di computer diversi, sappiate che lavorare con Unix vuol dire lavorare con il linguaggio C. Mentre, quando volete installare un programma sotto MS-DOS, avete in mano un file eseguibile, quando volete installare un programma sotto Unix tipicamente avete in mano i sorgenti del programma, scritti in linguaggio C; per poter usare il vostro programma dovrete imparare a compilarlo!(Questo perchè, se si volessero distribuire i file eseguibili, bisognerebbe prevedere venti o trenta versioni diverse per le venti o trenta versioni diverse di Unix usate comunemente; al contrario, il C è un linguaggio di programmazione sufficientemente standard. Comunque, tipicamente voi non dovrete installare niente: ci penserà il vostro sistemista.
Mentre i comuni PC, ossia personal computer, sono pensati per essere usati da un solo utente alla volta, le grosse macchine Unix - proprio perchè grosse, ossia molto potenti e molto costose - sono progettate per poter essere usate da più utenti contemporaneamente e per poter svolgere più compiti contemporaneamente (ossia sono multiuser e multitasking). Ciascun utente, per utilizzare il computer, si serve di un terminale, ossia di una unità che è composta essenzialmente da una tastiera, un monitor e quel poco di elettronica necessaria per trasmettere i dati dalla tastiera al computer centrale e da esso al monitor. Non è quindi necessario che il terminale sia un vero e proprio computer, anche se spesso si usa un PC con un programma di TELNET. Mentre voi state lavorando, comunque, ci sono solitamente altre decine o centinania di persone che stanno usando lo stesso computer, lavorando da terminali diversi.
16.3. Che cos'è un "sistemista"
o "amministratore" di un computer Unix?
- N E -
Un computer Unix è molto grosso (tipicamente dispone di gigabyte di disco e decine di megabyte di RAM), è usato da molte persone ciascuna delle quali compie tipicamente numerosi pasticci, è difficile da usare ed è difficilissimo, per i motivi suddetti, da configurare e da riempire con i vari programmi; soprattutto, ogni versione di Unix ha caratteristiche proprie che vanno conosciute bene per poterla far funzionare. Pensate soltanto a cosa vuol dire dover compilare un programma delle dimensioni di molti megabyte, magari modificandolo per adattarlo alla macchina, o dover mantenere in ordine un disco da 8 gigabyte...
Pertanto, le macchine Unix sono affidate in gestione a uno o più sistemisti o amministratori (administrators), ossia a persone la cui unica attività è far sì che il computer continui a funzionare, installare i nuovi programmi, risolvere i pasticci creati dagli utenti e sorvegliare su eventuali usi non autorizzati del computer.
Un sistemista Unix è solitamente specializzato in una determinata versione di Unix; il suo login è per convenzione root, ed egli solo può fare una serie di operazioni, tra cui abilitare nuovi utenti, leggere qualsiasi file gli piaccia, eccetera. Per questi motivi, un sistemista deve anche essere una persona fidata, in quanto chiunque abbia un accesso di tipo root può sostanzialmente fare quel che gli pare e leggere tutto ciò che vuole, compresi dati dei singoli utenti tendenzialmente riservati.
16.4. Cosa sono e a cosa servono
esattamente un "login" e una "password"?
- N E -
In generale, un login (nome utente) e una password (parola chiave) sono i due elementi richiesti da un computer su cui funziona un sistema operativo di tipo Unix (o anche altri) per identificare gli utenti autorizzati e permettere loro l'uso del computer. Poichè spesso su tali macchine sono conservati dati estremamente importanti e riservati, diventa di vitale importanza controllare chi può metterci le mani sopra, e da qui il sistema di login e password. In questo modo, inoltre, è possibile riconoscere tra loro i vari utenti ed attribuire ad ognuno un proprio livello di "autorizzazione all'uso" per ciascun file, tramite il sistema degli attributi. Infine, individuando con certezza chi sta usando il computer è possibile memorizzare tutte le sue azioni in un file, permettendo così di risalire al responsabile in caso di problemi. Per questo motivo è bene che non diffondiate la vostra password: voi siete responsabile delle azioni di chiunque usi il computer con il vostro login e la vostra password.
Le password sono conservate all'interno della macchina, in un file che può essere nascosto o anche visibile da tutti. Ovviamente, le password non sono scritte nel file in chiaro, ma sono criptate con un sistema che funziona in un verso solo; questo significa che si usa un algoritmo di criptazione non invertibile, ossia tale da rendere impossibile la decrittazione anche dal punto di vista teorico. Per controllare la password che inserite all'atto del collegamento, pertanto, il computer non decritta la password memorizzata nel file delle password, ma invece cripta con lo stesso algoritmo la parola che voi avete inserito e confronta le due stringhe criptate.
16.5. Che cos'è l'"area"
di un utente su una macchina Unix?
- - E -
Poichè una macchina Unix può essere usata da vari utenti, sia per motivi di ordine, sia per motivi di sicurezza, è opportuno che tutti i file appartenenti ad un dato utente siano raggruppati in un unica zona del disco (in senso logico, ossia di directory, e non in senso fisico, ossia di posizione fisica sul disco). In pratica, ciascun utente riceve insieme all'autorizzazione ad usare il computer (e quindi al login e alla password) una propria directory, comunemente detta area (account) dell'utente, nella quale egli può leggere e scrivere tutti i file che vuole, e inoltre può modificare gli attributi dei file, ossia può stabilire quali altri utenti della macchina sono autorizzati a leggere e a scrivere su ciascuno dei file posti nella sua area. Ovviamente, l'utente può creare sottodirectory nella propria area e può organizzare i propri file come meglio crede, proprio come se l'area fosse in realtà un vero e proprio hard disk dedicato solo a lui. Poichè in realtà tutte le aree risiedono sullo stesso disco, ogni utente ha anche un limite di spazio occupabile su di esso (detto quota): anche se, per ipotesi, sul disco ci fossero ancora molti megabyte disponibili, egli comunque non è autorizzato ad avere all'interno della propria area file che in totale occupino più spazio della propria quota. Nel caso si abbia la necessità momentanea di maggiore spazio, si può utilizzare una directory comune per tutti gli utenti, generalmente denominata tmp e posta nella root directory, che viene però svuotata regolarmente e frequentemente.
Poichè l'area è semplicemente uno spazio sul disco, e poichè le macchine Unix sono multitasking, è normalmente ammesso che più utenti (o lo stesso utente usando più terminali) utilizzino contemporaneamente il computer con lo stesso login e la stessa password.
Poichè il termine "area", che correttamente indica uno spazio su disco, nell'uso comune è passato ad indicare la possibilità di accesso ad una macchina garantita dalla disponibilità di questo spazio, la directory base dell'utente viene spesso indicata come home directory.
16.6. Che cos'è una shell?
Come funziona il sistema dei file dello Unix?
- - E -
La shell è sostanzialmente il programma che si occupa di far funzionare l'interfaccia a riga di comando, ossia l'equivalente del COMMAND.COM del DOS. Tuttavia, sotto Unix esistono varie shell (talvolta anche più di un tipo sulla stessa macchina), che ovviamente differiscono per comandi accettati, per cui dovrete adeguarvi alla vostra (le più diffuse sono sh e csh (C shell)).
Vi sono tuttavia alcuni comandi che funzionano più o meno con tutte le shell. Prima di vederli, comunque, è il caso di accennare al sistema di file (filesystem) di Unix, che è simile a quello dell'MS-DOS ma più esteso e completo. Ad esempio, non esistono le varie unità (A:, C:...), ma tutte le unità collegate al sistema - incluse quelle non fisse, come i floppy disk drive o i cd-rom - sono viste come se fossero un unico, grande disco. Nella root directory del sistema (la directory base, quella che sul vostro hard disk sarebbe C:\) sono poi poste varie sottodirectory, alcune delle quali sono effettivamente sottodirectory sull'hard disk, mentre altre corrispondono alle unità: ad esempio, nella root potreste trovare una directory denominata cdrom, entrando nella quale... vi troverete nella directory base del CD-ROM che in quel momento è inserito nel lettore CD. La root directory è indicata con /; si noti che la barra è diritta e non rovesciata, ossia è l'opposto di quella dell'MS-DOS (un tipico errore compiuto dai neofiti di Unix è usare le barre rovesciate; un altro errore è non ricordarsi che per Unix, a differenza del DOS, maiuscole e minuscole sono diverse e pippo.txt e PIPPO.TXT indicano due file diversi).
A partire dalla root, vi è poi un albero di sottodirectory, simile a quello del DOS ma con una differenza: vi possono essere rami che si incontrano, ossia percorsi diversi possono portare allo stesso punto dell'hard disk. Questo è in realtà un effetto di ciò che si definisce un link simbolico: in una directory, oltre che ai file, alle sottodirectory . (la directory corrente) e .. (la directory parent, ossia quella immediatamente superiore nell'albero) e ad altre eventuali sottodirectory, possono essere contenuti dei "rimandi" a file o directory che sono contenuti in un altro punto del disco, e che sono soltanto apparentemente posti nella directory che state leggendo.
Se non ci credete, prendete WsFtp o Netscape e provate a collegarvi con il sito FTP svedese ftp.sunet.se e ad entrare nella directory /pub/pictures/ (al solito, notate la barra iniziale, che significa che pub è una sottodirectory della root, e quella finale, che significa che pictures è una directory); quindi entrate nella sottodirectory anime-manga e osservate dove vi trovate... Vi aspettereste di trovarvi in /pub/pictures/anime-manga/, e invece il programma che state usando indica che vi trovate in /pub/tv+film/anime-manga/sorted/. Questo significa che la sottodirectory anime-manga in realtà non esisteva, ma era soltanto un link simbolico alla directory /pub/tv+film/anime-manga/sorted/. Ciò può disorientarvi, specialmente perchè se voi a questo punto tornate indietro di una directory (ossia entrate in ..), vi troverete in una directory diversa da quella da cui siete partiti.
Come già detto, all'atto del collegamento non vi troverete nella root, ma nella vostra home directory, che è la directory che vi è stata assegnata perchè ci salviate i vostri file e in generale ci facciate quel che volete. Comunque, potete benissimo risalire a monte, facendo cd .. per tornare indietro di un livello o cd / per entrare nella root. Tipicamente, la home directory corrisponde alla directory /users/login/, dove login è appunto il vostro login; questo può in realtà essere un link simbolico, ma solitamente funziona su qualsiasi Unix. Dovunque siate, potete tornare nella vostra home directory con il comando cd ~.
16.7. Che cosa sono e come si modificano
gli attributi di un file?
- - E -
Sulle macchine Unix ciascun file o directory, oltre ad essere caratterizzato dal nome, dalla dimensione... è caratterizzato da una serie di attributi che stabiliscono quali utenti del computer sono autorizzati a leggere e/o scrivere in quel file, ed è proprio tramite questi attributi che, ad esempio, l'utente che pone nella propria area alcune pagine ipertestuali stabilisce quali siano i file e le directory accessibili dagli utenti anonimi e quali no, e in generale può proteggere da occhi indiscreti - a parte quelli del sistemista - i propri dati riservati.
Ogni file possiede attributi riguardo a tre operazioni diverse, indicate con le lettere r (accesso in lettura), w (accesso in scrittura) e x (possibilità di esecuzione, solo se il file è eseguibile). Inoltre, gli utenti della macchina sono divisi per gli attributi in tre categorie: l'utente proprietario dell'area in cui è posto il file (u), i membri dei gruppi di lavoro a cui l'utente appartiene (g) e tutti gli altri (o; le tre categorie insieme si indicano con la lettera a).
Eseguendo il comando ls -l, a sinistra del nome di ogni file o directory comparirà una riga del tipo:
-rw-r--r--
A parte la prima casella (che vale d se si tratta di una directory), le restanti nove sono raggruppate in tre gruppi di tre (da sinistra: utente, gruppi, altri), ciascuno dei quali contiene le lettere corrispondenti agli attributi abilitati per la corrispondente categoria di utenti. Ad esempio, la riga suddetta significa che il file è abilitato in lettura e scrittura per l'utente, solo in lettura per gli altri.
Il comando che permette di modificare gli attributi è solitamente chmod, la cui sintassi è: chmod who+attr file o chmod who-attr file, a seconda che si desideri abilitare o disabilitare un attributo. Al posto di attr andranno inserite le lettere relative agli attributi da modificare, al posto di who le lettere relative alle categorie di utenti interessate, al posto di file il nome del file. Pertanto si possono dare comandi del tipo:
chmod g-w pippo.txt | Disabilita la possibilità di leggere pippo.txt per i membri dei gruppi di lavoro |
chmod go+r pippo.txt | Abilita la possibilità di leggere pippo.txt per i membri dei gruppi di lavoro e per tutti gli altri |
chmod a+rx pippo | Abilita la possibilità di leggere e eseguire pippo per tutti (utente, membri dei gruppi, altri). |
16.8. Quali sono i principali comandi
Unix?
- - E -
Assodato che i comandi accettati dalle varie versioni di Unix sono diversi, eccone alcuni che dovrebbero funzionare dappertutto:
cd pippo | Entra nella directory pippo (/ per la root, .. per la parent, ~ per la vostra home). |
pwd | Scrive il nome completo della directory in cui vi trovate. |
ls | Mostra i file contenuti nella directory corrente (equivale a dir del DOS); vedi sotto per le varie opzioni. |
cp src dest | Copia il file src in dest . |
mv src dest | Sposta il file src in dest (funziona anche come rename del DOS). |
more file | Visualizza sullo schermo il file indicato (equivale a type file | more nel DOS). |
rm file | Cancella il file. |
delete file | Marca come "da cancellare" il file indicato, senza però eliminarlo (in realtà, questa caratteristica dipende dalla vostra configurazione, ma solitamente il comando funziona in questo modo; questo comando equivale quindi a "spostare il file nel cestino"). |
purge | Elimina tutti i file marcati "da cancellare", liberando lo spazio corrispondente (usato in coppia con il comando precedente, equivale a "pulire il cestino"). |
quota | Mostra la vostra quota e lo spazio che attualmente occupano i vostri file. |
who | Mostra gli utenti attualmente collegati alla macchina. |
ps | Mostra tutti i processi che state facendo funzionare. |
whereis programma | Mostra in quale directory è installato programma. |
chmod who+attr file chmod who-attr file |
Modifica gli attributi del file, attivando o disattivando una determinata possibilità di accesso (attr) per una determinata categoria (who) (vedi la parte sugli attributi). |
logout | Si disconnette dall'area. |
man comando | Mostra la guida per il comando indicato. |
Il comando man è vitale: se non lo userete spesso, non sopravviverete.
Talvolta, nella configurazione dell'area, sono definiti degli alias, ossia delle equivalenze che vi permettono ad esempio di digitare dir per fare ls -al, o comunque di definire nuovi comandi in funzione di quelli preesistenti. Spesso vengono predefinite le equivalenze con i comandi del DOS (ad esempio delete è spesso un alias).
16.9. Quali sono le principali opzioni
del comando ls ?
- - E -
Riguardo al comando ls, spesso lo si usa in congiunzione a vari switch per modificare il modo in cui presenta le directory. Ad esempio -a mostra anche i file "nascosti" (quelli il cui nome inizia per .), -l mostra le dimensioni dei file e i loro attributi, -F permette di distinguere tra i tipi di file ponendo al termine del loro nome il carattere / se directory o @ se link simbolico, -r mostra il contenuto anche per le sottodirectory della directory corrente. Gli switch si cumulano dopo il segno -: ad esempio potete selezionare tutte e quattro le opzioni sopra indicate con il comando ls -alrF (l'ordine è ininfluente).
Va ricordato infine che il tasto TAB permette solitamente di "completare" i nomi di file o directory che si stanno scrivendo: ad esempio, se volete entrare dentro la directory public_html, potete scrivere cd publ e poi premere TAB; se non vi sono possibilità di confusione, comparirà automaticamente il resto del nome della directory.
Oltre a ciò, sulla macchina possono essere installati vari programmi che potete lanciare scrivendone il nome sulla riga di comando: per quanto riguarda la rete, potreste trovare un programma di TELNET (telnet nomesito porta, dove nomesito è il nome del sito a cui collegarsi e porta, che potete solitamente omettere, è il numero della porta), di FTP (ftp o ncftp), di TALK (talk nomeutente@nomemacchina), di FINGER (finger nomeutente@nomemacchina), di GOPHER (gopher) e un browser WWW (solitamente lynx); solitamente vi è anche un programma per la lettura delle news (rn, trn, tin...) e un programma di posta elettronica (mail, mh: è il meno standardizzato, per cui è bene che vi facciate dare istruzioni dal sistemista). Oltre a questi, tipicamente il sistema dispone di un compilatore C (cc o gcc) e di un interprete Perl (perl: il Perl è un linguaggio di script molto usato sotto Unix).
16.10. Che cos'è un "demone"
?
- - E -
Tipicamente, i computer su cui funziona Unix non vengono mai spenti; sono progettati per essere sempre accesi e disponibili 24 ore su 24 per qualsiasi utente autorizzato che desideri servirsene; in qualsiasi momento può arrivare una richiesta di utilizzo. D'altra parte, può succedere che arrivi una qualche richiesta quando nessun utente sta fisicamente usando e controllando il computer: è quindi necessario che esso sia capace di "autoavviare" dei programmi in risposta a determinate richieste, senza dover attendere un preciso comando da parte di un utente. Per questo motivo, esistono programmi permanentemente in esecuzione, normalmente inattivi, ma pronti a "risvegliarsi" e ad eseguire le operazioni richieste nel caso di eventi particolari (come la richiesta di un utente) oppure di condizioni prefissate (ad esempio ad intervalli di tempo regolari). Un programma di questo tipo si dice demone (daemon); ne esistono per tutti gli scopi.
Ad esempio, si pensi al caso in cui un utente di Internet, tramite un browser, richiede al computer di recuperare una pagina e spedirgliela. È ovvio che debba esistere un modo per far partire l'opportuno programma senza che sia necessario un comando "umano"; questo si ottiene facendo eseguire sul computer un demone HTTP (httpd), che ascolta le richieste in arrivo sulla porta convenzionalmente assegnata al protocollo HTTP e le soddisfa spedendo ai richiedendi le pagine desiderate; dopodichè, si "riaddormenta" in attesa di nuove richieste. Tutti i programmi server sotto Unix sono realizzati tramite demoni: esistono demoni FTP, TELNET... Esiste anche, ad esempio, il demone cron, che si attiva in istanti (data e ora) predefiniti per eseguire un comando: in questo modo, ciascun utente (se autorizzato dall'amministratore) può predisporre una scaletta temporale di comandi (schedule) che saranno eseguiti alle ore indicate, anche se egli in quel momento non sarà più collegato.
Sotto certi aspetti, i demoni Unix equivalgono ai cosiddetti TSR (Terminate and Stay Resident) per PC, che sono programmi che dopo essere stati eseguiti restano in memoria e si attivano quando l'utente compie certe operazioni (ad esempio, preme una combinazione predefinita di tasti). Tuttavia, l'architettura dello Unix è stata pensata per permettere un uso più esteso e approfondito di questo tipo di tecnologie.
16.11. Che cos'è un X-server?
- - E -
Come visto, TELNET permette di utilizzare a distanza un computer remoto con sistema operativo Unix. Tuttavia, TELNET è stato concepito per lo Unix "classico", ossia con input e output esclusivamente testuali: non è prevista alcuna possibilità di visualizzare grafica sotto Unix, e, di conseguenza, con un collegamento TELNET. D'altra parte, anche lo Unix ha il suo Windows: il cosiddetto X-Windows, ossia un sistema operativo con interfaccia grafica che permette l'uso di programmi non esclusivamente testuali. Appare allora ovvio chiedersi se sia possibile collegarsi con un computer remoto sfruttandone anche le capacità grafiche offerte da X-Windows.
La risposta a questo problema è stata data dagli X-server. Si tratta di particolari programmi che provvedono a trasmettere sulla rete l'output grafico dei programmi permettendo il controllo a distanza di applicazioni grafiche per X-Windows, proprio come TELNET permette l'esecuzione a distanza di applicazioni Unix. Tipicamente, questi programmi richiedono all'utente di fornire il nome del computer remoto su cui ha l'accesso, il login, la password e il nome del programma da eseguire (o meglio, il comando da dare sulla riga di comando dello Unix per far partire il programma); dopo di ciò, essi stabiliscono un collegamento e provvedono a visualizzare sullo schermo del computer dell'utente l'output grafico del programma che, fisicamente, sta venendo eseguito sul computer remoto. A tutti gli effetti, difatti, il computer che esegue il programma è quello remoto, e quindi il programma potrà accedere al disco, sfruttare l'hardware e il software del computer e le sue possibilità di connessione in rete; il computer dell'utente sarà soltanto un terminale (anzi, un X-terminale).
Poichè tuttavia la quantità di dati da trasmettere ed elaborare è molto maggiore di quella necessaria per un collegamento TELNET, tipicamente i collegamenti con X-server si effettuano soltanto all'interno di reti locali, su cui si può mantenere una velocità di trasmissione medio-alta; è difficile pensare ad un collegamento di questo tipo tramite modem. Inoltre, anche se il PC svolge soltanto la funzione di terminale grafico, è comunque necessario disporre di un processore medio-alto (almeno un 386, ma è consigliato un 486). Infine, per stabilire un collegamento X-server è solitamente necessario aver stabilito in precedenza anche un normale collegamento TELNET; dopo aver lanciato entrambi i collegamenti, sarà normalmente possibile lanciare dal terminale testuale (TELNET) applicazioni grafiche di X-Windows, pur senza averlo fatto partire sul computer remoto, che verranno visualizzate sul PC dell'utente grazie all'X-server.
Consigli di navigazione:
|
Principianti: | Un esempio: la formazione a distanza |
Naviganti: | 17. Internet in Italia | |
Esperti: | 17. Internet in Italia | |
Valutanti: | Un esempio: la formazione a distanza |
Michele Daniele, E&T