Perché alcuni comandi Linux sono pericolosi
Nel terminale Linux il problema non è quasi mai il comando in sé, ma il contesto in cui viene eseguito. Un singolo carattere sbagliato, una variabile vuota, un percorso invertito o un comando lanciato con privilegi elevati possono cancellare dati, bloccare servizi o compromettere un server intero. Per questo i comandi davvero pericolosi non sono solo quelli “distruttivi” per definizione: spesso sono quelli che sembrano innocui, ma diventano devastanti se usati con distrazione.
La regola pratica è semplice: prima verifica, poi agisci. Se un comando scrive, cancella, sovrascrive o modifica in massa, chiediti sempre cosa succede se il percorso è sbagliato, se la variabile è vuota o se il file di destinazione esiste già. Su un server di produzione, questo controllo vale più di qualsiasi automatismo.
I comandi più rischiosi da evitare o usare solo con cautela
rm -rf
È il simbolo classico del pericolo, ma anche uno strumento legittimo se usato con attenzione. Il rischio è enorme perché cancella directory e contenuti senza chiedere conferma. Un errore come rm -rf /var/www al posto di rm -rf /var/www/site-old può distruggere un sito in pochi secondi.
Il pericolo aumenta quando si usano variabili non controllate:
rm -rf "$DIR"Se $DIR è vuota o contiene un valore inatteso, il comando può colpire il posto sbagliato. Prima di cancellare, fai sempre un controllo visivo del percorso con:
printf '%s
' "$DIR"e, se possibile, esegui prima una simulazione con ls o find.
dd
dd è uno dei comandi più pericolosi in assoluto perché scrive a basso livello su dischi e dispositivi. Un solo parametro invertito può sovrascrivere un disco intero, rendendo il recupero difficile o impossibile. Il classico errore è confondere input e output:
dd if=/dev/sda of=backup.imgSe inverti i valori o selezioni il device sbagliato, perdi i dati in modo irreversibile. Prima di usarlo, identifica sempre il disco con strumenti come lsblk o blkid e verifica tre volte il nome del device. Se hai un’alternativa più sicura, usala.
mkfs e comandi di formattazione
I comandi come mkfs.ext4, mkfs.xfs e simili formattano una partizione. Sono utili solo quando sai esattamente quale volume stai preparando. Se lanciato sul disco sbagliato, il comando cancella la struttura del filesystem e rende i dati non accessibili.
Prima di formattare, controlla il mapping dei dischi e smonta eventuali mount point. Non fidarti mai del nome “simile” o del fatto che il device sia “quello giusto quasi sicuramente”.
> e >> usati male
La redirezione di output sembra banale, ma può svuotare file importanti in un attimo. Un esempio classico è:
> /etc/hostsQuesto comando crea o svuota il file, lasciandolo vuoto. Anche un refuso in un comando più lungo può distruggere un file di configurazione o un log fondamentale. Quando devi modificare file di sistema, usa editor o strumenti che mostrino chiaramente cosa stai cambiando.
chmod -R 777
Non cancella dati, ma può compromettere seriamente la sicurezza. Dare permessi troppo ampi in modo ricorsivo espone file e directory a modifiche non previste, esecuzione di script malevoli e escalation di problemi. Su server web è un errore frequente, spesso fatto per “far funzionare tutto subito”.
È una soluzione sbagliata quasi sempre. Meglio individuare il proprietario corretto, il gruppo corretto e i permessi minimi necessari. In molti casi bastano 755 per directory e 644 per file, ma dipende dal caso d’uso.
chown -R su percorsi ampi
Il cambio proprietario ricorsivo è utile, ma se applicato alla radice sbagliata può alterare ownership di migliaia di file, rompere servizi e impedire l’avvio di applicazioni. Per esempio, un chown -R www-data:www-data / è disastroso. Anche un percorso troppo ampio può rendere inutilizzabili home directory, maildir o cache.
Prima di applicarlo, restringi il target al minimo indispensabile e controlla con find quali file verranno toccati.
curl | bash e wget | sh
Questa è una delle abitudini più rischiose nel mondo Linux. Scaricare uno script e pipearlo direttamente a una shell significa eseguirlo senza verifica reale. Se il repository è compromesso, se il contenuto è cambiato o se il download viene intercettato, stai lanciando codice esterno con i tuoi privilegi.
La procedura più sicura è separare download e controllo:
- scarica lo script;
- leggilo;
- verifica firma o checksum;
- eseguilo solo se è attendibile.
Se non puoi verificare il contenuto, non eseguirlo in produzione.
sudo su e sessioni root prolungate
Passare a root per comodità aumenta il rischio di errori distruttivi. Quando tutto il terminale gira come amministratore, un comando sbagliato colpisce subito il sistema. È meglio usare sudo solo per i singoli comandi necessari, così limiti il raggio d’azione degli errori.
Su server condivisi o in ambienti di produzione, mantenere il minimo privilegio è una misura tecnica e operativa, non solo una buona pratica.
kill -9 usato come prima scelta
kill -9 forza la chiusura immediata di un processo senza lasciargli il tempo di pulire file temporanei, liberare lock o scrivere dati in coda. È una soluzione estrema, non il primo tentativo. Usarlo su database, server web o processi di backup può lasciare dati incoerenti o file corrotti.
Prima prova un segnale più gentile, come kill o kill -TERM, e controlla se il processo termina correttamente.
find ... -delete
Molto utile, molto pericoloso. Un filtro sbagliato può eliminare file critici in massa. Il problema è che find agisce esattamente su ciò che gli dici, non su ciò che intendi. Se il pattern è troppo largo, il danno è immediato.
Prima esegui sempre la stessa ricerca senza -delete, per vedere cosa verrebbe toccato. Solo dopo, e con il risultato verificato, valuta la cancellazione.
tar con percorsi errati
tar è sicuro solo se sai dove stai estraendo. Un archivio malevolo o un comando lanciato nella directory sbagliata può sovrascrivere file esistenti. Anche l’estrazione con percorsi assoluti o con .. può portare a scritture fuori dalla directory prevista.
Controlla sempre il contenuto dell’archivio prima dell’estrazione e usa una directory temporanea quando possibile. Se devi ripristinare un backup, meglio estrarre in un path isolato e verificare prima di sostituire i file in produzione.
crontab -r
È un comando piccolo, ma il suo effetto è immediato: cancella tutti i cron dell’utente. Se il sistema dipende da job periodici per backup, pulizia log, sincronizzazioni o task applicativi, puoi causare un blocco operativo senza accorgertene subito.
Prima di rimuovere un cron, esporta il contenuto con crontab -l e salvalo in un file. Così hai un rollback semplice e rapido.
Errori comuni che trasformano un comando normale in un disastro
Molti incidenti non nascono da un comando “malvagio”, ma da errori di contesto. I casi più tipici sono questi:
- variabili vuote o non inizializzate;
- percorsi copiati male con slash mancanti o di troppo;
- uso di wildcard troppo ampi come
*; - esecuzione con privilegi elevati senza controllo;
- confusione tra ambiente di test e produzione;
- comandi lanciati in directory diverse da quelle previste.
Per esempio, rm -rf * in una directory sbagliata è una delle cause più frequenti di perdita dati. Anche mv * /destinazione può creare problemi se la destinazione non è quella attesa o se include file già esistenti. La regola migliore è lavorare sempre con percorsi espliciti e verificabili.
Abitudini sicure da adottare ogni volta
Ci sono alcune pratiche semplici che riducono drasticamente il rischio:
- controlla il percorso con
pwdprima di operazioni distruttive; - usa
lsofindper vedere cosa toccherà il comando; - preferisci comandi che chiedono conferma o modalità interattiva quando disponibili;
- fai backup prima di modifiche ampie;
- lavora con privilegi minimi e usa
sudosolo quando serve; - se un comando agisce su più file, prova prima su un campione ristretto.
Un’abitudine molto utile è l’uso di alias protettivi per alcuni comandi, ad esempio per evitare cancellazioni accidentali. Non è una difesa assoluta, ma aiuta a fermare l’errore impulsivo. In ambienti di produzione, però, l’alias non sostituisce la disciplina operativa.
Alternative più sicure ai comandi pericolosi
Quando possibile, scegli strumenti meno aggressivi o modalità più controllate:
- al posto di cancellare subito, verifica con
ls,findodu; - al posto di
rm -rf, valuta spostamento in una cartella di quarantena o cestino operativo; - al posto di
curl | bash, scarica e ispeziona il file; - al posto di
kill -9, prova prima un arresto pulito; - al posto di
chmod -R 777, correggi proprietario e permessi minimi necessari.
In molti casi la soluzione corretta non è “fare più in fretta”, ma fare un controllo in più prima di premere Invio. Questo vale soprattutto su VPS, server web, database e macchine con dati non replicati.
Una regola pratica per non sbagliare
Se un comando può cancellare, sovrascrivere o cambiare massa di file, eseguilo solo dopo aver verificato il target, fatto un backup e capito come tornare indietro.
Questa regola sembra banale, ma è quella che salva più server di qualsiasi script. Il terminale premia precisione, non velocità cieca. Un sysadmin esperto non è quello che digita più comandi, ma quello che sa fermarsi un secondo prima del danno.
Checklist finale
- Ho verificato il percorso e l’oggetto del comando.
- Ho capito se il comando scrive, cancella o modifica in massa.
- Ho una copia di backup o un piano di rollback.
- Ho provato prima su un percorso limitato o in test.
- Non sto eseguendo codice esterno senza averlo letto o verificato.
Un terminale sicuro non nasce da divieti assoluti, ma da controlli ripetibili. I comandi pericolosi esistono, ma il vero rischio è usarli senza metodo.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.