Imparare Linux: comandi per principianti

Introduzione

Volete imparare Linux per la cybersecurity? Questi appunti vi illustreranno i fondamenti del sistema operativo Linux e i consigli per impararlo.

L'apprendimento dei sistemi operativi Linux è un passo essenziale e inevitabile per la sicurezza informatica. Linux copre circa due terzi dei server mondiali, compreso macOS, anch'esso basato su Linux. Impararlo può sembrare difficile all'inizio, ma Linux è semplice ed esegue solo le azioni che gli indichiamo di eseguire.

Una volta installato su una macchina virtuale, iniziate a guardarvi intorno, fate rivivere il bambino che è in voi con un po' di curiosità. La regola semplice da seguire quando si impara qualcosa di nuovo, compreso Linux, è che più ci si gioca, più diventa facile.

Linux è il sistema operativo più stabile ed è difficile da danneggiare come utente standard. Tutto ciò che dovete fare è non cancellare nulla che richieda la password di amministratore. Per il resto, sentitevi liberi di farci quello che volete.

Capire come funziona Linux

I sistemi operativi Linux seguono cinque semplici principi che rendono il sistema operativo stesso duraturo ed efficiente:

Principi Descrizione
Tutto è un file Tutti i file di configurazione dei vari servizi in esecuzione sul sistema operativo Linux sono memorizzati in uno o più file di testo.
Programmi piccoli e con un unico scopo Linux offre diversi strumenti di lavoro che possono essere combinati in vari modi.
Capacità di concatenare programmi per eseguire compiti complessi L'integrazione e la combinazione di diversi strumenti ci permette di svolgere compiti ampi e complessi, come l'elaborazione o il filtraggio di specifici risultati di dati.
Evitare le interfacce utente vincolate Linux funziona principalmente all'interno della shell (o terminale), che offre all'utente un maggiore controllo sul sistema operativo.
I dati di configurazione sono memorizzati in un file di testo Un esempio di questo tipo di file è il file /etc/passwd, che memorizza tutti gli utenti registrati sul sistema (quindi non contiene le password!).

Tutto in Linux è un file. Tutte le configurazioni e le impostazioni. Questo significa che possiamo trovare e lavorare con qualsiasi impostazione in un file di testo. Tuttavia, possiamo ancora utilizzare l'interfaccia grafica (GUI). Linux ha bisogno solo di un terminale/shell per lavorare. Poiché tutto è contenuto in singoli file, è sufficiente imparare alcuni brevi comandi per lavorare con questi file per crearli, nominarli, spostarli o personalizzarli.

L'altro grande vantaggio di Linux è rappresentato dai tanti piccoli programmi che servono a uno scopo specifico. La sperimentazione di questi piccoli strumenti aumenta notevolmente la nostra potenza ed efficienza nel lavoro con Linux. Inoltre, una volta compreso lo scopo di uno strumento, è possibile combinarlo con altri tool.

Architettura Linux

Layer Descrizione
Hardware Dispositivi periferici come la RAM del sistema, il disco rigido, la CPU e altri.
Kernel Il cuore del sistema operativo Linux è la virtualizzazione e il controllo delle risorse hardware comuni del computer, come la CPU, la memoria allocata, i dati accessibili e altro. Il kernel assegna a ciascun processo le proprie risorse virtuali e previene/gestisce i conflitti tra i diversi processi.
Shell Un'interfaccia a riga di comando (CLI) è una shell in cui l'utente può inserire comandi per eseguire le funzioni del kernel.
System Utility Mette a disposizione dell'utente tutte le funzionalità del sistema operativo.

Ogni computer ha bisogno di risorse hardware per funzionare. Non importa se si tratta di un PC tower o di un portatile. In Linux, il kernel è l'elemento centrale del software che controlla e gestisce l'hardware. Il kernel gestisce anche i singoli processi e impedisce che vadano in conflitto.

Inseriamo i comandi nella shell per dire al sistema Linux cosa fare; questo ci fornisce varie utilità di sistema che possiamo usare per controllare il sistema stesso.

Struttura del file system di Linux

La struttura del file system di Linux è semplice. Tutto si trova in una directory (per chi viene da Windows - cartella), in cui sono suddivise molte sotto-directory. Ognuna di queste sotto-directory ha uno scopo specifico. A questo scopo è stato sviluppato il cosiddetto Filesystem Hierarchy Standard (FHS).

A prima vista, sembrano esserci molte directory, ma dopo poco tempo le farete vostre. Diamo una rapida occhiata alle singole descrizioni di queste cartelle per capire il loro scopo:

Path Descrizione
/ La directory di primo livello è il filesystem root. Contiene tutti le directory che tra poco dettaglierò.
/bin Contiene i binari dei comandi essenziali.
/boot Al suo interno possiamo trovare il bootloader statico, l'eseguibile del kernel e i file necessari per avviare il sistema operativo Linux.
/dev Contiene la virtualizzazione delle risorse hardware in file, questo per facilitare l'accesso a tutti i dispositivi hardware collegati al sistema.
/etc File di configurazione del sistema locale. In questa directory possono essere salvati anche i file di configurazione delle applicazioni installate.
/home Ogni utente del sistema ha qui una sua sottodirectory per la memorizzazione dei suoi file.
/lib File di libreria condivisa necessari per l'avvio del sistema.
/media Qui vengono montati i dispositivi multimediali rimovibili esterni, come le unità USB.
/mnt Punto di montaggio temporaneo per i filesystem regolari.
/opt I file opzionali, come gli strumenti di terze parti, possono essere salvati qui.
/root La directory home dell'utente root.
/sbin Questa directory contiene gli eseguibili utilizzati per l'amministrazione del sistema (file binari di sistema).
/tmp Il sistema operativo e molti programmi utilizzano questa directory per memorizzare i file temporanei. Questa directory viene generalmente cancellata all'avvio del sistema e può essere eliminata in altri momenti senza preavviso.
/usr Contiene eseguibili, librerie, file man, ecc.
/var Questa directory contiene file di dati variabili, come i file di log, le caselle di posta elettronica, i file relativi alle applicazioni web, i file di cron e altro ancora.

