Chi usa Linux sa che indipendentemente da quale applicazione viene utilizzata per configurare il proprio sistema, questa si limiterà a modificare delle voci in dei file di testo che, verosimilmente, si trovano tutti nella cartella /etc del vostro filesystem. Tutto quello che si può fare con le applicazioni grafiche (o a linea di comando) lo si può anche fare manualmente andando a modificare queste voci con un qualunque editor di testo.
Esiste un modo molto semplice per scoprire quali file sono stati modificati. Per farlo servono solo due comandi: touch e find.
Il comando touch non fa altro che modificare il timestamp di un file (e se il file non esiste lo crea). Aprite quindi il vostro terminale e digitate:
touch /tmp/prima_della_modifica
Adesso avete sul vostro disco un file con un timestamp esattamente poco prima della modifica. Utilizzate la vostra applicazione e fate le modifiche che desiderate. Io, ad esempio, ho modificato la lingua del sistema.
Il comando find è molto potente e flessibile e una delle opzioni che mette a nostra disposizione è quella di cercare tutti i file più recenti di un altro file. Avete già intuito qual’è il trucco, vero?
find /etc -newer /tmp/prima_della_modifica
Dove /etc è il percorso dove volete cercare (ad esempio se avete cambiato qualcosa solo per il vostro utente potreste voler cercare in /home) e -newer è il flag che compie la piccola magia grazie a cui può esistere questo articolo.
Ad esempio, sul mio sistema dove avevo modificato la lingua di sistema, l’output di find è il seguente:
find: "/etc/samba/private": Permesso negato
find: "/etc/sudoers.d": Permesso negato
find: "/etc/polkit-1/localauthority": Permesso negato
find: "/etc/cups/ssl": Permesso negato
/etc/profile.d
/etc/profile.d/lang.sh
Le prime quattro sono chiaramente cartelle che non mi interessano. Chissà da cosa sono state modificate. Ma l’ultimo sembra proprio quello che interessa a me ed in effetti lo è. A questo punto posso aprire il file e andare a vedere cosa c’è al suo interno. Quasi tutti i file di sistema sono ben commentati e quindi non è difficile capirlo. Ma per file di sistema molto grandi, la ricerca potrebbe essere molto faticosa. Cosa fare allora?
La soluzione è anche questa volta molto semplice: copiate il file da qualche parte (io ad esempio l’ho copiato nella mia home), eseguite un’altra modifica e poi guardate utilizzate il comando diff per vedere cosa è cambiato nel file.
$ diff /etc/profile.d/lang.sh ./lang.sh
7c7
< export LANG=ga_IE.utf8
---
> export LANG=it_IT.utf8
Impressionante, no? diff ci dice anche in che riga è avvenuta la modifica, in questo caso la riga 7.
Questo è senza dubbio un trucchetto molto utile quando vogliamo capire cosa accade realmente nel nostro sistema. Spero possiate farne tesoro.