Percorso

Come imparare Linux da zero: piano dal primo comando all'amministrazione del server

Aggiornato: · Skillaria.Top

Il modo più semplice per imparare Linux è procedere per livelli: prima terminale e file system, poi utenti e permessi, script Bash, pacchetti, processi e systemd, infine dischi, log, rete, SSH e sicurezza del server. In ogni fase serve la pratica su una macchina virtuale o su un VPS economico, e il traguardo finale è un server costruito e protetto da te, con un servizio in funzione.

Imparare Linux da zero è più semplice di quanto sembri, purché si proceda nell'ordine giusto e si pratichi subito. L'errore più comune dei principianti è leggere sui comandi senza digitarli, oppure passare a Docker e Kubernetes senza capire che cos'è un processo e come funzionano i permessi. Qui trovi un piano in nove fasi: che cosa studiare, che cosa esercitare e come capire che una fase è completata.

Come riferimento di tempo: un'ora al giorno per due-quattro mesi, ma il ritmo cambia da persona a persona. L'importante non è la velocità, ma riuscire a fare qualcosa con le proprie mani dopo ogni fase.

Fase 0. Prepara l'ambiente

Linux si impara su Linux. Le opzioni, dalla più semplice alla più realistica:

  • WSL2 su Windows — un terminale Ubuntu in pochi minuti. Va bene per comandi e script, ma systemd e la rete non si comportano come su un server.
  • Macchina virtuale (VirtualBox, VMware, UTM su Mac) con Ubuntu Server o Debian. Puoi rompere tutto senza conseguenze e tornare indietro con gli snapshot.
  • VPS economico da un provider cloud. Un vero server con IP pubblico è il miglior campo di prova per le fasi di rete e sicurezza.

Per iniziare la distribuzione consigliata è Ubuntu Server o Debian: sono quelle con più documentazione e più risposte disponibili. Non serve un'interfaccia grafica: i server si amministrano dal terminale, quindi fai l'abitudine fin dal primo giorno.

Fase 1. Terminale e file system

Obiettivo: muoversi con sicurezza nel sistema e lavorare con i file senza il mouse.

  • Navigazione: pwd, ls -la, cd, percorsi assoluti e relativi, ~, . e ...
  • File: cp, mv, rm, mkdir -p, touch, visualizzazione con cat, less, head, tail -f.
  • Ricerca: find, which, locate.
  • Aiuto: man, --help. Saper leggere le man page è un'abilità che ti servirà per tutta la carriera.
  • Struttura delle directory: cosa c'è in /etc, /var/log, /home, /usr, /proc, /dev; che cosa sono il mount e l'inode.
  • Editor da terminale: nano all'inizio, poi i comandi base di vim, che è presente quasi su ogni server.

Esercizio: trova tutti i file .conf in /etc modificati nell'ultima settimana (find /etc -name "*.conf" -mtime -7). Apri /etc/os-release e scopri la versione del sistema. Guarda in /var/log che cosa scrive il sistema.

Fase 2. Utenti, gruppi e permessi

I permessi sono la base della sicurezza di Linux e la fonte di metà degli errori «Permission denied».

  • Leggere l'output di ls -l: tipo, permessi, proprietario, gruppo.
  • chmod in forma simbolica e numerica, chown, umask.
  • Bit speciali: SUID, SGID, sticky bit — e perché /tmp è scrivibile da tutti ma non si possono cancellare i file altrui.
  • Utenti e gruppi: useradd, usermod -aG, passwd, i file /etc/passwd, /etc/shadow, /etc/group.
  • sudo, le regole di sudoers e la modifica con visudo.

Esercizio: crea due utenti e una directory di progetto condivisa, in cui entrambi possano creare file mentre gli altri non vedano nulla. Suggerimento: un gruppo, chmod 2770 e il SGID per ereditare il gruppo.

Fase 3. Bash e strumenti di testo

Amministrare significa in gran parte elaborare testo: log, configurazioni, output di comandi. In questa fase il terminale passa dall'essere una serie di comandi a essere uno strumento.

  • Reindirizzamenti e pipe: >, >>, 2>&1, |, xargs.
  • Filtri: grep (con le espressioni regolari), sort, uniq -c, wc, cut, sed, awk.
  • JSON e HTTP da console: curl e jq.
  • Script: shebang, variabili, virgolette, if e [[ ]], cicli, funzioni, codici di uscita, set -euo pipefail.

