Decalogo

Da Linux@P2P Forum Italia.

In questa pagina cercheremo di raccogliere in 10 punti le principali informazioni che un utente medio di Windows deve assolutamente conoscere per rendere il meno possibile traumatico l'impatto con GNU/Linux.

Indice

Utente ed Amministratore, due identità distinte

Molti sistemi operativi, tra cui tutti quelli della famiglia Microsoft Windows, sono soliti identificare l'utilizzatore del PC come un solo, unico, singolo utente che ha pieno controllo sull'intero sistema. Benché in un primo momento renda (apparentemente) più semplice la vita all'utente che si avvicina per la prima volta ad un computer, questo approccio è al contempo la debolezza strutturale principe di questi sistemi, rendendoli particolarmente vulnerabili ad ogni sorta di malware e virus di ogni specie.

In GNU/Linux (ed in generale in tutti i sistemi derivati da UNIX) invece, un'installazione tipica prevede la creazione iniziale di (almeno) due utenti:

In generale comunque, un utente non privilegiato non può modificare nessun file eseguibile, di sistema o di configurazione globale e non può accedere in modo diretto ad alcune periferiche: ad esempio, non può modificare le partizioni presenti sul disco. Questa filosofia garantisce una sicurezza ed un'affidabilità di gran lunga superiore a quella monoutente, rendendo il sistema praticamente immune da virus, trojan, spyware, dialer ed ogni sorta di infezione (cfr. la sezione su gli antivirus, su questa stessa pagina).

Nella configurazione standard, all'avvio della macchina, ogni utente che vuole accedere al computer deve prima identificarsi tramite nome utente e parola d'ordine (più comunemente conosciuti come username e password). Questa fase di autenticazione viene solitamente chiamata procedura di login.

ALT! Identificarsi!

Proprio a causa dell'importanza della distinzione dei ruoli, è necessario che un sistema UNIX sappia chi ha davanti, in modo da permettere l'utilizzo della macchina in modo corretto e ordinato. L'identificazione avviene normalmente attraverso l'inserimento di un username ed una password.

In questo modo, il sistema riesce a stabilire i limiti da applicare all'utente (che sono alla base della sicurezza di UNIX) impedendogli, ad esempio, di danneggiare i dati degli altri utenti di quella macchina, se non il sistema stesso.

Ogni file creato dall'utente sarà di sua proprietà, che gli sarà riconosciuta dal sistema (vedi più avanti Il sistema arroccato: i permessi).

Tuttavia, per i PC destinati ad uso workstation o domestici, è possibile impostare il login automatico di un utente predefinito, in modo da risparmiare all'utente il fastidio di dover inserire ogni volta nome utente e password, procedura inutile in un ambiente monoutente o fidato. Naturalmente è fortemente sconsigliato impostare il login automatico dell'utente root, perché così facendo si minano le basi su cui poggia tutta la sicurezza del sistema.

A:, C: e D: non esistono

Nel sistema GNU/Linux non esistono i nomi delle partizioni.

Per capire cosa questo significhi bisogna prima illustrare concetti quali volume, partizione e file system.

Un file system è un certo insieme di regole e metodi per organizzare e posizionare, dal punto di vista fisico, file e cartelle in modo che siano facili e veloci da trovare.

Non sono soltanto gli hard disk a possedere un file system: ne sono provvisti anche CD, DVD, dischi Blu-Ray, floppy disk, memorie flash, e, più in generale, qualsiasi dispositivo in grado di contenere dei dati.

Esistono vari file system: NTFS (specifico di Windows), FAT32 (tipico di Windows), Ext2, Ext3, ReiserFS (tipici di Linux e BSD), ISO 9660 (usato nei CD e DVD), UDF, XFS, ZFS, e molti altri. Di tutti questi, Windows riesce ad usare solo NTFS e FAT; GNU/Linux invece tutti fra quelli appena elencati più molti altri.

L'approccio Windows

Si prenda ora ad esempio la tipica installazione di Windows. Solitamente, durante l'installazione del sistema, spesso si separa l'hard disk in due (o più, a seconda delle esigenze) "parti" dette partizioni (le famose "C:" e "D:") in modo da posizionare Windows nella prima di esse. Ecco che entrano in gioco i concetti appena evidenziati:

Inspiegabilmente, Windows "vedrà" e mostrerà due (o più, in caso ci siano più partizioni) hard disk separati, come fossero presenti più volumi, nonostante fisicamente ce ne sia solo uno!

L'approccio Linux

Su GNU/Linux la situazione è nettamente differente.

