Introduzione a Linux: l'ABC del pinguino

Un sistema per molti utenti

Con la certezza che nessuno abbia saltato a piedi pari l'affascinante capitolo precedente, per arrivare direttamente alla parte pratica dell'articolo, possiamo iniziare a vedere quelle che sono le principali particolarità di Linux, per chi è sempre stato abituato ad usare Windows.

Le cose che vedremo in questo articolo arrivano direttamente dal mondo Unix, a cui Linux, come abbiamo detto, appartiene; iniziamo con la multi-utenza.

Multi-utenza significa che Unix (e quindi Linux) è progettato per gestire contemporaneamente molti utenti su uno stesso computer; ricordiamo infatti che Unix era nato proprio per permettere di collegare centinaia di monitor e tastiere ad uno stesso elaboratore centrale (il mainframe).

Log-in

Certo, oggi questo potrebbe sembrare inutile, soprattutto per i computer di casa, a cui si può collegare solo una coppia di monitor e tastiera, ma in realtà non è così. Infatti, per realizzare la multi-utenza, Linux implementa un sacco di caratteristiche, oggi utilizzate anche da Windows. Ad esempio, è possbile creare diversi account utente, uno per ogni persona che usa il computer. Anche per via della sua introduzione in Windows, non dovrebbe essere un problema familiarizzare con il log-in, la prima operazione da fare quando si accende un sistema Linux. Fare il log-in significa dire al sistema chi sei, inserendo il nome utente e la password; questa operazione ormai può essere fatta in modo molto simile a quanto avviene su Windows:

Schermata predefinita in Fedora 7
Le immagini mostrano alcuni degli infiniti modi in cui può essere personalizzata la schermata di login di Linux.

Files e cartelle: proprietari, gruppi e permessi

La multi-utenza non si limità però al log-in. La vera novità, infatti, la vediamo esplorando i files e le cartelle; in questo caso possiamo notare che ogni file ha un proprietario e dei permessi. Quando un utente crea un file, ne diventa automaticamente proprietario, e il file viene marcato come proprietà dell'utente che lo ha creato. Il proprietario può poi scegliere i permessi del file, ovvero può decidere di permettere agli altri utenti di visualizzare il suo file, o addirittura di scriverci su e modificarlo. Se invece si vuole mantenere privato un documento, il proprietario può togliere i permessi di lettura e scrittura agli altri utenti:

Ogni file possiede un proprietario e dei permessi. Se un documento è privato gli altri utenti non possono aprirlo. Il proprietario può modificare i permessi dei suoi files.

La figura a sinistra mostra cosa succede se io, utente "dario", tento di aprire un file di "claudio" (Il file "SEGRETISSIMO!!!" che, come si vede sulla finestra di sfondo, è di proprietà di "claudio") senza averne il permesso (si osservi la colonna "permessi", che descrive sinteticamente "chi può fare cosa"1). A destra, invece, è mostrata una schermata attraverso cui il proprietario può modificare i permessi di un file; questa schermata è divisa in tre blocchi: i permessi del proprietario, i permessi del gruppo, ed i permessi di tutti gli altri.

Spendo solo poche parole sul gruppo, perchè è una caratteristica che normalmente gli utenti domestici non usano. In Unix è possibile creare dei gruppi di utenti, in modo che ciascun gruppo possa condividere dei files, nascondendoli agli altri. Faccio un esempio: immaginiamo che in una scuola ci sia un computer utilizzato sia dagli studenti che dai professori. Diciamo che ci sia anche un files "voti", contenente i voti di tutti gli studenti; chiaramente gli studenti non devono poter modificare quel file (e questo si può fare togliendo i permessi di scrittura). Ma, se non esistessero i gruppi, sarebbe impossibile fare in modo che più professori possano modificare il file "voti", poichè il proprietario del file può essere uno solo. Per ottenere ciò, i professori possono creare un gruppo "professori", decidere quali utenti ne fanno parte, ed assegnare il file "voti" al gruppo "professori". A questo punto, solo gli utenti appartenenti al gruppo "professori" potranno modificare il file "voti". Inutitle dire che questa caratteristica è stata sviluppata proprio a questo scopo, quando Unix girava sui mainframe delle università.

Importantissimo è invece il discorso sull'utente root.