Esercizio: conta in una sola riga i dieci indirizzi IP che hanno inviato più richieste nel log del web server:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

Poi scrivi uno script di backup che comprima una directory in un archivio con la data nel nome, elimini gli archivi più vecchi di sette giorni e restituisca un codice diverso da zero in caso di errore.

Fase 4. Pacchetti, ambiente e pianificazione

  • Gestore dei pacchetti: apt update, apt install, apt remove, apt search, dpkg -l. Nelle distribuzioni tipo RHEL si usa dnf. Capisci che cos'è un repository e perché servono le chiavi di firma.
  • Variabili d'ambiente: env, export, PATH, i file ~/.bashrc, ~/.profile, /etc/environment e quando viene letto ciascuno.
  • Pianificazione: crontab -e, la sintassi dei cinque campi, e perché in cron «non funziona» un comando che nel terminale funziona (ambiente e PATH diversi).

Esercizio: installa nginx dal repository, aggiungi la tua directory di script al PATH, e configura l'esecuzione dello script di backup della fase 3 ogni notte con cron, scrivendo l'output in un log.

Fase 5. Processi e systemd

Qui cominci a capire che cosa succede davvero nel sistema.

  • Processi: ps aux, top/htop, PID e PPID, stati, priorità (nice), segnali e kill.
  • Carico: load average, memoria e swap (free -h), che cosa significa un processo nello stato «D».
  • Debug: lsof — quali file e porte ha aperto un processo; strace — quali chiamate di sistema fa e dove si blocca.
  • systemd: unit, systemctl status/start/enable, una propria unit file con Restart=on-failure, i timer al posto di cron.
  • Log: journalctl -u, -f, -b, -p err, rotazione, rsyslog; statistiche di prestazioni con sysstat (sar, iostat).

Esercizio: trasforma una piccola applicazione (almeno python3 -m http.server) in un servizio systemd con un utente dedicato, terminala con kill -9 e verifica che systemd la riavvii. Trova nel log la registrazione del riavvio.

Fase 6. Dischi, LVM e RAID

  • Dispositivi e partizioni: lsblk, blkid, fdisk o parted, file system ext4 e XFS, mkfs.
  • Mount: mount, /etc/fstab con UUID, verifica con mount -a.
  • Spazio: df -h, df -i, du -sh, trovare che cosa riempie il disco.
  • LVM: volumi fisici, gruppi di volumi, volumi logici e ampliamento della partizione senza interrompere il servizio.
  • RAID software con mdadm — capire i livelli 0, 1, 5, 10 e che il RAID non è un backup.

Esercizio: aggiungi due dischi alla macchina virtuale, crea un LVM su di essi, un volume, montalo tramite fstab e poi amplialo con lvextend -r.

Fase 7. Rete

  • Modello TCP/IP al livello necessario per la diagnostica: IP, maschera, gateway, porta, TCP e UDP.
  • Comandi: ip a, ip r, ss -tlnp, ping, traceroute/mtr, curl -v, nc.
  • DNS: come funziona la risoluzione, /etc/hosts, /etc/resolv.conf, dig, resolvectl.
  • Configurazione della rete nella tua distribuzione (netplan in Ubuntu, NetworkManager in altre).
  • Cattura del traffico: tcpdump per quando tutto il resto non basta.

Esercizio: scopri quale processo ascolta su ciascuna porta aperta del tuo server. Capisci perché un servizio in ascolto su 127.0.0.1 non è raggiungibile dall'esterno e correggilo.

Fase 8. Lavoro remoto: SSH e trasferimento file

  • SSH: chiavi (ssh-keygen -t ed25519, ssh-copy-id), il file ~/.ssh/config, ssh-agent, il port forwarding (ssh -L), il bastion con ProxyJump.
  • Copia: scp e rsync -avz --delete — e perché rsync è migliore per la sincronizzazione.
  • File system di rete: NFS tra server Linux, SMB (Samba) per lo scambio con Windows.