Il concetto di drive A, drive C, drive D sparisce a favore del concetto di punto di mount.

Punto di mount significa: data una partizione e data una certa cartella (d'ora in poi "directory") posta in un certa posizione all'interno del file system, riversare il contenuto di quella partizione in quella specifica cartella. Questa operazione prende il nome di aggancio di una partizione ad una directory, e quella directory diverrà il punto di mount per quella partizione.

Fermatevi, rileggete e rifletteteci un attimo: è più semplice di quello che sembra.

La struttura delle directory è ad albero: c'è una radice, detta root (letteralmente, "radice" in Inglese), da cui discendono tutte le directory ed in file in esse contenuti. La gerarchia tipica è la seguente:


directory descrizione
/ "root", la radice di tutte le directory
/bin
file binari, ovvero, programmi eseguibili
/boot
file necessari al corretto avvio ("boot") del computer
/etc
file di configurazione globale
/home
directory contenente gli "spazi" personali degli utenti
/home/alice
"home" ovvero lo spazio personale dell'utente alice
/home/biagio
home dell'utente biagio
/home/carla
home dell'utente carla
/home/daniele
home dell'utente daniele
/media
directory che contiene i punti di mount delle varie periferiche
/media/floppy
punto di mount del floppy disk
/media/hda1
punto di mount della prima partizione del primo hard disk
/media/hda2
punto di mount della seconda partizione del primo hard disk
/media/cdrom
punto di mount del CD / DVD
/root
home dell'utente root
/usr
directory che contiene la maggioranza delle applicazioni e delle librerie disponibili per tutti gli utenti
/var
file di log ed altro

Ma quante radici!

Con il termine root ci si può riferire a ben tre cose diverse:

Ovviamente quindi, parlando di root, il suo significato cambia in relazione al contesto.

Perché tanta frammentazione?

La risposta è molto semplice: flessibilità.

Con il file system Linux infatti è possibile compiere operazioni totalmente impensabili con Windows, come, giusto per fare un esempio e per mettervi l'acquolina in bocca, la separazione totale fra sistema operativo e dati utente.

Cerchiamo di fare chiarezza; alzino la mano coloro ai quali è capitato almeno una volta di dover formattare. Ora alzino la mano coloro che, dopo aver formattato, siano stati in grado di recuperare ogni singolo file, ogni singola impostazione, ogni singola preferenza esattamente come l'avevano lasciata. Ci sono molte ma molte meno mani alzate ora... Bene: con una tale separazione di directory è possibile. Basta agganciare la directory /home su di una partizione separata ed il resto del sistema su di un'altra, è ovvio! In questo modo, pure che decidiate di formattare, dovrete cancellare solo la partizione col resto del sistema, senza toccare minimamente i dati e le impostazioni già salvate. Comincia ad avere senso tutto ciò?

Ovviamente, non finisce qui, ma per un neofita tutto ciò è già più che sufficiente...

Approfondimenti

Il sistema arroccato: i permessi

Gestione dei permessi attraverso l'interfaccia grafica (Konqueror File Manager)
In un sistema UNIX, qualsiasi file o directory è caratterizzato da un proprietario, un gruppo di appartenenza e un insieme di etichette che indicano al sistema quali sono le operazioni che il proprietario, i membri del gruppo o gli altri utenti sono autorizzati ad eseguire su un determinato file.

Consideriamo ad esempio questo gruppo di file (il layout è lo stesso di quello dell'output su terminale del comando ls, una versione più evoluta di quello che era il comando dir dell'MS-DOS):

 drwxr-xr-x  2 tizio ufficio      80 2006-01-24 14:20 sottodirectory
 -rw-r--r--  1 tizio ufficio    3655 2006-01-07 18:51 questo.txt
 -rw-rw-r--  3 tizio ufficio    5482 2005-11-15 12:41 quello.ods
 -rw-r--r--  4 caio  ufficio    1224 2005-06-27 18:15 quell'altro.jpeg
 -rwxr-x---  3 root  ufficio     458 2006-04-12 10:38 eseguibile

Si considerino, per il momento, solo le voci in grassetto. A sinistra troviamo 10 byte, alcuni occupati da una lettera, altri con un - (segno di sottrazione). Questi byte indicano i permessi vigenti su quei file. Nelle due colonne centrali, troviamo i nomi del proprietario (in rosso) e del gruppo (in blu) a cui appartiene il file. Nell'ultima colonna a destra, in nero, c'è il nome del file.

Il primo byte a sinistra indica il tipo di file elencato: il segno di sottrazione (-) indica che si tratta di un file semplice, d di una directory, l di un collegamento simbolico, etc...

Gli altri 9 byte vanno letti a gruppi di 3, ognuno dei quali ricalca la sequenza rwx. Il primo gruppo (in rosso) indica i permessi che ha il proprietario su quel file, il secondo (in blu) quelli dei membri del gruppo, il terzo (in verde) quelli di tutti gli altri utenti.

Se presente, la lettera r indica:

Se presente, la lettera w indica:

Se presente, la lettera x, infine, associa il permesso di esecuzione al file, analogamente al ruolo svolto dall'estensione .exe nei sistemi DOS/Windows. In GNU/Linux, non ha alcuna importanza quale sia l'estensione del file, la presenza di questo flag è condizione necessaria e sufficiente per l'identificazione di codice eseguibile. Nel caso in cui l'oggetto sia una directory, indica che è possibile l'attraversamento della stessa.

Nota: talvolta è possibile trovare la lettera s al posto di x. In questo caso, significa che il file è eseguibile e verrà lanciato con gli stessi diritti del proprietario (o del gruppo).

Approfondimenti

Si scrive solo a casa propria

Una volta eseguito il login come utenti, l'unica directory alla quale si ha accesso in scrittura è la propria home (generalmente /home/<nomeutente>, ad esempio /home/mario). In questo modo si ha la possibilità di utilizzare appieno di ogni funzionalità del computer, non essendo tuttavia consentito modificare nessun file di sistema né di altri utenti, a meno che non sia l'amministratore a disporre diversamente, ma è una pratica decisamente sconsigliata.

Questo tipo di approccio apporta due enormi vantaggi:

Antivirus e Firewall

Antivirus

I sistemi UNIX non hanno bisogno di alcun software antivirus poiché le restrizioni sui permessi degli utenti imposte dal sistema e dall'amministratore, insieme con la rapidità con cui vengono corrette le falle di sicurezza, garantiscono una difesa talmente efficiente da far scendere praticamente a zero ogni probabilità che un attacco virale possa avere luogo.

Non solo: ad oggi i virus realizzati specificamente per Linux si contano sulla punta delle dita. Quelli che hanno potuto far danni, ancora meno. Ad oggi non si è a conoscenza di nessun virus in grado di compromettere una macchina Linux.

GNU/Linux e i virus, i falsi luoghi comuni

Esistono alcuni falsi luoghi comuni sull'invulnerabilità ai virus dei sistemi UNIX, come ad esempio "non ci sono virus perché è poco diffuso". In rete si trovano diversi articoli che fanno chiarezza su questi punti e spiegano perché, nonostante GNU/Linux sia tutt'altro che poco diffuso e sia uno dei bersagli preferiti dai cracker, resti sempre un sistema sicuro:

Firewall

Il kernel Linux include già un firewall, Netfilter, molto apprezzato per le sue:

Il principale strumento per la configurazione di Netfilter è il comando iptables, attraverso il quale è possibile impostare le regole delle catene, in modo da realizzare un firewall adeguato alle proprie esigenze.

Esistono anche diversi strumenti grafici per la configurazione di Netfilter da parte di utenti poco esperti, ma in certe circostanze sono comodi anche per un esperto. Tra questi ricordiamo GuardDog, Firestarter ed il semplice, ma non meno efficace gufw.

Link correlati

Niente .exe per le installazioni: i pacchetti

La gestione del software installato in GNU/Linux viene gestito attraverso i pacchetti, che costituiscono un archivio compresso contenente i files dell'applicazione, informazioni sulle dipendenze e degli script per la configurazione del sistema da eseguire prima e dopo l'installazione e la rimozione del pacchetto.

L'utilizzo dei pacchetti consente di gestire il software installato nel sistema in modo molto efficiente ed ordinato e rende gli aggiornamenti molto rapidi.

Tutte le distribuzioni più diffuse mettono a disposizione una grande scelta di software già sotto forma di pacchetti, o nel CD/DVD di installazione della distribuzione, oppure nei repositories (sing. repository), degli archivi in rete accessibili con una normale connessione ad Internet. I repositories vengono utilizzati sia per prelevare gli aggiornamenti della distribuzione (sempre sotto forma di pacchetti), sia per l'installazione di nuovo software.

A differenza di Windows, quindi, non c'è la necessità di scaricare il software dal sito ufficiale, ma spesso basta una veloce ricerca attraverso il programma di gestione dei pacchetti per trovare il software cercato. Rimane tuttavia la possibilità di installare del software dal repository dello sviluppatore (PPA), che consente di ottenere le versioni più aggiornate e non ancora rilasciate sui repository ufficiali o che corregono tempestivamente dei bug; oppure si può compilarlo direttamente dai sorgenti (e pacchettizzarlo con l'utility checkinstall), oppure ricorrendo ad uno script eseguibile, analogamente a Windows. Quest'ultima opzione è spesso scelta da software commerciale e videogiochi, in quanto indipendente dalla tipologia di pacchetti adottato dalla distribuzione. In questo caso, l'installazione viene effettuata in una directory separata da quella degli altri programmi (generalmente /opt), per mantenere il sistema ordinato, e le eventuali dipendenze da librerie di sistema vanno soddisfatte manualmente.

