Guida Il file system Unix/Linux

TheWorm91

Helper
31 Marzo 2022
509
56
248
417
Ultima modifica:
linux-dir-structure.png



1    Introduzione

In questa breve "guida" vedremo come è organizzato il File System nei sistemi unix e quali sono le cartelle che lo compongono, l'intenzione è di dare una spiegazione a grandi linee per far capire come è strutturato, soprattutto per gli utenti windows che non hanno mai usato sistemi operativi unix like.

2    Il File System

Il filesystem rappresenta la modalità con cui I file e le cartelle sono organizzate all’interno del disco fisico.
In Linux ed Unix tutto è un file. Le cartelle sono file, i file sono file, ed i dispositivi sono file.
I dispositivi sono di solito chiamati anche nodi; comunque, sono sempre file.
I sistemi Linux ed Unix sono organizzati in una struttura gerarchica ad albero, chiamata FHS (Filesystem Hiercarchy Standard).

Il livello più alto della strutttura dei file è la / (root) o cartella radice (volendo fare un paragone con windows corrisponderebbe a C: \) .
Tutti gli altri file e cartelle esistono sotto la cartella radice.
Per esempio, /home/pippo/test.txt mostra il percorso corretto per il file test.txt che esiste nella cartella pippo, che è sotto la cartella home, che a sua volta è sotto la cartella radice (/).

Sotto la root sono presenti altre directory di fondamentale importanza per il funzionamento e la gestione del sistema operativo.

3    Le cartelle del File System

Partiamo dalla cartella /bin:
Questa directory, il cui nome è l'abbreviazione di binary, contiene tutti i comandi essenziali per usare il sistema operativo come ls, cp, mv, cd, mkdir, cat, rm e tanti altri.
Come detto prima in linux tutto è un file e anche i comandi non fanno eccezione, se infatti visualizziamo il contenuto della cartella con il comando ls /bin vedremo dei files che si chiamano appunto con lo stesso nome dei comandi appena citati (compreso lo stesso ls appena utilizzato).
I files contenuti in /bin possono essere eseguiti da tutti gli utenti del sistema, anche da chi non ha privilegi amministrativi.

/sbin:
/sbin sta per "system binaries" e include appunto i files binari essenziali per le operazioni di amministrazione e configurazione del sistema.
A differenza di /bin i files contenuti qui sono eseguiti solamente da utenti con privilegi amministrativi o dall'utente root.
Tipici files contenuti in /sbin sono ifconfig, fdisk, init, e shutdown

/boot:
Questa directory contiene tutti i file necessari per eseguire il processo di boot del sistema operativo e le immagini del kernel.
Nella sottodirectory /grub si trova il file di configurazione dei parametri di avvio del bootloader GRUB.

/dev:
In /dev si trovano i files delle varie periferiche hardware (dev = devices).
L'hard disk principale del pc solitamente è individuato dal file /dev/sda e le sue partizioni interne attraverso i file /dev/sda1, /dev/sda2, ecc...
Se per esempio inseriamo una penna usb o colleghiamo una webcam verrà creato il relativo file necessario per far funzionare il dispositivo.
Da questa directory tuttavia non è possibile per accedere direttamente alle periferiche, per fare questo si usa la cartella /media.

/etc:
Contiene i file di configurazione dell'intero sistema, compresi gli utenti di sistema e le relative password (etc/passwd), qui si trova il file sudoers che contiene i nomi degli utenti che possono diventare temporaneamente root.

Le sotto-directory principali sono:
  • /etc/apt: file di configurazione dei repository, in particolare /etc/apt/sources.list;
  • /etc/grub.d: file per personalizzare la sequenza di boot del sistema;
  • /etc/samba: contiene /etc/samba/smb.conf, file di configurazione per la condivisione dati tramite Samba.

/home:
Contiene le cartelle personali degli utenti del sistema.
Ci saranno tante sottocartelle tanti quanti saranno gli utenti e in ognuna di esse sono salvati dati e programmi con relative impostazioni dei vari profili utente.

/lib:
Contenitore dei file di libreria (library) necessari per i programmi di uso generale.

/media:
/media è la folder destinata al montaggio dei dispositivi rimovibili, ad esempio quando viene collegato al computer un Hard Disk esterno, sotto /media verrà creata automaticamente una cartella dalla quale è possibile esplorarne il contenuto.

/mnt:
Secondo il vecchio standard del passato (quando ancora si usavano i floppy disk) sarebbe la directory destinata al montaggio dei dispositivi esterni, ad oggi /media l'ha praticamente sostituita, tuttavia può essere utilizzata per montaggi manuali.

/opt:
Contiene programmi o software di terze parti che non sono presenti nelle repository, le applicazioni saranno salvato sotto /opt/bin mentre eventuali librerie sotto /opt/lib.

/proc:
Contiene le informazioni relative al sistema, come un file system virtuale creato dal kernel dinamicamente istante per istante, in memoria e non sul disco.

/root:
È la home folder dell'utente root, vi si puo' accedere solo con privilegi amministrativi

/run:
È usata da processi di sistema per salvare temporaneamente dati durante la loro esecuzione.

/tmp:
Serve per contenere file temporanei.

/usr:
La directory /usr agli albori dei primi sistemi unix era dove erano salvate le cartelle home degli utenti, attualmente è la directory che contiene la maggior parte dei programmi installati sul sistema.
Qui dentro ritroviamo le sottodirectory /bin e /sbin analoghe a quelle che si trovano sotto la root e oggi non c'è molta differenza riguardo il contenuto, in passato in /bin si trovavano solo i file dei comandi mentre in /usr/bin/ era possibile trovare i file di programmi strutturati come editor di testo e browser web.
Oggi certe distro mettono tutto sotto /usr/bin e /usr/sbin rendendo /bin e /sbin dei semplici puntatori, mentre debian, ubuntu e mint hanno ancora le suddette cartelle distinte e separate.
In /usr/src troviamo codice sorgente, ad esempio del kernel e dei relativi headers mentre in /usr/share abbiamo vari file condivisi come icone, sfondi del desktop e temi.

/var:
Contiene tutti file che hanno informazioni dinamiche, che tendono a modificarsi con il tempo: log, file di pid e lock dei processi in esecuzione, directory di spool (stampa, mail...)
Al suo interno sono presenti varie sotto-directory come /var/log che contiene appunto i files di log del sistema relativi ad eventi del kernel oppure attività del firewall in caso di tentativi di accesso.

4    Conclusioni

Questa breve guida non ha la pretesa di essere esaustiva ma l'ho scritta per far comprendere meglio a grandi linee la struttura del file system dei sistemi unix like e dare uno spunto per approfondire ulteriormente l'argomento soprattutto a chi si avvicina per la prima volta a questi sistemi operativi.