Esercizio: configura sul VPS l'accesso solo con chiave, descrivilo nel ~/.ssh/config con un nome breve e imposta una sincronizzazione giornaliera di una directory verso il server con rsync.

Fase 9. Sicurezza del server

  • Firewall: il principio «vietato tutto ciò che non è permesso»; ufw per i casi semplici, nftables per capire che cosa succede sotto il cofano.
  • fail2ban: blocca gli IP dopo una serie di accessi falliti; verifica con fail2ban-client status sshd.
  • Configurazione di sshd: divieto di accesso con password e come root.
  • Aggiornamenti di sicurezza e la loro installazione automatica (unattended-upgrades in Debian e Ubuntu).
  • GPG: verifica delle firme di pacchetti e file, cifratura dei backup.

Esercizio: nel firewall apri solo le porte 22, 80 e 443, attiva fail2ban e dopo un giorno guarda il suo stato per vedere quanti indirizzi sono già bloccati.

Progetto finale: costruisci un server completo

Il modo migliore per verificare di aver davvero imparato Linux è costruire un server da zero, senza suggerimenti:

  1. Un nuovo VPS, un tuo utente con sudo, accesso SSH con chiave, password e root disattivati.
  2. Firewall e fail2ban, aggiornamenti di sicurezza automatici.
  3. Web server e applicazione come servizio systemd, con riavvio automatico.
  4. Un disco o un volume separato per i dati, montato tramite fstab.
  5. Backup pianificato (cron o timer systemd) su un'altra macchina tramite rsync, con log e verifica del ripristino.
  6. Una breve guida: come ricostruire tutto da capo.

Se riesci a completare questa lista e a spiegare ogni passo, hai le basi per lavorare come amministratore di sistema o DevOps engineer. Il passo successivo naturale sono container, automazione della configurazione e monitoraggio.

Come studiare in modo più efficace

  • Digita i comandi tu stesso. Ciò che copi da un articolo non resta in memoria; ciò che digiti e sbagli, sì.
  • Rompi e ripara. Nella macchina virtuale rovina il fstab o i permessi di ~/.ssh e ripristina il sistema. Questa esperienza è molto apprezzata nei colloqui.
  • Tieni appunti. Un tuo quaderno di comandi ed esempi è più utile di qualsiasi cheat sheet altrui.
  • Leggi i log. Quasi ogni problema di Linux viene spiegato dal log: abituati a guardarlo per primo.

Conclusioni

La risposta a come imparare Linux da zero è procedere per strati: terminale e file, permessi, Bash, pacchetti, processi e systemd, dischi, rete, SSH, sicurezza — e in ogni fase risolvere un problema pratico nel proprio ambiente. L'obiettivo finale è mettere in piedi da soli un server, proteggerlo e farci girare un servizio. Su questo stesso percorso è costruito il nostro corso di Linux, dalla lezione introduttiva al progetto finale.

Domande frequenti

Quanto tempo serve per imparare Linux da zero?

Con circa un'ora di pratica al giorno, le basi per lavorare con un server si acquisiscono di solito in alcuni mesi. La sicurezza nasce dai compiti reali, quindi conta più la regolarità che il numero totale di ore.

Per imparare Linux serve saper programmare?

No, si può cominciare anche senza. Ma quando arrivi agli script bash stai già programmando, e queste competenze ti serviranno nell'automazione.

Posso imparare Linux su Windows?

Sì, con WSL2 o con una macchina virtuale. Per i temi di systemd, dischi e rete è meglio una macchina virtuale completa o un VPS.

Devo installare Linux come sistema principale del computer?

È utile ma non obbligatorio. Per amministrare conta più saper usare il Linux dei server da terminale che il desktop grafico.

Quale distribuzione scegliere da principiante?

Ubuntu Server o Debian: hanno molta documentazione e le competenze si trasferiscono facilmente. La differenza principale delle distribuzioni tipo RHEL è il gestore dei pacchetti dnf.

Impara l’argomento in video

Questo argomento è trattato in modo approfondito, con pratica, nel corso «Linux: с нуля до уверенного администрирования».

Vai al corso