Le dipendenze

Molto spesso le applicazioni si appoggiano, per il loro funzionamento a programmi o librerie di sistema esterne, a loro volta necessarie per il funzionamento di altri programmi, contenuti in altri pacchetti. Il sistema di gestione del software deve quindi garantire che, nel momento in cui venga installato un pacchetto, trovi già nel sistema tutti i files esterni di cui ha bisogno (o, in gergo, dipende) o, eventualmente, si occupi di installarli automaticamente. Questo costituisce il sistema delle dipendenze.

Windows utilizza un sistema simile, ma meno efficiente, perchè ogni produttore di software tende a sviluppare delle librerie (DLL) proprietarie che possono perfino (anche se raramente) creare conflitti con quelle di sistema, ma comunque finiscono con l'accumularsi nel sistema anche perchè non sempre la disinstallazione le rimuove del tutto. Da qui gli innumerevoli tools di pulizia che in Linux non servono.

In linux invece il sistema di gestione dei pacchetti è in grado di verificare quali librerie non sono più necessarie, perchè non richieste da alcuna dipendenza, e di segnalarne la rimuovibilità.

Approfondimenti

Le tante facce di GNU/Linux: gestori delle finestre e ambienti desktop

L'architettura del sistema grafico di GNU/Linux (e più in generale dei sistemi UNIX) è basata su una struttura modulare (client-server), a differenza di quella di Windows, che costituisce un tutt'uno con il sistema operativo.

