Dopo aver completato tutti i passi del programma di installazione, il sistema è già quasi completo: di default nell’installazione base è compreso almeno un Desktop comprendente tutte le parti dell’ambiente grafico e sono compresi anche una serie di applicativi che possono essere trovati sul menù principale. Risulta impossibile usare GNU Linux senza avere qualche base sistemistica e un po’ di manualità su file e cartelle come la gestione i diritti di lettura e scrittura su file e cartelle. Una prima nozione da aver sempre presente è che in tutti i sistemi GNU Linux la differenza tra maiuscole e minuscole è rilevante: nei comandi e nei file è rilevante la presenza di caratteri maiuscoli e bisogna scrivere sempre con attenzione i nomi.
Una nozione fondamentale che un utente di GNU Linux deve avere sempre presente è che tutto è un file cioè il Kernel Linux infatti vede e gestisce tutto come un file: le cartelle, le periferiche come le stampanti, memorie fisse e persino i processi in esecuzione sono interpretati come file che il FileSystem gestisce e amministra. A differenza di altri FileSystem, in GNU Linux le estensioni non sono rilevanti, spesso capiterà di trovare file con estensioni “strane” ad un utente non abituato a tale libertà: un esempio classico è il file sources.list che conterrà una lista di sorgenti come dice il nome e l’estensione: spesso infatti viene usata l’estensione per evidenziare se il file ha un contenuto specifico come liste o configurazioni. Esistono anche file senza estensione come il file fstab, per i sistemi basati su Unix e GNU Linux l’estensione di un file è solo una parte del nome. I file il cui nome inizia per . (punto) sono file nascosti, cioè tipicamente i file manager non vedono questi file a meno di comandi specifici, questi nomi vengono usati dai programmi per creare cartelle e file di configurazioni ma di non dare la possibilità all’utente di modificarli “per sbaglio”.
Lo standard per il file system usato in tutti i sistemi GNU Linux si chiama FSSTND, che impone delle direttive per l’organizzazione dell’albero delle directory nei sistemi: viene usato per la facilità del porting del software per GNU Linux e l’amministrare dei sistemi, dato che tutto si trova nel posto designato per qualsiasi distribuzione che usa questo stardard. Per essere precisi, non c’è nessuna autorità che impone di uniformarsi a questo schema, ma è molto raro trovare distribuzioni che non rispettano. L’albero delle directory completo è concepito in modo che possa essere diviso in parti più piccole, ciascuna sulla sua partizione o nel suo disco se necessario, per ottimizzare i dischi e ridurre le dimensioni delle partizioni. L’albero delle directory è stato strutturato in modo che funzioni bene in una rete di sistemi condivisi su dispositivi a sola lettura come DVD o in reteNFS. La struttura del filesystem si basa su una radice che viene chiamata root e viene sempre indicata con il carattere
/
questa cartella è specifica per ciascun sistema e rappresenta l’intero sistema: contiene tutti i file necessari per avviare il sistema e per portarlo ad uno stato tale da poter gestire tutte le altre memorie e tutti i dispositivi. Si può affermare, anche se in maniera un po’ superficiale, che la root sostituisce quello che nei sistemi MS Windows è il “Risorse del computer”, infatti in Linux non potete trovare i dischi (C,D,E, ecc..) ma si possono trovare le principali sottodirectory:
/bin
Contiene i programmi di sistema utilizzati sia dall’amministratore che dai normali utenti, come ad esempio: ls, cat, cp/boot
Contiene tutto quello che è necessario per eseguire il processo di boot del kernel (l’immagine vmlinux e la initrd), configurata in fase di installazione di GRUB/dev
Contiene i riferimenti a tutti i dispositivi e le periferiche (HarkDisk, CdRom, stampanti, rete, ecc…)/etc
Contiene i files di configurazione degli applicativi e i demoni presenti nel sistema/home
Contiene le home directory degli utenti, cioè le informazioni e i file di ogni utente/lib
Contiene le librerie necessarie al boot del sistema e all’esecuzione dei programmi/mnt
Inizialmente è vuota, come standard viene usata per effettuare il collegamento (mount) di tutte le unità di memoria presenti (HardDisk, cdrom, memorie usb, ecc.. ), talvolta è possibile trovare anche la cartella /media che tipicamente viene usata solo per i dispositivi rimovibili (CdRom, Floppy, USB Disk)/opt
Dovrebbe essere vuota inizialmente, in passato veniva usata per gli applicativi del sistema base, oggi viene usata da alcuni applicativi proprietari come google chrome oppure i programmi di AWS/proc
Contiene i riferimenti ai programmi in esecuzione (i processi in esecuzione vengono trattati come file)/root
La home directory dell’utente root/sbin
Contiene i programmi di sistema (system binaries) utilizzati dall’amministratore/srv
Contiene alcuni file di configurazione/sys
Contiene dei file di sistema/tmp
Cartella dei file temporanei (ogni volta che si spegne il pc questa cartella viene svuotata)/usr
Contiene le applicazioni (non di sistema) installate nel sistema/var
Contiene vari files di sistema come i log e le carelle della posta
Nei sistemi Unix e GNU Linux esistono tre tipi di diritti su un file: scrittura, lettura ed esecuzione rispettivamente identificati con la lettera r, w e x. Ogni file, quindi ogni cosa nel sistema, appartiene all’utente che ha creato quel file che ha sempre i tutti i diritti su quel file. Per ottenere i diritti su un file basta eseguire il comando sulla shell:
$ ls -la
che elenca i diritti in una schermata simile a questa:
drwxr-xr-x 2 alnao alnao 4096 2 feb 14:09 DIR1 -rw------- 1 alnao alnao 2615 2 feb 16:28 file1 -rw-r--r-- 1 alnao alnao 1162966 2 feb 19:50 file2 -rwxr-xr-x 1 alnao alnao 1162966 2 feb 19:50 file3
la prima riga descrive una directory, la si può riconoscere dal fatto che la prima lettera è una d, i successivi tre caratteri sono indicati i diritti sull’utente che ha creato quel file, il secondo gruppo di tre si riferisce agli utenti dello stesso gruppo dell’utente creatore del file, mentre l’ultima tripletta descrive i diritti di tutti gli altri utenti. Se è presente la lettera significa che il diritto è attivo mentre se c’è il trattino vuol dire che il diritto che dovrebbe essere presente non è attivo. Da notare che l’utente root root ha sempre tutte le autorizzazioni quindi riuscirà sempre a leggere e a scrivere su tutti i file e su tutte le cartelle. Per cambiare i diritti su un file si può usare il comando chmod
. Da notare che il diritto x sostituisce l’estensione su altri sistemi: le estensioni non hanno significato e per capire se un file è eseguibile o meno bisogna osservare questo diritto in ogni singolo file.
Alcune delle configurazioni base devono essere eseguite da riga di comando che in informatica viene comunemente chiamata shell e, più in particolare, nei sistemi GNU Linux è disponibile il tipo chiamato bash, non bisogna fare confusione: con shell si intende una riga di comando mentre bash è l’interprete dei comandi, in questo manuale faremo sempre riferimento a bash e non verranno introdotte altre tipi di shell anche se in altri manuali potete trovare guide più complete di bash e di altri tipi di shell per GNU Linux. Tipicamente nelle architetture basate sul KernerLinux con la bash sono disponibili 8 “canali” detti anche tty (abbreviazione di TeleTYpewriter), nei sistemi basati su GNU Linux il primo canale è usato dal KernelLinux e in questo canale compaiono i messaggi del sistema mentre il server grafico tipicamente si trova nel settimo canale, dalla versione 10 di Debian il server grafico viene caricato sempre dal secondo canale mentre nel primo c’è una seconda versione del server grafico se si vuole utilizzare la funzionalità multiutente; è possibile passare da un canale ad un altro con la sequenza di tasti ALT + CTRL + F1 dove l’F1 è il numero del canale (ovviamente per il settimo canale si può usare F7).
Una delle esigenze primarie di ogni utente è quello di poter accedere ai propri dati che sono salvati nei vari dischi, gli utenti di altri sistemi operativi sono abituati a identificare le memorie fisiche con delle lettere come C, D, E, ecc… mentre nei sistemi GNU Linux la gestione delle partizioni e delle periferiche di memoria è completamente diversa: la gestione viene chiamata mounting (in Italiano spesso viene tradotto con montaggio), nome che deriva dal comando mount
che viene utilizzato per eseguire le configurazioni, infatti le memorie vengono viste dal Kernel Linux come un normale file dentro alla cartella /dev/
e, attraverso il comando mount, si possono collegare ad una cartella per permettere l’accesso al contenuto della memoria. I file che si trovano dentro alla cartella dev non rappresentano tutta la memoria fisica ma rappresentano una partizione: se in una memoria ci sono più partizioni significa che sono presenti più file che devono essere montati separatamente. Tipicamente questi file hanno il nome del tipo hda1
, sda1
, sda2
, sdb1
dove la prima lettera del nome rappresenta il tipo (per esempio h=Eide, s=Sata), la seconda lettera è sempre d che significa DISK mentre la terza lettera è un incrementale se ci sono più dispositivi dello stesso tipo (se ci sono due HardDisk il primo sarà “a” mentre il secondo sarà “b”), il numero finale rappresenta il numero della partizione all’interno della stessa memoria fisica.
Per poter recuperare l’elenco delle partizioni e la struttura delle memorie si può usare il programma gparted dal desktop da installare oppure con il comando
# fdisk -l
Questi programmi presentano l’elenco di tutte le partizioni e, se possibile, anche il tipo, con gparted è anche possibile modificare le partizione e formattarle. Nei desktop recenti, il mount risulta automatico, per esempio con un programma come Dolphin, l’elenco dei dispositivi sono elencati nelle finestre divisi per memorie fissi e i dispositivi mobili come le chiavette USB. Per poter eseguire il mount manualmente, bisogna disporre di una cartella vuota che sarà la destinazione dell’operazione di montaggio, come default viene usata una sotto-cartella di /mnt . Per esempio si può creare una cartella a mano da un file manager oppure da riga di comando con le istruzioni:
# mkdir /mnt/Dati # chmod 666 /mnt/Dati
da notare il comando chmod assegna a tutti gli utenti la possibilità di accedere a tale cartella, questo è indispensabile altrimenti solo l’utente root potrebbe accedere alla memoria montata. Il comando mount da riga di comandi prevede la sintassi:
# mount -t auto /dev/sda2 /mnt/Dati
con questa istruzione viene montata la partizione hda2 sulla cartella Dati, come parametro mount ha bisogno anche di sapere il tipo di Filesystem della partizione (Fat32, Ext3, NTFS, ecc..) ma esiste anche il parametro “auto” che ci semplifica la vita lasciando al sistema il compito di selezionare quello corretto. Il problema del comando mount è che, allo spegnimento o riavvio del sistema, il montaggio NON verrà rieseguito automaticamente, il kernel mette a disposizione un file di configurazione per rendere definitive le operazioni di mount che vengono eseguite al primo accesso:
/etc/fstab
questo è un file storico dei sistemi GNU Linux e si trova sempre nello stesso posto fin delle prime versioni del sistema, da notare che questo file è sprovvisto di estensione e si trova nella cartella /etc, per modificare questo file da desktop si può avviare come utente root un editor con:
# gedit /etc/fstab
e si può vedere il contenuto del file che all’apparenza complicato ma basta sapere che ad ogni riga corrisponde una memoria montata, nel file infatti basta aggiungere una riga per ogni partizione, per esempio:
/dev/sdb3 /mnt/Dati ext4 user,suid,dev,rw,exec 0 0
dove nella riga sono elencati in ordine: il punto di mount (sorgente e destinazione), il tipo di partizione anche se è sconsigliato l’uso del comando auto e i vari parametri della partizione, nel nostro esempio umask=000 oppure rw indicano che la partizione è in scrittura e lettura. Per le partizioni di formato GNU Linux come ext non serve indicare l’umask.
Per le chiavette USB o memorie rimovibili si configura la riga:
/dev/sdd1 /mnt/Usb auto user,suid,dev,exec,umask=000,rw,noauto 0 0
con il parametro noauto si indica che il mount non deve essere eseguito automaticamente all’avvio del sistema ma deve essere caricato manualmente quando la memoria esterna viene inserita. Per rendere effettive le modifiche del file fstab bisogna riavviare il sistema. Per definire le partizione nel file di configurazione è possibile mappare il riferimento dentro la cartella dev oppure è possibile usare il riferimento UUID, cioè il riferimento assoluto ID che il sistema assegna ad ogni partizione, per visualizzare i riferimenti nel proprio sistema si può usare il comando:
# blkid
e poi è possibile modificare il file fstab con la riga:
UUID=1234-5678 /mnt/Dati tipo parametri 0 0
questo metodo è consigliato rispetto all’uso del DEV in quanto alcuni sistemi posso cambiare riferimenti alla risorse ogni riavvio del sistema. Nelle ultime versioni di Debian questa operazione viene eseguita durante la fase di installazione e, una volta terminata l’installazione del sistema base, è possibile vedere il file già ben configurato con tutti i parametri. Da notare che i lettori DVD/CD vengono montate nella cartella media per separare le memorie fisse da quelle rimovibili tuttavia questo non è uno standard ma solo un dettaglio presente in Debian.
Modificare lo schema delle partizioni è una operazione complessa alto rischio di perdita di dati; la mia esperienza mi ha portato a non modificare mai le partizioni dei dischi se su questo è installato il sistema operativo o se ci sono dati importanti, quando si deve modificare una qualsiasi partizione contenente dati, conviene sempre eseguire una copia di backup di tutte le partizioni comprese quelle non modificate. Le cose si complicano ancora di più quando nello stesso disco ci sono più partizioni di tipo diverso come quelle di MsWindows (con filesystem di tipo NTFS o FAT32) e partizioni GNU Linux (con filesystem di tipo le Ext3 o Ext4), questo perché i programmi di partizionamento di un sistema operativo difficilmente trattano al meglio le partizioni degli altri sistemi con l’ovvio rischio di perdere partizioni che un programma non riconosce, per evitare questi contrasti fra sistemi operativi si possono usare programmi specializzati che cercano di gestire al meglio le partizioni di tutti i tipi, su Debian è disponibile il programma GParted per permette di gestire e modificare la struttura delle partizioni dei dischi.