Scrivo questo piccolo promemoria sotto consiglio di un nostro lettore, sperando possa tornare utile.
Non è raro che, navigando nel filesystem di Linux, ci si ritrovi davanti cartelle per cui viene spontaneo chiedersi “E cos’è questa roba?” . Magari, sapendo qualcosa in più, questa domanda potrebbe anche non porsi più. Per facilitare ulteriormente le cose per ogni directory di Linux, ove possibile, specificherò la rispettiva directory rappresentata sotto Windows (o qualcosa di molto simile), così da aiutare ancora di più chi ha deciso di fare il “grande passo”.
.Innanzitutto, l’organizzazione del filesystem di Linux
è gerarchica: tutto inizia da una singola directory, non esiste distinzione tra hardware e software (le
periferiche hardware, in Linux, vengono sì rappresentate come dei files speciali, ma sono pur sempre files), e qualsiasi parte del nostro sistema è figlia della directory radice. In parole povere, tutto
inizia dalla directory root e tutto termina con essa. :)
/ (directory root)
|_ /home
|_ /usr
|_ /lib
|_ /etc
|_ /tmp
|_ /var
|_ /boot
|_ /dev
|_ /mnt
|_ /proc
|_ /opt
Directory / : la directory radice.
La root directory ( / ) è la directory delle directories : in / potrete trovarvi praticamente tutto, navigare in / significherebbe esplorare qualsiasi parte del sistema. Nella directory / troverete altre directories di sistema, ad esempio /usr, o ancora /lib, o ancora /proc… andando avanti nell’utilizzo del vostro sistema operativo, noterete che quasi nessuna applicazione crea altre cartelle direttamente in /: leggendo ancora, capirete dove vanno a finire i files che voi installate, e capirete che nulla viene copiato direttamente in / per una pura e semplice questione d’ordine. La directory / è accessibile digitando cd / da terminale, oppure scrivendo / nella barra degli indirizzi del nostro file manager. Vediamo ora chi può fare cosa sulla root:
malefika@malefika-laptop:~$ stat /
File: `/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 806h/2054d Inode: 2 Links: 22
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-06-15 00:44:47.589780828 +0200
Modify: 2010-05-18 00:33:55.055206962 +0200
Change: 2010-05-18 00:33:55.055206962 +0200
Vediamo un po’ di tradurre cosa c’è scritto:le prime due linee ci dicono che il file si chiama /, è “grande” 4096 bytes (come ogni directory) e occupa 8 blocchi. E’ presente sul device che si chiama 806h/2054d (un modo come un altro per intendere il mio disco rigido), è collegata all’i-node 2 e ha in sè 20 directories (il numero di links meno due, si escludono dot – cartella corrente e dot dot – cartella padre).
I permessi associati ad essa sono d rwx r-x r-x : la d sta per directory, i primi trè rwx sono i permessi di lettura,scrittura ed esecuzione per l’utente proprietario, i successivi r-x sono i permessi di lettura ed esecuzione per il gruppo, e successivamente appaiono i permessi di lettura ed esecuzione per gli altri. Ciò ci dice che chiunque può leggere e scrivere su / (permessi di lettura ed esecuzione), ma soltanto il proprietario potrebbe eliminarla (permessi di scrittura). Il proprietario di / è l’utente con identificativo 0, quindi il root, e il gruppo proprietario è il gruppo con identificativo 0, il gruppo root.
Riassunto in trè parole, la directory / è alla base del sistema.
Parlando in termini Windowsiani, a livello più o meno logico / potrebbe essere il corrispettivo di C:\
Directory /home: le directories utente.
Ogni utente ha la sua directory personale (la cosiddetta home directory utente), e tutte le directories personali si trovano, per default, nella directory /home (che è modificabile o eliminabile soltanto dall’utente root). Se, ad esempio, il vostro nome utente è malefika, la vostra directory personale sarà /home/malefika.
In ogni directory personale saranno presenti le directories Documenti, Immagini, Desktop e via discorrendo di ciascun utente.
Ogni directory personale è di proprietà dell’utente: i permessi sulle directories personali variano di sistema in sistema, in generale però queste possono essere lette,modificate e cancellate dall’utente proprietario (e dall’utente root, che può tutto) e visualizzate in sola lettura da tutti gli altri. Discorso a parte va fatto per la directory utente del root, presente direttamente in /root, a cui solo e soltanto il root può accedere.
malefika@malefika-laptop:~$ stat /home
File: `/home'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 806h/2054d Inode: 131076 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-06-15 09:41:32.593622661 +0200
Modify: 2010-06-15 09:41:17.433622701 +0200
Change: 2010-06-15 09:41:17.433622701 +0200
malefika@malefika-laptop:~$ stat /home/malefika
File: `/home/malefika'
Size: 12288 Blocks: 24 IO Block: 4096 directory
Device: 806h/2054d Inode: 131487 Links: 59
Access: (0755/drwxr-xr-x) Uid: ( 1000/malefika) Gid: ( 1000/malefika)
Access: 2010-06-15 08:53:17.912589362 +0200
Modify: 2010-06-15 08:53:16.258834298 +0200
Change: 2010-06-15 08:53:16.258834298 +0200
malefika@malefika-laptop:~$ stat /root
File: `/root'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 806h/2054d Inode: 393222 Links: 11
Access: (0700/drwx------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-04-29 14:28:14.000000000 +0200
Modify: 2010-05-31 23:31:40.360829028 +0200
Change: 2010-05-31 23:31:40.360829028 +0200
Windowsianamente parlando, la directory /home è una sorta di C:\Documents And Settings o, seguendo l’architettura di Windovs Vista/Seven, C:\Users.
La directory /usr: il jolly.
Qui c’è da fare un discorso un po’ più articolato. Nella directory /usr ci sono – per semplificare molto il discorso – i files di sistema che possono essere condivisi in un sistema distribuito tramite NFS (tante macchine che usano lo stesso sistema operativo), e tutte le informazioni relative ai programmi installati sul sistema (nonchè i programmi stessi) :
* in /usr/bin potremo trovare i files binari (le applicazioni)
* in /usr/lib potremo trovare i files di libreria per il funzionamento dei programmi installati
* in /usr/games potremo trovare tutti i files necessari al funzionamento dei giochi
* in /usr/include potremo trovare gli header di libreria (per la compilazione delle applicazioni)
* in /usr/share troveremo, di solito, i dati relativi alle varie applicazioni, tra cui le pagine di manuale (una specie di C:\Programmi\File Comuni)
* in /usr/sbin troveremo, di solito, i programmi che permettono di agire sul sistema soltanto da superutente
* in /usr/src troveremo i sorgenti dei programmi (anche se, di norma, vi si trovano soltanto i sorgenti del kernel)
Per spiegarvi a cosa serve /usr/local, però, devo andare un po’ indietro nel tempo: prima non esistevano i pacchetti autoinstallanti per linux, e tutte le installazioni andavano eseguite con un processo di compilazione manuale. Aggiornare un pacchetto spesso era piuttosto pericoloso perchè si sarebbe potuti incorrere in errori: nella directory /usr/local (quasi identica a /usr) venivano spostati i pacchetti che non dovevano essere aggiornati tramite rete per nessuna ragione, nonchè tutto ciò che non poteva (nè doveva) essere condiviso con altre macchine: praticamente qualsiasi cosa dovesse essere installata soltanto localmente e non aggiornata.
Ah, piccolo appunto: tutti gli eseguibili presenti in /usr/bin, /usr/local/bin, o /usr/sbin sono eseguibili da terminale senza specificare il path assoluto.
La directory /usr (e tutte le sue sottodirectory) sono accessibili da tutti, ma modificabili soltanto dall’utente root.
In pratica, la directory /usr è qualcosa del tutto simile a C:\Windows.
Le directories /lib, /etc, /tmp, /var e /boot
La directory /lib contiene, in pratica, un’altra parte delle librerie di sistema.La directory /etc , invece, contiene tutte le impostazioni relative agli applicativi di sistema (ad esempio la configurazione del server X, la configurazione del desktop manager, la configurazione di rete e firewall, la configurazione del controllo energetico e via dicendo). La directory /tmp è quella atta a memorizzare tutti i files temporanei. Nella directory /var vengono scritte le informazioni generate dai programmi in esecuzione, come ad esempio informazioni su data di inizio e fine esecuzione, dump di crashes, logs e quant’altro (celeberrima è la directory /var/log). Nella directory /boot, invece, sono presenti tutti i files relativi all’avvio del sistema. Tutte le directories sovracitate, di default, sono visualizzabili da tutti e modificabili soltanto dal superutente. Un consiglio personale: non metteteci le mani a meno che non sappiate esattamente cosa state facendo, pena seri problemi (o addirittura l’inutilizzabilità) del sistema.
La directory /dev
Come vi ho detto all’inizio dell’articolo, in Linux anche le periferiche hardware vengono viste come files: files speciali, ma pur sempre files. Ed è proprio nella directory /dev che potremo trovare i files relativi a tutte le periferiche hardware che potrebbero essere presenti sul sistema. In /dev troveremo files quali tty – i terminali grafici, cdrom – il lettore cd, hdX – gli hard disks, audio – la/le periferica/e audio, sda – i dischi SCSI , ram – i ramdisks, input – le periferiche quali tastiere e mouse e tanti altri tipi di files ancora!
Celeberrimo è il /dev/null, un file speciale che rappresenta un…”dispositivo nullo” , e ha la particolarissima caratteristica di fare l’esatto contrario dell’operazione di memorizzazione: memorizzare qualsiasi cosa su /dev/null significa perdere quella cosa.
La directory è visualizzabile da tutti ma modificabile soltanto dall’utente root. Solito consiglio: non metteteci le mani.
La directory /mnt: le periferiche di memorizzazione
Quando volete visualizzare,ad esempio, il contenuto di una chiavetta USB, di un CD/DVD o ancora di un hard disk che non sia quello su cui è presente / …allora, sotto Linux, sarete costretti a montare la periferica. Questa è un’operazione che prima andava necessariamente fatta a mano con i privilegi di root, e, per ogni periferica montata, solitamente si creava una sottodirectory nella directory /mnt: /mnt era il posto da cui accedere a tutte le periferiche montate sul sistema (una sorta di Risorse Del Computer in Windows, vah, molto generalizzato). La maggior parte delle distribuzioni oggi permettono di utilizzare l’automount e di montare quindi automaticamente le periferiche connesse al sistema: sebbene la cartella /mnt sia comunque rimasta, queste distribuzioni – di norma – caricano le periferiche montate altrove (ad esempio Ubuntu le carica in /media).
La directory /proc
Ehehe…e io come vi spiego cos’è la directory proc senza scendere nel tecnico? :) Mettiamola così: ogni processo in esecuzione sulla nostra linuxbox occupa chiaramente delle risorse di sistema (periferiche di input e output, zone di memoria, files e quant’altro), e Linux, per gestire tali processi, usa una sorta di filesystem che,però, non prende spazio sulla memoria di massa ma è totalmente caricato in ram: questo filesystem si materializza proprio nella directory /proc. Infatti, navigando un po’ in quella cartella, scoprirete tante directory quanti sono i processi correntemente in esecuzione sul nostro sistema (alcuni nomi directory sono i nomi dei processi, altri possono esssere pid). Per visualizzare le informazioni contenute in ogni sottodirectory, dovrete essere utenti root. Solita raccomandazione: non toccate nulla lì dentro.
Ultima ma non di minore importanza: la directory /opt
La directory /opt, in teoria, serve per l’installazione dei “grandi programmi”, quelli che prevedevano molti files a loro carico e che non hanno bisogno soltanto di un file binario (o pochi altri files sparsi per il sistema) per funzionare, ma di moltissimi files: per preservare un certo ordine nel sistema, oltre che per evitare fastidiose e lunghe ricerche, si preferisce installare questi programmi di grandi dimensioni, con tutti i loro files annessi e connessi, in una sottodirectory dedicata di /opt. La directory /opt viene anche utilizzata come directory di installazione dei programmi non gestiti dal gestore di pacchetti della nostra distribuzione… o di norma dovrebbe essere così. Anche /opt può essere vista, in parte, un po’ come la directory C:\Programmi.
Queste sono le cose base da sapere per affacciarsi con convinzione al mondo Linux. Spero di essere stato chiaro, e per ogni ulteriore chiarimento potrete sempre contattarmi! :)
Articolo tratto da qui
Continua...