Questa tecnologia ha permesso la realizzazione di diverse interfacce utente che vanno dai semplici window manager, che si occupano solo di fornire un supporto di programmi che girano sotto forma di finestre, agli evolutissimi ambienti desktop in grado di fornire molte funzioni avanzate (ad esempio la gestione dello storico degli appunti).

Approfondimenti

L'importanza del terminale

Konsole - il terminale predefinito di KDE
Il terminale (o shell) costituisce il migliore strumento che un'utente possiede per comunicare con il sistema. Se mai vi capiterà di dover chiedere aiuto per la risoluzione di un problema con il vostro sistema, è molto probabile che vi verrà richiesto di utilizzare il terminale per raccogliere maggiori informazioni sul problema stesso, oppure per intervenire in maniera più profonda di quanto si possa fare normalmente via interfaccia grafica.

Per questo motivo, è indispensabile che, una volta effettuata l'installazione della vostra distribuzione nuova fiammante, impariate immediatamente da dove si lancia un terminale, in modo da poter intervenire agevolmente in caso di problemi.

Giusto per intuirne l'importanza, nel malaugurato caso che il server grafico X non parta o presenti dei problemi, il terminale rimane l'unico vero strumento utile attraverso il quale sia possibile accedere al sistema per tentare di rimettere a posto le cose.

Nota – la necessità di utilizzare il terminale spesso viene considerata come un limite del sistema operativo GNU/Linux, poiché meno intuitiva da utilizzare rispetto ad un'interfaccia grafica. Benché possa risultare ostica, soprattutto per chi è stato abituato al punta e clicca di Windows, la riga di comando è indispensabile sia per la sua affidabilità e possibilità di controllo, sia per la sua flessibilità. Di questo fatto sembra aver preso coscienza anche Microsoft, che doterà di una shell le prossime versioni di Windows.

Per maggiori informazioni sull'utilizzo del terminale si veda l'introduzione all'uso della shell.

Maiuscole e minuscole

I sistemi UNIX sono case sensitive, distinguono cioè lettere maiuscole da quelle minuscole. Ad esempio, i file pippo, Pippo, e PIPPO sono tre file distinti, e possono coesistere nella stessa directory.

Questa costituisce una differenza significativa rispetto alla gestione dei nomi in Windows, che permette di usare lettere maiuscole nel nome, ma considera pippo, Pippo e PIPPO lo stesso file.

Particolare attenzione, quindi, deve essere prestata anche per i comandi lanciati da terminale.

Approfondimenti

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
CollectionTricks
Siti amici
Strumenti