Ora che è abbastanza chiara la struttura del sistema operativo Linux. I passi successivi consistono nell'imparare a controllare Linux con diversi comandi.

Che cos'è un comando Linux?

Un comando Linux è come un'istruzione che inseriamo nel nostro terminale per eseguire un programma con uno scopo specifico. Come si può immaginare, ci sono molti scopi per i diversi componenti hardware, software e di rete. Ad esempio, possiamo recuperare, creare, cancellare o modificare informazioni. I comandi possono essere suddivisi (ma non solo) nelle seguenti categorie:

Categoria Commandi
Recuperare le informazioni ls, cat, less, more, pwd, grep, ip, ...
Creare o eliminare informazioni touch, mkdir, rm, rmdir, ...
Modifica delle informazioni vi, vim, nano, sed, ...

Molti di questi comandi non solo servono a uno scopo, ma offrono anche opzioni che, ad esempio, non servono solo a leggere le informazioni, ma anche a modificarle. Per vedere quali opzioni sono disponibili, digitate "--help" dopo il comando, ad esempio "ls --help".

Il modo migliore per imparare Linux per la cybersecurity

Il modo migliore per imparare i comandi Linux è sporcarsi le mani e iniziare a fare pratica in ambienti realistici. Nessuna teoria può sostituire la pratica. Un esempio è la guida di un'automobile. Quanto velocemente avete imparato a guidare?

Molto probabilmente avete avuto bisogno di più lezioni di guida con un istruttore per riuscire a tenere il passo con il traffico e a prestare attenzione a molte cose contemporaneamente: marce, pedali del gas, sterzo, distanze e segnali stradali. Rispetto a oggi, probabilmente siete un guidatore più rilassato e non più frustrato dall'esperienza; questo perché avete già sopportato la frustrazione necessaria per imparare. Quando si cerca di imparare qualcosa in fretta (o di imparare qualsiasi cosa), è bene ricordarlo:

Il punto in cui si fatica di più è quello in cui si impara di più. Incontrare sentimenti di frustrazione è naturale e prevedibile.

Scheda informativa sui principali comandi Linux per i principianti

Ecco un elenco di comandi importanti che vi serviranno per lavorare rapidamente con Linux.

No. Command Description
1 man <tool> Apre le pagine man (man sta per manuale) del tool specificato. Il 90% dei tool in ambiente linux ha una raccolta man.
2 <tool> -h
<tool> --help
Stampa la pagina di aiuto dello strumento. Non è proprio uno standard ma la stragrande maggioranza di tool usa questo argomento per visualizzare un rapido aiuto.
3 pwd Restituisce il nome della directory di lavoro. Se vi sentite persi, questo tool vi aiuta a capire dove vi trovate.
4 ls Elenca il contenuto della directory.
5 tree Elenca il contenuto di una directory in modo ricorsivo. Ricordate che non sempre è un tool presente nelle distribuzioni Linux, molto spesso questo tool si installa separatamente.
6 cd Il comando che ci consente di cambiare la directory.
7 clear
[ CTRL ] + [ L ]
Ripulisce il terminale in cui stiamo lavorando, eliminando dallo schermo le linee di output.
8 touch Crea un file vuoto.
9 mkdir Crea una directory.
10 mv Spostare o rinomina file o directory.
11 cp Copia file o intere directory.
12 locate Utilizza il database dei locali per trovare i contenuti del sistema. Questo tool lo trovate presente di default in molte distribuzioni, ma in molte altre bisogna installarlo a parte.
13 cat Concatenare e stampa i file nello STDOUT.
14 more Pager utilizzato per leggere STDOUT o i file.
15 head Stampa le prime righe in STDOUT di un file.
16 tail Stampa le ultime righe in STDOUT di un file.
17 whoami Visualizza il nome utente corrente.
18 id Restituisce l'identità dell'utente.
19 hostname Imposta o stampa il nome del sistema host corrente.
20 uname Stampa il nome del sistema operativo.
21 ifconfig L'utilità ifconfig viene utilizzata per assegnare o visualizzare un indirizzo a un'interfaccia di rete e/o configurare i parametri dell'interfaccia di rete. Tool attualmente considerato OBSOLETO, ma pur sempre utile. Le sue funzioni sono state sostituite dal tool 'ip'
22 ip Ip è un'utilità per mostrare o manipolare il routing, i dispositivi di rete, le interfacce e i tunnel.
23 netstat Mostra lo stato della rete.
24 env Stampa nello STDOUT le variabili d'ambiente.
25 who Visualizza chi ha effettuato l'accesso.
26 passwd Modifica la password dell'utente.
27 useradd Crea un nuovo utente o aggiorna le informazioni di un nuovo utente predefinito.
28 userdel Elimina un account utente e i relativi file.
29 addgroup Aggiunge un gruppo al sistema.
30 delgroup Rimuove un gruppo dal sistema.