![Linux: come annullare le modifiche di un comando con try Linux: come annullare le modifiche di un comando con try](https://cdn.ilsoftware.it/pvCOEd4AxOLYLlcTY_8vVJiecuk=/1120x700/filters:format(webp)/https://www.ilsoftware.it/app/uploads/2023/06/annullare-comandi-try-linux.jpg)
Quando si lancia un comando su Linux, può essere complesso annullarne gli effetti e tornare sui propri passi. La comunità open source sta lavorando su try, un innovativo progetto pubblicato su GitHub, che prova a rompere con il passato dando l’opportunità di eseguire un comando ed ispezionarne gli effetti prima rendere effettive le modifiche.
“Eseguire o non eseguire un comando. Non può esserci un tentativo. Cerchiamo di cambiare questo assunto“, spiegano chiaramente gli autori di try nella presentazione.
Annullare le modifiche di un comando con try e i namespace Linux
I namespace su Linux sono una funzionalità del kernel che consente di isolare risorse di sistema specifiche. Ogni namespace crea un’istanza virtuale delle risorse del sistema, come processi, reti, file system, hostname e altri, fornendo un ambiente separato e isolato per i processi eseguiti all’interno di esso. In questo modo è possibile creare ambienti di esecuzione indipendenti, dove i processi possono operare senza interferire reciprocamente. Grazie al meccanismo dei namespace si possono isolare processi, stack di rete, punti di mount del file system, nome dell’host.
Il comando unshare su Linux consente di creare un nuovo namespace o di modificare le opzioni di isolamento di un namespace esistente. L’utilizzo di namespace e del comando unshare, consente agli amministratori di sistema e agli sviluppatori di creare ambienti di esecuzione isolati e separati, migliorando la sicurezza, la gestibilità e la flessibilità delle applicazioni e dei servizi eseguiti su Linux.
Il software try utilizza anche OverlayFS: ecco perché
OverlayFS (Overlay File System) è un file system a livello di kernel utilizzato su Linux. È chiamato “union filesystem” perché combina o sovrappone i contenuti di più directory o file system in una singola visualizzazione unificata. Il layer overlay può funzionare sia in sola lettura che in lettura-scrittura; inoltre, contiene le modifiche o le aggiunte ai file e alle directory senza modificarne effettivamente il contenuto. Questo approccio consente di creare un ambiente di visualizzazione virtuale che aiuta a mantenere intatti i file originali.
Questo file system è ampiamente utilizzato in vari scenari, come la creazione di immagini di container Docker, la gestione di distribuzioni Linux live, la generazione di snapshot e altro ancora.
Il progetto try utilizza sia i namespace Linux che OverlayFS per mettere a disposizione un solo comando utile ad annullare gli effetti di qualunque altra istruzione. “Qualunque”, con alcune eccezioni. Gli autori di try, infatti, si raccomandano di non eseguire comandi che rimuovono informazioni dalla cartella /dev
o scrivono zeri su disco.
Il programma, inoltre, va considerato come un prototipo e non come una sandbox reale. try non dovrebbe insomma essere sfruttato per eseguire comandi sui quali non si riponesse già la propria fiducia.
Nella pagina GitHub di try è riportato l’elenco delle distribuzioni Linux supportate così come i semplici passaggi per l’installazione.
Come usare il comando try in Linux
In Linux, il termine “higher-order command” si riferisce a un tipo di comando che accetta o restituisce altri comandi come input o output. Questi comandi, come ad esempio xargs, exec, nohup
, o find
, consentono di creare pipeline ovvero concatenare una serie di operazioni per ottenere risultati complessi combinando comandi più semplici.
L’utilizzo di comandi “higher-order” consente di sfruttare la potenza della pipeline Linux, consentendo la composizione di diverse operazioni per gestire elaborazioni articolate in modo efficiente.
Ecco, try si comporta alla stregua di questi comandi e, una volta installato, può essere invocato semplicemente digitando try
seguito dal comando da eseguire e da annullare eventualmente in un secondo tempo.