Uno dei motivi della storica fragilità di Windows è il fatto che, se un programma maligno (ad esempio un virus) riesce ad entrare nel sistema (ad esempio mentre stai navigando su internet con Internet Explorer) questo può allegramente fare man bassa di tutto, e cancellare files a destra e a sinistra come meglio crede. In particolare può succedere che il virus manometta dei files importanti per il funzionamento del sistema, ed in questo caso c'è poco da fare: si salvano i dati (se ne sono rimasti) e si formatta tutto. Questo in Linux non può succedere: chi riesce ad indovinare perchè?

Ma certo! I files di sistema in Linux non sono di proprietà dell'utente, e un virus che entra attraverso l'utente non ha in ogni caso i permessi per eliminarli o toccarli in qualche modo.

Esiste però un utente speciale, che sulla macchina ha il privilegio dell'onnipotenza: l'utente root. L'utente root (detto anche super user) è il "padrone di casa" nel computer ed ha accesso completo ad ogni file del sistema, anche se questo file è stato protetto dall'utente, o non è di sua proprietà. Questo utente è importante, perchè spesso è indispensabile avere il controllo completo del sistema (ad esempio quando si vuole installare un nuovo programma), ma è anche pericoloso: se fai il log-in come root, e commetti degli errori, rischi seriamente di danneggiare il sistema, e di dover quindi formattare tutto. Da notare che invece, se fai il log-in come normale utente, per quanto ti impegni a fare danni, non riuscirai mai a intaccare in nessun modo la stabilità del sistema, visto che tutti i files importanti sono di proprietà dell'utente root.

Per molto tempo Windows (dalla versione 1 alla Millennium Edition) non si è preoccupato di questa distinzione, e accendere il computer era un po' come essere sempre root (per la gioia di cracker e venditori di anti-virus); con Windows XP (ed NT prima di lui, ma questa è un'altra storia...) si è iniziato a distinguere tra "Amministratore", e "Utente limitato"; era il 2001. Con le ultime versioni di Windows, Vista e 7, questo aspetto sta diventando sempre più marcato: è facile vedere schermate che parlano di "operazioni potenzialmente dannose", che richiedono l'autorizzazione dell'utente. Questa autorizzazione significa dare il permesso di usare il computer come un utente root.


1. Dopo il primo, che non ci interessa, i caratteri vanno raggruppati di tre in tre (tre per il proprietario, tre per il gruppo, e tre per gli altri); se il file è completamente accessibile a tutti, i permessi saranno rwx rwx rwx: ognuno dei tre raggruppamenti conriene una r (read, permesso di lettura), una w (write, permesso di scrittura) ed una x (execute, permesso di esecuzione, che non tratterò in questo articolo). Se il file è completamente accessibile al proprietario, ma vietato agli altri, i suoi permessi saranno rwx --- ---: il primo raggruppamento (quello del proprietario) possiede tutte le lettere, gli altri due (gruppo e altri) nessuna. Tipicamente i files si trovano nella forma rw- rw- r--: accesso in lettura e scrittura per utente e gruppo, ed in sola lettura per gli altri.

Terminali virtuali

Il discorso sui terminali virtuali lo faccio solo per pura curiosità: non è nulla che sia in qualche modo utile all'utente neofita.

I terminali virtuali sono la più vistosa traccia della tradizione made in Unix di collegare centinaia di terminali ad un unico mainframe. Questo modo di usare il computer è decisamente inusuale per i nostri computer di casa; tuttavia chi volesse provare l'ebbrezza di controllare il proprio sistema Linux come se fosse collegato con un terminale... può farlo, utilizzando le combinazioni di tasti Ctrl+Alt+F1, Ctrl+Alt+F2, e così via fino ad F7, che solitamente contiene l'interfaccia grafica.

In questo modo si scopre che ad ogni tasto funzione (F1, F2, F3, ..., F7) corrisponde un terminale virtuale, ovvero un canale di collegamento rigorosamente testuale con il sistema; il risultato che si ottiene è lo stesso che si otterrebbe collegando al proprio PC 7 terminali reali.

  1. Introduzione, storia e filosofia
  2. Un sistema per molti utenti
  3. Kernel e Shell: il sistema invisible
  4. Il Filesystem
  5. Distribuzioni
  6. Tips&Tricks