Linux – Scoprire quali file di configurazione vengono modificati dalle applicazioni grafiche (e non)

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.